Releases: Gomouu/accord
Release list
Accord v3.4.0
Fixed
- Critical: messages could no longer be exchanged at all (regression
introduced in 3.0.0). The transport installed initiator-side sessions inside
adebug_assert!— whose argument is not evaluated in release builds —
so the shipped app silently discarded every session it initiated. Both peers
on 3.x could complete handshakes forever without ever being able to talk
(infinite reconnection churn, every outgoing send failing). Debug-profile
tests were all green, which is why CI never caught it. If you and your
friends saw messages stop after updating to 3.x: this was it — update both
sides to 3.4.0. - Update notes are now rendered (headings, bold, lists, code) in
Settings → Updates instead of showing raw Markdown markup.
Added
- Support log file: set the
ACCORD_LOG_FILEenvironment variable to
capture the app's journal to a file (a GUI app's stdout is lost), plus
precise transport diagnostics: every failed send now logs its reason, and
every established session logs its role, address and tunnel flag.
CI
- Release-profile transport tests: the hermetic SimNet end-to-end suites
now also run compiled in release mode — code behavior can diverge between
profiles (debug_assert!is compiled out), which is exactly how the 3.0.0
regression escaped. This step alone would have blocked it (9/11 tests fail
with the bug present). clippy::debug_assert_with_mut_callenforced: any state-mutating call
inside adebug_assert!/debug_assert_eq!is now a hard CI failure.
Changed
mdns-sd0.20.1 → 0.20.2 (LAN discovery; note: a malformed mDNS
announcement from another device can still crash the discovery thread
upstream — tracked separately, does not affect remote friends).
Install notes (macOS "damaged" warning, Windows SmartScreen)
macOS — the app is not damaged: it is not notarized by Apple (that requires a paid developer certificate), and macOS reports quarantined, non-notarized apps as "damaged" on Apple Silicon. Fix it once, after dragging Accord into Applications:
xattr -cr /Applications/Accord.appWindows — the installer is not code-signed: click More info → Run anyway.
Accord v3.3.0
Added
- Emoji autocomplete in the composer: type
:followed by at least two
letters (e.g.:fire,:chat) and a suggestion popup opens — Unicode emojis
matched by their French/English keywords plus the current server's custom
emojis (aggregated across your servers in DMs), keyboard navigation
(arrows, Enter/Tab to insert, Esc to close), mentions keep priority. - Personalized quick reactions: the hover reaction bar now offers your
most recent emojis first (shared with the emoji picker), topped up with the
classic defaults. - Draft indicator: conversations and channels where you left an unsent
message show a small pencil in the sidebar, live-updated as you type and
restored on restart.
Fixed
- Banner/profile sometimes never arriving after a silent restart
(root-caused, second episode): when a peer died abruptly (no UDP goodbye)
and came back at a new address, its friend kept TWO direct sessions for the
same identity for up to 2 minutes — and could route every profile announce
into the dead one (a UDP black hole, no error, no retry before the 30-minute
periodic re-announce). Identity→session resolution now prefers the session
with the most recent inbound traffic. Deterministic transport test added;
the flaky recovery e2e went from ~6/10 to 10/10 in isolation.
Tests
- Playwright end-to-end suite (
app/e2e/,npm run e2e): 15 browser
tests against the UI showcase — navigation, server menu (keyboard included),
composer, thread behaviors, plus 6 visual-regression baselines across
dark/light/wisteria at two window sizes.
Install notes (macOS "damaged" warning, Windows SmartScreen)
macOS — the app is not damaged: it is not notarized by Apple (that requires a paid developer certificate), and macOS reports quarantined, non-notarized apps as "damaged" on Apple Silicon. Fix it once, after dragging Accord into Applications:
xattr -cr /Applications/Accord.appWindows — the installer is not code-signed: click More info → Run anyway.
Accord v3.2.0
Changed
- Richer server dropdown menu: "Mark as read" now sits at the top whenever
the server has unread channels (same sweep as the rail context menu), and a
new "Edit my server profile" entry opens Server settings → Members directly
(per-server nickname and avatar). - Your panel shows your status, not your friend code: the bottom-left user
panel now falls back to your presence (Online, Idle, Do not disturb,
Invisible) when no custom status is set — the friend code no longer appears
there (it lives in Settings → My account and the Friends tab). Set a written
status by clicking your profile and typing in the "Custom status" field.
Install notes (macOS "damaged" warning, Windows SmartScreen)
macOS — the app is not damaged: it is not notarized by Apple (that requires a paid developer certificate), and macOS reports quarantined, non-notarized apps as "damaged" on Apple Silicon. Fix it once, after dragging Accord into Applications:
xattr -cr /Applications/Accord.appWindows — the installer is not code-signed: click More info → Run anyway.
Accord v3.1.0
Changed
- Server dropdown menu redesigned (Discord-style): hovering or keyboard-
focusing a row now fills it with blurple (red for "Leave server") with white
text and icons, rows are tighter and more polished, the "Hide muted
channels" checkbox inverts to white on hover, and the French label "Créer la
catégorie" was fixed to "Créer une catégorie".
Install notes (macOS "damaged" warning, Windows SmartScreen)
macOS — the app is not damaged: it is not notarized by Apple (that requires a paid developer certificate), and macOS reports quarantined, non-notarized apps as "damaged" on Apple Silicon. Fix it once, after dragging Accord into Applications:
xattr -cr /Applications/Accord.appWindows — the installer is not code-signed: click More info → Run anyway.
Accord v3.0.0
A reliability, diagnostics and authoring release. Fully backward-compatible on
the wire with 2.x — every new capability is local or negotiated, so a friend
still on 2.3.x keeps working unchanged.
Added
- Faster, more reliable reconnection to friends: Accord now remembers each
friend's last known direct address (persisted, 14-day freshness) and dials
those addresses at startup, in addition to the usual DHT bootstrap — so
sessions come back without waiting for peer discovery, including after the
Mac wakes from sleep. - Per-friend network panel (Settings → Network → "Connection to your
friends"): for each friend, whether a session is currently active and the
last address you reached them at — connectivity diagnostics without
screenshots. - Markdown tables (GitHub-flavored): header + alignment row, column
alignment, escaped pipes, rendered in a scrollable frame. - Markdown task lists (
- [ ]/- [x]): checkbox items render without a
bullet, with a read-only checkbox. - Copy conversation as Markdown: a header button on any DM or channel
copies the whole loaded thread to the clipboard as a clean Markdown
transcript — messages grouped by day, deleted messages redacted (never their
content), attachments listed by name. - "Back to latest" button: when you scroll up in a thread, a floating
button appears at the bottom-right to jump straight back to the most recent
message (one click), and disappears once you're at the bottom. - Full date on hover: hovering a message timestamp now shows the complete
date and time as a tooltip. - Copy button on code blocks: fenced code blocks now show a "Copy" button
on hover that copies the block's exact source to the clipboard. - Voice message playback speed: a button on the voice-message player cycles
through 1×, 1.5× and 2× playback speed. - Project website + French user guide (GitHub Pages): a download landing
page and a step-by-step guide (install, peer-to-peer connection,
troubleshooting), deployed fromwebsite/.
Performance
- Long conversations scroll smoothly: the message list now renders only
the visible tail of the thread to the DOM (80 rows, extending by 80 as you
scroll up, with scroll anchoring) instead of every loaded message. Jump
targets and the "new messages" divider are always rendered; switching
conversations resets the window.
Internal
-
The conversation view was split into focused modules (
chat/DmView,
chat/MemberList,chat/panels,chat/common) — every source file is now
under 800 lines. Pure moves, no behavior change. -
Custom theme editor (Settings → Appearance): a 25th "Custom" tile —
pick your chat background, side-panel and accent colors on a dark or light
base; the rest of the palette (hovers, inputs, rail, tooltip) is derived
automatically and applied live. The gallery tile previews your colors. -
Share a theme by code: export your custom theme to a compact
accord-theme:…code you can paste to a friend, and import theirs. -
Interface font choice (Settings → Appearance): System, Rounded or Serif
— all native system families, nothing downloaded. -
Scheduled Do Not Disturb (Settings → Notifications): silence sounds and
notifications during a chosen time range (spanning midnight supported).
Fixed
- "My friend's banner/profile never arrives" (field bug, root-caused):
when two peers re-established contact after a restart, the direct dial and
the hole-punch volley crossed — both sides opening a handshake at once
(simultaneous open). The peer that the tie-breaker turns into the
responder had its own outgoing handshake dropped, and every message it
had queued on that handshake was silently discarded — typically the
profile/banner announce it was about to send. The transport now re-seals and
delivers that queued backlog under the freshly-established session, so no
message is lost when handshakes cross. Covered by a new deterministic
transport test. Two safety nets were added on top: the profile announce is
replayed on the first inbound message of each session episode, and friend
addresses are persisted from pending-friendship sessions too (the on-connect
hook alone missed sessions opened before mutual friendship).
Tests
- New
reconnexion_e2ebinary: a friend reconnects purely from the persisted
address cache after a restart (no re-registration, no DHT), and a message
queued while a friend was offline is delivered once they reconnect. - e2e determinism: friend-sync test binaries disable mDNS (they register peers
manually) and widen wait windows to tolerate parallel CPU contention.
Install notes (macOS "damaged" warning, Windows SmartScreen)
macOS — the app is not damaged: it is not notarized by Apple (that requires a paid developer certificate), and macOS reports quarantined, non-notarized apps as "damaged" on Apple Silicon. Fix it once, after dragging Accord into Applications:
xattr -cr /Applications/Accord.appWindows — the installer is not code-signed: click More info → Run anyway.
Accord v2.3.4
Fixed
- Server banner no longer overflows the sidebar's rounded top corners: the
server header now matches the column radius (with the same responsive
breakpoints), and the banner image and its scrim inherit it.
Install notes (macOS "damaged" warning, Windows SmartScreen)
macOS — the app is not damaged: it is not notarized by Apple (that requires a paid developer certificate), and macOS reports quarantined, non-notarized apps as "damaged" on Apple Silicon. Fix it once, after dragging Accord into Applications:
xattr -cr /Applications/Accord.appWindows — the installer is not code-signed: click More info → Run anyway.
Accord v2.3.3
Added
- Play large videos in the conversation: a new setting (Settings → Text &
media) raises the inline video-player size limit — 8 MiB (default), 50,
100 or 500 MiB. Up to 8 MiB videos still load automatically; beyond that
and up to your chosen limit, the video shows a "Play video" card and the
download only starts when you click it (auto-download stays capped, so a
peer can never force a huge transfer). Once downloaded, the video is
streamed from disk (asset protocol) — no giant in-memory payload —
and plays right in the thread.
Install notes (macOS "damaged" warning, Windows SmartScreen)
macOS — the app is not damaged: it is not notarized by Apple (that requires a paid developer certificate), and macOS reports quarantined, non-notarized apps as "damaged" on Apple Silicon. Fix it once, after dragging Accord into Applications:
xattr -cr /Applications/Accord.appWindows — the installer is not code-signed: click More info → Run anyway.
Accord v2.3.2
Fixed
- Image zoom no longer breaks: the fullscreen viewer was rendered inside
the chat panel, and since Liquid Glass an ancestorbackdrop-filterturns
into the containing block forposition: fixed— the overlay came out
clipped and misplaced. It now renders at the document root (portal). - Floating panels readable again on animated themes: server menu, server
settings and other glass surfaces were far too translucent when the
backdrop blur silently fails (WKWebView + animated scene layers) — content
behind bled through. Glass panels are now near-opaque, with the blur kept
as a progressive enhancement.
Changed
- Bigger emojis in messages: unicode emojis are rendered ~45% larger
than the surrounding text, and custom server emojis go from 22 px to 28 px
(48 px with the "large" setting).
Install notes (macOS "damaged" warning, Windows SmartScreen)
macOS — the app is not damaged: it is not notarized by Apple (that requires a paid developer certificate), and macOS reports quarantined, non-notarized apps as "damaged" on Apple Silicon. Fix it once, after dragging Accord into Applications:
xattr -cr /Applications/Accord.appWindows — the installer is not code-signed: click More info → Run anyway.
Accord v2.3.1
Added
- Drag and drop into the chat: drop images, videos or any files anywhere
on the conversation — a "Drop to send" overlay appears, and the files are
attached to the message being written. In the desktop app, dropped files
go through the unbounded disk path (up to 2 GiB), like the attach button.
The previous composer-only drop zone silently did nothing in the packaged
app (the webview intercepts OS file drags) — now handled natively. - Built-in video player: video attachments (up to 8 MiB) play directly
in the thread — download progress, then a standard player, with a Retry
button if the sender is unreachable. Larger videos keep the downloadable
file card. - Dedicated Updates tab: the update section moved out of Settings →
System into its own Settings → Updates tab.
Install notes (macOS "damaged" warning, Windows SmartScreen)
macOS — the app is not damaged: it is not notarized by Apple (that requires a paid developer certificate), and macOS reports quarantined, non-notarized apps as "damaged" on Apple Silicon. Fix it once, after dragging Accord into Applications:
xattr -cr /Applications/Accord.appWindows — the installer is not code-signed: click More info → Run anyway.
Accord v2.3.0
Fixed
- Friends' avatars and banners now sync reliably ("I never see their
banner even though they set one"): profiles are now exchanged every time
two friends connect, instead of relying on best-effort channels that
could all fail together in the field — a change announcement missed while
offline, an offline drop published to an unreachable DHT, or reconnection
windows shorter than the periodic re-announce. One tiny message per
session; peers only download media whose hash actually changed. - Offline drops no longer vanish into an empty DHT: a mailbox deposit
that reached zero replicas was still marked as delivered, silently losing
the message until its 7-day expiry. Zero-replica deposits are now retried
(direct sending keeps its own schedule). - Failed images can be retried: an image attachment that could not load
(sender offline at that moment) showed a permanent "image unavailable"
card. It now has a Retry button — useful right after the sender comes back
online. End-to-end coverage added for the three field scenarios (profile
media while both online, set while the friend is offline, and a lost
announcement recovered on reconnect).
Install notes (macOS "damaged" warning, Windows SmartScreen)
macOS — the app is not damaged: it is not notarized by Apple (that requires a paid developer certificate), and macOS reports quarantined, non-notarized apps as "damaged" on Apple Silicon. Fix it once, after dragging Accord into Applications:
xattr -cr /Applications/Accord.appWindows — the installer is not code-signed: click More info → Run anyway.