Skip to content

Commit 0b49afb

Browse files
committed
Add full project documentation, CI workflow, and acceptance checklist
1 parent 4fb4594 commit 0b49afb

5 files changed

Lines changed: 448 additions & 0 deletions

File tree

.github/workflows/ci.yml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- master
8+
pull_request:
9+
branches:
10+
- main
11+
- master
12+
13+
jobs:
14+
test:
15+
runs-on: ubuntu-latest
16+
timeout-minutes: 20
17+
18+
steps:
19+
- name: Checkout
20+
uses: actions/checkout@v4
21+
22+
- name: Setup Node.js
23+
uses: actions/setup-node@v4
24+
with:
25+
node-version: "22"
26+
cache: npm
27+
28+
- name: Install dependencies
29+
run: npm ci
30+
31+
- name: Install Playwright Chromium
32+
run: npx playwright install --with-deps chromium
33+
34+
- name: Run full test loop
35+
run: npm run test:all
36+
37+
- name: Upload Playwright report (failure only)
38+
if: failure()
39+
uses: actions/upload-artifact@v4
40+
with:
41+
name: playwright-report
42+
path: playwright-report

README.markdown

Lines changed: 275 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,275 @@
1+
# Chrome Activity Reader - Complete Build Documentation
2+
3+
Last updated: 2026-02-26
4+
Repository: https://github.com/baboonzero/chrome-activity-reader
5+
6+
## 1. Project Intent
7+
8+
Build a product that can:
9+
- Track activity across hundreds of Chrome tabs in multiple windows.
10+
- Show what the user worked on in time windows: 1 hour, 4 hours, 1 day, 1 week.
11+
- Let the user click an entry and jump back to that tab (or reopen if closed).
12+
- Keep all data local and private for MVP.
13+
14+
Primary product decision:
15+
- Build as a **Chrome Extension (MV3)** instead of standalone web page or desktop-only app.
16+
17+
## 2. What Was The Process?
18+
19+
The process followed these phases:
20+
21+
1. Problem framing and architecture analysis.
22+
2. Option comparison (extension vs web page vs desktop app).
23+
3. MVP boundary definition (tab-level time activity only).
24+
4. Design doc creation and implementation plan creation.
25+
5. Repository initialization and baseline commits.
26+
6. Extension scaffold implementation.
27+
7. Test harness setup (Playwright).
28+
8. Hardening loop (session engine extraction, runtime recovery, DB boundary controls).
29+
9. Unit + E2E test expansion.
30+
10. CI pipeline setup and manual acceptance assets.
31+
11. Final verification and push to GitHub.
32+
33+
All implementation was done in iterative loops:
34+
- implement,
35+
- test,
36+
- fix,
37+
- re-test,
38+
- commit,
39+
- push.
40+
41+
## 3. What Were The Actions That We Took?
42+
43+
Chronological execution log:
44+
45+
1. Created initial architecture/design artifacts:
46+
- `docs/plans/2026-02-26-chrome-activity-reader-design.md`
47+
- `docs/plans/2026-02-26-chrome-activity-reader-implementation-plan.md`
48+
49+
2. Initialized Git repository and committed baseline documentation.
50+
51+
3. Installed multi-agent/testing-support skills in local Codex skill directory:
52+
- `swarm-planner`
53+
- `parallel-task`
54+
- `super-swarm`
55+
- `playwright`
56+
57+
4. Enabled multi-agent feature flag in local Codex config:
58+
- `C:/Users/anshu/.codex/config.toml` -> `[features] multi_agents = true`
59+
60+
5. Implemented extension MVP foundation:
61+
- Manifest + service worker
62+
- IndexedDB data layer
63+
- Dashboard UI and settings UI
64+
- Session tracking event handling
65+
66+
6. Added Playwright E2E coverage for dashboard behavior.
67+
68+
7. Added swarm-style execution tracker:
69+
- `docs/plans/2026-02-26-swarm-execution-plan.md`
70+
71+
8. Refactored session logic into pure engine module:
72+
- `background/session-engine.js`
73+
74+
9. Added runtime recovery mechanism:
75+
- Persist active session runtime context to `chrome.storage.local`
76+
- Rehydrate on service worker boot
77+
78+
10. Hardened DB layer:
79+
- Settings normalization and safe defaults
80+
- Range guards
81+
- Deterministic retention pruning
82+
83+
11. Added unit tests:
84+
- `tests/unit/session-engine.test.js`
85+
- `tests/unit/db.test.js`
86+
87+
12. Expanded E2E tests:
88+
- Open existing tab vs reopen closed URL
89+
- Settings action from dashboard
90+
91+
13. Added manual acceptance assets:
92+
- `docs/testing/manual-acceptance-checklist.md`
93+
- `scripts/manual-acceptance.ps1`
94+
95+
14. Added GitHub Actions CI:
96+
- `.github/workflows/ci.yml`
97+
- Runs `npm run test:all` on push/PR.
98+
99+
15. Repeated full verification:
100+
- `npm run test:unit`
101+
- `npm run test:e2e`
102+
- `npm run test:all`
103+
104+
16. Pushed final state to GitHub `main`.
105+
106+
## 4. What Were The Decisions That We Took?
107+
108+
### Product/Architecture Decisions
109+
110+
1. **Platform:** Chrome extension (MV3) as core product.
111+
2. **MVP tracking scope:** Tab-level activity only (no in-page click/scroll/input capture).
112+
3. **Data storage:** IndexedDB for sessions/settings/snapshots.
113+
4. **Retention default:** 30 days.
114+
5. **Privacy stance:** Local-only storage; no cloud sync in MVP.
115+
6. **UI model:** Extension dashboard + settings page.
116+
117+
### Engineering Decisions
118+
119+
1. Extract pure session transition logic into `background/session-engine.js`.
120+
2. Persist runtime session state for service worker restart resilience.
121+
3. Add separate unit tests for pure logic plus Playwright E2E for behavior.
122+
4. Add CI pipeline to run full verification on pushes/PRs.
123+
5. Add manual acceptance checklist/script for real Chrome validation.
124+
125+
## 5. What Did We Start By Building?
126+
127+
First implementation slice:
128+
129+
1. `manifest.json` with MV3 service worker and permissions.
130+
2. `background/service-worker.js` with event listeners for tabs/windows/idle/alarms.
131+
3. `shared/db.js` for IndexedDB stores and session/settings persistence.
132+
4. Dashboard + Settings pages:
133+
- `ui/dashboard.html`, `ui/dashboard.js`, `ui/dashboard.css`
134+
- `ui/settings.html`, `ui/settings.js`
135+
136+
This delivered a runnable end-to-end MVP skeleton quickly.
137+
138+
## 6. What Have We Built?
139+
140+
### Core Functionality
141+
142+
- Active-tab session tracking across windows.
143+
- Session end reasons (`tab_switch`, `window_blur`, `tab_closed`, `idle`, `lock`, etc.).
144+
- Dashboard timeline with:
145+
- 1h / 4h / 1d / 7d filters
146+
- search by title/domain/url
147+
- click-to-focus existing tab
148+
- fallback open URL if tab is closed
149+
- Settings:
150+
- pause tracking
151+
- excluded domains
152+
- retention display (30 days default)
153+
154+
### Reliability and Hardening
155+
156+
- Debounce protection for rapid repeated transitions.
157+
- Runtime active-session persistence + recovery on worker restart.
158+
- Deterministic settings normalization and DB range handling.
159+
- Retention cleanup alarm and pruning logic.
160+
161+
### Testing
162+
163+
- Unit tests for session engine and DB boundaries.
164+
- Playwright E2E tests for timeline and action flows.
165+
- Combined test command (`npm run test:all`).
166+
167+
### Tooling/Operations
168+
169+
- `.gitignore`
170+
- npm-based project scripts
171+
- GitHub Actions CI workflow
172+
- Manual acceptance checklist + helper script
173+
174+
## 7. What Have We Not Built?
175+
176+
Not in MVP (intentionally out of scope):
177+
178+
1. In-page behavior tracking (clicks, typing, scroll, content snapshots).
179+
2. Cloud sync/account/multi-device history.
180+
3. Cross-browser support (Edge/Firefox/Safari).
181+
4. Advanced analytics (project clusters, AI summaries, semantic categorization).
182+
5. Side panel UI (only dashboard/options pages currently).
183+
6. Packaging/publishing flow for Chrome Web Store.
184+
7. Formal migration/versioning strategy for future DB schema upgrades.
185+
186+
## 8. Current Status
187+
188+
### Delivery Status
189+
190+
- MVP implementation: **complete**
191+
- Hardening loop: **complete**
192+
- Automated tests: **green**
193+
- CI workflow: **configured**
194+
- Manual acceptance assets: **present**
195+
- Repo pushed to GitHub: **yes**
196+
197+
### Quality Status
198+
199+
- `npm run test:unit`: passing
200+
- `npm run test:e2e`: passing
201+
- `npm run test:all`: passing
202+
203+
### Branch/History Status
204+
205+
Primary commits:
206+
- `249bc7c` Initialize project with approved MVP design and implementation plan
207+
- `0f2e6fc` Build MV3 Chrome Activity Reader MVP scaffold
208+
- `b1db2c7` Add Playwright test loop for dashboard behavior
209+
- `4fb4594` Complete MVP hardening, recovery, and full test loop
210+
211+
## 9. File-Level Map Of What Exists
212+
213+
### Product
214+
215+
- `manifest.json`
216+
- `background/service-worker.js`
217+
- `background/session-engine.js`
218+
- `shared/db.js`
219+
- `shared/time.js`
220+
- `shared/url.js`
221+
- `ui/dashboard.html`
222+
- `ui/dashboard.js`
223+
- `ui/dashboard.css`
224+
- `ui/settings.html`
225+
- `ui/settings.js`
226+
227+
### Tests
228+
229+
- `tests/unit/session-engine.test.js`
230+
- `tests/unit/db.test.js`
231+
- `tests/e2e/dashboard.spec.js`
232+
- `playwright.config.mjs`
233+
234+
### Documentation and Planning
235+
236+
- `README.md` (quick start)
237+
- `README.markdown` (this full build document)
238+
- `docs/APPROACH_AND_PLAN.md`
239+
- `docs/plans/2026-02-26-chrome-activity-reader-design.md`
240+
- `docs/plans/2026-02-26-chrome-activity-reader-implementation-plan.md`
241+
- `docs/plans/2026-02-26-swarm-execution-plan.md`
242+
- `docs/testing/manual-acceptance-checklist.md`
243+
244+
### Operations
245+
246+
- `.github/workflows/ci.yml`
247+
- `scripts/manual-acceptance.ps1`
248+
- `package.json`
249+
- `package-lock.json`
250+
- `.gitignore`
251+
252+
## 10. How To Validate Right Now
253+
254+
1. Install dependencies:
255+
- `npm install`
256+
2. Run full test loop:
257+
- `npm run test:all`
258+
3. Load extension in Chrome:
259+
- `chrome://extensions` -> Load unpacked -> project root
260+
4. Run manual acceptance helper:
261+
- `pwsh ./scripts/manual-acceptance.ps1 -RunAutomatedTests`
262+
5. Walk through checklist:
263+
- `docs/testing/manual-acceptance-checklist.md`
264+
265+
## 11. Summary
266+
267+
This project has moved from concept to a tested MVP with:
268+
- complete tab-level activity tracking,
269+
- timeline navigation UX,
270+
- privacy-first local storage,
271+
- hardening for service-worker lifecycle behavior,
272+
- automated and manual verification paths,
273+
- CI on GitHub.
274+
275+
The current codebase is production-ready for MVP-level internal use and ready for the next phase (publishing hardening, side panel UX, and optional richer activity intelligence).

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
Chrome extension MVP that tracks tab-level activity and shows what you worked on over the last 1 hour, 4 hours, 1 day, and 7 days.
44

5+
For complete project history, architecture decisions, execution timeline, built/not-built scope, and current status, see:
6+
- `README.markdown`
7+
58
## MVP Features
69

710
- Tracks active tab sessions across Chrome windows.

0 commit comments

Comments
 (0)