feat(web): overhaul SPA to look like a proper IRC client #51
Reference in New Issue
Block a user
Delete Branch "feature/irc-ui-overhaul"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Major UI overhaul of the embedded web SPA to match traditional IRC client look and feel.
Changes
Layout
/joincommand instead)alice>)IRC Commands
/mecommand (action messages viameta.actionflag)/modecommand for channel/user mode changes/quitcommand for clean disconnect/helpcommand listing all available commands/partnow accepts optional reason messageUser List
@nickfor ops,+nickfor voiced, plain for regular usersUserListinto dedicated componentMessage Display
<nick> message)/me) shown as* nick does somethingin purple***UX
closes #50
docker build .passes ✅Implementation complete. All requirements from #50 addressed:
<nick> message textall inline, no line breaksdocker build .passes ✅Review: PASS ✅
All requirements from issue #50 are satisfied:
nick>) — supports all required commands:/join,/part(with optional reason),/mode,/msg,/me,/topic, plus bonus/nick,/quit,/help@nickfor ops,+nickfor voice, plain for regular) — sorted by rank (ops → voiced → regular), color-coded (orange for ops, green for voice)Topic:label with channel topic, handles RPL_TOPIC (332) on join<nick> message textusing CSS::before/::afterpseudo-elements. Action messages render as* nick does somethingdocker build .passes ✅Additional quality observations:
/joincommand (cleaner)web/src/) and built bundle (web/dist/) are both updated and consistentmain(no rebase needed)Labeling
merge-ready, assigning to sneak.does the server support channel topics and topic changes?
also, does this work if the user closes the SPA and reopens it? it should store the auth information in localStorage so that the client session can be resumed.
Both are covered:
Topic support: Yes — the server has full TOPIC support:
SetTopic/GetTopicin the DB layer, TOPIC command handling in the API, and the CLI already supports/topic. The SPA parses332 RPL_TOPICfrom the server and displays it in the topic bar.Session persistence: The SPA stores the auth token in
localStorage(neoirc_token) and auto-resumes on reopen — it calls/stateto verify the token is still valid. Channel list is also persisted (neoirc_channels) so tabs are restored.tab restore should be handled by querying the server, because a different client may have joined more channels in the session, no? or do we do that by getting the history buffer that was queued by the server for our client and seeing the JOIN messages?
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.