Skip to content

Re-verify the wire contract at Grappa v1.5.12 and refresh the baseline #239

Closed

Description

@Sythos

Grappa v1.5.12 shipped on 2026-10-03 (tag v1.5.12, commit c26c77bc). It is the first release that carries wire protocol 37, which Cordiale already declares (CLIENT_PROTOCOL_VERSION = 37) but so far only against the unreleased Grappa main. Our docs still say contracts were last verified at 189aaf2c, which is stale. Let's check the code against the real tag and refresh the baseline.

What to do

  1. Re-read the contract at the tag. Diff upstream docs/CLIENT_PROTOCOL.md between 189aaf2c and v1.5.12 (about 190 lines added, 8 removed) and check every section against the Cordiale code, reading the Grappa/Cicchetto source and not just the doc (we got burned by summaries getting field names wrong before). Sections touched: 2b, 4d-bis (away_nick_suffix_changed, v32), 5f (dm_conversation_id removed, v37), 5g (mentions id/dm_with, v35), 5h (dm_with on every scrollback row, v36), 8c (ignore pairs, v31), 8d (network delete takes scrollback, scrollback_present gone, message_count, v33), event inventory (9).
  2. Bump the baseline wherever it is written (docs/protocol-notes.md, docs/feature-matrix.md, comments in crates/cordiale-core/src/protocol.rs) from 189aaf2c to v1.5.12 / c26c77bc, and say that protocol 37 is now a released contract.
  3. Try it for real. The "not verified against a real v35/v36/v37 server" notes can finally be exercised on a v1.5.12 server: DM routing after a peer rename (new window, old one keeps history), after our own rename (dm_with decides, sender decides "mine"), query_windows_list without dm_conversation_id, mentions bundle, admin network delete with message_count. Record what was actually seen.
  4. Known leftover: parse_own_nick_window_counts still compares channel with the current nick, so the self window's counts can be wrong after our own nick change on a v37 server. Fix it the dm_with way (decide "mine" by sender first), or document why not.
  5. Self-KICK (upstream #2321): a self-KICK no longer drops the channel from the rejoin snapshot, so after a reconnect the channel comes back greyed and is rejoined; a 474 puts it in join_failed instead of making it vanish. Check Cordiale handles the greyed/failed channel on reconnect and doesn't just remove it, and that join_failed is shown.
  6. Wide rows (upstream #2310): Cicchetto now clips (overflow-x: clip) oversized rows such as mIRC block art instead of letting the pane pan sideways. Check what the Cordiale transcript does with a very wide, unbreakable line and make it behave the same (no horizontal scrolling of the pane).
  7. Not applicable, nothing to do: narrow-pane breakpoint 384→383px (web CSS), NickServ password capture fix (#2322, server side), the shottino fix (#2340), CI/dependency bumps.

Done when

  • Docs and code comments point to v1.5.12, and each protocol-notes entry that was "not verified" says whether it now is.
  • Items 4-6 are fixed or have a short, written reason for staying as they are.
  • Anything unexpected found along the way is filed as its own issue.

Part of the Grappa v1.5.12 realignment, see the umbrella issue.

Activity

  1. self-assigned this
    on Oct 3, 2026
  2. added
    documentationImprovements or additions to documentation
    Enya: CookingBeing worked on by Enya: don't pick it up in parallel
    on Oct 3, 2026
  3. removed
    Enya: CookingBeing worked on by Enya: don't pick it up in parallel
    on Oct 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentation

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions