Skip to content

Fix the two focused-interactions e2e failures, and drop the version-bump action - #220

Closed
KohmeiK wants to merge 2 commits into
mainfrom
claude/zealous-ramanujan-7f11f9
Closed

Fix the two focused-interactions e2e failures, and drop the version-bump action#220
KohmeiK wants to merge 2 commits into
mainfrom
claude/zealous-ramanujan-7f11f9

Conversation

@KohmeiK

@KohmeiK KohmeiK commented Jul 24, 2026

Copy link
Copy Markdown
Member

Two independent changes: the e2e fixes below, plus removal of the automated version-bump action (requested separately — see the last section).

Part 1 — e2e failures

Gets e2e/focused-interactions.mjs back to green: 0 issues across 3 consecutive runs (baseline on main: 2).

1. Case failed: pan-zoom-slider — script fix

#218 moved the playback controls into the left nav rail's Analyze group, so #slider does not exist while Edit is the open mode and boundingBox() timed out.

  • Added an openAnalyze() helper that checks .playbackControls before clicking, since the rail buttons toggle their own panel (tabClicked) — a blind click would close what the case needs.
  • A second break the timeout was masking: the scrubber is now a horizontal Material slider rotate(90deg) inside .verticalSlider, so the old horizontal drag would have moved it zero even once found. It is now dragged down its height. Verified real, not just non-throwing: beforeValue: "0" → afterValue: "299".
  • Switched button:has-text("play_arrow").playbackControls .playButton, which does not break when the icon flips to pause.

2. Horizontal overflow on mobile — a real pre-existing app bug

Neither of the two suspected causes. It is not a regression from the left-nav rework, and not a stale expectation.

All 851px came from nav.navBar; no other element exceeded the 390px viewport. #218 only removed buttons from that bar (Undo, Redo, Equations), so pre-#218 it was roughly 170px wider. The bar is display:flex; width:100% with button { flex: 0 0 auto; white-space: nowrap }, and the app has essentially no responsive CSS (2 media queries repo-wide, both added by #218).

The defect is real, though: document-level overflow means the whole page pans sideways on mobile, dragging the grid and panels off-screen. Fixed by containing the overflow in the bar — overflow-x: auto plus a hidden scrollbar, since a classic scrollbar would eat half of the 30px strip. Every button stays reachable by swiping the bar. Verified scrollWidth 851 → 390; desktop rendering unchanged.

I deliberately did not restyle the bar to icon-only below a breakpoint — that is a design call. It would fit (7 buttons x ~40px + logo ~= 343px) and every button already carries a tooltip.

3. Baseline flakes, and one that was not flaky

  • Visible NaN in UI and Case failed: link-context: flaky — zero occurrences in 6 runs. Left alone.
  • Opening Analyze surfaced a deterministic console warning (3/3 runs): the openClose trigger animating display, from collapsible-subseciton. Angular warns and drops the property, so the collapse was relying on something that does not work. Removed display: 'none' from the closed state and added the overflow: hidden on .panel-content it needs in order to hide content at zero height.

Reviewer notes

collapsible-subseciton is a shared BLOCK used by 5 panels (edit, analysis, equation, settings, synthesis), so that change is the widest-reaching one here. I verified collapse/expand visually and by measurement (height: 208 → 0 → 208, no bleed-through of children past the collapsed box).

Verification

  • npm test -- --watch=false — 190/190 passing (26 files)
  • e2e/focused-interactions.mjs — 0 issues, 3 consecutive runs
  • e2e/left-nav-modes.mjs — 23/23
  • e2e/force-analysis-panels.mjs — 14/14

Related, left out of scope

  1. e2e/deep-interactions.mjs has the same Force analysis panels, left nav rework, and unified unit inputs #218 breakage (Animation slider not visible, Play button click failed). It .catch()es instead of throwing, so it degrades to warnings rather than a hard failure. The same openAnalyze + vertical-drag fix applies.
  2. e2e/full-tour.mjs mobile overflow has a different source — 516 vs 390 after this fix: 96px rail + the 420px Analyze panel. Partly worsened by Force analysis panels, left nav rework, and unified unit inputs #218 (rail went ~48px → 96px), but the 420px panel already did not fit at 390px before it.

Also worth reconciling separately: CLAUDE.md still says to route UI validation to GPT-5.5 via codex exec, but .claude/skills/ui-validate/SKILL.md has since been rewritten to run Playwright directly. I followed the skill.

Part 2 — remove the automated version bump action

Deletes .github/workflows/bumpversion.yml, which ran phips28/gh-action-bump-version on every push to main.

Worth knowing: main is also the production deploy trigger, so every merge produced a second commit (the bump) pushed straight back to main. Removing this makes version bumps deliberate.

Consequence for reviewers: package.json's version is what the bottom bar displays (through src/environments/environment.ts / environment.prod.ts). It is currently 2.0.3 and will now stay there until someone raises it by hand — so a release PR needs to include the bump. I updated the branch-rules section of both CLAUDE.md and AGENTS.md, which previously documented the action as the mechanism.

.github/workflows/verification.yml (tests + build on PRs and main) is untouched.

🤖 Generated with Claude Code

The playback controls moved into the left nav rail's Analyze group in #218,
so the pan-zoom-slider case timed out looking for a scrubber that only exists
while Analyze is open. Open Analyze first, and drag the scrubber down its
height — it is a horizontal Material slider rotated 90 degrees, not a
horizontal one any more.

The mobile horizontal overflow was not from the nav rework (that bar only got
shorter): the top toolbar's buttons never wrapped or shrank, so at 390px they
ran 851px wide and dragged the whole document sideways, panning the grid and
panels off-screen. Contain the overflow in the bar so it scrolls itself.

Opening Analyze also surfaced a standing Angular warning: the collapsible
subsection's closed state animated `display`, which is not animatable. Drop it
and let the box collapse to zero height, clipping its content.

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

netlify Bot commented Jul 24, 2026

Copy link
Copy Markdown

Deploy Preview for pmksprod ready!

Name Link
🔨 Latest commit 19a149d
🔍 Latest deploy log https://app.netlify.com/projects/pmksprod/deploys/6a6435abf9cb37000809eb18
😎 Deploy Preview https://deploy-preview-220--pmksprod.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

The action ran `phips28/gh-action-bump-version` on every push to `main`, so
each merge pushed a further version-bump commit back to `main` — which is also
the production deploy trigger. Version bumps now happen by hand in the PR that
ships a release.

`package.json`'s version is what the bottom bar shows (via `environment*.ts`),
so both agent guides now say to raise it deliberately.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@KohmeiK KohmeiK changed the title Fix the two focused-interactions e2e failures Fix the two focused-interactions e2e failures, and drop the version-bump action Jul 25, 2026
@KohmeiK

KohmeiK commented Jul 25, 2026

Copy link
Copy Markdown
Member Author

Absorbed by #221

@KohmeiK KohmeiK closed this Jul 25, 2026
KohmeiK added a commit that referenced this pull request Jul 26, 2026
- hull.js (critical, code injection via the points-format parameter):
  the patched 1.0.10+ was never published to npm — the registry stops at
  1.0.6 — so install v1.0.13 from the GitHub tag the advisory points
  at. The git layout has no dist/ bundle, so the import moves to the
  package main (typed by @types/hull.js, hence the number[][] casts) and
  the redundant angular.json global-script entry is dropped. PMKS never
  passes the vulnerable third parameter, so this was defense in depth.
- protobufjs 7.6.5 (runtime, via firebase), postcss, fast-uri, tar,
  brace-expansion: in-range lockfile updates.
- esbuild 0.28.1 and @babel/core 7.29.7 arrive with the Angular 22.0.8
  patch set; Angular's exact peer matrix moves the framework and CLI
  together, which required regenerating the lockfile (all resolutions
  stay inside the declared ranges).
- apexcharts pinned to 5.15.2: the fresh resolve pulled 5.16.0, whose
  own type declarations do not compile (ApexDrilldownEvent is used but
  never declared).

Left open: @hono/node-server (moderate, Windows path traversal) inside
@angular/cli's MCP server — the fix is only in the 2.x major, which
@modelcontextprotocol/sdk does not accept yet. Dev-only exposure; it
will close with a future Angular CLI release.

Verified: 190 unit tests pass, the production build succeeds, and the
focused-interactions e2e smoke against the built dist shows only the
two known main-branch issues that #220/#221 already fix.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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