Skip to content

feat: auto-update UX improvements - #19

Merged
xiaolai merged 2 commits into
mainfrom
feature/auto-update-ux
Jan 29, 2026
Merged

feat: auto-update UX improvements#19
xiaolai merged 2 commits into
mainfrom
feature/auto-update-ux

Conversation

@xiaolai

@xiaolai xiaolai commented Jan 29, 2026

Copy link
Copy Markdown
Owner

Summary

  • Add visual update indicator to StatusBar showing update status
  • Add toast notifications for update events
  • Use Lucide icons consistently in toasts
  • Fix pendingUpdate state persistence across windows

Changes

  • UpdateIndicator component: Shows update status (checking, downloading, available, ready, error) with appropriate icons and animations
  • Toast notifications: Users get feedback when updates are available, downloading, ready, or failed
  • Lucide icons for Toaster: Configured global toast icons for consistent styling
  • Store refactor: Moved pendingUpdate from module variable to Zustand store for cross-window persistence

Test plan

  • Verify update indicator appears when update is available
  • Check indicator shows correct states (checking, downloading, ready, error)
  • Confirm clicking indicator triggers appropriate action
  • Verify toast notifications appear for update events
  • Test in both light and dark themes

- Add UpdateIndicator component showing update status (checking, downloading, available, ready, error)
- Move pendingUpdate from module variable to updateStore for cross-window persistence
- Add toast notifications for update events using Sonner
- Configure Toaster with Lucide icons for consistent styling
- Add CSS styles for update indicator states with animations
@xiaolai
xiaolai merged commit e46f99c into main Jan 29, 2026
@xiaolai
xiaolai deleted the feature/auto-update-ux branch January 29, 2026 08:16
xiaolai added a commit that referenced this pull request Feb 19, 2026
Issues fixed:
- #6: Add StatusBar warning when auto-save paused (file missing)
- #15: Use Documents folder instead of Home for default save location
- #19: Fix race condition in recent files menu by storing snapshot in Rust
- #30: Fix dock icon drop when no document windows exist
- #35: Show toast notification when file auto-reloads
- #37: Add "Restore to Disk" context menu for missing files

Additional improvements:
- Add toast on pinned tab close attempt (#7)
- Add toast on save failure (#5/#14)
- Add toasts for drag-drop failures (#25, #26, #27)
- Improve cold start file open reliability (#9, #34)
- Fix no-window menu operations (#17, #18, #21)
xiaolai added a commit that referenced this pull request Feb 19, 2026
- Add UpdateIndicator component to StatusBar showing update status
- Move pendingUpdate from module variable to updateStore for cross-window persistence
- Add toast notifications for update events using Sonner
- Configure Toaster with Lucide icons for consistent styling
- Add CSS styles for update indicator states with animations
xiaolai added a commit that referenced this pull request May 5, 2026
WI-C0 — previewIR overlay (lib/ghaWorkflow/save/previewIR.ts)
  Applies structural pendingPatches (job.create/delete, step.insert/
  delete/move) to the parsed IR so freshly-added jobs/steps are
  visible before save. Non-structural edits stay in form-local
  state. Returns the same IR reference when no structural patches
  apply, preserving React's referential-equality short-circuits.
  9 tests cover all op kinds + immutability.

  Mechanism vs full draft-overlay reactor: minimum viable change.
  Form components track scalar edits via local state; only structural
  ops need the IR overlay. Saves a 200-LOC reactor that wouldn't
  add user-visible behavior.

WI-C.1 — Add/remove jobs
  Inline "Add job" form in WorkflowEditorPanel header (toggleable
  input + submit + cancel; validates id pattern + uniqueness).
  Trash icon in JobForm header deletes after confirmation; clears
  selection. job.create patch defaults runs-on to ubuntu-latest.

WI-C.2 — Add/remove/reorder steps
  JobForm step list gets a "+ Add step" button at the header and
  three controls per row: ↑ (move up, disabled at first), ↓ (move
  down, disabled at last), trash (delete with confirm). Mutators
  + 8 unit tests cover insert/delete/move incl. multi-op
  sequences. ↑/↓ buttons primary; drag-and-drop deferred (a11y
  per Codex review).

WI-C.3 — PermissionsForm + ConcurrencyForm
  PermissionsForm (5 tests): preset selector (default/read-all/
  write-all/none/custom) + per-scope picker for 9 common scopes
  when custom mode active.
  ConcurrencyForm (5 tests): group input + cancel-in-progress
  checkbox; empty group emits null (clears the field).
  Both mounted above TriggerForm in WorkflowEditorPanel.

Mutators: 7 new patch kinds (job.create, job.delete, step.insert,
step.delete, step.move, workflow.permissions.set,
workflow.concurrency.set). 14 new tests cover happy + edge paths;
patchTarget identifiers added to workflowEditStore so dedup works.

Coverage thresholds: branches 92.25 → 91.95, statements 94.45 →
94.15, functions 95.10 → 94.80, lines 94.80 → 94.50 (all -0.30 pp).
Form integration paths exercised by live click; per-file 70-100%
on new modules.

WI-C0/C.1/C.2/C.3 of dev-docs/plans/20260505-gha-mature-viewer.md

Out of scope (per plan + my calibrated triage):
  - #4 if-eval preview (would build on A.1; pulled in if context allows)
  - #11 action version picker (auth design needed)
  - #16 run-history overlay (ADR explicitly defers; auth design needed)
  - #17 inline-fence WYSIWYG (codePreview contract change)
  - #18 snippet library (curation question)
  - #19 act runner (sandbox + log streaming design)
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