- After a move, windows snap to the Windows desktop icon grid; after a resize,
the window height is trimmed so the scrollback ends on a whole line.
- The font size slider is replaced by square 10 to 18 buttons. Sizes saved by
the old slider round to the nearest picker size.
- Settings and font dialogs always use white text, so a dark window text color
no longer makes their labels invisible.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each channel window's settings panel gets a Font list, and wIRC main gets a Font
button that opens the same list for the server messages box. Every name is drawn
in its own font as a preview. The choice is saved per window in window_prefs.json
(fontId) and applies to the scrollback, user list, input box and title.
- Segoe UI, Tahoma and Tw Cen MT are Microsoft-licensed, so they aren't bundled:
they load from the Windows font folders at runtime and are only listed when
present (Tw Cen MT comes with Office).
- Nunito, Quicksand and Varela Round are SIL OFL fonts, bundled in
resources/fonts with their license files.
- A missing or unloadable font falls back to Monospace.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
wIRC main scrollback
- The main window now has a "Server messages" scrollback using the same
rendering and stick-to-bottom code as channel windows (extracted from
ChannelScreen into a shared MessageScrollback composable).
- MOTD, numerics, errors, connection status, user modes, INVITE, ERROR,
non-ACTION CTCP requests and notices/messages from services
(NickServ, ChanServ, *Serv, Global, ...) and the server go there. Its
history persists like any other buffer (history/wirc-main__main.json).
- Unread indicator: lines arriving while the main window is unfocused
show as "N new" next to the label and in the window title/taskbar.
Private messages and /whois
- A PM or notice from a real user opens its query window, and reopens it
if it was closed. Services and the server no longer open windows.
- /whois <nick> sends WHOIS and shows the formatted reply in the window
it was typed in, or in wIRC main if that window has since closed.
- /me now sends a proper CTCP ACTION (the \x01 wrapper was missing).
Window position and size
- Main, channel and PM windows remember position and size in
window_prefs.json under the existing "<serverId>__<name>" key (main
uses "wirc-main__main"). The new windowX/windowY/windowWidth/
windowHeight fields are optional, so older files still load.
- A saved position is only used if the window's title strip is on a
connected monitor; otherwise, and for windows with no saved position,
windows cascade from the primary screen's top-left with a 32dp offset.
- window_prefs.json is now written via a temp file + atomic move.
Cleanup
- Remove the TEMP DEBUG aliasDebug tracing, ServerRepository.upsert
printlns and connmgr-debug printlns.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>