## sinelaw/fresh — v0.4.6…v0.4.7

_143 commits._

### Features
- **Stop "Show the command" from downloading, and add a rung between** (e7f20f7)
- **Add staging and elevation to the crate** (4b07821)
- **Add --force and mirror overrides so the install flow is testable** (0764a20)
- **Add thrift syntax highlighting** (c9257db)
- **Add a screenshot of the tour's states** (a447e17)
- **Cover both new dock-hiding routes with e2e tests** (2c23b55)

### Fixes
- **Stop reload from orphaning panels, and fix what the agents' reports exposed** (439f6dc)
- **Fix the friction a black-box agent hit using these APIs** (18c7f0f)
- **Fix the review findings in the off-loop and dashboard work** (2fdd04d)
- **Fix the commands that could not have done what they claimed** (52050da)
- **Fix a local root escalation and three wrong update commands** (fcf8a76)
- **Fix the reset, pin, and config-write seams the branch review surfaced** (bbedf2c)
- **Fix three regressions this branch introduced** (b5b3dc7)
- **Review-diff discard e2e: wait for the patch, don't count ticks** (3757cca)
- **Regression test: a restored agent terminal keeps editor control** (52bb8e5)
- **fix(viewport): use rendered width for cursor visibility** (09977e4)
- **Fix rustfmt formatting in clipboard-chord routing** (ffbc36e)
- **Showcase the tour as a GIF, and fix the palette wait behind the CI hang** (e8d3701)
- **Fix the two CI failures in the code-tour e2e tests** (57517b4)
- **Make the plugin type-check script run again, and fix the note's tense** (69d3575)
- **Fix two bugs the manual pass found: Ctrl+Alt+[ and the column seam** (c4d3aed)
- **Fix two bugs in the code-tour e2e fixtures** (b101cb3)

### Backend
- **Bump version to 0.4.7** (94bcfd0)
- **plugin_budget: demote 50ms overrun to DEBUG, warn only past 500ms** (245c8a4)
- **rustfmt** (db832fa)
- **Make Fresh customizable in one shot from a nested agent** (ee2db77)
- **Consume the variant-name sink's Result instead of dropping it** (33a3799)
- **Run the palette e2e tests through the shared wait-for-listed helper** (b31d9a9)
- **Menus and palette ask what the buffer can do, not just whether one exists** (2a74467)
- **Menus stop offering to save or edit a terminal buffer** (fb455b5)
- **Offer Save and Save As from the file explorer** (9c3aebd)
- **Keep the terminal bypass from resurrecting terminal-only commands** (66be690)
- **Pin why the dock is exempt from the palette's focus rule** (b8fcbf3)
- **Extend the palette's focus-independence rule to the file explorer** (f01c060)
- **Command palette stops greying out commands a terminal doesn't block** (10510d9)
- **Restore terminal_title in the no-plugins build** (dd547f0)
- **Finish moving the update engine into fresh-update** (f752681)
- **Update the editor's assertions to the corrected registry** (d1610dc)
- **Bound archive extraction, and restore a cfg the last commit displaced** (7f9054a)
- **Close a symlink race in the in-place binary swap** (1ba524d)
- **Pin update endpoints and parse the release feed as JSON** (ca114cb)
- **Let the release-feed override reach the UI, not just the CLI** (094c8bf)
- **One upgrade mechanism per provenance class, no runtime alternates** (e4e29bd)
- **Make --force mean the same thing on rpm as it does on dpkg** (0107a5f)
- **Finish the update instead of handing the user a chore** (05310dd)
- **Stop naming update commands for distributions that don't exist** (1f975de)
- **Give the update indicator the third state it always needed** (2b7d323)
- **Make the package jobs assert resolved provenance, not a file on disk** (0224bde)
- **Find the receipt .deb and .rpm actually ship** (59049fb)
- **Update .deb/.rpm/.flatpak installs from the GitHub release** (27c0168)
- **Guide and fold-indicator pins move to the split's view state** (a90a495)
- **Layer-aware persistence, honest workspace state, independent tab toggle** (b2b832c)
- **Settings persistence takes a typed SettingKey, not a pointer string** (7c804f2)
- **Assert the occurrence-highlight pin from the screen, not the filesystem** (3f09ecc)
- **Give the newly-persistent toggles a per-buffer variant** (446a370)
- **Keep "Toggle LSP for Current Buffer" in prose form** (f3d5489)
- **Make every settings toggle say which scope it changes** (55939ad)
- **Per-buffer toggles for indentation guides and folding indicators** (6a3a42d)
- **Isolate the remote-FS explorer test, and anchor its wait to tree rows** (0291ec3)
- **Diagnostics API e2e: wait for LSP init before triggering a publish** (820ca31)
- **E2E: run palette commands through the wait-for-listed helper** (a3df4ab)
- **Git gutter e2e: wait on the invariant, not on a fake-time settle** (91b9c77)
- **Test harness: stop hiding a timeout behind every keypress** (7064965)
- **Remove leftover ad-hoc reports and stale branch handoff notes (#2914)** (008de65)
- **Keep each split's edit point put when another split edits the buffer** (cadeff1)
- **Keep dock panels out of the editor split when a tab closes** (a3217c2)
- **Gate the restored-token test on the plugins feature** (3f5f601)
- **Re-mint the agent capability token when a terminal is restored** (2be2a0b)
- **Route daemon-mode bracketed paste to focused dialog text fields** (a6761fb)
- **Update the load-prompt e2e for the picker's workspace-root anchor** (83e9243)
- **Tour: Open Workspace Tour... always browses — never auto-opens a guess** (4897c74)
- **Tour: Load Definition opens its picker where tour files actually are** (4cb4894)
- **Orchestrator dock: file only the targeted workspace on move-to-folder** (db537d4)
- **Orchestrator dock: rename only the targeted workspace, not its root co-tenants** (c6c53be)
- **CLI feature guides: fresh --cmd help <topic>, generated from shipped artifacts** (ad7638e)
- **Play VS Code CodeTour files in the tour dock, with workspace discovery** (967db6f)
- **Route clipboard chords to focused text fields in widget dialogs** (83906fa)
- **Host diff service: never refuse a live diff, one engine, one cache, baselines API (#2899)** (893bef3)
- **Code tour: reject bad picks visibly, resolve step paths against the manifest (#2900)** (829b01f)
- **Improve toml syntax highlighting for nultiline arrays** (d8b861a)
- **Remove test_i18n plugin** (ff66f08)
- **Parse whole files up to 1MB in the tree-sitter highlighter** (8462914)
- **Focus the owning list when one of its rows is clicked** (b5ddbbd)
- **Regenerate the code-tour showcase gif** (a8d3971)
- **Match the step-settled wait to the themed highlight colour** (29ace81)
- **Hand focus back to the panel in the same turn the step's file opens** (b715070)
- **Align tests with the location-led prose and the fixed browser label** (0b30159)
- **Give plugins a native file-pick dialog, and use it for loading tours** (66c8e8b)
- **Paint the tour panel immediately on step change** (7de8ae7)
- **Give the tour panel's rows to the prose, and its prompt real path completion** (5b5479d)
- **Drop the position-less widget wheel wrapper** (048c237)
- **Regenerate the code-tour showcase gif** (20883bb)
- **Make the tour caret visible, restore the single range-wide overlay, and theme the palette** (6a7b4b9)
- **Polish the tour panel: caret containment, key bindings, rail nav, highlight and width fixes** (8acb707)
- **Let markdown document rows compete in the row-aware click fallback** (8122c88)
- **Make the tour's description a real text area via a markdown Text widget mode** (3750718)
- **Cover the tour panel's wheel routing, scrollbars, highlight and wrap in e2e** (969aece)
- **Word-wrap tour prose at the host's real column budget** (cdbc183)
- **Route the wheel by pointer, paint split-panel scrollbars, contain the selection band** (d9b4019)
- **Stop the tour panel dropping keys that race a step's own focus chain** (55aa233)
- **Subscribe disk-state plugins to after_file_revert** (1693d6a)
- **Refresh the git gutter when a file is reverted to an external change** (6d0748d)
- **Sample the live-diff stripe after the plugin pass finishes, not during it** (1505e2c)
- **Mark a hunk with one scrollbar marker, and stop over-marking insertions** (f8d41a3)
- **Put unsaved changes on the scrollbar, not only in the gutter** (6ee29e4)
- **Show git-gutter hunks on the scrollbar, not just in the gutter** (bc940ac)
- **Keep same-position edits off the batched marker path** (6a3daa4)
- **Cover the 60k-match replace-all end to end** (0d55888)
- **Shift cursors through a bulk edit with prefix-summed deltas** (fc02779)
- **Match piece-tree leaves to delete ranges with a walking cursor** (38942c5)
- **Adjust markers once per bulk edit instead of once per edit** (27b47b4)
- **Collect replace-all matches in a single pass over the buffer** (e005f48)
- **Escape manifest paths so the tour fixtures are valid JSON on Windows** (48f2de9)
- **Wait for the step change to land before sending the next tour key** (8153043)
- **Draw overlays that span the viewport** (24d4fa3)
- **Paint the step highlight per line so tall ranges actually render** (70c1971)
- **Cover the click fixes with tests, and log the change** (c4d0e61)
- **Make the code-tour e2e tests deterministic** (fff055d)
- **Restore a tour's tab without taking the keyboard** (22be75d)
- **Render *emphasis* and park focus on the step prose** (f21ce3f)
- **Stop stray clicks in a widget panel from scrolling it away** (423a2c5)
- **Move the code tour from a floating popup into the Utility Dock** (cd0dc7a)
- **E2E: shifted keys reach the screen as their character** (105c95e)
- **Shift types its character again under report-all-keys** (9445d7f)
- **Declare hover styling in the spec instead of shipping hover events** (01559e0)
- **Let a centered modal drive hover for the panel it captured** (18cf6b0)
- **Make widget hover a first-class render input, not a second thread-local** (890dd50)
- **Give the orchestrator dock a way out that isn't a keybinding** (1f5368b)

### Docs
- **docs(changelog): group 0.4.7 bug fixes by area, contributed fixes first** (2c70c02)
- **docs(changelog): tighten 0.4.7 notes to tldr style** (e8c1124)
- **docs(changelog): restore tagged 0.4.6 section and complete 0.4.7 notes** (1bd1429)
- **Docs: scripting page leads with worked examples, agents last** (c88b796)
- **Docs: opening a tour is a file browser now, not a discovery picker** (566dfa4)
- **Docs: real tours in the screenshots, and less mechanism in the prose** (44bb95b)
- **Docs: screenshots for the scripting and code-tour pages** (f54872d)
- **Docs: scripting/agent control and guided code tours** (3dd49e6)
- **docs(changelog): restore tampered 0.4.6 section and prepare 0.4.7 notes** (ac62948)
- **docs: sync package-lock with the feed dependency** (f625c70)
- **docs: zoom images on click** (ccb4210)
- **docs: correct the claims implementation disproved** (e2495d9)
- **docs: restore every open tour; closing one forgets it** (ca11af2)
- **docs: tours persist across restarts and get one buffer each** (2049c9e)
- **docs: design the Code Tour dock panel that replaces the step popup** (a83eace)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/sinelaw/fresh?utm_source=github-action)._