- Arrow left/right to move cursor in input (UTF-8 aware)
- /w as alias for /msg
- Tab on window 1 with empty input auto-inserts /msg <nick>
- Tab after /msg completes from PM nick list
- Improved Swedish word filter (ASCII-only + UTF-8 variants)
- Common Swedish/English words checked before API call
- Word boundary matching (non-alpha boundaries)
- Lower threshold for short messages (1 hit vs 2)
- Only filters languages listed in ai_skip_langs
- Focus on grammar/sentence structure for language detection
- Ignore code, URLs, tech jargon in language classification
- /trans cycles: local → public → off
- Strip trailing whitespace from LLM responses
- Suppress empty translation results
- All messages sent to LLM (not just non-Latin)
- LLM detects language and returns SKIP for understood languages
- /trans toggles echoing translations publicly to channel
- PM nicks ordered most-recent-first for tab completion
- tool_choice:none to fix vLLM/litellm 400 error
- Updated README with /trans command
- Skip ISO-8859-1 Latin chars (0xC0-0xFF) to avoid Swedish false positives
- Require 3+ non-Latin chars to trigger translation
- Handle both UTF-8 and single-byte Cyrillic encodings
- Update README with ai_port option
- Auto-translate non-Latin messages via OpenAI-compatible API
- Config in ~/.hircrc (created on first run, disabled by default)
- Translation shown in italic below original message
- Arrow up/down for input history (50 entries)
- Long lines wrap properly on window redraw
- /ctcp command for sending CTCP requests
- Updated README with AI translation docs
- Fix tab completion cycling (track tab_end properly)
- Tab on window 1 cycles through nicks who PM'd you
- /ctcp <nick> <command> sends CTCP requests
- Query target shown in status bar on window 1
- Channel errors (404 etc) routed to channel window
- Long lines wrap properly on window redraw
- /me <action> sends CTCP ACTION
- /slap <nick> slaps with a large trout
- /q <nick> sets query target, /q clears it
- /topic to view/set channel topic
- Tab completion for nicks (cycling, : suffix at line start)
- Nick list tracking via NAMES/JOIN/PART/QUIT/NICK
- Bold formatting for joins, parts, quits, mode changes
- Incoming CTCP ACTION displayed as * nick action
- Updated README with all commands and features
- Status bar shows (Act: 2,3) for windows with unread messages
- Activity clears when switching to that window
- Re-set scroll region on every window redraw to prevent display issues
- Stop converting incoming text to ISO-8859-1 for display
- Terminal is UTF-8, so pass through directly (åäö, Cyrillic, etc.)
- Keep ISO-8859-1 conversion only for outgoing messages
- Add irc.log to .gitignore
- /names #channel to list users
- Ctrl-P/Ctrl-N for page up/down in scrollback
- Charset logger (irc.log) with hex dump and detection
- chartest.c utility for inspecting key codes
- Fix window redraw to align lines at bottom
- Fix terminal cleanup via atexit (no more broken terminal)
- Green prompt
- Isolated window levels with 500-line scrollback per window
- Window 1: status + private messages
- Windows 2-9: channels
- Status bar showing window, channel, nick prefix, channel modes
- Automatic charset conversion (UTF-8/UTF-16 -> ISO-8859-1 on wire)
- UTF-8 aware input editing with Ctrl-A/E/U/K/Y
- CTCP VERSION reply with real OS info from uname()
- Real name from passwd GECOS field
- SIGWINCH handling for terminal resize
- Ctrl-C quit confirmation (y + Enter)
- /whois, /wii, /mode, /quit with default reason
- Green prompt, timestamps on all messages