Commit Graph
5 Commits
Author SHA1 Message Date
kevinveenbirkenbachandClaude Opus 5 5b69b5c7c6 Merge branch 'feature/designer' into feature/store-i18n
Six conflicts, all from git pairing store-i18n's renamed roles with their designer originals.

web-app-meta/meta/services.yml and web-app-sphinx/vars/main.yml: store-i18n renamed web-app-sphinx to web-app-meta and dropped its custom build, so the role keeps the prebuilt ghcr.io/infinito-nexus/meta image and the old sphinx role stays deleted.

svc-ai-tika/templates/compose.yml.j2: a bogus rename pairing dropped sphinx build lines into the tika service. Rejected; the template is byte-identical to its pre-merge state again.

web-app-docs/templates/Dockerfile.j2: the designer file renders sphinx under the design title and reads SPHINX_IMAGE, SPHINX_OUTPUT_DIR and SPHINX_EXEC_DIR, none of which exist in web-app-docs, which builds from files/Dockerfile. Rejected.

web-app-docs/templates/playwright.env.j2 and files/playwright/test-design.js: both sides add independently, so both are kept. Of the designer's three new env reads only designTitle survives; iconUrl and faviconUrl are shadowed inside the test by stricter requireDotenvValue reads and were dead at module scope.

plugins/lookup/email.py merges clean toward designer, which is intended rather than a loss: 08ef66d8de (2026-10-08) replaces the submission_via_relay port-25 rule of 233f15f3e0 (2026-07-01) with per-bot app passwords under SSO, and carries the matching 04_manage_user/app_password tasks.

Checked after resolving: no duplicate YAML keys across the 17 merged YAML files, and no nocheck line dropped above a renamed key.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-15 22:21:50 +02:00
kevinveenbirkenbachandClaude Opus 5 d039d116e2 fix(web-app-wordpress): put the admin background out of reach of a plugin's reset
The corporate scheme sheet reached wp-admin all along: it is served as #colors-css at index 2 of nine, after the core bundle, and the response body is byte-identical to files/css/admin.css. What overwrote it is injected after the document loads.

The AI Engine plugin, enabled in this round because the variant turns on litellm, adds its Neko base stylesheet to the DOM at runtime with 'body{background-color:var(--neko-background-color)}', resolving to #f0f0f1. That is specificity (0,0,1) against our own (0,0,1), applied later, so it won and wp-admin kept WordPress's stock grey.

Binding the two rules to body.admin-color-infinito raises them to (0,1,1), which no later plain body rule can undercut. WordPress serves this sheet only to accounts on the infinito scheme, so the class is present wherever the file is; the same spec asserts toHaveClass(/admin-color-infinito/) one line earlier and that assertion passed on the page that failed.

It also recovers the colour declaration beside it, which Neko was hijacking to rgb(42, 48, 60) - the next body-level assertion in the spec would have failed on that in turn.

Measured rather than argued: rebuilding the seven traced stylesheets in document order gives rgb(255, 245, 234), appending the Neko rule reproduces the CI value rgb(240, 240, 241) exactly, and the patched sheet with that rule still present returns rgb(255, 245, 234) and rgb(34, 28, 20).

login.css carries the identical unscoped rule and is deliberately untouched: its spec is skipped while sso is on, so there is no evidence the login body carries the scheme class in every configuration.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-15 14:55:54 +02:00
kevinveenbirkenbachandClaude Opus 5.5 045c9a63f7 fix(web-app-wordpress): paint the welcome artwork, the drop overlay and the button tints from design tokens
Three admin surfaces still showed WordPress's own blue or its inline artwork colors: the button hover and active tints fell back to 56,88,233 when the admin scheme leaves --wp-admin-theme-color--rgb unset, the dashboard welcome panel ships inline SVG artwork and icon tiles with fixed fills, and the media drop overlay painted itself in the theme blue. The fallbacks now use --design-link-rgb, the welcome artwork and tiles take the frame and on-frame tokens, and the overlay paints the frame with on-frame text, while the editor's own drop target keeps its surface pairing in a rule of its own.

The spec asserts the welcome panel and the overlay in both modes, scans all five corporate stylesheets for literal colors including inline SVG data URIs, adds the drop overlay to the gallery, and waits for the Fediverse statistics widget before capturing the dashboard.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-15 14:52:58 +02:00
kevinveenbirkenbachandClaude Opus 5.5 6c2de017f8 fix(design): split selector lists that mix vendor pseudo-classes and forbid them
A browser drops a whole selector list when one selector in it uses a
pseudo-class or pseudo-element it does not know. Role stylesheets grouped
vendor variants such as ::-moz-placeholder, :-ms-input-placeholder and
::-webkit-input-placeholder into one rule, so Chromium never applied the
rule and Firefox dropped the ones that carried -webkit- selectors.

113 such rules in 20 stylesheets of 15 roles are split into one rule per
vendor group, with the same declarations at the same place in the cascade.
For Jellyfin, OpenBao and Taiga this commit carries only the split of the
committed stylesheet; their pending design passes keep their own changes.

tests/lint/repository/test_css_vendor_pseudo_lists.py scans every
roles/**/*.css and *.css.j2, masks Jinja and comments, and rejects a
selector list whose selectors carry different vendor pseudo groups. A
self-test covers a mixed list and its split form.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-12 18:03:16 +02:00
kevinveenbirkenbachandClaude Opus 5.5 240d27ab21 feat(web-app-wordpress): carry the palette through WordPress's own mechanisms
files/php/design.php, run through wp eval-file from tasks/08_design.yml,
sets the title, site icon and site logo as options and writes a
wp_global_styles post for Twenty Twenty-Five whose presets point at the
design tokens, so the site follows the palette in light and dark
without a role stylesheet.

The new mu-plugin infinito-design registers an admin color scheme
infinito, gives it to new accounts and moves accounts still on the
default scheme once; a scheme a user picked is kept. It also styles the
sign-in page and hands the token sheet to the block editor canvas. The
five sheets under files/css map WordPress's compiled admin colors onto
the tokens, since the color scheme API only repaints the chrome.

The spec signs in through the WordPress form when SSO is off, because
the local administrator does not share the platform password, and
asserts tokens, admin chrome, editor, media grid, sign-in page, focus
rings, logo and title before capturing a gallery of site and wp-admin.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-08 22:13:05 +02:00