95444d3bf4
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ei7gCZzdd751uZtPzb1Pep
66 lines
4.3 KiB
Markdown
66 lines
4.3 KiB
Markdown
# todo
|
||
|
||
Everything in the previous list is done — the original wording is in git history
|
||
(`git show d2bc2e9:todo.md`). What landed, and what is still open, below.
|
||
|
||
## Done
|
||
|
||
- **Yearly periods keep their weekday.** A Mon–Sun week recurs as Mon–Sun, not as the
|
||
same two calendar dates landing mid-week. Fixed periods only; flexible ones already
|
||
re-place themselves each year. — `224fe7a`
|
||
- **Red days cost nothing, and now there is a switch.** A test states outright that a
|
||
full week off spends nothing on the Saturday, the Sunday or a holiday. A workspace
|
||
setting, off by default, lets parental benefit be drawn on those days for the money;
|
||
it never reaches for a vacation day, which is not legally possible there. — `b87ad0e`
|
||
- **Calendar cells never resize.** A long holiday name no longer squeezes its week's
|
||
row, and every row is the same height. — `f0f537c`
|
||
- **Presets mean both parents, in long stretches.** Two-parent households default to
|
||
being off together, and the funding switches once per period (3+3 over six weeks)
|
||
instead of flipping daily. — `f76de7b`
|
||
- **Today button**, left of the month dropdown. — `1837154`
|
||
- **FK scraping runs headless again** — `APP_SCRAPER_HEADLESS` in the local, gitignored
|
||
`backend/.env`. The committed defaults were already correct.
|
||
- **`how-it-works.md`** — what the profile fields do to the plan.
|
||
- **Click a holiday to make it a working day**, that date only. — `663d5fc`
|
||
- **Removing a period offers three scopes**: this day, this year, every year. — `35e479a`
|
||
- **A hand-drawn period is funded by the planner** by default; pinning an exact day type
|
||
moved behind Advanced. Double days are now offered in the UI. — `35e479a`
|
||
- **Two parents can hold the same days.** Saving for the second parent was rewriting the
|
||
first parent's days. — `35e479a`
|
||
- **Opening a period shows the dates it actually has**, not the first year's. — `1837154`
|
||
- **A shortfall funds what it can and says what would close it**, including moving the
|
||
window onto Easter — the search now covers four weeks either side instead of three
|
||
days, and the advice is finally rendered. — `11f2a17`
|
||
- **`dubbeldagar.md`** — answers the question, and corrects half of it.
|
||
- **Every year of a repeating period is its own row**, linked by a series id, so one
|
||
year can differ from the rest — Easter moves, and the cheapest week is not the same
|
||
week every year. — `6d92b87`
|
||
- **A day removed from a period stays removed**, across every later sync, with the
|
||
calendar marking it and offering to put it back. — `8cfb9c8`
|
||
- **The e2e suite runs green**, 20 passed on three consecutive runs. It had never been
|
||
executed; the first run failed six ways because the test runner tripped the auth rate
|
||
limiter from a single address. — `e39ec9a`
|
||
|
||
## Open
|
||
|
||
- **Rate limiting is keyed on the caller's address**, which behind a reverse proxy
|
||
without forwarded-header handling is the proxy's — so every user would share one
|
||
30/minute refresh budget, and `AuthContext.tsx` turns a failed refresh into a silent
|
||
logout. The e2e suite hit exactly this. Two separable calls: which proxies to trust
|
||
for `X-Forwarded-For`, and whether a non-401 refresh failure should log someone out
|
||
or retry. The `catch` there has two identical branches, which reads unfinished.
|
||
- **A removed day is never cleaned up.** Delete the whole period and the veto rows stay,
|
||
so a later period covering that date still skips it. Reachable only through that day's
|
||
popover; there is no list of them.
|
||
- **Undo after an "every year" edit** restores the anchor's dates across the series
|
||
rather than each year's previous dates, so per-year divergence from before the edit is
|
||
lost. Would need a per-edit snapshot.
|
||
- **`PLANNING_ENGINE_SPEC.md` §2.1/§3.2/§10.2 and parts of `ARCHITECTURE.md`** still
|
||
describe the single-row recurrence model that no longer exists.
|
||
- **Dubbeldagar are not outside the 480.** `dubbeldagar.md` sets this out: the 60 are
|
||
combined for the couple, as assumed, but each parent still spends one of their own
|
||
days on a doubled date. Nothing in the engine changed on the strength of it — worth
|
||
confirming against Försäkringskassan before anything is built on the other reading.
|
||
- **`ParentalLeaveFetch.dubbeldagar_left`** is scraped per parent and read by nothing.
|
||
Per-parent is the wrong shape for a combined pot. Flagged, not touched.
|