Skip to content

feat(frontend): expand cross-platform UX coverage#29

Merged
beefiker merged 21 commits into
mainfrom
codex/issue-28-cross-platform-ux
Jul 21, 2026
Merged

feat(frontend): expand cross-platform UX coverage#29
beefiker merged 21 commits into
mainfrom
codex/issue-28-cross-platform-ux

Conversation

@beefiker

@beefiker beefiker commented Jul 20, 2026

Copy link
Copy Markdown
Owner

Summary

  • expand the frontend skill from Web/Qt into shared UX plus desktop, mobile, hybrid, renderer, and mixed-target routes
  • add claim-triggered layout, motion, and visual-reference quality overlays, while keeping StyleGallery as bounded research provenance
  • strengthen claim-shaped evidence gates and repair the Qt Kanban example's misleading controls, accessibility, and reflow behavior
  • incorporate the latest issue [기능 추가] 좋은 UX를 설계하는 법을 추가해주시면 감사하겠습니다. #28 feedback into shared resource lifecycle, reset provenance, purposeful information architecture, and proportional disclosure contracts
  • bump Superloopy to 0.11.0 and synchronize the npm, Codex, and Claude manifests

Why

Addresses #28.

Issue #28 surfaced dummy controls, excessive manual input, omitted i18n, desktop SEO misrouting, weak Undo/persistence/reachability behavior, and misleading read-only fields. This change promotes those concerns into shared UX contracts that can govern supported screen-based application UIs rather than Web alone.

The latest follow-up is covered without turning one profile editor into a universal UI recipe:

  • Save, Save As, Apply, Revert, and Reset must map to attributable resource identities and state transitions.
  • A safe direct update is preferred over an unnecessary import-modify-apply round trip; staged copy/apply and absolute locators remain valid when a real owner or integration boundary requires them and provides truthful identity and recovery.
  • Reset reads the real defaults owner at invocation instead of duplicating UI literals.
  • Task-bearing UI must earn a distinct purpose within the affected surface or journey. Disclosure is selected proportionally, supports routes, modals, drill-down, staged and contextual reveal as well as collapse/expand, and preserves task-critical dense monitoring and intentional task-owned horizontal regions.

Validation

  • CODEX_HOME=<isolated> npm test — 646/646 passed
  • Qt 6.11.1 configure/build/CTest — 4/4 passed
  • isolated doctor — healthy; file audit 508/508; dependency count 0; reviewability clean
  • npm pack --dry-run --json — version 0.11.0; 506 files; changed skill contracts and focused semantics test present
  • git diff --check origin/main...HEAD — clean
  • final independent review of the latest issue [기능 추가] 좋은 UX를 설계하는 법을 추가해주시면 감사하겠습니다. #28 delta — no Critical or Important findings
  • GitHub Actions, Node 20/22 on Ubuntu, macOS, and Windows — 6/6 passed

Known review findings before merge

This PR remains a draft until the following review findings are addressed:

  • target-owner row cardinality currently blocks multiple criteria or contracts on the same target-owner pair
  • canonical artifact identity and legacy path compatibility need correction
  • mixed-target downgrade paths and target/surface coherence need explicit versioned enforcement
  • the optional Web token lint and undeclared spacing base currently over-constrain generic Web evidence
  • mixed, iPadOS, CustomTkinter, and embedded-engine routing need tighter ownership
  • adversarial failure/recovery proof can still be satisfied by screenshot-only evidence

@beefiker
beefiker marked this pull request as ready for review July 21, 2026 05:36
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

beefiker added 8 commits July 21, 2026 15:53
Split the symlink-dependent evidence-root assertions into their own test
with the repository's established win32 skip guard, so the portable
create/verify coverage still runs when symlink creation is unavailable.
Scoped-row identity previously hashed target.id + owner only, so two
rows sharing one generic id (e.g. desktop) on distinct platforms were
falsely rejected as duplicates even though the validators accept generic
ids distinguished by platform. Key dedup and artifact attribution by
id + platform + owner, pin the behavior in a dedicated golden test file
(the per-gate golden files sit at the reviewability cap), and align the
gate notes, audits, and doc contracts.
The passive Timeline/Inbox items render their SVGs through a plain QML
Image, which cannot tint currentColor strokes; QtSvg resolved them to
black on the dark sidebar. Stroke the two sidebar-only icons with the
sidebar text tone; the existing 0.72 opacity keeps the muted look.
Proportional selection left every anti-slop row self-waivable with a
bare reason. Name a minimal core that stays binding whenever the
contract is selected: honest assets, no shipped placeholders, named
waiver authority, and grounded impact-unchanged records.
The base-unit regex matched inside words like baseline or database, so
prose such as 'baseline is aligned to a 3px sub-grid' ahead of the real
'base 4px scale' line silently set the wrong base and skewed every
off-scale spacing verdict. Require the standalone word and pin the
baseline/database cases.
The reuse message still described slices as target/owner pairs after
identity became platform-aware, mislabeling rows that differ only by
platform as having distinct targets. Say target/platform/owner slices
and pin cross-platform artifact exclusivity for one target id in both
gate shapes.
Name anti-slop.md in the claim-triggered overlay list so campaign and
editorial deliveries discover it from SKILL.md instead of only through
web.md, and record in the two fixed-tone icons that their stroke mirrors
Theme.sidebarText.
An A/B/A test on a real Codex host (implicit prompt with and without
the block, plus an explicit invocation) showed allow_implicit_invocation
changes nothing: implicit activation is already suppressed by the
explicit-only default_prompt contract, and explicit invocation works
either way. Keeping an unrecognized key implies manifest-level
enforcement that does not exist, so remove it and pin the file to
interface-only metadata.
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