|
|
|
|
@@ -3,15 +3,15 @@ gsd_state_version: 1.0
|
|
|
|
|
milestone: v2.0.0
|
|
|
|
|
milestone_name: milestone
|
|
|
|
|
status: executing
|
|
|
|
|
stopped_at: Plan 01-12 closed via Wave 7 operator brand-fit ack 2026-05-20 'all good' (147/147 vitest, 21/21 UAT GREEN); Plan 01-10 (welcome tab) remains as final Phase 1 functional plan
|
|
|
|
|
last_updated: "2026-05-20T08:00:00.000Z"
|
|
|
|
|
stopped_at: Plan 01-10 closed 2026-05-20 via cycle-2 operator ack 'All good' (153/153 vitest, 24/24 UAT GREEN) + 5 inter-cycle debug fixes + brand-rename follow-up; Phase 1 final-closure marker flip pending (REQUIREMENTS / ROADMAP / STATE markers)
|
|
|
|
|
last_updated: "2026-05-20T12:00:00.000Z"
|
|
|
|
|
last_activity: 2026-05-20
|
|
|
|
|
progress:
|
|
|
|
|
total_phases: 5
|
|
|
|
|
completed_phases: 0
|
|
|
|
|
total_plans: 14
|
|
|
|
|
completed_plans: 13
|
|
|
|
|
percent: 93
|
|
|
|
|
completed_plans: 14
|
|
|
|
|
percent: 100
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
# Project State
|
|
|
|
|
@@ -27,13 +27,37 @@ no server, no password leaks.
|
|
|
|
|
|
|
|
|
|
## Current Position
|
|
|
|
|
|
|
|
|
|
Phase: 1 of 5 (Stabilize Video Pipeline) — Plan 01-12 closed-by-brand-fit-ack 2026-05-20; Plan 01-13 closed-by-harness 2026-05-19; awaiting Plan 01-10 (welcome tab) as final Phase 1 functional plan
|
|
|
|
|
Phase: 1 of 5 (Stabilize Video Pipeline) — Plan 01-10 closed-by-operator-ack 2026-05-20; Plan 01-12 closed-by-brand-fit-ack 2026-05-20; Plan 01-13 closed-by-harness 2026-05-19; all 14 functional plans delivered. Phase 1 final-closure marker flip pending (REQUIREMENTS / ROADMAP / STATE markers + optional /gsd-verify-work 1).
|
|
|
|
|
Next phase: 2 of 5 (Stabilize DOM + event-capture privacy)
|
|
|
|
|
Plan: 13 of 13 complete (13 plans: 01-01..01-09 + 01-11 spike + 01-12 + 01-13 + 01-14; Plan 01-10 still pending)
|
|
|
|
|
Status: Executing — Plan 01-10 (welcome tab) remains
|
|
|
|
|
Plan: 14 of 14 complete (14 plans: 01-01..01-09 + 01-11 spike + 01-12 + 01-13 + 01-14 + 01-10)
|
|
|
|
|
Status: Executing — Phase 1 final-closure marker flip pending (functional plans all complete)
|
|
|
|
|
Last activity: 2026-05-20
|
|
|
|
|
|
|
|
|
|
Progress: [█████████▓] 93%
|
|
|
|
|
Progress: [██████████] 100%
|
|
|
|
|
|
|
|
|
|
### Plan 01-10 closure (2026-05-20)
|
|
|
|
|
|
|
|
|
|
- Welcome tab landed end-to-end across 4 waves (5 plan tasks: 4 autonomous + 1 operator empirical UAT cycle 2 + cycle-2 follow-up brand-rename ack)
|
|
|
|
|
- 4 plan-wave commits: `89e1e09` (Wave 0 RED onboarding tests) → `49f087f` (Wave 1 welcome bundle + Vite entries + manifest) → `8f329d8` (Wave 2 openWelcomeIfFirstInstall + onInstalled wiring) → `b112cb7` (Wave 3 harness A15+A16+A17)
|
|
|
|
|
- 5 inter-cycle debug commits between cycle-1 rejection (2026-05-20 ~08:56) and cycle-2 ack (2026-05-20):
|
|
|
|
|
1. `4bba679` fix(01-09): notifStartup text split — notifStartupCta for onStartup; notifRecordingStarted reserved for manual-start (debug 01-09-startup-notification-misleading-text)
|
|
|
|
|
2. `d48a715` fix(01-10): welcome page mark — bundle canonical mokosh-mark.svg via Vite ?url import + populateMark() + .welcome-hero__mark-img + A17.8 sub-check (debug 01-10-welcome-page-missing-mark; Plan 01-12 must_have #9 path-A swap-in gap closed)
|
|
|
|
|
3. `0854baf` fix(01-10): vitest build-test it() timeout — bump to 30s for slower welcome-page build (debug 01-10-vitest-build-test-timeout)
|
|
|
|
|
4. `a2dfc8c` fix(01-09): startVideoCapture — remove stale active-tab dependency (debug 01-09-notification-start-no-active-tab; D-01 cleanup gap; +3 RED→GREEN tests at start-video-capture-no-tab.test.ts)
|
|
|
|
|
5. `d21ed17` fix(01-12): brand polish — replace stale 'AI Call Recorder' refs with Mokosh (debug 01-12-stale-ai-call-recorder-references; 4 files: src/welcome/copy.ts + README.md + package.json + tests/i18n/manifest-i18n.test.ts)
|
|
|
|
|
- SUMMARY: `.planning/phases/01-stabilize-video-pipeline/01-10-SUMMARY.md`
|
|
|
|
|
- **First-install activation pattern**: `chrome.runtime.onInstalled('install')` + `chrome.storage.local` flag-gating (`onboarding-completed: true` + `installed-at: Date.now()`) + `chrome.tabs.create` + fire-and-forget `.catch` defense-in-depth. Subsequent installs/updates do NOT re-open (A16's contract empirically verified).
|
|
|
|
|
- **Plan 01-12 path-B contract honored end-to-end**: `welcome.css` opens with `@import '../shared/tokens.css';` (canonical tokens — Lora display + IBM Plex Sans UI + D-04 Loom palette); NO placeholder welcome-tokens.css file. `chrome.i18n.getMessage` for `welcomeHeroRu` + `welcomeHeroEn` (Plan 01-12 fallback pattern preserved with `|| <en-const>`). Non-tagline copy via in-file COPY map (engineering placeholder pending future copy-iteration plan).
|
|
|
|
|
- **Canonical Mokosh mark bundled via Vite `?url` import**: `import markUrl from '../shared/brand/mokosh-mark.svg?url'`; Vite default-inlines ~600 B SVG as `data:image/svg+xml,...` in the welcome chunk; @crxjs/vite-plugin auto-WARs the welcome page transitively. `globals.d.ts` ambient module declaration added for `*.svg?url`.
|
|
|
|
|
- **A17.7 empirical probe**: `getComputedStyle` on transient div with `color: var(--mks-rec)` resolves to `rgb(178, 84, 61)` (= #b2543d = --mks-madder-600 per Plan 01-12 Wave 4 D-04 Loom palette adoption). Proves canonical @import wires through to canonical token values, not just engineering placeholders.
|
|
|
|
|
- **A17.8 sub-check added during welcome-mark debug**: verifies welcome chunk JS contains the inlined `data:image/svg+xml,...` data URL with canonical `viewBox='0 0 32 32'` preserved.
|
|
|
|
|
- **Pre-checkpoint bundle gates per saved memory `feedback-pre-checkpoint-bundle-gates.md`**: Tier-1 hook-string grep + SW CSP-safety + Node-globals + DOM-globals + manifest validation + en↔ru parity — all PASS. setimmediate polyfill `new Function` in SW chunk confirmed pre-existing (logged at `.planning/phases/01-stabilize-video-pipeline/deferred-items.md` for Phase 5 hardening per Plan 01-12 Wave 7 disclosure). Tier-1 FORBIDDEN_HOOK_STRINGS inventory unchanged at 12 (A15-A17 use chrome.tabs.query + chrome.storage.local.get + fetch + DOMParser + getComputedStyle production APIs exclusively).
|
|
|
|
|
- **vitest 147 → 153 GREEN** (+3 from `tests/background/onboarding.test.ts` Wave 0; +3 from `tests/background/start-video-capture-no-tab.test.ts` closure-cycle debug `a2dfc8c`).
|
|
|
|
|
- **UAT harness 21/21 → 24/24 GREEN** (A0-A14 + A15-A17 + A18-A22 + A23 inclusive). A22 functionally GREEN now that welcome.html is reachable (was conditional skip-gate in Plan 01-12 Wave 6).
|
|
|
|
|
- **Operator empirical UAT cycle-2 ack 2026-05-20 verbatim "All good"** on welcome page + canonical mark + Lora-rendered hero + Cyrillic tagline + onStartup notification CTA + notification.onClicked → startVideoCapture path + reload-does-not-re-open + re-install branch.
|
|
|
|
|
- **Cycle-2 follow-up brand-rename ack** received same day for `d21ed17` (4-file content rename "AI Call Recorder" → "Mokosh"; `.planning/intel/*` audit trail preserved).
|
|
|
|
|
- **Plan 01-10 closed**: 5/5 plan tasks complete (4 autonomous Waves 0-3 + Wave 4 operator empirical cycle-2 ack); 4/4 plan waves complete.
|
|
|
|
|
- **Phase 1 implications**: final functional plan delivered. Phase 1 final-closure unblocked pending REQUIREMENTS / ROADMAP / STATE marker flip + optional `/gsd-verify-work 1`.
|
|
|
|
|
|
|
|
|
|
### Plan 01-12 closure (2026-05-20)
|
|
|
|
|
|
|
|
|
|
@@ -55,7 +79,8 @@ Progress: [█████████▓] 93%
|
|
|
|
|
|
|
|
|
|
### Outstanding Phase 1 gates
|
|
|
|
|
|
|
|
|
|
- **Plan 01-10 (welcome tab):** still pending — operator-facing onboarding surface (Russian copy; first-run only). Canonical `src/shared/tokens.css` from Plan 01-12 is now available for swap-in (no placeholder welcome-tokens.css needed). When Plan 01-10 lands, harness A22 flips from skip-gate to 1-check GREEN.
|
|
|
|
|
- ~~**Plan 01-10 (welcome tab):**~~ CLOSED 2026-05-20 via cycle-2 operator ack "All good" + 5 inter-cycle debug fixes + brand-rename follow-up (SUMMARY at `.planning/phases/01-stabilize-video-pipeline/01-10-SUMMARY.md`; 153/153 vitest + 24/24 UAT GREEN; A22 flipped from skip-gate to functionally GREEN)
|
|
|
|
|
- **Phase 1 final-closure marker flip:** pending REQUIREMENTS / ROADMAP / STATE markers + optional `/gsd-verify-work 1`
|
|
|
|
|
|
|
|
|
|
### Plan 01-13 closure (2026-05-19; brand/design ack subsequently closed via Plan 01-12 Wave 7 2026-05-20)
|
|
|
|
|
|
|
|
|
|
@@ -83,7 +108,8 @@ Progress: [█████████▓] 93%
|
|
|
|
|
|
|
|
|
|
- ~~**Plan 01-13 Task 9 (operator checkpoint):**~~ CLOSED 2026-05-20 via Plan 01-12 Wave 7 brand-fit ack "all good"
|
|
|
|
|
- ~~**Plan 01-12 (design integration):**~~ CLOSED 2026-05-20 (R2 Lora substitution + tokens.css canonical + 16 i18n keys + branded icons + manifest i18n; SUMMARY f319c7d)
|
|
|
|
|
- **Plan 01-10 (welcome tab):** still pending — operator-facing onboarding surface (Russian copy; first-run only). Canonical `src/shared/tokens.css` from Plan 01-12 is now available for swap-in.
|
|
|
|
|
- ~~**Plan 01-10 (welcome tab):**~~ CLOSED 2026-05-20 via cycle-2 operator ack "All good" + 5 inter-cycle debug fixes + brand-rename follow-up; SUMMARY at `.planning/phases/01-stabilize-video-pipeline/01-10-SUMMARY.md`
|
|
|
|
|
- **Phase 1 final-closure marker flip:** pending REQUIREMENTS / ROADMAP / STATE markers + optional `/gsd-verify-work 1`
|
|
|
|
|
|
|
|
|
|
## Performance Metrics
|
|
|
|
|
|
|
|
|
|
@@ -118,6 +144,7 @@ Progress: [█████████▓] 93%
|
|
|
|
|
| Phase 1 P07 | ~10min closure + 2 debug sessions (D-12 + A3) | 2 tasks (checkpoint + auto) | 6 files (fixture + REQUIREMENTS + ROADMAP + STATE + SUMMARY + plan-final-commit) |
|
|
|
|
|
| Phase 01 P14 | 49m | 1 tasks | 7 files |
|
|
|
|
|
| Phase 01 P12 | ~10h cumulative (7 waves; 10 plan tasks + 1 operator empirical checkpoint) | 10 tasks (7 waves + Wave 7 pre-checkpoint + brand-fit ack) | ~50+ files (8 WOFF2 + 3 PNG + 2 _locales + tokens.css + 6 unit-test files + harness + scripts + 4 source files modified) |
|
|
|
|
|
| Phase 01 P10 | ~5h cumulative (4 waves; 5 plan tasks + 5 inter-cycle debug sessions + cycle-2 follow-up brand-rename ack) | 5 tasks (Wave 0 RED + Wave 1 bundle + Wave 2 SW wiring + Wave 3 harness + Wave 4 operator UAT cycle-2) | 14 files (4 new src/welcome/* + globals.d.ts + 2 unit-test files + 3 harness files + src/background/index.ts + manifest + 2 Vite configs + closure-cycle debug touches: _locales + README + package.json + onstartup-notification.test.ts + onboarding-tests + manifest-i18n.test.ts) |
|
|
|
|
|
|
|
|
|
|
## Accumulated Context
|
|
|
|
|
|
|
|
|
|
@@ -161,6 +188,10 @@ current work:
|
|
|
|
|
- [Phase ?]: Plan 01-14 — monitorTypeSurfaces:'include' shipped as top-level DisplayMediaStreamOptions constraint (W3C spec §6.1; Chrome ≥ 119 picker narrowing); A23 harness gate + Tier-1 grep lockstep extension to 12 strings; 100/100 vitest + 16/16 UAT GREEN. types.ts NOT modified — new cell/op are module-internal.
|
|
|
|
|
- [Phase 01-12]: Design integration landed end-to-end via 7 waves + operator brand-fit ack 2026-05-20 "all good". R2 designer substitution (Newsreader → Lora; Cyreal foundry; OFL-1.1; full Cyrillic via reply 2026-05-19) baked in; src/shared/tokens.css canonical with 8 local @font-face rules + zero remote URLs (MV3 CSP self-host invariant); 16 i18n keys per locale across en + ru with parity; branded Loom-mark icons replace Bug A placeholders (8-bit RGBA); src/popup + src/background migrated to chrome.i18n.getMessage with `|| <const>` fallback; BADGE_REC_COLOR flipped from material-green #00C853 to madder #b2543d (= --mks-madder-600 per D-04). UAT harness A18-A22 GREEN. Pre-checkpoint bundle gates established per feedback-pre-checkpoint-bundle-gates.md (5 grep gates pre-checkpoint; setimmediate polyfill new Function in SW chunk verified pre-existing across Phase 1 history — logged to deferred-items.md for Phase 5 hardening). vitest 100 → 147 GREEN (+47); UAT 16 → 21 GREEN (+A18-A22; A22 skip-gates on Plan 01-10 absent).
|
|
|
|
|
- [Phase 01-12]: Plan 01-13 Task 9 (operator brand/design ack on loaded extension) functionally closed via Plan 01-12 Wave 7 brand-fit ack 2026-05-20 (same operator + same empirical surface coverage). This was the LAST remaining Phase 1 brand-design gate.
|
|
|
|
|
- [Phase 01-10]: First-install operator-friendly activation landed end-to-end via 4 waves + Wave 4 operator empirical UAT cycle 2 ack "All good" 2026-05-20. chrome.runtime.onInstalled('install') + chrome.storage.local flag-gating + chrome.tabs.create with fire-and-forget .catch defense-in-depth (helper at src/background/index.ts:~186, called after initialize()). Plan 01-12 must_have #9 path-B contract honored end-to-end: welcome.css `@import '../shared/tokens.css';` resolves canonical tokens (Lora display + IBM Plex Sans UI + D-04 Loom palette); chrome.i18n.getMessage for welcomeHeroRu + welcomeHeroEn with `|| <en-const>` fallback (Plan 01-12 fallback pattern). Vite `?url` import + auto-WAR idiom bundles canonical mokosh-mark.svg as inline data URL in welcome chunk (debug 01-10-welcome-page-missing-mark resolved cycle-1 mark-bundling gap). Harness A15-A17 (24/24 UAT GREEN; A17 grew to 8 sub-checks incl. A17.7 getComputedStyle probe verifying --mks-rec resolves to rgb(178,84,61) AND A17.8 mark-bundling invariant). FORBIDDEN_HOOK_STRINGS unchanged at 12 (A15-A17 use chrome.tabs.query + chrome.storage.local.get + fetch + DOMParser + getComputedStyle production APIs exclusively). vitest 147 → 153 GREEN (+6: 3 onboarding tests + 3 start-video-capture-no-tab tests). 5 inter-cycle debug sessions resolved cycle-1 rejection + cycle-2 brand-rename ask: 4bba679 notifStartup text split + d48a715 welcome mark + 0854baf vitest timeout + a2dfc8c startVideoCapture no-tab cleanup + d21ed17 brand polish "AI Call Recorder" → "Mokosh".
|
|
|
|
|
- [Phase 01-10]: D-16-toolbar charter preserved verbatim — welcome page is informational + read-only; NO REQUEST_PERMISSIONS message type, NO chrome.runtime.sendMessage start path, NO duplicate getDisplayMedia trigger. CTA copy directs operator at toolbar icon. Toolbar onClicked (Plan 01-09) remains the SINGLE start path through chrome.action.onClicked in idle mode.
|
|
|
|
|
- [Phase 01-10]: Three-pipeline DOM population pattern established for src/welcome/welcome.ts: populateMark() walks [data-mokosh-slot='mark'] (canonical SVG via Vite ?url import); populateCopy() walks [data-mokosh-key] (textContent from in-file COPY map for non-tagline strings); populateI18n() walks [data-mokosh-i18n-key] (textContent from chrome.i18n.getMessage with `|| <en-const>` fallback for the D-08 tagline strings). Init order populateMark → populateCopy → populateI18n. Filter-pipeline form throughout (no continue per project style). data-mokosh-slot wrapper attribute preserved as design-swap landmark for forward-compat.
|
|
|
|
|
- [Phase 01-10]: Closure-cycle debug commit `a2dfc8c` removed pre-D-01 dead code from startVideoCapture (chrome.tabs.query({active:true}) + throw 'No active tab found') — the legacy block was load-bearing in the chrome.tabCapture era but functionally dead post-D-01 (getDisplayMedia whole-desktop in offscreen has no tab dependency). The bug surfaced via the notifications.onClicked path after the new CTA copy in 4bba679 explicitly invited the click. captureScreenshot() + saveArchive() retain their own genuine tab queries (out of scope for surgical fix). +3 RED→GREEN tests at start-video-capture-no-tab.test.ts pinning the new no-active-tab contract.
|
|
|
|
|
|
|
|
|
|
### Pending Todos
|
|
|
|
|
|
|
|
|
|
@@ -183,12 +214,13 @@ Items acknowledged and carried forward from previous milestone close:
|
|
|
|
|
|
|
|
|
|
## Session Continuity
|
|
|
|
|
|
|
|
|
|
Last session: 2026-05-20T08:00:00.000Z
|
|
|
|
|
Stopped at: Plan 01-12 closed via Wave 7 operator brand-fit ack 2026-05-20 'all good' (SUMMARY f319c7d; 147/147 vitest + 21/21 UAT GREEN); Plan 01-10 (welcome tab) remains as final Phase 1 functional plan
|
|
|
|
|
Last session: 2026-05-20T12:00:00.000Z
|
|
|
|
|
Stopped at: Plan 01-10 closed 2026-05-20 via cycle-2 operator ack "All good" (153/153 vitest, 24/24 UAT GREEN) + 5 inter-cycle debug fixes + brand-rename follow-up; Phase 1 final-closure marker flip pending (REQUIREMENTS / ROADMAP / STATE markers + optional /gsd-verify-work 1)
|
|
|
|
|
Resume file: None
|
|
|
|
|
|
|
|
|
|
Prior session: 2026-05-19T19:41:05.737Z — Completed Plan 01-14 (commit b467123 + SUMMARY 5254145; 16/16 UAT + 100/100 vitest GREEN)
|
|
|
|
|
Earlier session: 2026-05-17T14:30:13Z — resumed from /gsd-pause-work checkpoint ed82fd6; Bug A icons (a881bf0) + intel-unlock (f768498) committed; /gsd-debug spawned for Bug B state-machine routing (subsequently resolved via the recovery-flow amendment at Plan 01-09 Task 5 step 11)
|
|
|
|
|
Prior session: 2026-05-20T08:00:00.000Z — Plan 01-12 closed via Wave 7 operator brand-fit ack 2026-05-20 'all good' (SUMMARY f319c7d; 147/147 vitest + 21/21 UAT GREEN)
|
|
|
|
|
Earlier session: 2026-05-19T19:41:05.737Z — Completed Plan 01-14 (commit b467123 + SUMMARY 5254145; 16/16 UAT + 100/100 vitest GREEN)
|
|
|
|
|
Even earlier session: 2026-05-17T14:30:13Z — resumed from /gsd-pause-work checkpoint ed82fd6; Bug A icons (a881bf0) + intel-unlock (f768498) committed; /gsd-debug spawned for Bug B state-machine routing (subsequently resolved via the recovery-flow amendment at Plan 01-09 Task 5 step 11)
|
|
|
|
|
|
|
|
|
|
## Phase 1 Closure Notes
|
|
|
|
|
|
|
|
|
|
|