# Changelog
All notable changes to this project will be documented in this file.
## [2.5.21] - 2026-09-15
### Bug Fixes
- _(voice)_ Tolerate capture latency to prevent microphone dropouts (#369) in [#369](https://github.com/chojs23/concord/pull/369) by @chojs23
- _(tui)_ Preserve reply composer drafts (#345) in [#345](https://github.com/chojs23/concord/pull/345) by @flooryyyy
### Features
- _(tui)_ Search servers in the channel switcher with a `*` prefix (#368) in [#368](https://github.com/chojs23/concord/pull/368) by @sunglasseslol
### New Contributors
- @sunglasseslol made their first contribution in [#368](https://github.com/chojs23/concord/pull/368)
- @flooryyyy made their first contribution in [#345](https://github.com/chojs23/concord/pull/345)
## [2.5.20] - 2026-09-12
### Bug Fixes
- _(voice)_ Adapt microphone buffering to device behavior (#361) in [#361](https://github.com/chojs23/concord/pull/361) by @chojs23
- _(voice)_ Replace adaptive microphone recovery with fixed platform buffers (#363) in [#363](https://github.com/chojs23/concord/pull/363) by @chojs23
- _(voice)_ Fix microphone frame loss caused by queue replacement by @chojs23
## [2.5.19] - 2026-09-11
### Bug Fixes
- _(voice)_ Use the host-default buffer for all microphone input streams (#356) in [#356](https://github.com/chojs23/concord/pull/356) by @chojs23
- _(voice)_ Enable CPAL real-time audio thread priority (#357) in [#357](https://github.com/chojs23/concord/pull/357) by @chojs23
- _(tui)_ Fix filtered channel highlight restoration after background events (#358) in [#358](https://github.com/chojs23/concord/pull/358) by @chojs23
### Documentation
- Update debug mode instruction by @chojs23
### Miscellaneous Tasks
- _(deps)_ Update crates and unify TLS verification by @chojs23
## [2.5.18] - 2026-09-09
### Bug Fixes
- Show only current-process logs in the debug panel by @chojs23
- _(media)_ Preserve active images and retire stale work by @chojs23
- Gate packed capture helper to supported platforms by @chojs23
- _(tui)_ Prioritize fixed arrow selection in selectable contexts (#353) in [#353](https://github.com/chojs23/concord/pull/353) by @chojs23
- _(message)_ Fix channel actions to use the highlighted filtered entry (#354) in [#354](https://github.com/chojs23/concord/pull/354) by @chojs23
### Features
- _(presence)_ Automatic client switching (#349) in [#349](https://github.com/chojs23/concord/pull/349) by @oneshinyboi
### Refactor
- Reduce duplication and simplify shared logic by @chojs23
### New Contributors
- @oneshinyboi made their first contribution in [#349](https://github.com/chojs23/concord/pull/349)
## [2.5.17] - 2026-09-07
### Bug Fixes
- _(media)_ Reuse loaded media during scroll redraws by @chojs23
- _(media)_ Stabilize preview retries and avatar redraws by @chojs23
- Raise image preview download limit to 16 MB by @chojs23
### Features
- Improve debug panel by @chojs23
## [2.5.16] - 2026-09-04
### Bug Fixes
- _(voice)_ Stop demanding a transition id in DAVE prepare epoch (#325) in [#325](https://github.com/chojs23/concord/pull/325) by @4EEZE
- Pin the patched thorvg-sys revision for ARM Linux builds (#346) in [#346](https://github.com/chojs23/concord/pull/346) by @chojs23
### Documentation
- Update readme by @chojs23
### Features
- Render timestamps in format <t:1235790:R> (#328) in [#328](https://github.com/chojs23/concord/pull/328) by @jahitosis1
- _(tui)_ Add distinct styling for timestamps by @chojs23
### Performance
- _(media)_ Bound the media caches by bytes, retry failed fetches, add animate_previews (#318) in [#318](https://github.com/chojs23/concord/pull/318) by @4EEZE
### New Contributors
- @jahitosis1 made their first contribution in [#328](https://github.com/chojs23/concord/pull/328)
## [2.5.15] - 2026-09-01
### Bug Fixes
- _(notifications)_ Use OSC protocols for macOS terminal alerts (#343) in [#343](https://github.com/chojs23/concord/pull/343) by @chojs23
- Disable Opus SIMD only for ARM32 Linux targets (#344) in [#344](https://github.com/chojs23/concord/pull/344) by @chojs23
## [2.5.14] - 2026-08-30
### Bug Fixes
- _(tui)_ Expand tabs in fenced code blocks (#336) in [#336](https://github.com/chojs23/concord/pull/336) by @gandol
- _(tui)_ Preserve syntax semantics when expanding code tabs by @chojs23
- _(voice)_ Satisfy Rust 1.91 clippy (#334) in [#334](https://github.com/chojs23/concord/pull/334) by @Andiveli
- _(ci)_ Skip CI for unrelated repository changes by @chojs23
- _(messages)_ Fix Components V2 section thumbnail layout by @chojs23
### Features
- _(tui)_ Enlarge standalone custom emoji previews (#335) in [#335](https://github.com/chojs23/concord/pull/335) by @gandol
- _(messages)_ Support Components V2 and improve embed rendering (#340) in [#340](https://github.com/chojs23/concord/pull/340) by @chojs23
- _(tui)_ Show voice channel capacity in channel pane by @chojs23
### New Contributors
- @Andiveli made their first contribution in [#334](https://github.com/chojs23/concord/pull/334)
## [2.5.13] - 2026-08-24
### Bug Fixes
- Message member hydration by @chojs23
### Documentation
- Update readme by @chojs23
### Features
- Apply negotiated keyframe intervals to Go Live encoders by @chojs23
## [2.5.12] - 2026-08-21
### Bug Fixes
- Remove repeated allocations from emoji reaction filtering by @chojs23
- Fix Rust 1.98 Clippy failures by @chojs23
- _(tui)_ Synchronize animated media redraws by @chojs23
- _(tui)_ Fix profile update picker row by @chojs23
### Features
- Enlarge all emoji in emoji-only messages by @chojs23
- _(reactions)_ Customizing top 10 emojis in config.toml (#326) in [#326](https://github.com/chojs23/concord/pull/326) by @Wulgaren
- Improve profile popup ui by @chojs23
- _(theme)_ Add configurable unified selection markers to theme settings (#330) in [#330](https://github.com/chojs23/concord/pull/330) by @chojs23
- _(tui)_ Preview guild stickers as inline media (#329) in [#329](https://github.com/chojs23/concord/pull/329) by @gandol
- _(tui)_ Render Discord Lottie stickers inline by @chojs23
### Miscellaneous Tasks
- Remove cache warm by @chojs23
### New Contributors
- @gandol made their first contribution in [#329](https://github.com/chojs23/concord/pull/329)
- @Wulgaren made their first contribution in [#326](https://github.com/chojs23/concord/pull/326)
## [2.5.11] - 2026-08-17
### Bug Fixes
- _(linux)_ Restore portable DMA-BUF ioctl handling by @chojs23
### Features
- X11 broadcasting (#324) by @chojs23
### Miscellaneous Tasks
- Add an all-features musl compile check by @chojs23
- Fix the musl CI target volume mount by @chojs23
### Performance
- _(capture)_ Import linear DMA-BUF through EGL instead of reading it on the CPU (#317) in [#317](https://github.com/chojs23/concord/pull/317) by @4EEZE
### New Contributors
- @4EEZE made their first contribution in [#317](https://github.com/chojs23/concord/pull/317)
## [2.5.10] - 2026-08-15
### Bug Fixes
- Fix DMA-BUF ioctl compilation on musl Linux (#313) in [#313](https://github.com/chojs23/concord/pull/313) by @chojs23
- Fix joined thread member and inactivity by @chojs23
- Match embedded thread cards to post UI by @chojs23
- Align read-state and presence activity handling by @chojs23
- Fix Voice, Gateway, RPC, presence, and message pin protocol handling by @chojs23
- Improve thread card layout by @chojs23
- Preserve mute duration metadata by @chojs23
### Features
- Improve forum post cards with spacing, image thumbnails by @chojs23
### Performance
- Load forum previews by viewport by @chojs23
### Refactor
- Unify forum and thread card UI by @chojs23
### Tests
- Remove negative behavior coverage by @chojs23
## [2.5.9] - 2026-08-13
### Bug Fixes
- _(media)_ Request animated Discord emoji as WebP by @chojs23
### Documentation
- Update readme by @chojs23
### Features
- _(media)_ Animate GIF and WebP images by @chojs23
- _(media)_ Preserve Discord types and render Giphy GIFV inline by @chojs23
## [2.5.8] - 2026-08-12
### Bug Fixes
- Prevent false media playback errors (#308) in [#308](https://github.com/chojs23/concord/pull/308) by @mvanhorn
- Match Discord webhook message grouping (#310) in [#310](https://github.com/chojs23/concord/pull/310) by @chojs23
### Features
- _(tui)_ Add full screen refresh shortcut by @chojs23
### New Contributors
- @mvanhorn made their first contribution in [#308](https://github.com/chojs23/concord/pull/308)
## [2.5.7] - 2026-08-12
### Bug Fixes
- Fix targeted guild member hydration by @chojs23
- Separate member pane search from member autocomplete by @chojs23
- Fix member hydration, search, refresh by @chojs23
- _(discord)_ Distinguish identifier no-update from fetch failures by @chojs23
- Preserve Discord list order across refreshes by @chojs23
- _(discord)_ Align gateway recovery and client state by @chojs23
- Fix forwarded timestamps to honor the configured hour format by @chojs23
- Composer input (#307) in [#307](https://github.com/chojs23/concord/pull/307) by @chojs23
- Fix empty panel titles breaking top borders by @chojs23
### Features
- Align Gateway compression, client state, and REST headers by @chojs23
- Add config option for 12-hour time format (#306) in [#306](https://github.com/chojs23/concord/pull/306) by @NotNoss
- Enhance thread create ui by @chojs23
### Miscellaneous Tasks
- Remove mark read hint by @chojs23
### New Contributors
- @NotNoss made their first contribution in [#306](https://github.com/chojs23/concord/pull/306)
## [2.5.6] - 2026-08-07
### Bug Fixes
- Fix referenced message navigation and redraw by @chojs23
- Harden background redraw detection and unify redraw tests by @chojs23
- Capture and classify native stderr by @chojs23
- Forum previews, author colors, and card separation by @chojs23
- Fix member identity hydration and cache preservation by @chojs23
- Avoid repeated bullets on wrapped list items (#295) in [#295](https://github.com/chojs23/concord/pull/295) by @kimbank
- Remove obsolete user identity paths by @chojs23
- Clippy by @chojs23
### New Contributors
- @kimbank made their first contribution in [#295](https://github.com/chojs23/concord/pull/295)
## [2.5.5] - 2026-08-06
### Bug Fixes
- Fix libva 2.24.1 compatible crates (#302) in [#302](https://github.com/chojs23/concord/pull/302) by @chojs23
## [2.5.4] - 2026-08-06
### Bug Fixes
- _(stream)_ Handle capture failures and linear DMA-BUF negotiation (#299) in [#299](https://github.com/chojs23/concord/pull/299) by @chojs23
- Enable windows OLE APIs for Media Foundation encoding by @chojs23
- Preserve active DAVE media during MLS epoch preparation by @chojs23
- _(stream)_ Smooth H.264 broadcast pacing by @chojs23
- _(build)_ Replace audiopus_sys with opusic-c by @chojs23
- _(linux)_ Use generic VA-API surfaces for H264 encoding by @chojs23
- _(boradcast)_ Filter macOS capture targets and show loading feedback by @chojs23
### Features
- _(broadcast)_ Add hardware encoder by @chojs23
- _(broadcast)_ Add one-way runtime fallback from hardware H264 encoders to OpenH264 by @chojs23
- _(linux)_ Add 10-bit, multi-plane, and modifier-aware screen capture by @chojs23
- _(stream)_ Improve cross-platform hardware encoding by @chojs23
## [2.5.3] - 2026-08-04
### Bug Fixes
- _(stream)_ Start video-only broadcasts immediately by @chojs23
- _(stream)_ Scale stream playback for high-resolution and high-frame-rate video by @chojs23
- _(stream)_ Add UDP safeguards and recovery diagnostics by @chojs23
- _(stream)_ Preserve manual mpv window resizing and disable pause by @chojs23
- _(stream)_ Stabilize RTP recovery and live playback timing by @chojs23
- _(broadcast)_ Fix Linux screen-share startup readiness and add lifecycle diagnostics by @chojs23
### Miscellaneous Tasks
- _(docs)_ Add debug mode instruction by @chojs23
## [2.5.2] - 2026-08-03
### Bug Fixes
- _(tui)_ Align inbox, thread, and shortcut behavior by @chojs23
- _(release)_ Scope Homebrew audio dependencies to Linux (#297) in [#297](https://github.com/chojs23/concord/pull/297) by @chojs23
### Refactor
- _(tui)_ Unify popup input and shortcut routing by @chojs23
## [2.5.1] - 2026-08-02
### Bug Fixes
- _(stream)_ Fix Windows broadcasts stopping when captured content outgrows the D3D11 frame pool by @chojs23
- Unify stream toggle command naming by @chojs23
- _(test)_ Fix no-default-features build by @chojs23
- _(stream)_ Fix stream freezes caused by backward audio RTP timestamps (#289) in [#289](https://github.com/chojs23/concord/pull/289) by @chojs23
- _(nix)_ Patch PipeWire bindgen fallbacks for immutable vendor sources (#292) in [#292](https://github.com/chojs23/concord/pull/292) by @chojs23
- Filter muted channel in inbox (#293) in [#293](https://github.com/chojs23/concord/pull/293) by @chojs23
### Documentation
- Update readme by @chojs23
- Add gentoo installation instructions to README (#286) in [#286](https://github.com/chojs23/concord/pull/286) by @darwincereska
- Update README by @chojs23
### Features
- _(voice)_ Add selectable input and output audio sources (#287) in [#287](https://github.com/chojs23/concord/pull/287) by @chojs23
### Miscellaneous Tasks
- Update descriptions and docs by @chojs23
### New Contributors
- @darwincereska made their first contribution in [#286](https://github.com/chojs23/concord/pull/286)
## [2.5.0] - 2026-08-01
### Bug Fixes
- _(stream)_ Require exact Linux audio monitor by @chojs23
- _(ci)_ Install Linux capture dependencies by @chojs23
- _(stream)_ Cancel watch session child tasks by @chojs23
- _(voice)_ Await runtime cleanup before gateway stop by @chojs23
- _(stream)_ Rotate active RTC servers by @chojs23
- _(stream)_ Bound broadcast reconnect attempts by @chojs23
- _(stream)_ Centralize lifecycle completion events by @chojs23
- _(stream)_ Redact RTC tokens from debug output by @chojs23
- _(stream)_ Allow restarting fullscreen broadcasts on Windows by @chojs23
- Add cross-platform application audio capture for stream broadcasts by @chojs23
- _(stream)_ Keep stalled capture joins outside Tokio by @chojs23
- _(stream)_ Back off stream watch reconnects by @chojs23
- _(broadcast)_ Remove screencapturekit by @chojs23
- _(broadcast)_ Replace xcap with native cross-platform screen capture backends by @chojs23
- _(stream)_ Prepare portal capture before creating Discord stream by @chojs23
- _(broadcast)_ Fix Linux broadcast restart and system audio latency by @chojs23
- _(broadcast)_ Fix Linux broadcast self-audio exclusion by @chojs23
- _(broadcast)_ Cancel stale capture preparation by @chojs23
- _(build)_ Require macOS 13 by @chojs23
- _(stream)_ Bound H264 assembly memory by @chojs23
- _(stream)_ Slow preview upload cadence by @chojs23
- _(broadcast)_ Derive audio clock from samples by @chojs23
- Fix stream startup and capture lifecycle issues by @chojs23
- _(voice)_ Reduce Linux PulseAudio voice playback latency by @chojs23
- Harden stream capture preparation lifecycle by @chojs23
### Documentation
- Update readme by @chojs23
### Features
- Watch and broadcast streaming by @chojs23
- Add live stream presence sounds and participant panel by @chojs23
- _(stream)_ Make stream feature optional by @chojs23
- _(broadcast)_ Broacasting ui by @chojs23
- Add broadcast preview by @chojs23
### Miscellaneous Tasks
- _(ci)_ Update Linux CI and release runners to Ubuntu 24.04 by @chojs23
### Refactor
- _(stream)_ Simplify live presence state by @chojs23
- _(stream)_ Share voice gateway control handling by @chojs23
- Refactor stream forwarding and reuse capture frame buffers by @chojs23
## [2.4.8] - 2026-07-28
### Bug Fixes
- _(voice)_ Stabilize speaking state and connection lifecycle by @chojs23
## [2.4.7] - 2026-07-27
### Bug Fixes
- _(voice)_ Fix voice input delay (#278) in [#278](https://github.com/chojs23/concord/pull/278) by @chojs23
- _(voice)_ Preserve normal key input while using bare keys for push-to-talk by @chojs23
### Documentation
- Update LICESE by @chojs23
### Features
- Add independent 100ms pacing for message sends by @chojs23
- _(voice)_ Add optional RNNoise microphone noise suppression by @chojs23
- _(voice)_ Add push-to-talk option by @chojs23
- _(voice)_ Replace voice input mode with a push-to-talk boolean by @chojs23
### Miscellaneous Tasks
- Use Arc instead of deep clone for client by @chojs23
- _(test)_ Remove redundant tests and consolidate same-policy cases by @chojs23
## [2.4.6] - 2026-07-25
### Bug Fixes
- Show new threads in sidebar without restart (#274) in [#274](https://github.com/chojs23/concord/pull/274) by @michaelnew
- Correct Discord event snapshot area mappings by @chojs23
- Align Discord API and Gateway behavior by @chojs23
- Replace flat message cache with segmented live-aware timelines by @chojs23
### Features
- Loading indicator by @chojs23
- Add attachment URL access in viewer (#276) in [#276](https://github.com/chojs23/concord/pull/276) by @chojs23
### New Contributors
- @michaelnew made their first contribution in [#274](https://github.com/chojs23/concord/pull/274)
## [2.4.5] - 2026-07-23
### Features
- Add voice participant actions (#273) in [#273](https://github.com/chojs23/concord/pull/273) by @chojs23
## [2.4.4] - 2026-07-21
### Bug Fixes
- _(inbox)_ Show unread mention count in the Mentions tab by @chojs23
### Features
- _(inbox)_ Paginate unread previews and animate loading states by @chojs23
## [2.4.3] - 2026-07-20
### Bug Fixes
- Rebuild the notification inbox (#269) in [#269](https://github.com/chojs23/concord/pull/269) by @chojs23
### Features
- _(messages)_ Show pending messages (#270) in [#270](https://github.com/chojs23/concord/pull/270) by @chojs23
## [2.4.2] - 2026-07-17
### Bug Fixes
- _(voice)_ Bypass guild connect checks for DM calls by @chojs23
- _(discord)_ Harden network requests and session recovery (#265) in [#265](https://github.com/chojs23/concord/pull/265) by @chojs23
### Features
- _(voice)_ Increase microphone transmit boost gain to 1.5 (#262) in [#262](https://github.com/chojs23/concord/pull/262) by @chojs23
## [2.4.1] - 2026-07-15
### Features
- Handle channel permission (#259) in [#259](https://github.com/chojs23/concord/pull/259) by @chojs23
- Adjust dm min message count and add warning message on password signin by @chojs23
## [2.4.0] - 2026-07-14
### Bug Fixes
- Fix invalid token warning when fresh login by @chojs23
### Features
- Configurable themes (#248) in [#248](https://github.com/chojs23/concord/pull/248) by @neurosysgg
### New Contributors
- @neurosysgg made their first contribution in [#248](https://github.com/chojs23/concord/pull/248)
## [2.3.5] - 2026-07-12
### Bug Fixes
- Apply burst playout tick recovery by @chojs23
### Features
- Support all CPAL linear PCM audio output formats by @chojs23
- _(voice)_ Size dynamically voice prebuffer from the current audio callback by @chojs23
## [2.3.4] - 2026-07-12
### Bug Fixes
- Add voice UDP keepalive for listen-only sessions by @chojs23
- Share fingerprint across REST, and Gateway (#252) in [#252](https://github.com/chojs23/concord/pull/252) by @chojs23
- Unify member selection markers and update the group DM icon by @chojs23
- Use the default output device format on every OS by @chojs23
### Documentation
- Update README by @chojs23
## [2.3.3] - 2026-07-11
### Bug Fixes
- Upgrade CPAL to 0.18.1 for audio stream recovery (#249) in [#249](https://github.com/chojs23/concord/pull/249) by @chojs23
- Add a 60ms prebuffer and fixed 2400-frame PulseAudio output buffer by @chojs23
### Features
- Support mouse row clicks and scroll in action menus by @chojs23
## [2.3.2] - 2026-07-08
### Bug Fixes
- Fix gateway backoff reset, atomic private-file writes, and remove duplicate by @chojs23
### Features
- Promote guild/channel/member action menus to standalone modal popups by @chojs23
### Miscellaneous Tasks
- Remove redundant sccache from CI and release workflows by @chojs23
### Refactor
- Extract render_modal_frame helper to deduplicate popup modal boilerplate by @chojs23
- Remove legacy keymap actions by @chojs23
- Extract OnDemandRequests and CursorRequests primitives to dedupe request trackers by @chojs23
- Split message format.rs into wrap, markdown, polls, and system submodules by @chojs23
- Unify discord module layout, dedupe extra_fields by @chojs23
## [2.3.1] - 2026-07-07
### Features
- Add delete line composer key (#246) in [#246](https://github.com/chojs23/concord/pull/246) by @chojs23
- Support CONCORD_TOKEN env var in Auto credential mode (#243) in [#243](https://github.com/chojs23/concord/pull/243) by @yilisharcs
- Collapse avatar gutter and move selected-message time to border (#247) in [#247](https://github.com/chojs23/concord/pull/247) by @chojs23
### Refactor
- Generalize composer input actions by @chojs23
### New Contributors
- @yilisharcs made their first contribution in [#243](https://github.com/chojs23/concord/pull/243)
## [2.3.0] - 2026-07-06
### Bug Fixes
- Fix bot badge rendering (#241) in [#241](https://github.com/chojs23/concord/pull/241) by @LmanTW
- Rewrite Discord build-number fetch to scrape the sentry JS asset by @chojs23
- Fix truncated compsoer placeholder by @chojs23
### Features
- _(discord)_ Fetch live client build number at startup by @chojs23
- _(discord)_ Attach a snowflake nonce to outgoing messages by @chojs23
- _(discord)_ Broadcast typing indicator while composing a message by @chojs23
- _(discord)_ Lock DM composer until the conversation is established (#245) in [#245](https://github.com/chojs23/concord/pull/245) by @chojs23
## [2.2.13] - 2026-07-04
### Features
- Add support for playing audio attachments (#240) in [#240](https://github.com/chojs23/concord/pull/240) by @LmanTW
### Refactor
- _(tui)_ Standardize popup action buttons by @chojs23
### Nix
- Move package derivation to nix/package.nix by @chojs23
## [2.2.12] - 2026-07-02
### Features
- _(presence)_ Relay Rich Presence from local apps (#239) in [#239](https://github.com/chojs23/concord/pull/239) by @chojs23
### Refactor
- _(tui)_ Unify custom-emoji image overlays into single module by @chojs23
## [2.2.11] - 2026-07-01
### Bug Fixes
- Respect user nitro and guild boost restrictions (#234) in [#234](https://github.com/chojs23/concord/pull/234) by @chojs23
- Fix missing default profile avatar in profile popup by @chojs23
### Documentation
- Update readme by @chojs23
### Features
- Add reply pings toggle option (#232) in [#232](https://github.com/chojs23/concord/pull/232) by @chojs23
- Allow file drop without needing to already be composing (#212) (#227) in [#227](https://github.com/chojs23/concord/pull/227) by @LmanTW
- Support bare array keymap bindings (#233) in [#233](https://github.com/chojs23/concord/pull/233) by @chojs23
### Refactor
- _(tests)_ Construct AppEvent variants via shared fixtures by @chojs23
## [2.2.10] - 2026-06-30
### Bug Fixes
- Fix qwerty shortkey shadows numeric keys by @chojs23
- Fix missing pinned post (#231) in [#231](https://github.com/chojs23/concord/pull/231) by @chojs23
- Show fresh servers missing from guild_folders at top of server pane by @chojs23
### Miscellaneous Tasks
- Consolidate config load by @chojs23
### Refactor
- _(tui)_ Unify popup scrolling on shared scrolloff viewport by @chojs23
## [2.2.9] - 2026-06-29
### Bug Fixes
- Support 10ms Discord voice packets (#229) in [#229](https://github.com/chojs23/concord/pull/229) by @chojs23
### Documentation
- Update changelog by @chojs23
- Update readme by @chojs23
### Features
- Add a separate image quality option for the attachment viewer (#224) in [#224](https://github.com/chojs23/concord/pull/224) by @LmanTW
- Add support for disabling keymap shortcuts by @chojs23
- Make external media playback opt-in (#230) in [#230](https://github.com/chojs23/concord/pull/230) by @chojs23
- Add underline and strikethrough support to message formatting (#228) in [#228](https://github.com/chojs23/concord/pull/228) by @LmanTW
### Miscellaneous Tasks
- Remove legacy tests by @chojs23
### New Contributors
- @LmanTW made their first contribution in [#228](https://github.com/chojs23/concord/pull/228)
## [2.2.8] - 2026-06-26
### Bug Fixes
- Fix double redraw by @chojs23
- Make config parsing field-level tolerant so one bad value no longer discards other by @chojs23
### Documentation
- Update readme by @chojs23
- Update readme by @chojs23
### Features
- Block send message dm to fresh user (#222) in [#222](https://github.com/chojs23/concord/pull/222) by @chojs23
- Add private/group dm voice call (#223) in [#223](https://github.com/chojs23/concord/pull/223) by @chojs23
### Miscellaneous Tasks
- Fmt by @chojs23
## [2.2.7] - 2026-06-24
### Bug Fixes
- Render overlay popups within the full frame area by @chojs23
### Features
- Update post create ui by @chojs23
- Add post actions by @chojs23
- Add thread actions (#215) in [#215](https://github.com/chojs23/concord/pull/215) by @chojs23
- Add threads and forums to channel switcher (#216) in [#216](https://github.com/chojs23/concord/pull/216) by @chojs23
- Add notification inbox (#217) in [#217](https://github.com/chojs23/concord/pull/217) by @chojs23
### Miscellaneous Tasks
- Fmt by @chojs23
### Performance
- Implement per-image placement-diff rendering by @chojs23
## [2.2.6] - 2026-06-22
### Features
- Image protocol pref (#209) in [#209](https://github.com/chojs23/concord/pull/209) by @chojs23
## [2.2.5] - 2026-06-21
### Documentation
- Update readme by @chojs23
### Features
- Add guild folder settings by @chojs23
- Use custom notification sound instead of system generated sound by @chojs23
- Add create post by @chojs23
- Add composer attachment preview by @chojs23
## [2.2.4] - 2026-06-19
### Bug Fixes
- Hide empty channel categories if user doesn't have permission (#203) in [#203](https://github.com/chojs23/concord/pull/203) by @chojs23
- Update guild folders and order by UserSettingsUpdate by @chojs23
### Features
- Rename folder by @chojs23
- Add suppress embeds (#205) in [#205](https://github.com/chojs23/concord/pull/205) by @chojs23
### Refactor
- Preserve boundary payloads consistently by @chojs23
### New Contributors
- @fuguesoft made their first contribution in [#200](https://github.com/chojs23/concord/pull/200)
## [2.2.3] - 2026-06-18
### Bug Fixes
- Limit image protocol refresh to modal popup open/close by @chojs23
- Fix thread-kind reuse by @chojs23
- Fix mention detecting by authoritative Discord gateway fields (#198) in [#198](https://github.com/chojs23/concord/pull/198) by @chojs23
### Features
- Add sign-out feature (#202) in [#202](https://github.com/chojs23/concord/pull/202) by @chojs23
### Miscellaneous Tasks
- Extract app helper modules by @chojs23
### Refactor
- Split media cache modules by resource by @chojs23
- Refactor media structure and add jobs by @chojs23
- Extract dashboard event reducer by @chojs23
- Redesign modules by @chojs23
- Reuse message payloads in app events by @chojs23
- Merge presence updates into optional guild event by @chojs23
- Refactor some states duplication by @chojs23
## [2.2.2] - 2026-06-14
### Documentation
- Update readme by @chojs23
### Features
- Stream attachment saves with progress UI by @chojs23
- Add mpv video play (#182) in [#182](https://github.com/chojs23/concord/pull/182) by @chojs23
## [2.2.1] - 2026-06-12
### Bug Fixes
- Picker scroll by @chojs23
### Documentation
- Update readme by @chojs23
### Features
- Notify for active-channel messages while the terminal is unfocused (#177) in [#177](https://github.com/chojs23/concord/pull/177) by @cultlead3r
- Add built-in discord commands (#179) in [#179](https://github.com/chojs23/concord/pull/179) by @chojs23
- Persist TUI side pane visibility (#180) in [#180](https://github.com/chojs23/concord/pull/180) by @chojs23
## [2.2.0] - 2026-06-10
### Documentation
- Update homebrew installation by @chojs23
- Update image by @chojs23
### Features
- Wrap message text at word boundaries (#174) in [#174](https://github.com/chojs23/concord/pull/174) by @chojs23
- Use system keychain and move ui state to XDG_STATE_HOME (#173) in [#173](https://github.com/chojs23/concord/pull/173) by @chojs23
## [2.1.13] - 2026-06-07
### Bug Fixes
- _(tui)_ Preserve member search selection across member cache refreshes by @chojs23
- _(tui)_ Prevent popup residue on terminal images by @chojs23
- Retain member cache for more recent guilds by @chojs23
### Documentation
- Update readme by @chojs23
### Features
- Add --check-config validation command by @chojs23
- _(tui)_ Keep voice indicators visible after name truncation by @chojs23
## [2.1.12] - 2026-06-07
### Bug Fixes
- _(deps)_ Lock ratatui-image by @chojs23
### Miscellaneous Tasks
- _(ci)_ Remove legacy Darwin SDK framework inputs from Nix flake by @chojs23
## [2.1.11] - 2026-06-07
### Features
- Add version flag by @chojs23
### Miscellaneous Tasks
- Add npm installer (#165) in [#165](https://github.com/chojs23/concord/pull/165) by @chojs23
## [2.1.10] - 2026-06-06
### Bug Fixes
- Show macOS notifications on terminals that don't set TERM_PROGRAM set (#160) in [#160](https://github.com/chojs23/concord/pull/160) by @cultlead3r
- Fix slash command invocation to preserve selected command identity (#162) in [#162](https://github.com/chojs23/concord/pull/162) by @chojs23
- Highlight TypeScript code fences as JavaScript by @chojs23
### Features
- Add syntax highlighting (#158) in [#158](https://github.com/chojs23/concord/pull/158) by @ToborWinner
- Use pure rust syntect backend by @chojs23
- Add profile configuration (#163) in [#163](https://github.com/chojs23/concord/pull/163) by @chojs23
### New Contributors
- @cultlead3r made their first contribution in [#160](https://github.com/chojs23/concord/pull/160)
## [2.1.9] - 2026-06-03
### Bug Fixes
- Force image protocol refresh after popup overlay changes (#154) in [#154](https://github.com/chojs23/concord/pull/154) by @chojs23
- Prevent half-page message scroll from skipping content (#155) in [#155](https://github.com/chojs23/concord/pull/155) by @chojs23
### Documentation
- Update readme by @chojs23
### Features
- Load newer message when message cache has gap (#153) in [#153](https://github.com/chojs23/concord/pull/153) by @chojs23
- Reconnect (#156) in [#156](https://github.com/chojs23/concord/pull/156) by @chojs23
### Refactor
- Unify notification audio playback by @chojs23
## [2.1.8] - 2026-06-01
### Bug Fixes
- Remove macos notification fallback by @chojs23
### Features
- Add emojis as links (#144) in [#144](https://github.com/chojs23/concord/pull/144) by @van-nessing
- Add Nitro-aware custom emoji handling by @chojs23
- Added option for notification icon (#148) in [#148](https://github.com/chojs23/concord/pull/148) by @ToborWinner
- Add composer option and move emoji_as_link to composer option by @chojs23
### New Contributors
- @ToborWinner made their first contribution in [#148](https://github.com/chojs23/concord/pull/148)
- @van-nessing made their first contribution in [#144](https://github.com/chojs23/concord/pull/144)
## [2.1.7] - 2026-05-29
### Bug Fixes
- Fix fenced code block rendering for pasted multi-block messages by @chojs23
- Fix owner/admin delete permission being mistaken for unknown state by @chojs23
### Features
- Add Discord message/member search (#141) in [#141](https://github.com/chojs23/concord/pull/141) by @chojs23
## [2.1.6] - 2026-05-29
### Bug Fixes
- _(voice)_ Isolate audio path on a dedicated runtime and pace sends off the mic clock (#138) in [#138](https://github.com/chojs23/concord/pull/138) by @ibarrick
- _(voice)_ Make audio transmit shutdown and pacing robust by @chojs23
### Features
- Add configurable real voice join and leave notification sounds (#139) in [#139](https://github.com/chojs23/concord/pull/139) by @chojs23
## [2.1.5] - 2026-05-28
### Bug Fixes
- Schedule read ack when catching up to latest messages by @chojs23
### Documentation
- Clarify keymap action names warning in README by @chojs23
- Document scoped pane action shortcuts as single-key only by @chojs23
### Features
- Add zoom feature for images and adjust sizing logic for images in popout window (#133) in [#133](https://github.com/chojs23/concord/pull/133) by @ibarrick
- Allow leaving of server (#129) in [#129](https://github.com/chojs23/concord/pull/129) by @nexxai
- Add goto key group by @chojs23
- Message action keymap by @chojs23
### Refactor
- Use generic popup by @chojs23
- Group tui runtime plumbing by @chojs23
### New Contributors
- @ibarrick made their first contribution in [#133](https://github.com/chojs23/concord/pull/133)
## [2.1.4] - 2026-05-26
### Bug Fixes
- Add dependencies for cargo publish by @chojs23
### Features
- Update keymaps by @chojs23
- Show keymap help with active shortcut labels by @chojs23
## [2.1.3] - 2026-05-26
### Bug Fixes
- Enable voice playback by default by @chojs23
### Documentation
- Update README by @chojs23
## [2.1.2] - 2026-05-25
### Bug Fixes
- Mark threads created by the current user as joined by @chojs23
### Features
- Support pane resize keybinding by @chojs23
- Guild role by @chojs23
- Handle chnnel pins update event by @chojs23
- Add reaction shortcut for selected messages (#127) in [#127](https://github.com/chojs23/concord/pull/127) by @chojs23
- Handle discord gateway connection error by @chojs23
### Miscellaneous Tasks
- Add paths-ignore to ci workflow by @chojs23
## [2.1.1] - 2026-05-25
### Bug Fixes
- Fix expensive channel sidebar build by grouping joined threads once by @chojs23
### Documentation
- Update readme for keymap example by @chojs23
- Update readme for powershell installer by @chojs23
### Refactor
- Fixture builders by @chojs23
## [2.1.0] - 2026-05-24
### Bug Fixes
- Fix clippy build errors by @chojs23
- Fix non-Linux voice playback release builds by @chojs23
- URL picker from message action menu and preserve case-sensitive action shortcuts by @chojs23
- Allow key modifier for action shortcut by @chojs23
- Handle thread chnnel update events by @chojs23
### Documentation
- Update readme by @chojs23
### Features
- Keymap customization (#126) in [#126](https://github.com/chojs23/concord/pull/126) by @chojs23
- Support custom composer keymaps by @chojs23
- Subcommand picker by @chojs23
- Message pane actions by @chojs23
- Add quit command by @chojs23
- Add attachment viewer by @chojs23
### Miscellaneous Tasks
- Release cache warm by @chojs23
### Refactor
- Split Discord event payload types by @chojs23
- Move Discord module tests out of large files by @chojs23
- Move facade tests into child modules by @chojs23
- Split tui ui tests by @chojs23
## [2.0.7] - 2026-05-22
### Bug Fixes
- Avoid report all keys as escape code by @chojs23
- Improve clipboard paste priority by @chojs23
- Fix stale MESSAGE_ACK from reopening unread state (#119) in [#119](https://github.com/chojs23/concord/pull/119) by @chojs23
- _(tui)_ Keep guild filter pane width stable by @chojs23
- Fix forum preview message by @chojs23
### Documentation
- Update keybinding docs by @chojs23
### Features
- Add optional circular avatar masking (#121) in [#121](https://github.com/chojs23/concord/pull/121) by @StaszeKrk
### Refactor
- Refactor repeated test DTO by @chojs23
- Move tui state to client backend by @chojs23
- Move TUI backend request handling into Discord client by @chojs23
### New Contributors
- @StaszeKrk made their first contribution in [#121](https://github.com/chojs23/concord/pull/121)
- @CX330Blake made their first contribution in [#117](https://github.com/chojs23/concord/pull/117)
## [2.0.6] - 2026-05-21
### Bug Fixes
- Fix slash command guild scope payload by @chojs23
### Features
- Better server/channel collapsing (#105) in [#105](https://github.com/chojs23/concord/pull/105) by @nexxai
- Support slash commands (#90) in [#90](https://github.com/chojs23/concord/pull/90) by @nexxai
### Performance
- _(tui)_ Suppress image redraws for sidebar updates by @chojs23
### Refactor
- Group DashboardState internals into substates by @chojs23
- Split tui state test module by @chojs23
## [2.0.5] - 2026-05-20
### Documentation
- Update composer keybinding docs by @chojs23
### Features
- Handle MessageDeleteBulk event by @chojs23
- Add clipboard image paste (#114) in [#114](https://github.com/chojs23/concord/pull/114) by @chojs23
- Include embed URLs in open url picker (#115) in [#115](https://github.com/chojs23/concord/pull/115) by @chojs23
## [2.0.4] - 2026-05-20
### Bug Fixes
- _(tui)_ Detect URLs in reply quotes and forwarded messages (#107) by @SAY-5
- Use transient typing display names for TYPING_START by @chojs23
- Clear typing indicator when a typer sends a message by @chojs23
- Composer newline fallbacks (#112) in [#112](https://github.com/chojs23/concord/pull/112) by @chojs23
- Fix bold italic markdown rendering (#113) in [#113](https://github.com/chojs23/concord/pull/113) by @chojs23
### Documentation
- Require related issues for pr by @chojs23
- Update readme by @chojs23
### Features
- Add mute,deafen state on header by @chojs23
- Add ctrl+w composer word deletion by @chojs23
### Performance
- _(tui)_ Improve member sidebar loading and rendering by @chojs23
### New Contributors
- @SAY-5 made their first contribution
## [2.0.3] - 2026-05-19
### Bug Fixes
- Stop auto-fetching visible user profiles by @chojs23
- Use gateway for fetch message authors info by @chojs23
- Dedupe message author member hydration by @chojs23
- Load pinned messages on demand by @chojs23
- Debounce member list subscriptions by @chojs23
- Fix forum preview author hydration through gateway by @chojs23
- Dedupe gateway channel subscriptions by @chojs23
- Cap reaction user pagination by @chojs23
- Dedupe duplicate voice state updates by @chojs23
- Op37 subscription dedupe reset by @chojs23
### Documentation
- Update changelog by @chojs23
### Features
- Change composer Ctrl+Backspace to delete words and Delete to remove attachments by @chojs23
### Miscellaneous Tasks
- Format by @chojs23
## [2.0.2] - 2026-05-19
### Bug Fixes
- Secure URL opening from messages by @chojs23
- Fix composer draft clearing on mouse focus change (#100) in [#100](https://github.com/chojs23/concord/pull/100) by @chojs23
### Features
- Add support for detecting links in messages and opening them in the default browser (#86) in [#86](https://github.com/chojs23/concord/pull/86) by @nexxai
- Focus next pane after selection (#102) in [#102](https://github.com/chojs23/concord/pull/102) by @chojs23
- Add query-based guild member search for mention autocomplete (#103) in [#103](https://github.com/chojs23/concord/pull/103) by @chojs23
- Improve channel switcher ranking and recents by @chojs23
### Performance
- Reduce Discord snapshot churn by @chojs23
- Reduce TUI redraw allocations by @chojs23
- Cache channel switcher items while open by @chojs23
## [2.0.1] - 2026-05-18
### Bug Fixes
- _(voice)_ Reduce microphone tearing during transmit (#96) in [#96](https://github.com/chojs23/concord/pull/96) by @chojs23
### Features
- Centralize app key handling and shortcut labels (#89) in [#89](https://github.com/chojs23/concord/pull/89) by @chojs23
### Miscellaneous Tasks
- Add system Opus to Nix build inputs by @chojs23
- Enable voice-playback for nix build by @chojs23
- Add Twilight attribution for Discord IDs (#95) by @chojs23
## [2.0.0] - 2026-05-17
### Bug Fixes
- Reconnect voice gateway after unexpected disconnect by @chojs23
- Mute voice playback while deafened by @chojs23
- Ignore silent RTP for remote speaking by @chojs23
- Show local speaking while alone in voice by @chojs23
- Keep local speaking visible during redraw debounce by @chojs23
- Show local mic activity before transmit confirmation by @chojs23
- Move composer cursor vertically (#82) in [#82](https://github.com/chojs23/concord/pull/82) by @chojs23
- Prefer text for native clipboard paste by @chojs23
- Stabilize voice sound (#84) in [#84](https://github.com/chojs23/concord/pull/84) by @chojs23
- Fix speaking state by @chojs23
### Documentation
- Update readme by @chojs23
### Features
- Join/Leave voice channel by @chojs23
- Add voice shutdown cleanup and active voice UI indicators by @chojs23
- Show voice connection status by @chojs23
- Add voice websocket connection by @chojs23
- Add DAVE signaling prototype using davey by @chojs23
- Add voice gateway lifecycle status reporting and cleanup hardening by @chojs23
- Add DAVE media-frame unwrap after RTP transport decrypt by @chojs23
- Add receive-only Opus decode worker by @chojs23
- Add optional feature-gated Discord voice playback backend by @chojs23
- Capture ALSA diagnostics into Concord logs by @chojs23
- Support u8 stream output by @chojs23
- Add local microphone transmit by @chojs23
- Gated capture-only microphone by @chojs23
- Resampling by @chojs23
- Highlight active voice speakers by @chojs23
- Active speaker state by @chojs23
- Add microphone sensitivity option by @chojs23
- Mic sensitivity by @chojs23
- Add voice channel join and leave sounds by @chojs23
- Add volume config and shortcut for voice action by @chojs23
- Voice chat (#78) in [#78](https://github.com/chojs23/concord/pull/78) by @chojs23
- Better clipboard (#81) by @chojs23
### Miscellaneous Tasks
- Remove performance measurement logs by @chojs23
- Add debug log for voice websocket by @chojs23
- Treat DaveOutboundNotReady as transient DAVE setup log noise when microphone transmit works by @chojs23
- Clippy by @chojs23
### Performance
- Reduce microphone transmit latency by dropping stale PCM frames by @chojs23
### Revert
- Remove redundant local speaking fallback fixes by @chojs23
- Clipboard (#83) in [#83](https://github.com/chojs23/concord/pull/83) by @chojs23
## [1.4.2] - 2026-05-16
### Bug Fixes
- _(search)_ Improve fuzzy search logic (#74) in [#74](https://github.com/chojs23/concord/pull/74) by @80avin
### Miscellaneous Tasks
- Remove temp diagnostic by @chojs23
### Performance
- Cache avatar render protocols by clipping and size to avoid per-frame re-encoding by @chojs23
- Cache message content row metrics to reduce repeated per-frame formatting by @chojs23
- Reduce channel upsert UI repair work by @chojs23
### New Contributors
- @80avin made their first contribution in [#74](https://github.com/chojs23/concord/pull/74)
## [1.4.1] - 2026-05-15
### Bug Fixes
- Hydrate new forum post previews and make forum unread/read behavior match normal channels by @chojs23
### Documentation
- Update readme by @chojs23
- Add markdown example image by @chojs23
### Features
- Add already reacted emojis to top of picker list (attempt #2) (#64) in [#64](https://github.com/chojs23/concord/pull/64) by @nexxai
- Minimal markdown support by @chojs23
- Render voice channel participations by @chojs23
- Show live indicator for streaming voice participants by @chojs23
### Miscellaneous Tasks
- Add some comment for constants by @chojs23
### Performance
- Bound discord caches and split snapshot into selective areas by @chojs23
### Refactor
- Split DiscordState tests by @chojs23
## [1.4.0] - 2026-05-14
### Bug Fixes
- Update channel pane search and server header behavior by @chojs23
- Use XDG_CONFIG_HOME env for mac by @chojs23
- Usernames (#60) in [#60](https://github.com/chojs23/concord/pull/60) by @lisk77
- Fix visible member profile requests to follow rendered member rows by @chojs23
- Fix member pane emoji width overflow by @chojs23
- Keep timestamp-only embeds by @chojs23
- Preserve embed markdown details by @chojs23
- Remove r key reaction shortcut by @chojs23
- Modify image viewer size and allign image centered by @chojs23
- Clarify composer edit and reply modes by @chojs23
- Fix channel pane mouse row offset after guild header by @chojs23
- Align message action menu shortcuts with message pane shortcuts by @chojs23
### Documentation
- Update readme for message shortcut by @chojs23
### Features
- Expanding support for embedded content (#65) in [#65](https://github.com/chojs23/concord/pull/65) by @nexxai
- Add toast alarm by @chojs23
### Refactor
- Centralize display-name by @chojs23
- Remove configurable keybindings (#71) in [#71](https://github.com/chojs23/concord/pull/71) by @chojs23
- Remove redundant preview preset by @chojs23
- Refactor keyboard shortcuts by @chojs23
### New Contributors
- @SeniorMars made their first contribution in [#57](https://github.com/chojs23/concord/pull/57)
## [1.3.3] - 2026-05-13
### Bug Fixes
- Align composer cursor with manual text wrapping (#50) in [#50](https://github.com/chojs23/concord/pull/50) by @AnalogCyan
- Fix composer multiline height wrapping to match rendered prefixes by @chojs23
- Message action menu mouse hitbox geometry by @chojs23
### Features
- Group messages based on sender (#56) in [#56](https://github.com/chojs23/concord/pull/56) by @nexxai
- Composer draft preservation (#61) in [#61](https://github.com/chojs23/concord/pull/61) by @chojs23
- Add Discord permission gates for message moderation actions (#62) in [#62](https://github.com/chojs23/concord/pull/62) by @chojs23
- Image viewer key helper by @chojs23
- Make message rows with larger avatars and stable selected grouped timestamps (#63) by @chojs23
### Refactor
- Refactor message row layout into modules and shared metrics by @chojs23
- Move forum-post viewport helpers by @chojs23
- Split discord state domain by @chojs23
- Split tui modules by @chojs23
- Gateway parser and TUI popup modules by @chojs23
### New Contributors
- @AnalogCyan made their first contribution in [#50](https://github.com/chojs23/concord/pull/50)
## [1.3.2] - 2026-05-12
### Bug Fixes
- Activity emojis (#28) in [#28](https://github.com/chojs23/concord/pull/28) by @lisk77
- Align cursor position with newline-aware composer display (#45) in [#45](https://github.com/chojs23/concord/pull/45) by @kimjune01
- Fix reply edit state and complete reply attachment actions by @chojs23
- Reuse member presence marker for DM channel status dots by @chojs23
- Decoupe per-user note fetch from profile warm up by @chojs23
- Remove cached Discord state persistence (#52) in [#52](https://github.com/chojs23/concord/pull/52) by @chojs23
### Features
- Remove footer and last status by @chojs23
- Loading indicator by @chojs23
- Show offline members with an empty circle presence marker by @chojs23
- Surface unread channels and server-name search in channel switcher by @chojs23
### Miscellaneous Tasks
- Use git-cliff for changelog by @chojs23
- Add clippy check by @chojs23
- Clean up comments and simplify required context by @chojs23
### Refactor
- _(tui)_ Remove footer and popup hints (#43) in [#43](https://github.com/chojs23/concord/pull/43) by @chojs23
- Refactor activity rendering with typed ActivityRender struct (#44) in [#44](https://github.com/chojs23/concord/pull/44) by @chojs23
- Change broken dash by @chojs23
### Refacotr
- Rename leader action state and add context-specific action titles by @chojs23
### New Contributors
- @amiralimollaei made their first contribution in [#49](https://github.com/chojs23/concord/pull/49)
- @kimjune01 made their first contribution in [#45](https://github.com/chojs23/concord/pull/45)
## [1.3.1] - 2026-05-11
### Bug Fixes
- Fix test cache leakage (#31) in [#31](https://github.com/chojs23/concord/pull/31) by @chojs23
- Discord Gateway startup failure (#36) in [#36](https://github.com/chojs23/concord/pull/36) by @chojs23
- Fix muted channels contributing to server unread badges (#37) in [#37](https://github.com/chojs23/concord/pull/37) by @chojs23
### Documentation
- Update readme by @chojs23
### Features
- Add server mark-as-read & active channel ack debounce by @chojs23
- Display online and member count (#16) in [#16](https://github.com/chojs23/concord/pull/16) by @lisk77
- Prefs persistence (#25) in [#25](https://github.com/chojs23/concord/pull/25) by @TobyBridle
- Support muting channels and servers via actions (#26) in [#26](https://github.com/chojs23/concord/pull/26) by @nexxai
- Support all emojis for reactions (#30) in [#30](https://github.com/chojs23/concord/pull/30) by @nexxai
- Add emoji picker and autocomplete in composer (#34) in [#34](https://github.com/chojs23/concord/pull/34) by @chojs23
### Miscellaneous Tasks
- Remove cache warm by @chojs23
### Refactor
- Refactor quick reaction emoji labels to use emojis crate (#32) in [#32](https://github.com/chojs23/concord/pull/32) by @chojs23
- Remove dead test by @chojs23
## [1.3.0] - 2026-05-10
### Bug Fixes
- Prevent scrolling past last message (#12) in [#12](https://github.com/chojs23/concord/pull/12) by @lisk77
- Display of self mutuals (#14) in [#14](https://github.com/chojs23/concord/pull/14) by @lisk77
### Documentation
- Update README.md by @chojs23
### Features
- Support resizing panes (#18) in [#18](https://github.com/chojs23/concord/pull/18) by @nexxai
- _(composer)_ Add CTRL+Left, CTRL+Right word skip (#15) in [#15](https://github.com/chojs23/concord/pull/15) by @TobyBridle
- Add search to reaction picker + allow toggling of reactions (#19) in [#19](https://github.com/chojs23/concord/pull/19) by @nexxai
- Add fuzzy score helper (#21) in [#21](https://github.com/chojs23/concord/pull/21) by @chojs23
- Typo tolerant fuzzy (#22) in [#22](https://github.com/chojs23/concord/pull/22) by @chojs23
### Refactor
- _(composer)_ Use char-safe word boundary helpers (#20) in [#20](https://github.com/chojs23/concord/pull/20) by @chojs23
- Store app files under $XDG_CONFIG_HOME/concord (#23) in [#23](https://github.com/chojs23/concord/pull/23) by @chojs23
### New Contributors
- @lisk77 made their first contribution in [#14](https://github.com/chojs23/concord/pull/14)
- @nexxai made their first contribution in [#19](https://github.com/chojs23/concord/pull/19)
- @TobyBridle made their first contribution in [#15](https://github.com/chojs23/concord/pull/15)
## [1.2.0] - 2026-05-09
### Documentation
- Update readme for upload attachment by @chojs23
- Remove some composer key usage by @chojs23
### Features
- Add leader by @chojs23
- Search channel with fuzzy by @chojs23
- Add new version available notice at header by @chojs23
### Miscellaneous Tasks
- Allign Release build toolchain with CI chace warmer by @chojs23
### Refactor
- Move options key to leader by @chojs23
## [1.1.2] - 2026-05-09
### Bug Fixes
- Redraw visible unread sidebar updates during image rendering by @chojs23
- Active-channel auto-ack by @chojs23
### Features
- Multipart file upload (#8) in [#8](https://github.com/chojs23/concord/pull/8) by @chojs23
### Miscellaneous Tasks
- Tighten dist profile with full LTO, single codegen unit, and strip by @chojs23
### Tests
- Consolidate redundant split tests by @chojs23
### Cd
- Protect release by @chojs23
- Improve build caching by @chojs23
## [1.1.1] - 2026-05-09
### Bug Fixes
- _(flake)_ Use crane (#4) in [#4](https://github.com/chojs23/concord/pull/4) by @M4jor-Tom
- Keep original image width:height ratio (#6) in [#6](https://github.com/chojs23/concord/pull/6) by @chojs23
### Documentation
- Add CONTRIBUTING.md by @chojs23
- Update readme by @chojs23
- Update readme by @chojs23
### Features
- Add terminal notification (#5) in [#5](https://github.com/chojs23/concord/pull/5) by @chojs23
### Miscellaneous Tasks
- Enable generated github release notes by @chojs23
### Cd
- Chain crates publish after release by @chojs23
### New Contributors
- @M4jor-Tom made their first contribution in [#4](https://github.com/chojs23/concord/pull/4)
## [1.0.3] - 2026-05-08
### Bug Fixes
- Install rustls ring provider by @chojs23
- Surface user-account READY via raw JSON fallback and silence twilight deserialize errors by @chojs23
- Expand user-account fallback parser to cover guild, channel, message, and member events by @chojs23
- Make server folder toggles reliable by @chojs23
- Send raw user token for REST requests by @chojs23
- Start dashboard without message selection by @chojs23
- Wait for channel selection before showing messages by @chojs23
- Keep pane scrolling state-owned by @chojs23
- Align scroll height with pane content by @chojs23
- Keep startup channel pane inactive by @chojs23
- Preserve channel cursor across DM sorting by @chojs23
- Retry failed message history loads by @chojs23
- Require selected channel before composing by @chojs23
- Use text color for active selections by @chojs23
- Enable modified key reporting by @chojs23
- Keep proxy-only attachment URLs by @chojs23
- Disable attachment open shortcut by @chojs23
- Render image messages inline by @chojs23
- Render previews while scrolling by @chojs23
- Preview all visible images by @chojs23
- Keep image previews anchored by @chojs23
- Keep preview scrolling row-aware by @chojs23
- Dispatch image preview requests by @chojs23
- Scale image preview height by @chojs23
- Reduce wide preview spacing by @chojs23
- Avoid upscaling small previews by @chojs23
- Keep preview items within scroll bounds by @chojs23
- Preserve image previews in scrolloff by @chojs23
- Render clipped image previews by @chojs23
- Classify video attachments separately by @chojs23
- Skip videos in image preview layout by @chojs23
- Label video attachments in messages by @chojs23
- Handle QR captcha without browser fallback by @chojs23
- Align forwarded image preview targets by @chojs23
- Dim forwarded metadata line by @chojs23
- Separate reply preview author by @chojs23
- Label unsupported message types by @chojs23
- Filter message actions by subtype by @chojs23
- Remove poll results action by @chojs23
- Remove unavailable poll vote action by @chojs23
- Preserve newest messages during pagination by @chojs23
- Hide overflowing image previews by @chojs23
- Wrap message content lines by @chojs23
- Use display width for message wrapping by @chojs23
- Scroll messages by rendered line by @chojs23
- Clamp message scroll by rendered rows by @chojs23
- Separate message selection and viewport scroll by @chojs23
- Avoid message selection overflow by @chojs23
- Text clipping by @chojs23
- Use guild aliases for message authors by @chojs23
- Clip message rows by display width by @chojs23
- Remove some unnecessary env by @chojs23
- Use concord logging settings by @chojs23
- Use concord credential path by @chojs23
- Bottom align initial message viewport by @chojs23
- Hide avatar placeholder on message content rows by @chojs23
- Keep message highlight out of avatar column by @chojs23
- Remove bold from selection highlight by @chojs23
- Show message times in local timezone by @chojs23
- Align preview rows with rendered mentions by @chojs23
- Render mentions from message metadata by @chojs23
- Preserve mention metadata across merges by @chojs23
- Prefer guild aliases for mentions by @chojs23
- Normalize mention highlight ranges by @chojs23
- Add default app constructor by @chojs23
- Simplify mention highlight filtering by @chojs23
- Clear stale message update metadata by @chojs23
- Avoid download filename races by @chojs23
- Send real Discord replies by @chojs23
- Load custom guild emojis for reactions by @chojs23
- Bound image preview cache memory by @chojs23
- Move image preview decoding off tui loop by @chojs23
- Render user join messages by @chojs23
- Show known system message labels by @chojs23
- Cache Discord thread gateway channels by @chojs23
- Cache Discord member chunks by @chojs23
- Request members for active guilds by @chojs23
- Group members by Discord roles by @chojs23
- Truncate member names by display width by @chojs23
- Preserve DM recipient presence state by @chojs23
- Show DM recipients as members by @chojs23
- Color DM channels by recipient status by @chojs23
- Parse DM recipient presence updates by @chojs23
- Subscribe to active DM presence by @chojs23
- Hydrate active guild member lists by @chojs23
- Include self in group DM recipients by @chojs23
- Update poll vote state by @chojs23
- Submit poll votes together by @chojs23
- Process all member list sync ranges by @chojs23
- Receive unknown gateway events for member list updates by @chojs23
- Open member profile on enter or space by @chojs23
- Show loaded versus total guild members without full member loading by @chojs23
- Scope user profile cache by guild by @chojs23
- Show user profile load failures by @chojs23
- Update member totals on removal events by @chojs23
- Count fallback poll result votes by @chojs23
- Account for separators in image preview targets by @chojs23
- Hide channels that doesn't meet permission by @chojs23
- Guild user role by @chojs23
- Fix startup presense fallback by @chojs23
- Fix overflowing scrollbar by @chojs23
- Fix some ui by @chojs23
- Fall back when keyboard progressive enhancement unsupported by @chojs23
- Image blinking by @chojs23
- Message box by @chojs23
- Fix message viewport junmping with empty space by @chojs23
- Fix message viewport auto-follow by @chojs23
- Remove new dm by @chojs23
- Fix image flicker by suppressing redundant effect-driven redraws by @chojs23
- Clamp horizontal pane scrolling by @chojs23
- Remove inactive message scroll hint by @chojs23
- Preserve active guild mention style by @chojs23
- Prevent member activity row from overflowing panel by @chojs23
- Handle zero Discord snowflake parsing in gateway read state. by @chojs23
- Make qr code more scannable and fix partial paste issue by @chojs23
- Fix self-authored Discord messages being marked as unread by @chojs23
### Documentation
- Add curl install instructions by @chojs23
- Clarify release installer path by @chojs23
- Add example image by @chojs23
- Update readme by @chojs23
- Update example by @chojs23
### Features
- Add configuration and error foundation by @chojs23
- Add Discord gateway and messaging client by @chojs23
- Wire the app runtime to the Discord client by @chojs23
- Add credential-backed token config by @chojs23
- Add terminal dashboard and login UI by @chojs23
- Wire saved-token login into startup by @chojs23
- Store credentials in local file by @chojs23
- Add Discord state model by @chojs23
- Render Discord state panes by @chojs23
- Wire message composer commands by @chojs23
- Add QR code login flow with mode-select login screen by @chojs23
- Rebuild dashboard as Discord-style 4-pane layout with members and presence by @chojs23
- Extract guilds and DM channels from user-account READY and add gateway debug log by @chojs23
- Surface direct messages in the guild pane with @ channel prefix by @chojs23
- Group servers by Discord folders with collapsible headers by @chojs23
- Improve server folder tree rendering by @chojs23
- Store channel tree metadata by @chojs23
- Render collapsible channel tree by @chojs23
- Activate servers and channels on confirm by @chojs23
- Sort direct messages by latest message by @chojs23
- Add recent message history loading by @chojs23
- Add global file logging by @chojs23
- Sort direct messages by recent activity by @chojs23
- Add lazyagent-style message scrolling by @chojs23
- Use consistent scroll behavior across panes by @chojs23
- Clarify server and channel selection by @chojs23
- Mark active server in guild list by @chojs23
- Use four-pane dashboard layout by @chojs23
- Support multiline message input by @chojs23
- Preserve message attachment metadata by @chojs23
- Render message attachments in pane by @chojs23
- Open message attachments externally by @chojs23
- Load attachment preview data by @chojs23
- Render inline image previews by @chojs23
- Preserve forwarded message snapshots by @chojs23
- Preview forwarded attachments by @chojs23
- Render forwarded messages by @chojs23
- Add password login with MFA by @chojs23
- Preserve forwarded source metadata by @chojs23
- Render forwarded message cards by @chojs23
- Separate attachment summary lines by @chojs23
- Render Discord message types by @chojs23
- Render reply previews by @chojs23
- Render poll messages by @chojs23
- Add message actions for polls by @chojs23
- Paginate older message history by @chojs23
- Add partial clipping for inline image by @chojs23
- Render Discord-like message rows by @chojs23
- Render message avatars by @chojs23
- Render user mentions in messages by @chojs23
- Highlight current user mentions by @chojs23
- Add emoji reaction picker by @chojs23
- Support custom guild emoji reactions by @chojs23
- Show custom emoji images in picker by @chojs23
- Show reply target in composer by @chojs23
- Render Discord system message cards by @chojs23
- Queue guild member gateway requests by @chojs23
- Add guild member load command by @chojs23
- Cache Discord role metadata by @chojs23
- Store DM channel recipients by @chojs23
- Render DM recipients in member pane by @chojs23
- Add reaction pin and poll actions by @chojs23
- Render polls in boxed cards by @chojs23
- Render custom emoji on message by @chojs23
- List threads via channel actions menu by @chojs23
- Subscribe member list on guild switch by @chojs23
- Scroll member list subscription with viewport by @chojs23
- Split member sidebar into role online and offline groups by @chojs23
- Load and cache discord user profiles by @chojs23
- Capture friend relationships from ready by @chojs23
- Open user profile popup from message action menu by @chojs23
- Open user profile from member action menu by @chojs23
- Render profile avatar image inside the popup by @chojs23
- React to relationship add and remove dispatches by @chojs23
- Jump to mutual server from profile popup by @chojs23
- Change message author names to bold white and profile popup names to status-based color by @chojs23
- Add debug panel and youtube embed by @chojs23
- Gate sidebar with Discord's view-channel permission by @chojs23
- Add test log path by @chojs23
- Add scrollbar by @chojs23
- Thread box by @chojs23
- Improve forum by @chojs23
- Pane actions by @chojs23
- Add gateway reaction event handling by @chojs23
- Cd by @chojs23
- Mouse by @chojs23
- Handle large traffic event by @chojs23
- Migrated to use watch revision signal plus sequenced effect stream hybrid by @chojs23
- Selection with mouse by @chojs23
- Use iterm2 protocol for wezterm by @chojs23
- Fix some mouse interaction and optimize image redraw by @chojs23
- Render message inline emoji by @chojs23
- Multiple image viewer by @chojs23
- WIP message selection box by @chojs23
- Split forum posts by @chojs23
- Auto scroll by @chojs23
- Keep input mode by @chojs23
- Message update & delete by @chojs23
- New messages by @chojs23
- Download non-image attachments from message menu by @chojs23
- Render sticker-only messages instead of empty body by @chojs23
- Send DM from profile popup with m shortcut by @chojs23
- Render role mentions as @role-name with highlight by @chojs23
- Scroll-based profile popup with mouse wheel support by @chojs23
- Add client headers and cookie by @chojs23
- Channel tag by @chojs23
- Embed image resize + move emojj under image by @chojs23
- Unread/read channel by @chojs23
- Unread messages by @chojs23
- Add header by @chojs23
- Add option by @chojs23
- Add horizontal pane scrolling by @chojs23
- Highlight self reactions in yellow by @chojs23
- Show startup loading state by @chojs23
- Report startup token problems by @chojs23
- Show guild mention badges by @chojs23
- Add unread count for dm by @chojs23
- Action shortcuts by @chojs23
- User activity by @chojs23
- Add configurable image quality presets by @chojs23
- Nix flake by @chojs23
### Miscellaneous Tasks
- Initialize Rust application scaffold by @chojs23
- Clarify message input wording by @chojs23
- Show temporary message type prefix by @chojs23
- Rename package to concord by @chojs23
- Remove twilight by @chojs23
- Split some states by @chojs23
- Bump dependencies to latest by @chojs23
- Ui split by @chojs23
- Split tui modules by @chojs23
- Split discord gateway and state by @chojs23
- Fix some issues by @chojs23
- Remove clippy validation by @chojs23
- Split parser and redraw modules by @chojs23
### Performance
- Throttle inline image previews by @chojs23
- Bound attachment preview downloads by @chojs23
- Reduce retained media cache memory by @chojs23
- Bound older history retention by @chojs23
- Lower cache limits by @chojs23
- Resize discord cdn images by @chojs23
- Youtube embed thumbnail resizing by @chojs23
### Refactor
- Remove unused Discord state fields by @chojs23
- Sync viewport heights before rendering by @chojs23
- Compose message preview rows by @chojs23
- Use message capabilities for actions by @chojs23
- Construct app without config by @chojs23
- Remove startup config module by @chojs23
- Group message update state fields by @chojs23
- Remove dead attachment helpers by @chojs23
- Reuse message viewport bottom alignment by @chojs23
- Extract tui message formatting by @chojs23
- Split tui media target discovery by @chojs23
- Extract message viewport row scrolling by @chojs23
- Derive message height from formatter by @chojs23
- Unify message content span styling by @chojs23
- Extract image preview media cache by @chojs23
- Share emoji picker visible limit by @chojs23
- Split poll state by @chojs23
- Split message action state by @chojs23
- Split reaction state by @chojs23
- Split composer state by @chojs23
### Revert
- Remove latest-message direct message sorting by @chojs23
### Style
- Format mention highlight mapping by @chojs23
- Dim reply target composer hint by @chojs23
- Color role-grouped members by status by @chojs23
### Tests
- Cover raw ready custom emojis by @chojs23
- Cover cached thread channel deletion by @chojs23
- Replace Korean UI test fixtures by @chojs23
- Replace Korean TUI helper fixtures by @chojs23
- Simplify tui test helpers by @chojs23
- Reuse ui message content fixture by @chojs23
### Build
- Add TUI and keychain dependencies by @chojs23
### New Contributors
- @chojs23 made their first contribution
- @vncsalencar made their first contribution