Remove the Load Snapshots button. Snapshots are fetched
automatically when both target and remote have values,
triggered by Select.Changed events.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The worker starts streaming output before the modal screen finishes
composing. Buffer writes until on_mount fires, then flush.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use Text.from_markup() for strings containing Rich tags
so [red]...[/red] renders as colored text instead of raw tags.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
public_url="" caused IndexError in textual-serve URL builder.
Now auto-detects the machine's LAN IP when binding to 0.0.0.0
so the browser can connect to the correct WebSocket endpoint.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Setting public_url="" makes textual-serve generate relative
WebSocket URLs so the browser connects to the correct host
regardless of whether accessed via localhost or remote IP.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Install script now copies tui/ directory to install location
- Installs textual and textual-serve via pip after file copy
- __main__.py uses GNIZA_DIR env var for correct path resolution
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
textual-serve shows the command string as the app title.
Set PYTHONPATH and GNIZA_DIR as real env vars so the spawned
subprocess inherits them. Add title="gniza" for clean display.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
textual-serve spawns the app as a subprocess which doesn't
inherit PYTHONPATH. Bake the project root into the command.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Run `gniza web` or `gniza --web` to serve the TUI as a web app
on port 8080. Use --port to change. Requires textual-serve.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Switch widget was not rendering visibly. Use a Yes/No Select
dropdown instead which works reliably.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>
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>
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>
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>
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>