* ci(build-webview): sweep stale hashed chunks before rsync (#46)
Vite emits content-hashed asset names (e.g. `index-CXPb0I5z.js`), so the
active bundle filename rotates on every source/dependency edit. The
existing rsync runs without `--delete` (to preserve `bus-harness.html`
and `.gitignore`), so old chunks accumulated in
`App/Resources/webview/assets/` — observed 9 stale `index-*.js` /
`.js.map` pairs locally before this fix.
Add an explicit `rm -f` of the asset glob (JS + JS map + CSS + CSS map)
before the rsync drops the fresh bundle. The preserved files
(`bus-harness.html`, `index.html`, `.gitignore`) live one level up in
`$DEST`, not in `$DEST/assets`, so the rm cannot reach them.
Verified locally: `bash scripts/build-webview.sh` now leaves exactly one
`index-*.js` + `.js.map` in `assets/` (matching the reference in
`index.html`).
Refs #46
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* ci(scorecard): add OpenSSF Scorecard workflow + README badge (#178)
Adds `.github/workflows/scorecard.yml` running `ossf/scorecard-action@v2.4.0`
on:
- Weekly cron (Mondays 06:00 UTC) for posture drift detection
- Push to develop for prompt regression visibility
- workflow_dispatch for ad-hoc runs
Permissions follow the canonical Scorecard set (`id-token: write`,
`contents: read`, `security-events: write`) with top-level `read-all` and
job-scoped writes. Results are published to the OpenSSF public dataset
(powers the README badge URL) and uploaded as SARIF to code-scanning.
The workflow consumes no untrusted user inputs in `run:` blocks, so it is
not exposed to workflow-injection patterns documented in
github.blog/security/.../how-to-catch-github-actions-workflow-injections.
README.md gains the standard Scorecard badge next to the existing
license/platform/swift badges.
Refs #178
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Extracts the long-form build reference (per-package SPM tests, app-target xcodebuild wrapper, webview workflow, 18 boundary-gate linters, real-hardware env-flag tests) into BUILDING.md so the README can stay first-screen weight. Finalizes the README License section against today's MIT decision (e1fcdc5), removing the stale TODO block.
- Add assets/branding/README.md with shot list for the five high-impact
brand assets (social preview, logo, hero shot, app icon, banner) and
GitHub upload instructions for each.
- Add assets/branding/STYLE.md documenting the colour palette (cyan
family + HUD navy/black + warning/critical), typography (Eurostile /
Saira / Orbitron family for display, SF Pro for UI), and tone of
voice ("terse, technical, dryly opinionated, slightly sardonic").
- Drop five .todo placeholder files so the directory tree shows intent
without faking assets.
- Restore the README License section to a clean MIT pointer (a
concurrent agent had reverted it to "decision still open"; that
decision is now made and lives at .planning/decisions/license.md).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add status badges (license, last commit, issues, platform, Swift) under
the tagline so the GitHub card carries signal at a glance.
- Replace the "personal use only / no license granted" footer (which
contradicted the actual MIT LICENSE file committed at 9b62db5) with a
proper MIT pointer + link to the decision rationale.
- Reframe the scope paragraph: still single-user single-machine, but
acknowledge the repo is open source and useful artifacts (agent loop,
Bus, MCP, voice, HUD, boundary gates) are here for the lifting.
- Add Acknowledgments section calling out the major OSS dependencies
(Anthropic, Ollama, MCP SDK, openWakeWord, Silero, ONNX Runtime,
argmax-oss-swift, mlx-audio-swift, sqlite-vec, R3F, swift-log,
swift-nio, Yams) so credit and discoverability are explicit.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Audit-and-rewrite of root README against current truth (2026-05-12).
The previous README was accurate but list-shaped and unillustrated;
the rewrite reorients around what a new reader (human or AI agent)
needs in 60 seconds.
New / changed sections:
- Tagline + two-paragraph intro (what / who / why)
- Status banner pointing at GitHub Issues + Milestones (canonical)
- Screenshots placeholder + shot list under assets/screenshots/
- "Architecture at a glance" with a top-level mermaid flowchart
(Swift host + LLM providers + WKWebView, with 14 nodes)
- Subsystems table — eight first-class + supporting packages
- "Install order" section with a mermaid DAG of the AppDelegate
install sequence (vision → agent → voice, plus parallel
memory/MCP/replay), matching check-install-order.sh
- "Agent turn lifecycle" mermaid showing the orchestrator → single
broadcaster fanout, with the strict-mode degradation preamble
inject point called out
- "Boot-health probes" mermaid for the eight NOT FAKED probes →
rollup → menu-bar icon / banner / agent preamble
- "Project culture" section codifying the in-code-docs philosophy,
NOT FAKED probes, strict-mode escalation, 18 boundary gates, the
three-name test-double taxonomy, audit-and-stabilize cadence,
and the GitHub-Issues-is-canonical policy
- "Roadmap" reorganized around the v0.1 → v1.1 milestones from
GitHub Milestones (user-outcome-focused, not subsystem-focused)
- Build & run cleaned up; boundary-gates one-liner; opt-in
real-hardware test commands kept
Also adds assets/screenshots/README.md with a prioritized shot
list — eight screenshots in priority order — and a note on why
diagrams stay as inline mermaid (GitHub-native, no re-export).
Removed: the older "Status" subsystem-state table, which had
become a mix of v0.12.0 milestone audit terms (Track A/B/C/D,
B-8) that don't map cleanly to the new GitHub Issues taxonomy.
Status now points at GitHub Issues + Milestones as the source
of truth.
Gates: 17/18 pass. check-app-builds.sh fails on the in-flight
AppDelegate.swift rewrite (unstaged, owned by a parallel agent)
— unrelated to this markdown-only change. Confirmed only
README.md + assets/screenshots/README.md are staged here.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Status line: nine planned phases shipped, Phase 10 mid-flight; cite 3974a15
- MCP tools row: split helpers vs in-process; add the four self-knowledge
tools landed in 74b9ac2 (list_audio_devices, get_active_audio_route,
get_self_state, list_camera_devices)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Replaces the stale "Pre-implementation" stub with a current overview:
status table grounded in audit-2026-05-04 reality, repo layout, build/test
commands, and pointers to ARCHITECTURE/CONTRIBUTING/SESSION-STATE.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>