The archive
Auto-written every Sunday, straight off the database
What shipped this week
Week in Review: Jun 15 – Jun 21, 2026 — 39 PRs, 1,210 commits
Stu Mason10 min read
39 PRs merged, 1210 commits, +10,831 lines
Summary
- 39 pull requests merged (↓25% vs last week)
- 35 pull requests opened
- 1,210 commits pushed (↓30% vs last week)
Top Pull Requests
- feat: admin-only read-only MCP server (OAuth 2.1 + DCR via P... — cleanconnect
+2,790/-444 - feat: installable PWA + web push scaffolding — cleanconnect
+1,487/-5 - [WIP] Bellwether AI Writer — laravel/ai agent, tools + draft... — devtrends
+1,464/-11 - feat: /work-with-me catch-all page + consolidate /for-agenci... — progress
+1,043/-306 - feat: crunch + Bellwether teardown pages — progress
+1,061/-13
Code Impact
+12,402 additions · -1,571 deletions
Net: +10,831 lines across 252 files
Activity by Repository
| Repository | PRs | Commits | Changes |
|---|---|---|---|
| progress | 15 | 400 | +3,282/-601 |
| cleanconnect | 11 | 260 | +6,061/-603 |
| devtrends | 9 | 300 | +2,919/-162 |
| coolify-mcp | 3 | 50 | +129/-201 |
| shop-template | 0 | 80 | +0/-0 |
| pepti | 0 | 40 | +0/-0 |
| real-estate-data | 0 | 30 | +0/-0 |
| laravel-coolify | 1 | 20 | +11/-4 |
▶Full Activity Index (195 items)
Pull Requests Merged
- Bellwether Issues Nº 1 (mobile) & Nº 2 (supply-chain security) in devtrends (+215/-12)
- feat(admin): edit a draft before publishing in devtrends (+239/-0)
- fix(agent): DISTINCT url_hash accuracy + render agent section shapes in devtrends (+30/-19)
- Fix: rising-line favicon (dropped in two prior squash-merges) in devtrends (+14/-9)
- Harden newsletter: POST-only state changes, idempotent send, rate limiting in devtrends (+154/-19)
- Bellwether newsletter: double opt-in signup + issue announcements in devtrends (+748/-3)
- fix(agent): text-memo researcher (tool_choice auto) — fixes convergence in devtrends (+53/-87)
- [WIP] Bellwether AI Writer — laravel/ai agent, tools + draft command (Phase 2c) in devtrends (+1464/-11)
- fix(agent): drop deprecated temperature param from WriterAgent in devtrends (+2/-2)
- ci: base images fortnightly + min-mode cache (cut ~2,500 Actions min/month) in laravel-coolify (+11/-4)
- Add pull_latest parameter to restart action for services in coolify-mcp (+33/-4)
- fix(deps): clear all high/moderate npm advisories + enforce audit gate in coolify-mcp (+5/-4)
- fix(deps): clear remaining high/moderate advisories + enforce audit gate in coolify-mcp (+91/-193)
- feat: installable PWA + web push scaffolding in cleanconnect (+1487/-5)
- fix: "pending verifications" counted rows with no documents uploaded in cleanconnect (+198/-68)
- feat: admin Signups view for morning onboarding triage in cleanconnect (+580/-1)
- ci: run full-QA browser suite on demand only in cleanconnect (+3/-3)
- feat: payout clarity for cleaners in cleanconnect (+207/-1)
- fix: null cleaner-name 500s on /cleaners listing and profile pages in cleanconnect (+106/-3)
- feat: PWA install for everyone + web push notifications in cleanconnect (+561/-73)
- fix: a nameless company profile can never be publicly listed in cleanconnect (+110/-1)
- chore: switch Claude CI workflows from Fable 5 to Opus 4.8 in cleanconnect (+2/-2)
- feat: admin-only read-only MCP server (OAuth 2.1 + DCR via Passport) in cleanconnect (+2790/-444)
- fix: accept base64-encoded Passport keys from env (fixes MCP 500) in cleanconnect (+17/-2)
- feat: instrument client-work funnel with Umami events in progress (+160/-34)
- fix: top pages widget — Umami renamed metric type 'url' to 'path' in progress (+7/-1)
- feat: crunch + Bellwether teardown pages in progress (+1061/-13)
- fix: remove unused imports failing frontend lint in progress (+0/-4)
- fix: UmamiService reads flat /stats shape — analytics showed zeros in progress (+53/-11)
- feat: funnel host routing for ai.stumason.dev in progress (+69/-0)
- fix: install pusher-js — uncaught error breaking app boot in progress (+17/-0)
- feat: above-the-fold CTA on service pages in progress (+199/-112)
- fix: bump Horizon to 5.47 — workers crash-loop on --stop-when-empty-for in progress (+83/-26)
- feat: contact widget on every page + service-page Book a Call in progress (+33/-13)
- feat: lead service CTAs with low-friction Send a Message in progress (+57/-19)
- feat: /work-with-me catch-all page + consolidate /for-agencies in progress (+1043/-306)
- feat: surface case studies — link from service pages + SEO in progress (+191/-23)
- feat: agency reviews marquee + link to /reviews in progress (+138/-39)
- docs: agency GTM plan (north star + done-done checklist) in progress (+171/-0)
Pull Requests Opened
- PR #177 opened: Bellwether Issues Nº 1 (mobile) & Nº 2 (supply-chain security) in devtrends
- PR #178 opened: Fix: rising-line favicon (dropped in two prior squash-merges) in devtrends
- PR #222 opened: fix(deps): clear all high/moderate npm advisories + enforce audit gate in coolify-mcp
- PR #223 opened: fix(deps): clear remaining high/moderate advisories + enforce audit gate in coolify-mcp
- PR #224 opened: feat: user detail page — Signups-level status, nudge actions, clearer comms in cleanconnect
- PR #226 opened: feat: recover user-page clarity + nudges (#224 was lost in a stacked merge) in cleanconnect
- PR #227 opened: feat: admin-only read-only MCP server (OAuth 2.1 + DCR via Passport) in cleanconnect
- PR #225 opened: ci: run full-QA browser suite on demand only in cleanconnect
- PR #223 opened: feat: admin Signups view for morning onboarding triage in cleanconnect
- PR #222 opened: fix: "pending verifications" counted rows with no documents uploaded in cleanconnect
- PR #221 opened: fix: a nameless company profile can never be publicly listed in cleanconnect
- PR #219 opened: feat: PWA install for everyone + web push notifications in cleanconnect
- PR #218 opened: chore: switch Claude CI workflows from Fable 5 to Opus 4.8 in cleanconnect
- PR #217 opened: feat: installable PWA + web push scaffolding in cleanconnect
- PR #228 opened: fix: accept base64-encoded Passport keys from env (fixes MCP 500) in cleanconnect
- PR #220 opened: fix: null cleaner-name 500s on /cleaners listing and profile pages in cleanconnect
- PR #122 opened: fix: Bellwether domain → bellwether.report in progress
- PR #121 opened: feat: crunch proof + Bellwether reframe in progress
- PR #119 opened: refactor: /work-with-me/{slug} personalised pages + 'Shipped.' heading in progress
- PR #120 opened: feat: master-detail proof showcase in progress
- PR #103 opened: fix: UmamiService reads flat /stats shape — analytics showed zeros in progress
- PR #112 opened: feat: coolify-mcp proof page (Signal design language) in progress
- PR #104 opened: fix: top pages widget — Umami renamed metric type 'url' to 'path' in progress
- PR #114 opened: feat: per-agency outreach pages + Smart Web Agency instance in progress
- PR #115 opened: feat: redesign /work and /reviews in the Signal language in progress
- PR #123 opened: feat: crunch + Bellwether teardown pages in progress
- PR #118 opened: feat: funnel host routing for ai.stumason.dev in progress
- PR #117 opened: feat: /work-with-me catch-all page + consolidate /for-agencies in progress
- PR #111 opened: feat: surface case studies — link from service pages + SEO in progress
- PR #110 opened: feat: lead service CTAs with low-friction Send a Message in progress
- PR #108 opened: feat: contact widget on every page + service-page Book a Call in progress
- PR #116 opened: feat: agency reviews marquee + link to /reviews in progress
- PR #113 opened: docs: agency GTM plan (north star + done-done checklist) in progress
- PR #109 opened: feat: above-the-fold CTA on service pages in progress
- PR #107 opened: fix: install pusher-js — uncaught error breaking app boot in progress
Commits
- 10 commits to polar-flow-server
- 10 commits to shop-template
- 10 commits to shop-template
- 10 commits to shop-template
- 10 commits to shop-template
- 10 commits to shop-template
- 10 commits to shop-template
- 10 commits to shop-template
- 10 commits to shop-template
- 10 commits to claudavel
- 10 commits to pepti
- 10 commits to pepti
- 10 commits to pepti
- 10 commits to pepti
- 10 commits to real-estate-data
- 10 commits to real-estate-data
- 10 commits to real-estate-data
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to devtrends
- 10 commits to laravel-kick
- 10 commits to laravel-coolify
- 10 commits to laravel-coolify
- 10 commits to coolify-mcp
- 10 commits to coolify-mcp
- 10 commits to coolify-mcp
- 10 commits to coolify-mcp
- 10 commits to coolify-mcp
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
- 10 commits to progress
Get the Friday email
What shipped, what worked with the agents, one thing worth nicking.
No spam. Unsubscribe anytime. Privacy policy.