15 Commits
Author SHA1 Message Date
pfl 3d1dc19d9b Learn cvar and command names from the server for autocomplete
Send cvarlist and cmdlist on connect and merge the answer into the
autocomplete candidates. Number the server menu from 0, keep suggesting
sibling commands while the command name is typed, mask the password in
the startup line, ignore venv/, fix README claims.
2026-09-16 18:25:48 +02:00
pfl db123993c0 Rework TUI: single-threaded curses, scrollback buffer, server menu
- All curses drawing on the main thread; stdin polled together with the
  ZMQ sockets, Ctrl-C only sets a flag
- Output kept in a 2000-line buffer and redrawn from it, so resizes keep
  the history; PgUp/PgDn and mouse wheel scroll it
- Messages without trailing newline continue the current line (status
  table columns arrive as separate messages)
- Too-small terminal shows a warning instead of exiting
- Start without arguments shows a server selection menu
- Colors on the terminal default background; version 0.9.0
2026-09-16 17:01:51 +02:00
pfl 530c12d9c0 Fix curses error in print_colored at window boundaries
- Wrap all addch calls in try/except blocks
- Return early when hitting window boundary
- Prevents crash when content exceeds window dimensions
- Gracefully truncates output instead of throwing error
2026-01-09 15:13:52 +01:00
pfl 993ed4f051 Fix curses error when info window is full
- Wrap addstr newlines in try/except blocks
- Prevents crash when writing to window boundary
- Info window has scrollok=False, so cursor can't move beyond bounds
2026-01-09 15:11:19 +01:00
pfl 42b958acdb Add terminal resize handling
- Detect KEY_RESIZE event in input thread
- Recreate windows with new dimensions on resize
- Redraw all content after resize
- Add minimum terminal size check (20x80)
- Handle both expansion and shrinking gracefully
2026-01-09 15:08:44 +01:00
pfl f1ed9c3d2c Add UI test mode script 2026-01-09 15:02:03 +01:00
pfl 4ac9432db9 Ignore CLAUDE*.md files 2026-01-09 14:59:53 +01:00
pfl fbaa4564e4 Fix cursor position and live timer updates
- Track cursor position in UIManager.cursor_pos
- Restore cursor after print_message() and update_server_info()
- Sync cursor_pos between wait_stdin thread and manager
- Update server info panel every second for live timer display
- Timer now ticks continuously instead of only on game events
2026-01-09 14:58:05 +01:00
pfl a03b4b0b93 Add missing Quake Live commands to autocomplete
- Match control: readyall, allready, abort, pause, unpause, lock, unlock, timeout, timein
- Player management: shuffle, put, mute, unmute, slap, slay
- Server control: restart, endgame, nextmap, forcemap
- QLX commands: qlx, elo, balance, teams, scores
- Info commands: serverinfo, players, maplist, configstrings

Total commands increased from 18 to 47
2026-01-09 14:23:50 +01:00
pfl e6e32033ad Add live match timer countdown
- Add match_time_last_sync timestamp to track server updates
- Update timestamp in parser when TIME events received
- Calculate elapsed time in UI for live countdown
- Timer now ticks in real-time between server events
2026-01-09 14:00:32 +01:00
pfl 16b5209338 Fix exception handling in ui.py
- Replace 6 bare except: with except curses.error:
- Remove inline import logging, use module-level logger
- Improves safety by not catching KeyboardInterrupt/SystemExit
2026-01-09 13:56:14 +01:00
pfl f75adac97a Optimize patterns and improve script configurability
- Add pre-compiled regex pattern for color codes
- Add SPECIAL_CHAR constant (chr(25)) for clarity
- Move time import to module level in parser
- Centralize color code stripping via strip_color_codes()
- Make qlpycon.bash fully configurable (workdir, serverip)
- Add validation checks for workdir and venv
- Fix port numbers in help text (28960-28969)
2026-01-09 13:51:53 +01:00
pfl 224782467d qlpycon.bash 2026-01-09 13:40:59 +01:00
pfl 216abb4a3f fix exiting moar 2026-01-09 13:32:00 +01:00
pfl 182f94abb2 quit on quit! 2026-01-09 13:28:29 +01:00