Skip to content

Palette 5.2.7: improve discovery, account saving and mobile interactions - #139

Merged
Ingwalde merged 13 commits into
mainfrom
release/5.2.7
Sep 15, 2026
Merged

Ingwalde merged 13 commits into
mainfrom
release/5.2.7

Conversation

@Ingwalde

Copy link
Copy Markdown
Owner

Palette discovery and detail actions were difficult to use on small screens, and guest
favorites obscured the requirement to save palettes to an account. This release makes
saving explicit, simplifies palette cards and groups secondary actions.

This branch imports the already-implemented and user-reviewed release/5.2.7 work 1:1 from
the handoff bundle (reference commit 0bc2730, base b0fc4aa = v5.2.6). The import was
verified: git diff 0bc2730 <import> is empty and the range is 54 files, +1854/-781. No
source was hand-edited. The only commit added on top is the review-doc update below.

Changes

  • Redesign palette cards (large color swatches, 176px / 160px mobile, radius 18px, compact
    Save, up to two visible tags) and shorten the editorial hero while preserving randomized
    artwork (2–6 colors chosen once per home visit, not on every render).
  • Require an account for Save and resume exactly one requested save after authentication,
    with return-path/TTL validation; no guest local collection is restored.
  • Add exact color-count filtering (1–8) plus "Any count", with backend filtering before
    pagination and total; stable tags, debounced search and URL/back-navigation + scroll state.
  • Preserve the selected palette when opening Export (source=single + handle + slug) and
    improve Favorites states (account wall, empty state, Manage-gated Clear).
  • Improve mobile navigation, responsive/measured search hints, light/dark theme readability,
    color-vision reflow and selection contrast, and viewport-clamped Copy/More menus with
    CSS chevrons.
  • Animate incoming pages (opacity + translateY, 240ms) and menu open/close (180ms, closed
    menus inert); respect prefers-reduced-motion.
  • Update release notes, version strings and API documentation.

Validation

Run in this publishing environment on the imported branch. Full detail is in
docs/releases/5.2.7-review.md.

Frontend (Node 22, npm ci):

  • npm run build (tsc + vite): passed.
  • npm run lint (oxlint) and npm run format:check (prettier): passed.
  • npx vitest run --coverage --maxWorkers=2: 232 passed / 42 files, exit 0.
    Coverage — statements 78.19%, branches 72.95%, functions 72.61%, lines 80.52% (thresholds met).
  • npm run css:orphans: no orphaned class names.

Backend (venv from backend/requirements-dev.txt, against a locally provisioned PostgreSQL 16
with pg_trgm — the Docker Compose test profile could not run because the egress policy
blocks the container image registry):

  • ruff check, ruff format --check, mypy backend/app: passed.
  • pytest: 192 passed, coverage 88.92% (gate 80%), including the new regression tests for
    exact color-count bounds (1/8), invalid bounds and combined search/tag/count with total
    counted before pagination.
  • Alembic agreement (drop schema → alembic upgrade head → alembic check): "No new upgrade
    operations detected."
  • pip-audit --strict: no known vulnerabilities.

Playwright:

  • e2e/ (a11y + flows + focus + email links): 32 passed, run against the environment's
    Chromium via a temporary, uncommitted executablePath override (the pinned Playwright 1.62.1
    expects a browser build not installed here). No committed config or app code was changed.

Not run in this environment (left for CI): the visual screenshot baselines (only meaningful in
the pinned Playwright image with the matching browser build — baselines must not be updated
blindly), the Lighthouse budget, and the real-stack integration suite (both need container
images the egress policy blocks). No new screenshots were captured here.

The user reviewed the interactive mobile demos and approved creating this PR. No merge,
deployment or tag is included.

🤖 Generated with Claude Code

https://claude.ai/code/session_01WUEj1ssxL5BHJN6m84rL7e


Generated by Claude Code

codex and others added 12 commits September 14, 2026 23:08
Add a dated section to the 5.2.7 review checkpoint capturing the full
verification run performed in the environment that imported the reviewed
release/5.2.7 commit and published the PR: frontend build/lint/format,
232 vitest tests with coverage and no orphan CSS; backend ruff/mypy,
192 pytest against a locally provisioned PostgreSQL, alembic agreement
and pip-audit; and 32 Playwright e2e/a11y tests. Notes which gates
(visual baselines, Lighthouse, integration) remain for CI and why.

This is the only change on top of the reviewed reference commit; no
source was hand-edited.
Record that release/5.2.7 was pushed and PR #139 to main was opened from
the publishing environment; the earlier no-credentials note no longer applies.
Ingwalde added a commit that referenced this pull request Sep 15, 2026
Record that release/5.2.7 was pushed and PR #139 to main was opened from
the publishing environment; the earlier no-credentials note no longer applies.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WUEj1ssxL5BHJN6m84rL7e
The 5.2.7 card, hero, menu and layout changes altered how every visual page
renders, but the reviewed release did not re-record the committed baselines,
so the `visual` CI job failed on 21 screenshot diffs. Re-recorded all 21
affected baselines in the pinned Playwright image
(mcr.microsoft.com/playwright:v1.62.1-noble), the same environment CI compares
in, and confirmed a clean compare passes (22/22). No app or test code changed.
@Ingwalde
Ingwalde merged commit 67466eb into main Sep 15, 2026
16 of 17 checks passed
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.

2 participants