Skip to content

fix(ui-14): unify index.html <title> with manifest name — closes Finding #2#119

Merged
VDP89 merged 1 commit into
mainfrom
fix/ui-14-title-unify-with-manifest
May 16, 2026
Merged

fix(ui-14): unify index.html <title> with manifest name — closes Finding #2#119
VDP89 merged 1 commit into
mainfrom
fix/ui-14-title-unify-with-manifest

Conversation

@VDP89
Copy link
Copy Markdown
Owner

@VDP89 VDP89 commented May 16, 2026

Summary

  • Closes Phase 4 dogfood Finding ci: add GitHub Actions workflow running pytest on push and PRs #2 (Cosmetic, Low). The PWA standalone window title bar rendered "Karasu UI" while the manifest identity (name + short_name) is sealed at "Karasu" per §3-A. Operator picked path 1 of the two paths offered in the dogfood log: unified identity, drop the "UI" suffix.
  • One-line HTML change + lockstep test update + new cross-check test that pins the relationship for future PRs.

Files

  • src/karasu/ui/static/index.html<title>Karasu UI</title><title>Karasu</title>. The other static HTML titles (login.html, design-system.html, offline.html) were already consistent with the manifest convention; no ripple needed.
  • tests/test_ui_server.py::test_index_html_served_at_root — existing route-wired assertion updated in lockstep.
  • tests/test_ui_manifest.py::test_index_html_title_matches_manifest_name — NEW cross-check in the Layer 2 identity grouping that parses index.html, extracts the <title> content, and asserts it equals manifest["name"]. Same pattern as the existing test_tokens_css_bg_0_matches_manifest cross-check between tokens.css and the manifest.
  • docs/phase-4-dogfood.md — Finding ci: add GitHub Actions workflow running pytest on push and PRs #2 marked resolved with path-1 rationale.

What's NOT in this PR

  • Finding phase:1B real Claude smoke observations #4 (manifest screenshots[]) — operator decided to honor the original dogfood deferral. The shell empty-state is minimalist and the preview value in the install dialog is currently low; revisit when there are visuals worth showing.
  • No brief amendment — UI-14 §3-A seals manifest fields but never sealed <title>. The cross-check test is the new binding.

Relation to other Phase 4 PRs

Independent of PR #116 (origin_matches), PR #117 (manifest id: "/"), and PR #118 (VAPID docs). The new INDEX_HTML_PATH constant in test_ui_manifest.py doesn't conflict with PR #117's Layer 2.5 grouping; landing order does not matter.

Test plan

  • pytest tests/test_ui_manifest.py::test_index_html_title_matches_manifest_name — passes
  • pytest tests/test_ui_server.py::test_index_html_served_at_root — passes
  • Full file: 60/60 in tests/test_ui_manifest.py + tests/test_ui_server.py. One pre-existing Windows-only CRLF failure in test_valid_asset_under_static_dir_is_served is unrelated (also fails on main).
  • After install, the OS title bar of the PWA standalone window should now read "Karasu" matching the launcher tile name.

🤖 Generated with Claude Code

…ing #2

Phase-4 dogfood Finding #2 (Cosmetic, Low): PWA standalone
window title bar rendered "Karasu UI" while the manifest
identity (`name` + `short_name`) is both sealed at
"Karasu" per §3-A. The OS title bar and the launcher tile
disagreed on what to call the app.

Operator picked path 1 of the two paths offered in the
dogfood log (unified identity). `src/karasu/ui/static/index.html`
line 8 now reads `<title>Karasu</title>`. The other static
HTML titles (login.html, design-system.html, offline.html)
were already consistent with the manifest convention; no
ripple changes needed.

Tests:

- `tests/test_ui_server.py::test_index_html_served_at_root`
  — existing route-wired assertion updated in lockstep
  with the HTML change.
- `tests/test_ui_manifest.py::test_index_html_title_matches_manifest_name`
  — NEW cross-check (Layer 2 identity grouping) that
  parses index.html, extracts the `<title>` content, and
  asserts it equals `manifest["name"]`. Catches any
  future drift between the OS window chrome and the
  launcher tile at test time, the same way the existing
  `test_tokens_css_bg_0_matches_manifest` catches color
  drift between tokens.css and the manifest.

No brief amendment needed — the UI-14 brief never sealed
`<title>`.

Tests: 60/60 in the affected files (manifest 19/19 +
ui_server 41/41 of non-Windows-CRLF tests); 1 pre-existing
Windows-only CRLF failure in test_ui_server.py is unrelated
and also fails on main.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@VDP89 VDP89 merged commit 3b2b131 into main May 16, 2026
2 checks passed
@VDP89 VDP89 deleted the fix/ui-14-title-unify-with-manifest branch May 16, 2026 13:53
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.

1 participant