Skip to content

v0.4.0

Choose a tag to compare

@hmans hmans released this 06 Jul 10:25
6456847

0.4.0 (2026-07-06)

⚠ BREAKING CHANGES

  • api: consolidate ConnectRPC surface (#1306)
  • api: clean up server assets calls and includes (#1303)
  • api: consolidate shared api shapes (#1302)
  • api: consolidate shared public API types (#1299)
  • api: consolidate public ConnectRPC API (#1295)
  • api: polish ConnectRPC API for 0.4.0 (#1224)
  • operator: add socket-backed operator user administration (#1164)
  • api: reshape server profile responses (#1185)
  • api: split ConnectRPC packages (#1179)
  • api: replace GraphQL with ConnectRPC (#1166)
  • api: use optional timeline presence fields (#1110)

Features

Bug Fixes

  • api: address 0.4.0 surface review findings (#1228) (bd054ff)
  • api: align ConnectRPC permission exposure (#1246) (cf2eca7)
  • api: centralize Connect room RBAC in core (#1149) (8ba5b0c)
  • api: close ConnectRPC RBAC gaps (#1207) (da0b129)
  • api: include user status in generated docs (#1092) (52521fa)
  • api: make ConnectRPC plumbing idiomatic (#1123) (338f573)
  • api: preserve offline presence in snapshots (#1172) (7fce244)
  • api: tighten ConnectRPC caller auth (#1126) (bb8c10d)
  • assets: prevent protected attachment caching (#1261) (e3c6eed)
  • assets: serve protected assets through stable gateway (#1264) (744e93e)
  • attachments: crop extreme image thumbnails (#1181) (d5dd244)
  • auth: add structured unauthenticated GraphQL errors (#1048) (510c07d)
  • auth: reject empty-user runtime credentials (#1201) (43b569c)
  • calls: preserve call on tab takeover (#1284) (451929d)
  • ci: gate release-please on green ci (#1135) (4decb0f)
  • conductor: use workspace port for Storybook (#1290) (c5ba4dc)
  • connectapi: harden message post migration (#1097) (b15fb14)
  • connectapi: harden timeline and thread read handling (#1117) (ba027fe)
  • connectrpc: cap request message size (#1102) (a773531)
  • connectrpc: reject missing read anchors (#1109) (f2f68b9)
  • core: complete service inventory metrics (#1130) (9bc89f3)
  • core: prevent read marker regressions (#1107) (cb81d58)
  • dockercompose: enable LiveKit TURN relay (#1190) (51eb5e7)
  • docs: keep release note cards in grid lanes (#1204) (a6c79df)
  • frontend: address svelte guidance review (#1154) (d8c4010)
  • frontend: align call control button colors (#1085) (4b7f37e)
  • frontend: align muted call participant icon (#1050) (68cea04)
  • frontend: clarify echo reply actions (#1253) (5a2b264)
  • frontend: clarify iOS PWA push setup (#1192) (2416a41)
  • frontend: clarify remote push notification support (#1105) (bfdbdea)
  • frontend: clear call-wide mode on notification navigation (#1291) (db09a62)
  • frontend: constrain current user card height (#1239) (1b536b9)
  • frontend: defer camera permission until enabled (#1243) (2145a95)
  • frontend: defer unread separator until return to the room (#1079) (9535694)
  • frontend: handle API auth failures gracefully (#1269) (e82c554)
  • frontend: harden asset proxy token handling (#1054) (8797c65)
  • frontend: ignore stale DM member loads when switching rooms (#1065) (b4264b7)
  • frontend: improve call presence indicators (#1257) (696a92e)
  • frontend: improve extreme image thumbnails (#1227) (d5c596d)
  • frontend: improve LiveKit media error handling (#1281) (94a86c0)
  • frontend: improve unread channel contrast (#1089) (74247b4)
  • frontend: localize date formatting (#1242) (cfc96ec)
  • frontend: make attachment remove control subtle (#1265) (6537c27)
  • frontend: make scrollbars follow selected theme (#1152) (9c5fa16)
  • frontend: polish error and missing media states (#1267) (b9dabba)
  • frontend: preserve touch composer line breaks (#1194) (8c62c70)
  • frontend: quiet console warning noise (#1280) (4df7b85)
  • frontend: reconcile notification badge dismissals (#1058) (13c7a6e)
  • frontend: reconcile PWA notification badges (#1229) (e44645e)
  • frontend: refresh messages after local deletions (#1148) (cefc22a)
  • frontend: remove redundant universal room badge (#1052) (5f6131e)
  • frontend: reset inline code state when composer clears (#1251) (0dddeaa)
  • frontend: restore circular avatars with stable presence dots (#1252) (14b15b9)
  • frontend: restore default text smoothing (#1268) (b3a6dc3)
  • frontend: restrict same-tab message links (#1068) (d43d23f)
  • frontend: restyle reply attribution preview (#1140) (909c1f4)
  • frontend: share unread marker lifecycle with threads (#1310) (07c3601)
  • frontend: show loading state for call media toggles (#1237) (9063832)
  • frontend: stabilize new messages separator (#1308) (c35ed86)
  • frontend: stabilize tab resume catch-up (#1288) (b70916d)
  • frontend: style room member search clear button (#1226) (e43f615)
  • frontend: submit simple message edits with enter (#1129) (f5651b4)
  • frontend: sync presence badge across tabs (#1301) (5fbfb22)
  • frontend: sync room thread follow bell state (#1121) (4048f23)
  • frontend: use direct ticketed asset URLs (#1312) (b41eb1d)
  • frontend: use full-width image galleries (#1247) (f5fe88a)
  • frontend: use semantic presence colors (#1259) (ccf64db)
  • frontend: wire UI strings to i18n (#1225) (7eafcd3)
  • media: preserve video aspect ratios (#1254) (8a85f0a)
  • messages: validate reply targets before posting (#1176) (2919a1a)
  • notifications: clear read notifications server-side (#1297) (c6f3c30)
  • notifications: preserve unread badge state across dismissals (#1069) (03444e3)
  • pwa: reduce service worker reload churn (#1187) (5489e47)
  • reactions: canonicalize echo reaction targets (#1272) (2b87044)
  • release: publish release before updating tap (#1298) (c5c8aa6)
  • voice: scope LiveKit observations to active calls (#1049) (dcd95c8)

Performance Improvements

  • build: improve frontend and CLI cache reuse (#1106) (f22da3a)
  • core: cache unwrapped DEKs per request (#1193) (0623831)
  • core: slim timeline projection memory (#1287) (cd026ff)
  • frontend: load room members in larger batches (#1206) (f465a09)
  • frontend: split chat code from app chrome (#1103) (4a4a4de)

Code Refactoring