Current state: v2.16.0 (released 2026-10-02 - A reliability release. Errors that used to vanish now say what went wrong: a failed tutor reply shows a message with a retry instead of an empty bubble, a session whose history could not load says so instead of looking deleted, and a page that crashes while rendering offers a way back and a report button. Settings actions, set exports, the share check and lesson progress no longer fail silently. When the backend cannot be reached, you now read "No connection to the server" instead of a browser message. see changelog/releases/v2.16.0.md). Recent prior: v2.15.0 (released 2026-09-17 - Exercises get deeper. A lesson can now declare variables whose values are drawn fresh for every attempt, with numeric free-text answers graded within a tolerance. Three new exercise types join the catalog: Hotspot, Parsons and Ordering, all authorable in the lesson creator. Exercises can also carry an explanation that appears after you answer. In the lesson creator you can write explanations by hand, or have the AI write them when you create a lesson from text. You can also mark the grammatical role of words so cloze exercises pick better blanks. In the browser version, you can apply the AI check's suggestions to your own sets. see changelog/releases/v2.15.0.md). Recent prior: v2.14.0 (released 2026-09-05 - Sessions get a game layer: an optional Spielmodus adds combo streaks, flying points, checkpoints, answer physics, playful hearts/countdown tension, and its own sound set - stackable with two new arcade minigames (Lern-Memory + Snake, TicTacToe against a beatable heuristic AI, a Simon color-sequence game) unlocked through XP, plus flash rounds at set completion. The Lernfunke mascot gets unlockable color variants, and avatars get a preset gallery, frames tied to level/badge unlocks, and photo staging with a confirmation dialog on figure change. see changelog/releases/v2.14.0.md). Recent prior: v2.13.0 (released 2026-08-25 - feature release: in-place exercise-type conversion in the lesson editor (EXP-050 complete: dictation/image-description/cloze/error-correction/free-text/multiple-choice/graded-quiz/reading-comprehension convert into each other with review history carried along, AI-suggest fills conversion-emptied fields); clearer editing of downloaded content ("Edit as a copy", fork derivation + "Eigene Bearbeitung" badge, re-import keeps SRS history of unchanged exercises); correction round records again, read-aloud keeps the screen awake; EXP-044-Option-C UI consolidation (SettingsSection/Modal/DashboardCard/Button family); visual-regression pipeline made trustworthy end to end (container-aligned gate, absolute pixel cap, sync untracked-detection, toast race - #2712-#2722 chain) and deterministic across consecutive runs; see changelog/releases/v2.13.0.md). Recent prior: v2.11.0 (released 2026-08-07 - feature release on top of v2.10.0: learning progress re-anchored to stable exercise identities - a one-time local migration re-keys existing progress on first start, so content corrections (a fixed typo in an answer, a reordered exercise) no longer orphan review cards; matching-exercise UI rework (hint removed, help moved into the button row, progress counter on top); release process firsts: the develop back-merge ran as a PR under enforce_admins, and the publish chain now ships registry-free per-arch image archives (docker save --platform); see changelog/releases/v2.11.0.md). Recent prior: v2.10.0 (released 2026-08-01 - security release: the app now binds to 127.0.0.1 instead of every network interface in all three modes - previously anyone on a shared network (office LAN, hotel WLAN) could open the app without authentication, including stored AI provider keys; fixed on both delivery paths (launcher engine 0.26.0 and the documented compose file); deliberate LAN access stays possible via ADAPTIVE_LEARNER_BIND_ADDRESS=0.0.0.0; see changelog/releases/v2.10.0.md). Recent prior: v2.9.0 (released 2026-07-31 - the downloaded launcher can be quit again on desktops without a system tray (the engine decides by the runtime tray fact; this app's binary deliberately ships without a tray, so closing the window always quits); the lesson order set by the user now drives the learning sequence, not just the list; editing belongs to the individual lesson instead of the whole set; see changelog/releases/v2.9.0.md). Recent prior: v2.8.0 + v2.8.2 (both released 2026-07-30 - the first releases of the 2.7/2.8 line that reached users: the distribution switch (the launcher downloads the ready-built, verified image from GitHub's registry instead of building on the user's machine) plus the state-driven review-progress recovery for the corrected ja/ko/zh A1 lessons #2161; v2.8.2 is the security patch on top: the image's white page from the deny-everything API Content-Security-Policy #2197, and the bare container no longer defaults to debug mode #2198 (the v2.8.1 iteration was superseded by v2.8.2 before tagging); see changelog/releases/v2.8.0.md and v2.8.2.md). Recent prior: v2.7.0 (tagged 2026-07-30 - the distribution-switch release whose artifacts never published: the publish chain's green-precondition could not read the check status #2178 and refused fail-closed; superseded by v2.8.0; see changelog/releases/v2.7.0.md). Recent prior: v2.6.1 (released 2026-07-24 - patch release on top of v2.6.0: the desktop launcher advances two steps - docker-app-launcher 0.15.0 (Docker-permission self-repair + wait-for-Docker #2024) then 0.16.0, and the localized launcher UI now ships in the binary #2031/#2032 (the hand-maintained spec never collected the 11 i18n catalogs); the frozen-binary launcher.json + window-icon + branding fix #2027/#2028; the Create-Lesson book-template file-upload i18n fix #2018; a canonical feature-overview page #2019 + the #1918 mirror-locale port #2033; no app-side schema/API/data-model change; see changelog/releases/v2.6.1.md). Recent prior: v2.6.0 (released 2026-07-24 - feature release on top of v2.5.0: the session chat rebuilt on assistant-ui and cut over #1126 (phased parity migration #1984/#1986/#2003/#2006/#2009, thread becomes the default chat + SessionChat removed #2012); Create-Lesson book path becomes an ingestion tool (book-text file upload EPUB/TXT/MD #1927 + DOCX #1950 with chapter picker, multi-select sections + exclusion heuristic + batch generation #1953, lesson picker for multi-lesson sets #1979); dictation audio-file upload #1911; set visibility via the engine manifest visibility flag #1993 (engine 0.13.1 -> 0.14.0); content-domain selector #1983 + dog-training/traffic-knowledge domains #1938; per-exercise difficulty indicator #1982; launcher context-aware Docker detection (docker-app-launcher 0.14.1) #1966/#1977; CI hardening - required checks on develop #1969, testid-reference gate #1981, visual-baseline auto-sync #1980, Docker build smoke #1995; versionless end-user help #1975 + em-dash sweep #2013; iOS fixes (read-aloud chunking #1928, share-result drop #1941); no app-side schema/API/data-model change; see changelog/releases/v2.6.0.md). Recent prior: v2.5.0 (released 2026-07-21 - feature release on top of v2.4.0: Create-Lesson becomes a full exercise authoring tool (all five core types editable in step 3 #1845, manual add-exercise + native multiple_choice #1853 with a single/multi mode control #1888, discoverable cloze/word_tiles/picture_choice generation #1848, an extension-authoring wizard for all four AI-authored extension types #1859/#1865, legacy English prompt migration on edit #1861); ext:al-dictation (audio dictation) adopted as the fifth extension type #1881 + wizard #1887 + core type picker #1895; the PWA update system and the AI key vault are consumed as published npm packages (@astrapi69/pwa-update #1873, @astrapi69/ai-key-vault #1868); exercise grading/payload/authoring consolidated under lib/exercises #1862/#1867/#1877; governance rules PR-PFLICHT #1846 + TESTPLAN-PFLICHT #1858; iOS/WebKit hardening #1839/#1832 + a night-shift WebKit gate #1843; engine re-pinned -> 0.13.1; no schema/API/data-model change; see changelog/releases/v2.5.0.md). Recent prior: v2.4.0 (released 2026-07-18 - feature release on top of v2.3.0: a Create-Lesson authoring upgrade (knowledge lesson from pasted textbook text #1745, edit + combine own lessons #1752, card image upload #1764, typeable exercise count #1761), free-text multiple accepted answers + an AI second opinion #1803, an AI key-import UX on the settings AI tab #1769, the content engine re-pinned -> 0.13.0 / schema 1.8 so uploaded images feed picture_choice #1774, the frontend god-file burn-down completed (10 modules split by concern + tightened ratchets #1802), a content-load robustness sweep (unicode/umlaut card ids #1809, friendly lesson-load error #1826, missing-profile guard #1788) + ghost-content lifecycle fixes (#1818/#1825/#1822), an i18n script-sanity lint #1759, the Docker/Bun close-out #1772; app schema 1.7 -> 1.8 additive, no app-side schema/API/data-model change; release-gate hardening surfaced by the first real release-prepare gate run - unzip in the Playwright image #1829, engine schema-version sync #1830, key-vault cross-tab scroll #1831; see changelog/releases/v2.4.0.md). Recent prior: v2.3.0 (released 2026-07-16 - polish + consolidation release on top of v2.2.0: the EXP-044 CSS concern-split is complete - global.css decomposed byte-identically into per-concern styles/legacy/ files and left as a pure import manifest (Peels 1-5 + Batches A-E #1663-#1690), guarded by a byte-identity gate #1657 + an accepted-conflicts allowlist #1630, with the final #1592 zone wrapped into @layer legacy #1695; a lesson-player UX rework (collapsible options panel #1628, pause control moved into the footer #1644, slimmer title area #1635, duplicate summary favorite removed #1649); listen-first audio for free_text + matching #1687; authored card.difficulty as the adaptive cold-start prior #1683 + card-less pool tolerance #1637 + context-free cloze decline #1669; hardened lesson/set file import/export (collisions, partial import, size guard, Save-as-file) #1681/#1685; shared Tile + FormHint primitives #1714/#1720; CI - symmetric backend path gate #1659, visual-baseline gate #1641, forceRerunTriggers #1673; engine pin -> 0.12.3 #1678; a Create-Lesson wizard + Dexie content-visibility fix sweep (#1721/#1737/#1724/#1674/#1730, #1719/#1734/#1706/#1717); a11y skip-to-content fix #1727; no schema/API/data-model change; see changelog/releases/v2.3.0.md). Prior: v2.2.0 (feature release - extension-exercise tier (4 AI-authored types #1579) + native multiple_choice #1525, app as schema consumer of learn-content-engine (additive 1.5 -> 1.7), federated content-repo registry #1511, simpler mobile nav #1512, EXP-044 cascade repair (Tranches 0-2c), Playwright 1.61.1, Bun, 499 lessons / 35 sets / 6 domains; changelog/releases/v2.2.0.md), v2.1.0 (polish release - ghost-progress fix + Settings per-tab panels; changelog/releases/v2.1.0.md), v2.0.0 (first public launch; changelog/releases/v2.0.0.md). Earlier: v1.99.0 (released 2026-07-04 - mobile-hardening + content-flow release: tappable multiple-choice answer buttons (shared ChoiceButtonGroup) replace the native dropdown for cloze select-mode questions, fixing the iOS tap-misfire (#1341/#1342); opt-in auto-advance after a correct answer (#1330/#1331); inline worked examples on theory steps + exercises, additive lesson-schema 1.4 -> 1.5 (#1326/#1327); "Ask AI" about a theory block / exercise via the BYOK path (#1321/#1322); Discover gains a visible source-language filter (#1343/#1344) that follows a UI-language switch (#1347/#1348) and a "New" indicator for freshly published sets (#1339/#1340); multi-select with a bulk-action bar in "Meine Inhalte" (#1351/#1352); a typed imported-repo category + reusable badge (#1319/#1320); a Latest-strand QR + QR image upload for add-repo (#1316-#1318); Soft Pop becomes the default theme (#1315); the Content-Engine source->canonical boundary made explicit (EXP-042, #1311); device fixes - iOS focus-zoom (#1353/#1354), iPhone delete menu (#1349/#1350), persisted UI language (#1333/#1334), catalogue force-refresh (#1337/#1338); an i18n LLM quality pass for id/ja/ko/tr/el (#1313/#1314); additive schema bump only, no API/data-model change; see changelog/releases/v1.99.0.md). Prior: v1.98.0 (released 2026-06-30 - ContentHub-redesign + i18n release: a collapsible desktop sidebar (#1263), a global grid/list content-view preference defaulting to list (#1261) + a Discover grid/list toggle (#1264), per-set status management (active/deferred/completed + delete) in "Meine Inhalte" (#1301), a ContentHub inline info button (#1274), and the "Weitermachen" panel removed from "Meine Inhalte" (#1270); Dev Mode now defaults ON in the Latest strand and OFF in Haupt (#1271); Error-Replay ("Fehler trainieren") successes now merge back into the SRS error list (#1304); a Spanish/French LLM-assisted i18n quality pass - restored Spanish accents (#1289), French informal "tu" register (#1291), and 67 fr/26 es diacritics fixes (#1303); a help+README + docs sweep (#1280/#1283); first release cut + finished through the one-click workflow_dispatch pipeline; no schema/API/data-model change; see changelog/releases/v1.98.0.md). Prior: v1.97.1 (released 2026-06-29 - content-browsing UX + release-tooling: ContentHub IA reorg moves the import/creation actions + My Lessons into the Import tab (#1256); content-browser list/grid view toggle (#1243) + newest-download-first ordering (#1242); Discover compact Search/Filter bar (#1247); ContentHub info button replaces the intro text (#1252); key-export passphrase inline validation (#1245) + key-vault password-manager opt-out (#1239); plus the one-click workflow_dispatch release actions (#1233/#1234/#1235) hardened to run Playwright in the official mcr.microsoft.com container (#1248/#1250); no schema/API/data-model change; see changelog/releases/v1.97.1.md). Prior: v1.97.0 (released 2026-06-28 - schema + tooling release: the lesson JSON-Schema becomes the App-authoritative single source of truth (EXP-039) — schema/quality-rules/doc/TS-types generated from the App's Pydantic models (#1197), TS lesson types consume the generated schema (#1200), and the structural validator is ajv-hardened against it (#1205), guarded by a make sync-schema-check drift gate; cloze multiselect "select all that apply" (#1195); an exam-mode SRS interval boost for correct exam answers (#1040); a passphrase-encrypted .alk export of AI keys + provider settings (#1165), surfaced on the Settings AI tab (#1181/#1183); a vertical desktop sidebar for primary nav (#891); a single-set deep link /content/set/:setId (#892); the native Web Share sheet + desktop social-link fallback (#1219); Latest-strand visibility + About-tab badge (#1172); iOS Add-to-Home-Screen guidance + testable manifest (#1167); an EXP-041 generation rule coupling exercise type to learning goal (#1225); device fixes — cloze My-answer/Solution toggle (#1216), success-Continue merge (#1218), X-share text (#1227), domain-aware word_tiles instruction (#1228), download-date set sorting (#1211); two #809 god-folder splits (components/exercises #1206, hooks/lesson #1210), a lib/ai split (#917/#1190), a verify-theme token/contrast gate (#1169), and an MkDocs help + README docs sweep (#1215); no schema/API/data-model change (additive generation pipeline over the existing Pydantic models, Alembic/Dexie unchanged); see changelog/releases/v1.97.0.md). Prior: v1.96.0 (released 2026-06-26 - imported-chat backend/API-mode parity (#1154) on top of the Dexie-mode imported-chat fixes (raw transcript #1078, rebuild-on-resume #1122, #797 suppression #1137, header topic #1141, clean intro #1143, session.get FK #1147), Reverse (#1013) + Endless (#1015) lesson modes, invitation-code content sharing (#1094), online-to-local data migration (#1099), the docker-app-launcher engine (#1064), SEO meta/OG/sitemap (#1108), and an auto-deploying preview site on adaptive-learner-content-test (#1135); see changelog/releases/v1.96.0.md). Prior: v1.95.0 (released 2026-06-23 — learning-modes release: Practice/Exam/Timed/Zufall lesson modes + "Fehler trainieren" entry points (#1007/#1008/#1010/#1026/#1025), exam delayed feedback + a dedicated end-of-exam result view + a 1.5x XP bonus with the chosen mode persisted on the attempt (Alembic 0033, #1037/#1039/#1033), word-tiles + free-text My-answer/Solution toggles (#1006/#1020), set export to a GitHub repository (#1018), and a launcher overhaul — single persistent window as the sole GUI entry point (#1045), verbose per-step startup cleanup (#1052), and a make launcher-test log-capture target (#1051); see changelog/releases/v1.95.0.md). Prior: v1.94.1 (released 2026-06-22 — launcher hotfix: the Windows port check now sets SO_EXCLUSIVEADDRUSE so an in-use port is no longer reported free (the launcher's port-conflict detection silently failed on Windows), which also unblocks the Windows launcher build so the .exe attaches to the release (#990); see changelog/releases/v1.94.1.md). Prior: v1.94.0 (released 2026-06-22 — launcher-hardening release: a pure, fully-tested Actions layer + CLI/GUI parity (#966), a single never-self-closing launcher window with an inline live-validated port field (#984), and end-to-end launcher fixes — prod build npm ci (#954), startup crash (#961), uninstall-verify (#964), repo slug + links (#950/#952), default port 8501 (#962), health-check on the published port (#985), local-repo build from a source checkout (#981); plus lesson retry-with-improvement (#984) and a Matching answer/solution toggle (#978); no schema/API/data change; see changelog/releases/v1.94.0.md). Prior: v1.93.0 (released 2026-06-22 — launcher + content-dialog release: Docker-first launcher flow with a step-checklist progress window, configurable host-facing public port + conflict detection, project pinned to adaptive-learner (nginx<->backend port fix), brand icon (#942); AI/quality check dialogs now scrollable + dismissable via a shared ModalShell (#937); AI content-check provenance — "Checked with: provider (model)" in the dialog + Markdown export (#940); no schema/API/data change; see changelog/releases/v1.93.0.md). Prior: v1.92.0 (released 2026-06-21 — Dexie-hardening + technical-debt release: CRITICAL installed-PWA-now-uses-Dexie fix (#907) plus browser-direct Dexie fixes (study guide #902, pronunciation #903, identity hidden #914), tabbed Dashboard (#858), six god-folder splits dropped from .dirsize-baseline (#874–#879), cc>20 complexity offenders cleared (#884–#887), ~387 docstrings/TSDoc across the repository/schema/route/lib contract layers (Clean Code Block 8, #888), Block 9 cleanup (#889); no schema/API/data change; see changelog/releases/v1.92.0.md). Prior: v1.91.0 (released 2026-06-20 — UX release: navigation restructuring (EXP-037, #850) — the primary nav drops from 12+ entries to 7 grouped entries (Nielsen-Norman 5-7) with no function loss, every page still reachable: a 7-entry primary bar (Dashboard, Lernpfad, Meine Inhalte, Entdecken, Fortschritt, Settings, Help) via a reusable NavGroup labelled-section component; a mobile BottomTabBar (5 tabs — Lernen, Inhalte, Entdecken, Fortschritt, Mehr — plus a "Mehr" bottom sheet, hidden on the funnel + during lessons, 44px targets, all themes); ProgressHub (/progress tabbed Übersicht / Statistik / Meine Pfade, embedding Progress + LearningStatistics + Curriculum, only the active tab mounted); DiscoverHub (/discover gains an Import tab); Anki removed from the nav, reachable via an action on Meine Inhalte (/anki kept); Session also removed from the nav (route kept); redirects keep old links alive (/statistics → /progress?tab=stats, /curriculum → /progress?tab=paths, /import → /discover?tab=import, /import/:id separate); new nav.group. / nav.tab. / progress.tab.* / discover.tab.* / content.anki_export i18n keys in all 11 languages; fix — the PWA update banner no longer reappears after the user accepts "Aktualisieren", acceptance persisted (version + timestamp in localStorage) and gated by shouldShowUpdateBanner with SW activation moved to a capped-backoff background driver (#846); docs — EXP-037 design doc (#848); no schema/API/data change; see changelog/releases/v1.91.0.md).** Prior: v1.90.0 (released 2026-06-20 — feature release: AI Exercise Generation Pipeline (EXP-036 / AIX-01–AIX-06) — generation prompt + defensive JSON parser (#817), a "generate exercises" button on theory-only lessons (#829), a deterministic quality gate (#834), exercise-type distribution + balancing (#835), regenerate-with-feedback (#836), and batch generation for an entire set (#838); animated pair resolution in the Matching exercise (#825, refs #824); a per-provider Test button in the configured-providers overview (#814, refs #813); a desktop auto-update checker via the GitHub Releases API (#843); AI session replies in the learner's UI language via an explicit prompt directive across all 11 languages (#828); a localStorage snapshot in the .alb backup (#791, via #837); changed — localStorage → Dexie migration Part B moving contributions / custom learning paths / language-redundancy state into Dexie (#837, #791), pre-release CI hygiene (msgpack CVE bump, complexity baseline, db.ts → db.ts + db-migrations.ts god-file split) (#844), CLAUDE.md UI-language count corrected 8 → 11; fixes — PWA update banner "Apply now" closes the banner and reloads fresh (#819, refs #818), language dropdown transparent background → mapped bg tokens (#821, refs #820), Matching columns stretch to equal-height rows (#823, refs #822); docs — AI content-validation user guide (#841), EXP-036 design doc (#815); no schema/API/data change; see changelog/releases/v1.90.0.md). Prior: v1.89.0 (released 2026-06-19 — feature release: configured AI-providers overview in Settings with a masked key preview (#812); .alb ZIP backup now carries a localStorage snapshot on export/import (#792); browser-direct Anki AI card extraction in Dexie mode (#808); theory-only offline lessons can be saved (#796); changed — AI chat analysis runs in the active UI language (#806), the API-key live test uses the models-list endpoint instead of a generation call (#800), Gemini/OpenAI key-format validation relaxed (#794/#782), the AI gets lesson-progress context on session start (#798), directory restructuring grouping oversized directories by concern + a god-folder CI guard (#811); fixes — native confirm() replaced with an app confirmation modal (#784), button-styled set/learning-path links carry data-slot so labels stay visible (#780), Dexie-mode api_key_backups no longer crash an API-mode import (#788), .alb files accepted at every backup-import surface (#786), per-level statistics labels stack above the bar (#805), ContentPage complexity gate restored (#790); deps — cryptography 49 + backend/frontend minor-patch groups (#776/#777/#778); no schema/API/data change; see changelog/releases/v1.89.0.md). Prior: v1.88.0 (released 2026-06-18 — feature release: QR-code app sharing — a "Share the app" entry in the About tab shows a scannable QR code of the public app URL with copy / download-PNG / native share, backed by a reusable shared/QrCodeModal reusing the bundled qrcode lib (#775); Content Browser / Discover search separation — the Content Browser ("Meine Inhalte") shows only locally downloaded content and the index search + per-set download moved to /discover ("Inhalte entdecken"), cross-linked both ways (#773); media priority + the set's companion book shown first in "Vertiefe das Thema" (#770); fix — Settings token/API-key inputs no longer trigger the browser password manager (#768); docs — release-time version-badge + roadmap/backlog header refresh (#771); no schema/API/data change; see changelog/releases/v1.88.0.md). Prior: v1.87.0 (released 2026-06-18 — feature release: EXP-034 content discovery + search index (#735/#738/#740/#742), Curriculum Builder (#737), daily learning reminders (#744), EXP-031 .alb ZIP backup (#714), EXP-032 deterministic content-quality checks (#712), Korean + Indonesian UI + social sharing + Anki .txt export (#728), configurable review-session length (#724), editor right-click context menu (#753), new teal brand mark + dark variant (#719/#725), Hindi UI complete (#755/#758); late hardening — mobile nav 375px overflow (#759), dexie backup .alb assertion (#760), live review-badge decrement (#761), equal-height choice tiles (#762); no schema/API/data change; see changelog/releases/v1.87.0.md). Prior: v1.86.0 (released 2026-06-17 — feature release: EXP-033 AI Content Validation (set-wide AI checks — batched prompt + parser #676, "Check with AI" report UI #683, IndexedDB-cached report + Markdown export #687, content-hash + signature + AI-checked badge #691) + EXP-029 Media Integration (media.yaml parser + reciprocity gate + "Vertiefe das Thema" lesson section + set media badges + offline YouTube thumbnails #688) + Settings "Check for updates" button #669 + autofocus in Cloze/Free-Text #693; P1 fixes — review-badge decrement after a session #675, SRS review de-duplication #665, mobile hamburger close on iPhone #667; repository-UI i18n in all 9 langs #662; Greek i18n placeholder #702; #689 CI-gate split (content-loader-dexie-ai extract + ContentPage cc baseline, #704); docs — Library-First audit #695, Content-Repo Guide #670, 32-EXP status audit #677, roadmap/backlog restructure #681, EXP-032/033 design docs #658/#671; no schema/API/data change; see changelog/releases/v1.86.0.md). Prior: v1.85.0 (released 2026-06-17 — P0 hotfix: PWA update banner rebuilt — bottom-anchored + AA-pinned --bg-surface/--fg-primary pair (desktop text was invisible) with padding-bottom: env(safe-area-inset-bottom) + z-[9999] (iPhone Safari banner was unreachable under the address bar / hidden by pull-to-refresh), an accent update button, 44px touch targets, regression-pinned (#653); complexity ratchet gate unblocked by baselining the pre-existing FreeText/WordTiles cc-21 offenders from #647 (#656); no schema/API/data change; see changelog/releases/v1.85.0.md). Prior: v1.84.0 (released 2026-06-17 — maintenance: P1 content-repo import CORS-safe + retry + progress + dialog a11y (#645); P2 inline Markdown rendered in exercise prompts + labels (#647); P2 clickable Settings profile picture with preview dialog (#639); P2 backup import declines foreign JSON files gracefully (#643, #641); user-repo import E2E test (#637); EXP-031 ZIP-backup-format design exploration (#644); no schema/API/data change; see changelog/releases/v1.84.0.md). Prior: v1.83.0 (released 2026-06-16 — maintenance + gap-hardening: P1 review-session fix — Enter shortcut + element de-dup in the queue + live XP-badge recompute (#631); P2 theory markdown-table styling (#633); P2 theory back-link resolves by topic not nearest step (#635); gap-hardening audit #630 closing six gaps — cloze Tab navigation (#623), hints honour the feature-not-available policy (#624), Dashboard favorites Top-5 cap (#625), review "repeat in 2 days" suggestion (#626), free-text "Fast! Achte auf:" typo hint (#627), Dashboard Quick-Review button (#628); no schema/API/data change; see changelog/releases/v1.83.0.md). Prior: v1.82.0 (released 2026-06-16 — hint economy with XP cost + SRS impact + statistics (#611, Alembic 0030); smart review queue — weakness tiers + attempt history + cross-lesson mix capped at 20 (#612, Alembic 0031); PWA update prompt — polled version.json + SW prompt mode (#614); Test Impact Analysis on PR CI — vitest --changed + pytest --testmon, full suite nightly + release (#617); architecture-doc audit — Dexie data-integrity + namespace split + Settings-nav patterns (#620); recommended-repos discovery E2E reactivated (#610); manual test plan automated — 52 Playwright specs across 7 sessions + a nightly workflow (#621); additive Alembic 0030+0031 on element_errors, Dexie schema unchanged; see changelog/releases/v1.82.0.md). Prior: v1.81.0 (the biggest feature release of the project: Learning Statistics page with activity heatmap (#584), SRS due-reviews visualization (#592), staged auto-hint system (#595), lesson favorites (#598), richer error/review UX — answer diff + explanations + summary (#602), Dashboard gamification — XP/streaks/badges with reusable ProgressRing/StreakCalendar/BadgeGrid (#583), lesson-play UX — animated counters/feedback pulse/mid-lesson motivation (#589), offline UX — offline + sync-status badges, download progress, pending-sync count, install button (#605), global keyboard-shortcuts system + help overlay (#587), Hindi as the 9th UI language + Devanagari font stack (#571), searchable LanguagePicker (#568), event-recording/error-report system EXP-028 (#566), interactive avatar crop dialog (#560), Settings sidebar/hamburger navigation (#549), editable display name in Settings>Profile (#579), gamification dashboard API /api/gamification/ (#573), recommended-repos.json live (#574), 20+ reusable shared/ components; CI night-shift (#552/#576); starlette CVE bump (#607); EXP-027..030 design docs; see changelog/releases/v1.81.0.md).* Prior: v1.80.0 released 2026-06-15 (EXP-026 user-lesson folding into the content tree (#97) + EXP-025 book companion (#142, AUTH-01/02) + user profile picture (#508) + localized lesson-split titles (#512) + a11y skip-link/dialog-focus (#514/#515); maintenance: About 320px overflow (#511), flaky near-duplicate test de-flaked (#537), EXP-026 import-cycle + Content.tsx complexity gates fixed (#540/#541); see changelog/releases/v1.80.0.md). Prior: v1.79.0 released 2026-06-14 (minor: XP visibility (header badge + lesson-summary +N XP gain, both storage modes, generic shared/XpBadge) #505/#510 + bidirectional matching selection (B->A, not only A->B) #507/#509 + complexity burn-down complete (validateGeneratedLesson the final offender #497, .complexity-baseline empty, #498-#504) + radon hard gate Phase 2 (blocks cc>20, warns >15) #494/#495 + plugin-tests CI job running the 1018-test plugin suite #471 + reusability policy + shared primitives (ListRow/ProgressBar/LessonStepNav/XpBadge) #474/#477 + P1 matching duplicate-pair scoring fix (score by value, not index) #480/#481; no schema/API/data change; see changelog/releases/v1.79.0.md). Prior: v1.78.0 released 2026-06-14 (maintenance/code-hygiene: the complexity burn-down under the Phase 2 hard ratchet CI gate (#408) — the 1156-line session routes.py split (#412, the last backend cohesion-baseline entry; .filesize-baseline now empty) plus a behaviour-preserving burn-down batch across backend + frontend (LessonPage 67->12 #418, ImportDetail 58->18 #420, backup-diff previewRow 54->3 #422, buildContentSetRow 49->13 #424, AiSettingsPanel/ApiKeyRow 45->9 #428, MatchingExercise 45->17 #433, build_analysis_context 33->3 #416, formatEventLog 40->4 #436, NextStepSuggestions 36->14 #438, and the CCW frontend batch #442-#460); two governance rules added to the Vibe Coding Policy — Release-Freeze (#410) and No-Amend-on-open-PR (#412/#414 origin); two flaky-test fixes — the lesson-tts stale-assertion realignment (#165/#425) and pytest-randomly reactivated to catch ordering leaks (#426/#429); and the EXP-025 (author-provided lesson sets, Refs #142) + EXP-026 (user lessons in the content tree, Refs #97) design explorations; no schema/API/data change; see changelog/releases/v1.78.0.md). Prior: v1.77.0 released 2026-06-13 (architecture release: the three-phase Dexie read-modify-write data-integrity remediation (#390 -> #395/#398/#402), completion of the god-file decomposition across backend + frontend (#341/#353/#354), three warn-only CI watchers - cohesion (#371), security-scan (#378), complexity (#405), the Vibe Coding Policy (#383), backend parameter-dataclasses (#376/#382), a feature-state policy (#336), the gitflow branching model (#334), and an npm-audit fix (#379); no schema/API/data change; see changelog/releases/v1.77.0.md). Prior: v1.76.0 released 2026-06-12 (maintenance: a useControlledExercise hook + a shared ExerciseFooter remove ~300 lines of lifecycle duplication across all 5 exercise renderers, zero behaviour/test change (#322, PRs #323-#328); the per-user backup/sync ownership check consolidated into one canonical pair in sync_service (row_belongs_to_user + record_belongs_to_user; backup imports them) - a security-directional drift closed, behaviour-preserving on all reachable data since every mapped user_id column is non-nullable (#329/#330); the Danger-Zone backup button unified onto the same saveBackupToDisk helper as the Settings export, pinned by a cross-component parity test (#331/#332); TTS no longer reads raw Markdown aloud (#320/#321); the Dexie-mode CI gate runs inside the mcr.microsoft.com/playwright container instead of the hanging cdn.playwright.dev download (#317/#319); the misconfigured prettier-frontend pre-commit hook removed (#316/#318); and content-set download now accepts the content repo's optional domain_label field, fixing a 400 on sets carrying it e.g. the psychology set (#333); no schema/API/data change; see changelog/releases/v1.76.0.md). Prior: v1.75.0 released 2026-06-12 (minor - TipTap editor stack migrated v2 -> v3: the whole @tiptap/ stack (23 packages) bumped 2.27.2 -> 3.26.1 in one atomic change (#311/#314); a mixed v2/v3 tree does not compile, which is why the prior piecemeal Dependabot bumps failed and the major-hold (#305) was put in place. The only code deltas are the v3 breaking-API changes, verified against the installed 3.26.1 packages rather than guessed: TextStyle + Table lost their default export (-> named imports), StarterKit v3 now bundles Link + Underline (disabled so the custom standalone ones do not collide), setContent's second arg is an options object ({emitUpdate: false}), and NodeViewContent is generic with a NoInfer'd 'as' prop (NodeViewContent<"code">). Editor/JSONContent/NodeViewProps type imports unchanged (still re-exported from core). 3953 vitest + 88 dexie-smoke green with zero test changes; the Dependabot @tiptap major-hold (#305) removed so minor/patch flow via the group again. Also: a pre-existing @eslint/js-10 (#310) no-useless-assignment break fixed in 5 files (#312/#313), and the two migrated editor files restored to the repo's 4-space style after an inadvertent prettier reformat (#315). No schema/API/data change; see changelog/releases/v1.75.0.md).* Prior: v1.74.0 released 2026-06-11 (maintenance/infrastructure on top of v1.73.0's feature-strategy work: the 438 pre-existing ESLint warnings cleared and the gate tightened to --max-warnings 0 so the Frontend Tests CI job is green again (#220/#292); a dexie-smoke E2E CI workflow (#301/#302); the whole @tiptap/ stack reconciled to a consistent v2 tree (2.27.2) (#304) + Dependabot configured to hold @tiptap major bumps (#306); CI installs frontend deps with --legacy-peer-deps (#293/#294); and Dependabot bumps - @astrapi69/feature-strategy 0.1.1, @types/node 25, @vitejs/plugin-react 6, @eslint/js 10, ruff, and the minor-patch groups (#295-#300, #307-#310); visual baselines unchanged; see changelog/releases/v1.74.0.md).* Prior: v1.73.0 released 2026-06-11 (minor - feature-strategy integration: a central registry + strategy from @astrapi69/feature-strategy replaces the ad-hoc per-button API-key checks and the Dexie-mode section hiding with three states (active/disabled/hidden) resolved from one memoised, reactive {mode, hasAiKey} context, so AI gates flip without a reload; migrated Import-Detail, Anki, NotebookLM, Dashboard, Pronunciation, the Settings Sync section, and the Learning-Repo git controls (#287); E2E feature tests for the no-key surfaces - content-repo import (#278), Anki extraction/export (#279), NotebookLM package (#280); NotebookLM AI buttons key-gated (#281); TipTap extension-highlight/-table-cell/-task-item pinned back to 2.27.2 to fix the v3-vs-core-v2 MISSING_EXPORT build break (#267/#288); Progress.test wrapped in TestFeatureProvider (#289/#290); dependency bumps - ESLint 10, mypy 2.1, the frontend/backend minor-patch groups, GH actions checkout/setup-node/upload-artifact (#258-#266); see changelog/releases/v1.73.0.md). Prior: v1.72.2 released 2026-06-11 (patch — 3 P3 code-hygiene items: Import-Detail + Import list inline styles migrated to token-backed Tailwind utilities, no functional change (#275); a proper Anki empty state — icon + title + body + 'Import a conversation' CTA + (no-key) API-key notice to Settings>Integrations, 8 langs (#276); and all 3 frontend import cycles resolved by extracting the shared type shapes out of storage/types.ts's implementation back-edges into pure modules (content-validation-types.ts, storage/export-types.ts, api/request-types.ts) — madge now 0, check-circular baseline 3->0 (#252); see changelog/releases/v1.72.2.md). Prior: v1.72.1 released 2026-06-11 (patch — dark-theme button-background fix (raw no longer inherits the UA buttonface ~#efefef on dark themes; the unfinished half of v1.71.0's #185, now background-color:transparent in the base layer, guard-pinned in contrast.test.ts) (#271); 5 serious axe a11y violations fixed (aria-progressbar-name on mission + XP bars, nested-interactive on the ProfileRadar role="img" wrapper, listitem on Content knowledge groups, color-contrast via #271) — 0 violations across all 7 audited routes (#273); the visual lesson-matching view baselined for the first time after the helper switched from the absent controlled-mode matching-submit to lesson-check (#270); the axe suite now runs at all via browser.newContext() (#272); see changelog/releases/v1.72.1.md). Prior: v1.72.0 released 2026-06-11 (minor — CI/quality-infrastructure build-out: ESLint flat config + CI/pre-commit (#222), dependency security scanning (#224), coverage floors (#225), madge circular-dependency guard (#251), Dependabot (#253), Prettier step 1 (#254), bundle analyzer (#255), Stylelint (#257), Playwright visual regression (#244) + axe-core accessibility (#246); plus dark-theme contrast/layout + Import-Detail UX fixes — My Lessons wrap (#226), theory back-link contrast (#228), lesson-summary outline (#230), project-item active state (#232), Import-Detail title (#234), Back-to-exercise outline (#236), Sessions metric overflow (#238), transcript collapsible (#240), Matching mobile overlap (#242); see changelog/releases/v1.72.0.md). Prior: v1.71.1 released 2026-06-10 (patch: dark-theme contrast & spacing sweep + a Session-Detail export fix — recent_sessions now carries session_id so Session-Detail Markdown/PDF export stops failing "Session not found" in both modes (#209); the .btn base class now sets a readable text colour so a variant-less .btn no longer goes invisible on dark surfaces (#211); plus Missions reset → shadcn destructive (#205), ThemePicker inactive tab → fg-secondary + AA pin (#207), Donation badge → --accent-fg (#201), chart data-table trigger → fg-primary + shadcn Table (#218), Matching orange → cyan (#199), Learning-Repo settings layout + dev-info drop (#203), Dashboard tags spacing + Nav Help consistency (#213/#214), Lernmaterialien spacing (#216); see changelog/releases/v1.71.1.md). Prior: v1.71.0 released 2026-06-10 (minor: clearer Matching result feedback - a wrong pair now shows "Deine Antwort: ..." (red, X icon) and "Richtige Antwort: ..." (green, bold, check icon) on separate readable lines, and a correct pair confirms the link as a single "A -> B" line (Lucide arrow, not a Unicode glyph) with a green check; new your_answer + reworded correct_hint i18n in all 8 langs, all colours via the AA-pinned --matching-correct/-error tokens (#191); Enter now works in the lesson-end correction round (CorrectionBlock) via a controlled cloze + the shared useLessonEnterKey hook, so the three Enter surfaces can't drift (#187); a systematic dark-theme button-contrast fix - a base-layer button{color:inherit} so a raw button stops falling back to UA buttontext black with Tailwind preflight off, while losing to every explicit text- utility (shadcn variants untouched) (#185); the content-repo token password input wrapped in a form, clearing the last Chrome "password field is not contained in a form" warning (#119); test isolation - the content-loader cache is reset between tests so the cross-identity backup round-trip stops flaking under pytest-randomly (#164), and the lesson read-aloud Dexie-gate spec given headroom + a retry (#165); plus a content fix - the Miller "7 ± 2" cloze accepts keyboard-typeable +/- forms (content #33); see changelog/releases/v1.71.0.md).* Prior: v1.70.2 released 2026-06-10 (patch: theme contrast + Matching-exercise fixes - the shadcn secondary button variant rendered white-on-teal in soft-pop (1.86:1); its --bg-secondary is corrected to a readable dark tone and contrast.test.ts now pins every button-variant colour pair across all 12 themes (#179); matched Matching pairs no longer use red (red reads as "wrong") via a dedicated red-free --matching-pair-1..7 palette decoupled from the shared --chart- data-chart palette (#181); and the Matching result state now distinguishes correct/wrong pairs - number badges stay visible, correct pairs green on both tiles, wrong pairs red on both tiles + a "correct partner" hint, unmatched neutral, via new per-theme --matching-correct/-error tokens, WCAG-AA verified (#183); see changelog/releases/v1.70.2.md).* Prior: v1.70.1 released 2026-06-10 (patch: onboarding / assessment / content-browser / landing UX fixes - uniform onboarding-wizard step height so the panel no longer jumps between steps (#169); an assessment first-step "Continue later" exit plus a history fix (replace navigation) so the browser back button no longer lands on the onboarding name/topic form (#171); the landing "Read the documentation" link opens in a new tab (#173); onboarding tab order flows Name -> Topic with the Topic help icon taken out of the tab order (#175); and the Content Browser secondary action buttons (Import Lesson / Import Chat / Learning Path) + the Recommended-books toggle switched from the surface-less ghost variant to the bordered outline variant so they stay visible at WCAG AA across all 12 themes in dark mode (#177); see changelog/releases/v1.70.1.md). Prior: v1.70.0 released 2026-06-09 (minor — first-run backup restore on an empty install: onboarding offers Restore-from-backup instead of a from-scratch start, the offer disappears once data is present (#150); a comprehensive v1.61-v1.69 MkDocs documentation overhaul — a feature-oriented help branch (Content Browser, multiple content repositories, backup & restore, content creation incl. the books.yaml format, design tokens, sync, changelog) in all 8 languages plus refreshed lessons/getting-started/onboarding/themes pages, deployed at https://astrapi69.github.io/adaptive-learner/docs/ (#157); context-sensitive in-app help — the nav "?" opens the current view's glossary entry instead of a fixed one, each help-drawer article gains a "Learn more" link to the matching docs page, and 9 new glossary terms (content repository, trust level, streak, assessment + dedicated Dashboard/Content-Browser/Lesson/Settings view entries + backup) ship in all 8 languages (#159); and a manual pre-release QA test plan at docs/reference/MANUAL-TESTPLAN.md; see changelog/releases/v1.70.0.md). Prior: v1.69.0 released 2026-06-09 (minor — theory example links (#139) + per-domain book recommendations (#141) (both via Sprint 2 / #153); an Enter-key shortcut in the Error-Replay runner via a shared useLessonEnterKey hook (#154); and a backup-restore title fix — restore parses the manifest's sets[].title instead of a root-level-only regex, so a restored set keeps its title (not the raw analysis- set_id) and step progress (#134), proven by a real export->import round-trip; see changelog/releases/v1.69.0.md). Prior: v1.68.0 released 2026-06-09 (minor — lesson-result export + theory back-links (#138/#140), a matched-pair color + number-label overhaul (#145), dark-mode contrast fixes for button-styled anchors and outline/ghost buttons (#146/#148), read-aloud no longer reflowing the theory panel (#147), domain-aware matching wording for knowledge lessons (#149), search-icon-right + uniform exercise-card heights (#143), and an About AI-assistance credit naming Claude (Anthropic); see changelog/releases/v1.68.0.md). Prior: v1.67.1 released 2026-06-08 (patch — restored user-generated lessons keep their title + step progress: a Dexie-origin user-generated set (Lesson Creator / saved offline lesson / adaptive snapshot) carries its title in the contentSets row and ships no manifest.yaml, so the API restore dropped it and the set landed manifest-less in the FS cache — Dashboard showed the raw set_id instead of the title and Aufgabe 1/26 collapsed to a bare Fortsetzen; restore now synthesises a one-set manifest from the backup metadata so both resolve (#134); plus the EXP-024 Phase 1 backend repository-pattern refactor, internal only (#133); see changelog/releases/v1.67.1.md). Prior: v1.67.0 released 2026-06-08 (backup is now a complete, self-contained snapshot + EXP-023 user content repositories: the export always carries all 30 tables (empty = [], reverting the v1.66.0 skip-empty) so an absent table can't be confused with an empty one, with full INFO/ERROR restore logging, a scrollable per-table import summary, and persistent non-auto-dismissing error toasts (#126); subjects reconcile by (parent_id, name) (UNIQUE + Alembic 0028 dedup, null-aware root match, self-ref parent remap) so a fresh-install restore no longer duplicates the 77-node taxonomy into 154 (#127); a backup from a prior identity (wiped/re-created install, Dexie-origin) is re-homed to the importing user so it lands instead of cascade-failing every child with "missing parent" — 0 errors where it produced 192 (#129); downloaded content sets now travel IN the backup (manifest + lessons + base64 assets, wire 1.2.0->1.3.0, both storage modes) so a restored install opens lessons immediately and user-generated sets — cache-only — are no longer lost (#130); EXP-023 multi user content repositories Phase A/B/C — connect/add/remove/reorder repos, share via /add-repo deep link + QR, automatic Trust validation, recommended-repos discovery + local ratings (#118/#122/#124); Chrome console cleanup — password inputs wrapped in a form (#119); new BACKUP-AKZEPTANZTEST rule — no backup change merges without a proven real export->import round-trip; see changelog/releases/v1.67.0.md). Prior: v1.66.0 released 2026-06-06 (maintenance — systematic backup-restore fix + deploy-safe lazy-route reload + subject-filter UX polish: backup restore replaces the prior point-fixes with a generic type-coercion + matching layer — unique-key matching for the 13 non-id-UNIQUE tables (singletons + composite keys) with FK-graph-derived child remap + placeholder reclaim (older backup / clean-install no longer hits a UNIQUE violation), JSON serialization for dict/list values bound to Text columns (badges.tier_thresholds etc., fixes type 'dict' is not supported), empty-table skip on export + import; verified end-to-end through the real backup API (#115, #117); GH-Pages auto-reloads once on a stale-deploy chunk-fetch failure via lazyWithReload + Workbox cleanupOutdatedCaches instead of crashing with "Failed to fetch dynamically imported module" (#113); Dashboard subject filter hides at <=1 subject, orders most-used-first, groups by category above 5 (#111); see changelog/releases/v1.66.0.md). Prior: v1.65.0 released 2026-06-06 (resumable assessment + Enter-key lesson shortcut + clearer matching exercises + design-token architecture: abandoning the assessment partway persists the in-flight progress (current question + answers + start time, project-scoped in localStorage, mode-agnostic) and the learner resumes where they left off, with the Dashboard/Settings actively inviting Continue/Create/Retake learning profile, progress cleared once the profile is computed (#106); Enter checks an answered exercise then advances, free-text/cloze submit on Enter, stepping aside for controls that own Enter, Settings>Learning toggle default-on (#103); the last hardcoded colors in global.css route through design tokens with the no-hardcoded-colors guard extended to non-theme CSS + fixed-palette Tailwind classes + docs/policies/DESIGN-TOKENS.md (#101); matching term/definition columns get theme-derived blue/green tints + an aria-hidden A/B chip via color-mix() tokens across all 12 themes, AA-verified (#108); fix — the assessment result no longer overlaps the radar summary/table link with the preferred-method badge (#105); see changelog/releases/v1.65.0.md). Prior: v1.64.0 released 2026-06-06 (onboarding overhaul — a two-field quick start (name + topic only, the rest defaulted) plus an optional one-question-per-screen profile wizard (OnboardingWizard: goal / timeframe / daily minutes / current problem / opt-in assessment, each pre-filled so "Next" always advances, progress bar + Back, persists via getStorage().projects.update), with the assessment now OPT-IN — "Jump right in" goes straight to the Dashboard and the assessment is reachable only from the wizard's final step (#92, #94); fixes — the Content Browser (and any tall page) no longer shows a second scrollbar (html/body lock both axes overflow: hidden so #root is the sole scroll container, horizontal mobile guard preserved; regression pin) (#42) + the sticky lesson footer is pinned to the viewport bottom across steps (lesson-page fills the viewport flex flex-col min-h-full, the step grows flex-auto, no mid-screen float / vertical jump; regression pin e2e/dexie/lesson-footer-stability.spec.ts) (#43) + a WCAG contrast pin for --accent-as-text (≥4.5:1 on bg-primary/surface, ≥3:1 on bg-elevated) plus a catppuccin-mocha nudge so all 12 themes pass computationally (#96); see changelog/releases/v1.64.0.md). Prior: v1.63.0 released 2026-06-06 (6 recommended WCAG-AA theme presets + systematic i18n audit + dashboard subject filter scoped to the user: the Appearance picker leads with a Recommended sub-tab — catppuccin-latte/supabase/graphite (light) + catppuccin-mocha/soft-pop/amethyst-haze (dark), generated from tweakcn presets by scripts/generate_preset_themes.py as full 43-token themes with computationally-enforced WCAG AA (contrast.test.ts across all 12 themes), classic 6 unchanged; i18n audit (#80) — the 77 seeded subject/category names rendered English everywhere, now translated via a subjects.* catalog (60 keys × 8 langs) + lib/subjectI18n.ts (translateSubjectName/translateSubjectPath, fallback to subject.name for proper nouns), plus 92 t() keys called in code but missing from every catalog (whole editor.* toolbar, danger-zone, dashboard metrics, learning-path aria) added + translated in all 8 langs; dashboard subject filter lists only the user's subjects, hidden when none (#72); fixes — theme accent-foreground uses the on-accent colour for AA (#82), dashboard.no_data key added (#84), a backup_service mypy no-any-return (#87); see changelog/releases/v1.63.0.md). Prior: v1.62.0 released 2026-06-05 (backup-restore data-integrity hardening — type-driven datetime coercion (#57) + orphaned-child-row skip on restore with a full FK-order audit (#64); GitHub-Pages build provenance — Vite __BUILD_HASH__/__BUILD_DATE__ + deploy-workflow vars so About stops showing "unknown" (#66); content cache-bust on version change in both storage modes (#62); UI/i18n conformance — sync section hidden without a backend (#51), missing-vs-unsupported exercise_type fallback (#55), dashboard taxonomy.* i18n keys (#76), shadcn buttons (#53/#68/#78), Language panel first in the Learning tab (#69); new .claude/rules governance (GITHUB-ISSUE-PFLICHT + ISSUE-LIFECYCLE, issues-as-queue, docstrings-over-inline-comments) + adopted Bibliogon issue templates/labels; see changelog/releases/v1.62.0.md). Prior: v1.61.0 released 2026-06-05 (app-wide shadcn button conformance + lesson resume-at-paused-step + cross-repo content validation + backup-restore data-integrity fixes: ~200 action buttons across all 13 page areas converted to shadcn <Button> (correct variant, 44px, lucide icon + responsive label, preserved a11y/testids; exercise tiles / editor toggles / graph nodes left raw by design — docs/audits/button-audit.md), and the Settings backup actions made prominent (Create=default / Restore=outline) with scroll-to-top after restore; a paused lesson now resumes at the exact step via LessonProgress.current_step (Alembic 0027 + Dexie, no version bump — persisted on step/autosave/pause, resumed at max(step_results-derived, current_step), reset on abandon/restart); cross-repo content validation — scripts/validate_bundled_content.py makes the content repo the single authority for the README CONTENT-STATS block (pre-commit writes, a Content stats drift CI job checks a FRESH content checkout, deploy double-checks; README now reports 330 lessons / 16 sets); backup-restore fixes — UNIQUE-on-badges.key resolved by natural-key upsert + user_badges.badge_id remap, FK-topological _RESTORE_ORDER, imported_conversation_id added to backup columns; see changelog/releases/v1.61.0.md). Prior: v1.60.0 released 2026-06-04 (lesson-reading UX + Learning Path Achievement Map + Tailwind exercise renderers + help-glossary perf + B1 content complete: auto-hide the sticky lesson header on scroll-down / reveal on scroll-up (new useScrollDirection observing #root, 10 px threshold, motion-safe Tailwind -translate-y-full transform, no layout shift; the sticky lesson footer stays visible; scoped to /lesson /review /adaptive-lesson /error-replay); the Learning Path gains a domain-grouped Achievement Map view (3 views now — Persönlich / Map / Graph); Settings secondary buttons go icon-only on mobile; all 5 exercise renderers (PictureChoice / Matching / FreeText / Cloze / WordTiles) migrated to Tailwind (~85-90 % of the app) + a post-migration theme audit (43-token parity, themed Dialog overlay) + dead-CSS removal; the help glossary is lazy-loaded per language (EN eager + synchronous fallback, the other 7 on-demand chunks via loadGlossaryLanguage + useGlossary), dropping the main index chunk 731->449 KB raw / 245->138 KB gzip (closes PERF-HELP-GLOSSARY-LAZY-01); same-language chat imports (German grammar for German speakers, source==target) are auto-detected as knowledge domain content — the Save flow stamps the lesson domain (schema v1.3) and the Share Wizard inherits the pair instead of repairing it (E2E import-language-pipeline variant 2 un-fixme'd), plus a Dexie async-load wizard timing fix and a github_service mypy no-any-return cast; content reaches the B1 roadmap — de->es B1 / de->en B1 / de->fr B1, 15 lessons each, so de->en/es/fr each ship full A1->A2->B1 — library now 271 lessons / 13 sets / 4 domains / ~66 h; see changelog/releases/v1.60.0.md). Prior: v1.59.0 released 2026-06-04 (Learning Path Redesign — personal path with zoom levels: the old all-225-lessons xyflow graph at /learning-path is replaced as the default by a two-level personal view — Level 1 is one row per downloaded set sorted by last activity (mini progress track, percentage, relative last-activity, one context-aware action: Fortsetzen / Starten / Nächstes Level / Abgeschlossen); Level 2 expands inline (accordion) to per-lesson detail (stars, per-direction mastery, last attempt, current marker) plus adaptive-lesson + set-wide retry-errors actions; a "Nur meine" / "Alle Sets" filter and a collapsible not-downloaded section with per-set download, both persisted in localStorage; a completed course offers its next CEFR level when one exists; the original xyflow graph is renamed LearningPathGraph and kept as a lazy-loaded alternative view so xyflow (~177 KB) leaves the default bundle (personal chunk ~21 KB); new learning_path.* strings in all 8 catalogs; pure buildPersonalPath + relativeTime data layer via usePersonalPath, both storage modes; also folds in the mobile nav hamburger-left fix; see changelog/releases/v1.59.0.md). Prior: v1.58.0 released 2026-06-04 (user-centric UX overhaul — a shared Continue Learning ("Weitermachen") section on the Content Browser + Dashboard surfacing the most recently-touched lesson per set (resume / next-lesson / set-complete), reading LessonProgress + set manifests through getStorage() so both storage modes carry it; the Content Browser reordered search-first with a compact icon-only mobile action toolbar (Import Lesson / Import Chat / Learning Path / Create, 44 px targets); the Dashboard reordered to lead with Continue Learning + the actionable cards (paused / missions / focus / review) before gamification; and a responsive button pattern (icon-only on mobile, icon + label from md up); 23 new frontend tests; see changelog/releases/v1.58.0.md). Prior: v1.57.0 released 2026-06-03 (community PR automation — sharing a lesson creates a real fork -> commit -> pull request (backend github_service + /api/github/* proxy in API mode, browser-direct lib/github/github-api.ts in Dexie mode, via IStorageService.github), GitHub PAT Fernet-encrypted in secrets.yaml and managed in Settings -> Integrations; Content Browser instant search (debounced 300 ms, case/diacritic-insensitive, German-digraph-aware, Cmd/Ctrl+K, lazy index); Tailwind Phase D (shadcn Progress XP bar + a11y, badge-tier dots, toast tokens, Lucide nav + 44 px targets, Help Drawer -> shadcn Sheet, E2E Radix-Select migration); psychology to 90 lessons / 225+ total; see changelog/releases/v1.57.0.md). Prior: v1.56.0 released 2026-06-03 (performance + PWA hardening: ~460 KB gzip saved via lazy per-language i18n catalogs (main chunk 446->233 KB gzip, off every page) + a curated highlight.js (296->21 KB gzip on code lessons); bundle audit at docs/audits/performance-audit-2026-06-03.md; Dexie + backend query layers audited healthy (no page-load N+1; BADGE-EVAL-NPLUS1-01 P3 filed); PWA — offline indicator + network-aware buttons, a localStorage background-sync queue for offline lesson-progress upserts, cache-management UI in Settings->Data, a 7-day/standalone-aware install prompt, and a service-worker StaleWhileRevalidate route for API-mode lesson caching; carries the Tailwind/shadcn migration (Phases B-D — buttons/Card/Badge/Progress, Lesson + Share dialogs, form inputs to shadcn Input/Select, XP bar) + backend API rate limiting (3-tier token-bucket) + OpenAPI docs; fix — restored the per-theme read-aloud control in Dexie mode (getLessonDexie injects the set's language pair/domain; closes TTS-E2E-HEADLESS-GUARD-01; IMPORT-LANG-PIPELINE-SELECT-MIGRATION-01 filed); content at 215+ lessons; see changelog/releases/v1.56.0.md). Prior: v1.55.0 released 2026-06-03 (CSS-framework foundation + Error Replay: adopts Tailwind CSS v4.3.0 + shadcn/ui as the styling framework (Phase A, additive — the migration is incremental: components convert when touched, no Big Bang). Tailwind is configured CSS-first (@theme in frontend/src/styles/tailwind.css) and CONSUMES the existing 6-theme CSS variables (bg-accent -> var(--accent) etc.) so all themes keep working; preflight is intentionally off and all Tailwind output is layered, so unlayered global.css always wins and existing pages stay pixel-identical. shadcn/ui base is wired (components.json + cn() at @/lib/utils + @/* alias; no components installed yet, the semantic-token bridge lands with the first component); LessonStickyFooter is the proof-of-concept; .claude/rules/ + CLAUDE.md updated to adopt Tailwind; full guide at docs/development/tailwind-migration.md. Ships the Error Replay feature ("Fehler wiederholen" — after a lesson, retry only the exercises you failed, via /error-replay/... + error-replay.ts) with priority-aware next-step suggestions (error replay is PRIMARY at 0-1 stars), TTS read-aloud for lesson cards, and Stryker frontend mutation testing wired (nightly, opt-in). Carries forward the 10 sets / 200 lessons / 3 domains content library; see changelog/releases/v1.55.0.md). Prior: v1.54.0 released 2026-06-03 (import-time language pipeline + big content release: languages captured at IMPORT time (chat language + auto-detected learning language) and inherited through analysis -> save-as-lesson -> share so nothing is guessed downstream (ImportedConversation gains source_language/target_language, Alembic 0026 + Dexie v25); the analysis prompt gains a learner-language context block; sharing is domain-aware (source==target ships as non-language knowledge content, mirroring the content repo's validate_content.py); content grows to 10 sets / 200 lessons across 3 domains incl. FR/ES/EN A2 for German speakers, DE->EN A1, Python Grundlagen, Psychologie (65); folds in v1.53.1/.2 fixes (single two-phase button on Adaptive/Review, community-PR attachment for all sizes, ShareWizard source inheritance); see changelog/releases/v1.54.0.md). Prior: v1.53.0 released 2026-06-02 (content schema v1.3 + Python course + domain support: Card gains optional code fields (code_snippet/code_language/expected_output/hint/difficulty/media_type) and CURRENT_SCHEMA_VERSION bumps 1.2->1.3 (additive, major-match); sets/lessons carry a domain (non-language domains allow source==target, both validators); the Content Browser splits Sprachen (language tree) from Wissen (domain groups w/ icons); the lesson viewer renders syntax-highlighted code blocks via lazy highlight.js (language label, copy button, Output block, mobile scroll); code/formula cards drive code-aware exercises (monospace free-text textarea + whitespace/quote-tolerant case-sensitive matching + monospace cloze); a new Python Grundlagen course (de/python-basics, 15 lessons, 123 code-snippet cards, domain=programming) brings the library to 7 sets / 100 lessons / ~22h, all bundled; plus a fix so analysis-to-lesson source_language defaults to the app language not "en" (P3 follow-ups ANALYSIS-TARGET-DETECT-01 / ANALYSIS-DOMAIN-SUGGEST-01 / PLACEMENT-LANG-WARN-01 filed); see changelog/releases/v1.53.0.md). Prior: v1.52.0 released 2026-06-02 (DE->EN A1 content + backup-restore data-integrity fixes: a fifth A1 course — English for German speakers (de/en-a1, 15 lessons; false friends become/bekommen, gift/Gift, handy/Handy, chef/Chef, actual/aktuell; German-targeted distractors; progressive receptive->mixed->productive direction) brings the library to 5 sets / 75 lessons / ~12.5h, all bundled into the GH-Pages build; BACKUP-API-RESTORE-01 — API-mode restore now covers all 30 tables (was 16, silent data loss), restore order derived from the export/sync source with a parity test + 30-table round-trip, plus a per-table flush that fixes a latent FK violation on the FK-decoupled gamification/SRS/content tables; new app/db_guard.py refuses destructive full-table SQL against a production data dir from non-app processes; and a P0 Lesson-Creator fix — a resumed draft with an equal source/target language no longer blocks Step 1; see changelog/releases/v1.52.0.md). Prior: v1.51.0 released 2026-06-02 (Phase 66 / EXP-022 — Visual Learning Path: interactive @xyflow/react lesson graph at /learning-path with mastery-coloured nodes, set-group progress, dagre auto-layout, recommended-next node, error-cluster overlay, filter/search, stats sidebar, full a11y across all 6 themes, lazy-loaded ~100 KB; plus a Dexie backup overhaul — File System Access API save-to-disk, a "Your backup contains" preview, and a data-loss fix restoring the 10 gamification/progress/SRS/missions tables the Dexie export silently dropped; BACKUP-API-RESTORE-01 filed P1 for the backend mirror gap; see changelog/releases/v1.51.0.md). Prior: v1.49.0 released 2026-06-01 (Phase 65 — API-key UX + Community Sharing via PR + Analysis loading: instant API-key format validation (prefix + length per provider, green/red + Save gating), a live Test button (POST /settings/{user}/test-api-key + browser-direct in Dexie; classifies ok/invalid/rate_limit/network), and a rollback cache (new ApiKeyBackup model + Alembic 0025 + Dexie v24 + sync surface — Save auto-tests first, then Keep old / Save anyway / Restore last working); secret.key is now the stable Fernet key source (keys survive restarts) and secrets.yaml keys are UI-editable. Community sharing opens a GitHub PULL REQUEST (lesson JSON committed at sets/{src}/{tgt-level}/lessons/{nn}-{slug}.json, content-repo CI validates). Chat-import Analyze gains a loading indicator (phased progress + estimate + spinner + real Cancel via AbortSignal + friendly inline error). Friendly voice/mic errors instead of raw Web Speech codes. 30 SQLAlchemy models (added ApiKeyBackup). Full i18n in 8 languages). Unreleased on main: native help translations in 6 languages (ES / FR / EL / PT / TR / JA) — the 22-entry help glossary + the full 38-file docs/help tree per language, plus the 6 languages + native nav titles in _meta.yaml; PT/TR/JA flagged AI-generated pending native review (HELP-CONTENT-TRANSLATIONS-01). Prior: v1.48.0 (Phase 64 — Community Sharing UX + Smart Lesson Organization: four-step share wizard + smart placement engine, lesson-level duplicate/variation detection, author credit + contribution history, Missing-Lessons suggestions, content schema 1.2 -> 1.3; merges Smart Next-Step Suggestions after lesson completion; EXP-021 Lesson-Creator exploration). Earlier: v1.47.0 (Phase 63 — Lesson Flow Control) and v1.46.0 (Phase 62 — EXP-018 Exercise Direction). Test baseline as of v1.48.0: 1064 (+1 skipped) backend + 997 plugin + 2816 Vitest = 4877 green; v1.49.0 adds the API-key-validation / analysis-loading / voice-error tests on top. Playwright smoke spec files run separately; the Dexie-mode release gate runs via make test-dexie-smoke.
Priorisierung (abgeleitet aus dem Exploration-Status-Audit, docs/journal/exploration-status-audit.md, 2026-06-17): Aktueller Fokus → Nächste Phase → Zukunft. Die granulare Task-Liste (mit IDs) steht in backlog.md; Abgeschlossenes in der Phase-History-Tabelle weiter unten + unter "Abgeschlossen".
- EXP-021 — Token-Rollen-UI (#3072).
token_rolesliegt seit v1.35.0 (Phase 52I / P-130) im Schema und wird von vier Konsumenten gelesen: Cloze-Generator, Fehler-Klassifikator, Übungs-Pool und Korrektur-Karte. Geschrieben wird es von nichts, und keine ausgelieferte Lektion trägt es. Der Cloze-Generator nennt den token_roles-Pfad seine höchste Genauigkeitsstufe; gefeuert hat sie nie, weil ihre Eingabe nicht herstellbar ist. Gebaut wird ein Annotations-Editor im Karten-Schritt plus ein Vorschlag, den der Autor bestätigt oder ändert (Owner-Entscheidung 2026-09-09). Siehe EXP-021.
EXP-033 war der vorherige Eintrag und ist mit AIV-07 vollständig (#3060, archiviert nach roadmap-archive/2026-09.md).
- EXP-025 — Content-Repo-Oekosystem (AUTH-03..09): Cross-Repo-Author-
Publishing,
companion_repo-Querverweis, Versions-/Update-Handling, Konflikt-Policy, buch-spezifischer Add-Flow, Autoren-Leitfaden. AUTH-01/02 ausgeliefert (#529/#531); mehrere AUTH-Tasks brauchen geteiltes Backend (siehe Zukunft). - EXP-024 — Curriculum Builder / Schichtentrennung Phase 2/3: Plugin- Service-Module auf Repository-Pattern (Phase 2), Frontend-U1 (Phase 3). Phase 1 ausgeliefert.
- EXP-021 / EXP-022 — Content-Authoring-Ausbau: Token-Rollen-UI
(EXP-021, jetzt im Fokus, #3072); Content-Browser-Baum als Graph (UC2)
- Beziehungs-Editor (UC4) (EXP-022). Der Einzel-Übungs-Editor
(
ExerciseEditor.tsx, #1844), der CSV-Datei-Upload und der Bild-Upload für Picture Choice (CardImageField.tsx) sind ausgeliefert und standen hier bis #3071 fälschlich als offen.
- Beziehungs-Editor (UC4) (EXP-022). Der Einzel-Übungs-Editor
(
- EXP-027 — Weitere Sprachen (I18N-06..12): Indonesisch-/Italienisch-UI, formale Uebersetzungs-QA, Content-Sprachpaar-Expansion, Exercise-RTL-Audit.
- EXP-030 — Multi-User (MU-01..05, MU-10, MU-20): lokale Profile → Geräte-Kopplung → Cloud-Konten, gestuft.
- EXP-023 — Server-Features (Phase C): Community-Sterne-Aggregation, Trust 2 (community-verified), zentraler Index, Coach-Aggregation, Einmal-Invite-Tokens.
- EXP-027 — RTL-Infrastruktur (I18N-01 RTL, I18N-04/12 Arabisch, I18N-05 Koreanisch/Hangul, I18N-10 Exercise-RTL-Audit): hoher Aufwand.
- EXP-004 / 009 / 011 / 012 / 015 (länger zurückgestellt): GitHub-Org, soziale Features, Ranglisten/Turniere, Kinder-Variante.
- SaaS-Tier (BL-14..17) + BL-19 (soziale Features): PostgreSQL, JWT, Multi-User, Stripe — bis das Single-User-Modell an eine Grenze stoesst.
- Kleinere offene Posten (Detail in backlog.md): ANALYSIS-TARGET-DETECT-01, ANALYSIS-DOMAIN-SUGGEST-01, PLACEMENT-LANG-WARN-01, PT/TR/JA-Native-Review, SW-Cache-Knobs, iOS-Safari-Meta-Tags, Push-Notifications, native iOS/Android-Wrapper, BADGE-EVAL-NPLUS1-01, PERF-EAGER-GLOBS-01, DEP-MYPY-2-01, DEP-ANTHROPIC-105-01, PLUGINFORGE-LIFECYCLE-UI-01, BACKEND-RADON-REMAINDER-01, EXP-013 Stufe 3.
| Phase | Release | Headline |
|---|---|---|
| 1 | v0.1.0 | Skeleton strip + domain models + core routers + plugin hookspecs |
| 2-4 | v0.1.0 | Backend domain wiring + 7 plugins + frontend pages |
| 5 | v0.2.0 | Multi-provider AI (Anthropic / OpenAI / Gemini), server-side orchestration |
| 6 | v0.3.0 | Per-(method, step) prompt matrix, Lesson CRUD, Playwright smoke specs |
| 7 | v0.4.0 | Cycle-step advance, Dashboard polish, model picker, spaced recommendations |
| 7-extras | v0.4.1 | Skip-button hoist, favicon .ico fallback, CI Release Gate fix |
| 8 | v0.5.0 | Dual-prompt AI cycle transitions, StepEvaluation persistence, tracking aggregates |
| 9 | v0.6.0 | Mobile PWA — responsive UI, service worker, install prompt, offline indicator |
| 10 | v0.7.0 | Dexie parallel storage + GitHub Pages deploy — IStorageService, browser-direct AI, public site |
| 11 | v0.8.0 | Comprehensive MkDocs documentation (DE + EN) — 28 pages across User Guide / Concept / Developer / API, deployed at /docs/ |
| 12 | v0.9.0 | Chat-history import + AI analysis — paste/upload ChatGPT/Claude/Gemini transcripts, extract structured learning insights |
| 13 | v1.0.0 | Local-network sync with AI-merge — bidirectional WiFi sync between devices with intelligent conflict resolution |
| 14 | v1.1.0 | About tab in Settings — five-section panel + system-info endpoint, storage-mode-aware |
| 15 | v1.2.0 | Backup + restore — Dexie + API parity, auto-backup rotation, compare UI, full Settings integration |
| 16 | v1.3.0 | Learning progress export (PDF + Markdown) — 3 report types (Progress / Session / Curriculum), identical wire shape across storage modes |
| 17 | v1.4.0 | Auto-Loop: continue learning after step 7 — topic-transition evaluator, cycle counter, multi-cycle session summary |
| 18 | v1.5.0 | Async AI Calls + Performance — async SQLAlchemy foundation, parallel step-eval + topic-transition at cycle boundary, per-message timing metrics |
| 19 | v1.6.0 | Streaming Learning Response — ai_complete_stream hookspec + 3 provider impls, POST /message/stream SSE route, inline frontend SSE reader, browser-direct Dexie streaming, incremental SessionChat rendering |
| 20 | v1.7.0 | QR-Code Camera Scan for Sync Pairing — html5-qrcode dep, QRScanner + QRScannerModal + QRImageUpload, viewfinder overlay with reduced-motion, haptic feedback, file-upload fallback. BL-04 closed. |
| 21 | v1.8.0 | Sync Gaps: step_evaluations + session_notes + i18n + imported_conversations + imported_messages — Dexie schema v3+v4+v5 aligning with backend Alembic 0006+0007, 62 sync.* keys to YAML catalogs, full 16-table sync surface audit, PluginForge ^0.7.0→^0.8.0. BL-05 + BL-06 closed. |
| 22 | v1.9.0 | Global Subjects and Tags — 4 new tables (subjects, tags, project_subjects, project_tags) join the sync surface (20 tables); pre-seeded subjects.yaml with 80+ nodes across 8 categories; SubjectBrowser + TagManager + ProjectTaxonomy + DashboardFilterBar components; Onboarding subject suggester + tag input. PluginForge ^0.8.0→^0.9.0 (hard-filter transition active). BL-07 closed. |
| 23 | v1.10.0 | Swipe Gestures on Assessment + Session — useSwipe hook (horizontal-only, velocity-gated, reduced-motion-aware), Assessment swipe+keyboard navigation with one-shot hint, CycleProgress swipe-to-peek overlay, TopicNode iOS-style swipe-to-reveal actions, Settings → Interface gesture toggle. BL-08 closed. |
| 24 | v1.11.0 | Provider Model Picker via API — model_discovery service (Anthropic + OpenAI + Gemini /v1/models with 1-hour cache + chat-only filtering), GET /settings/{id}/available-models endpoint, browser-direct model-discovery for Dexie mode (sessionStorage cache), Settings ModelPicker dropdown component with Recommended/All grouping + offline fallback, model validation on session start (warn + fallback to default when override not in cached list), model name + context-window in session header. BL-09 closed. |
| 25 | v1.12.0 | Backup Compare UI — client-side lib/backup-diff.ts engine (UUID matching, chunked async processing, append-only vs mutable split, high-volume tables flagged for summary rendering), shared BackupCompare React component with sortable/filterable per-table cards + field-level diff tables, Settings Compare Backups picker (file/file or file/current), pre-restore diff preview replacing the v0.7.0 row-count table (Restore button gains "(N added, M updated)" dynamic label), Dexie auto-backup "Compare as A/B" controls feeding the same surface, Markdown report exporter (zero-delta tables omitted, high-volume tables summarised, field-level old → new lines), 35 new i18n keys (DE+EN translated, 6 EN-passthrough). BL-10 closed. |
| 26 | v1.13.0 | PT/TR/JA Native Translations — full Brazilian Portuguese, Turkish, and Japanese translations replacing the EN-passthrough placeholders. test_i18n_translation_audit.py pins no-passthrough heuristic + ≥90% divergence from EN. BL-11 closed. |
| 27 | v1.14.0 | Rich-Text Notes with TipTap — session-rating notes, curriculum descriptions and lesson content graduate from <textarea> to TipTap StarterKit + 15 extensions (bold/italic/underline/strike, H1-H3, bullet+ordered+task lists, blockquote, inline code, code blocks with lowlight syntax highlighting in 11 languages, links, character count). BL-12 closed. |
| 28 | v1.15.0 | E2E Playwright Expansion — 10 new smoke specs land alongside the existing 6 (multi-cycle auto-loop, conversation import + analysis, backup roundtrip, sync pairing UI, MD export, subjects/tags filter, rich-text rating, 3-chunk SSE streaming, model picker, no-key empty state). 16 spec files total at v1.15.0. BL-13 closed. |
| 29 | v1.16.0 | Gamification (XP, Badges, Streaks) — UserXP singleton with exponential level curve, 24 badges across 5 categories seeded from YAML, UserStreak with freeze stockpile + weekend mode + GitHub-style heatmap. Dashboard widgets + Settings → Gamification toggles. BL-18 closed. |
| 30 | v1.17.0 | Anki Deck Export — client-side .apkg builder (sql.js + JSZip lazy-loaded), AI-extracted AnkiCardSuggestion candidates from sessions + conversations, /anki page with accept / reject / inline-edit + filters, byte-compatible vocabulary extraction transform shared by backend and frontend. BL-21 closed. |
| 31 | v1.18.0 | Voice (TTS + STT + Pronunciation Practice) — Web Speech API integration; SpeechButton on AI replies + Assessment results, MicButton on Session input with interim transcripts; new pronunciation plugin (phrase generator + judge prompt, Languages-subject-gated eligibility). BL-20 closed. |
| 32 | v1.19.0 | NotebookLM Integration Patterns — new notebooklm plugin: StudyQuestion AI-generated active-recall questions, one-shot study guide generator (~30K chars context), client-side NotebookLM-optimized ZIP export (summary + vocabulary + rules + errors + flashcards + sessions). BL-22 closed. |
| 33 | v1.19.1-v1.19.2 | Phase 33 import-pipeline audit — dedicated Claude.ai per-conversation Markdown parser (claude_md_parser.ts) closes BL-25/26/28 (full timestamp extraction, role boundary preservation, source attribution). Vocabulary extraction in analyzer closes BL-27 (SYSTEM_PROMPT + parseAnalysisResponse extended; chunked merge dedup). metadata.created_at ISO normalisation closes BL-29 (US + DE locale support). |
| 34 | v1.20.0 | secrets.yaml API-Key Storage for Desktop Mode — three-layer config chain (env > ~/.config/adaptive_learner/secrets.yaml > Fernet-encrypted DB column) for AI provider keys + default-model overrides. New ApiKeySource enum on UserSettingsOut (env / secrets_yaml / settings / none) drives the per-provider source badge + Save-button gating in the Settings UI. Auto-generated commented template with chmod 0600 on first run; permission audit on subsequent runs. _ENV_SECRET_OVERRIDES populated with 6 entries (3 providers × {api_key, default_model}). All 6 plugin/router callers migrated from get_decrypted_api_key to resolve_api_key. i18n in all 8 catalogs. |
| 35 | v1.21.0 | Comprehensive Documentation Update — documentation-only release. 10 sub-phases per docs/audits/docs-staleness-2026-05-22.md: CLAUDE.md rewrite (46K → <10K), both READMEs rewritten (v0.8.1 → v1.20.0), ROADMAP table extended through Phase 34, CONCEPT post-v1.5.0 milestones, project-reference rebuilt against shipped architecture, MkDocs help pages version-refreshed. 137 stale version refs closed. |
| 36 | v1.21.1 | Import + Analysis Bugfixes — five regressions surfaced by the v1.21.0 manual smoke against real Claude.ai per-conversation Markdown: analysis language mismatch, silent re-import duplication, curriculum / session CTA always creating duplicates instead of resuming, Anki extraction silently failing. New columns on imported_conversations + curriculums + learning_sessions, paired Dexie schema bumps. |
| 37 | v1.22.0 | Error-Toast + GitHub Issue Report Framework — 5xx error toasts gain a "Report Issue" button opening a Radix dialog with a pre-filled GitHub issue URL (error + optional env info + opt-in sanitised action history). Exception-handler chain extended in DEBUG mode (stacktrace + endpoint + method embedded in response body); new in-memory action recorder on the frontend. |
| 38 | v1.23.0 | In-App Contextual Help System — 22 glossary concepts (curriculum, learning project, learning profile, learning session, the six learning methods, the seven cycle steps, five app features) surfaced via dotted-underline HelpTooltip + slide-over HelpDrawer with full Markdown articles. Settings > Help browser + search. v1.23.1 + v1.23.2 followed with tooltip mounts on all post-onboarding routes, Recharts width-warning fix, stronger dotted-underline visibility, icon-button a11y sweep, and a button-tooltip user preference toggle. |
| 39 | v1.24.0 | WCAG 2.1 Level AA Accessibility Audit + Remediation — full audit + atomic fixes for the two real AA violations surfaced; new dev dependency, regression tests pin each finding. 380-line audit at docs/audits/wcag-2026-05-23.md. |
| 40 | v1.24.1 | Release-Automation Hardening — Bibliogon's 4-Tier model adopted: package-lock propagation, open-set version-literal discovery, advisory WARN wiring, aggregate make release-* targets, 4-Tier architecture documentation, plugin refactor unblocking the verify chain. No user-visible runtime changes. |
| 41 | v1.25.0 | Identity Persistence + Browser-Wipe Recovery + Danger Zone — ~/.config/adaptive_learner/identity.yaml writes on user / project / language changes. Frontend Landing flow recovers from disk (API mode) or IndexedDB (Dexie mode) after a localStorage wipe. Settings > About > Identity status panel surfaces the resolved identity. Settings > Danger Zone ships a three-step typed-confirm reset: POST /api/reset truncates every table and scrubs ai.* from secrets.yaml while preserving the Fernet secret_key. 13 new i18n keys across 8 catalogs. Two new backend endpoints. Six atomic commits. |
| 42 | v1.26.0 | Git-Backed Learning Repository (BL-30) — new learning-repo plugin emits per-project Markdown artefacts (README.md, LEARNING_STATS.md, CHEATSHEET.md, ROADMAP.md + numbered topic folders) from existing DB state via three endpoints (render JSON, export-zip, persist-to-git). Opt-in git init + commit-on-render with semantic subject Cycle N — U X/10, T Y/10; tags cycle-{N}-mastered on Article-1 § 8 exit threshold (Understanding ≥ 9/10 AND Transfer ≥ 8/10 stable over 2 cycles). New core endpoint /api/plugin-settings/{plugin_name} (GET + PATCH) closes the architecture-rule gap on UI-editable plugin settings. New SessionNote.kind column ("note" / "meta_learning") is the Article-3 "Meta-Learning Insight" slot. Frontend ships /projects/:projectId/learning-repo page + Dashboard widget + Settings panel. i18n repo.* block in all 8 catalogs (DE+EN native, 6 AI-translated). Seven atomic commits per the BL-30 plan; implements Asterios Raptis' Von Theorie zur Praxis Article 3 pattern.** |
| 43 | v1.27.0 | Content-Loader Plugin (2026-05-26) — /content downloads structured lesson sets from public GitHub repos and caches them locally (filesystem + IndexedDB); Pydantic lesson schema v1.0; Dexie v16 + Set Browser. EXP-002/EXP-005 foundation, the first no-API-key path. |
| 44 | v1.28.0 | Lesson Viewer + Matching + Picture-Choice (2026-05-26) — new /lesson route + the first two exercise renderers; LessonProgress model + Alembic 0018 + Dexie v17. EXP-002 Sprint 3 A-D. |
| 45 | v1.29.0 | Free-Text + Word-Tiles Exercises (2026-05-27) — the viewer now ships every exercise type the v1.0 schema knows; frontend-only. EXP-002 Sprint 3 E-F. |
| 46A-D | v1.30.0 | Element-Level Error Tracking + SRS Review (2026-05-27) — per-element ElementError, mastery at 3-consecutive-correct, SRS scheduler (1d/3d/7d), /review/:setId + Dashboard widget; Alembic 0019 + Dexie v18. EXP-007/P-129. |
| 46E-G | v1.31.0 | Gamification Integration + LessonProgress↔LearningSession Unification (2026-05-27) — kind="content" pseudo-project, lesson-XP rule, 4 new badges incl. review_master. |
| 49 | v1.32.0 | Learning-Repo Storage Abstraction (2026-05-27) — ports the ~957-LOC Python renderer to TypeScript so the Learning Repository works in Dexie mode; 2 new IStorageService namespaces; Dexie v19. Closes the v1.26.1 server-only gap. (Phases 47-48 were never assigned.) |
| 50 | v1.33.0 | Dexie-Mode Lesson-XP Parity + i18n Repo-Key Fix (2026-05-28) — Dexie-mode users earn lesson-XP/badges byte-identical to API mode (cross-language parity goldens); fixes 23 unresolved repo.* i18n keys; .claude/rules Bibliogon-residue cleanup. |
| 51 | v1.34.0 | Content Expansion: French A1 + Spanish A1 + GH-Pages bundling (2026-05-28) — 15 A1 lessons bundled into the static build so first-time visitors see content offline; authoring guide EN+DE. |
| 52 | v1.35.0 | Token-Diff + Cloze Exercise (2026-05-28) — token-level feedback on every surface; a 5th exercise type (Cloze, auto-generated from the learner's mistakes); end-of-lesson correction round; schema 1.0→1.1. EXP-007. |
| 53 | v1.36.0 | Adaptive Lesson Generation (2026-05-28) — rule-based, deterministic, client-side: reads per-element error history, classifies weaknesses, synthesises a personalised lesson the existing viewer renders unmodified; /adaptive-lesson/:setId + Dashboard FocusAreasCard. EXP-013. |
| 54 | v1.37.0 | Asset Fetching for Picture-Choice (2026-05-28) — lesson sets ship binary images via a manifest-declared assets/ dir; deterministic placeholder SVGs + text-only fallback; works in API / Dexie / GH-Pages. |
| 55 | v1.38.0 | Praise + Celebration (2026-05-29) — earned, scaled micro-feedback: 8-lang praise catalogs, shared AnswerCelebration, milestone overlays, CSS-only confetti, Feedback-Intensity + Sounds settings, full reduced-motion path. EXP-008. |
| 56 | v1.39.0 | Daily Missions (2026-05-29) — up to 3 deterministic, adaptive goals/day on the Dashboard, evaluated against existing data; new missions plugin (13th) + UserMission + Alembic 0021 + Dexie v20. EXP-010. |
| 57 | v1.40.0 | Badge Tiers + Badge Gallery (2026-05-29) — all 28 badges gain bronze/silver/gold (static siblings + dynamic high-water-mark); tier-coloured SVG generator; BadgeGallery drawer; Alembic 0022 + Dexie v21. |
| 58 | v1.41.0 | UX/UI Audit + Multi-Theme System (2026-05-29) — semantic CSS-variable token set across 6 themes (light/dark/ocean/forest/high-contrast/sepia) + auto; ThemePicker; Recharts recolouring; WCAG re-audit; Dexie v21 upgrade bugfix. |
| 59 | v1.42.0 | Analysis-to-Lesson Converter + Community Sharing (2026-05-29) — turns a chat-import analysis into a replayable offline lesson; backend-free export/import/share loop; "My Lessons" in /content; saveUserSet/deleteSet namespace. |
| — | v1.42.1 | Patch (2026-05-29) — fixes the Save-as-Offline-Lesson 422 in API mode; Settings tab reorg (Help/About split, identity moved to Data). |
| — | v1.43.0 | Content Repo Online (2026-05-30) — the official astrapi69/adaptive-learner-content repo exists + is validated end-to-end; same-id sets deduped across bundle + GitHub (higher version wins); Bundled/GitHub source badge; Share re-enabled; docs-verification system gates releases + CI. |
| 60 | v1.44.0 | Content Validation Pipeline + Language-Pair Tree (2026-05-30) — content sets declare a language PAIR (target + source); sets/{source}/{target-level}/ tree; schema 1.1→1.2 + Dexie v22; client-side validator gates Share + opt-in AI review; content-repo CI. |
| 61 | v1.45.0 | Quality Sweep (2026-05-30) — audit-first, then fixes: security P2 (read_lesson guard), coverage (missions 14→41, ApiStorage 100%, config_overlay 90%, 3 interactive Dexie E2E journeys), architecture + performance fixes, dead-code removal, tree-placement + duplicate detection in the share pipeline, minor/patch deps. |
| — | v1.45.1 | Patch / docs-sync (2026-05-30) — this phase-history table refreshed through Phase 61; cross-language badge-catalog parity golden (tests/fixtures/badge-catalog/); BL-23 + BL-24 archived as already-shipped. No runtime change. |
| 62 | v1.46.0 | EXP-018 Exercise Direction (Receptive vs Productive) (2026-05-30) — every exercise carries an optional direction (schema stays 1.2); SRS tracks mastery PER direction (Alembic 0023 + Dexie v23 re-key; "fully mastered" needs both); direction-aware renderers (Matching column flip + eye/pencil instruction hint; cloze exempt) via resolveDirectionDisplay; review queue weights productive 1.2x; adaptive direction_strategy (auto/receptive_first/productive_focus/balanced) + Settings control + Dashboard mastery split; pilot lessons progressive direction. Folds in a P0 analysis-to-lesson Save fix (language pair + CEFR + title_native + shareable-gate) and the lesson-content migration out of the app repo into astrapi69/adaptive-learner-content (build sources it via ADAPTIVE_LEARNER_CONTENT_DIR + GH-Pages content-repo checkout). |
| 63 | v1.47.0 | Lesson Flow Control (2026-06-01) — lessons pause/abandon/resume (LessonProgress gains paused/abandoned states + timestamps, Alembic + Dexie); back-button exit dialog + resume-or-start-over dialog; 30s autosave + auto-resume on tab return; Dashboard PausedLessonsCard; paused-lesson retention sweep + Settings control; lesson splitter for oversized imports (configurable 5-20 exercises, TS+Python cross-language parity test). Folds in Word Tiles touch-capable drag-to-reorder (@dnd-kit), mobile horizontal-scroll fixes (3 overflow sources + 320/375/414 regression spec), lower-friction community sharing (GH web PR editor, informational validator), and a backend CSP/security-header middleware (Phase 61 audit P3). |
| 64 | v1.48.0 | Community Sharing UX + Smart Lesson Organization (2026-06-01) — a four-step share wizard (ShareWizard): smart placement-engine.ts (tree path + auto-numbered {nn}-{slug}.json + new-set detection + content auto-detection), lesson-level duplicate/variation/supplement detection (extends duplicate-detection.ts), optional author credit (contributed_by/contributed_at, remembered in localStorage, viewer credit line + GitHub-issue author), local contribution history (contribution-history.ts, "My Contributions" + Community Contributor at 5 shares), and gap-detector.ts Missing-Lessons suggestions. Content schema 1.2 -> 1.3 (additive variation_of/variation_note/contributed_by/contributed_at). Merges Smart Next-Step Suggestions after lesson completion (useNextStepSuggestions + themed card: adaptive / review / set-complete / resume awareness). Adds the EXP-021 Lesson-Creator exploration. Full i18n in 8 languages. |
| 65 | v1.49.0 | API-key UX + Community Sharing via PR + Analysis loading (2026-06-01) — Settings > AI: instant API-key format validation (Anthropic sk-ant- ≥ 90 / OpenAI sk- ≥ 40 / Gemini AI ≥ 30, green/red + checkmark, Save gated), a live Test button (POST /api/settings/{user}/test-api-key server-mode + browser-direct in Dexie; ok / invalid / rate_limit / network), and a rollback cache (new ApiKeyBackup model + Alembic 0025 + Dexie v24 + sync surface: Save auto-tests first; a working key is saved + remembered as last-known-good, a failing key offers Keep old / Save anyway / Restore). secret.key is now the persistent Fernet key source (API keys survive restarts) and secrets.yaml-sourced keys are UI-editable (path corrected to ~/.config/adaptive_learner/secrets.yaml). Community sharing opens a GitHub PULL REQUEST (was an issue): lesson JSON committed at sets/{src}/{tgt-level}/lessons/{nn}-{slug}.json, content-repo CI validates; small lessons pre-fill the create-file editor, large ones download + open the upload page; no token required. Chat-import Analyze gains a loading indicator (phased progress + estimated time + spinner + real Cancel via AbortSignal + friendly inline error + smooth results reveal). Voice dictation shows friendly mic errors (no-device / offline / permission) instead of raw Web Speech codes. 30 SQLAlchemy models (added ApiKeyBackup). Both storage modes; full i18n in 8 langs. |
Annotated tags + GitHub Releases ship same-day; see git tag for the full list. Per-release notes live in changelog/releases/.
Auf EXP-Ebene erledigt (Release-Detail in der Phase-History-Tabelle oben + changelog/releases/; vollständiger Task-Audit: journal/exploration-status-audit.md):
- EXP-001 / 002 / 003 — Matching + Picture-Choice / Content-Repository / Lektionsformat (Phase 1, ab v1.27.0).
- EXP-005 — Offline-Modus + Domänen (v1.27.0+).
- EXP-006 — Freitext + Word Tiles (v1.29.0).
- EXP-007 — Fehlergranulare Wiederholung + Cloze (v1.30.0/v1.35.0).
- EXP-008 — Lob + Celebration (v1.38.0).
- EXP-010 — Missionen + Plaketten (v1.39.0/v1.40.0).
- EXP-016 / 017 — Test-Strategie + manuelle Tests (Querschnitt, laufend).
- EXP-018 — Uebungsrichtung rezeptiv/produktiv (v1.46.0).
- EXP-020 — Lektions-Flusssteuerung (v1.47.0).
- EXP-026 — User-Lektionen im Content-Baum, UGC-01..07 (#97, v1.80.0).
- EXP-028 — User-Event-Recording, EVT-01..05 (#566, v1.81.0).
- EXP-029 — Medien-Integration mit Gegenseitigkeits-Prinzip, MED-01..07 (#678/#680/#684/#685/#688, v1.86.0); MED-10 Partner-Onboarding-Doku offen.
Teilweise erledigt (Rest in Aktueller Fokus / Nächste Phase): EXP-013 (regelbasiert; Stufe 3 KI offen), EXP-021 (MVP; Folge-Ausbau offen), EXP-022 (UC1; UC2/UC4 offen), EXP-023 (A/B/C-slice; Phase-C-Rest offen), EXP-024 (Phase 1; Phase 2/3 offen), EXP-025 (AUTH-01/02; AUTH-03..09 offen), EXP-027 (Hindi-UI + Picker-Skalierung + Hindi-Content; weitere Sprachen + RTL offen), EXP-033 (vollständig, AIV-01..12 ausgeliefert).
Kürzlich geschlossene Bugs: #656 (Complexity-Gate FreeText/WordTiles baselined, v1.85.0); #675 (Review-Badge stieg nach einer Session nicht ab — behoben, Closes #673, v1.86.0).
Die kuratierte Priorisierung steht oben (Aktueller Fokus / Nächste Phase / Zukunft). Dieser Abschnitt bewahrt die ausfuehrlichen Beschreibungen der abgeschlossenen Kampagnen und der granularen offenen Posten (Task-IDs unverändert; daily-planning-Sicht in backlog.md).
The architecture / hygiene thread that ran across v1.77.0–v1.79.0 is finished:
- God-file decomposition — COMPLETE. Backend + frontend god-files
split one at a time under the Phase 2 hard ratchet; both
.complexity-baselineand.filesize-baselineare now EMPTY (the 1156-line sessionroutes.pysplit #412 was the last cohesion-baseline entry;validateGeneratedLesson#497 was the last complexity offender). - Dexie read-modify-write data-integrity remediation — COMPLETE. Three phases (#390 → #395/#398/#402): atomic increments, create-race ensure-helpers + unique indexes, full-replace updates wrapped in transactions.
- Complexity burn-down — COMPLETE. Frontend offenders 34→0 (#498–#504); radon hard gate Phase 2 live (#494/#495: blocks cc > 20, warns > 15).
- 3 CI watchers — LIVE. Cohesion file-size guard (#371, hard gate at 1000 lines), security-scan (#378, pip-audit + npm audit + bandit), complexity (#400, radon + eslint).
- plugin-tests CI job — LIVE (#471): runs the full 1018-test plugin suite per PR.
- Reusability policy + first
shared/primitives (#474/#477): ListRow, ProgressBar, LessonStepNav, XpBadge, IconBadge. - EXP-025 (author-provided lesson sets) — PARTIAL. AUTH-01 (book-metadata schema + validator, #529) + AUTH-02 (book-companion rendering, #531) SHIPPED; AUTH-03+ (cross-repo author publishing) is deferred — needs shared-backend / cross-repo infrastructure.
- EXP-026 (fold user lessons into the content tree) — COMPLETE. UGC-01..07 all SHIPPED (#97).
The architecture thread is done; the next minor returns to user-facing features and opportunistic hygiene:
- #508 — User profile picture — SHIPPED on
develop(#535). Avatar in nav + About + Dashboard (InitialsAvatar+AvatarUploadshared primitives), both storage modes. Lands in the v1.80.0 release. - BACKEND-RADON-REMAINDER-01 (P3, opportunistic). Burn down any new backend module above the radon warn band (cc > 15) as it surfaces; the baseline is empty, so this is steady-state hygiene under the live gate.
- AUTH-03+ (DEFERRED). Cross-repo author publishing — blocked on shared-backend infrastructure (see backlog Blocked / Upstream Wait).
Known longer-horizon follow-ups (no committed phase):
- Per-topic-folder triplet (
concepts.md/tasks.md/solutions.md) for the Learning Repository — Article 3's "Drei-Datei-Prinzip"; folders currently ship only the stub README. Trigger: a user wants the deeper structure. - Method-experiment git branches + GitHub-push automation
for
learning-repo. Trigger: user demand for method A/B comparison or a "share my learning repo publicly" flow. - EXP-013 Stufe 3 — AI-augmented adaptive generation. The Phase 53 rule-based pipeline is sufficient for the headline promise; the AI-augmented layer (P-150..P-152) was explicitly deferred.
Other deferred work:
- BL-14..17 — SaaS-tier items. Multi-user, JWT auth, Postgres migration, Stripe / premium plugins. Deferred until the single-user-per-browser model hits an obstacle.
BL-03 (pluginforge-app-template repo) shipped externally
ahead of Phase 42 — astrapi69/pluginforge-app-template
exists at tag v0.1.0 (created 2026-05-17). PluginForge
ecosystem triple is validated.
- PT/TR/JA native-speaker review. Phase 26 / v1.13.0 shipped AI-translated PT/TR/JA. Native review of the catalogs (~220 keys + 60 assessment strings per language) remains an open follow-up; opportunistic when a native speaker reports awkward phrasings.
- iOS-Safari
apple-mobile-web-app-*meta tags. Manifest is standard-compliant; iOS PWA install works but the iOS-specific status-bar / title meta tags aren't wired. Add if iOS users report degraded standalone UX. - Per-route SW cache TTL overrides. Today everything under
/api/is 24h LRU. Defer until usage pattern shows real need. - "Force refresh" + "Opt out of offline cache" in Settings UI. Power-user knobs for the SW cache.
- ANALYSIS-TARGET-DETECT-01. Content-based target-language
detection for analysis-to-lesson. Today the target is guessed from
analysis.topiconly; infer it from the actual card-content language (e.g. card backs / vocabulary) so a German-about-German grammar chat is recognised as a domain (source == target) set rather than a language pair. Follow-up to the v1.52.x source-default fix, which covers the 90% case (source = app language). - ANALYSIS-DOMAIN-SUGGEST-01. When analysis-to-lesson detection
yields source == target (e.g. German grammar for German speakers),
auto-suggest a non-language
domain("grammar" / "education") in the save modal. The content validator already permits source == target fordomain != "language". - PLACEMENT-LANG-WARN-01. In the placement / save flow, warn when
the card content language doesn't match the chosen
source_language(e.g. card backs are German but source is set to English): "Die Kartenrueckseiten sind auf Deutsch, aber die Ausgangssprache ist Englisch. Stimmt das?" Advisory only, never a hard block. - EXP-029 — Media resources with reciprocity principle. Companion
media (YouTube / podcast / article / book / course / website) per domain
via a
media.yamlanalogous tobooks.yaml(#141), both storage modes, no server. The curation filter is reciprocity, not price: free media + books are always allowed; courses + websites only with proven reciprocity (backlink / connected content-repo / cooperation); pure advertising is out regardless of price. See docs/explorations/EXP-029-media-reciprocity.md. Tasks (all additive, both storage modes):- MED-01 —
media.yamlschema +MediaResourcetype + loader (media-resources.tsanalogous tobook-recommendations.ts). - MED-02 — parser validation with the reciprocity gate:
course/websitewithpartnership !== trueare dropped (fail closed);urlhttp(s)-validated. - MED-03 — Content Browser rendering: per-domain media section,
type icon per
MediaType, empty section hidden. - MED-04 — free/paid badge (
freefield → discreet token-coloured "Gratis" / "Kurs" badge) so the learner knows before clicking. - MED-05 — optional
resources[]at set/lesson level (additive content-schema bump, likeexample_url). - MED-06 — i18n: media-type labels + badges + section titles in 8
languages (
media.*). - MED-10 — Partner onboarding documentation (the actual lever):
a guide for language teachers / schools — how to create a content repo
(EXP-023/025), how to link a course (
media.yaml/resources[]), how to evidence reciprocity. Business-development artefact, no code, parallelisable with MED-01..06.
- MED-01 —
- BL-14 — PostgreSQL migration
- BL-15 — JWT authentication
- BL-16 — Multi-user support (requires BL-14 + BL-15)
- BL-17 — Stripe integration (requires BL-14 + BL-15 + BL-16)
- BL-19 — Social features (share progress, study groups) (requires multi-user; see P4).
- Method-experiment branching for the Learning Repository.
Once BL-30 (Phase 42 candidate) ships its synchronous render path,
the optional
git-on-disk surface could grow short-lived branches per learning method to support A/B experiments. Trigger: a user reports actually wanting to compare two methods on the same topic. - Push notifications. SW is registered, foundation is there; notification opt-in + delivery + a "next session due" trigger would be its own phase.
- Native iOS / Android wrappers. Capacitor / Tauri Mobile. Lower priority than the PWA route since installable PWA covers most use cases.
BL-18 (Gamification), BL-20 (Voice), BL-21 (Anki), BL-22 (NotebookLM) all shipped — see the Phase history table above for the release each landed in.
Items waiting on an external trigger (npm publish, upstream release, paid-API access, or a specific release tag). NOT P0 even when otherwise valuable.
Zurzeit kein Eintrag: DEP-TS7 (#1507) wurde als verfrüht geschlossen, BADGE-CONTENT (#2273) ist mit #2441 ausgeliefert.
See backlog.md for the granular daily-planning view.
Archive: docs/roadmap-archive/ (not yet populated;
phase completions are recorded in changelog/releases/v*.md).