Commit Graph
186 Commits
Author SHA1 Message Date
pj 1a893c570d fix(replay): show a step's own violations in both panels, no next-step bleed 2026-07-13 16:00:42 +05:30
pj 626158fece fix(replay): attribute deferred violations to the causing step, not detection 2026-07-13 16:00:42 +05:30
pj cb480d5b28 fix(folio): move balance into the header, one compact line under the account name 2026-07-13 14:21:38 +05:30
pj 00a651b612 fix(folio): show balance as a compact one-line label
per review: one line, account-name-sized, e.g. "Balance: $0.00"
instead of a large balance card.
2026-07-13 14:14:32 +05:30
pj 5dd4230251 fix(replay): derive device space from screen extent, not first node
the first positive-bounds element is often a short status-bar node
(320x24 on android); using it gave a 320/24 aspect ratio that squashed
the screenshot overlay into a grey horizontal band. use the max extent
across elements (like the runner's screenBounds) instead.
2026-07-13 14:14:32 +05:30
pj e6b9f6db3c feat(folio): show current balance on the add-transaction screen
renders the account's balance (testTag TxnCurrentBalance) below the
account name, above the credit/debit toggle, so before/after screenshots
carry comparison data.
2026-07-13 12:55:38 +05:30
pj 133ce17d72 fix(verifier): skip llm enumeration on cross-fade frames
a navhost mid-transition carries >1 route *Screen in a collapsed
coordinate space; acting on it taps garbage (soft keyboard). real runs
showed the llm acting on 44% of steps being such frames. skip them so the
llm re-observes a settled frame next step.
2026-07-13 09:02:16 +05:30
pj c9e0f6a366 fix(runner): accept chosen_action echo that carries the weight suffix
real runs showed the model copies the whole numbered line including the
trailing (w34) weight annotation, so strict-skip rejected ~91% of picks
and the llm was paralyzed. strip the weight suffix before comparing. also
nudge the prompt to stress-test repeated submissions (idempotency).
2026-07-13 08:22:01 +05:30
pj 938b2cb714 test(runner): cover weight-suffixed echo and stripWeightSuffix 2026-07-13 08:21:49 +05:30
pj b65b8373e6 fix(verifier): label editable fields by hint, not the typed value
an editable field's own text is its transient content; prefer the hint
so the field is named by purpose and the label stays stable.
2026-07-13 08:21:49 +05:30
pj 9845b89173 feat(folio): drive spec.ts under --generator llm; drop spec-llm.ts 2026-07-13 07:27:51 +05:30
pj 98483926a6 refactor(verifier): drop the superseded AllCandidates enumeration 2026-07-13 07:25:02 +05:30
pj 17a0cd5fe5 test(runner): cover choice schema, strict-skip, and setup precedence 2026-07-13 07:23:21 +05:30
pj 37bdf59cbd feat(runner): llm picks one number from weighted candidates
drop the seeded-root call for a setup-only precedence path, render a
numbered weighted candidate list, pin a reasoning-first choice schema,
strict-skip when chosen_action does not echo the numbered entry, and let
the model supply typed values (corpus fallback when empty).
2026-07-13 07:23:21 +05:30
pj 75aa1eefd6 feat(trace): record llm choice number and chosen_action echo 2026-07-13 07:23:21 +05:30
pj 0ead53757c refactor(llmclient): make JSONSchema.Schema raw json for pinned field order 2026-07-13 07:23:21 +05:30
pj 08e588a79f test(verifier): cover SetupAction setup-only precedence 2026-07-13 07:16:57 +05:30
pj 2dea0e57d4 feat(verifier): add SetupAction to walk setup without the seeded root 2026-07-13 07:16:57 +05:30
pj bf983266ed test(verifier): cover candidate enumeration walk 2026-07-13 07:14:59 +05:30
pj dcbe9e1a00 feat(verifier): enumerate llm candidates by walking actionsRoot
collect-walk the weighted action tree: recurse weighted branches
accumulating selection probability, call authored leaves once for
concrete actions, enumerate builtins per element. label controls by
visible text (borrowing descendant text), fold gestures into directional
scrolls over scrollable containers, drop disabled, dedup descriptions.
2026-07-13 07:14:59 +05:30
pj 46526f8014 test: cover --generator flag parsing and pickSources gating 2026-07-13 07:07:06 +05:30
pj 5b7a71358c feat(cmd): add --generator llm|seeded flag 2026-07-13 07:07:06 +05:30
pj c7402e8f7d feat(runner): gate llm source on --generator flag 2026-07-13 07:07:06 +05:30
pj dcf7c4a02a feat(verifier): read llm config off globalThis.generator 2026-07-13 07:05:11 +05:30
pj aa67d7ddcf feat(bundler): map generator export to globalThis.generator 2026-07-13 07:02:56 +05:30
pj c38c21dea1 docs(folio): describe app in llm spec instructions 2026-07-13 07:02:17 +05:30
pj 637f89ab08 feat(runner): append spec instructions to llm system prompt 2026-07-13 07:02:17 +05:30
pj d9d206ee00 feat(verifier): read llm instructions off config 2026-07-13 07:02:17 +05:30
pj 5fb01af59c feat(spec): llm() accepts optional instructions 2026-07-13 07:02:17 +05:30
pj 25ddf7d29e revert(runner): drop selector-first tap; broke path/testTag selectors 2026-06-18 11:56:28 -04:00
pj 39ccd5c7bf fix(runner): tap by selector to survive layout shift after observe 2026-06-18 11:50:43 -04:00
pj 1916bd9eea feat(runner): stamp llm ranked list and chosen rank on trace 2026-06-18 11:48:51 -04:00
pj 84adc0f177 feat(trace): record llm ranked list and chosen rank 2026-06-18 11:47:39 -04:00
pj fed3345325 fix(runner): explain action kinds in llm prompt to stop swipe loops 2026-06-12 11:18:03 +05:30
pj 7a7672a354 docs: add pr style rules to claude.md 2026-06-12 10:53:08 +05:30
pj ede495d935 docs: both api keys, example model gpt-5.4-nano 2026-06-12 10:52:14 +05:30
pj 3ca0e9a5b9 refactor(runner): rename openrouter package to llmclient 2026-06-12 10:52:14 +05:30
pj 8eabaaa842 feat(llmclient): support OPENAI_API_KEY, openrouter wins 2026-06-12 10:52:14 +05:30
pj 2bd40cc4ee docs(folio): document the LLM action backend run 2026-06-12 10:37:58 +05:30
pj db4113ce37 docs(folio): add llm action-backend example spec 2026-06-12 10:37:58 +05:30
pj da4a6f1d9f test(runner): cover llmSource selection, mapping, downscale 2026-06-12 10:36:19 +05:30
pj 8164971e0e feat(runner): wire llmSource selection and trace stamping 2026-06-12 10:33:20 +05:30
pj ad6b78c9bf feat(runner): llmSource selects actions via OpenRouter 2026-06-12 10:33:20 +05:30
pj bae2ca6e8d feat(runner): thread step screenshot into PushSnapshot 2026-06-12 10:29:56 +05:30
pj 1b3545abb2 feat(trace): record action Source and LLMReasoning 2026-06-12 10:29:09 +05:30
pj 58c9bb42e1 test(verifier): cover AllCandidates, LLMConfig, SampleInput 2026-06-12 10:28:54 +05:30
pj 276734cad0 feat(verifier): LLM accessors — candidates, config, sampler 2026-06-12 10:28:54 +05:30
pj 8d5f30c0ea feat(verifier): thread screenshot + capture corpus sampler 2026-06-12 10:27:25 +05:30
pj 2de3d79baa test(openrouter): cover request shape, parse, and errors 2026-06-12 10:26:41 +05:30
pj 3df8015e7e feat(openrouter): minimal chat-completions client 2026-06-12 10:26:41 +05:30