Commit Graph

62 Commits

Author SHA1 Message Date
shuki
73d51a76bb Fix user-mode log dir path in uninstall script
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 22:46:18 +02:00
shuki
4306b9e3b3 Open file browser immediately in folder picker
- First gum file browser opens right after target name entry
- Shows selected folders list, then offers Add/Remove/Done
- No extra menu step before the first folder selection

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 22:43:45 +02:00
shuki
4f9ab94c69 Clarify target name prompt mentions file browser next
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 22:41:24 +02:00
shuki
a956bd9e30 Fix gum file browser returning relative paths
gum file returns paths relative to the start directory.
Prepend / to ensure absolute paths for backup targets.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 22:29:30 +02:00
shuki
f80c786597 Use gum file browser for folder selection in target picker
Replace manual path input with gum file --directory for browsing
and selecting folders. Adds duplicate detection. Shows selected
count in menu header.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 22:22:33 +02:00
shuki
a27ae7faf4 Bundle gum binary with gniza installation
- Install script auto-downloads gum from GitHub releases into
  $INSTALL_DIR/bin/gum (supports x86_64, arm64, armv7, i386)
- Skips download if gum is already installed system-wide
- bin/gniza adds $GNIZA_DIR/bin to PATH so bundled gum is found
- No system package installation required

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 22:20:00 +02:00
shuki
31586547dc Update logo - wider base triangle
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 22:08:28 +02:00
shuki
6c16f65c3c Replace whiptail TUI with gum (charmbracelet/gum)
- Rewrite ui_common.sh wrappers to use gum choose, gum input,
  gum confirm, gum style, gum pager
- Menu items display as "TAG  Description" for reliable tag extraction
  (handles duplicate descriptions safely)
- Replace whiptail --gauge with text-based progress bar
- Use printf %b instead of echo -e to avoid escape injection
- Read msgbox keypress from /dev/tty to work in piped contexts
- Update bin/gniza, install.sh, README.md references

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 21:45:15 +02:00
shuki
0004dbed9f Add first-time setup wizard for new installations
Guides users through creating their first remote and target when gniza
launches with no configuration. Optionally runs a first backup.
Triggers only when both remotes.d/ and targets.d/ are empty.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 21:38:19 +02:00
shuki
30c87a9147 Add curl one-liner install support
- Switch REPO_URL to HTTPS for machines without SSH keys
- Handle piped execution (curl | bash) where BASH_SOURCE is unavailable
- Add one-liner install commands to README (root and user mode)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 21:33:11 +02:00
shuki
43daeec779 Update REPO_URL to Gitea server in install script and README
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 21:31:24 +02:00
shuki
928d5af54c Initial implementation of gniza4linux backup tool
Complete Linux backup manager with Whiptail TUI and CLI interface.
Adapted from gniza4cp (cPanel backup tool) with target/profile-based
system replacing cPanel-specific features.

- 14 core engine modules (backup, restore, targets, remotes, transfer, etc.)
- 11 Whiptail TUI screens (full CRUD for targets/remotes/schedules)
- CLI entrypoint with subcommands for scripting/cron
- Support for SSH, local, S3, and Google Drive remotes
- rsync --link-dest incremental snapshots
- Root and user mode (XDG paths)
- 70 passing tests
- Config templates, installer, uninstaller

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 21:15:29 +02:00