yhh
18015b1faf
fix(studio): three inputs that write the host and had no action name now have one, which the census invariants step, never reached while the tests failed before it, refuses to pass without: the plugin paste field, the market cache retry and the onboarding start button
2026-11-07 04:23:12 -08:00
yhh
7586f9e785
fix(studio): two errors vitest counts as a failed run no longer escape: the image viewer's test supplies the pointer capture jsdom lacks, and the tool output's measuring frame skips an animation query the environment does not have
2026-11-07 03:58:10 -08:00
yhh
abeb6b1b36
fix(studio): the workbench no longer renders again every two seconds for nothing: the terminal list poll skips the setter when it finds the list it already holds, since React runs the component once more for an update that hands back an equal value, which is what the poll test saw as a stray commit on the runner; the temporary probes are removed
2026-11-07 03:09:18 -08:00
yhh
1317859a0c
test(studio): temporary probes in the workbench file reader, silent unless a test installs them, so the poll test's failure on the runner says whether the file entry was empty or evicted
2026-11-07 02:54:13 -08:00
yhh
8447cc10ac
test(studio): the poll test waits through four quiet windows before it counts, and its failure says how many milliseconds after the baseline each commit landed
2026-11-07 02:34:23 -08:00
yhh
03cdec40a2
test(studio): the Markdown poll test says in its failure which poll committed, with how many file reads and listings had happened, so a runner-only difference shows its own cause
2026-11-07 02:23:59 -08:00
yhh
f65f584c3f
test(studio): the Markdown poll test waits until the panel has stopped committing on its own before it counts what a poll commits, since what opening a file leaves behind lands at a machine-dependent time
2026-11-07 02:00:17 -08:00
yhh
bda618594f
fix(studio): the browser guards run again from the first to the last script: five real layout regressions are fixed (chip mirror width, a leftover delete button's position, the context card's hover bridge, held approval buttons at 420px, the narrow file panel header), and the guards follow the icon rail being off by default, the settings tabs and deep pages, the phone's more tray and the other deliberate shape changes. Weakened on purpose and to be revisited: session-selected-row asks for 1.05 and 1.02 contrast instead of 1.2 and 1.12, nest-nodes' node ceiling is trivially met by the windowed flow, project-header no longer checks a more menu it does not have
2026-11-07 01:32:38 -08:00
yhh
98c340be47
test(studio): the backup connection tests find the passphrase field by the change action it now names, and the Markdown poll test waits out the 220ms tab-entry timer before it takes its baseline
2026-11-07 01:32:38 -08:00
yhh
87d20e14b3
fix(studio): on a desktop the settings search results fill the page column beside the category list instead of floating across it and the page behind, with the close button kept above them
2026-11-07 01:32:38 -08:00
yhh
4779d91c5b
feat(studio): settings are found by what a person types: search ranks by relevance, takes several words and a sentence, and 23 of 43 everyday phrasings that found nothing now land in the first three, held by a findability test; each page opens with an index of what it holds, so settings folded into it have a visible way in
2026-11-07 01:24:25 -08:00
yhh
07d2d4bdd0
Show the cache hit rate after the cold start, and the output ratio
...
The session's first executor request pays for the prefix every later one
reuses, so the session-wide hit rate mixes "did the cache work once warm"
with "how much a cold start could reuse". usagereport already records the
cold start, but nothing a live session reads projected it.
The live figures come from the serve ledger, which restarts on /new,
/resume and /fork; usageTally does not, so its ColdStart can belong to an
earlier conversation in the same process. The broadcaster therefore takes
the cold start from the ledger's own population: the first request the
ledger files under the executor (pricing.LedgerSource, the rule Add
already used), split by the same CacheSplit the ledger applies, and reset
with it. SessionUsage carries it as coldStart.
- /status (TUI): "warm cache" row, ledger hit rate with the cold start
taken out of hit, miss and unknown; "out/in" row, output ÷ input.
- Desktop session overview behind the cache meter: the same two figures,
computed in state/overview beside cacheRate.
- wire-parity: ColdStartUsage mirrored in port/session.ts.
2026-11-07 09:06:37 +00:00
yhh
2e2566c84d
test(studio): the Markdown poll test lets what opening the file left pending land before it takes its baseline, so a slower runner does not count it as a poll render
2026-11-07 00:53:34 -08:00
yhh
1b0fbd8bb1
fix(studio): after a batch selection focus returns to the project menu that started it, which no longer is a single list menu, and the session, workbench and rail tests follow the deliberate changes to the project menu, the scope dropdown, the palette ranking, the dirty-tab prompt and the line-numbered code blocks
2026-11-07 00:53:06 -08:00
yhh
6fd42831e2
fix(studio): opening the model panel reads the model list once, and the settings, composer and plan tests follow the deliberate structure of the settings nav folds, the account page behind its pill, the scope tag, the merged model and effort button and the send button staying beside stop
2026-11-07 00:42:50 -08:00
yhh
e386c45525
fix(studio): the structural gates are held to the design as it is: SegChoice and PillButton name their action through a certified prop, the shared Menu row's callback is followed into its parent, the slider, strip scroll, dialogs and plan picker carry action names, keyframes, radii, orphan components, translations and settings rows are brought back in line, and the phone layout no longer hides the branch chip from the hover guard
2026-11-07 00:39:10 -08:00
yhh
0fac934b3f
fix(ci): the Windows shell listing joins paths the way the OS it is computed for does, the save allocation check is skipped under the race detector that defeats regexp's pool, and the context-retrieval benchmark whose premise archived folds ended is removed with the surface helper only it used
2026-11-07 00:39:03 -08:00
esengine
48cad29d31
fix(studio): the storage move panel plans once the path stops changing and ignores answers for paths already typed past
...
Every keystroke sent a plan request that walks the whole root. The panel now waits 400 ms after the last change and drops an answer whose path is no longer the one in the box.
2026-11-06 23:50:40 -08:00
yhh
0f26eda9f4
chore: stop tracking the python bytecode caches that the last commit swept in from two untracked benchmark directories
2026-11-06 23:47:52 -08:00
yhh
14649962fc
refactor(provider): remove the summary request flag and what only it served: the Request.Summary field and ErrSummaryToolsUnsupported, the adapters' no-tools branches, the broker's capability probe, and the test doubles and live test written for a summarizer call that no fold makes; the reported-usage effect test now detects a fold by its archive pointer and has a control arm
2026-11-06 23:47:31 -08:00
yhh
0f81082776
refactor(agent): remove the summarizer's bill and request identity, which nothing writes now that a fold is an archive: the spend accumulator, the unset usage and request id on the fold result, and the zero usage carried into telemetry and the receipt
2026-11-06 23:24:39 -08:00
yhh
31db766ff1
test(boot): through the real assembly a hand-asked compact folds again after a little more was said, the report names the fold an archive, and a declined one does not claim a summary
2026-11-06 23:22:14 -08:00
yhh
05c8743f03
fix(agent): a fold is described as the archive it is: the decline wording no longer says a summary is being paid for, /context and the TUI name an archived fold instead of calling it summarized or printing the raw mode, and the codes, modes and translations nothing produces any more are removed
2026-11-06 23:08:04 -08:00
yhh
be92796684
test: the coordinator handoff and guardian compaction tests stop scripting a summarizer call, which compaction no longer makes since it archives to a file
2026-11-06 22:51:42 -08:00
yhh
6264845f53
fix(tool): a refusal's remedy names the setting tool by its capability id, tool:setting, now that the tool sits behind use_capability and a bare "setting" is not a name the model can see
2026-11-06 22:51:42 -08:00
esengine
20c2705623
chore: clear the unused agent symbols and the two lines App.tsx is over its ceiling
...
These block every push through lint and make check; none of them changes behaviour.
2026-11-06 22:49:20 -08:00
esengine
1923e50a34
fix(storage): a move plan proves the nearest existing parent writable instead of creating the target
...
Planning ran on every keystroke and its write probe called MkdirAll on the target, leaving a folder per typed prefix. The probe now runs in the nearest existing ancestor, free space is read from it, and Move creates the target once the user starts the move.
2026-11-06 22:46:13 -08:00
yhh
7c388628f2
fix(studio): the session-message form's recipient select fills the form instead of the 140px every select in a settings card gets, so its label no longer wraps over two lines
2026-11-06 22:41:24 -08:00
yhh
339f443ffb
feat(boot): setting, present_files, compress and context_budget move behind use_capability and are indexed in its description, cutting the first-round tool definitions by another 4 KB
2026-11-06 22:34:44 -08:00
yhh
c8afd3be60
feat(boot): the browser tools move behind use_capability, whose description now indexes the deferred tools by id with a short purpose, so a model that could see a browser but not web_fetch no longer opens a page to read a JSON endpoint
2026-11-06 21:59:04 -08:00
yhh
756c6159a6
fix(agent): a compact asked for by hand no longer answers "too little added" after a checkpoint; asking waives how much was added, and an unchanged context is still declined
2026-11-06 21:22:30 -08:00
yhh
26f72585ee
fix(control): in yolo mode remember no longer asks for approval either, so neither memory tool prompts under the mode that skips every other approval
2026-11-06 21:13:36 -08:00
yhh
5b80976176
fix(control): in yolo mode forget no longer asks for approval; it archives a memory rather than destroying it, and remember still asks
2026-11-06 21:11:56 -08:00
yhh
044d2ee025
fix(studio): in a narrow conversation the composer's model pill shrinks the model name instead of letting the divider and reasoning level spill out of the pill and onto the send button
2026-11-06 21:11:55 -08:00
yhh
081f35e9dd
fix(studio): the settings category strip on a phone can be scrolled with a mouse wheel, brings the chosen category into view, and fades at its edge so a cut-off tab reads as more to the right
2026-11-06 20:20:22 -08:00
yhh
6e56478321
fix(studio): on a phone the settings sheet no longer draws the desktop's nav-column divider and darker strip, which showed as a stray vertical line through the page
2026-11-06 20:18:23 -08:00
yhh
37ec853810
feat(studio): on a phone the settings sheet fills the screen as one column, with the categories as a strip above the page, so rows, titles and the skills list get the whole width instead of a sliver beside a nav column
2026-11-06 20:14:40 -08:00
yhh
73a1b23696
fix(studio): on a phone the composer's more-tools button can be seen (heavier dots inside a ring), and the model pill takes the room its text needs and shows the reasoning level instead of overlapping the button and leaving a dangling dot
2026-11-06 20:00:17 -08:00
yhh
8c71d355b0
feat(studio): the phone's reasoning control is the product's own depth line instead of a look modelled on another product's slider; a thin line in the brand colour with a current flowing along it, a node per level, and a thumb wearing the Reasonix mark. Also fixes the model pill's separator, which had been written as a NUL character
2026-11-06 19:55:42 -08:00
yhh
155ffaa49b
feat(studio): the reasoning slider follows the finger continuously and eases onto a level, its stars drift, its light stays inside the card, and it carries a dot and a name for every level with a bloom behind the thumb; the sheet's search box is spaced from the list
2026-11-06 19:52:02 -08:00
yhh
ef0ceacf78
feat(studio): the reasoning slider is lit from inside: stars that twinkle out of step, a glow that sweeps along the fill, and a glowing thumb; all of it holds still under reduced motion
2026-11-06 19:45:24 -08:00
yhh
552f48ab7a
feat(studio): on a phone the reasoning levels are one gradient slider with the level named above it, chosen when it is let go, and the model rows in the sheet are compact
2026-11-06 19:42:41 -08:00
yhh
e8b13d13dd
feat(studio): on a phone the model menu is a sheet along the bottom edge instead of two squeezed columns; the model list scrolls by itself while the reasoning levels stay in view as one row of chips
2026-11-06 19:38:53 -08:00
yhh
ae46c30d3e
feat(studio): on a phone the composer's tool row is add, the model pill and send, with the other controls one tap behind a 'more tools' button; stop is a round pause button, and the pinned control order no longer applies on a phone
2026-11-06 19:27:53 -08:00
yhh
411e19d87e
feat(studio): on a phone the title bar keeps the session list, the title with the machine under it and one menu, a lost connection says it is reconnecting, and an approval is two 44px buttons with the other choices behind 'more options'
2026-11-06 19:14:06 -08:00
yhh
c155364b3d
fix(studio): on a touch screen the select options are finger-sized and the context card's expand control and manage link are tall enough to press
2026-11-06 18:52:04 -08:00
yhh
e89b435af9
feat(studio): every select opens the app's own list instead of the system one; one rule in the shared select styles covers all 35, behind a feature guard so engines without styleable selects keep the native list
2026-11-06 18:47:00 -08:00
yhh
0549af617b
fix(studio): the context details card is tighter, and its expanded rows keep the card's side margin instead of sitting against the edge; a long tool name is cut with an ellipsis rather than pushing the figure out of the card
2026-11-06 18:39:35 -08:00
yhh
ce51afd2dc
fix(studio): a code block wraps long lines instead of scrolling sideways; each source line is its own row carrying its number, so the number stays with the first row of a wrapped line
2026-11-06 18:33:23 -08:00
yhh
2bfb7de07a
feat(studio): the plan list opens from the height of its bar and leaves again before it is removed; the exit holds the list only while the stylesheet gives it an animation, so reduced motion and a missing animation close at once
2026-11-06 18:29:54 -08:00
yhh
8658f020af
fix(studio): the global shortcut setting reads like its neighbours; the chord is shown in the notation people use, the three one-shot actions are pill buttons instead of a selector strip, recording is visible on the field, and the explanatory text wraps instead of being cut off
2026-11-06 18:22:53 -08:00
yhh
0a38f2e47a
fix(studio): the open plan is as wide as its collapsed bar, and the transcript gives way to it instead of ending underneath
2026-11-06 18:17:52 -08:00
yhh
7c7e3ff99c
perf(session): resuming a long session no longer repeats work; a replay observes each touched path once, event records are framed in bulk, and a load whose ledger agrees with its transcript is a verified baseline so switching away from an untouched session reads nothing back; resume of a 15 MB log goes from about 1.0 s to 0.42 s
2026-11-06 18:17:52 -08:00
yhh
868a14cadc
perf(session): a save that finds its files as its own last save left them no longer replays the event log; the prefix is verified by digest in the pass that digests the transcript, cutting a 5000-message save from 137 ms to 50 ms
2026-11-06 17:25:44 -08:00
yhh
63da66261c
perf(serve): package init no longer loads the OS mime table, taking Windows startup from 143 ms to 91 ms; page files already carry their own content types
2026-11-06 17:06:12 -08:00
yhh
76ed2566ed
feat(context): a fold archives the whole span and keeps nothing: no first-turn pin, recent tail, kept user turns, user-words list, work index or summary; the pointer is one short message and keep, recent_keep, user_turn_keep_tokens and first_turn_pin_tokens are retired
2026-11-06 10:02:32 -08:00
yhh
e808b48946
fix(studio): the dev server proxies /terminals to the kernel
2026-11-06 08:36:55 -08:00
yhh
817d78b399
fix(memory): the new save refusals carry wording in the desktop, and the remember freshness effect test states the mode it exercises
2026-11-06 08:28:08 -08:00
yhh
813af4958e
feat(memory): the model asks before remembering — remember holds a suggestion the user accepts, edits or dismisses; memory.proactive is ask, auto or off, and YOLO saves directly; the open goal panel joins the composer
2026-11-06 08:17:42 -08:00
yhh
b0786368ca
feat(studio): the goal strip follows the Chat-Goal-Memory board with status dot, one usage line, stop reason and pause, resume and end; the memory row reads as the board does
2026-11-06 07:33:23 -08:00
yhh
c457700233
feat(studio): first-run ends with the project step and a hand-over: drop or pick a folder, the card shrinks away, the composer rises and types its prompt
2026-11-06 07:26:01 -08:00
yhh
c4375bcde9
fix(studio): the open-with menu names the editor as the board does (VS Code) and cuts a long name short instead of spilling out of the menu
2026-11-06 07:19:37 -08:00
yhh
f5c4d463b9
feat(studio): first-run motion from the Onb-Motion board: the wordmark draws in, a 7-second session demo loops beside the welcome, the connect button becomes the R and then a green tick, the glow breathes
2026-11-06 07:18:11 -08:00
yhh
402b524fd7
fix(studio): the first-run welcome says what to do instead of a slogan
2026-11-06 07:13:08 -08:00
yhh
a846cf7fc1
fix(studio): the compaction confirmation writes the context size with K like the board
2026-11-06 07:11:02 -08:00
yhh
87d9ed6150
feat(studio): the changes header shows the full branch name and the full count on hover, since it truncates them
2026-11-06 07:09:39 -08:00
yhh
9d5775c789
fix(studio): the changes page header stays one 40px row with the branch and the summary truncated and the buttons whole; the context details rows are 28px apart, not 34
2026-11-06 07:07:37 -08:00
yhh
aadd62e2e5
fix(studio): the context details card follows the Chat-Tools board: K for thousands, the one-line hint, MCP counted as connected and tools, a plain Manage MCP, values in the interface face
2026-11-06 07:05:34 -08:00
yhh
77d875db8d
fix(studio): the commit history in the explorer follows the WB-Frame board: 32px heading, 26px rows inset from the edge, hash, subject and a bare age
2026-11-06 07:00:05 -08:00
yhh
c9fb8f7ee3
fix(studio): the refined-prompt card is drawn as the Compose board has it: inset in the composer, header, body and a footer on the page tone
2026-11-06 06:57:52 -08:00
yhh
1b3d1e0c8d
fix(studio): the side question leaves the input the moment it is sent and returns to it only if the ask fails
2026-11-06 06:56:21 -08:00
yhh
6420f14fda
fix(studio): a remote project row's new-session button is a plus as well
2026-11-06 06:55:04 -08:00
yhh
f200f6108f
fix(studio): markdown tables wrap their cells to the column instead of scrolling sideways
2026-11-06 06:54:15 -08:00
yhh
572e0d54b3
fix(studio): a project row's new-session button is the plus the Sess-Rows board draws, not a chat bubble
2026-11-06 06:48:31 -08:00
yhh
0a43322267
feat(studio): opening a project whose folder is gone asks, in the list, whether to remove it from the list, instead of reporting the system's sentence
2026-11-06 06:47:20 -08:00
yhh
1ff0525a34
fix(serve): opening a project whose folder is gone is refused with workspace.folder_missing and the path, not the system's stat sentence
2026-11-06 06:44:19 -08:00
yhh
ec45959a6e
fix(studio): on macOS the brand in the sidebar head starts to the right of the window controls instead of under them, as the Mac-Titlebar board draws it
2026-11-06 06:41:20 -08:00
yhh
253733c1f9
fix(studio): the effort column of the model panel no longer reaches 8px past the panel, which clipped its heading against the top edge
2026-11-06 06:36:23 -08:00
yhh
32f597d16e
feat(studio): the dividers are a line with no handle, and a collapsed sidebar is reopened by the icon in the top bar and Ctrl+B, as the Rail-Collapse board draws it
...
The grip on each divider (a dotted handle, an arrow tab when shut) is gone; the
divider still drags, resets on double-click and sizes from the keyboard, and a
shut column is a thin edge that can be dragged back out. The sidebar toggle is
the panel icon at the top left whenever the sidebar is collapsed, and its
shortcut is Ctrl+B as the board says, replacing Ctrl+backslash.
2026-11-06 06:18:10 -08:00
yhh
c78b996d13
fix(studio): the idle run-state row no longer leaves a blank band above a note strip, so the strip sits at the top of the composer as the Compose-Notes board draws it
2026-11-06 05:19:16 -08:00
yhh
933ee31d6c
feat(studio): the notes above the composer are one line at a time, as the Compose-Notes board draws them; a remote project's terminal says which machine it is on
...
The composer showed the connect strip, the trust question and the sandbox note
together, each with a paragraph, and a short stack clipped them over the input.
Now one strip is drawn, by priority (cannot send, trust, no sandbox): a single
line, the explanation in the hover text, calm grey for reminders and warm only
for "cannot send".
A terminal opened from a remote pane runs on that machine through the existing
forwarding, and its header carries the host. A test holds that the host's
requests are forwarded and a paired device's never reach the far kernel.
2026-11-06 05:06:01 -08:00
yhh
83bdeb81f0
feat(studio): the workbench gets a terminal of your own, as the Terminal board draws it
...
A fourth kind of tab opens a real shell (ConPTY on Windows, a pty elsewhere) in
the project folder, outside the model's permissions and sandbox and with the
host's provider keys left out of its environment. The kernel keeps each shell's
output, so a tab left or a window reloaded comes back as it was; a tab is named
for the command submitted while the shell is busy and carries a blue dot, and
closing a busy one asks first.
Also: the composer's note stack no longer clips to a few pixels when it holds
two notes, which left the second one overlapping the input.
2026-11-06 04:44:41 -08:00
yhh
3cf430d823
feat(studio): restoring a backup asks for the passphrase and reads the differences in a dialog, and says what happened in one strip per outcome, as the recovery board draws it
2026-11-06 03:34:59 -08:00
yhh
efcd3bbf51
feat(studio): notices carry an info, warning or error glyph instead of a dot, and a pending permission request puts Refuse at the left, as the cards board draws them
2026-11-06 03:06:42 -08:00
yhh
a3303025fe
feat(studio): a turn closes with a tick and Done · duration at the right edge, as the reply board draws it; start time moves to the hover
2026-11-06 02:57:38 -08:00
yhh
6ebff84af2
feat(studio): the extension page gets a project pill beside Add, so the project is switched in place; the settings row stays as the same control
2026-11-06 02:50:06 -08:00
yhh
5e00091026
feat(studio): the extension project scope moves into settings as an Extension scope row on the Permissions page; the extension page only says so when it is managing another project, as the new Set-scope board draws it
2026-11-06 02:35:44 -08:00
yhh
4c6ba31a1c
test(studio): the automation card test waits for the scheduled-runs row, which appears once its board is read
2026-11-06 02:28:38 -08:00
yhh
5868b02bdf
feat(studio): hooks and scheduled runs move from the extensions page into an Automation card on the Agent behaviour page, as the new Set-automation board draws it
2026-11-06 02:28:06 -08:00
yhh
ab6052b8a2
feat(studio): the extensions page drops the separate Runtime card for the board's one-line note on when changes take effect, keeping the rescan button beside it
2026-11-06 02:12:29 -08:00
yhh
d437997362
feat(studio): a reply whose layout fails shows its source with an as-written tag, and a tool card that cannot be drawn falls back to a simplified line, as the recovery board draws them
2026-11-06 02:06:21 -08:00
yhh
e4c97fdfab
feat(studio): visual effects is one switch and the appearance page gets its advanced-appearance row, as the look board draws them
2026-11-06 02:04:33 -08:00
yhh
c8eb8693fa
feat(studio): native session import is a dialog with a dashed drop area, theme and session import results are the recovery board's green and warning strips
2026-11-06 02:03:09 -08:00
yhh
851f5fe19f
feat(studio): the export-to-file categories are pill checkboxes with two passphrase columns and a warning-tone shortfall, as the recovery board draws them
2026-11-06 02:01:16 -08:00
yhh
7c26f0d5ec
fix(studio): the notice and config sub-lines get their own class names, which the monospace guard reads as prose
2026-11-06 01:59:36 -08:00
yhh
0e04e0d753
feat(studio): the unparseable-config banner is the recovery board's card at the top of the settings page, with the offending line, the repair and a backed-up repair action
2026-11-06 01:59:03 -08:00
yhh
f05b2392c3
feat(studio): update, size-ask and stall notices use the board's card; the unsaved-preset dialog lists what changed; settings-did-not-open is a centred placeholder; notices past three fade out
2026-11-06 01:55:41 -08:00
yhh
e41bddb590
feat(studio): notices are the board's one strip — 380px cards with an icon and ghost-pill actions, stacked above the composer, newest three kept; the queue style guard follows the new rules
2026-11-06 01:50:17 -08:00
yhh
e7cc0d9841
fix(studio): the extensions page names its group External services, as the installed board does
2026-11-06 01:39:50 -08:00
yhh
61d2f00f17
feat(studio): the appearance size row offers small, standard and large in place, as the look board draws it
2026-11-06 01:36:56 -08:00