Skip to content

Finish the visible DebateLab to DebateOwl rename - #241

Merged
Programcode merged 3 commits into
mainfrom
design/debateowl-rename-finish
Oct 27, 2026
Merged

Programcode merged 3 commits into
mainfrom
design/debateowl-rename-finish

Conversation

@Programcode

@Programcode Programcode commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner

Summary

The visible product name is DebateOwl in English, Hungarian, and Spanish. site.json is the source (product / brand); the header, footer, startup shell, page titles, and PDF header read it instead of a hardcoded word. Routes, the domain debate.pi-stack.org, package and repo names, storage keys, and API identifiers are unchanged.

The one-time notice still leads with the old name so it stays true after the UI already says DebateOwl: “DebateLab is becoming DebateOwl”, with the same meaning in Spanish and Hungarian. “Slowly” is gone, and the Google line is in the present tense. Hungarian keeps “A DebateLabből DebateOwl lesz”: DebateLab is pronounced as spelled, so -ből stays attached. Suffixes on DebateOwl are hyphenated (DebateOwl-ba, DebateOwl-t, DebateOwl-ban, DebateOwl-hoz, DebateOwl-nak), matching the existing DebateOwl-fiókod.

The link-preview file is still public/hero-visual.jpg (1200×630). og:image and twitter:image point at https://debate.pi-stack.org/hero-visual.jpg?v=2 so scrapers fetch the new card. The JSON-LD image uses the same query. The alt text is “DebateOwl wordmark with the owl, for AI debate prep and practice”. public/owl-mark.svg title is “DebateOwl owl”.

The production canary still requires a DebateOwl title. It reloads the homepage for up to 3 minutes, because deployment_status can run while the previous HTML is still what the edge serves. Other canary checks are unchanged. This PR does not deploy.

Hosted auth emails still say DebateLab

Nothing in the hosted production or staging Supabase projects was read or changed. A merge does not update Auth email templates. The only two templates this repo configures, which on main still say DebateLab, are:

Dashboard template Config Subject on main Body on main
Magic Link [auth.email.template.magic_link] Your DebateLab sign-in code Your DebateLab sign-in code is {{ .Token }}. (supabase/templates/magic_link.html)
Confirm signup [auth.email.template.confirmation] Your DebateLab sign-in code Your DebateLab sign-in code is {{ .Token }}. (supabase/templates/confirmation.html)

The repo copies of those two now say DebateOwl. There is no recovery, invite, or email-change template in the repo. Adam can decide whether to update the two hosted subjects and bodies.

Checks

Re-run after the review fixes:

Check Result
npm run lint passed
npm run typecheck passed
npm test 662 passed, 1 failed
npm run test:edge 482 passed (Deno 2.9.6)
npm run build passed (check-site 55 HTML files, check-links 52 sitemap URLs). Prerendered HU pages have hero-visual.jpg?v=2 and no glued DebateOwl suffix.
Desktop Chromium @smoke 47 passed on port 18100

The unit failure is the same unrelated src/test/scripts/backend-status.test.ts hook timeout (10s) while that file builds a throwaway git repo. It is not in this diff. The same test passes alone.

Changed screens

Landing (EN / HU / ES), sign-in, terms, tools hub, debate timer, the static practice guide and pricing pages, the JS-disabled startup shell, the signed-in app header, and the rename notice in EN / HU / ES. Hungarian sign-in and terms were re-shot at 390, 820, and 1440 after the hyphenation (no horizontal overflow). The notice copy did not change.

Hungarian sign-in, 390px
Landing after the rename, 1440px
Rename notice, 390px
New link-preview image

Likely conflicts

  • design/library-name edits src/locales/en.json, es.json, and hu.json, plus the first-run specs.
  • design/bottom-tab-bar edits AppLayout.tsx and e2e/home-navigation.spec.ts.
  • design/onboarding-merge edits debateowl-intro.ts, its test, App.tsx, and the verify skill.
  • design/debateowl-animations edits App.tsx.
  • design/debateowl-polish and feat/case-structure-v2 are not on the remote. Polish is expected to touch the locale files, prerendered HTML, and the owl image. Case structure is expected to touch export; this PR sets the PDF header to site.product.

DebateLab strings kept on purpose

  • The notice title and “new look” line in EN / HU / ES, including “A DebateLabből DebateOwl lesz”.
  • debatelab.ai in the pricing FAQ.
  • Routes and slugs such as /debatelab-pricing.
  • The domain, GitHub links, and @debatelab/core.
  • Storage keys, the sparring and voice crypto strings, and the importer User-Agent.
  • The local invite address workspace@debatelab.local.
  • Announcement fixtures, code comments, and the staging error that names the DebateLab staging project.
  • Docs.
  • The two hosted Auth email templates listed above. The repo copies were updated; the hosted ones were not.

To show artifacts inline, enable in settings.

Open in Web Open in Cursor 

The header, footer, titles, manifest, emails, and link preview now use the product name from site.json. The one-time notice still says DebateLab is becoming DebateOwl. Routes, storage keys, and the domain stay the same.

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

Copy link
Copy Markdown
Owner Author

Codex review (gpt-6-luna)

Independent read-only review of git diff origin/main...HEAD at aaf5327, run via codex-cli 0.164.0 on the VPS. Comment only, not an approval.

Blocker

None

Should-fix

None

Nit

  • public/owl-mark.svg:1 still has the SVG title “DebateLab owl.” Update it to “DebateOwl owl” so the asset’s own title matches the new brand.

Verdict: Adam, the rebrand changes look consistent; only a stale SVG title remains.

@Programcode

Copy link
Copy Markdown
Owner Author

Sonnet 5.5 review (claude-sonnet-5-5)

Independent read-only review of git diff origin/main...HEAD at aaf5327, run via Claude Code 2.1.309 on the VPS. Comment only, not an approval.

Blocker

None

Should-fix

  • src/locales/hu.json (about 8 lines in login.title, confirmBanDesc, welcome, debateFirstDesc, debateCurrentDesc, terms.p5, prepCta, description): the suffixed forms ("DebateOwlba", "DebateOwlt", "DebateOwlban", "DebateOwlhoz", "DebateOwlnak") are the old "DebateLab…" forms with the stem swapped.
    • "Owl" is a foreign word whose spelling ("w") doesn't match its pronunciation (/aʊl/). Hungarian orthography (AkH. §217) then attaches suffixes with a hyphen: DebateOwl-ba, DebateOwl-t, DebateOwl-ban, DebateOwl-hoz, DebateOwl-nak.
    • Vowel harmony is back-vowel, so -ba/-ban/-hoz/-nak are the right variants. The unhyphenated spelling is the issue.
    • The PR already writes "DebateOwl-fiókod" with a hyphen, so the file is inconsistent.
    • Suggested fix: hyphenate every suffixed occurrence. grep -nE 'DebateOwl(ba|t|ban|hoz|nak|ról|ra)\b' finds them.
    • Also check terms.p5 "DebateOwlt": a linking vowel is unnecessary once the hyphenated form is used.
  • supabase/config.toml and supabase/templates/confirmation.html / magic_link.html: these change only the local Supabase config.
    • The hosted production and staging projects keep their own email subject and template in the dashboard.
    • Production sign-in emails will still say "DebateLab" until someone updates them there. A PR checklist item or a note is needed.
    • They are not deployed by the merge.

Nit

  • public/hero-visual.jpg: the file is replaced under the same URL. I viewed the image and it is clean, with the DebateOwl wordmark and owl. Social scrapers cache OG images by URL (Facebook, LinkedIn, Slack), so previews may show the old image for days. Consider a re-scrape, or a ?v= bump in og:image if you want it immediate.
  • public/owl-mark.svg:1: <title>DebateLab owl</title> was missed. It is a visible accessible name and should be "DebateOwl owl" or just "Owl mascot".
  • src/lib/debateowl-intro.ts:2, en.json / es.json / hu.json notice copy (about line 1534): the remaining "DebateLab" strings are intentional because they name the old brand. In HU, "A DebateLabből DebateOwl lesz" reads fine ("DebateLab" takes -ből without a hyphen as it is pronounced as spelled). The ES text ("El nombre nuevo ayuda a que más gente nos encuentre en Google") is fine too.
  • Hungarian "DebateOwl" in hu.json attribution and generatedBy (A DebateOwl készítette) are fine. No separate issue.
  • e2e/production/canary.spec.ts (title assertion): changing to /DebateOwl/ is correct, but it will fail if the canary runs against the previous deployment.
    • No .github file was touched, so there is no workflow change to review. The change is only the spec assertion.
    • If the post-deploy canary can start before Vercel promotes the new build, it can fail transiently on the title check. The check is otherwise correct, and this is not specific to the PR.
  • Scope: the diff also reworks scripts/generate_seo_content.py to use {product} placeholders and wires site.product into the Navbar, Footer, AppLayout, PublicPageShell and PDF header (src/lib/pdf-export-utils.ts). That is reasonable and reduces future drift. Rewording the notice (noticeBody) and the og:image:alt text goes slightly beyond a pure rename, but both are in the PR description.

Checked and fine

  • Preserved on purpose:
    • Storage and localStorage keys (debatelab:trial-banner-dismissed:, debatelab:otp-resend-until:, debatelab:workspace:) are unchanged, as are the observability metric names (debatelab.product_event).
    • The HMAC derivation strings in voice-token.ts ("DebateLab voice token key v1") and sparring-persistence.ts ("DebateLab sparring integrity key v1") are unchanged. Changing them would invalidate existing voice tokens and sparring data.
    • The DEBATELAB PRODUCT IDENTITY prompt header is kept, and prompts.test.ts still asserts that exact string.
    • Routes (/debatelab-pricing, /debatelab-vs-*), canonical and url values in JSON-LD, the debatelab.ai mention in public/llms.txt and the privacy@debatelab.app address are unchanged.
  • Prerendered pages: each prerendered page's <title>, og:*, twitter:*, JSON-LD, breadcrumb, nav and footer were renamed together, with canonical URLs untouched. The manifest name and short_name, sw.js offline text and theme-init.js bootstrap error text are all updated. The startup shell test is updated to match.
  • ES wording: "Lanzar DebateOwl", "Iniciar sesión en DebateOwl" and "Volver a DebateOwl" read naturally. There is no suffix or article issue because the brand has no gender marker in these sentences.
  • Tests: the edits are straight string updates. The intro test's expected dialog name follows the new noticeTitle. Nothing was weakened or deleted.

Verdict: Safe to merge once the Hungarian suffixes are hyphenated, with the hosted email templates and the owl-mark.svg title as follow-ups.

DebateOwl takes Hungarian case endings with a hyphen. The owl mark title matches the new name, and og:image and twitter:image use hero-visual.jpg?v=2. The production canary still requires a DebateOwl title and reloads for the promotion window.

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

cursor Bot commented Oct 27, 2026

Copy link
Copy Markdown

Sonnet review: hyphenated the Hungarian suffixes on DebateOwl (-ba, -t, -ban, -hoz, -nak), including the tools catalog. The notice stays “A DebateLabből DebateOwl lesz”, because DebateLab is pronounced as spelled and -ből stays attached. og:image and twitter:image now use hero-visual.jpg?v=2. The canary still requires a DebateOwl title and reloads for up to 3 minutes while the previous HTML can still be what the edge serves. Hosted auth templates were not changed; the PR description lists the two that still say DebateLab (391cf5c).

@cursor

cursor Bot commented Oct 27, 2026

Copy link
Copy Markdown

Codex review: updated public/owl-mark.svg. The title is now “DebateOwl owl” (391cf5c).

# Conflicts:
#	.claude/skills/verify-debatelab/features/auth-demo-login.md
#	.claude/skills/verify-debatelab/recipes/auth.spec.ts
#	.claude/skills/verify-debatelab/recipes/current-debate.spec.ts
#	e2e/first-run.spec.ts
#	e2e/full-stack/first-run.spec.ts
#	e2e/hungarian-parity.spec.ts
#	src/lib/debateowl-intro.ts
#	src/locales/en.json
#	src/locales/es.json
#	src/locales/hu.json
#	src/test/pages/SharedPage.test.tsx
@Programcode
Programcode marked this pull request as ready for review October 27, 2026 10:58
Copilot AI balanced review requested due to automatic review settings October 27, 2026 10:58
@Programcode
Programcode merged commit 477eb06 into main Oct 27, 2026
2 of 13 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