1.18.0 (2026-07-29)
Features
- dot the reminders glyph while reminders are pending (#977) (f2340d5)
- filter search results to messages with attachments (has:file facet) (#975) (70076e1)
- focus the notification rail with F6 (#1010) (1c5bf7f)
- keep composer uploads running when you leave a channel (#1050) (e8d7ba6)
- pin navigation destinations to a desktop rail and a mobile tab bar (#947) (c10f318)
- prompt a newly registered user to create a passkey (#923) (cd54d22)
- prune security events and purge expired data-export archives (#918) (a26a7d0)
- raise the composer tray and banner controls to 44pt on touch (#1011) (4058380)
- redesign toasts as a shared ink-slab rail (#1004) (24416a1)
- reminders as a pinned destination with grouped rows and inline done (#961) (3e287c5)
- replace the landing page mockup with captures of the real shell (#1014) (df27a78)
- retry queued sends from the failure toast (#1007) (5e5d25c)
- search as a pinned destination in the dock panel (#966) (0b0db58)
- the You destination as a rail popover, a mobile tab, and one shared menu (#967) (0a735ee)
- threads as a pinned destination with an unread filter and mark all read (#960) (90649d7)
- undo a forward from its confirmation toast (#1008) (2b81802)
- whitelabel the instance name, mark, icons and manifest (#1012) (d05e067)
- workspace sheet, + New menu, and cross-workspace unread on the rail (#958) (91bdc2d)
Bug Fixes
- allow the vite dev server as a font source in hot mode (#929) (e0fec4e)
- build queue-broadcasts from source instead of pulling it from GHCR (#1045) (ee2ed7f)
- format the bots rack's last-post stamp against the locale, not the zone (#1041) (207ad7f)
- four pre-existing composer defects surfaced by the #981 split (#1038) (5daa057)
- hold the pins panel row together at any label width (#1036) (7b2c802)
- keep a client-side URL write from being swallowed by a concurrent response (#997) (3597f07)
- keep a team reachable when its name slugs to nothing (#925) (a439e99)
- keep the paused card readable when its pill label runs long (#933) (5d78f96)
- keep the teams pages still when a validation error appears (#922) (4813cb6)
- keep the toast rail off the composer under the dev server (#1054) (73f6ae0)
- keep the worktree bootstrap's output off stdout (#1048) (6c2809c)
- make the search facet pickers proper comboboxes (#945) (52e58f1)
- name the workspace settings page's icon-only controls (#1039) (b07ce44)
- paint the reminder nudge from the slab's own colour tokens (#1037) (39d0b66)
- patch the OS packages the published image inherits from its base (#973) (f4d6f86)
- reject private and reserved hosts as web push endpoints (#926) (b3a73b9)
- restore a thread root's follow and unread state when the reply fails (#1046) (2d174b0)
- return focus to the control that opened a dialog when it closes (#935) (e9adf1c)
- schedule the workspace audit-log retention sweep (#934) (b131be1)
- stop the browser suite's in-process server dropping assets on a reused connection (#953) (cff1a89)
- survive an unreachable apt mirror during the worktree Playwright install (#1044) (3e94c99)
Performance
Code Refactoring
- drop terminal full stops from toast copy (#1002) (983b447)
- extract the composer's surfaces out of MessageComposer.vue (#1017) (4e67e78)
- extract the conversation list out of MainLayout.vue (#996) (5c5ce25)
- route every toast through a useToast composable (#1000) (83469fc)
- split ChannelMasthead.vue (#1028) (5524fe0)
- split MessageList.vue (#1018) (4bb6260)
- split QuickSwitcher.vue (#1031) (a79c6d4)
- split the audit exports page (pages/teams/AuditExports.vue) (#1032) (995c73a)
- split the bot integration page into racks and dialogs (#1025) (6cd2a5a)
- split the channel page (pages/channels/Show.vue) (#1024) (a4da616)
- split the integrations index page (#1022) (e97483e)
- split the user groups page (pages/teams/Groups.vue) (#1030) (a5dfcaf)
- split the workspace analytics page into sections (#1029) (e3db019)
- split the workspace settings page into sections (#1020) (1eed152)
- split useAttachmentUploads.test.ts (#1034) (887b2c7)
- split useMessageActions into one composable per action group (#1027) (bc968f5)
- split UserStatusDialog.vue (#1033) (e05800b)
This PR was generated with Release Please. See documentation.
📦 Docker image
This release is published to the GitHub Container Registry:
ghcr.io/deskhq/the-desk:1.18.0
Pin by digest for a reference that cannot move, and verify the image was built by this repository:
ghcr.io/deskhq/the-desk@sha256:7a361a03ce6711f5be04358c9fab5c796e4b7025268e32e31ea631516a67f38b
gh attestation verify oci://ghcr.io/deskhq/the-desk@sha256:7a361a03ce6711f5be04358c9fab5c796e4b7025268e32e31ea631516a67f38b --repo deskhq/the-desk
Pull it directly or browse the package page. See the upgrade guide for self-hosting steps.