Skip to content

Audit leftovers: the reveal survives print, the hero docs say engine-first, a dead nav key goes, the Federprobe note is readable - #459

Merged
MarkusNeusinger merged 3 commits into
mainfrom
claude/kleinkram-audit
Aug 30, 2026
Merged

Audit leftovers: the reveal survives print, the hero docs say engine-first, a dead nav key goes, the Federprobe note is readable#459
MarkusNeusinger merged 3 commits into
mainfrom
claude/kleinkram-audit

Conversation

@MarkusNeusinger

Copy link
Copy Markdown
Owner

What

The p4 collector of the website audit 2026-08-29, worked through item by item:

  1. Hero docs say engine-first. frontend-stack.md (route table + component map) and animation-rendering.md §1 still described the hero as font-first (GLKurrent + clip-path); since 2026-08-27 the brand word is written by WrittenWord and the wipe is only the fallback on a genuine failure. Text corrected, code untouched.
  2. Dead locale key. common.nav.tafel had no reader — removed. common.nav.scribe stays (the prerender's tool list uses it).
  3. tafel.pendingNote — left as it is, on purpose: it is a data state (a script row without a chart source), not dead code; the day a fourth script is seeded it renders again.
  4. Federprobe limit + note. The 48-character cap stays and now explains itself in place: the line scales into its frame (840 px, or the phone's width) and near 48 letters the x-height on a phone is already ~8 px — the API's 160 serves the Übungsblatt's lines. The „noch nicht nachgeschrieben" note is set in body size (17 px instead of the 13 px caption).
  5. Landing reveal. Reveal shows its content at once where IntersectionObserver is missing (lazy initial state, no effect) and under @media print — a printed landing page was blank below the hero.
  6. Path shapes (/schreiben/uebungsblatt beside /tafel and /federprobe) — a decision, not a bug; untouched, yours to make.

Verification

/verify-frontend on the dev server: landing page at scroll 0 → the 12 below-fold Reveal wrappers are opacity 0 / translateY(22px) on screen and opacity 1 / none under page.emulateMedia({ media: 'print' }); Federprobe with „Guten Morgen, Hans" → the note renders at 17 px. tsc, eslint (no new warnings), vitest (179) green; prerender unchanged.

Copilot AI lite review requested due to automatic review settings August 29, 2026 23:40

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The changes are small, localized, and consistent with the stated verification, with only a minor CHANGELOG ordering convention nit noted.

Pull request overview

This PR finishes remaining items from the 2026-08-29 website audit: it aligns the internal docs with the current “engine-first” landing hero behavior, removes an unused locale key, and hardens/adjusts small UI details so the landing reveal and Federprobe behave/read correctly (including print).

Changes:

  • Update frontend-stack.md and animation-rendering.md to describe the landing hero as engine-first with a font-based fallback.
  • Make Reveal render immediately when IntersectionObserver is unavailable and ensure it prints fully (@media print).
  • Remove the unused common.nav.tafel locale key and adjust Federprobe copy styling (plus in-code rationale for the 48-char cap).
File summaries
File Description
docs/reference/frontend-stack.md Updates route/component documentation to reflect engine-first hero behavior and Reveal’s new behavior.
docs/reference/animation-rendering.md Updates animation rendering doc to reflect engine-first WrittenWord use in the landing hero.
CHANGELOG.md Adds Unreleased entries describing the audit leftovers and the print/IntersectionObserver Reveal fix.
app/src/sections/scribe/ScribeView.tsx Improves Federprobe note legibility (body-sized note) and documents the 48-char cap rationale.
app/src/sections/landing/Reveal.tsx Ensures Reveal shows content without IntersectionObserver and when printing.
app/src/locales/de/common.ts Removes the unused common.nav.tafel label.
Review details
  • Files reviewed: 6/6 changed files
  • Comments generated: 1
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread CHANGELOG.md Outdated
@MarkusNeusinger

Copy link
Copy Markdown
Owner Author

Reordered: [Unreleased] now runs Added → Changed → Fixed like every release section — the two audit entries moved into the existing Changed/Fixed blocks, and the warm-instance entry (which had opened a second Changed heading above Added on main) went with them.

MarkusNeusinger added a commit that referenced this pull request Aug 29, 2026
Review on #459: the warm-instance entry and the two audit entries sat
in headings above Added; every release section runs Added → Changed →
Fixed, so Unreleased now does too.
Copilot AI review requested due to automatic review settings August 29, 2026 23:45

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

docs/reference/frontend-stack.md references /write/word even though the actual API endpoint is /sources/{id}/write/word, which undermines the doc correction’s accuracy.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details
  • Files reviewed: 6/6 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread docs/reference/frontend-stack.md
@MarkusNeusinger

Copy link
Copy Markdown
Owner Author

Kept as is: /write/word is the repo's own shorthand for the source-scoped render route — CLAUDE.md and docs/reference/write-api.md name the renderers /write/glyphs + /write/word the same way, and the route table row follows that convention rather than spelling out /sources/{id}/….

MarkusNeusinger added a commit that referenced this pull request Aug 30, 2026
Review on #459: the warm-instance entry and the two audit entries sat
in headings above Added; every release section runs Added → Changed →
Fixed, so Unreleased now does too.
Copilot AI review requested due to automatic review settings August 30, 2026 06:04

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The CHANGELOG uses the German word “Kleinkram” in new entries and should be adjusted to keep changelog prose consistently English.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (1)

CHANGELOG.md:327

  • The changelog is intended to be English; “Kleinkram” is German and reads out of place here. Please replace it with an English phrase (e.g., “minor items”) to keep CHANGELOG.md consistent.
  2026-08-29, Kleinkram (5).
  • Files reviewed: 6/6 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread CHANGELOG.md
@MarkusNeusinger

Copy link
Copy Markdown
Owner Author

Kept: „Kleinkram" is the name of the Todoist collector task this PR works off („Website: Kleinkram aus dem Audit 2026-08-29"), so the entry cites it as a proper name — the same way the other audit entries cite „item 5/8". The surrounding prose is English.

MarkusNeusinger added a commit that referenced this pull request Aug 30, 2026
…and-resolved rebase (#461)

* The changelog merges by union, so sibling PRs no longer conflict in it

Every merge of one open PR turned the others DIRTY on CHANGELOG.md (four
hand-resolved rebases on 2026-08-30), and a DIRTY PR gets no CI run.
.gitattributes now declares CHANGELOG.md merge=union: git keeps both
sides' bullets instead of raising a conflict, so a rebase onto main goes
through untouched — verified on the #458 and #459 rebases with the same
attribute set locally. The rule that keeps union safe (add on top of your
category, never rewrite existing lines in passing) stands in the file's
header, CLAUDE.md and copilot-instructions.md.

* Say what union merging promises and what it does not

Review on #461: no absolute "never conflict" — a local merge or rebase
resolves itself, GitHub's own mergeability check may still flag the PR
until then, and a line changed on both sides appears twice; the header,
the entry, CLAUDE.md and copilot-instructions.md say so in one voice.
…e hero docs say engine-first, a dead nav key goes, the Federprobe note is readable

Website audit 2026-08-29, the p4 collector: Reveal shows its content
at once under @media print and where IntersectionObserver is missing
(a printed landing page was blank below the hero); frontend-stack.md
and animation-rendering.md describe the hero as engine-first (owner
decision 2026-08-27) instead of font-first; common.nav.tafel had no
reader; the Federprobe's not-yet-written note is body size and its
48-character cap explains itself. tafel.pendingNote (a data state) and
the mixed path shapes stay as they are, on purpose.
Review on #459: the warm-instance entry and the two audit entries sat
in headings above Added; every release section runs Added → Changed →
Fixed, so Unreleased now does too.
Copilot AI review requested due to automatic review settings August 30, 2026 06:29
Replaying the reorder commit under merge=union kept both the moved and
the original blocks; the top copies go, the union entry moves into the
Changed block, and Unreleased runs Added → Changed → Fixed again.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

CHANGELOG.md currently contains duplicated [Unreleased] bullets/headings that should be consolidated to avoid repeated release notes.

Review details

Suppressed comments (4)

CHANGELOG.md:32

  • This "Fixed" entry duplicates the same bullet later in the same [Unreleased] section (see the "### Fixed" section around lines 396–402). Keeping both will make releases and reviews prone to double-counting; keep the bullet only once under the existing "### Fixed" heading.

This issue also appears in the following locations of the same file:

  • line 50
  • line 63
### Added

- **A letter of the Schreibtafel in detail (`/tafel?g=<key>`).** Tapping a
  written letter on the Sütterlin sheet still re-writes it in place — and
  now opens it below the sheet: the stroke order as numbered starts on the

CHANGELOG.md:54

  • This "Audit leftovers" bullet is duplicated later under the existing "### Changed" section (around lines 339–350). Please keep it only once to avoid duplicate release notes.
  to write it freely — vision §2's content-aware practice sheet. The composition is the Federprobe's (`GET /write/word` per line
  through the shared render cache, debounced, remembered by its text); the
  browser only places it (`lib/uebungstext.ts`: template units onto the row
  baseline with the Mittelband as x-height; a pending line keeps its row; a
  line too wide for the ruling or without a row left is named under the

CHANGELOG.md:67

  • This "API keeps a warm instance" bullet is duplicated later under the existing "### Changed" section (around lines 351–367). Please remove one copy so the [Unreleased] notes don't repeat.
  The Lesart page offered letter swaps („Mnhme") as readings; the owner's
  verdict: a reading must be an existing word. `GET /lesarten?text=…`
  answers the vocabulary words that differ from the guess by look-alike
  letters alone — same length, every differing letter a documented pair
  (`core/lesarten`: the look-alike table's classes make a bucket key,

CHANGELOG.md:44

  • [Unreleased] ends up with two separate "### Changed" sections (one here and one later around line 337). Even after removing the duplicated bullets above, please move the remaining "The changelog merges by union" entry into the existing "### Changed" section and drop this early "### Changed" heading so the changelog stays scannable.
  (normal, langsam = 3×), the documented look-alikes written beside it
  (the SpecimenStrip over `lib/lesarten`'s table: n → u, e, m; ſ → f, s;
  s → ſ …) and „im Wort sehen" — a jump into the Federprobe with the
  shortest bank word that shows the letter as written (a non-final s for
  the ſ, a final s for the round s, an initial capital). The key rides the
  URL like the admin's focus, so a letter is shareable and a deep link
  switches the sheet to the written view. Vision goal 3, „Buchstaben in
  Aktion"; the ligatures it names (ch, ck, ſt, tz, qu) are not traced in
  the public source yet and so have no detail. Website audit 2026-08-29,
  • Files reviewed: 6/6 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI review requested due to automatic review settings August 30, 2026 06:33
@MarkusNeusinger
MarkusNeusinger merged commit 3709539 into main Aug 30, 2026
3 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The CHANGELOG edits move/reinsert existing bullets despite the file’s own union-merge guidance to avoid rewriting existing lines, creating unnecessary churn and higher merge-conflict/duplication risk.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details
  • Files reviewed: 6/6 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread CHANGELOG.md
Comment on lines +286 to +290
- **The changelog merges by union — a sibling merge no longer costs a
hand-resolved rebase.** Every merge of one open PR used to turn the
others `DIRTY` on `CHANGELOG.md` (four rebases with hand-resolved
conflicts on 2026-08-30 alone), and a DIRTY PR gets no CI run.
`.gitattributes` now declares `CHANGELOG.md merge=union`: a local merge or
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants