diff --git a/docs/TODO.md b/docs/TODO.md index c4efd34..9dc0c00 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -3,7 +3,7 @@ Everything requested and not yet delivered. Ordered roughly by dependency, not priority — say which to take and I'll reorder. -Updated 2026-09-11 (evening). +Updated 2026-09-11 (overnight). --- @@ -37,31 +37,46 @@ Captured so nothing is lost while the article writing runs. anything authored, AI conversations); reports the counts afterwards. ### Articles — prose and links -- [ ] **Rewrite article prose in the third person, impersonal** — "diagnosis is - made by", "response to treatment is assessed by". One agent pass per - article: keep every fact and reference, keep the `[[id|Title]]` markers. +- [~] **Third person, impersonal** — 819 imperatives across 348 sections. Nine + of ten batches applied (740 imperatives cleared, 79 left in 43 sections); + one batch outstanding. `scripts/prose_pass.py` exports, takes rewrites + back, and refuses any that lost a cross-reference, changed a number or + landed outside 0.7-1.4x length. First and second person were measured at + zero and sixteen (sample boilerplate) — neither needed work. +- [x] **Smart cross-linking** — done 2026-09-11. First mention per view, lists + as jump lists, the 23 titles in more than 5% of articles link from lists + only. 3,560 links to 2,191, and the tail with it: Seizures 119 to 48. + Re-runnable — it strips its own work and reapplies the rule. +- [x] **37 nested cross-references repaired** — `[[363|[[245|reflux]] disease]]` + from the first linker pass, which rendered as literal brackets. - [ ] **Clinical view in MDM order** — presentation → differential → diagnosis → management → prognosis/outcome where it adds something. -- [ ] **Smart cross-linking** — decide the rule for which mentions become links - (see the note under "From the 11 Sep recordings"). ### Reading and study -- [ ] **Study recommendations by Articles / Disciplines / Systems** — currently - one list by category. Should be three tabs, each linking onward. -- [ ] **Adaptive session** — questions ordered by what would help most, with an - explanation of how it decides. +- [x] **Recommendations by Articles / Disciplines / Systems** — done + 2026-09-11. Three groupings over the same answers; Articles is the + default. Systems rolls up through the symptom keyword's parent and states + its own coverage (1,502 of 2,948 questions). "Practise this topic" works + on whichever axis the row came from. +- [ ] **Adaptive session** — the design and its weaknesses are written up in + `docs/study-recommendations.md`; two defects fixed (a 2,000-row cap that + hid a third of the bank, and an O(n·m) category lookup). Still open: + ordering uses raw accuracy rather than shrunk readiness, and difficulty + is a filter rather than something the session moves along. ### Settings and access -- [ ] **Revamp the settings page** — called out as the worst screen in the app. - Work out what belongs there at all before restyling it: account, theme, - exam objective, voice, integrations, data. Several of those have drifted - in because there was nowhere else to put them. -- [ ] **Access as a tree** — grant a person articles, an image library, a - question folder, or a category branch, at any depth, with "everything" as - one option rather than a checkbox per row. Three grant tables already - exist (`category_grants`, `media_library_grants`, question folders); they - need one way in rather than three screens, and inheritance down the tree - so granting a branch grants what is under it. +- [x] **Settings revamp** — done 2026-09-11. A section list beside one panel, + the section in the URL so it can be linked to. The exam objective moved + in; the notifications panel went, its one control having switched a + reminder scheduler that no longer exists. +- [x] **Access as a tree** — done 2026-09-11. `/access`: a person on the left, + everything they hold on the right. A granted branch shows its children as + covered rather than separately tickable. "Everything" is the moderator + role and says so, rather than a wildcard grant nobody could audit. A + branch now also covers the articles filed under it — an educator could + previously edit a branch's questions but not its reading. +- [ ] **Question folders** — collect questions into folders for assignment, the + one grantable thing the access tree does not yet cover. ### Media - [x] **Audio and video** — a murmur cannot be shown as a picture. Uploads take @@ -88,10 +103,12 @@ Captured so nothing is lost while the article writing runs. label the prose can refer to ("Figure 1") and an order. The 346 existing single paths were backfilled and retitled; the filename stays in the caption as provenance. -- [ ] **Explanation figures as labelled thumbnails** that open a preview, so the - prose can say "refer to Figure 2". -- [ ] **Figure management in the question editor** — add, label, caption, - reorder, remove, using the image picker. +- [x] **Explanation figures as labelled thumbnails** — done 2026-09-11. They + open full size and page between each other; a stem figure stays full + width. Withheld until answers are revealed, like the explanation itself. +- [x] **Figure management in the question editor** — done 2026-09-11. Add from + the bank, name, caption, reorder, remove, per role. An uncaptioned figure + is called out as one nobody will find. ### Dashboard - [x] **Stats are about questions, not quizzes** — questions seen out of the @@ -314,5 +331,7 @@ exam-scoped disciplines. ## From the 11 Sep recordings — still open - **Quiz player, "let it not be showing when you're taking the quiz"** — the recording does not say what "it" is. Most likely reading: in exam mode the right-hand question rail must not reveal right/wrong as you go (study mode may). Confirm before changing. - **Study plan overview cards** — AMBOSS shows per-block progress bars ("0/6 articles · 0/40 questions"); ours shows a status word. Polish once the block page has been used. -- **ArticleSplitView.test.jsx** — passes alone, occasionally fails one test under the full parallel run. Timing-sensitive; look at its waits. +- [x] **ArticleSplitView flake** — fixed. It hovered a link, which starts a + 350ms timer before the preview card appears; it now focuses instead, which + reveals at once. The failures were it losing CPU to the backend suite. - **Third analysis tab "Session analysis"** — AMBOSS lists sessions as a tab; ours are the sidebar, which is what was asked for. Leave unless it comes up.