Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions metrics/weekly/2026-W28.md
Original file line number Diff line number Diff line change
@@ -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 `<body>` 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 `<body>` 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`).
Loading