Local-operator

Latest version: v0.73.1

Safety actively analyzes 1035937 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 55

0.34.45

What's New

Agent Hub links now have independent Subscribe and Auto-push controls, with explicit consent for Public publishing and stable keyboard focus during background health polls. The Canvas Files view organizes generated media and subagent outputs from the authoritative session index, while Highlights opens relative file paths against the right session workspace. Browser page find and per-tab zoom follow browser focus without taking over chat search or app zoom. French console dialogs and remote borrowed-provider access status are clearer.

- **Hub controls:** incoming updates and outgoing publication can be configured separately for each destination. Unsupported or disconnected backends explain why changes are unavailable, including inside the consent dialog; browsing remains accessible. The Hub Skills library is deliberately not included in this window.
- **Files and Highlights:** Highlights-first browsing, kind sections, search, saved sorting and filters make session outputs easier to find. Large collections are bounded and virtualized; the authoritative inventory is used only when the backend supports it, rather than merged with the transcript scanner.
- **Browser focus:** find and zoom act on the focused browser surface. Chat and app focus keep transcript search and app zoom; printing is not included.

Impact

- **Backend requirement:** Hub changes require a live Local Operator backend **0.72.1 or newer**. Older, unknown or disconnected backends fail closed rather than offering actions they cannot safely perform. This is a backend requirement, separate from the desktop app's version.
- **Skills scope:** the Agent Hub Skills entry, browsing, search and Pull remain unavailable until the complete backend adapter is advertised. This release does not deliver that adapter or claim a working Skills installation path.
- **Shortcut changes:** the App-menu **Actual Size** shortcut moves from **Cmd/Ctrl+O to Cmd/Ctrl+0 (zero)**. Conflicting saved custom assignments, including the newly reserved zoom-reset `0` binding, are retained but inactive in this version for downgrade compatibility; they are not erased.
- **Human-only browser zoom:** agent-driven tabs stay at **100%**. A zoom chord in one of those tabs shows a notice by design; the agent browser-tool contract is unchanged.
- **Keyboard verification limit:** physical OS-focused `Cmd/Ctrl+F`, `Cmd/Ctrl+-` and `Cmd/Ctrl+0` accelerator delivery was **not verified**. Hidden-window and synthetic-input checks are not presented as physical keyboard proof.
- **French scope:** console dialogs gain explicit Annuler and accessible terminal labels, but the shared corner Close control remains English.

PRs

- 1039 `feat(hub): per-link subscribe/auto-push controls with public consent` — merge `8057f32ff24d` — `Release: patch — per-link subscribe/auto-push controls with public consent. The Skills library is not shipped in this window: browse, search and pull stay unavailable until the complete backend adapter lands.`
- 1080 `feat(canvas): add authoritative Finder-style session files` — merge `2f84e482e29e` — `Release: patch — the Canvas Files view uses the authoritative session index for generated media and subagent outputs, with Highlights-first browsing, kind sections, search, saved sorting and filters, and bounded large-file collections.`
- 1073 `fix(i18n): preserve French console scope, controls and accessible labels` — merge `25940fa7f9c9` — `Release: patch — French console dialogs gain explicit Annuler, compact capacity layout and accessible terminal labels, and the onboarding footer fits; the shared corner Close control remains English.`
- 1075 `feat(i18n): assemble audit ledger from verified immutable receipts` — merge `51a2eccfb936` — `Release: patch — deterministic translation-ledger assembly and fail-closed audit provenance; no user-visible UI change.`
- 1093 `fix(highlights): resolve file actions against session cwd` — merge `b6148c02a732` — `Release: patch — Highlights file actions now resolve against the session workspace for canvas/default-app/Finder; 24px menu targets and actionable resolution feedback.`
- 1090 `fix(browser): route shortcuts to the focused browser surface` — merge `fca45feb6d3e` — `Release: patch — browser shortcuts follow browser focus; conflicting custom shortcuts fall back to defaults while their saved assignments are retained for older versions.`
- 1024 `fix(ui): show effective borrowed provider access` — merge `b179da8e2198` — `Release: patch — Remote sessions show truthful borrowed-provider access, expiry and owner-unavailable status without losing the selected model or prompting for an unnecessary remote sign-in.`
- 1101 `feat(browser): add native page find and isolated per-tab zoom` — merge `422df121756d` — `Release: patch — add focus-scoped page find and per-tab zoom; saved bindings on newly reserved zoom-reset0 remain retained/dormant for downgrade compatibility.`
- 1099 `fix(hub): min-core guard for Hub writes + hide unsupported Skills (post-merge evidence)` — merge `337ca1764227` — `Release: patch — hides the unsupported Skills entry/actions (Skills unavailable until the complete backend adapter lands) and requires a LIVE core >= 0.72.1 for Hub writes; browsing remains available. No version bump.`

**Full Changelog**: https://github.com/damianvtran/local-operator-ui/compare/v0.34.44...v0.34.45

0.34.44

What's New

Provider usage for Muse now tells the truth about where its numbers come from. When Muse's allowance is only a passive observation (a sign-in or the last response), the usage card says so, shows how old the observation is and states that "Ask providers now" does not query Muse, instead of the generic "Usage unavailable / No windows reported." pair. A passive response receipt also stops showing meters once it is stale, so an old 0% / 99% reading no longer looks current while the pane stays open.

- **Muse passive allowance provenance**: the card keeps the sign-in/last-response source note, the observation age and the refresh limitation, and drops the duplicate generic unavailable copy - only the finite, exact Muse note vocabulary the backend emits is rendered; any other provider string stays hidden, and other providers and credential re-authentication remedies are unchanged.
- **Expiring passive meters**: meters and the "N windows · M near limit" tally from a passive Muse response disappear five minutes after the observation, or as soon as either reset passes, using the dialog's existing clock - this is a local projection of the cached report, so no refresh, request or inference is triggered. Fresh real values (for example 0% current / 99% weekly) still display normally.
- **Deterministic link keyboard test**: the desktop link keyboard-contract test now flushes its hover-dwell timer inside React `act`, removing a timing-dependent failure - test-only, no change to shipped UI.

Impact

- **No breaking changes.**
- The Muse notes are produced by the backend; the acceptance evidence was taken against local-operator 0.71.2, and behaviour against other daemon versions was not tested. Nothing is rebuilt or needs redoing by the user.
- **Limitations**: the Muse rendering is evidenced by Storybook frames (8 PNGs in `docs/evidence/muse-passive-usage`) and renderer/React-container tests, not by a packaged native desktop run against the live bridge, and there is no claim of a full real-account installation test of the UI. The one backend acceptance on the owning account (one completed serving stream, 0% / 99%) is sourced to the PR 1086 description and is not repeated here. Design findings D1-D5 (shared "Live report" heading, "Ask providers now" wording, no next-step hint, sentence splitting, "Observed just now") were deferred as non-gating polish.

PRs

- 1086 `fix(usage): preserve Muse passive allowance provenance (1086)` - merge `855c1a9f743c810ab951281144d8421883ca3609` - `Release: patch - Muse usage explains when an allowance is a passive sign-in/response observation, retains its age, and stops showing expired response meters while the pane remains open.`
- 1081 `test: flush link hover dwell inside React act` - merge `ee2fcabdf0ee9f5d9442674b6b6d85c52af159b5` - `Release: patch - make the desktop link keyboard contract deterministic when its hover timer updates React state.`

**Full Changelog**: https://github.com/damianvtran/local-operator-ui/compare/v0.34.43...v0.34.44

0.34.43

What's New

Generated images and finished videos now appear in the canvas Files view. Until now the view was built on file paths, so pictures and clips the agent generated (which are kept in the session by content digest, never a path) produced no rows at all. They now show as rows with thumbnails and can be opened in the canvas, saved, and (images) copied.

- **Generated artifacts in Files**: generated images and finished videos get a row with a thumbnail (videos show a glyph) and open/save/copy actions (copy for images only) - the ordinary detached-video completion (`job_result`) is recognised, but only from the real "Video ready - attached: digest" receipt; arbitrary bash/task digests stay excluded. Video support was tested against a backend-built fixture (the backend's own completion builder), not a live provider generation. Whole-clip fetch still passes through the existing 32 MiB relay limit, and native save-dialog / clipboard completion was not verified end to end.

Impact

- **No breaking changes.**
- UI-only: no backend dependency and no new fetch route. Persisted canvas state written before this carries no artifact field and behaves as before.
- Not in this release: the Finder-style session files view (1080, unmerged) and any backend/core release.

PRs

- 1054 `Merge pull request 1054 from damianvtran/fix/canvas-files-generated-artifacts` (fix(canvas): list generated images and videos in the Files view) - merge `bb5d9573d3effdd67b841fa2fc75c6d3ff04a12b` - `Release: (none claimed in the PR body; scope per manager: generated images + finished videos now appear in canvas Files with thumbnails and open/save/copy actions; ordinary job_result video fix)`

**Full Changelog**: https://github.com/damianvtran/local-operator-ui/compare/v0.34.42...v0.34.43

0.34.42

What's New

Streaming assistant replies are steadier. While an agent works, text that arrives between tool calls now stays in the order it arrived instead of hopping below the tool rows that followed it, and inline code, bold and lists are formatted as they are typed instead of flashing raw markdown first. The rest of this version is test and CI infrastructure with no user-facing change.

- **Live text keeps its place among tool rows**: a streaming message and its own tool calls are ranked by where each row arrived, so the live order matches the order the transcript settles into - this fixes text jumping across parallel tool calls and late-arriving ordering updates, including for peer sessions. It does not add a new wire field, and older backends without journal ordering keep their existing timestamp ordering unchanged.
- **Markdown formats while it streams**: the block being written is parsed with its unfinished syntax optimistically closed, so it paints the same structure it will have once complete - this removes the raw-backtick flash. The per-arrival fade on the open block is deliberately gone, and the renderer still swaps components when the message settles. Known markdown edge cases remain deferred (for example the tight-list next-digit flash); this is not a claim of perfect markdown or a native-app benchmark, and live motion was not observed in real time.

Impact

- **No breaking changes.** No dependency, backend or wire-format change.
- Desktop CI's `Desktop Tests` job ceiling is raised from 35 to 50 minutes, and a weekly/manual `Focused flake check` workflow is added; test-only flake fixes make the desktop capability and cache tests deterministic. None of this changes the shipped app.
- Nothing is rebuilt or migrated on first update.

PRs

- 1061 `ci: raise the Desktop Tests job ceiling to 50 minutes` - merge `1d7df9c71288c9e837633af7ca615e72a9db8512` - no `Release:` line in the PR body; CI-only (job timeout plus its contract guard), no user-facing effect
- 1074 `test: fix desktop capability races and cache retention` - merge `86d442b5bb8a287858db772bd42e55b9a8538851` - `Release: patch - desktop CI waits for capability negotiation and releases finished test caches instead of racing background reads or retaining workers.`
- 1042 `fix(chat): live text keeps its place among tool rows and renders markdown as it streams` - merge `1892ae0bd267918a79816f34151e3dba2f515102` - `Release: patch - streaming text no longer jumps across its tool rows, and inline code/bold/lists format as they are typed instead of flashing raw markdown.`

**Full Changelog**: https://github.com/damianvtran/local-operator-ui/compare/v0.34.41...v0.34.42

0.34.41

What's New

French Settings copy shipped earlier. This update adds French copy to the console and onboarding surfaces, including terminal controls, status messages and onboarding step counters. It is not a fully French interface: provider/model controls and other acknowledged English islands remain unchanged.

- **French console and onboarding**: translated controls and messages use the selected interface language; narrow-width console improvements and remaining English copy are deferred.
- **Translation tooling**: generated catalogue imports follow the lint gate's ordering for the supported catalogue names, and a fail-closed provenance ledger checks translation audit entries. This does not add another translated language or translate the whole UI.

Impact

- **No breaking changes.**
- Existing language settings continue to apply; no configuration reset or new setup is required.

PRs

- 1049 `fix(i18n): align generated imports with Biome path ordering` - merge `56edde3f95d61678f76db08634d543b9d52110ba` - `Release: patch — Tooling only: keep generated nested-namespace catalogue imports consistent with the lint gate; no user-visible change.`
- 1041 `feat(i18n): French console + onboarding, provenance ledger and acceptance gates (U-FR delta)` - merge `65708b16a40141a40ddb3a4f12dc4943e2fa67e6` - `Release: patch — French for the console and onboarding surfaces, with a fail-closed provenance ledger.`

**Full Changelog**: https://github.com/damianvtran/local-operator-ui/compare/v0.34.40...v0.34.41

0.34.40

What's New

- **Switching the interface to French now actually changes the Settings.** Choosing a shipped locale in the interface-language picker previously did nothing visible. Locale catalogues now load per locale, and the Settings surface (including the reported copy) renders in French. Only Settings is translated: the French console and onboarding catalogues are not part of this release, so those screens stay in English.
- **Paid-usage panels agree with themselves.** A finite wallet is no longer summarised as "without a limit"; payable, blocked and unknown balances each read "1 reported balance" beside the row that shows the credits left, and a healthy included plan is no longer shown as bound to a spent paid meter. Exhausted-plan-plus-funded-credits reads "Included quota used; credits will continue."
- **Archive-confirmation evidence refreshed.** The recorded frames for the danger-styled archive dialog (shipped in the previous release) were re-shot in both palettes. No behaviour change.

Impact

- No breaking changes. All three are patch-scope; no dependency changes.
- Recovery of the running app still requires the operator's own manual restart.

PRs

- 1017 `fix(i18n): activate French - per-locale catalogue loading + the reported Settings copy (U-FR core)` - squash `2bfc2eae2` - `Release: patch - switching the interface language to a shipped locale now changes the copy on the surfaces in this report.`
- 1036 `fix(usage): show paid balances and continuation in desktop panels` - squash `4818c322f` - `Release: patch - paid-usage panels: the credits summary now agrees with the balance a row displays (a finite wallet is no longer summarised as without a limit), and a healthy included plan is no longer bound to a spent paid meter.` (this line is in the PR's merge-disclosure comment; the PR body carries none.)
- 1035 `docs(evidence): re-shoot the archive-confirm frames with the danger confirm` - merge `770eb1973` - docs/evidence only; the PR body has no `Release:` line, so this section states no impact sentence for it.

**Full Changelog**: https://github.com/damianvtran/local-operator-ui/compare/v0.34.39...v0.34.40

Page 1 of 55

Links

Releases

Has known vulnerabilities

© 2026 Safety CLI Cybersecurity Inc. All Rights Reserved.