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
79 changes: 79 additions & 0 deletions metrics/weekly/2026-W21.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# Week 21 Recap — May 11–17, 2026

Fifth week. The agents completed a full data-testid migration across all E2E specs, upgraded Lexical to 0.44.0, shipped workspace home improvements (image paste, import markdown, new database button), and added 116 new tests — while closing 47 issues.

## Highlights

- **E2E selectors are now fully data-testid based.** Five PRs migrated every remaining parent-traversal selector across workspace home, sidebar, members, favorites, trash, and database specs. This eliminates the selector fragility that caused 14 E2E bugs in prior weeks.
- **Clipboard image paste works in the editor.** Users can paste images directly from the clipboard into any page. PR #1035.
- **Workspace home gained three new actions.** Import Markdown, New Database button, and page type indicators make the home page more functional. PRs #1037, #1095, #1099.
- **Lexical upgraded from 0.31.0 to 0.44.0** with no regressions. PR #1071.

## By the Numbers

| Metric | This Week | Cumulative | Delta |
|---|---|---|---|
| Lines of code | +2,896 | 75,805 | +3.97% |
| PRs merged | 76 | 646 | |
| Test coverage | 37.15% | | +0.51pp |
| Tests (unit + E2E) | +116 | 2,322 | +5.3% |
| Issues completed | 47 | 445 done, 4 remaining | |
| CI pass rate | 93.2% | | (69/74 runs) |
| Human time | not yet recorded | not yet recorded | |
| Agent time | not yet recorded | not yet recorded | |

## Features Shipped

### Workspace Home (Days 29–32)
- **Clipboard image paste** — paste images from clipboard directly into the editor. PR #1035.
- **New Database button** — create databases from the workspace home page. PR #1037.
- **Page type indicator** — workspace home list items show whether an entry is a page or database. PR #1095.
- **Import Markdown action** — import `.md` files as new pages from the workspace home. PR #1099.
- **Focus-visible styles** — keyboard navigation highlights on workspace home list items and sidebar tree items. PRs #1043, #1057.

### API Hardening (Days 30–33)
- **Rate limiting on page versions** — sliding window limiter on version create/restore routes. PR #1082.
- **Network retry for API routes** — `retryOnNetworkError` added to routes missing transient failure resilience. PR #1092.
- **HeadlessChrome feedback filter** — automated browser sessions no longer pollute the feedback queue. PR #1102.
- **Keyboard shortcuts for Duplicate and Export** — `⌘+D` and `⌘+Shift+E` for page actions. PR #1094.

### Bug Fixes (Days 29–34)
- **Date picker popover clipping** — popover now repositions when near container edges. PR #1103.
- **Mobile header overflow** — workspace home buttons no longer overflow on small screens. PR #1040.
- **FK violation in version restore** — returns 404 instead of sending noise to Sentry. PR #1115.
- **Proxy cookie null guard** — prevents crash when cookie values are null. PR #1085.
- **Transient fetch warning suppression** — server-side fetch warnings no longer flood logs. PR #1093.
- **Performance monitor alignment** — bundle measurement now matches CI script methodology. PR #1053.

### Test Infrastructure (Days 29–35)
- **data-testid migration completed** — 5 PRs added `data-testid` attributes and migrated all E2E specs. PRs #1055, #1062, #1064, #1066, #1073.
- **Deterministic E2E waits** — replaced all `waitForTimeout` calls with condition-based waits. PR #1081.
- **Axe-core extended** — accessibility audit now covers gallery, list, account, forgot-password, and reset-password pages. PRs #1031, #1111.
- **API route error-handling consistency test** — structural test validates all mutation routes handle FK violations. PR #1119.
- **Person property E2E** — full interaction test for the member avatar picker. PR #1106.
- **Column resize E2E** — drag-to-resize test for database table columns. PR #1104.
- **Workspace home E2E** — interaction tests for the home page. PR #1046.
- **Backlinks E2E** — verifies backlink rendering when pages reference each other. PR #1129.
- **Page tree actions unit tests** — 35 tests covering create, delete, duplicate, move, nest, unnest, and favorite. PR #1128.
- **Import/export edge cases** — expanded E2E coverage for import and export flows. PR #1077.

### Maintenance (Days 31–32)
- **Lexical 0.31.0 → 0.44.0** — major editor dependency upgrade. PR #1071.
- **Patch-level dependency updates** — Next.js, React, Sentry, Supabase. PR #1068.
- **Sentry module decomposition** — split monolithic `sentry.ts` into focused error classification modules. PR #1034.
- **Typed Supabase query helpers** — eliminated remaining `as unknown as` casts in join queries. PRs #1051, #1063.

### Performance (Days 29–30)
- **Shared base JS reduced** — 152 kB → 150 kB gzip. PR #1039.
- **DB health endpoint latency reduced** — faster health check response. PR #1032.

## What's Next

- **Command palette (⌘+P)** — quick page switching by title, the most-requested navigation improvement. Issue #1107 (awaiting human approval).
- **Bundle size reduction** — all 12 pages exceed the 200 kB budget after the Lexical upgrade. Issue #1121 (awaiting human approval).
- **DB latency investigation** — health endpoint latency has exceeded 500ms for two consecutive weeks. Issue #1123 (awaiting human approval).

## Challenges & Learnings

- **CI pass rate dropped to 93.2% from 100% last week.** May 13 had a 77.8% pass rate (4 failures out of 18 runs), likely related to the Lexical upgrade and data-testid migration landing on the same day. The failures were transient — all resolved without code changes — but the overlap of a major dependency upgrade with a broad selector migration created a rough day.
- **Four open issues are all blocked on human approval.** The automation system correctly gates high-risk changes (browser print override, bundle restructuring, infrastructure investigation, cross-browser CI) behind human review. The backlog is otherwise empty, so the agents are effectively idle until these are unblocked.
Loading