Skip to content

[Epic] Windows Phase 9 — final parity push (APIService, self-compact loop, multi-assistant, browser, gaps) #127

Description

@Aryansharma28

Goal

Close the remaining gaps between the Windows Tauri port (`windows/`) and the macOS Swift app (`Sources/`). After Phase 9 lands, the only intentional divergence will be platform-specific shell (Liquid Glass, NSStatusItem tray, SwiftTerm, Amphetamine, LidStateDetector) and explicit out-of-scope items (ConversationMarkdownExporter, SessionMigrator).

Phases 0–8 — already shipped

Current main: `770c5e4`

Phase 9 sub-issues

Land each as its own PR off `main`. PRs should target `main` directly — there is no integration branch for Phase 9.

Recommended order

  1. [Phase 9] feat(windows): standalone parity gaps — lastOpenedAt, channel reorder, bulk kill, checkpoint affordance #126 first — small mechanical wins, builds confidence with the codebase
  2. [Phase 9] feat(windows): APIService entity + per-card endpoint binding #122 — small/medium, prerequisite for [Phase 9] feat(windows): multi-assistant — Codex + Gemini adapter suites #124
  3. [Phase 9] feat(windows): self-compact generation loop + Claude Code statusline #123 in parallel with [Phase 9] feat(windows): APIService entity + per-card endpoint binding #122 — no dependency
  4. [Phase 9] feat(windows): multi-assistant — Codex + Gemini adapter suites #124 after [Phase 9] feat(windows): APIService entity + per-card endpoint binding #122 lands
  5. [Phase 9] feat(windows): embedded browser tabs subsystem #125 any time — independent, but largest single chunk

Working agreement

  • macOS sources under `Sources/` are read-only reference — all changes land in `windows/`
  • Each issue gets its own worktree branch off `origin/main`
  • Verify loop: `cd windows && npm run build` AND `cd windows/src-tauri && cargo build` both green; `cargo test` for any new modules; no unit is "done" without evidence
  • Conventional Commits — release-please uses these for changelog generation
  • Don't skip pre-commit hooks (`--no-verify`); investigate and fix the underlying issue if a hook fails
  • Out-of-scope items are listed in each sub-issue's "Out of scope" section — respect those deliberately

Out of scope for the whole epic

  • Liquid Glass UI, NSStatusItem tray, SwiftTerm, Amphetamine, LidStateDetector (macOS-only stack)
  • ConversationMarkdownExporter (copy-conversation-as-markdown) — intentional divergence
  • SessionMigrator (cross-assistant migration)
  • ImageSender's tmux clipboard-paste loop — Windows uses the markdown-ref fallback (Phase 8 covers this)
  • `discoveredRepos` on Link (intentionally dropped — see `merge_ops.rs` rationale)
  • Native `TmuxLink` struct (Windows uses WSL tmux; `manual_overrides.tmux_session` covers the override case)
  • `MessageSource.External` enum case

Notes for agents

Each sub-issue body is self-contained — an agent picking one up has enough context from the issue alone. Read the issue, check the latest `main`, and start. Look at the file paths referenced in each issue's "macOS reference" + "Windows scope" sections — those are the breadcrumbs.

When in doubt about a divergence: prefer mirroring macOS (it's the reference) unless the issue body explicitly says otherwise.

Metadata

Metadata

Assignees

No one assigned

    Labels

    relevance-checkedExamined by kanban relevance audit with no close signal this cycle

    Type

    No type

    Projects

    Status
    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions