Skip to content

fix(webapp): give a blank timed lyric line a visible box - #291

Merged
InstaZDLL merged 1 commit into
mainfrom
fix/blank-lyric-line-box
Oct 21, 2026
Merged

InstaZDLL merged 1 commit into
mainfrom
fix/blank-lyric-line-box

Conversation

@InstaZDLL

@InstaZDLL InstaZDLL commented Oct 21, 2026 •

Copy link
Copy Markdown
Owner

Stacked on #290: it targets that branch and will retarget to main once #290 merges.

Why

A timed lyric line with no words (an instrumental break) rendered {line.value || " "}, a plain space. A plain space is collapsible, so the line box had no height: in the lyrics view the line became a button.link zero pixels tall. The keyboard still reached it and announced it as "Jump to {when}", but nothing was drawn, focus ring included. This predates #290; the coverage a review asked for there is what brought it to light.

What

  • playing-page.tsx: the three fallbacks (the strip's <li>, the timed button, the untimed <li>) now use BLANK_LINE, a non-breaking space (" "). It holds one line of height, so the pause keeps its place in the sheet and its button has a box. axe's sanitize trims it like any whitespace, so label-content-name-mismatch still finds nothing visible missing from "Jump to {when}".
  • studio-nocturne.spec.ts: the blank line's button was checked with toHaveCount(1) because it could not be visible; it is now toBeVisible().

Verification

  • bun run lint, bun run test (172 passed), bun run build.
  • bunx playwright test: 138 passed, 10 skipped (the spec's existing test.skip( calls), desktop and mobile, axe clean.
  • Inversion: with BLANK_LINE set back to a plain space and the bundle rebuilt, the test fails on Jump to 0:20 with unexpected value "hidden".

Summary by CodeRabbit

  • Corrections
    • Les lignes de paroles vides conservent désormais leur hauteur et leur zone de focus dans les vues de paroles.
    • Le bouton « Jump to 0:20 » s’affiche correctement pour les lignes vides repliables.

@coderabbitai

coderabbitai Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Important

Review skipped

Review was skipped as selected files did not have any reviewable changes.

⚙️ Run configuration
  • Configuration used: Repository: InstaZDLL/waveflow-server/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: d65e682f-d3d4-42bb-9f2f-908d6eb2ecd3
📥 Commits

Reviewing files that changed from the base of the PR and between 99de200 and c04c6f8.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: InstaZDLL/waveflow-server/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 7eb8f75e-e123-43c6-8dbd-93509016ad9a
📥 Commits

Reviewing files that changed from the base of the PR and between 3a8bb36 and 99de200.

📒 Files selected for processing: 1
  • webapp/e2e/studio-nocturne.spec.ts

Limit details: You’ve used all 4 included reviews currently available. Your 67 included PR review attempts over the past 7 days set your current allowance at 4 reviews per hour.

📝 Walkthrough

Les lignes de paroles vides utilisent désormais un espace insécable pour conserver leur hauteur dans les vues de paroles. Le test vérifie que le bouton de saut associé est visible.

Changes: Affichage des paroles vides

Couche / fichier(s) Résumé
Rendu et validation des lignes vides
webapp/src/pages/playing-page.tsx, webapp/e2e/studio-nocturne.spec.ts
BLANK_LINE remplace l’espace simple dans LyricsStrip et LyricsView. Le test vérifie que le bouton « Jump to 0:20 » est visible.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~5 minutes

Change: Bug fix · Severity of issue fixed: Low

Merge Risk: ⚪ Minimal · up to 99de2

The blank-line fix preserves visible rendering and expected accessibility labels without introducing merge-blocking risk.

Architecture risk: 🔵 Low · up to 99de2

The change affects 1 system.

Changed systems: webapp

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — webapp (ui) was modified; 2 changed files map to changed impact.

Before / after behavior

  • observed — Modified behavior in webapp/src/pages/playing-page.tsx: Ajout de la constante BLANK_LINE, représentant un espace insécable utilisé pour préserver la hauteur des lignes de paroles vides.
  • observed — Modified behavior in webapp/src/pages/playing-page.tsx: LyricsStrip affiche désormais BLANK_LINE pour les lignes vides au lieu d’un espace simple.
  • observed — Modified behavior in webapp/src/pages/playing-page.tsx: LyricsView utilise désormais BLANK_LINE pour les lignes vides, y compris dans les boutons de paroles synchronisées.
  • observed — Modified behavior in webapp/e2e/studio-nocturne.spec.ts: Le test remplace la vérification de présence du bouton de saut de la ligne vide par une vérification de visibilité, afin de détecter un bouton rendu sans hauteur.
Pre-merge checks: Passed 5
Check name Status Explanation
Title check Passed Le titre est court, précis et décrit le changement principal : rendre visible la boîte d’une ligne de paroles temporisée vide.
Description check Passed La description explique clairement le problème, les changements, les tests exécutés et la validation par inversion. Elle n’utilise pas exactement les sections du modèle et ne confirme pas explicitemen…
Docstring Coverage Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 2 files.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

La description explique clairement le problème, les changements, les tests exécutés et la validation par inversion. Elle n’utilise pas exactement les sections du modèle et ne confirme pas explicitement le test manuel ni le DCO, mais elle reste suffisamment complète et pertinente.

✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@github-actions github-actions Bot added scope: web Embedded web player (React) scope: components Web UI components type: fix Bug fix size: s 10-50 lines labels Oct 21, 2026
@InstaZDLL InstaZDLL self-assigned this Oct 21, 2026
@InstaZDLL
InstaZDLL added this pull request to stack #292 October 21, 2026 00:51
@github-actions github-actions Bot added type: fix Bug fix and removed type: fix Bug fix labels Oct 21, 2026
@InstaZDLL
InstaZDLL force-pushed the fix/blank-lyric-line-box branch from 3a8bb36 to 99de200 Compare October 21, 2026 01:13
@github-actions github-actions Bot added type: fix Bug fix and removed type: fix Bug fix labels Oct 21, 2026
Base automatically changed from fix/axe-label-content-name-mismatch to main October 21, 2026 01:20
A line with no words rendered a plain space, which is collapsible, so its
line box had no height: in the lyrics view a blank timed line became a
button zero pixels tall that the keyboard still reached and nobody could
see, focus ring included. Both views now fall back to a non-breaking
space, which holds one line of height, so the pause keeps its place in the
sheet and its button a box. axe trims it as whitespace, so the name
"Jump to {when}" still contains everything on screen.

The e2e test that counted the blank line's button, because it could not
be visible, now asks for it to be visible.

Signed-off-by: InstaZDLL <github.105mh@8shield.net>
@InstaZDLL
InstaZDLL force-pushed the fix/blank-lyric-line-box branch from 99de200 to c04c6f8 Compare October 21, 2026 01:20
@github-actions github-actions Bot added type: fix Bug fix and removed type: fix Bug fix labels Oct 21, 2026
@InstaZDLL
InstaZDLL merged commit 0ee23ce into main Oct 21, 2026
12 of 13 checks passed
@InstaZDLL
InstaZDLL deleted the fix/blank-lyric-line-box branch October 21, 2026 01:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

scope: components Web UI components scope: web Embedded web player (React) size: s 10-50 lines type: fix Bug fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant