WHM styles override <a> tag padding, making anchor-based buttons
larger than native buttons. Using <button> elements everywhere
ensures uniform button sizing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Setup wizard step 1 (SSH key) stays as-is, then redirects to
remotes.cgi?action=add&wizard=1 and schedules.cgi?action=add&wizard=1
instead of reimplementing its own forms.
- Remove ~200 lines of duplicated form/handler code from setup.cgi
- Wizard gets full feature parity (S3/GDrive, password auth, etc.)
- key_path pre-fills REMOTE_KEY, remote_name pre-fills REMOTES
- wizard=1 flag chains the flow: remote add → schedule add → index
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The setup wizard is SSH-only but was missing the REMOTE_TYPE field,
causing validation to fail with "must be ssh, s3, or gdrive".
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add a dedicated alert area div below the action buttons. Alerts
render in normal document flow with proper padding and styling.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Append alert to the data-theme container instead of document.body
so it stays within the gniza content frame. Use position:absolute
relative to the container.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
WHM's CSS overrides inline styles on positioned elements. Inject a
style tag with !important rules targeting #gniza-alert to ensure
fixed positioning, padding, and sizing are applied correctly.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove previous alert before showing new one to prevent stacking.
Add inline padding, border-radius, and font-size since WHM CSS
overrides DaisyUI alert defaults.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove previous toast before showing new one to prevent stacking.
Position bottom-right with padding, rounded corners, and proper
font size for a clean toast appearance.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
SSH stderr can contain \r and other control characters that break
JSON parsing. Strip all control chars after escaping known ones.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use inline fixed positioning instead of DaisyUI toast classes which
don't work correctly inside WHM's iframe structure.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace inline position:fixed alerts with DaisyUI toast toast-end
toast-top container in setup.cgi and remotes.cgi for consistent
notification styling.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Full-featured cPanel backup tool with SSH, S3, and Google Drive support.
Includes WHM plugin with Tailwind/DaisyUI UI, multi-remote management,
decoupled schedules, and account restore workflows.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>