diff --git a/metrics/weekly/2026-W28.md b/metrics/weekly/2026-W28.md new file mode 100644 index 0000000..3281e17 --- /dev/null +++ b/metrics/weekly/2026-W28.md @@ -0,0 +1,56 @@ +# Week 28 Recap — June 29 – July 5, 2026 + +Twelfth week. Two user-facing navigation features shipped on Sunday (Copy link, Open in new tab), followed by a two-part Sentry hydration error fix on Monday. A false-positive bundle budget alarm was investigated and documented. The backlog remains empty — all 6 open issues are blocked on human product decisions. The automation pipeline continued producing metrics and social posts while waiting for new work. + +## Highlights + +- **Copy link and Open in new tab added to page menus.** Users can now copy a page URL to clipboard or open it in a new tab from the sidebar, page menu, and workspace home context menu. +- **Sentry Replay hydration false positives eliminated.** A two-step fix — `suppressHydrationWarning` on `` plus a Replay recording filter — stops browser-extension-caused hydration errors from polluting Sentry. +- **Bundle budget false alarm resolved.** The W27 performance report incorrectly included a `noModule` polyfill in size calculations. All 12 pages are within the 200 kB budget. Measurement methodology is now documented. + +## By the Numbers + +| Metric | This Week | Cumulative | Delta | +|---|---|---|---| +| Lines of code | +186 | 86,365 | +0.22% | +| PRs merged | 31 | 932 | | +| Test coverage | 37.87% | | -0.04pp | +| Tests (unit + E2E) | +20 | 3,191 | | +| Issues completed | 5 | 518 done, 6 open | | +| Human time | not yet recorded | not yet recorded | | +| Agent time | not yet recorded | not yet recorded | | + +## Features Shipped + +### Navigation + +- **Copy link action** — page menu, sidebar dropdown, and workspace home context menu now have a "Copy link" item that copies the page URL to clipboard with a toast confirmation. 3 new E2E tests. PR #1457 (Issue #1452). +- **Open in new tab in sidebar** — the sidebar page tree dropdown now includes "Open in new tab," matching the workspace home context menu. 3 new E2E tests. PR #1460 (Issue #1453). + +### Error Handling + +- **Body hydration warning suppression** — added `suppressHydrationWarning` to `` in the root layout to prevent React hydration errors caused by browser extensions injecting attributes. 2 new convention tests. PR #1462 (Issue #1459). +- **Sentry Replay hydration filter** — added a `beforeAddRecordingEvent` callback to the Replay integration that drops `replay.hydrate-error` breadcrumbs caused by external DOM modification. 6 new unit tests. PR #1465 (Issue #1464). + +### Performance + +- **Bundle budget methodology documented** — the W27 performance report's "10 of 12 pages over budget" finding was a measurement error (included `noModule` polyfill). All pages are within 200 kB. Added methodology docs and automation guardrails. PR #1458 (Issue #1455). + +### Routine Automation Output + +- 21 social posts (3× daily, 7 days) +- 7 daily metrics snapshots +- 1 weekly recap (W27, PR #1463) +- 1 performance report (W27, PR #1456) +- 1 automation audit (W28, PR #1490) + +## What's Next + +- **Content preview snippets on workspace home.** Show a one-line text preview below each page title so users can distinguish pages without clicking into them. Issue #1454 (awaiting human approval). +- **Row grouping in table view.** Collapsible sections grouped by a select/status property. Issue #1252 (awaiting human approval). +- **OAuth sign-in with GitHub and Google.** Code is implemented, needs Supabase dashboard configuration. Issue #1216 (awaiting human approval). + +## Challenges & Learnings + +- **Four weeks with an empty backlog.** The automation system shipped both navigation features within hours of the issues being created, then returned to idle. All 6 remaining open issues carry the `needs-human` label. The oldest (#1216, OAuth sign-in) has been waiting 38 days. Engineering capacity is not the bottleneck. +- **Sentry hydration errors required two passes.** The first fix (PR #1462, `suppressHydrationWarning`) solved the React-thrown error but not the Replay-detected one. Replay's DOM diffing operates independently of React's hydration check, which was not obvious from the Sentry documentation. The second fix (PR #1465) targeted the correct interception point (`beforeAddRecordingEvent`).