From f94bdddaf50efc77e042303068f6195ac72df773 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sat, 12 Sep 2026 08:43:04 +0200 Subject: [PATCH] feat: the reading page full width, with split view as a column rather than a page in a page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The article was capped at 1080px and centred, so most of a wide window was margin while the prose ran as a thin ribbon down the middle — and following a cross-reference opened a whole second reader, rail and all, inside half of that. Each further click started further right. The rail is flush against the left edge of the window now, sticky and full height with its own scroll, and the article takes the rest. Split view is a third column of the same grid at a fixed width, so the article reflows once when the pane opens and never again however deep you go. The pane renders the reader bare — no rail, no depth switch, sections already open — because a pane is a column to read, not a page to navigate. It keeps a trail: following a reference from inside it replaces its contents and offers a way back, since the only way back before was the browser, which takes the article with it. The offset the rail starts at is measured off the navbar rather than written down, because that bar collapses as you scroll and a hard-coded number would leave a band of page above the rail or hide its first line. The depth switch moved up beside the sections, where it reads as what it is — our high-yield — and the rail follows it: a contents list naming sections the body is not showing is worse than no contents list. A breadcrumb in the sticky bar tracks the section under your eye, the rail is collapsible and remembers it, and the toolbar carries text size and save-to-a-library. And the summary no longer prints `[[288|eczema]]` at the reader. At the head of an article it is prose in context, so it renders with its references live; in a card or a list row the card is itself a link, and a link inside a link swallows the click that was meant to open the article — so there it is flattened to its labels. Full-bleed and the session chrome are now separate claims. A reader wants the window; a reader does not want the section strip taken away, because every link on it is somewhere they may legitimately go mid-article. That is not true inside a session. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01TqXevQJhxFrM7jJg82cgZN --- frontend/src/components/ArticleReader.jsx | 19 +- .../src/components/ArticleSaveButton.test.jsx | 56 ++++++ frontend/src/components/ArticleSplitPane.css | 104 +++++----- frontend/src/pages/ArticleSplitView.test.jsx | 28 ++- frontend/src/pages/ArticlesPage.css | 190 ++++++++++++++---- frontend/src/pages/ArticlesPage.jsx | 10 +- frontend/src/pages/ArticlesPage.test.jsx | 63 ++++++ 7 files changed, 369 insertions(+), 101 deletions(-) create mode 100644 frontend/src/components/ArticleSaveButton.test.jsx diff --git a/frontend/src/components/ArticleReader.jsx b/frontend/src/components/ArticleReader.jsx index 16cfee5..0aef7d6 100644 --- a/frontend/src/components/ArticleReader.jsx +++ b/frontend/src/components/ArticleReader.jsx @@ -309,16 +309,15 @@ export default function ArticleReader({