The archive
Auto-written every Sunday, straight off the database
What shipped this week
Week in Review: Jul 13 – Jul 19, 2026 — 56 PRs, 1,004 commits
Stu Mason14 min read
56 PRs merged, 1004 commits, 2 releases, +56,697 lines
Summary
- 56 pull requests merged (↓30% vs last week)
- 2 pull requests opened
- 1,004 commits pushed (↓63% vs last week)
- 2 releases published
- 38 issues resolved
Top Pull Requests
- Web housekeeping: dates through the lib, one verb per action... — cleanconnect
+36,678/-825 - Mobile: bootstrap the test suite — unit layer + coverage gat... — cleanconnect
+5,244/-1,057 - M4 productionize (#7): cuts table, CutPackJob, API + dashboa... — edator-cloud
+2,369/-281 - Team board: magic-link decision desk at team.tidylinker.com — cleanconnect
+2,302/-0 - refacto: move admin infos from dashboard to settings — polar-flow-server
+907/-889view activity
Code Impact
+63,647 additions · -6,950 deletions
Net: +56,697 lines across 704 files
Releases
- laravel-coolify
v3.3.0tov3.4.0(2 releases)
Activity by Repository
| Repository | PRs | Commits | Changes |
|---|---|---|---|
| cleanconnect | 33 | 590 | +54,219/-4,216 |
| coolify-mcp | 3 | 110 | +203/-32 |
| edator-cloud | 10 | 160 | +7,070/-986 |
| laravel-coolify | 5 | 60 | +192/-33 |
| claudavel | 4 | 40 | +1,056/-794 |
| polar-flow-server | 1 | 10 | +907/-889 |
| shift-happens | 0 | 22 | +0/-0 |
| edator-studio | 0 | 10 | +0/-0 |
▶Full Activity Index (228 items)
Pull Requests Merged
- Mobile: one confirm pattern, Celebration and haptics per spec (#323) in cleanconnect (+187/-59)
- The edit room: redesign + the find→watch loop in edator-cloud (+621/-363)
- Tidy Academy public showcase: Wheels2Work moped perk + PDF enquiry pipeline in cleanconnect (+1302/-1)
- Detail screens to editorial, native headers gone, one back rule (#326 part 1) in cleanconnect (+424/-381)
- chore: drop stray sidecar pycache in edator-cloud (+2/-0)
- Wizards to editorial: WizardHeader on the band, PressableScale everywhere (#326 part 2) in cleanconnect (+221/-275)
- Perf: overlap ASR with local perceive stages (#9) in edator-cloud (+208/-34)
- Dashboard dive: pack + cut receipt pages, web library search in edator-cloud (+904/-4)
- Tidy Academy polish: Kickstart logo, redesigned apply form, fix broken PDF on deploy in cleanconnect (+263/-77)
- M4 productionize (#7): cuts table, CutPackJob, API + dashboard trigger, engine in the worker image in edator-cloud (+2369/-281)
- Perf: overlap ASR with local perceive stages (#9) in edator-cloud (+208/-34)
- ASR: silence + hallucination guards (#10) in edator-cloud (+197/-5)
- M4 fidelity pass: verbatim studio doctrine, engine gates, WARM calibration, source coverage in edator-cloud (+1050/-88)
- Mobile: bootstrap the test suite — unit layer + coverage gate (#345) in cleanconnect (+5244/-1057)
- Mobile: Sentry crash and error reporting (#341) in cleanconnect (+628/-90)
- One confirm dialog for every destructive action (#321) in cleanconnect (+434/-591)
- Mobile: offline and token-expiry handling (#351) in cleanconnect (+539/-47)
- Keep Tidy Academy preview pages out of search indexes in cleanconnect (+39/-3)
- Camera presence (#11): zero-shot CLIP vision sidecar + perceive stage in edator-cloud (+473/-6)
- Mobile: deep linking — resolver, auth-gated replay, Universal/App Links plumbing (#352) in cleanconnect (+587/-2)
- Web: Umami funnel events — sign-up, wizards, quotes, bookings, confirm-dialog outcomes (#342) in cleanconnect (+118/-14)
- Push preferences, quiet hours, and permission priming (#346 PR 2) in cleanconnect (+908/-19)
- Push notifications: token registry, Expo channel, tap deep-links (#346 PR 1) in cleanconnect (+1002/-86)
- Team board: magic-link decision desk at team.tidylinker.com in cleanconnect (+2302/-0)
- Fix stray 0 on cleaner profile hero in cleanconnect (+16/-10)
- Suggest alternative cleaners when a direct booking dies (#385) in cleanconnect (+379/-15)
- Derived days-with-space diary on cleaner profiles (#369) in cleanconnect (+404/-0)
- docs: changelog entry for 3.4.1 in laravel-coolify (+7/-0)
- fix(client): real cache invalidation, no host-cache flush, GET-only retries in laravel-coolify (+113/-17)
- feat: ship .claude assets — /commit CDR command + permissions allowlist in claudavel (+170/-1)
- Image lane (#8): frame captions + CLIP visual search, third retrieval lane in edator-cloud (+1038/-171)
- Booking dialog surfaces errors like every other form (#322) in cleanconnect (+103/-83)
- ConfirmDialog: describe the dialog by its consequences panel (a11y follow-up to #335) in cleanconnect (+14/-3)
- Mobile: stop discarding server error messages (#324) in cleanconnect (+46/-45)
- Tab screens to Teal Editorial (#325) in cleanconnect (+410/-250)
- fix: honor key filter on env_vars list so reveal exposes only the requested variable in coolify-mcp (+74/-5)
- chore(release): 2.14.1 in coolify-mcp (+12/-6)
- Web housekeeping: dates through the lib, one verb per action, EmptyState everywhere, one back rule (#327) in cleanconnect (+36678/-825)
- fix: маскировать env-переменные БД по умолчанию и учитывать reveal (#276) in coolify-mcp (+117/-21)
- Light-only: strip the orphan dark: variants (#328) in cleanconnect (+116/-106)
- Sweep lapsed booking series into their terminal label (#303) in cleanconnect (+158/-6)
- Give accepted-but-unpaid bookings a home on the cleaner dashboard (#305) in cleanconnect (+196/-11)
- Mobile: Umami funnel events — wizards, quotes, bookings, sign-up (#342) in cleanconnect (+227/-5)
- Team board: "Share my view" vs "Make this the decision" in cleanconnect (+85/-14)
- Team board: fee-gaming controls decision card (#379) in cleanconnect (+29/-2)
- Team board: focus mode (one question at a time) in cleanconnect (+82/-2)
- Park fixed-price job posting behind a feature flag (#379) in cleanconnect (+248/-108)
- Cleaner responsiveness badge on web and mobile (#383) in cleanconnect (+560/-29)
- refacto: move admin infos from dashboard to settings in polar-flow-server (+907/-889)
- Admin MCP: cleaner responsiveness tool, client job filter, quote responded_at in cleanconnect (+270/-0)
- chore: v3.4.0 release prep — changelog backfill, drop Laravel 11, fix version claims in laravel-coolify (+53/-12)
- fix(ci): let claude-review post comments, unpin legacy model in laravel-coolify (+2/-3)
- fix: pin composer platform to php 8.3 so the lock installs on minimum PHP in claudavel (+355/-319)
- fix(nginx): repeat security headers in static-asset location (completes #115) in laravel-coolify (+17/-1)
- chore(deps): refresh composer.lock to clear security advisories in claudavel (+526/-467)
- fix(ci): unpin retired Claude models, let reviews actually post in claudavel (+5/-7)
Pull Requests Opened
- PR #44 opened: feat: dashboard tabs and responsive overview in polar-flow-server
- PR #24 opened: Design brief: resource provisioner (typed, human-gated infra requests) in cockpit
Commits
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to edator-cloud
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to edator-studio
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to edator-cloud
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to coolify-mcp
- 10 commits to coolify-mcp
- 10 commits to edator-cloud
- 10 commits to edator-cloud
- 10 commits to edator-cloud
- 10 commits to edator-cloud
- 10 commits to edator-cloud
- 10 commits to cleanconnect
- 10 commits to edator-cloud
- 10 commits to edator-cloud
- 10 commits to edator-cloud
- 10 commits to edator-cloud
- 10 commits to edator-cloud
- 10 commits to edator-cloud
- 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 edator-cloud
- 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 edator-cloud
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to laravel-coolify
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to laravel-coolify
- 10 commits to laravel-coolify
- 10 commits to claudavel
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to edator-cloud
- 10 commits to coolify-mcp
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to coolify-mcp
- 10 commits to coolify-mcp
- 2 commits to skills
- 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 coolify-mcp
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 4 commits to shift-happens
- 6 commits to shift-happens
- 5 commits to shift-happens
- 7 commits to shift-happens
- 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 polar-flow-server
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to cleanconnect
- 10 commits to laravel-coolify
- 10 commits to laravel-coolify
- 10 commits to claudavel
- 10 commits to laravel-coolify
- 10 commits to claudavel
- 10 commits to claudavel
- 10 commits to cleanconnect
- 10 commits to cleanconnect
Issues
- Opened: Issue #343 opened: Mobile: OTA updates (expo-updates / EAS Update) before store launch in cleanconnect
- Opened: Issue #353 opened: Mobile: consistent error/empty/loading states + cross-device QA matrix in cleanconnect
- Opened: Issue #351 opened: Mobile: offline and token-expiry handling in cleanconnect
- Opened: Issue #350 opened: Mobile: real address entry (maps / autocomplete) instead of plain postcode field in cleanconnect
- Opened: Issue #349 opened: Mobile: accessibility pass for EAL cleaners in cleanconnect
- Opened: Issue #370 opened: [decision] Decision log + cancellation/refund policy: stop losing decisions in WhatsApp backscroll in cleanconnect
- Opened: Issue #369 opened: [decision] Availability diary on cleaner profiles in cleanconnect
- Opened: Issue #368 opened: [decision] Loyalty scheme: Adele's 10th-clean-free idea vs Keith's funding concerns in cleanconnect
- Opened: Issue #367 opened: [decision] Actual-vs-booked hours: adopt Keith's "don't build it" recommendation + tip function? in cleanconnect
- Opened: Issue #366 opened: [decision] Extend a job mid-clean ("add an hour") in cleanconnect
- Opened: Issue #348 opened: Mobile: App Store & Play Store release pipeline (EAS) in cleanconnect
- Opened: Issue #347 opened: Mobile: payment/charge hardening — SCA/3DS, cancellations, refunds, failure states in cleanconnect
- Opened: Issue #346 opened: Mobile: push notifications (quotes, messages, booking status, payouts) in cleanconnect
- Opened: Issue #374 opened: [idea] [test from the build — safe to close] Proving the ideas box... in cleanconnect
- Opened: Issue #390 opened: Tip button: 100% to the cleaner, offered with the review (implements #367) in cleanconnect
- Opened: Issue #345 opened: Mobile: no automated test suite (0 tests across ~12k lines) in cleanconnect
- Opened: Issue #342 opened: Product funnel events on web and mobile (tool decision needed) in cleanconnect
- Opened: Issue #341 opened: Mobile: crash and error reporting (Sentry) in cleanconnect
- Opened: Issue #271 opened: env_vars list ignores the key parameter — reveal=true dumps every secret on the resource in coolify-mcp
- Opened: Issue #276 opened: Переменные окружения базы данных по умолчанию возвращаются в открытом виде in coolify-mcp
- Opened: Issue #275 opened: Les variables d'environnement d'une base de données sont renvoyées en clair par défaut in coolify-mcp
- Opened: Issue #277 opened: Database की env vars by default plaintext में return हो रही हैं in coolify-mcp
- Opened: Issue #274 opened: Database env var listing returns secret values in plaintext by default in coolify-mcp
- Opened: Issue #352 opened: Mobile: deep linking for notifications and magic links in cleanconnect
- Opened: Issue #365 opened: [decision] Company email & docs: Google Workspace vs Microsoft 365 on tidylinker.com in cleanconnect
- Opened: Issue #379 opened: decision: fixed quotes — controls against fee gaming in cleanconnect
- Opened: Issue #383 opened: Cleaner responsiveness badge: "usually responds in X" + flag for cleaners ignoring requests in cleanconnect
- Opened: Issue #59 opened: Ship Claude-native assets: skills/commands, and decide our position vs Laravel Boost / laravel/mcp in claudavel
- Opened: Issue #385 opened: Suggest similar cleaners when a direct booking is declined or lapses in cleanconnect
- Closed: Issue #41 closed: Harden nginx: deny PHP execution under writable paths in polar-flow-server
- Closed: Issue #13 closed: edator-asr: real container healthcheck (python-slim has no curl) in edator-cloud
- Closed: Issue #10 closed: ASR: guard against Whisper hallucination on near-silent tracks in edator-cloud
- Closed: Issue #321 closed: [ux] B3: Web — every destructive action gets the same confirmation in cleanconnect
- Closed: Issue #11 closed: Port camera presence (on-camera spans) — the last crunch signal in edator-cloud
- Closed: Issue #351 closed: Mobile: offline and token-expiry handling in cleanconnect
- Closed: Issue #352 closed: Mobile: deep linking for notifications and magic links in cleanconnect
- Closed: Issue #12 closed: Dashboard: make it the library (packs, transcript, search, delivery) in edator-cloud
- Closed: Issue #346 closed: Mobile: push notifications (quotes, messages, booking status, payouts) in cleanconnect
- Closed: Issue #374 closed: [idea] [test from the build — safe to close] Proving the ideas box... in cleanconnect
- Closed: Issue #385 closed: Suggest similar cleaners when a direct booking is declined or lapses in cleanconnect
- Closed: Issue #43 closed: Conversation Decision Records (CDRs) — persisting the 'why' alongside code in claudavel
- Closed: Issue #8 closed: M5 slice 2: the image lane — caption + CLIP per unique frame in edator-cloud
- Closed: Issue #322 closed: [ux] B3: Web — booking dialog surfaces errors like every other form in cleanconnect
- Closed: Issue #323 closed: [ux] B3: Mobile — one confirmation pattern; Celebration and haptics per spec in cleanconnect
- Closed: Issue #324 closed: [ux] B3: Mobile — stop discarding server error messages in cleanconnect
- Closed: Issue #325 closed: [ux] B4 / Design 4: tab screens to Teal Editorial (jobs, quotes, work, account) in cleanconnect
- Closed: Issue #326 closed: [ux] B4 / Design 5: detail screens + wizards to editorial; kill native headers; one back rule in cleanconnect
- Closed: Issue #271 closed: env_vars list ignores the key parameter — reveal=true dumps every secret on the resource in coolify-mcp
- Closed: Issue #327 closed: [ux] B5: Web housekeeping — dates/times, CTA verbs, EmptyState adoption, back-nav rule in cleanconnect
- Closed: Issue #277 closed: Database की env vars by default plaintext में return हो रही हैं in coolify-mcp
- Closed: Issue #276 closed: Переменные окружения базы данных по умолчанию возвращаются в открытом виде in coolify-mcp
- Closed: Issue #275 closed: Les variables d'environnement d'une base de données sont renvoyées en clair par défaut in coolify-mcp
- Closed: Issue #274 closed: Database env var listing returns secret values in plaintext by default in coolify-mcp
- Closed: Issue #328 closed: [ux] B5: Dark mode — ship it or strip it in cleanconnect
- Closed: Issue #341 closed: Mobile: crash and error reporting (Sentry) in cleanconnect
- Closed: Issue #303 closed: Lapsed pending booking series are never swept in cleanconnect
- Closed: Issue #305 closed: Accepted-but-unpaid direct bookings have no home in the cleaner's dashboard in cleanconnect
- Closed: Issue #342 closed: Product funnel events on web and mobile (tool decision needed) in cleanconnect
- Closed: Issue #242 closed: [P0] Fixed-budget jobs overcharged: client charged quote × duration_estimate in cleanconnect
- Closed: Issue #379 closed: decision: fixed quotes — controls against fee gaming in cleanconnect
- Closed: Issue #370 closed: [decision] Decision log + cancellation/refund policy: stop losing decisions in WhatsApp backscroll in cleanconnect
- Closed: Issue #369 closed: [decision] Availability diary on cleaner profiles in cleanconnect
- Closed: Issue #368 closed: [decision] Loyalty scheme: Adele's 10th-clean-free idea vs Keith's funding concerns in cleanconnect
- Closed: Issue #367 closed: [decision] Actual-vs-booked hours: adopt Keith's "don't build it" recommendation + tip function? in cleanconnect
- Closed: Issue #366 closed: [decision] Extend a job mid-clean ("add an hour") in cleanconnect
- Closed: Issue #365 closed: [decision] Company email & docs: Google Workspace vs Microsoft 365 on tidylinker.com in cleanconnect
- Closed: Issue #383 closed: Cleaner responsiveness badge: "usually responds in X" + flag for cleaners ignoring requests in cleanconnect
Get the Friday email
What shipped, what worked with the agents, one thing worth nicking.
No spam. Unsubscribe anytime. Privacy policy.