grubForge v1.0.3 — UX hotfix batch
Closes all 15 findings (F1–F15) from the v1.0.1-stable retest, shipped in four thematic groups.
🔄 Refresh-on-show & Dashboard sync (F3, F4, F5, F8, F10)
- Every screen re-reads disk state when shown — a Config Editor save, a new backup, or a theme apply now reflects without a manual refresh.
- New yellow "⚠ pending changes" Dashboard sync state, distinct from "grub.cfg older" drift and "✓ in sync".
- Pressing R on the Dashboard now confirms with a toast instead of firing silently.
🧭 Ctrl+R is a true app-level action (F7, F11, F12, F13)
grub-mkconfigregeneration runs from any screen, not just the Config Editor.- The global A binding mirrors the Config Editor's "Apply Edit" button.
- Removed the "go to Config Editor and press Ctrl+R" cross-screen instructions.
💬 Unified feedback surface (F9)
- A shared
StatusMixinroutes all action feedback through one consistent channel (persistent status line + toast popup), replacing five near-identical per-screen helpers and a divergent ASCII/unicode icon set.
🐛 Discrete widget fixes (F1, F2, F6, F14, F15)
- The DEMO badge renders again in read-only mode.
- ? opens a real toggleable help modal (Esc / q / ? to close) instead of a stacking toast.
- The backup preview pane scrolls.
- E with no row selected auto-selects the first key.
- N/X/D (Backup) and K/J/N/X (Boot Entries) fire on screen entry without a panel click first.
No dependency or install-layout changes. Same python, python-textual, python-rich.
Co-developed by Javier (@jetomev) and Claude (Anthropic).