Skip to content

Implement optional Tray residency and new archive drafts - #295

Merged
skyswordw merged 5 commits into
mainfrom
codex/tray-functional-followups
Nov 6, 2026
Merged

skyswordw merged 5 commits into
mainfrom
codex/tray-functional-followups

Conversation

@skyswordw

@skyswordw skyswordw commented Nov 5, 2026 •

Copy link
Copy Markdown
Member

Integrated validation

Merged into main in sequence #295–#300. Final main commit 7c5393672d028f31bc76f83911a02e1407a53cf7 has the same file tree as tested integration commit 8fb4dda. Review fixes: ae3547d clears pending quit intent after failed/cancelled draft creation; 7de295e prevents stale draft jobs from being replayed by another window. Both have regression coverage. Full local validation passed 687 tests in 102 suites with zero failures/skips, 0/1,261 missing zh-Hans strings, unchanged generated plists and clean diff checks. Bounded native CUA/AX draft creation and Search Clear/Close checks passed, including independent ZIP byte verification; this is not VoiceOver testing. See the review comment for scope and remaining native checks. Final main CI and the integrated #300 snapshot run supersede cancelled intermediate reruns.

Stow currently keeps running after every window closes, has no Tray master switch or status-menu management actions, and routes New Archive straight to a source picker. This adds optional Tray residency and an editable new-archive draft, while keeping quick Pack for already-collected files. It also fixes a stale drag-state path that required an extra outside click, adds explicit Close Search, and replaces the primary sample entry with Create/Settings and an opt-in sample download.

Behavior

  • Tray has a dedicated settings page and master switch. Fresh installs opt in; existing effective availability is migrated once. Turning it off removes listeners/hints/icon without clearing collected data. No inactivity timer returns. The native right/Control-click menu distinguishes Open Tray, Open Stow, Create, Settings and Quit.
  • Window handovers, Glance, minimized windows, owned prompts and active work are accounted for before deciding residency or termination. Explicit Quit preserves unsaved work and refuses to kill running operations. Accepted Browser operations retain their source scope and can be reopened; failed background work remains available for recovery.
  • Welcome, Command-N and the status menu share one unsaved archive draft. Real sources support add/remove/subtree removal, Undo/Redo, collision naming, cancellation and missing-source checks. Saving reuses the existing compatibility, encryption/splitting, destination/collision and packing engine. Success opens the real output; cancellation/failure keeps the draft. Quick Pack remains available.
  • Search Close clears/collapses and restores file focus; Clear still keeps the field open. Release builds omit Sample fixtures, while Debug retains deterministic fixtures. Download Sample opens a verified immutable official ZIP in the browser; no main-app network entitlement or synthetic production fallback is added.

Validation and limits

  • Original pre-review head 0f79119: all CI checks passed (build-test, Universal 2, package and snapshots). CI ran 685 tests in 102 suites, with 0/1,232 missing zh-Hans strings and clean generated plists. Local ownership/lifetime/draft follow-ups passed 26 focused tests. Release has no Sample folder; 12 Mach-O binaries passed Universal 2 validation.
  • Ad-hoc packaging dry run completed: app/DMG verification reported 0 problems, and the packaged app rendered Welcome successfully. The package script removes development entitlements before verification; this is not a signed/notarized release.
  • Native checks before the final ownership-guard refinements, in a separate ad-hoc QA bundle without Finder/Quick Look plugins: empty/populated draft, source selection, Remove/Undo, Command-S, cancel preserving files/name, changed-draft close/Cancel, actual ZIP creation and automatic Browser open, search filtering/Close/keyboard recovery, Tray enable/disable/shortcut, and explicit Quit. Independent ZIP reading matched the source bytes. Downloaded sample bytes matched the pinned source SHA-256.
  • The exact reported physical two-click sequence, cross-app pointer/drag cases, actual menu-bar right-click, the complete last-window/PID/Dock matrix, signed Finder/Services/Quick Look and login integration, and IME/system-display checks are still unverified. CUA background window/key-state limits made ordinary Settings close input inconclusive. These are not VoiceOver test results.

Ownership: Codex / Grok Bot owns this functional state/routing/security/test work. Claude Code owns final visual design and motion; the new draft and settings views are functional scaffolding, not visual approval. Keep the design/remaining acceptance issues open for their owners. The current Pack sentence is not a required composition for the new draft UI.

See the functional handoff for APIs, migration, evidence and Claude's integration points. Implements functional portions of #287, #288, #289, #290, #291, #292, #293 and #294 under #286; does not claim those issues' full visual/native acceptance is complete. Related tracking: #104, #38 and #69. Installed applications and registered extensions were not replaced.

@skyswordw skyswordw left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Functional review completed. Two recovery defects found during review were fixed in ae3547d and 7de295e: failed/cancelled Save-and-Quit no longer leaks quit intent into the next Save, and draft failures cannot replay a cached pack through another window without source refresh or draft completion. Regression tests cover both paths. No remaining merge-blocking finding from this review.

Reviewed lifetime/work retention, source scopes, draft import/save/cancel/undo, disabled-Tray routing, migration, Search Close, and Release sample separation. The integrated #295–#300 tree passed 687 tests in 102 suites (zero failures/skips), localization export (0/1,261 missing zh-Hans strings), clean generated plists and diff checks. The focused base run passed 28 tests.

An isolated ad-hoc app with a separate bundle ID and no Finder/Quick Look plugins passed CUA/AX checks for Welcome → empty draft, real Add Files, Remove/Undo, cancel preserving name/files, actual ZIP creation and automatic Browser opening. Independent ZIP readback matched the original bytes. Search Clear retained focus; Close removed a nonempty filter and arrow-key selection worked afterward; explicit Quit completed. These are AX activations/keyboard checks, not physical cross-app mouse/drag or VoiceOver acceptance.

Keep #287, #289 and #290 open for their remaining native dismissal/lifecycle/status-menu matrix, and #286 as their umbrella. Signed integration stays in #32/#38 and VoiceOver in #93. Codex owns functional review/fixes; Claude Code retains visual/motion ownership.

@skyswordw
skyswordw merged commit 5880711 into main Nov 6, 2026
3 of 4 checks passed
@skyswordw skyswordw mentioned this pull request Nov 7, 2026
9 tasks done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant