Commit Graph
21034 Commits
Author SHA1 Message Date
OrcaWin 565d5214aa test: remove status bar schema inventory cases 2026-11-12 12:43:55 -08:00
OrcaWin 0cf9df5190 test: remove low-value panel and settings schema cases 2026-11-12 12:39:44 -08:00
OrcaWinandOrcaWin f895b716d3 test: remove plugin host cache counts and nominal examples (#41645)
* test: remove plugin history cache work-count assertions

* test: remove workspace cache counts and generic panel gate case

* test: remove nominal plugin rename and project projection examples

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 12:36:11 -08:00
Jinjing 296d703053 Improve browser extensions discovery (#36190) 2026-11-12 12:30:18 -08:00
788c12cbf9 fix(terminal): let macOS menu shortcuts work while a TUI uses kitty keyboard (#41644)
* fix(terminal): let macOS menu shortcuts reach the menu when a TUI enables kitty keyboard

Co-authored-by: Sangin <11793706+silee9019@users.noreply.github.com>
Co-authored-by: mys <4546173+wowpotato@users.noreply.github.com>

* fix(terminal): swallow preview menu-chord releases and skip the bypass on iPadOS

---------

Co-authored-by: Sangin <11793706+silee9019@users.noreply.github.com>
Co-authored-by: mys <4546173+wowpotato@users.noreply.github.com>
2026-11-12 20:27:50 +00:00
Jinjing 81d2b0b240 fix(browser): make address bar icon hover visible (#41438) 2026-11-12 12:20:24 -08:00
OrcaWinandOrcaWin 0b83894696 test: remove low-value schema and unused-reader tests (#41638)
* test: remove routine relay response schema examples

* test: remove suite for unused automation jobs reader

* test: remove Box schema inventory and duplicate warning tests

* test: remove unused relay predicate and schema budget examples

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 12:18:09 -08:00
Brennan Benson e8db36c7ce Keep the model picker tied to the selected model (follow-up to #40906) (#41512)
* Keep model picks independent of answer metadata

* Remove unused answer model extraction

* Verify model selection stays separate from answer metadata

* Keep the agent-chosen model as a display default

* Keep agent-chosen model text out of input selections
2026-11-12 12:18:05 -08:00
Jinjing 365515d418 Improve onboarding (#41378) 2026-11-12 12:07:25 -08:00
mousepotato03andClaude Opus 5.5 b7bb1fb4e0 fix(gh): turn off gh telemetry for Orca's gh calls to stop Windows console flashes (#41608)
gh 2.91.0 and 2.92.0 start `gh send-telemetry` with DETACHED_PROCESS. Its
`tzutil /g` child then gets a new console, which shows a terminal window for
about 0.2s. Orca's background PR polling runs gh about once a minute, so
Windows users on those gh versions see the window every few minutes while
Orca sits idle. Default GH_TELEMETRY to false in the gh child env, next to
GH_PROMPT_DISABLED, and keep any value the user already set.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 20:05:36 +00:00
Jinjing d05fe32992 fix(mobile): place a failed queued row by the queue's current order (#41633)
A reorder of equal-height rows moves them by transform and lays none of
them out, so the failure scroll's settle path kept the order from the last
layout and could scroll to the wrong row. The hook now takes the queue's
current order every render.

Follow-up to #41611 (Neil post-merge C1, F41611-C1-1).
2026-11-12 12:03:46 -08:00
OrcaWinandOrcaWin 3c46c57682 test: remove low-value launch and contract tests plus unused fixtures (#41636)
* test: remove unused comparator coverage and orphan fixtures

* test: retire redundant CLI agent launch composition suite

* test: remove connector hello limit mirror

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 11:48:47 -08:00
Neil e1d4314a46 refactor(window): organize clipboard, lifecycle, security, and relay owners (#41634)
* refactor(window): group clipboard, lifecycle, security, and relay owners

* refactor(window): keep Electron paste handling with desktop clipboard
2026-11-12 11:47:00 -08:00
Brennan BensonandNeil b3f8a5ac8d Deliver browser recovery completion to the clients that need it (#41489)
* Deliver client browser reconciliation completion to observed workspaces

* Supply the workspace snapshot in empty adoption coverage

* Skip recovery completion output after its recipient unsubscribes

* Check activity work in the departed recipient regression

* Select accepting session listeners before recovery delivery

* Preserve scoped removal and recovery clearing delivery

* Specify reconciliation listener selection type directly

* Use inherited reconciliation listener selection contract

* Type reconciliation observations by their actual owners

* Update recovery test row-order import after main integration

* fix(tests): import GitHub image capability from its owner (#41625)

---------

Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
2026-11-12 11:37:12 -08:00
Brennan Benson 46ab648802 Antigravity settings: one card per section, no nested cards (#41632) 2026-11-12 11:36:11 -08:00
OrcaWinandOrcaWin 908ab68ca0 test: remove low-value popup, plugin visibility and teardown checks (#41629)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 11:26:07 -08:00
Jinjing d1ae177242 feat(mobile): floating answer card, queued messages above it (#41611)
* feat(mobile): floating answer card, queued messages above it

Port of stablyai/orca-private#724 (e1a794e6), plus:
- keep orca #40820's filled Steer pill on the lit head row
- let the open queue list shrink and scroll under a height limit so
  the Show less row stays whole at 320pt on a short screen

* test(mobile): pin the short-screen queue shrink at narrow width and on the box

* fix(mobile): scroll a failed queued message into view and keep the lit Steer pill's press

- A failure that opens the queue scrolls its row into view, so on a short
  screen the reason the list opened is visible above Show less.
- The pressed opacity comes after the lit fill on the Steer pill.
- Test the lit pill (orca #40820) and the failure scroll.

* fix(mobile): place a failed queued row only from its fresh height and let stale requests lapse

- The failure scroll waits for the failed row to lay out again, then settles
  on the known heights after 300ms, so a stale height or an unresolved
  request never moves the list later.
- A deferred show expires after 1s and on a queue change; the inline
  editor's reveal scrolls at once again.

* refactor(mobile): keep the failure-scroll request as the queue list's own state

React Doctor reads a hook-returned setter called during render as a prop
callback; the list now owns the request with useState and hands it to the hook.

* fix(mobile): address review threads on the queued list

- Fold again for a later prompt: an open choice made in one placement no
  longer comes back in the next.
- Scroll a message the person queues into a folded list into view through
  the same deferred show as a failure.
- Lift from the row only in the plain presentation; a settings row keeps
  its grip gesture.

* fix(mobile): let a choice made in the render a prompt arrives win over the placement reset

* fix(mobile): count an open inline editor's height when placing a later queued row

* test(mobile): note why the inline-editor test stub is cast
2026-11-12 11:11:28 -08:00
Jinwoo Hong fb5bf4450d fix(mobile): let the chat transcript scroll by touch on the phone's web pages (#41578)
* fix(mobile): let the chat transcript scroll by touch on the phone's web pages

Gesture handler 3 (Expo 58 upgrade, #37935) gives a GestureDetector's view
touch-action: none on web by default. The chat transcript's pinch-to-zoom
detector sits on its scroller, so in the phone's WebView pages the browser
refused every touch pan and no chat could scroll. Gesture handler 2 left it
at auto.

The row list now wraps its own scroller in MobileNativeChatPinchZoom, which
keeps touch-action: auto. A browser render check pins the scroller's
touch-action under the detector.

* fix(mobile): keep the transcript pinch on its text size, not page zoom

touch-action: auto let a two-finger pinch on the transcript zoom the whole
page in the phone's web pages, so the transcript's text-size pinch never ran
and a zoomed page stopped the composer lifting over the keyboard.
pan-x pan-y keeps one-finger scrolling (and sideways code blocks) with the
browser and hands the pinch to the detector.

The render check now pans the transcript with one finger and pinches it
with two, asserting it scrolls, the text scale changes and the page stays
at scale 1.
2026-11-12 14:10:05 -05:00
Neil b10c07fbc3 refactor(startup): organize remaining lifecycle and service owners (#41624)
* refactor(startup): organize remaining lifecycle and service owners

* fix(tests): bind quit mocks to concrete shutdown owners
2026-11-12 11:08:38 -08:00
Brennan Benson d0007451eb Antigravity settings: flatten into agy terminal and Chats cards (#41531)
* Antigravity settings: flatten into agy terminal and Chats cards

Replace the nested Antigravity card with two flat settings cards. Saved agy
accounts become Codex-style rows (click to select, Active badge, Remove), the
current login gets an inline Save, and usage refreshes from the active row.
Chats lists Sign in with (Enterprise fields inline), Account status with its
action, then Chat runtime.

* Use primitive variants for Antigravity row buttons and badge

* Antigravity settings: speak usage values and keep the /logout step
2026-11-12 11:08:36 -08:00
OrcaWinandOrcaWin 1fbd7c2356 test: retire low-value scanner, account, browser, and terminal suites (#41623)
* test: retire vault corpus and account setup suites

* test: retire synthetic browser and document host suites

* test: retire synthetic terminal motion suites

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 11:06:33 -08:00
Jinjing ff01a87397 feat(native-chat): answer card as separate option tiles (#41602)
* feat(native-chat): answer card as separate option tiles (variant C)

- Card on the composer surface: 14px radius, its own edge, one 14px gutter
  for the question, option tiles and footer.
- Each option is a bordered tile (new --question-option-border token); a
  picked tile gets a primary border, 8% fill and a filled check badge.
- Keyboard focus is an inset --chat-focus-ring ring, never the selected fill,
  so option 1's initial focus no longer reads as picked; descriptions stay
  muted at 13px.
- Footer: the answer field is a bordered box; Skip is an outlined button that
  turns into a filled Submit with an Enter hint.
- Fixtures for keyboard focus, multi-step and a 400px pane.

* fix(native-chat): answer card edges follow chat colors; bare multiline field

- Derive the card and option border tokens from --chat-source-foreground so
  tiles keep their edges when chat follows the terminal's colors.
- Use the bare ImeTextarea for the multiline answer inside the shared box
  instead of overriding the Textarea primitive.
- Show the Enter hint only where Enter confirms (single-select, single-line).
- Skip/Submit text follows the chat UI size; focus offset uses the card
  surface; footer bottom-aligns beside a multiline field.
- Move Skip/Submit into NativeChatQuestionConfirmButton.

* fix(native-chat): preview inside the picked tile; steady footer; scheme-aware edges

- The tile wraps the row and its preview; the preview is indented to the
  label column without its own border, and a 1px inset gap separates the
  focus ring from a picked tile's border.
- Skip/Submit gets a min width that fits 'Submit ↵', so the answer field
  keeps its width.
- The answer box shows keyboard focus as the same 2px inset ring as options;
  the multiline field grows with its content up to 12 lines.
- Card and option border mixes follow the chat's own scheme when it takes
  the terminal's colors.
- Focus the card's first target with focusVisible so the ring shows even when
  a mouse click opened the card.

* fix(native-chat): force the focus ring only on a prompt card's focus target

The card-level fallback (approval cards, a question card with every target
disabled) keeps the browser's keyboard heuristic, so mouse-opened approval
cards do not draw a ring around the whole card.
2026-11-12 11:05:13 -08:00
Kelvin Amoaba c1f3309c1e fix(mobile): convert Android HEIC photos to JPEG when picked for chat (#41626)
At quality 1 the Android picker hands back raw HEIC, which the chat page's
WebView can't decode, so the attach failed.
2026-11-12 18:56:41 +00:00
OrcaWinandOrcaWin 50e702d51f test: retire scanner, runtime status, and chat windowing suites (#41621)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 10:43:51 -08:00
Neil a9399acb55 fix(tests): import GitHub image capability from its owner (#41625) 2026-11-12 10:39:20 -08:00
Brennan BensonandClaude Opus 5.5 5d34b135ab perf(worktrees): one owner for each repository's worktree list (#41480)
* perf(worktrees): give each repository's worktree list one owner

The sidebar and the runtime catalog each kept their own copy of a
repository's `git worktree list` result and their own staleness rule, so
the same change was often listed twice. One owner per repository, host
and Git runtime now holds the observation, its flight and invalidation;
each reader keeps its accepted age (sidebar 5 s, runtime 30 s plus the
admin-file verifier up to the 5-minute ceiling) and shares the scan.

Settled rows now go stale on Git-level mutations too, overtaken readers
follow one trailing scan, store hygiene uses the facts captured before
the scan that produced the rows (once per observation), and a cooled-
down watcher failure defers its catalog refresh instead of dropping it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(worktrees): fence the catalog owner by runtime, single flight and hygiene claims

Sidebar reads age from scan start, so runtime verifications no longer
stretch them; probes only certify rows fingerprinted before their scan.
One flight per owner, with a single trailing scan after invalidation.
Switching a repo's Git runtime retires the old owner, and a reader whose
owner was retired mid-read returns non-authoritative rows. Only pruning
readers claim hygiene, failed scans keep the evidence gate's no-retry
claim, overflow invalidates at once, and the stopped-distro fallback
serves only current rows.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(worktrees): let only the live route own a repository's catalog

The catalog owner now asks the live registration which path and Git
runtime are current instead of trusting whichever request arrives last.
A request admitted for a replaced route runs no Git, retires nothing and
answers non-authoritatively; liveness is rechecked before a flight
starts and when it publishes. Route-changing writes retire obsolete
owners after they land. Adapters re-resolve the route after the WSL
admission check, a mismatching verification probe becomes the rescan's
fingerprint, and runtime scans share the strict true-empty-aware reader.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(worktrees): bound live-route checks and recheck authority before pruning

Live-route checks read the repo registry once per synchronous pass
instead of hydrating every repo per check. WSL discovery answers that
change a repo's Git route retire obsolete owners like other route
writes, and desktop and headless pruning recheck the owner's authority
for the observation after their own awaits.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(worktrees): revision the live-route snapshot and carry owner authority to publication

Route checks use one registry and project pass per route-input revision,
which repo, project-membership and runtime-setting writes advance
synchronously; WSL discovery answers retire obsolete owners at once.
Repair-state and SSH routes never acquire local Git authority. Metadata
pruning rechecks owner authority after its path probes, fleet lineage
claims require a current observation, and final desktop and runtime
listings stay non-authoritative once the owner has retired their route.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(worktrees): keep remote-owned repos out of local Git routes

Registrations owned by another host never get a local Git route, WSL
discovery notifies after the distro list is written and isolates its
listeners, and tests cover idle retirement on route-input and discovery
changes plus pruning that loses owner authority mid-helper.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* test(worktrees): cover catalog route authority at its production seams

Real repo-removal writer revokes the route at once, and desktop and
runtime listings never publish owner rows as authoritative after their
route was retired.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* test(worktrees): prove catalog authority at the pruning helper and Git conversion writer

The runtime listing loses route authority during its own metadata prune
and stays non-authoritative; a real held path probe deletes nothing once
the owner retires the route; a folder converted to Git is admitted as a
live route as soon as the write lands.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(worktrees): keep strict true-empty listing behind the mockable lister

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* test(worktrees): start each worktree.ps case from an unobserved catalog owner

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* build(typecheck): list the WSL discovery change module in the web project

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(worktrees): withdraw catalog authority from a replaced observation

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-11-12 10:32:22 -08:00
Brennan Benson f7c9cb5756 Reduce Git status work in unfocused and hidden windows (#41500)
* Reduce Git status work in unfocused and hidden windows

* Group Git status owner imports

* Explain visibility-owned status subscription cleanup
2026-11-12 10:28:13 -08:00
Brennan Benson 08f4f03d39 fix(antigravity): keep managed local connections off proxies (#41511)
* fix(antigravity): bypass proxies for the managed local harness

* fix(antigravity): retain Python-selected bypass aliases

* fix(antigravity): preserve conflicting proxy bypass policies

* test(antigravity): annotate proxy launch fixtures without a cast

* test(antigravity): type conflicting proxy fixture rows explicitly

* fix(antigravity): preserve custom system wildcard routing
2026-11-12 10:23:46 -08:00
buf0-bot[bot] b272cdcf2f Update README downloads badge (#41622)
Co-authored-by: buf0-bot[bot] <252831055+buf0-bot[bot]@users.noreply.github.com>
2026-11-12 18:23:19 +00:00
Brennan Benson 519892ce0c Cancel image uploads when closing GitHub drafts (#41583)
* fix(github): cancel image uploads when the draft closes

* test(github): use the runtime response metadata field

* chore(github): explain upload boundary type assertions
2026-11-12 10:21:16 -08:00
Brennan Benson 4e742cacd5 perf(chat): decode OpenCode transcript messages once per page (#41575)
* perf(chat): decode OpenCode transcript messages once per page

* Batch transcript fixture writes in SQLite transactions
2026-11-12 10:21:01 -08:00
Neil 7fea1779d0 refactor(startup): group launch and platform startup owners (#41613)
* refactor(startup): group launch and platform startup owners

* refactor(startup): preserve ACL recovery copy protection
2026-11-12 10:15:54 -08:00
Brennan Benson e693fe5665 Stop listing Claude short-name rows beside the model they run (#41467)
* fix(agent-picker): stop listing Claude short-name rows beside the versioned model they run

* fix(agent-picker): hide a short name only on reported proof; keep hidden rows searchable

* fix(native-chat): keep a pending hidden model pick listed
2026-11-12 10:11:21 -08:00
OrcaWinandOrcaWin a1034d5bd8 test: retire mobile presence and native-chat fixture suites (#41617)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 10:02:51 -08:00
OrcaWinandOrcaWin d34c829237 test: retire low-value draft, crypto, and lifecycle coverage (#41614)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 10:02:35 -08:00
OrcaWinandOrcaWin e6b8e21a28 test: remove low-value daemon, script, and activation coverage (#41612)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 09:25:16 -08:00
Neil fb8d6f950b refactor(github): organize concrete feature owners (#41601) 2026-11-12 09:17:26 -08:00
OrcaWinandOrcaWin ff9fd6634b test: remove low-value ingress, mobile, and markdown cases (#41609)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 09:10:57 -08:00
OrcaWinandOrcaWin 7106c8657d test: remove low-value edit, display, and PTY suites (#41606)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 09:03:19 -08:00
OrcaWinandOrcaWin f7782fae0f test: remove low-value process, recovery, and UI cases (#41600)
* test: remove narrow icon, hydration, and composition cases

* test: remove low-value process, recovery, and UI cases

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 08:47:20 -08:00
OrcaWinandOrcaWin 895cd026c0 test: remove low-value fixture, relay, and recovery cases (#41591)
* test: remove low-value fixture suites and custom scenarios

* test: prune relay and recovery matrices and refresh retained host journey

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 08:32:10 -08:00
Neil 560a22e00f refactor(cli): organize command dispatch and orchestration owners (#41562)
* refactor(cli): organize command dispatch and orchestration owners

* test(orchestration): retire superseded unbound mail refusal case
2026-11-12 08:12:55 -08:00
Neil 757b1e6167 feat(plugins): project.setHidden — hide and show projects from plugins (#41582)
- project.setHidden({ projectId, hostId?, hidden }) -> { hostId, hidden }: workspace:write,
  worker only, host API 1.9 (unreleased, floor 1.4.258). Calls repo.setHidden by id: only,
  always host-qualified; a twin without hostId is refused naming hostId; an answer without
  hidden (an older host) is a fixed action_failed.
- project.list rows carry hidden.
- repo_not_found maps to 'no project has this id'.
- Audit summary by ids; workspace:write consent copy names hiding projects.
- Mock testing host echoes project.setHidden; regenerated plugin artifacts.
2026-11-12 07:45:08 -08:00
OrcaWinandOrcaWin 5f0469ca5f test: remove low-value terminal transport and layout cases (#41584)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 07:43:08 -08:00
OrcaWinandOrcaWin 207ba0727a test: remove low-value hidden-project suites (#41581)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 07:28:23 -08:00
OrcaWinandOrcaWin e35608c5f1 test: remove low-value orchestration and terminal suites (#41580)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 07:20:56 -08:00
OrcaWinandOrcaWin 3cb6a50219 test: remove low-value plugin lifecycle and authoring checks (#41576)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 07:03:33 -08:00
Neil d277381bb3 Hide projects from the sidebar without stopping them (#41529)
* Hide projects from the sidebar without stopping them

Adds Repo.hiddenAt, a per-host, view-only flag. A hidden project's
workspaces, empty header and project-filter entry leave the desktop
sidebar, the paired phone's list, the new-workspace picker and the
palette's project filter. Its terminals, agents and automations keep
running, and repo.list / worktree.ps still list it.

- Hide Project in the project menu (toast with Undo), a collapsed
  "N hidden projects" list under the workspace list with Show buttons,
  and a Hide from sidebar switch in Settings > Projects.
- repo.setHidden RPC ({repo, repoHostId?, hidden} -> {repo, hostId,
  hidden}) and `orca repo hide|unhide [--host]`; `repo list` marks
  hidden rows.
- Opening a hidden project's workspace (notification, CLI, deep link)
  focuses it without unhiding it, lifting sidebar filters, or leaving a
  pending sidebar reveal.
- repo.update echo check: a host that drops hiddenAt reports failure
  instead of reading as hidden.

* Address hidden-projects review: multi-host hide, picker scope, mute, stale filters, shared predicate, restore list styling

* Hidden projects re-review: keep saved filters, Agents filter, composer seed, per-toast Undo, shared default host

* Hidden projects: address review threads (pre-feed, palette search, notices, dialog default, seed remap, row keys, a11y)

* Hidden projects: no implicit dialog default when every project is hidden
2026-11-12 07:02:57 -08:00
OrcaWinandOrcaWin 0b6497cfc8 test: remove low-value plugin, mobile and shared suites (#41571)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 06:50:57 -08:00
Neil 1bd6d7a659 fix(plugins): host API 1.8 and 1.9 floors match the next release (1.4.258) (#41565) 2026-11-12 06:36:48 -08:00