Skip to content

Use Library as the one visible name - #238

Merged
Programcode merged 2 commits into
mainfrom
design/library-name
Oct 27, 2026
Merged

Programcode merged 2 commits into
mainfrom
design/library-name

Conversation

@Programcode

@Programcode Programcode commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner

The library had several visible names. Nav, the browser tab, and Home already said Library, while the page heading said Source Library and the list card said Your Knowledge Base. This uses one name in nav, headings, and body copy.

Visible text only. Routes (/app/library), database tables, and API fields such as sourceLibrary are unchanged.

Name chosen

The word already used in nav and on Home:

Language Name Where it already appeared
English Library nav.library, home.library, onboarding.library
Hungarian Könyvtár nav.library, home.library
Spanish Biblioteca nav.library, home.library, onboarding.library

Sentence case. The page heading is the name itself (Library / Könyvtár / Biblioteca). The list card is “Your library” / “A könyvtárad” / “Tu biblioteca”. In English sentences the feature name stays Library (“Use Library grounding”, “Your Library has no active sources yet.”). Hungarian and Spanish keep the name lowercase in the middle of a sentence, which is how those catalogs already write könyvtár and biblioteca.

What changed

  • Page heading: Source Library → Library; Forráskönyvtár → Könyvtár; Biblioteca de fuentes → Biblioteca
  • Landing feature card and the Hungarian tour step use that same name
  • List card: Your Knowledge Base → Your library (and the HU/ES equivalents)
  • Crossfire: “Use Library grounding” and “Your Library has no active sources yet.”
  • Review sheet: “Library is off for this request.”

The signed-in tab title was already Library · DebateLab (it comes from nav.library). Private routes share the home meta description, and pageHead has no library entry, so no meta string changed.

Left as they are, on purpose:

  • Strings that already used this name (“Save to Library”, “Library sources”, “Saved {{title}} to the Library”, Spanish “Usar fuentes de la Biblioteca”)
  • The Active Grounding step “Knowledge Base” / “Tudásbázis” / “Base de conocimiento”, which describes that pipeline, not this screen
  • Server errors (Unable to load source library, sources must be an array when Source Library is enabled)

Screens

Library (/app/library), the landing Features section, Crossfire setup (the grounding checkbox), and the Crossfire Review sheet. Checked at 390, 820, and 1440. The shorter heading does not overflow; scrollWidth matches the viewport at all three widths in English.

English library, before and after:

Library page at 390px before
Library page at 390px after
Library page at 820px before
Library page at 820px after
Library page at 1440px before
Library page at 1440px after

Hungarian and Spanish at 390px after (Könyvtár, Biblioteca):

Hungarian library page at 390px
Spanish library page at 390px

Crossfire grounding and the Review sheet:

Crossfire grounding label after, 390px
Crossfire review sheet after, 390px

The rest of the set (HU/ES at 820 and 1440, Features, Crossfire at 820 and 1440, before and after) is in the same artifact folder.

Likely conflicts

Other open copy work touches the same catalogs:

  • design/debateowl-polish (sentence-case sweep) will edit libraryPage.title (it planned “Source library”), libraryPage.yourKBTitle (it planned “Your sources”), and nearby title-case strings this PR does not touch (addNewTitle, emptyTitle, saveToLibrary, sourceSaved). Same keys, different words.
  • Onboarding copy: this PR changes onboarding.library in Hungarian only (Forráskönyvtár → Könyvtár). A tour or intro PR that rewrites onboarding in hu.json will overlap that hunk. English and Spanish tour titles already said Library / Biblioteca.
  • Phone bottom tab bar: it uses Library as a tab, which matches nav.library (unchanged here). Conflict only if that branch also rewrites library strings in the locale files.
  • DebateOwl rename: a broad replace in en.json / hu.json / es.json can conflict on nearby lines, especially onboarding in Hungarian, even though this PR does not rename the product.

Checks

Local, on this commit. Not a CI run.

  • npm run docs:check: passed
  • npm run lint: passed
  • npm run typecheck: passed
  • npm test: 662 passed, 1 failed. The failure is src/test/scripts/backend-status.test.ts, a beforeEach hook timeout (10s) while that file runs git init and commits in a temp directory. A retry failed a different test in the same file with the same hook timeout. It does not read these strings. The other 90 files passed.
  • npm run test:collaboration: 30 passed
  • npm run build: passed
  • npm run test:sw: passed
  • Playwright, desktop Chromium: e2e/first-run.spec.ts and e2e/admin-announcements.spec.ts, 7 passed (these assert the library heading and the Hungarian tour title)

npm run verify was not run. deno is not installed here, so npm run test:edge cannot run, and verify stops before the smoke browser set. The full @smoke Playwright set was not run, only the two specs above. No database gate (no Docker).

To show artifacts inline, enable in settings.

Open in Web Open in Cursor 

Nav, the page heading, and body copy now share one name: Library, Könyvtár, and Biblioteca. Routes, tables, and API fields stay as they are.

Co-authored-by: Gáborjáni-Szabó Ádám <Programcode@users.noreply.github.com>
@coderabbitai

coderabbitai Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Caution

Review failed

The pull request is closed.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Note

🎁 Summarized by CodeRabbit Free

Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Essentials by visiting https://app.coderabbit.ai/settings/billing.

Comment @coderabbitai help to get the list of available commands.

Programcode added a commit that referenced this pull request Oct 27, 2026
…d owl (#243)

* Prerendered pages load the built owl, not /src

The prerender step runs the pages through Vite's dev SSR loader, which
resolved `import point from '@/assets/owl/owl-point.svg'` to
/src/assets/owl/owl-point.svg. That path 404s on the deployed site, so /,
/hu, /es and /404 showed no owl until hydration. Asset imports now resolve
to the hashed file from the build manifest, and the build fails if a page
still names a /src/ URL.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Sentence case and shorter copy across the app

Headings, toasts, dialog titles, form labels and section names move to
sentence case (polish study P1-1, P2-8). Proper nouns, tool names used as
names, speech and role names, and the legal and SEO strings keep their
capitals. Buttons and labels keep their words; only their case changes.

Where the study gave new copy for a heading or a message, it is used in
English, Spanish and Hungarian: the tool pages' empty panels (P1-4), the
one-time intro (P1-2), the 404 heading (P1-3), the limit dialogs, the tour's
last step (P2-7), landing headings (P2-8) and the provider error tail
"Try again in a minute." (P3-1). Ellipses use the single character (P2-6).
Running text says "library"; the page title says "Source library".

The flowchart's starter node labels keep "Your Thesis": saved charts are
matched to their translation key by that exact text. home.title and
home.subtitle had no callers and are gone (P3-3).

Unit tests, e2e specs, verify-debatelab recipes and feature notes follow
the new strings. The production canary and staging specs match the Ask
placeholder without its ellipsis, so they pass before and after deploy.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Tool pages' empty panel shrinks under the form on phones and iPads

EmptyState gains a compact size (56 px owl, no badge, tighter padding) and
compact-below-lg, which Generate, Attack, Brainstorm and Factoids use: below
lg the panel stacks under a form that is already the next step, so it no
longer sits there as a tall block. Titles balance across lines.

It also takes an optional icon, an h1 level, an eyebrow line and an action
element, for the not-found pages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* 404 and a bad share link look the same

Both render EmptyState with the surprised owl at 112 px, an h1 title, a
short line and the home link. The 404 page's giant "404" becomes a muted
line above "Page not found", and the share page's grey share icon makes way
for the owl. The 404 owl drops from 168 px to the empty-state size.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Rows of peers wrap evenly at every width

- Home: the three utilities are one equal row; on phones the icon sits
  above the label so Hungarian fits.
- History: the seven tabs are one sideways row below lg, fading at the
  right edge, and seven equal columns from lg, icon above label. They keep
  44 px on every touch screen, iPads included.
- Timer: every speech chip is in view, in balanced rows (8 speeches are
  4 + 4 on a phone, one row from md), with the time under the code.
- Landing hero: the three plan stats stay three across on phones, and on
  iPad the text and preview sit in one centred column.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Bigger touch targets on toasts, tool pages and login

- Toasts: on touch screens the action button is 44 px tall and the close
  button 32 px (they were 32 and about 20).
- Free tool pages: inline links get 4 px above and below without moving
  the text, breadcrumbs and format source links are at least 24 px, and the
  flow sheet's strip checkbox sits in a 44 px row.
- Login: "Back to DebateLab" is at least 24 px tall with a mouse, as well
  as 44 px on touch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Intro fits a phone; the tour ends with the owl

- One-time intro: on phones the owl circle is 112 px instead of 144, the
  title balances across lines, and both footer buttons are 44 px with Got it
  filling the row. With the shorter copy it fits 390 x 844 without scrolling.
- Tour: the last step uses the first step's Fredoka heading and a small
  celebrating owl, in place of the rocket emoji.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* iPads get the top navigation bar

The app's top navigation now starts at md (768 px) instead of lg, so an
iPad shows Tools, Current debate, Library, History and Settings in the bar
instead of the menu button and a second Current debate row. Between md and
lg only the active link shows its label; the others are icons that keep
their names for screen readers, so Hungarian fits at 768 px. The theme
toggle still appears from lg.

The e2e helpers that open the menu on narrow screens use the same 768 px.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Leave library names as on main

The library's name is settled in its own PR (#238), so this one keeps
every library-name string as main has it: the page title, the list card,
"Save to Library", the saved and auto-saved toasts, Crossfire's grounding
label and the running-text mentions, in all three languages. Tests and
recipes go back to the same strings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Timer chips wrap between words and match in height

With every chip in view, long speech codes such as "A Rebuttal" no longer
fit on one line at 390 px. They now wrap between words instead of
truncating, the side dot moves next to the time so the code has the full
width, and chips in a row share one height.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Tour specs expect the welcome without its emoji and !

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Equal-height timer tiles; hero stat labels fit two lines

- Timer: the speech grid uses equal rows (auto-rows-fr) and each tile
  stretches through a flex item instead of a percentage height, so a row
  with a wrapped name ("A Rebuttal", "B Summary") no longer has tiles of
  different heights. Every tile is at least 44 px.
- Landing hero: on phones the stat labels drop their extra letter-spacing,
  the cards use tighter side padding, and below 380 px the label steps down
  to 10 px, with hyphenation where the browser has the language.
  "PREPARACIÓN DIARIA CON IA" and the Hungarian trial label fit two lines
  at 360 to 414 px. The copy is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	src/locales/en.json
#	src/locales/es.json
#	src/locales/hu.json
@Programcode
Programcode marked this pull request as ready for review October 27, 2026 10:53
Copilot AI balanced review requested due to automatic review settings October 27, 2026 10:53
@Programcode
Programcode merged commit 81f4125 into main Oct 27, 2026
0 of 7 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.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.

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.

3 participants