Luigit
repositories / dotfiles

dotfiles

bugabingas dorkfiles

owned by admin

quickshell/nuguland/.system/specs/NL-SPEC-38AED50A-popup-interaction-language/repair-progress.md

Raw
Rendered preview

UI/UX repair progress

2026-09-06. Contract: ux-repair.md. Evidence: retained runs and visual review.

The repair is not complete: DDC setup and the remaining acceptance gaps below are still open. No features were deliberately removed. No parent desktop restart, real authentication, host network change, package installation, or new dependency was used. Unrelated dirty work remains untouched.

Implemented and exercised

  • Shared native-backed buttons, cards, sliders, fields, and styled tooltips provide pointer/keyboard activation, visible focus, disabled rejection, contextual names, bounded labels, and wrapped explanations. Nested controls cover exactly-once activation, thumb-grab stability, drag, external updates, and field-padding focus.
  • Hover no longer switches an active task. Explicit Bar activation switches panels; activating the same chip closes it. The vertical Bar accent remains a right-edge hairline rather than filling the Bar during orientation changes.
  • Shell-lifetime state retains clipboard and launcher queries/selections, panel disclosure, and scroll positions. Shared scroll restoration waits for rendered layout, not only Loader completion. Nested flows exercise close/reopen, switching, and orientation changes.
  • Clipboard commands preserve filtering and reactive updates. Pointer and keyboard paste close the real popup, verify native destination focus, and insert exactly once in a synthetic destination window. The focus-query Process exit signal is connected through Connections; a same-named method inside Process was inert.
  • Audio and brightness retain service bindings and stable interactive delegates. Nested flows cover live updates during audio drag, brightness updates after local pointer/keyboard changes, unavailable brightness controls, and keyboard scrolling through long audio lists.
  • Media capabilities disable unsupported controls. Tray primary, secondary, and menu routes are keyboard reachable. Power reboot/power-off confirmations cancel on switching and outside dismissal without executing destructive actions.
  • Connectivity preserves an expanded SSID and the same masked editor during live updates. Dismissal clears credential input while retaining ordinary disclosure state.
  • Notification replies are owned by service state. External updates and close/reopen preserve the draft; a failed send retains it with retryable feedback.
  • Noko capture start/stop supports pointer and keyboard. History copy reaches the native sandbox clipboard, keyboard traversal reveals focused rows, and reopening restores the actual history viewport.
  • Vault search supports keyboard selection reveal and clears stale detail on zero matches. Result selection and actual scroll position survive Loader recreation and orientation changes. Result/detail restoration is deferred until a rendered frame; checking retained service values alone missed a viewport reset.
  • Privilege prompts set initial focus without continually stealing it. Forward/reverse Tab traverse input, reveal, cancel, and authorize; rejection, masking, cancellation, and synthetic success remain covered.
  • Existing clock/system, Noko overlay, native Niri subscription/workspace/output, and native screenshot checks remain enabled and pass.

Compact power and empty-panel follow-up

The accepted compact power layout and content-sized empty tray/media states are implemented and visually reviewed. Power keeps service-owned confirmation, contextual tooltips, and keyboard focus return. Empty tray/media resize live when service items disappear or return. Final evidence records zero-warning lint, 290 all assertions, and 152 task assertions at each configured resolution. The broader acceptance gaps below remain open.

Validation

The following records the earlier broad repair run; the follow-up above contains the latest scoped evidence.

Run serially from quickshell/nuguland after formatting:

  • just fmt: passed.
  • just test: passed.
  • just lint: passed, with zero warnings; includes JS, Rust, format, shader freshness, and the existing runtime gate.
  • just ui-test all: passed, 261 named interaction assertions at 1280×720, plus direct assertions and complete-log gates.
  • just ui-test tasks 1366x768: passed, 123 named interaction assertions, plus direct assertions.
  • just ui-test tasks 2560x1440: passed, 123 named interaction assertions, plus direct assertions.
  • git diff --check -- .: passed for the Nuguland working tree.

Both configured sizes exercise horizontal and vertical bars at scale 1. The nested sandbox has a 300-second deadline because the expanded 2560×1440 software-rendered suite exceeded 180 seconds. Per-command and readiness timeouts remain 30 seconds; no check or diagnostic gate was disabled.

Rendered review covered control states, tooltips, the task panels at both output sizes/orientations, masked/rejected privilege prompts, clock setup, populated resources, and native clipboard paste. It found and prompted repairs for the vertical Bar fill and the large-output viewport restoration race. The final vault/Noko screenshots show restored rows inside their actual viewports. Existing long titles are deliberately elided; overflowing lists scroll within their panels.

Static tests establish logic/source contracts. Fresh nested runs establish loading and exercised interaction behavior. Screenshot inspection establishes only the rendered states actually reviewed. The live-shell lint IPC ping does not prove a fresh production configuration load.

Remaining blockers and acceptance gaps

  1. Inventory item 14 remains unimplemented: real DDC display detection/setup and a verified completion path. The brightness fixture proves UI behavior, not physical display control or privileged setup.
  2. Real vault authentication/MFA/reprompt, Wi-Fi/Bluetooth operations, audio routing/device profiles, media playback, CalDAV synchronization, and speech recognition were not exercised against live services. Synthetic success is not proof of those integrations.
  3. Not every action/state variant has nested coverage. Add focused fixtures for remaining backend-dependent controls and long-content variants, including Bluetooth pairing, vault setup/MFA/reprompt, the production screenshot popup, long agenda content, and many simultaneous resource issues. Native screenshot backend coverage does not cover the production screenshot popup.
  4. Physical multi-output changes and cross-monitor behavior remain unproven. Native output-query fixtures are not hardware hotplug tests.

These gaps have not been reconciled with the owner as accepted exclusions. Do not mark the broad repair contract complete from the passing suites alone.

# UI/UX repair progress

2026-09-06.
Contract: [ux-repair.md](ux-repair.md).
Evidence: [retained runs and visual review](evidence/ux-repair-2026-09-06/README.md).

**The repair is not complete: DDC setup and the remaining acceptance gaps below are still open.**
No features were deliberately removed.
No parent desktop restart, real authentication, host network change, package installation, or new dependency was used.
Unrelated dirty work remains untouched.

## Implemented and exercised

- Shared native-backed buttons, cards, sliders, fields, and styled tooltips provide pointer/keyboard activation, visible focus, disabled rejection, contextual names, bounded labels, and wrapped explanations.
  Nested controls cover exactly-once activation, thumb-grab stability, drag, external updates, and field-padding focus.
- Hover no longer switches an active task.
  Explicit Bar activation switches panels; activating the same chip closes it.
  The vertical Bar accent remains a right-edge hairline rather than filling the Bar during orientation changes.
- Shell-lifetime state retains clipboard and launcher queries/selections, panel disclosure, and scroll positions.
  Shared scroll restoration waits for rendered layout, not only Loader completion.
  Nested flows exercise close/reopen, switching, and orientation changes.
- Clipboard commands preserve filtering and reactive updates.
  Pointer and keyboard paste close the real popup, verify native destination focus, and insert exactly once in a synthetic destination window.
  The focus-query Process exit signal is connected through `Connections`; a same-named method inside Process was inert.
- Audio and brightness retain service bindings and stable interactive delegates.
  Nested flows cover live updates during audio drag, brightness updates after local pointer/keyboard changes, unavailable brightness controls, and keyboard scrolling through long audio lists.
- Media capabilities disable unsupported controls.
  Tray primary, secondary, and menu routes are keyboard reachable.
  Power reboot/power-off confirmations cancel on switching and outside dismissal without executing destructive actions.
- Connectivity preserves an expanded SSID and the same masked editor during live updates.
  Dismissal clears credential input while retaining ordinary disclosure state.
- Notification replies are owned by service state.
  External updates and close/reopen preserve the draft; a failed send retains it with retryable feedback.
- Noko capture start/stop supports pointer and keyboard.
  History copy reaches the native sandbox clipboard, keyboard traversal reveals focused rows, and reopening restores the actual history viewport.
- Vault search supports keyboard selection reveal and clears stale detail on zero matches.
  Result selection and actual scroll position survive Loader recreation and orientation changes.
  Result/detail restoration is deferred until a rendered frame; checking retained service values alone missed a viewport reset.
- Privilege prompts set initial focus without continually stealing it.
  Forward/reverse Tab traverse input, reveal, cancel, and authorize; rejection, masking, cancellation, and synthetic success remain covered.
- Existing clock/system, Noko overlay, native Niri subscription/workspace/output, and native screenshot checks remain enabled and pass.

## Compact power and empty-panel follow-up

The accepted compact power layout and content-sized empty tray/media states are implemented and visually reviewed.
Power keeps service-owned confirmation, contextual tooltips, and keyboard focus return.
Empty tray/media resize live when service items disappear or return.
[Final evidence](evidence/power-empty-2026-09-06/README.md) records zero-warning lint, 290 `all` assertions, and 152 task assertions at each configured resolution.
The broader acceptance gaps below remain open.

## Validation

The following records the earlier broad repair run; the follow-up above contains the latest scoped evidence.

Run serially from `quickshell/nuguland` after formatting:

- `just fmt`: passed.
- `just test`: passed.
- `just lint`: passed, with zero warnings; includes JS, Rust, format, shader freshness, and the existing runtime gate.
- `just ui-test all`: passed, 261 named interaction assertions at 1280×720, plus direct assertions and complete-log gates.
- `just ui-test tasks 1366x768`: passed, 123 named interaction assertions, plus direct assertions.
- `just ui-test tasks 2560x1440`: passed, 123 named interaction assertions, plus direct assertions.
- `git diff --check -- .`: passed for the Nuguland working tree.

Both configured sizes exercise horizontal and vertical bars at scale 1.
The nested sandbox has a 300-second deadline because the expanded 2560×1440 software-rendered suite exceeded 180 seconds.
Per-command and readiness timeouts remain 30 seconds; no check or diagnostic gate was disabled.

Rendered review covered control states, tooltips, the task panels at both output sizes/orientations, masked/rejected privilege prompts, clock setup, populated resources, and native clipboard paste.
It found and prompted repairs for the vertical Bar fill and the large-output viewport restoration race.
The final vault/Noko screenshots show restored rows inside their actual viewports.
Existing long titles are deliberately elided; overflowing lists scroll within their panels.

Static tests establish logic/source contracts.
Fresh nested runs establish loading and exercised interaction behavior.
Screenshot inspection establishes only the rendered states actually reviewed.
The live-shell lint IPC ping does not prove a fresh production configuration load.

## Remaining blockers and acceptance gaps

1. Inventory item 14 remains unimplemented: real DDC display detection/setup and a verified completion path.
   The brightness fixture proves UI behavior, not physical display control or privileged setup.
2. Real vault authentication/MFA/reprompt, Wi-Fi/Bluetooth operations, audio routing/device profiles, media playback, CalDAV synchronization, and speech recognition were not exercised against live services.
   Synthetic success is not proof of those integrations.
3. Not every action/state variant has nested coverage.
   Add focused fixtures for remaining backend-dependent controls and long-content variants, including Bluetooth pairing, vault setup/MFA/reprompt, the production screenshot popup, long agenda content, and many simultaneous resource issues.
   Native screenshot backend coverage does not cover the production screenshot popup.
4. Physical multi-output changes and cross-monitor behavior remain unproven.
   Native output-query fixtures are not hardware hotplug tests.

These gaps have not been reconciled with the owner as accepted exclusions.
Do not mark the broad repair contract complete from the passing suites alone.