Releases: Essency/bicchierino
Releases · Essency/bicchierino
Release list
v0.3.1
[0.3.1] - 2026-08-20
🐛 Bug Fixes
- (connection) Forward original line verbatim in handle_raw, not reconstructed
- (e2e) Switch raw-passthrough test from OS TAGLINE to OS AKILL PERM
- (test) Register bicc-grappa with NickServ for ULEVEL_MASTER access
🧪 Testing
- (e2e) Add handle_raw verbatim-passthrough regression for #101
- (e2e) Always send NickServ IDENTIFY after REGISTER
v0.3.0
[0.3.0] - 2026-08-19
🚀 Features
- (connection) Send real build date in RPL_CREATED (003)
🐛 Bug Fixes
- (bootstrap) Join $server topic before send_welcome to get isupport (#90)
- (join) Skip an already-member channel entirely, matching bahamut
- (connection) Route MODE #chan +b (signed) to banlist handler (#98)
- (connection) Emit bare nick prefix when sender_user/sender_host absent
- (test) Add missing main() to test_channel_prefix
- (test) Update e2e prefix check to accept bare nick and reject placeholder
- (connection) Absorb excess tokens into last param instead of discarding
🧪 Testing
- (banlist) Remove unworkable -b fallthrough case from unit test
⚙️ Miscellaneous Tasks
- (merge) Resolve Makefile conflict with develop
- Retrigger CI (ASan job cancelled by GH infra; all code jobs pass)
- Add concurrency group to prevent duplicate PR runs
- (merge) Resolve conflict with develop (test_parse + test_banlist both kept)
v0.2.3
[0.2.3] - 2026-08-14
🐛 Bug Fixes
- (bootstrap) Send PREFIX-complete 005 before the first JOIN line (#82)
- (isupport) Derive STATUSMSG from PREFIX sigils instead of hardcoding @+
- (bootstrap) Derive STATUSMSG from cached sigils in send_welcome; fix tests for Case B path
- (connection) Scan all modes for highest-rank sigil in render_names_353_366
⚙️ Miscellaneous Tasks
- (merge) Resolve conflict with develop (test_isupport + STATUSMSG comment)
v0.2.2
[0.2.2] - 2026-08-10
🐛 Bug Fixes
- (packaging) Use systemctl directly in postinst upgrade restart
- (whois) Emit P-0a numerics in bahamut's own order
v0.2.1
[0.2.1] - 2026-08-10
🐛 Bug Fixes
- (whois) Render P-0a bahamut fields from grappa's whois_bundle
- (connection) Suppress join/part self-echo by channel correlation
v0.2.0
[0.2.0] - 2026-08-10
🚀 Features
- (#3) Start a per-connection id/server_time ring for CHATHISTORY
- (#3) Implement CHATHISTORY (draft/chathistory) over the ring
- (connection) Consume meta.sender_kind in handle_grappa_server_window_row
- (http) RFC 3986 bracketed IPv6 literal support in parse_grappa_url
- (listener) Add IPv6 support to bind directive
- (grappa-admin) Expose admin API as /grappa IRC commands (#56)
- (registry) Add connection registry and /grappa clients/myclients/kill
- (config) Accept plaintext grappa-url towards loopback only
🐛 Bug Fixes
- Two draft/chathistory spec-compliance gaps found by issue #46 review
- Resolve -Werror=format-truncation and -Wsign-compare in chathistory code
- (test) Two chathistory compliance check bugs
- (registry) Eliminate TOCTOU race in registry_kill + dangling entries
- (registry) Remove post-shutdown send() in registry_kill
- (connection) Reconcile GRAPPA dispatch with registry commands (#57)
- (grappa) Correct vhost grant and revoke endpoints (#62)
- (grappa) Read grants from flat root-level array in vhost revoke
- (grappa) Verify and correct all admin subcommand wire shapes (#63)
- (connection) Join WHO params with spaces to support extended-WHO syntax
- (packaging) Restart service on upgrade, stop only on remove
💼 Other
- Expand RFC 1459 compliance checks beyond the registration burst
- Fix server NOTICE check — active trigger via OperServ UPDATE
- Fix server-NOTICE check to use scheduled write cycle
- Bring feature/chathistory-ring onto develop (64 commits)
- Resolve conflicts with develop, fix bracketed-IPv6 loopback gap
🧪 Testing
- Fix services crash caused by UPDATE:20 below the 300s minimum
- Assert PRIVMSG DM target is re-keyed to peer nick (WIRE.md §5)
- (e2e) Add IRCv3 draft/chathistory compliance check
v0.1.1
[0.1.1] - 2026-08-08
🐛 Bug Fixes
- Prepend v to the tag semver.yml computes
- Use a PAT to push the release tag, not the default token
- Join the $server topic and render the rows that arrive on it
- Clamp send_line's CRLF write to the buffer it actually filled
- Decode Transfer-Encoding: chunked in HTTP client (fixes #6)
- Guard the zero-length memcpy in growbuf_append and the body copy
- Refuse a topic that does not fit instead of joining a different one
- Add registration deadline and connection cap (issue #7)
- Replace deprecated ATOMIC_VAR_INIT with direct initializer
- Emit nick!user@host prefix for $server-window NOTICE rows (#24)
- (#18) Check json_escape_into return at all 33 connection.c call sites
- Distinguish server hostname from user nick in server-window NOTICEs (#29)
- (test) Build the grappa image in prepare.sh before running it
- (e2e) Drop include: directive; wire COMPOSE_FILE for multi-file merge
- (e2e) Anchor project-directory to test/ and add RFC 1459 check
- (e2e) Fix build context paths for compose project-dir resolution
- (e2e) Fix volume paths relative to compose project directory
- (e2e) Replace ping with nc in isolation.sh for CI compatibility
💼 Other
- Add SO_RCVTIMEO/SO_SNDTIMEO to bound all blocking I/O on the grappa leg
- Reject IPv6 bind addresses at parse time, not mid-startup
- Strip CR/LF/NUL in send_line before writing to client
- Resolve conflict with develop (test_server_window vs test_render)
- Develop into master
- Develop into master
- Resolve conflict with develop (caps.py step vs e2e job)
- Develop into master
📚 Documentation
- Remove dangling bicchierino#2/#3 references from code and README
🧪 Testing
- Add unit suites for json, ws, jsonw, config, http and bridge
- Cover the chunked decoder added in #19
- Assert the $server-window prefix shape for both sender kinds
- A sealed azzurra stack for end-to-end work
- Cover the CR/LF/NUL guard merged in #32
- Cover the connection cap and registration deadline from #20
- Cover the socket timeouts added in #17
⚙️ Miscellaneous Tasks
- Run make check in the build matrix and under ASan/UBSan
- Ignore a local-only CLAUDE.md mirror
- Run caps.py in the sanitizers job, and renumber its blocks
- Wire the sealed azzurra e2e stack into the pipeline
v0.1.0
[0.1.0] - 2026-08-08
🚀 Features
- Show real semver version in IRC 002/004, --version, CI verification
- Add .deb packaging with a hardened systemd unit
🐛 Bug Fixes
- Prepend v to the tag semver.yml computes
- Use a PAT to push the release tag, not the default token
💼 Other
- Bicchierino is stateless, no persistence across disconnects
- Confirm no visitor fallback on the email login path
- Fix sibling message loss and QUIT killing other sessions
- Drop draft/chathistory + batch, actually implement server-time
- Fix the Running example — clients send USER/NICK/PASS themselves
⚙️ Miscellaneous Tasks
- Add manual workflow to cut a release from Conventional Commits
- Generate release notes from Conventional Commits via git-cliff