Commit Graph

24 Commits

Author SHA1 Message Date
shuki
68b348e1b7 Fix MySQL restore switch visibility with explicit sizing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 04:57:26 +02:00
shuki
eeee87b063 Add 'Restore MySQL' toggle switch to restore screen
Shows a switch to include/skip MySQL restore when the selected target
has MySQL enabled. Hidden for targets without MySQL. Passes --skip-mysql
to CLI when toggled off.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 04:56:30 +02:00
shuki
48bd0ab1d4 Move schedule form to separate edit screen and fix crontab sync
- Extract schedule add/edit form into ScheduleEditScreen (follows target_edit pattern)
- Fix toggle active: now properly installs/removes crontab entries with error reporting
- Delete also syncs crontab to remove deleted schedule entries
- Handle case where all schedules deactivated (calls remove instead of install)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 04:45:27 +02:00
shuki
1425c416eb Add per-schedule active toggle with crontab sync
Each schedule has SCHEDULE_ACTIVE field (yes/no). Table shows active
status with checkmark/cross. Toggle Active button flips state and
reinstalls crontab with only active schedules. Inactive schedules
are skipped during crontab install.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 04:38:51 +02:00
shuki
a8d67160a5 Replace Install/Remove crontab buttons with Active toggle switch
Switch checks current crontab status on mount. Toggling ON runs
schedule install, toggling OFF runs schedule remove. Show crontab
button remains for inspection.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 04:35:59 +02:00
shuki
691e268dd0 Use arrow3 spinner with 'Running...' text for better visibility
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 04:31:12 +02:00
shuki
e32e226c10 Make spinner same height as Close button
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 04:30:06 +02:00
shuki
255d43fcea Move spinner next to Close button in OperationLog footer
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 04:29:25 +02:00
shuki
d596a747a4 Add animated spinner to OperationLog using Rich Spinner
Uses rich.spinner.Spinner with set_interval refresh instead of
Textual's LoadingIndicator which caused rendering failures.
Spinner shows dots animation while running, changes to checkmark on finish.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 04:28:08 +02:00
shuki
ced2e9a889 Revert OperationLog and all screens to pre-spinner working state
Reverts all spinner/loading indicator changes and debug code.
Restores the exact code from commit 0e02ba6 which was confirmed working.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 04:25:57 +02:00
shuki
f9981831fa Add loading spinner to operation log during running tasks
Shows an animated spinner next to the title while backup, restore,
retention, remote test, and schedule operations are running. Spinner
hides when the operation completes via finish().

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 03:19:57 +02:00
shuki
1d9d32c15f Replace schedule targets/remotes inputs with selection lists
Show checkable lists of existing targets and remotes instead of
free-text comma-separated inputs. Selected items are joined with
commas on save, empty selection means "all".

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 03:08:41 +02:00
shuki
e6aa828111 Toggle SSH key/password fields by auth method and add key file browser
Show only the SSH key path input (with Browse button) when auth method
is "key", and only the password input when auth method is "password".
Adds a FilePicker widget for browsing SSH key files, defaulting to
~/.ssh directory.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 02:53:31 +02:00
shuki
733bb5de62 Add MySQL database backup support
Dump MySQL/MariaDB databases as part of backup snapshots. Each database
is dumped to a separate gzipped file under _mysql/ in the snapshot.
Supports all-databases mode with exclude list, or explicit database
selection. Includes TUI form fields for full configuration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 02:48:47 +02:00
shuki
5ecb9537b7 Add 'Create Folder' to folder picker dialog
Adds an input field and button to create a new folder inside the
currently selected directory, then refreshes the tree.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 02:13:36 +02:00
shuki
e6b6d7684a Fix logo/menu vertical alignment on main screen
Remove leading blank line from logo markup and add top margin
to menu so both start at the same visual row.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 02:03:28 +02:00
shuki
3d5a9cdfdd Remove verify feature and align main menu layout
Remove verify screen, CLI subcommand, and all related functions.
Fix logo/menu height alignment on main menu screen.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 01:57:55 +02:00
shuki
8149976170 Add Browse button for restore destination directory
Opens FolderPicker to select the destination path instead of
requiring manual typing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 01:48:47 +02:00
shuki
111b5ee607 Fix logo display and side-by-side layout
Use full block-character logo from bin/gniza, place logo Static
and OptionList directly in Horizontal container without extra
nesting. Style with proper widths.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 23:51:01 +02:00
shuki
85eb4232c8 Layout logo on left, menu on right in main screen
Use Horizontal container with logo-panel and menu-panel side by side,
centered vertically in the terminal.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 23:50:07 +02:00
shuki
b13514e478 Replace main menu buttons with OptionList for arrow key navigation
OptionList supports up/down arrow keys and Enter to select,
giving a proper menu feel instead of Tab-through buttons.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 23:49:06 +02:00
shuki
fd0ccefad0 Make main menu responsive to terminal size
Use 1fr width with max-width, reduce button height/margins,
and enable overflow scroll so all items fit smaller terminals.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 23:48:15 +02:00
shuki
9fb8aeb1ed Fix Enabled switch not visible in target edit screen
Give the switch Horizontal container an explicit ID and CSS
with height:auto and proper alignment.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 23:47:41 +02:00
shuki
587149f062 Add Python Textual TUI replacing gum-based bash TUI
New tui/ package with 14 screens (main menu, backup, restore, targets,
remotes, snapshots, verify, retention, schedule, logs, settings, wizard),
3 custom widgets (folder picker, confirm dialog, operation log), async
backend wrapper, pure-Python config parser, and TCSS theme.

bin/gniza now launches Textual TUI when available, falls back to gum.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 23:39:48 +02:00