diff --git a/CHANGELOG.md b/CHANGELOG.md index a2ec8a84d..1b691d955 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,11 @@ ones are marked like "v1.0.0-fork". ### Fixed +* **The "edit term" button in the review table went nowhere** (#266): it pointed + at `edit_tword.php`, a filename that stopped being routed in v3, and opened it + in a frame the reader no longer renders. It now links to `/word/edit-term`, + the same route the Alpine review view already used. + * **A single-language install could never browse Gutenberg or GDL**: the new-text page said "Please select a language above" while the navbar already showed one. `currentlanguage` is only written when the user picks from the @@ -126,6 +131,16 @@ ones are marked like "v1.0.0-fork". PHP 8.5 surfaced by deprecating `ord()` on multi-byte strings. No API or styling change. +### Removed + +* **Dead legacy result-view plumbing** (#266): four result handlers + (`delete_result`, `insert_wellknown_result`, `insert_ignore_result`, + `delete_multi_result`) outlived the views that once fed them, and + `word_status_ajax.ts` waited on a `#word-status-config` element no page has + emitted since the frame reader was retired. Dropping them plus their now + orphaned DOM helpers removes ~1000 lines. No behaviour change — none of it + could run. + ## [3.2.1-fork] - 2026-06-30 ### Fixed diff --git a/ROADMAP.md b/ROADMAP.md index b9fa4d1b2..31f7974ab 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -57,7 +57,7 @@ pay for the hard parts when demand proves them worth it. ## The keystone constraint -LWT renders HTML server-side (94 view templates). Until more logic moves to the +LWT renders HTML server-side (93 view templates). Until more logic moves to the frontend against `/api/v1`, *any* mobile wrapper is just a window to a server. So **"more frontend, less server-rendered" is the enabling work** — the thing that makes a good client today and offline/local-first possible tomorrow. @@ -93,7 +93,12 @@ that makes a good client today and offline/local-first possible tomorrow. `textReader.renderTextContent()` against `/api/v1`, with an offline prototype (`offline-text-reader.ts` + IndexedDB) started. `review_desktop.php` is "all UI rendered by Alpine.js." So Phase 1 is **cutting the server-shell umbilical, not -converting pages**. Three dependencies to sever + one real conversion: +converting pages**. + +**Status (re-audited 2026-08-05): every mobile-critical surface is shell-free.** +The only open item is the legacy-fragment cleanup in the last bullet, which is +not a mobile blocker. Tracked on the issue board as +[#266](https://github.com/HugoFara/lwt/issues/266). - [x] **(Phase 0 gate) Injectable API base URL.** Done in Phase 0 — same seam. `@shared/api/client` resolves an injectable **absolute** server root and @@ -109,9 +114,18 @@ converting pages**. Three dependencies to sever + one real conversion: `audioPlayer` fetch), so `read_desktop.php` carries no per-text data and `TextReadController` dropped the server-side book/media plumbing. Verified live (book nav, audio reveal, no-regression plain read). Toolbar labels use - `__e()` but resolve via the client i18n `t()`. *Remaining (lower urgency, - not reader-specific):* the **global navbar** is still PHP-rendered — tracked - separately since it spans every page. + `__e()` but resolve via the client i18n `t()`. Nothing outstanding — the + global navbar was the last shared dependency and it shipped (next bullet). +- [x] **Global navbar — shell-free.** Shipped in 3.2.0 (`d6e6a5203`). + `PageLayoutHelper::buildNavbar()` is gone; PHP now emits only the mount + point `