Skip to content

fix(grid): widen the Bar box so two digits show beside the spinner - #821

Merged
thcp merged 1 commit into
big-releasefrom
fix/grid-value-box-803
Oct 20, 2026
Merged

thcp merged 1 commit into
big-releasefrom
fix/grid-value-box-803

Conversation

@thcp

@thcp thcp commented Oct 20, 2026

Copy link
Copy Markdown
Collaborator

Closes #803

  • .bg-meter input[type=number] (static/css/daw.css) was width: 4ch (29px border-box, 19px text area). The native spin button takes 15px, so even one digit was cramped and 12 or 32 scrolled out of view.
  • Now 44px wide, 2px side padding. CSS only; no JS, strings, i18n or Guide change.
  • Only control clipped: Bar (#bg-barlen, beats per bar 1-32). Ripple and Snap are checkboxes and carry no value.

Measured (Chromium, Bar = 32):

  • Before: width 29, clientWidth 27, scrollWidth 37, digits 13.9px, room 19 - 15 spinner = 4
  • After: width 44, clientWidth 42, scrollWidth 42, digits 13.9px, room 38 - 15 = 23

Test: tests/e2e/grid-value-box.spec.mjs. Red on big-release, green with the fix. Also asserts the toolbar height (row count) is unchanged at 1440, 1280 and 1024px, with no overflow.

Not changed: toolbar layout. It already wraps in the narrow wave column; no row added.

The 4ch box left 19px of text area, and the native spin button takes 15px of it, so even a single digit was cramped and 12 or 32 scrolled out of view.

Closes #803
@thcp
thcp marked this pull request as ready for review October 20, 2026 10:21
@thcp
thcp merged commit 0729c83 into big-release Oct 20, 2026
10 checks passed
thcp added a commit that referenced this pull request Oct 22, 2026
…g-release (#836)

Closes #835

## What changed

- **PR to `main`, push to `main`, release:** full suite, as before.
- **PR to any other base:** smoke + changed specs + mapped specs. A hub
module (former `full` source entries: `main.js`, `state.js`, `mixer.js`,
`catalog.js`, `index.html`, `app/api/jobs.py`, `stems.py`,
`app/core/**`, ...) or an unmapped file under `static/` or `app/` now
adds a fixed **core set** (17 specs) instead of everything. `uv.lock`
and `pyproject.toml` add core too.
- **Full suite on a non-main PR** only for a change to how the suite
runs: `playwright.config.mjs`, `tests/e2e/helpers*`, `serve.sh`,
`seed.py`, `package*.json`, the three e2e workflows, the selector,
`spec-map.json`, or unmapped code under `tests/e2e/`.
- **New `e2e-full.yml`:** full suite on every push to `big-release`,
nightly (04:17 UTC) on `big-release`, and `workflow_dispatch` with a
`ref` input.
- **New reusable `e2e.yml`** (`workflow_call`, inputs `mode`,
`base-ref`, `checkout-ref`) holds the steps once. Same pinned SHAs,
`permissions: {}`, no secrets.
- **Concurrency:** a new push to a PR cancels that PR's older e2e run.
Pushes, releases, nightly and manual runs are never cancelled.
`timeout-minutes: 30` per shard.

## What did not change

- Application code, specs, `uv.lock`, package files. Three shards,
`--pass-with-no-tests`.
- Check names gain a prefix: `frontend-e2e / frontend-e2e (1)` to `(3)`.
A reusable workflow always prefixes the caller job. No branch protection
or ruleset requires these names today (checked).

## Real diffs, before and after

| Diff | Files | Before | After |
|---|---|---|---|
| #806 (queue.js, catalog.js) | 5 | FULL 105 | 30 (core), includes
queue-progress |
| #820 | 7 | FULL 105 | 59 (core) |
| #821 | 2 | 47 | 47 |
| #823 | 8 | 5 | 5 |
| #828 (uv.lock) | 4 | 5 | 22 (core) |
| #819, #830, #831 | 7 to 19 | FULL 105 | FULL 105 (edit
`spec-map.json`) |
| #829 | 19 | FULL 105 | FULL 105 (edits `helpers.mjs`) |
| #822 | 33 | FULL 105 | FULL 105 (edits `seed.py`) |
| `main...big-release` | 331 | FULL | FULL (PR to main) |

`npx playwright test --list <selected>` matches the selector exactly for
#806 (30 files, 200 tests) and #820 (59 files, 465 tests). Full suite:
724 tests in 105 files. Core + smoke alone: 159 tests in 22 files.

## Trade-off

A non-main PR can pass while a spec outside its core and mapped sets
breaks. The push to `big-release` run catches it on the merge commit,
minutes later.

## Limits

- **The nightly schedule only starts once `e2e-full.yml` reaches
`main`.** GitHub runs scheduled workflows from the default branch, and
the job checks out `big-release` explicitly for that reason.
- Neither concurrency nor the timeout helps a hosted runner GitHub never
assigns (queue time does not count toward the timeout). Fix by hand:
re-run the job, or `gh run cancel <id>` then `gh run rerun <id>
--failed`.
- This PR changes `ci.yml`, so its own CI runs the full suite. Expected.
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