Skip to content

feat(editor): actions in header + footer status bar with Problems panel (#101 #105) - #109

Merged
falbany merged 1 commit into
feat/yaml-config-editorfrom
fix/editor-header-and-problems-panel
Nov 4, 2026
Merged

falbany merged 1 commit into
feat/yaml-config-editorfrom
fix/editor-header-and-problems-panel

Conversation

@falbany

@falbany falbany commented Nov 4, 2026

Copy link
Copy Markdown
Owner

Closes #101
Closes #105

One PR for both follow-ups to the YAML config editor (#95), continuing the stacked editor-fix series (#106-#108).

Issue #101 — header consolidation + load config inside the editor

  • Every action lives in the header bar: New / Test / Revert / Save / Save As / Apply (primary) + "Open in OS" + ✕. The standalone editor-toolbar row is gone — no second chrome band.
  • "Load config file…" button in the header (new onLoadConfig prop) raises the existing LoadConfigModal from inside the editor:
    • ConfigEditorModal is rendered before the picker in App.tsx, so the picker (same --z-modal scale) paints on top while the editor stays mounted.
    • LoadConfigModal.onLoaded bumps a new editorReloadKey, passed as reloadKey — the editor re-runs its load-on-open fetch and swaps to the freshly picked file (no stale text).
  • StatusBar: "Load config…" button removed, onLoadConfig + activeConfigName props removed; "Config" still opens the editor.
  • Consistency cleanup: FileListTable's picker-raising prop renamed onOpenConfig → onLoadConfig, so the same name means the same thing everywhere.
  • Ctrl/Cmd+S behavior unchanged (Save on disk-anchored configs, Apply fallback for session trials — covered by existing tests).

Issue #105 — footer status bar + Problems panel

  • Footer status bar (thin, always visible while the editor is ready):
    • Left: validity chip — Valid (success) / n issues (danger) / Validating… (spinner) / Not validated — clicking toggles the Problems panel; ● Unsaved changes dot (role="status", moved from the old toolbar chip); action-outcome message (editor-status, aria-live="polite").
    • Right: Ln x, Col y (tracked from the editor's update listener), YAML, filename.
  • Right Problems panel (~280px, collapsible, VSCode-style): severity icons (error/warning/info) on keyboard-focusable rows, close button, aria-live="polite". Auto-opens on validation failure — Test action, the save compliance gate, and 400 validation-list rejections; resets on modal close/reopen; closes on edit together with the rest of the stale feedback (fix(editor): stale Test/validation feedback must clear as soon as the user edits #102 semantics).
  • Old inline banner + issue-list block removed — the footer/panel is the only feedback surface. The compliance-gate ConfirmDialog is unchanged.
  • Layout: panel sits beside the editor card inside the padded body region (editor shrinks via flex); status bar below the card.

Tests

  • New suites: header consolidation (all actions in header, toolbar gone, onLoadConfig wiring, reloadKey reload) and status bar/panel (chip states, cursor tracking, auto-open, toggle/close, unsaved dot, footer status, session reset).
  • Existing suites updated where the filename now renders in both header and footer.
  • Full suite: 241 passed (14 files); tsc -b clean; dist rebuilt.

…el (#101 #105)

Issue #101 - all editor actions live in the header bar (New, Test, Revert,
Save, Save As, Apply, Load config file..., Open in OS, close); the
standalone toolbar row is gone. 'Load config file...' raises the config
picker from inside the editor: the picker renders after the editor (same
z-scale token, DOM order paints it on top) and its onLoaded bumps the
editor's reloadKey so an open editor re-fetches the freshly picked file.
The StatusBar loses the 'Load config...' entry point and its
onLoadConfig/activeConfigName props; FileListTable's picker-raising prop
is renamed onOpenConfig -> onLoadConfig so the same name means the same
thing everywhere (issue #101 consistency cleanup).

Issue #105 - a thin footer status bar replaces the inline banner: validity
chip (Valid / n issues / validating... / not validated; clicking toggles
the Problems panel), Unsaved-changes dot (role=status), action outcome
(aria-live polite), Ln/Col cursor position, format and filename. A
collapsible right-hand Problems panel (~280px) lists ValidationIssues with
severity icons and keyboard-focusable rows; auto-opens on validation
failure (Test, save gate, 400 validation lists), resets on modal
close/reopen, and closes on edit together with the rest of the stale
feedback (#102). The compliance-gate ConfirmDialog is unchanged.

Tests: header carries every action, load-config wiring + reload, chip/
cursor/dirty/status in the footer, panel auto-open/toggle/reset. Full
suite: 241 passed (14 files). dist rebuilt.
@falbany
falbany merged commit 7098848 into feat/yaml-config-editor Nov 4, 2026
1 check passed
@falbany
falbany deleted the fix/editor-header-and-problems-panel branch November 4, 2026 23:29
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