Repository navigation
feat(ui): softer palette (zinc/graphite) and stacked table cells that fit the screen - #219
Merged
Merged
Conversation
…ys scrolling Console theme, option B of the ui-tune table-width round (owner-approved 2026-09-30): related columns become lines of one cell, each part keeping its own cell slot, header label, sort control and help tip. Nothing is hidden; rows may grow taller. - DataTable: Column.stack / stackLayout / cellLabel / stackBelow. A stacked host draws its parts' header labels (a sortable part sorts on a click on its label or with its own sort button, whose name carries the order) and its cell lines. Parts are columns again from stackBelow up and whenever the theme is off (upstream's column order); phone cards are unchanged. - columnStack.ts: stackColumns() applies the column settings to stacked tables (a hidden part drops its line, a hidden host keeps its parts' lines). - Accounts always stacked (9 columns; the 5 optional columns join cells); admin usage and the admin error list below 1800px, the ops error dialog at every width (it is at most 1240px wide); user usage, user errors and IP management below 1400px; API keys use the compact recipe up to 1440px. - tables.css (after the page files): the layout rules, all under html.flat-theme; existing rules keyed on a merged column also name its line. - Account names and e-mails break at word joins, model ids only after a slash (an outlier part over 32 characters also after its hyphens); without the theme both render as upstream. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Implements the owner-approved palette C (preview of 2026-09-30) in the console theme styles; templates and scripts are unchanged and every rule stays under html.flat-theme, so theme off still renders upstream. - tokens: zinc neutrals in light, layered graphite in dark (canvas #1a1a1d, surface #212125), zinc text greys and dark-* family, dark identity and accent soft fills recomputed for the new surface, chart series 1 blue; fill roles (--ui-solid*, --ui-on-solid, --ui-track, --ui-thumb*, --ui-choice-edge) replace the ink fills and the unused --ui-on-ink override is dropped - the rules that painted rgb(var(--ui-ink)) fills read the roles: a primary action is solid green, a segmented control is a grey track with a raised pill, chosen options and the current page take the accent tint and edge, marks take the accent - style.css recipes: .btn-primary, .tabs / .tab-active, .switch-active; calmer weights (buttons, tabs, filter pills, field labels 500, table headers 400, KPI values 500) - usage records: model and billed cost in ink, token figures and names in the soft ink, token glyphs in their upstream hues - dark tables: text-white reads the ink instead of pure white - selected rows: in dark, secondary text takes the soft ink and danger text red-300 (4.70 and 4.88:1 on the hovered selected fill; the muted grey and #f69898 fell to 4.31 and 4.35), stacked cell-line labels included; in light the hovered selected fill mixes 3 % ink instead of 4 %, so red, amber and green text keep 4.5:1 (4.45-4.48 before) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
vue-i18n reads a bare @ as the start of a linked message, so the
"username:password@host:port" label failed to compile
(localesMessageCompile spec, which CI does not run). Use the literal {'@'}.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rt box line Hovering a part label darkened the host label too (the whole-cell hover rule), so it was unclear which column a click sorts; an unsorted part kept an empty 11px sort box that wrapped onto a line of its own in narrow headers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
GHSA-c29m-xwm3-cm6r, -mghh-pgcx-3jjj, -x97p-jq2g-jp4f, -3pq3-5fj3-cg6v, -542g-h47m-68v8, -m8m8-qj5v-23w3 and -r4gj-5m52-g5wh affect axios < 1.20.0 and fail the frontend-security audit gate for every branch. 1.20.0 keeps the same dependency set (form-data ^4.0.6 is already locked at 4.0.6). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two owner-approved changes (2026-09-30, from full-size previews on real pages), plus one small fix:
Less black, readable text (palette C). Light mode moves to shadcn zinc neutrals. Dark mode moves to Linear-like layered graphite (canvas #1a1a1d / surface #212125), so there is no near-black base any more.
tokens.css(--ui-solid*,--ui-track,--ui-thumb*, …) that about 58 former ink-fill rules now read. CSS only.Tables fit the width (option B). Related columns become lines inside one cell, in upstream column order, and every part keeps its own sort control. Accounts is always stacked; usage records and error requests (admin) are stacked below 1800 px; user usage and error requests and IP management below 1400 px; keys, users, channels and groups are fixed at 1280.
styles/console/tables.css, and theme rules migrated to the stacked lines. Stacked headers darken only the hovered label, and an unsorted part no longer wraps an empty sort box.i18n fix. The proxy copy-format label escapes
@({'@'}), which vue-i18n otherwise reads as a linked message. This failedlocalesMessageCompile, which CI does not run.axios 1.20.0. Seven high advisories for axios < 1.20.0 were published on 2026-09-30, and they fail the
frontend-securityaudit gate on every branch. The bump keeps the same dependency set; only the lockfile's axios entries change.Verification
flat_theme_enabledis false.vue-tscexit 0; eslint on changed files exit 0; specs pass: DataTable, AccountsView (9 files), OpsErrorLogTable, i18n key and compile specs, ProxiesView.🤖 Generated with Claude Code