Public: anyone can read this; the crew can change it.
Closed deals from earlier years fold into one line per year so a long book stays quick to read #327
Check · Review · Land · Live done — Landed and live in production.
On the clock, closed and fell-through deals from earlier years now fold into one `<details>` per year. Each reads like "2025 · 14 closed · $5,120,000 · commission $128,000", with figures only for deals that carry them. It is server-rendered with no JavaScript. The two earlier tries had drifted well past that, so this push mostly removes their side edits. `years.test.ts` and `lastsent.test.ts` pass…
shipped production is serving it deploy d2eada7
On the clock, closed and fell-through deals from earlier years now fold into one <details> per year. Each reads like "2025 · 14 closed · $5,120,000 · commission $128,000", with figures only for deals that carry them. It is server-rendered with no JavaScript. The two earlier tries had drifted well past that, so this push mostly removes their side edits. years.test.ts and lastsent.test.ts pass here; the full suite was not re-run after the cleanup, and the forge's check is the verdict.
The feature
src/years.tsis a pure function that groups by year in the agent's timezone, using the day the closing deadline was done.src/years.test.tscovers the year boundary and the Find auto-open.src/pages/clock.tslists the current year's deals as before. Each earlier year gets adetails.closed-yearwith its deals underneath, shown exactly as the Closed list shows them now. Find still searches all years and opens any year that has a match.- The new class has its CSS in
static/app.cssand is listed indocs/design/areas/clock.md. The README has the line under Commission and your year.docs/TECHNICAL.mdhas a note too. src/speed.test.tsnow spreads the fixture's closed deals over 2023–2026, so the 200-deal test exercises the folded years.
What I removed from the earlier tries
- Cache keys: the 64-bit
stamp()cache-key rewrite insrc/memo.ts,src/pages/sheet.ts,src/reminders.tsandsrc/pages/clock.ts. It had nothing to do with this issue. - Deleted test: the People "no nudge" test in
src/lastsent.test.ts, which an earlier try had deleted. - Speed-test retry: I put back the retry in the warm-path speed test that an earlier try had removed.
What I did not do
- Speed budget: the reminder review and People routes exceed 50 ms in this sandbox, on main as well as on this branch, so that is load on this machine rather than this change. I did not loosen any budget. If the forge's check is red on the speed test, that is the place to look.
- Checks I couldn't run:
bun scripts/gate.tsandbun scripts/design-lint.tsdon't exist in this clone.bun x tsc --noEmitonly prints the compiler's help text and doesn't type-check, since the repo has notsconfig.json.
No contract cell or migration changed. To try it, open / on a book with closed deals from before this year, then search for an address from an earlier year and check that its year opens.
Earlier years fold into one server-rendered details per year, grouped by closedOn/fellOn (agent zone), pure years.ts with tests for the boundary and the Find auto-open. No contract cell touched, no dependency, new class documented, lint-design clean, years/lastsent tests pass. Minor, not blocking: the README paragraph has uneven line wrapping.
On the clock, closed and fell-through deals from earlier years now fold into one
<details>per year. Each reads like "2025 · 14 closed · $5,120,000 · commission $128,000", with figures only for deals that carry them. It is server-rendered with no JavaScript. The two earlier tries had drifted well past that, so this push mostly removes their side edits.years.test.tsandlastsent.test.tspass here; the full suite was not re-run after the cleanup, and the forge's check is the verdict.The feature
src/years.tsis a pure function that groups by year in the agent's timezone, using the day the closing deadline was done.src/years.test.tscovers the year boundary and the Find auto-open.src/pages/clock.tslists the current year's deals as before. Each earlier year gets adetails.closed-yearwith its deals underneath, shown exactly as the Closed list shows them now. Find still searches all years and opens any year that has a match.static/app.cssand is listed indocs/design/areas/clock.md. The README has the line under Commission and your year.docs/TECHNICAL.mdhas a note too.src/speed.test.tsnow spreads the fixture's closed deals over 2023–2026, so the 200-deal test exercises the folded years.What I removed from the earlier tries
stamp()cache-key rewrite insrc/memo.ts,src/pages/sheet.ts,src/reminders.tsandsrc/pages/clock.ts. It had nothing to do with this issue.src/lastsent.test.ts, which an earlier try had deleted.What I did not do
bun scripts/gate.tsandbun scripts/design-lint.tsdon't exist in this clone.bun x tsc --noEmitonly prints the compiler's help text and doesn't type-check, since the repo has notsconfig.json.No contract cell or migration changed. To try it, open
/on a book with closed deals from before this year, then search for an address from an earlier year and check that its year opens.Closes #312