Skip to content

Canonical button: one framed + rune-trace button family (P1 of the GUI-consistency pass)#172

Merged
imm0r merged 4 commits into
masterfrom
PoEfdev/gui-consistency
Jul 7, 2026
Merged

Canonical button: one framed + rune-trace button family (P1 of the GUI-consistency pass)#172
imm0r merged 4 commits into
masterfrom
PoEfdev/gui-consistency

Conversation

@imm0r

@imm0r imm0r commented Jul 7, 2026

Copy link
Copy Markdown
Owner

First phase of the GUI-consistency work: replace the ~16 divergent button styles with one distinctive, cohesive button family — CSS-only, no HTML changes.

The button

Draws on the project's own world instead of a generic fantasy button:

  • Framed like PoE's ESC menu — a single gold frame with baroque volute corner ornaments and elongated centre lozenges on the top/bottom edges (all inline SVG, no assets).
  • Rune-trace hover — a gold filament traces the frame on hover (reuses the tooltip's @property --tipAngle + codexTipFrameSweep), so buttons and tooltips share one signature motif.

Two tiers, one family

  • FULL (ornate): prominent action buttons — .cfg-btn .hk-btn .hk-key-btn .uib-btn .ei-btn .tsv-gen-btn .cp-btn .cp-btn-primary (+ .btn).
  • PLAIN (compact, frame + rune-trace, no big ornaments so dense/icon buttons don't blow up): .tree-tbtn .hk-icon-btn .tsv-pg-btn .cat-btn (+ .btn-plain).
  • Variants: .btn-primary (gold fill) / .btn-danger (blood) / .btn-sm / .btn-wide.
  • Added as a trailing <style> so it beats the scattered legacy rules, incl. the #panel-hotkeys .hk-btn id override (verified). Kept untouched/special: .wm-btn (title bar), .hk-num-btn (steppers), .cp-btn-row / .patch-path-btns containers.

Verification

node --check clean. Computed-style checks: full-tier buttons carry 6 ornament layers + the rune-trace; plain-tier gets the compact frame with 0 ornaments; primary gets the gold fill; .wm-btn stays untouched.

…gacy classes

Consolidates ~12 of the fragmented button styles onto ONE canonical, distinctive
button that draws on the project's own world: PoE's ESC-menu frame + our tooltip
motifs. Two size tiers in one family, CSS-only — no HTML changes.

- FULL tier (ornate): a single gold frame with baroque VOLUTE corner ornaments +
  elongated centre lozenges on the top/bottom edges, and the RUNE-TRACE hover — a
  gold filament traces the frame on hover (reuses the tooltip's @Property
  --tipAngle + codexTipFrameSweep). Routed: .cfg-btn .hk-btn .hk-key-btn .uib-btn
  .ei-btn .tsv-gen-btn .cp-btn .cp-btn-primary (+ .btn / .btn-primary).
- PLAIN tier (compact): the same frame + rune-trace hover but WITHOUT the big
  ornaments, small — so dense/icon buttons don't blow up. Routed: .tree-tbtn
  .hk-icon-btn .tsv-pg-btn .cat-btn (+ .btn-plain).
- Variants .btn-primary (gold fill) / .btn-danger (blood) / .btn-sm / .btn-wide.
- Placed as a trailing <style> so it beats the scattered legacy rules incl. the
  #panel-hotkeys .hk-btn id override (verified). Ornaments are inline SVG (no
  assets). Kept special/untouched: .wm-btn (title bar), .hk-num-btn (steppers),
  .cp-btn-row / .patch-path-btns containers.

Verified structurally (node --check + computed styles): full-tier buttons get 6
ornament layers + rune-trace, plain-tier gets the compact frame with 0 ornaments,
primary gets the gold fill, .wm-btn stays untouched. VISUAL verification across
tabs is pending in-app (the preview tool's rasteriser hangs on the conic/glow
buttons), especially button-row density.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
Copilot AI review requested due to automatic review settings July 7, 2026 11:56

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Introduces a new “canonical button” CSS family in the WebView2 UI to unify previously divergent button styles as part of the GUI consistency pass, while also bumping the project version.

Changes:

  • Added a trailing CSS block in ui/index.html implementing a two-tier (FULL/PLAIN) framed button design with an animated rune-trace hover effect that reuses the tooltip sweep animation.
  • Introduced button variants (.btn-primary, .btn-danger, .btn-wide, sizing tweaks) to cover common visual states within the unified family.
  • Bumped version from 0.45.13.2530.45.13.254 across README and AHK/docs.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

File Description
ui/index.html Adds the canonical button CSS family (framed + rune-trace) intended to override legacy scattered button rules.
README.md Updates the version badge to v0.45.13.254.
InGameStateMonitor.ahk Updates POEFORMANCE_VERSION to 0.45.13.254.
CLAUDE.md Updates the referenced version to 0.45.13.254.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread ui/index.html Outdated
imm0r and others added 2 commits July 7, 2026 14:03
Address PR #172 review (Copilot): the base / ::after / :hover / :hover::after
rules each repeated the same long comma list of button classes, which could
drift out of sync. Rewrote them to reference ONE :is(...) group per tier (ALL /
FULL / PLAIN) — each behavioural rule now carries a single identical :is() list
instead of a class×pseudo expansion, so adding a class updates every rule that
uses that tier.

:is() specificity equals its most specific argument (a single class here), so
the cascade behaviour is unchanged — verified via computed styles: full-tier
buttons still get 6 ornament layers + rune-trace at 9x18, plain-tier the compact
frame with 0 ornaments, the #panel-hotkeys .hk-btn id override is still beaten,
and .wm-btn stays untouched. node --check clean.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
…uts)

Owner feedback from the running app: the button looks good but is too big —
especially too tall next to a text input. Reduced the FULL tier's vertical
padding 9px -> 5px and scaled the ornaments to fit the shorter height (corners
16px -> 13px, edge lozenges 8x14 -> 7x11). Measured: a full-tier button is now
~27px tall vs a ~24px text input (was ~40px). Horizontal padding, the PLAIN
tier, and the ornament look are unchanged.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
Copilot AI review requested due to automatic review settings July 7, 2026 12:12

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

Comment thread ui/index.html Outdated
Comment thread ui/index.html
Disabled buttons (e.g. .tree-tbtn[disabled] like the RE Dissector's
back/forward nav) still matched the :hover rules because they lacked a
:disabled exclusion, so hovering a disabled control reintroduced the
gold border, box-shadow glow and the animated rune-trace ::after.

- Guard every hover selector with :not(:disabled): the base :is(ALL):hover,
  its ::after rune-trace, the FULL ::before ornament shadow, .btn-danger:hover,
  and the reduced-motion ::after override.
- Add :is(ALL):disabled{opacity:.45;cursor:not-allowed} so disabled buttons
  read as inert instead of merely non-interactive.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
@imm0r imm0r merged commit 0b2a2dc into master Jul 7, 2026
4 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