31 KiB
Host Context Implementation Checklist
This checklist tracks the remaining work needed to make Hosts first-class across projects, tasks, automations, SSH, remote servers, and future cloud VMs.
The target model is:
- Project is the durable logical project.
- Project host setup means that project exists on a specific host at a specific path.
- Task source context means which host/account/provider is used to fetch or mutate external work items.
- Run host means where a workspace, agent, automation, terminal, clone, or command executes.
- Source context and run host are explicit, may differ, and should not be inferred from ambient client state.
Checklist Status
- Not started.
- [~] In progress or partially covered.
- Complete and verified.
1. Shared Model And Naming
- Add a shared TaskSourceContext type that captures provider, host/source target, logical project id, optional projectHostSetupId, and provider-specific identity such as owner/repo, GitLab project id, Linear workspace/team, or Jira site/project.
- Add a shared run-target type or selector for RunHostContext / WorkspaceRunContext so workspace creation, agent launch, automations, and remote execution use the same vocabulary.
- [~] Audit user-facing copy so the product says Host for Local Mac, SSH hosts, remote servers, and future cloud VMs, while preserving technical labels only where useful.
- Document the invariant that task source context and run host are separate choices.
- [~] Add compatibility adapters for existing repo-id/path-based callers so old data can be read while new code moves to explicit contexts.
- Add schema migration notes for old automations, cached task selections, pending worktree requests, and any persisted task drawer state.
Done means: a new agent can read the shared types and understand exactly where work item data comes from versus where execution happens.
2. Provider Routing And Task Data
- [~] Update GitHub issue/PR listing to accept an explicit TaskSourceContext instead of deriving from selected repo, path, or active runtime state.
- [~] Update GitHub drawer mutations such as comment, state change, assignment, label, branch creation, and review actions to preserve the same source context as the list item.
- [~] Update GitHub cache keys to include provider identity and source host/runtime identity so two hosts with different GitHub accounts cannot collide.
- Update GitLab IPC/preload/main handlers to accept explicit project/source context instead of path-only selectors.
- [~] Guard or retire GitLab path-only fallbacks where they can mutate or fetch from the wrong host.
- Update Linear routing to use an explicit source account/workspace context instead of settings.activeRuntimeEnvironmentId.
- Update Jira routing to use an explicit source account/site/project context instead of settings.activeRuntimeEnvironmentId.
- [~] Add provider diagnostics that show which host/account/site a task source is using.
- [~] Add error states for unavailable source hosts, missing provider auth, unsupported provider on host, and version-skewed remote servers.
Done means: if Machine A and Machine B have different provider accounts, every list and mutation goes through the user-selected source context.
3. Tasks UI
- [~] Add an explicit source-context picker or display for Tasks that can represent host, provider account, and project/source.
- [~] Decide and implement the default Tasks view when a logical project exists on multiple hosts.
- [~] Support switching the task source without changing the current run host.
- [~] Show enough account/host metadata to make mismatched GitHub/GitLab/Linear/Jira accounts understandable.
- [~] Persist task source context in task drawer URLs/state so refresh, deep links, and reopen preserve the same source.
- [~] Ensure task drawer actions reuse the drawer item source context, not a global provider default.
- [~] Add disabled/auth-needed/disconnected states for source hosts.
- Add empty states explaining when a project has no configured task source on the selected host.
Done means: users can tell where Tasks are being fetched from, and changing execution host does not silently change provider data.
4. New Workspace Modal, Start Work, And Workspace Creation
- Split “start from task/issue/PR” source context from workspace run target in New Workspace modal state.
- [~] When opening the New Workspace modal from Tasks, preselect the logical project and a reasonable run host without treating the source repo as the only execution target.
- Ensure pending worktree/workspace creation persists both the source task context and selected run host.
- Make “create workspace on host” only show hosts where the project has a ProjectHostSetup.
- Keep “add project to host” as the path for making a project available on another host; do not present workspace creation as if Orca is responsible for bootstrapping repos/dependencies.
- Update clone/browse/create project flows so selected host is not repeated as a fake editable SSH field.
- Ensure clone destination defaults are human and host-appropriate, and allow changing the clone location where the host supports it.
- Improve clone error messages for existing destination paths with the actual path and next action.
- [~] Ensure PR/MR base resolution uses source context for provider data and run host context for local/remote git commands.
Done means: starting work from an external item carries the item’s source identity separately from where the agent will run.
5. Automations
- [~] Migrate Automation.projectId away from repo-id semantics toward logical project id plus explicit run host/project host setup.
- Store automation source context separately from automation run context.
- Snapshot source context and run context on each automation run for auditability and retry safety.
- Update automation dispatch/precheck code to validate selected run host availability and project host setup.
- Verify automation live lookups do not use ambient settings: current Orca automations do not fetch issue/PR/task lists during dispatch, and branch/base-ref lookup routes through the selected repo host.
- Update session reuse logic so an automation never resumes on the wrong host.
- [~] Add disabled states for disconnected run host, missing project host setup, missing source auth, unavailable source tool, and unsupported provider.
- Add migration behavior for old automations that only know a repo id/path.
- [~] Update CLI/RPC automation APIs with v2 selectors for logical project, source context, and run host.
Done means: scheduled or manual automations behave predictably when a project exists on multiple hosts or providers differ by host.
6. Settings, Accounts, And Host Ownership
- [~] Clarify which settings are client-owned versus host-owned.
- [~] Add host/account selectors to provider settings where credentials may differ by host.
- [~] Make provider rate limits, diagnostics, and “current account” views show their host/source context.
- Audit source-control AI, agent defaults, command defaults, and model selections for whether they should be client-global or host-scoped.
- Preserve existing Windows/WSL-style setting patterns where they already solve host-specific settings.
- Ensure remote server version/capability information is visible enough to explain unavailable controls.
Done means: settings pages no longer imply one global provider/account when the action may be host-owned.
7. Cache, Request Ownership, And Runtime Compatibility
- [~] Audit caches keyed by repo id, path, owner/repo, or active runtime and add host/source identity where needed.
- [~] Ensure request ownership is explicit for provider fetches, provider mutations, file-system calls, git calls, terminal calls, and automation runs.
- [~] Add capability negotiation for remote servers so new clients can degrade gracefully with older servers.
- [~] Add version-skew UX for unsupported source-context or host-context APIs.
- Ensure SSH hosts and remote servers expose comparable availability/health states to the UI.
- Keep future cloud VM support as a host capability model, not a separate user-facing mental model.
Done means: no background request can accidentally use the wrong host because it fell back to global state.
8. Sidebar And Project Host UX
- Verify sidebar only shows host entries for projects that actually exist on those hosts.
- Verify disconnected hosts are visually disabled and not selectable when selection would fail.
- Keep local-only users in the low-jarring path: no unnecessary host chrome when only one local host exists.
- Preserve workspace drag/reorder behavior and host-section drag behavior after project-first host changes.
- Verify collapsed/expanded host behavior is stable while dragging.
- Ensure host labels, counts, and status indicators are visually calm and aligned with docs/STYLEGUIDE.md.
Done means: the sidebar reflects project availability, not every configured SSH target, and disconnected states are understandable.
9. CLI, Remote Server, SSH, And Cloud-Ready Host APIs
- [~] Add CLI selectors for logical project, project host setup, source host/context, and run host.
- Keep SSH and remote server behavior represented as host capabilities rather than separate product concepts.
- Ensure remote server mode can still support users who want the desktop client to behave like “the server” when explicitly configured.
- Ensure SSH remains the lightweight “execute on this machine over SSH” path.
- [~] Ensure remote server remains the durable runtime path for web/mobile handoff, background work, and richer server-owned state.
- Note cloud VM provisioning as future host onboarding/provisioning work, not a requirement for this PR.
Done means: Local, SSH, remote server, and future cloud VMs share one Host model while keeping their different capabilities clear.
10. Verification Matrix
- Unit-test source-context serialization, cache keys, and provider routing.
- Unit-test automation migration from repo-id/path-based records.
- Unit-test workspace creation selectors for logical project plus host setup.
- Integration-test local project with local provider credentials.
- Integration-test SSH project setup, clone/browse/create flows, and workspace creation.
- Integration-test project available on local and SSH hosts, then create workspaces on each host.
- Integration-test task source on Host A with workspace run on Host B.
- Integration-test two hosts with different GitHub accounts and verify issue/PR lists and mutations use the selected source.
- Integration-test GitLab where path-only selectors previously existed.
- Integration-test Linear/Jira with explicit source account selection.
- [~] Integration-test automations on local host, SSH host, and remote server where supported.
- [~] Integration-test disconnected host UX for Tasks, New Workspace modal, sidebar, and automations.
- Integration-test new client with older remote server and older client with newer server where practical.
- [~] Electron-test Add Project flows: browse folder, clone URL, and create project from scratch on local and SSH hosts.
- [~] Electron-test workspace options and sidebar host filtering.
- [~] Electron-test Tasks source picker/display and task drawer mutations.
- [~] Capture screenshots for all important UX states in a dark-background HTML report.
Done means: the test report demonstrates the complete user journey, including local, SSH, multi-host project, task source, automation, disconnected, and version-skew states.
11. Documentation And PR Evidence
- Update the main design doc with source context versus run host boundaries.
- Update PR description with exact completed scope and explicit out-of-scope items.
- Link this checklist from the PR or implementation notes.
- Keep evidence screenshots out of git and attach/report them through approved PR channels.
- Add plain-English release note copy for the Host model only after UX is verified.
Done means: reviewers and future agents can understand the vision, implementation state, verification evidence, and remaining risk without reconstructing this conversation.
Implementation Log
- 2026-06-12: Added shared TaskSourceContext and WorkspaceRunContext types, normalization helpers, cache-scope helpers, and unit coverage.
- 2026-06-12: Added automation source/run context fields and snapshots on AutomationRun creation while preserving legacy repo-id projectId behavior.
- 2026-06-12: Let Linear and Jira runtime clients accept TaskSourceContext while keeping legacy activeRuntimeEnvironmentId callers working.
- 2026-06-12: Let GitHub work-item fetch accept an explicit GitHub TaskSourceContext for runtime routing and host-scoped cache ownership.
- 2026-06-12: Persisted taskSourceContext in New Workspace draft state for linked GitHub work items.
- 2026-06-12: Added automation CLI project/host/project-host-setup target resolution and runtime RPC context pass-through.
- 2026-06-12: Added GitLab repoId/sourceContext support to preload and main IPC handlers with source-host validation.
- 2026-06-12: Verified with focused Vitest coverage for shared context, persistence automations, GitHub work-item routing, CLI automation routing, runtime automation RPC, plus full pnpm run typecheck.
- 2026-06-12: Wired TaskPage GitLab lists/todos and GitLabItemDialog detail/mutation calls through repoId/sourceContext, then verified web/node/full typechecks plus focused shared/GitLab/GitHub/automation/persistence/CLI tests.
- 2026-06-12: Wired GitHubItemDialog repo-scoped details/comments/review comments/viewed state/reviewer requests/PR actions/check refreshes/issue metadata edits through sourceContext, added a GitHub IPC host-mismatch regression test, and verified GitHub-focused tests plus full typecheck.
- 2026-06-12: Updated GitHub work-item cache keys to preserve full task source scope, including provider identity, and added regression coverage for two GitHub identities on the same host.
- 2026-06-12: Added taskSourceContext to the New Workspace modal handoff and seeded it from GitHub/GitLab Tasks so start-work source identity survives independent of run-host selection.
- 2026-06-12: Updated TaskPage cached work-item reads/selectors to use the same GitHub source cache scope as fetches, preventing source-scoped fetches from disappearing from the cached UI path.
- 2026-06-12: Added automation run-target validation before dispatch/precheck so missing, stale, or non-ready project host setups are skipped with clear errors instead of launching on the wrong host; verified with automation service tests, focused persistence tests, and full typecheck.
- 2026-06-12: Updated renderer automation dispatch to create new workspaces from the stored run-context repo and reject existing-workspace dispatches whose workspace repo does not match the run host target; verified with web and full typecheck.
- 2026-06-12: Updated Automations list/detail/edit read paths to prefer the saved run-context repo, so multi-host automations reopen and display against their selected host instead of the legacy projectId repo; verified with web typecheck.
- 2026-06-12: Added a Tasks source-context summary chip showing provider plus host/account/project context for GitHub, GitLab, Linear, and Jira; verified with focused summary tests and web typecheck.
- 2026-06-12: Verified New Workspace host selection only renders ready project-host setup options and ignores non-ready selections; covered by project-host setup option and combobox tests.
- 2026-06-12: Verified Add Project clone/browse/create flows keep the selected host as context instead of a redundant SSH selector, preserve editable host-appropriate clone destinations, and now convert existing-destination clone failures into path-aware next-action copy; verified with Add Project UI and clone failure tests.
- 2026-06-12: Verified workspace creation selectors resolve logical project plus focused host/project-host setup targets, including explicit setup IDs and unavailable setups; covered by project-host workspace target and project option tests.
- 2026-06-12: Scoped GitHub Project view cache and in-flight request keys by local/runtime source scope, and scoped Project view wrapper cache lookups/view-list state accordingly; verified with a runtime-vs-local cache regression test and web typecheck.
- 2026-06-12: Added SSH source-host availability to the Tasks source summary so disconnected, reconnecting, and auth-needed source hosts are visible without changing the run-host selection; verified with focused summary tests and web typecheck.
- 2026-06-12: Preserved GitHub task detail source context in Tasks open payloads, back/forward history entries, and replay state so a reopened detail does not fall back to ambient host selection; added a same-item/different-source-host history regression and verified with UI/history slice tests plus web typecheck.
- 2026-06-12: Updated GitHub Tasks warm prefetch to accept and forward TaskSourceContext so direct task-detail opens warm the same source-scoped cache that the mounted page reads; verified with UI slice and GitHub source/cache-focused tests plus web typecheck.
- 2026-06-12: Added Automations run-target availability checks for manual runs, disabling/explaining Run Now when the project/workspace is missing, the saved run context no longer matches the host setup, the host is an unsupported runtime target, or the SSH host is disconnected/auth-needed/connecting; verified with focused availability tests and web typecheck.
- 2026-06-12: Threaded repoId through hosted-review creation eligibility and creation so PR creation validates the exact project host setup instead of falling back to path-only repo lookup; added a main-process repoId/path mismatch regression and verified hosted-review IPC/store tests plus full typecheck.
- 2026-06-12: Added Linear/Jira Settings account-scope diagnostics showing whether provider credentials and account checks are owned by the local desktop client or the selected remote server; verified with provider account-scope tests and web typecheck.
- 2026-06-12: Added repo-backed Tasks empty-state copy that distinguishes missing project sources from no matching GitHub/GitLab work, then verified with focused empty-state tests and web typecheck.
- 2026-06-12: Fed Tasks source-context diagnostics from the shared execution-host registry so the source chip now reports SSH availability and blocked/incompatible remote-server hosts; verified with summary tests and web typecheck.
- 2026-06-12: Extended Linear/Jira Tasks source diagnostics to include the account-owning host plus blocked remote-server availability, keeping account source separate from workspace run host; verified with summary tests and web typecheck.
- 2026-06-12: Started the user-facing Host copy audit by replacing stale “remote project” and “Remote SSH” UI labels with project-on-host / SSH-host language; verified with web typecheck.
- 2026-06-12: Re-ran the broader focused host-context suite covering source summaries, empty states, execution-host registry, project-host setup options/combobox, settings setup options, and automation target availability; 7 files / 34 tests passed plus full pnpm run typecheck.
- 2026-06-12: Added a safer automatic Tasks repo default that selects one source per logical GitHub project, preferring local when the same project exists on multiple hosts while preserving explicit/manual multi-host selection; verified with default-selection tests and web typecheck.
- 2026-06-12: Fixed logical project projection for legacy repos whose GitHub
upstreamwas missing by using repo-icon GitHub slug metadata as a provider-identity fallback; verified withproject-host-setup-projection.test.ts. - 2026-06-12: Repaired worktree discovery/backfill so existing workspace metadata upgrades from legacy repo-scoped project IDs to provider-backed logical project IDs when the project-host setup is the same, including SSH metadata fallback rows while preserving cached display/activity/sparse metadata; verified with
worktrees.test.tsand fullpnpm run typecheck. - 2026-06-12: Re-verified the live Electron/SSH scenario after relaunch: one logical GitHub project has local and SSH project-host setups, stale SSH main-worktree metadata repairs to
github:stablyai/orca, a workspace can be created on SSH, and another workspace can be created on Local Mac from the same project; screenshots saved undernotes/artifacts/. - 2026-06-12: Verified disconnected SSH metadata fallback in Electron: SSH worktrees remain visible from persisted metadata with repaired logical project ownership, the status area reports
SSH Disconnected, the user sees a reconnect dialog, and project create controls are disabled while disconnected; screenshot saved undernotes/artifacts/host-context-disconnected-ssh-metadata-fallback.png. - 2026-06-12: Verified Add Project on SSH through the real Electron UI: selected an SSH host once, confirmed browse/clone/create screens do not show a redundant SSH-target field, cloned a throwaway Git repo into
/home/orca/add-project-clones, and created a new Git project in/home/orca/add-project-created; verified remote filesystem and Orca project-host setup state. - 2026-06-12: Cleaned Add Project copy from stale “server folder/filesystem/path” wording to host-language where the UI applies to SSH, remote server, and future cloud hosts; verified with focused AddRepo tests, typecheck, and live screenshot
notes/artifacts/host-context-add-project-ssh-create-screen-host-copy.png. - 2026-06-12: Refreshed
notes/multihost-remote-verification-report.htmlwith the current dark-background evidence set for logical project repair, New Workspace host selection, disconnected SSH fallback, SSH clone, SSH create project, and sidebar state after Add Project flows. - 2026-06-12: Fixed Tasks React maximum-depth crashes by making repo-owner runtime settings selectors shallow-stable and preventing same-key GitHub slug metadata hooks from writing no-op cached/loading state; verified with a focused hook regression,
repo-runtime-owner.test.ts, full typecheck, and live Electron Tasks rendering. - 2026-06-12: Fixed New Workspace
Run onswitching so changing project-host setup inside the same logical project preserves the selected GitHub/GitLab task source instead of degrading to plain text; verified live by starting from GitHub issue#5200, switching run host from Local Mac to SSH, and confirming the issue card remained selected. - 2026-06-12: Created a task-started SSH workspace from the live Tasks page at
/home/orca/task-ssh-source-local-163115; verified the remote worktree exists and the sidebar showsLinked issue #5200, with screenshots added tonotes/multihost-remote-verification-report.html. - 2026-06-12: Verified Automations with SSH connected but Hermes unavailable on the remote PATH; changed the UI from misleading
Connect SSHcopy toSource unavailableplusRetry source, and captured the corrected state in the dark-background report. - 2026-06-12: Verified repo-backed Tasks empty-state copy for no selected project sources with
task-page-empty-state.test.ts, covering the user-facing fallback when no host/account source is available for GitHub/GitLab work. - 2026-06-12: Updated
notes/project-first-host-model.mdwith the explicitTaskSourceContextversusWorkspaceRunContextboundary, current task/automation implementation status, and remaining verification gaps; this checklist remains the detailed implementation tracker linked from the design-doc evidence set. - 2026-06-12: Continued the Host copy audit by replacing the remaining English Add Project/sidebar “remote project” and “Remote SSH” labels with project-on-SSH-host / SSH-host wording, then verified focused Add Project tests and full
pnpm run typecheck; non-English locale placeholders still need the normal localization bootstrap pass. - 2026-06-12: Re-verified the New Workspace run-host path only exposes ready project-host setups, so hosts where the project does not exist are not selectable from workspace creation; covered by
ProjectHostSetupCombobox,project-host-setup-options, andproject-host-workspace-targettests. - 2026-06-12: Re-ran focused sidebar host tests: host headers are suppressed when only one host has visible workspaces, registered-but-empty/disconnected hosts do not create sidebar sections, SSH connection status flows to host headers, and drag mode can temporarily collapse host sections without mutating persisted collapse state; 8 sidebar files / 146 tests passed.
- 2026-06-12: Tightened Add Project host selection so disconnected/error/blocked hosts stay visible but disabled instead of being selectable; verified with focused Add Project host selector/start tests and full
pnpm run typecheck. - 2026-06-12: Added
CreateFromPickerhost-routing regression coverage for Automations branch/base-ref lookup, proving runtime-owned repos query their owner runtime and explicit local repos stay local even when another runtime is focused; verified alongside persistence and automation service tests. - 2026-06-12: Tightened the project-first design doc so host-aware Add Project is the current path for browse/import, clone, and create, while bulk setup and cloud VM provisioning are future host-onboarding work. Re-verified shared host-model tests covering local/SSH/runtime host kinds, runtime capability gating, SSH reconnect/disconnect actions, host settings overrides, and task source host scopes.
- 2026-06-12: Live-verified Add Project disconnected-host UX in Electron by simulating the SSH target as disconnected in renderer state: the Host picker defaulted to Local Mac and showed the SSH host as a disabled muted row; restored SSH to connected and added screenshot evidence to
notes/multihost-remote-verification-report.html. - 2026-06-12: Audited Settings ownership for Source Control AI defaults, repository Source Control AI overrides, agent launch defaults, quick commands, workspace directories, and provider accounts; added a tested settings-ownership helper and surfaced the ownership language in Settings while preserving the existing Windows/WSL account and agent-location pattern. Verified with focused settings tests and web typecheck.
- 2026-06-12: Improved remote-server Settings version-skew diagnostics by showing the exact compatibility explanation plus named runtime capabilities instead of only a capability count; verified with
RuntimeEnvironmentsPanetests and web typecheck. - 2026-06-12: Polished sidebar host headers from card-like rows into quieter sidebar grouping rows while keeping explicit SSH/status/count text; verified with focused sidebar tests, web typecheck, and live Electron screenshot
notes/artifacts/host-context-sidebar-calm-host-headers.png. - 2026-06-12: Added a narrow
.gitignorerule fornotes/artifacts/so verification screenshots stay local while the HTML report can reference them; verified withgit check-ignore. - 2026-06-12: Added
taskSourceContextandworkspaceRunContextto retryable pending worktree creation requests, seeded them from the Composer's selected task source and project-host setup, and verified the pending store preserves both identities with focused worktree tests plus web typecheck. - 2026-06-12: Updated PR #5071 with the current verified scope, evidence docs, validation commands, explicit out-of-scope cloud/onboarding items, and remaining provider/version-skew risk.
- 2026-06-12: Added load-time backfill for legacy automations and automation runs that predate
runContext/sourceContext, deriving explicit project host and provider source contexts from the saved repo id/path; verified with focused persistence migration coverage, automation service/precheck tests, daemon/settings merge-repair tests, and fullpnpm run typecheck. - 2026-06-12: Repaired the merge-repair lint gate without disabling max-lines by extracting automation run-target/usage modules and settings subcomponents, fixed stale source-context hook dependencies, and tightened GitHub PR checks cache ownership so
noCachebypasses cache/in-flight requests while head-specific checks are reused during refresh events; verified targeted oxlint, focused automation/settings/GitHub cache tests (10 files / 157 tests),github-checks-cache.test.ts,git diff --check, and fullpnpm run typecheck. - 2026-06-12: Preserved the explicit remote-server focus path as Settings → Active Server, with copy explaining that selecting a saved server makes it the default Host for server-routed projects, files, terminals, provider accounts, and browser/mobile handoff rather than introducing a separate Focused Host Mode; verified with
RuntimeEnvironmentsPane.test.ts. - 2026-06-12: Added persisted context migration notes to
notes/project-first-host-model.mdcovering old automations/runs, legacyAutomation.projectId, cached task selections, retryable pending workspace creation requests, and task drawer/navigation replay state. - 2026-06-12: Completed source-context unit coverage by adding GitLab/Linear/Jira provider identity cache-scope serialization tests and rerunning shared source-context, GitHub source/cache routing, UI open-task, and task-navigation history suites (6 files / 261 tests) plus targeted oxlint.
- 2026-06-12: Reconciled Add Project host-selection tests with the disabled-host UX: disconnected SSH hosts and blocked runtime hosts remain visible but disabled, the hook falls back to Local Mac instead of selecting a disconnected SSH host, and selection handlers ignore unavailable hosts; verified Add Project host selector/selection/dialog, sidebar host options, and execution-host registry tests (5 files / 34 tests) plus targeted oxlint.
- 2026-06-12: Re-verified project-first drag/reorder behavior across workspace manual order, drag units, workspace-board pointer drops, host-section order/rows, repo reorder host splitting, and project-header drag helpers; 9 files / 62 tests passed plus targeted oxlint.
- 2026-06-12: Routed Linear and Jira Tasks reads, create flows, list/detail mutations, comments, metadata, and New Workspace handoff through explicit account-backed
TaskSourceContextwhile preserving legacy focused-runtime cache keys for old callers; verified with Linear/Jira source-routing regressions, focused Linear/Jira slice tests (2 files / 48 tests), targeted oxlint,git diff --check, and fullpnpm run typecheck. - 2026-06-12: Preserved Linear task detail source context in
openTaskPagedata, back/forward history entries, history de-dupe keys, and Linear warm prefetch so direct detail opens replay the same account/host source instead of recomputing from focused settings; verified with UI/history tests (2 files / 131 tests) and fullpnpm run typecheck. - 2026-06-12: Scoped GitHub Tasks partial-failure retry ownership to the selected source cache scope instead of
repoPath, so same-project/same-path multi-host failures cannot make the wrong source banner look in-flight; verified withtask-page-cache-selectors.test.ts, targeted oxlint, and fullpnpm run typecheck.