Skip to content

feat(release): complete v0.1.1 attention controls [release:v0.1.1]#4

Merged
tcballard merged 1 commit into
mainfrom
codex/v0.1.1-authored-settings
Jul 16, 2026
Merged

feat(release): complete v0.1.1 attention controls [release:v0.1.1]#4
tcballard merged 1 commit into
mainfrom
codex/v0.1.1-authored-settings

Conversation

@tcballard

@tcballard tcballard commented Jul 15, 2026

Copy link
Copy Markdown
Owner

Summary

Implements the complete v0.1.1 attention-controls contract.

Adds:

  • Self-explanatory menu-bar state language in Settings
  • Settings-first onboarding with visible agent, event, and GitHub health
  • Native global-shortcut recording with live registration
  • Clear temporary snooze versus Hide Until It Changes behavior
  • A bounded local recent-signals history for lightweight diagnosis
  • Persistent native disclosure controls for information-heavy Settings groups
  • Bundle and release metadata updated to 0.1.1

Scope

Included

  • Teaches Needs you, review numbers, CI!, and quiet icon-only states in Settings.
  • Opens Settings on first launch instead of showing an integration alert.
  • Detects complete, partial, and missing Claude/Codex hook installation.
  • Shows the most recent durable agent event and GitHub CLI authentication state.
  • Replaces the key picker/modifier buttons with a focused AppKit shortcut recorder.
  • Supports capture, Escape cancel, Delete clear, live registration, and registration errors.
  • Renames Dismiss This Item to Hide Until It Changes.
  • Persists the eight newest signals and displays the five newest in Settings.
  • Splits the Settings surface into focused SwiftUI section types.
  • Makes status, health, repository, and recent-signal groups collapsible while keeping Controls visible.
  • Makes the development run script terminate the stale app before relaunching.
  • Bumps CFBundleShortVersionString to 0.1.1 and CFBundleVersion to 2.

Excluded

  • No change to the native NSStatusItem architecture.
  • No default global shortcut; shortcut use remains opt-in.
  • No change to GitHub review/CI ordering, wait-gating, or polling cadence.
  • No full dashboard, analytics, or remote telemetry.
  • No automatic modification of an existing Claude status line.
  • No Liquid Glass or macOS 15+ visual dependency.
  • No broader v0.2 product redesign.

Product / Architecture Decisions

  • Kept the menu-bar chip as the signature interaction and made trust the Settings signature: state language, health, and recent evidence form one compact trail.
  • Kept SwiftUI as the source of truth and crossed into AppKit only for the shortcut recorder; Carbon remains isolated to global shortcut registration.
  • Stores recent signals locally in a bounded UserDefaults payload and coalesces immediate duplicates.
  • Writes a hidden durable latest-event snapshot alongside active session files so health survives stale-session cleanup.
  • Treats partial hook installation or malformed hook settings as Needs review, not as healthy.
  • Uses semantic system colours and macOS 14 controls/materials; red and orange remain attention states rather than decoration.
  • Persists disclosure choices with app preferences so Settings restores the user’s preferred density.

User-Facing Contract

Menu Bar

  • Needs you: an agent is blocked on the user.
  • #78: a review is ready while an agent works.
  • CI!: failing CI is ready while an agent works.
  • Icon only: nothing needs attention.
  • Snooze for 15 Minutes: temporarily hides the current item.
  • Hide Until It Changes: suppresses that source item until it leaves the active set.

Settings

  • First launch opens Settings with setup status and one Install or Update… action.
  • Connection health reports agent hooks, the latest agent event, and GitHub authentication.
  • Shortcut recording accepts a modified letter, digit, Space, Tab, Return, or Escape.
  • Escape alone cancels recording; Delete clears the shortcut.
  • Recent signals show agent, review, CI, snooze, hide, and installation activity.
  • Repository scope remains configurable in the same window.
  • Status, health, repository, and recent-signal groups can be expanded or collapsed and remember their state.

Privacy

  • Hook events, the latest-event snapshot, preferences, and recent signals stay local.
  • No GitHub token is read or stored by Meanwhile.
  • No telemetry was added.

Verification

Ran

swift test
./Scripts/run-meanwhile.sh
plutil -extract CFBundleShortVersionString raw dist/Meanwhile.app/Contents/Info.plist
codesign --verify --deep --strict --verbose=2 dist/Meanwhile.app
git diff --check

Covered

  • 40 Swift tests passed.
  • Complete, partial, and missing hook-health states.
  • Durable latest-event storage after active-session cleanup.
  • GitHub CLI authentication success and failure.
  • Bounded and duplicate-coalesced recent-signal persistence.
  • Debug packaging, ad-hoc signing, bundle verification, and launch.
  • Live shortcut capture (⌃⌥Space), Escape cancel, Delete clear, and restoration to ⌘M.
  • Running Settings window reviewed in light appearance with repository, populated recent-signal, and authenticated health data.
  • All four disclosure groups exercised expanded and collapsed, including persistence across app relaunch.

Review Path

Suggested review order:

  1. docs/v0.1.1-authored-settings.md and the Settings section composition.
  2. First-run, menu semantics, and recent-signal wiring in MeanwhileApp.swift.
  3. Integration/event/GitHub health models in MeanwhileCore.
  4. ShortcutRecorder.swift and GlobalHotKey.swift.
  5. Persistence tests, README, version metadata, and run-script relaunch behavior.

Notes For Reviewer

The shortcut is opt-in. Existing config-file hotkeys remain a fallback until the user records or clears a shortcut in Settings. The local audit-screenshots/ directory is intentionally excluded from the PR.

@tcballard
tcballard force-pushed the codex/v0.1.1-authored-settings branch 4 times, most recently from d1a192d to b60961a Compare July 15, 2026 17:44
@tcballard tcballard changed the title feat(release): add authored settings direction [release:v0.1.1] feat(release): add authored settings and hotkey config [release:v0.1.1] Jul 15, 2026
@tcballard
tcballard force-pushed the codex/v0.1.1-authored-settings branch from b60961a to 7cc3bb3 Compare July 15, 2026 21:34
@tcballard tcballard changed the title feat(release): add authored settings and hotkey config [release:v0.1.1] feat(release): add authored settings controls [release:v0.1.1] Jul 15, 2026
@tcballard
tcballard marked this pull request as ready for review July 16, 2026 04:56
@tcballard
tcballard force-pushed the codex/v0.1.1-authored-settings branch from 7cc3bb3 to c28397a Compare July 16, 2026 06:20
@tcballard tcballard changed the title feat(release): add authored settings controls [release:v0.1.1] feat(release): complete v0.1.1 attention controls [release:v0.1.1] Jul 16, 2026
@tcballard
tcballard force-pushed the codex/v0.1.1-authored-settings branch from c28397a to 5841ab7 Compare July 16, 2026 06:26
Completes the v0.1.1 attention-product contract:
- teaches the menu-bar state language in Settings
- opens Settings for first-run integration setup
- reports agent-hook, last-event, and GitHub health
- records global shortcuts through a native AppKit control
- renames dismiss to Hide Until It Changes
- keeps a bounded local recent-signals history

Also bumps the app bundle to 0.1.1 and makes the development run script relaunch the rebuilt app reliably.

Verification:
- swift test (40 tests)
- ./Scripts/run-meanwhile.sh
- codesign --verify --deep --strict --verbose=2 dist/Meanwhile.app
- live shortcut capture, cancel, clear, and restore
@tcballard
tcballard force-pushed the codex/v0.1.1-authored-settings branch from 5841ab7 to c4c7e28 Compare July 16, 2026 06:51
@tcballard
tcballard merged commit 8081036 into main Jul 16, 2026
1 check passed
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