65 Commits
Author SHA1 Message Date
Illusion d8804add60 fix: .Local() message time 2025-09-02 06:53:29 +02:00
Illusion 096743adca fix: also append the day's date if we append a message with a different date than the last channel date 2025-08-29 15:59:46 +02:00
Illusion f88c2af404 WIP: refactor 2025-08-18 21:10:04 +02:00
Illusion 573a0da672 feat: handle KICK command/reply 2025-08-15 22:21:34 +02:00
Illusion 026021c118 fix: only join the initial channel after registration is complete
During registration, only a subset of commands are allowed.
Servers MUST send a RPL_WELCOME (001) after registration is complete so
we join the channel in response to that numeric reply.

https://modern.ircdocs.horse/#connection-registration
2025-08-15 22:18:55 +02:00
Illusion 1d10198d37 feat: handle ERR_NOSUCHNICK 2025-08-15 22:17:13 +02:00
Illusion eab5f8747a feat: support and handle changing nicknames 2025-08-15 21:35:27 +02:00
Illusion ff0e201e02 feat: support sending and receiving direct messages from other users 2025-08-15 21:34:04 +02:00
Illusion 0e213c691a feat: implement some miscellaneous numeric replies and errors 2025-08-15 21:21:21 +02:00
Illusion d5a99ada51 fix: better formatting for ERR_NEEDMOREPARAMS; display better information for LOCALUSERS and GLOBALUSERS 2025-08-15 21:18:40 +02:00
Illusion 41645fb679 feat: implement ISUPPORT and add support for a few easy features
fix: CAP ACK commands with no acknowledged capabilities causing an OOB.

Also log unsupported and unknown capabilities and features.
2025-08-15 21:10:52 +02:00
Illusion 4be731c813 irc: NOT IMPL -> UNIMPL; red color for error messages; deduplicate some code 2025-08-15 20:18:24 +02:00
Illusion 71471a0f69 sidepanel: sort user nicks alphabetically and ascendingly 2025-08-15 19:53:09 +02:00
Illusion 7e2f446671 refactor/feat: move IRCMessage to irc package; handle NOTICE commands 2025-08-13 13:05:15 +02:00
Illusion 6c2e54275c feat: implement TOPIC-related commands and replies 2025-08-13 11:31:16 +02:00
Illusion 772365ef13 fix(login): manually set the width for the textinput fields 2025-08-11 23:39:55 +02:00
Illusion e24201c204 chore: upgrade dependencies. remove deprecated code. conform to linter style 2025-08-11 22:51:50 +02:00
Illusion bfe490cd5c feat: handle CAP command and support a few capabilities 2023-02-22 08:52:26 +02:00
Illusion bd4d332b75 feat: validate host, port and nickname fields 2023-02-21 02:26:19 +02:00
Illusion c965143264 chore: upgrade dependencies 2023-02-21 02:18:59 +02:00
Illusion 076277938e fix/test: properly parse tag values with escape characters. all tests pass 2023-02-19 05:49:33 +02:00
Illusion 3c04345560 fix: don't send JOIN command when channel is already joined 2022-06-25 19:00:03 +03:00
Illusion ec9d298e59 feat: implement some RFC1459 numerics and errors 2022-02-19 19:55:01 +02:00
Illusion f4dd0066c8 feat: message timestamps
* made it easier to styles and prefix messages
* added timestamps to messages
* added prefix and styles to server messages
* append current date to host channel
* fixed some styles issues
2022-02-19 16:24:39 +02:00
Illusion 6c538cc352 feat: add prefix for not implemented commands 2022-02-19 12:27:25 +02:00
Illusion 220192da78 fix: properly parse trailing param, fix typos, add new parser test 2022-02-19 12:22:03 +02:00
Illusion 7424de0538 feat: disable connect button when host, port and nickname are empty 2022-01-29 00:45:32 +02:00
Illusion 92d91dc54d fix: only switch tabs when inputbox isn't focused 2022-01-25 02:44:31 +02:00
Illusion 1d0554a2d2 fix: don't add channel while registering client 2022-01-25 02:30:39 +02:00
Illusion 33b3b86daf refactor: prettier unicode chars 2022-01-25 02:06:54 +02:00
Illusion 3aa54a9127 feat: use adaptive colors to accommodate different terminal bg colors 2022-01-25 01:41:25 +02:00
Illusion 4132faebe1 fix: make the login screen layout adapt to resizes 2022-01-25 00:05:34 +02:00
Illusion 4ba51b7f8d feat: remove parted channel from tab bar 2022-01-24 08:52:06 +02:00
Illusion 92d6449e46 fix: properly implement /join 2022-01-24 08:18:30 +02:00
Illusion 998dd0828a chore: increment year in copyright notice 2022-01-24 04:24:58 +02:00
Illusion 913e76f9db refactor: handle slash commands in a separate function
* quit gorc when "/quit" is sent
* move tea commands into their own package
* other small fixes
2022-01-24 04:23:02 +02:00
Illusion e34cc39e63 refactor: change project structure 2022-01-24 02:26:24 +02:00
Illusion cfeadeedd1 chore: update dependencies 2022-01-24 01:25:01 +02:00
Illusion bda975fc7b chore: proper readme 2022-01-21 05:21:23 +02:00
Illusion 69e4240def feat: add g and shift+g keybindings for the sidepanel 2022-01-21 04:52:41 +02:00
Illusion 26deca05d9 chore: document and add RFC1459, RFC2812 and IRCv3 commands
* also rename ChannelIndex to ActiveChannelIndex
2022-01-21 03:23:02 +02:00
Illusion 2edc007022 feat: added tab bar for channels
* change channels field on client to a slice
* moved the command handler to a separate function
2022-01-20 05:08:39 +02:00
Illusion f097431b8f fix: use .New() instead of the deprecated .NewModel() to init models 2022-01-15 22:50:38 +02:00
Illusion e44f31f30a fix: remove unneeded check and create server channel before all other channels 2022-01-15 22:36:34 +02:00
Illusion 22d5e39899 feat: handle more commands and properly implement older ones
* fix parser tests
* write logs to file
* gracefully terminate program
* make viewport follow output
* properly handle channel nicks and display them in the sidepanel
* general refactors and fixes
2022-01-15 21:56:06 +02:00
Illusion 8a7e1568ae feat: BIG changes
* use commands constants
* use a separate goroutine to read from connection
* refactor connection reading and ui updating
* add sidepanel for users in channel
* other cleanups
2022-01-09 04:30:22 +02:00
Illusion 1168a2a4dd feat: small refactor. basic PRIVMSG sending 2022-01-05 00:54:54 +02:00
Illusion 327f59a14c fix: fixed some stuff
* include token when replying to a PING with a PONG
* fixed parsing of a single param with a colon
* fixed client's SendCommand() to properly send single and multi param
  messages
2022-01-03 23:59:52 +02:00
Illusion 042af16c09 feat: fixup the parser a bit. add tests for parser 2022-01-02 02:27:26 +02:00
Illusion ba7e881516 feat: shift focus from one window to another. and make code consistent 2021-12-31 00:04:58 +02:00
Illusion b32af9d55f feat/fix: properly layout the messages viewport and the inputbox 2021-12-25 21:45:58 +02:00
Illusion f56048fbf7 WIP: working on adding inputbox and wrapping the messages in a viewport 2021-12-13 09:38:07 +02:00
Illusion c3f75c2a43 feat: parse tags and negotiate message-tags capability 2021-12-09 05:14:20 +02:00
Illusion f40ddfd67c feat: allow insecure tcp connections 2021-12-09 03:48:42 +02:00
Illusion d0ca0222ad fix: use space for toggling TLS 2021-12-09 03:46:54 +02:00
Illusion 29b37ec87d fix: whoops 2021-11-29 23:22:35 +02:00
Illusion 35ab2cf927 refactor: move some of client network logic into mainscreen 2021-11-29 23:07:21 +02:00
Illusion 57ad235db7 chore: licensing and copyright stuff 2021-11-14 06:31:51 +02:00
Illusion 9337b9c462 restructure app state, basic server connection using inputted user info and basic mainscreen 2021-11-14 06:19:46 +02:00
Illusion 4bdb4a0fb3 refactor: cleanup initial impl and modularize everything 2021-11-13 06:38:12 +02:00
Illusion 867e874ed3 add bubbletea, bubbles, lipgloss and term as deps. initial work on ui 2021-10-21 01:12:45 +03:00
Illusion d2f98102ef refactor parser 2021-10-20 16:21:26 +03:00
Illusion 8f56877d69 basic parser impl, and basic client impl 2021-10-20 03:13:57 +03:00
Illusion 18d30cdedc define consts 2021-10-11 20:44:23 +03:00
Illusion 8161e1e90e initial commit 2021-10-10 21:36:04 +03:00