-
v0.2.0
StableSome checks failedcheck-secrets / Nosey parker (push) Successful in 3sPublish release artifacts / Build + publish lets-chat-desktop binaries (push) Failing after 3scheck-secrets / Kingfisher (push) Successful in 9scheck-secrets / TruffleHog (push) Successful in 16sBuild desktop (Windows) / Build desktop (Windows x86_64) (release) Successful in 3m36sBuild desktop (Linux) / Build desktop (Linux x86_64) (release) Successful in 4m55sCheck / clippy + fmt + tests (push) Successful in 5m56sBuild desktop (Windows) / Build desktop (Windows x86_64) (push) Successful in 8m36sBuild OCI container / Build and push lets-chat (push) Successful in 12m5sBuild desktop (Linux) / Build desktop (Linux x86_64) (push) Successful in 15m16sreleased this
2026-07-23 05:41:48 +02:00 | 190 commits to main since this releaseChangelog
8bb8b6ddMerge pull request 'Release v0.2.0' (#581) from release/v0.2.0 into main
aa755a55Release v0.2.0
db192d53Merge pull request 'Reactions on thread replies, in their own id namespace (LC-595)' (#580) from feat/lc595-thread-reactions into main
120c7096feat(reactions): reactions on thread replies, in their own id namespace (LC-595)
c0960d00Merge pull request 'STT cost/load control: bounded concurrency, rate limits, scope gating (LC-592)' (#579) from feat/lc592-stt-load-control into main
a4b430f6feat(stt): bound STT concurrency, rate, and scope (LC-592)
5ca2d38dMerge pull request 'STT reliability: timeout, retry, and surfaced failure state (LC-590)' (#578) from feat/lc590-stt-reliability into main
57f5b364feat(stt): timeout, retry, and surfaced transcription failures (LC-590)
a456a957Merge pull request 'STT provider seam with native Deepgram support (LC-593)' (#577) from feat/lc593-stt-providers into main
f6207c32feat(stt): provider seam with native Deepgram support (LC-593)
31e3b434Merge pull request 'STT language + prompt hinting and real segment timestamps (LC-591)' (#576) from feat/lc591-stt-accuracy into main
c9d41fb0feat(stt): language + prompt hinting and real segment timestamps (LC-591)
299efaa5Merge pull request 'Extract the shared bus-drain and control-dispatch machinery (LC-616)' (#575) from refactor/lc616-rtc-machinery into main
5dfa68farefactor(rtc): extract the shared bus-drain and control-dispatch machinery (LC-616)
2b651922Merge pull request 'Unify the call/huddle session lifecycle across the clients (LC-613)' (#574) from refactor/lc613-converge-rtc-clients into main
2035f1b7refactor(rtc): unify the call/huddle session lifecycle across the clients (LC-613)
4788c6b0Merge pull request 'Cover the 1:1 ring and huddle WS handlers (LC-614)' (#573) from test/lc614-call-huddle-coverage into main
82b46e08test(call): cover the 1:1 ring and huddle WS handlers (LC-614)
b1181b7fMerge pull request 'Show an in-call indicator when a room has an active huddle (LC-612)' (#572) from feat/lc612-sidebar-incall into main
47c40a40feat(sidebar): show an in-call indicator when a room has an active huddle (LC-612)
cb0a98e4Merge pull request 'Carry huddle media over the SFU when LiveKit is configured (LC-610)' (#571) from feat/lc610-sfu-huddle-media into main
efb81bfffeat(huddle): carry huddle media over the SFU when LiveKit is configured (LC-610)
2aa94c7cMerge pull request 'Ring room members when a huddle starts (LC-611)' (#570) from feat/lc611-huddle-ring into main
396bee65feat(huddle): ring room members when a huddle starts (LC-611)
0694c301Merge pull request 'Mint SFU tokens for huddles, and stop stages colliding with them (LC-596)' (#569) from feat/lc596-sfu-huddle-tokens into main
ccd9649bfeat(huddle): mint SFU tokens for huddles, and stop stages colliding with them (LC-596)
aef25047Merge pull request 'Transcribe a Stage, gated to whoever holds the floor (LC-597)' (#568) from feat/lc597-stage-transcription into main
5a82f556feat(stage): transcribe a Stage, gated to whoever holds the floor (LC-597)
9e2f8b1dMerge pull request 'Tell an unkeyed build why it cannot self-update (LC-607)' (#567) from fix/lc607-updater-fails-before-network into main
08b4f0e9fix(desktop): tell an unkeyed build why it cannot self-update (LC-607)
b2456479Merge pull request 'Drop the DELETE FROM rooms crutch from the onboarding fixture (LC-603)' (#566) from test/lc603-onboarding-reachability into main
ddec0a54test(home): drop the DELETE FROM rooms crutch from the onboarding fixture (LC-603)
81f651ddMerge pull request 'Make the login-approval attempt cap atomic (LC-608)' (#565) from fix/lc587-atomic-attempt-cap into main
cc3f5835fix(auth): make the login-approval attempt cap atomic (LC-608)
3a050333Merge pull request 'Fail fast on missing psa-systems org secrets, and stop shipping the old org's update URL (LC-594)' (#564) from chore/lc594-psa-systems-ci-secrets into main
0abe6bbffix(ci): correct the package owner to psa-systems-private
ded73692chore(ci): fail fast on missing psa-systems org secrets, fix stale update URL
f602242eMerge pull request 'Gate DM Delete on the effective room role, not the org role (LC-599)' (#563) from fix/lc599-dm-delete-uses-effective-role into main
fb812cfffix(dm): gate Delete on the effective room role, not the org role
e612bb6cMerge pull request 'Scope the remaining room-visibility queries to the viewer's enclaves (LC-606)' (#562) from fix/lc606-scope-remaining-room-queries into main
cc851be1fix(db): scope the remaining room-visibility queries to the viewer's enclaves
c4c64938Merge pull request 'Run the integration tests in CI, and make the fixture check real (LC-605)' (#561) from fix/lc605-ci-runs-integration-tests into main
b242f179ci: run the integration tests, and make the fixture check real
9590fceeMerge pull request 'Scope unread inbox + dashboard queries to the viewer's enclaves (LC-604)' (#560) from fix/lc604-inbox-enclave-scoping into main
550069c2fix(inbox): scope unread queries to the viewer's enclaves
98a05c65Merge pull request 'Cover both branches of / after the LC-575 dashboard (LC-600)' (#558) from fix/lc600-home-branch-tests into main
9bbadc1cMerge pull request 'fix(auth): make login-approval consume atomic to close a TOCTOU (LC-601)' (#557) from fix/LC-601-login-approval-consume-toctou into main
dfae0903test(home): cover both branches of / after the LC-575 dashboard
b1ce19e7fix(auth): make login-approval consume atomic to close a TOCTOU (LC-601)
28352522Merge pull request 'Group the message overflow menu into scannable sections (LC-598)' (#556) from feat/lc-message-menu-grouping into main
744bfc08feat(room): group the message overflow menu into scannable sections
4018da48Merge pull request 'fix(ci): use the psa-systems package vars after the org move' (#554) from fix/ci-psa-systems-package-vars into main
67d45da6Merge pull request 'feat(auth): notify-and-approve gate for suspicious logins (LC-587)' (#555) from feat/LC-587-suspicious-login-approval into main
add21bb0feat(auth): notify-and-approve gate for suspicious logins (LC-587)
770f3cbefix(ci): use the psa-systems package vars after the org move
526b6e49Merge pull request 'Reactions that actually work, sidebar expand ribbon, huddle transcription' (#553) from feat/sidebar-collapse-ribbon into main
15edf7d6style(reactions): rustfmt the toggle_reaction insert
0b05fbccfeat(transcription): support transcription in huddles
03c8cd4ffeat(sidebar): expand the collapsed sidebar from a ribbon on the rail seam
0f34bf5cfix(reactions): atomic toggle + populate the one-tap quick-react bar
0a153a1ffeat(reactions): working emoji picker from the hover bar; conditional add-more
1b61c3ccfeat(settings): dismiss the settings page by clicking outside it or Escape
e1c66b23fix(thread): make typed text visible in the thread reply box
25557987Merge pull request 'Redesign chat UI to the prototype: rail, sidebar, panels, composer, settings' (#552) from fix/lc-576-active-row-invert into main
3d57cb17fix(composer): stop clipping the paperclip attachment icon
a8a7db56feat(thread): emoji picker for thread replies; fix attachment clipping
28cdbe33style(header): space between the # and the room name
822ec4destyle(timeline): merge adjacent mentioned messages into one accent block
9b8c5044style(composer): shrink the attachment icon so it doesn't clip
06913c8ffix(sidebar): draft indicator is an SVG pencil, not a tofu dingbat
963188bdstyle(settings): full-bleed palette preview cards
1bc3da09fix(rail): hide the profile hovercard while the account menu is open
c59ee614feat(room): close Details/Thread with an X; info toggles Details
cab27504style(composer): stopwatch glyph for the self-destruct timer
54afdc4dfeat(sidebar): render the @-mention badge on DM rows
64e5662fstyle(composer): rework the self-destruct timer into a clock popover
9624a579feat(room): header member avatar stack and correct public-room member count
49efc47estyle(settings,sidebar): 4-up palette cards; shorter search placeholder
c36ce47ffeat(dev): mock OIDC can authenticate multiple identities
5a0f29ccfeat(room,sidebar): right-column collapse, platform-aware ⌘K, search icon
df04002astyle(settings): mini-window palette preview cards
8d233a68style(thread): accent-color the replied-to name in the thread header
ed26a2fbfeat(rail): curated settings dropdown and avatar hovercard
8dd411ebstyle(details,rail): notifications dropdown chevron; accent unread badge
99ae64c7style(settings,timeline): comp-style Appearance controls; bare day divider
fb72feb0style(sidebar): add ⌘K search hint chip and focus binding
4f8c5effMerge remote-tracking branch 'origin/main' into fix/lc-576-active-row-invert
06df7325Merge pull request 'fix(auth): link bunyip_sub onto an existing verified-email account on SSO (LC-588)' (#551) from fix/LC-588-sso-email-link into main
27b1df29fix(auth): link bunyip_sub onto an existing verified-email account on SSO (LC-588)
cf67ebcdMerge pull request 'feat(auth): alert users on a new-country login (LC-580)' (#550) from feat/lc580-login-location-alerts into main
f4072213fix(auth): show the full country name in the login-location alert (LC-580)
11ee2e0afeat(auth): alert users on a new-country login (LC-580)
d498e740Merge pull request 'feat(dev): mock OIDC OP can authenticate for the local dev stack (LC-577)' (#549) from feat/lc577-mock-oidc-auth into main
1135afd6feat(dev): make the mock OIDC OP able to actually authenticate
cb0080ecMerge pull request 'feat(enclave): surface configurable enclave icon on the settings page (LC-542)' (#548) from feat/lc542-enclave-icon-settings into main
9b1b5344feat(enclave): surface configurable enclave icon on the settings page (LC-542)
fc3917cdMerge pull request 'fix(sidebar): invert glyph, draft pencil, and DM status on active row (LC-576)' (#547) from fix/lc576-active-row-invert into main
d11c96b6fix(sidebar): invert glyph, draft pencil, and DM status on active row (LC-576)
a84a1481Merge pull request 'feat(home): Home dashboard (catch-up) + "Open on" landing preference (LC-575)' (#546) from feat/lc575-home-dashboard into main
359e8f73feat(home): Home dashboard (catch-up) + "Open on" landing preference (LC-575)
6db89f97Merge pull request 'fix(i18n): correct Spanish room-details-pinned-yes to «Sí» (LC-579)' (#545) from fix/lc-579-es-pinned-yes-accent into main
6839c2ecfix(i18n): correct Spanish room-details-pinned-yes to «Sí» (LC-579)
689a055fMerge pull request 'chore(css): remove dead .lc-empty-wrap helper (LC-578)' (#544) from chore/lc-578-remove-dead-lc-empty-wrap into main
5d470673chore(css): remove dead .lc-empty-wrap helper (LC-578)
bdee3bc3feat(ui): one profile control in the rail, and rail ordering
7a83cd96feat(ui): one right column of subcards, and rail cleanup
079ad180feat(ui): restructure the sidebar and room header to the prototype
8f736f21feat(dev): make the mock OIDC OP able to actually authenticate
a270f720fix(ui): invert active-row glyphs and align thread/details/header to the prototype
5e327d68Merge pull request 'Apply the prototype new look across Let's Chat (phased)' (#539) from feat/lc-ui-port into main
850a3f5dMerge branch 'main' into feat/lc-ui-port
cee7ac0cMerge remote-tracking branch 'origin/main' into feat/lc-ui-port
1b9c193eMerge pull request 'Rewrite Phase 3 plan with verified literal pixel-match gaps' (#538) from docs/pixel-match-phase3-literal-gaps into main
0aec7dc4test(chat): regenerate message fixtures for the new row geometry
43eef075Merge branch 'main' into docs/pixel-match-phase3-literal-gaps
3bc4a417style(room): give the room-info page the prototype hero
03740847test(dev): mirror the chat surface into the theme gallery
5917e452Merge pull request 'feat(composer): one-row restructure (LC-574)' (#543) from feat/lc574-composer-onerow into main
3211d38fstyle(chat): reconcile the chat surface to the prototype
d2204602feat(composer): one-row restructure (LC-574)
c8f075f9feat(theme): server-persisted UI scaling (compact/default/large/xl)
e7dddbffMerge pull request 'feat(timeline): polish room message hierarchy (LC-558)' (#542) from feat/lc558-timeline-polish into main
33486feffeat(timeline): polish room message hierarchy (LC-558)
b120661fMerge pull request 'fix(a11y): call-button 44x44 tap targets on touch (LC-573)' (#541) from feat/lc573-call-button-tap-targets into main
a5f51a64fix(a11y): call-button 44x44 tap targets on touch (LC-573)
49acefb3Merge pull request 'feat(admin): shared page-header component (LC-572)' (#540) from feat/lc572-admin-page-header into main
385a81c2feat(admin): shared page-header component (LC-572)
07eeeb97style(theme): contrast + surface-separation fixes across all palettes
4da139eedocs(plan): rewrite Phase 3 with verified literal pixel-match gaps
4bfca656Merge pull request 'Mockup pixel-match: amethyst palette + room Details panel' (#537) from docs/lets-chat-mockup-pixel-match into main
133e242eMerge branch 'main' into docs/lets-chat-mockup-pixel-match
a770e987Merge pull request 'docs: redesign completion roadmap + LC-UI tail reconcile' (#536) from docs/LC-553-redesign-tail-roadmap into main
e6cb452ffeat(dev): mock OIDC OP so dev-web-local boots without bunyip
d2e30e67docs(lets-chat): note SSO env requirement for local boot
aeea958adocs(lets-chat): overnight progress log + morning screenshot checklist
b6cc3b99style(connection): theme the connection-status banner via tokens
5d832fe7feat(room): mount Details panel in the room right column
88b81b9afeat(room): add Details panel partial
510a3fd7feat(room): add Details panel locale keys
142c90ffrefactor(room): expose member count and pinned flag to the room page view
6ef017f1fix(theme): render amethyst on load and tint its hc-dark accent surface
9edd1d01feat(theme): show amethyst in dev theme gallery
bc94a7fffeat(theme): add amethyst swatch to settings picker
682df62efeat(theme): allow amethyst palette in backend validation
df605acctest(theme): cover amethyst palette in contrast checker
2f0e88ddfeat(theme): add amethyst violet palette tokens
c54dba37docs(lets-chat): plan the mockup pixel-match overhaul
84cf107edocs(redesign): completion roadmap + tail reconcile
14103395Merge pull request '44px touch targets on the redesign icon controls (coarse pointer)' (#535) from feat/mobile-tap-targets into main
b20f16f2feat(a11y): 44px touch targets on the redesign icon controls (coarse pointer)
a19f294bMerge pull request 'Migrate hand-rolled callout boxes to the .alert component (redesign follow-up)' (#534) from refactor/alert-component-migration into main
1491843arefactor(ui): migrate hand-rolled callout boxes to the .alert component
19e2f028Merge pull request 'LC-565: a11y regression pass - composer focus ring + phantom danger token (redesign P5)' (#533) from fix/LC-565-a11y-regression-pass into main
eda0b36ffix(a11y): composer focus ring + fix phantom danger-surface-content token (LC-565 / LC-UI-12)
350966a2Merge pull request 'LC-564: route login + welcome errors through the shared alert (redesign P5)' (#532) from feat/LC-564-entry-surface-alignment into main
046fa0dcfeat(entry): route login + welcome errors through the shared alert (LC-564 / LC-UI-11)
79a5a4c2Merge pull request 'LC-561: unify admin status indicators onto one chip vocabulary (redesign P3)' (#531) from feat/LC-561-admin-status-chips into main
82b7251efeat(admin): unify status indicators onto one status-chip vocabulary (LC-561 / LC-UI-08)
7b177512Merge pull request 'LC-557: tokenize empty-state color residuals (redesign P3)' (#530) from fix/LC-557-empty-state-residuals into main
bfbf2ebbfix(ui): tokenize empty-state color residuals (LC-557 / LC-UI-04)
b860c6d9Merge pull request 'LC-559: lift the composer onto an elevated card (redesign P2)' (#529) from feat/LC-559-composer-polish into main
0e99d2b0feat(composer): lift the composer onto an elevated card (LC-559 / LC-UI-06)
9dd20357Merge pull request 'LC-566: six-palette theme system foundation (redesign P1)' (#528) from docs/LC-541-redesign-p1-foundation into main
e0fd465cfix(theme): persist palette on select; darkMode hc-dark
8f5101a2fix(theme): repoint JS data-theme reads to data-mode
8641ce03feat(theme): add .lc-table; retune radii/shadow
b29d7d25fix(theme): HC accent AAA + max-contrast ring
1d1202d2feat(theme): dev theme/component gallery
388dcd63fix(i18n): add es keys for palette picker
b7e12fe4feat(theme): appearance picker with palette swatches
6c5f4cb9feat(theme): two-axis no-flash bootstrap (palette + mode)
ceff72f2feat(theme): add 5 palettes across light/dark/hc
fc0ee383refactor(theme): split tokens into constant + palette layers
8591825bfeat(theme): key Tailwind dark: on data-mode
4d6247d2feat(theme): sync lc-mode + lc-palette cookies cross-device
ad4ff3dafeat(theme): persist palette; rename mode cookie to lc-mode
142fefabfeat(theme): db setters for mode + palette
f8d78a35feat(theme): mode + palette accessors on User
c02de9d5feat(theme): split theme pref into mode + palette
39cb409fdocs(redesign): P1 foundation implementation plan
5c9c1b12docs(redesign): P1 foundation design spec
12da86bbMerge pull request 'fix(room): tokenize the inline edit form (LC-558)' (#527) from feat/LC-558-timeline-polish into main
bb733f94fix(room): tokenize the inline edit form so it themes correctly (LC-558 / LC-UI-05)
183d9e81Merge pull request 'feat(sidebar): dark-navy Blue Harbor sidebar + rail (LC-560)' (#526) from feat/LC-560-navy-sidebar into main
9811b614Merge pull request 'feat(css): add .alert* + layout-helper component classes (LC-555)' (#524) from feat/LC-555-alert-classes into main
08b3718bMerge remote-tracking branch 'origin/feat/LC-555-alert-classes' into feat/LC-555-alert-classes
a5ff2636Merge remote-tracking branch 'origin/main' into feat/LC-555-alert-classes
f604320efeat(sidebar): dark-navy Blue Harbor sidebar + rail in all themes (LC-560 / LC-UI-07)
21e202b1Merge pull request 'feat(css): add .lc-page-* width + layout utilities (LC-562)' (#525) from feat/LC-562-page-width-utils into main
0ef4bb19feat(css): add .lc-page-* width + layout utilities (LC-562 / LC-UI-09)
1ee70a70Merge branch 'main' into feat/LC-555-alert-classes
4c65e961feat(css): add .alert* + layout-helper component classes (LC-555 / LC-UI-02)
e5a7dcb9Merge pull request 'feat(css): add --sidebar-* chrome tokens (LC-554 phase 1b)' (#523) from feat/LC-554-sidebar-tokens into main
73a15b8efeat(css): add --sidebar-* chrome tokens for all four themes (LC-554 phase 1b)
c2d94d36Merge pull request 'feat(css): Blue Harbor semantic-token retune (LC-554 phase 1a)' (#522) from feat/LC-554-blue-harbor-tokens into main
ea4326f0feat(css): retune semantic tokens to Blue Harbor (LC-554 phase 1a)
8fcc6da4Merge pull request 'feat(enclave): graduated member trust + posting gate (LC-551)' (#521) from feat/LC-551-trust-levels into main
bb017eedtest(routes): graduated member trust coverage (LC-551)
1591c009feat(enclave): trust pill + manual promote in the member list (LC-551)
37014a60feat(room): gate new-member posting rate and auto-graduate on send (LC-551)
8a05b362feat(db): enclave member trust column + graduation helpers (LC-551)
dacdab02Merge pull request 'feat(markdown): mermaid diagram rendering (LC-550)' (#520) from feat/LC-550-mermaid-diagrams into main
e1269660feat(assets): vendored mermaid + lazy-loading diagram enhancement (LC-550)
0d28e860feat(markdown): render ```mermaid fences as diagram containers (LC-550)
209014bbMerge pull request 'feat(search): semantic / related-message search (LC-549)' (#519) from feat/LC-549-semantic-search into main
0fdb724ftest(routes): related + semantic search integration coverage (LC-549)
cf447c29i18n: related-search and semantic-toggle strings (LC-549)
9baa892cfeat(search): opt-in semantic search mode that degrades to FTS (LC-549)
f0a8a4f8feat(search): "Find related" messages backed by embeddings (LC-549)
8533adb2feat(state): wire embeddings client into AppState + config (LC-549)
52135426feat(db): message_embeddings sidecar table + storage and by-ids fetch (LC-549)
de5254acfeat(embeddings): operator embeddings client with cosine + serde helpers (LC-549)
d8afed98Merge pull request 'feat(messages): AI suggested replies (LC-548)' (#518) from feat/LC-548-suggest-reply into main
69142aa2test(routes): integration coverage for suggested replies (LC-548)
5edc37b5i18n(room): suggested-reply menu label and panel heading (LC-548)
0d7318d3feat(ui): suggest-reply chips in the message menu, applied via the composer panel (LC-548)
b8cc9c14feat(routes): AI suggested-reply endpoint with chip parser (LC-548)
5984b9a8Merge pull request 'feat(error): friendlier generic error page (LC-552)' (#517) from feat/LC-552-friendly-error-page into main
a89fc0c0feat(error): redesign the generic error page, hide only internal detail (LC-552)
2edec3c3i18n(error): friendly per-status error-page descriptions (LC-552)
2778e292Merge pull request 'feat(messages): ephemeral / self-destruct messages (LC-547)' (#516) from feat/LC-547-ephemeral-messages into main
e3f5e06ftest(messages): sweep + composer coverage for ephemeral messages (LC-547)
1361417bfeat(composer): self-destruct timer select wired into post_message (LC-547)
53bf6731feat(messages): schedule the unconditional ephemeral sweeper (LC-547)
61c3fb87feat(retention): unconditional sweep for expired ephemeral messages (LC-547)
fba7631cfeat(messages): expires_at column + TTL parsing for self-destruct (LC-547)
361ba0bcMerge pull request 'feat(threads): per-thread mute (LC-546)' (#515) from feat/LC-546-per-thread-mute into main
48c10000test(threads): db + route coverage for per-thread mute (LC-546)
296e9102feat(threads): mute toggle route, button, and thread-panel wiring (LC-546)
ef610ee2feat(threads): suppress muted followers from thread reply fan-out (LC-546)
e9b81d91feat(threads): thread_muters table + data layer (LC-546)
e15e58b9Merge pull request 'chore(repo): publish-readiness sanitization sweep (LC-521)' (#514) from chore/LC-521-publish-sanitization into main
f009947cchore(ci): drop trufflehog --exclude-paths and the empty exclude file (LC-521)
c2d89992chore(repo): publish-readiness sanitization sweep (LC-521)
0c607396Merge pull request 'fix(enclave): friendly redirect for invalid/revoked invite code (LC-544)' (#513) from fix/LC-544-friendly-invalid-invite-code into main
fa92f0aetest(enclave): assert discover renders the invalid-invite-code banner (LC-544)
28ef74f6fix(enclave): friendly redirect for invalid/revoked invite code (LC-544)
627935c8Merge pull request 'feat(uploads): accessible image alt text (LC-537)' (#512) from feat/LC-537-image-alt-text into main
ab1090b6test(uploads): alt-text round-trip + author-gated editor route (LC-537)
31a0ce0cfeat(uploads): author alt-text editor with live re-render (LC-537)
4c12202bfeat(uploads): store image alt text (LC-537)
14772e09Merge pull request 'feat(stats): personal member-stats recap page (LC-536)' (#511) from feat/LC-536-member-stats into main
8a10f798test(stats): member_stats aggregation + /stats page render (LC-536)
2d747528feat(stats): personal stats recap page at /stats (LC-536)
6c7a0e5bfeat(stats): personal member-stats aggregation (LC-536)
ead0527dMerge pull request 'feat(profile): pronouns, links & local time on profiles (LC-533)' (#510) from feat/LC-533-profile-extras into main
ff965166test(profile): profile-extras round-trip + hovercard privacy gate (LC-533)
7939228afeat(profile): show pronouns, links, local time on the hovercard (LC-533)
61bff2c6feat(profile): edit pronouns, links, timezone in settings (LC-533)
b1e1315afeat(profile): pronouns, links, timezone columns + model plumbing (LC-533)
2184b50aMerge pull request 'feat(mute): auto-expiring timed mutes (LC-535)' (#509) from feat/LC-535-timed-mutes into main
f71dee54test(mute): expiry sweep lifts past mutes, spares permanent and future (LC-535)
d6492bbbfeat(mute): timed-mute duration picker in the admin user table (LC-535)
4e0c9d60feat(mute): honour mute expiry at every posting gate (LC-535)
0189ef34feat(mute): auto-expiring timed-mute core (LC-535)
7c46cabfMerge pull request 'feat(branding): standardize "Let's Chat" display name; guard tab title (LC-538)' (#508) from feat/LC-538-standardize-name-casing into main
2de2c5d3feat(branding): standardize "Let's Chat" display name; guard tab title (LC-538)
e4e25189Merge pull request 'feat(room): per-channel slowmode (LC-534)' (#507) from feat/LC-534-slowmode into main
d6662ee9test(slowmode): end-to-end enforcement, off, and mod-exempt (LC-534)
8d3e2a64feat(slowmode): room-manage control to set the cooldown (LC-534)
0f11e577feat(slowmode): enforce per-channel slowmode in post_message (LC-534)
077ccbbafeat(slowmode): rooms.slowmode_seconds column + cooldown limiter (LC-534)
5629c7ebMerge pull request 'feat(compose): AI writing assistant in the composer (LC-532)' (#506) from feat/LC-532-composer-ai-assist into main
07089ce9test(compose): end-to-end AI-assist happy path + gates (LC-532)
30f0e596feat(compose): wire the AI-assist button, panel slot, and apply/dismiss (LC-532)
168597f0feat(compose): AI writing-assistant endpoint + result panel (LC-532)
885c33e9Merge pull request 'feat(kudos): per-user opt-out of the leaderboard (LC-526 follow-up)' (#505) from feat/LC-526-kudos-optout into main
5fdc4387test(kudos): cover leaderboard exclusion of opted-out users (LC-526)
81f25c0afeat(kudos): settings toggle to opt out of the leaderboard (LC-526)
844858f4feat(kudos): exclude opted-out users from the leaderboard (LC-526)
03d5d5f6feat(kudos): users.kudos_leaderboard_opt_out column + accessors (LC-526)
ab1df775Merge pull request 'feat(kudos): /kudos recognition command + leaderboard (LC-526)' (#504) from feat/LC-526-kudos into main
566f1aa9test(kudos): cover leaderboard ranking, enclave scoping, window (LC-526)
2702495afeat(kudos): leaderboard page + sidebar nav entry (LC-526)
8372010cfeat(kudos): /kudos slash command that records + posts recognition (LC-526)
0f924184feat(kudos): kudos table + leaderboard aggregate db layer (LC-526)
dc46e5dcMerge pull request 'feat(search): has:file / has:link / in:thread operators (LC-530)' (#503) from feat/LC-530-search-filters into main
aad0af9ftest(search): cover has:file / has:link / in:thread filters (LC-530)
3ae1ca4cfeat(search): parse and wire has:file / has:link / in:thread operators (LC-530)
24827e97feat(search): add has:file / has:link / in:thread filter columns (LC-530)
2719e326Merge pull request 'feat(room): reaction highlights recap page (LC-529)' (#502) from longjacksonle/feat/LC-529-reaction-highlights into main
748e74f1feat(room): reaction highlights recap page (LC-529)
966a8b61Merge pull request 'feat(transcripts): trackable follow-up tasks from call action items (LC-527)' (#501) from longjacksonle/feat/LC-527-followup-tasks into main
82c47fb4feat(transcripts): trackable follow-up tasks from call action items (LC-527)
1362110bMerge pull request 'feat(room): read a message aloud via browser speech synthesis (LC-528)' (#500) from longjacksonle/feat/LC-528-read-aloud-messages into main
0189663cfeat(room): read a message aloud via browser speech synthesis (LC-528)
0d5ea0baMerge pull request 'feat(enclave): remove default enclave, prompt to create when none (LC-516)' (#499) from feat/LC-516-remove-default-enclave into main
7031e2eefix(enclave): guard disabled bots, cap name, drop redundant home query
630f4112feat(enclave): remove default enclave, prompt to create when none
369afb83Merge pull request 'ci: guard migration immutability against sqlx checksum drift' (#498) from feat/LC-515-migration-immutability-guard into main
d3705be8ci: guard migration immutability against sqlx checksum drift
44c766cdMerge pull request 'test(auth): reconcile db_sessions with LC-514 hashed session id' (#497) from fix/LC-520-db-sessions-hashed-id-tests into main
5a6a8a04test(auth): reconcile db_sessions with LC-514 hashed session id
b271392dMerge pull request 'fix(auth): [operator-action] hash session tokens at rest' (#496) from fix/LC-514-sessions-hash-at-rest into main
18967022fix(auth): [operator-action] hash session tokens at rest
79baa64fMerge pull request 'feat(wiki): live wiki-editing presence banner (LC-498)' (#495) from feat/LC-498-wiki-editing-presence into main
fdf001fefeat(wiki): live "X is editing the wiki" banner on the About page (LC-498)
4a66642cfeat(wiki): WS frame + render fragments for editing presence (LC-498)
5106f731feat(wiki): ephemeral wiki-editing presence in the hub (LC-498)
05969ccfMerge pull request 'feat(clips): async video clips with transcription [operator-action] (LC-496)' (#494) from feat/LC-496-video-clips into main
7c045e95test+docs(clips): clip transcription coverage + STT env note (LC-496)
592e5eedi18n(clips): en + es strings for the clip recorder (LC-496)
981364f5feat(clips): in-composer camera/screen recorder (LC-496)
68138e38feat(clips): transcribe video clips via the STT endpoint [operator-action] (LC-496)
804e6865feat(clips): inlineDownloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)