Releases: wolvesdotink/owlat
Release list
v0.4.4
Owlat v0.4.4
Self-hosted server
From the admin dashboard → Settings → System & Updates → "Update now", or:
owlat upgrade --version 0.4.4Manual upgrade (fetch compose + SHA256, verify, apply):
curl -fsSL https://github.com/wolvesdotink/owlat/releases/download/v0.4.4/docker-compose-0.4.4.yml -o docker-compose.yml
curl -fsSL https://github.com/wolvesdotink/owlat/releases/download/v0.4.4/docker-compose-0.4.4.yml.sha256 -o docker-compose.yml.sha256
sha256sum -c <(sed "s|docker-compose-0.4.4.yml|docker-compose.yml|" docker-compose.yml.sha256)
docker compose pull && docker compose up -d
docker compose --profile deploy run --rm convex-deployDesktop app
Download the installer for your OS from the assets below (macOS .dmg,
Windows .msi/.exe, Linux .AppImage/.deb). Existing installs
auto-update to this version.
Supply-chain verification (recommended)
cosign verify ghcr.io/wolvesdotink/web:0.4.4 \
--certificate-identity-regexp "https://github.com/wolvesdotink/owlat/.github/workflows/.*@.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com"
gh attestation verify docker-compose.yml --repo wolvesdotink/owlatImages: web, mta, updater, convex-deploy, imap, mail-sync, code-worker, setup — all ghcr.io/wolvesdotink/<name>:0.4.4
What's Changed
Other Changes
- Release pipeline follow-ups from #551: e2e install gate, digest pinning, loud installer failures, runbook by @marcelxpfeifer in #555
- UX plan C: Email builder — keyboard, canvas a11y, alt nudge, plain text, version history by @marcelxpfeifer in #557
- UX improvement plan: all nine themes (identity, builder, half-features, onboarding, deliverability, i18n, mobile, a11y, dark mode) by @marcelxpfeifer in #566
- i18n: full coverage — app, marketing site, and docs in English and German by @marcelxpfeifer in #567
- Close the adoption gaps: external-mail AI drafting, in-app service apply, review-queue ergonomics, offline outbox, PGP signature verification by @marcelxpfeifer in #568
- Probe clamdcheck.sh in the ClamAV healthcheck (unblocks the v0.4.4 release) by @marcelxpfeifer in #571
- Unblock the v0.4.4 release e2e gate: idle worker heartbeat + seeded-leg ClamAV override by @marcelxpfeifer in #572
Full Changelog: v0.4.3...v0.4.4
v0.4.3
Owlat v0.4.3
Self-hosted server
From the admin dashboard → Settings → System & Updates → "Update now", or:
owlat upgrade --version 0.4.3Manual upgrade (fetch compose + SHA256, verify, apply):
curl -fsSL https://github.com/wolvesdotink/owlat/releases/download/v0.4.3/docker-compose-0.4.3.yml -o docker-compose.yml
curl -fsSL https://github.com/wolvesdotink/owlat/releases/download/v0.4.3/docker-compose-0.4.3.yml.sha256 -o docker-compose.yml.sha256
sha256sum -c <(sed "s|docker-compose-0.4.3.yml|docker-compose.yml|" docker-compose.yml.sha256)
docker compose pull && docker compose up -d
docker compose --profile deploy run --rm convex-deployDesktop app
Download the installer for your OS from the assets below (macOS .dmg,
Windows .msi/.exe, Linux .AppImage/.deb). Existing installs
auto-update to this version.
Supply-chain verification (recommended)
cosign verify ghcr.io/wolvesdotink/web:0.4.3 \
--certificate-identity-regexp "https://github.com/wolvesdotink/owlat/.github/workflows/.*@.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com"
gh attestation verify docker-compose.yml --repo wolvesdotink/owlatImages: web, mta, updater, convex-deploy, imap, mail-sync, code-worker, setup — all ghcr.io/wolvesdotink/<name>:0.4.3
What's Changed
Other Changes
- Make the OS-aware download button the marketing site's primary CTA by @marcelxpfeifer in #549
- fix(desktop): keep AppKit assertions in the accent-frame paint from aborting the app by @marcelxpfeifer in #550
- fix: make the self-host release installable from its release artifacts by @marcelxpfeifer in #553
- Design: align the app with the marketing site (plus desktop icon fix) by @marcelxpfeifer in #552
Full Changelog: v0.4.2...v0.4.3
v0.4.2
Owlat v0.4.2
Self-hosted server
From the admin dashboard → Settings → System & Updates → "Update now", or:
owlat upgrade --version 0.4.2Manual upgrade (fetch compose + SHA256, verify, apply):
curl -fsSL https://github.com/wolvesdotink/owlat/releases/download/v0.4.2/docker-compose-0.4.2.yml -o docker-compose.yml
curl -fsSL https://github.com/wolvesdotink/owlat/releases/download/v0.4.2/docker-compose-0.4.2.yml.sha256 -o docker-compose.yml.sha256
sha256sum -c <(sed "s|docker-compose-0.4.2.yml|docker-compose.yml|" docker-compose.yml.sha256)
docker compose pull && docker compose up -d
docker compose --profile deploy run --rm convex-deployDesktop app
Download the installer for your OS from the assets below (macOS .dmg,
Windows .msi/.exe, Linux .AppImage/.deb). Existing installs
auto-update to this version.
Supply-chain verification (recommended)
cosign verify ghcr.io/wolvesdotink/web:0.4.2 \
--certificate-identity-regexp "https://github.com/wolvesdotink/owlat/.github/workflows/.*@.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com"
gh attestation verify docker-compose.yml --repo wolvesdotink/owlatImages: web, mta, updater, convex-deploy, imap, mail-sync, code-worker, setup — all ghcr.io/wolvesdotink/<name>:0.4.2
What's Changed
Other Changes
- Design refresh: light-first system, new landing page, platform-aware download by @marcelxpfeifer in #533
- Read the independence screen off whether a relay exists, not off whether exactly one does by @marcelxpfeifer in #526
- docs(adr): record the deliverability ramp controller (AIMD on two actuators) by @marcelxpfeifer in #523
- Gate 5: the scheduled transactional/automation seed probe by @marcelxpfeifer in #530
- Make the dashboard's verdict the controller's verdict, over the controller's window by @marcelxpfeifer in #531
- Delete the parallel seed-corroboration route (getGateVerdict) by @marcelxpfeifer in #524
- Tell an unreadable lease apart from an expired one, and stop it spending the ramp's governance budget by @marcelxpfeifer in #527
- Give gate 2's block clause a producer: classified SMTP responses per cell and arm by @marcelxpfeifer in #532
- Delete the SNDS gate and the confidence note, then ask every Convex entry point whether anything can start it by @marcelxpfeifer in #529
- Remove the test-only seed placement gate by @marcelxpfeifer in #535
- Remove the orphaned contact-count reconcile entry by @marcelxpfeifer in #536
- Complete seams and pluggability architecture by @marcelxpfeifer in #537
- feat: streamline the role-aware dashboard UI by @marcelxpfeifer in #546
- chore(deps): update Dependabot packages by @marcelxpfeifer in #547
- fix: resolve all orphaned Convex entry points by @marcelxpfeifer in #548
Full Changelog: v0.4.1...v0.4.2
v0.4.1
Owlat v0.4.1
Self-hosted server
From the admin dashboard → Settings → System & Updates → "Update now", or:
owlat upgrade --version 0.4.1Manual upgrade (fetch compose + SHA256, verify, apply):
curl -fsSL https://github.com/wolvesdotink/owlat/releases/download/v0.4.1/docker-compose-0.4.1.yml -o docker-compose.yml
curl -fsSL https://github.com/wolvesdotink/owlat/releases/download/v0.4.1/docker-compose-0.4.1.yml.sha256 -o docker-compose.yml.sha256
sha256sum -c <(sed "s|docker-compose-0.4.1.yml|docker-compose.yml|" docker-compose.yml.sha256)
docker compose pull && docker compose up -d
docker compose --profile deploy run --rm convex-deployDesktop app
Download the installer for your OS from the assets below (macOS .dmg,
Windows .msi/.exe, Linux .AppImage/.deb). Existing installs
auto-update to this version.
Supply-chain verification (recommended)
cosign verify ghcr.io/wolvesdotink/web:0.4.1 \
--certificate-identity-regexp "https://github.com/wolvesdotink/owlat/.github/workflows/.*@.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com"
gh attestation verify docker-compose.yml --repo wolvesdotink/owlatImages: web, mta, updater, convex-deploy, imap, mail-sync, code-worker, setup — all ghcr.io/wolvesdotink/<name>:0.4.1
What's Changed
Other Changes
- Mailchimp Transactional (Mandrill) send provider with measured migration to the own MTA by @marcelxpfeifer in #521
Full Changelog: v0.4.0...v0.4.1
v0.3.3
Owlat v0.3.3
Self-hosted server
From the admin dashboard → Settings → System & Updates → "Update now", or:
owlat upgrade --version 0.3.3Manual upgrade (fetch compose + SHA256, verify, apply):
curl -fsSL https://github.com/wolvesdotink/owlat/releases/download/v0.3.3/docker-compose-0.3.3.yml -o docker-compose.yml
curl -fsSL https://github.com/wolvesdotink/owlat/releases/download/v0.3.3/docker-compose-0.3.3.yml.sha256 -o docker-compose.yml.sha256
sha256sum -c <(sed "s|docker-compose-0.3.3.yml|docker-compose.yml|" docker-compose.yml.sha256)
docker compose pull && docker compose up -d
docker compose --profile deploy run --rm convex-deployDesktop app
Download the installer for your OS from the assets below (macOS .dmg,
Windows .msi/.exe, Linux .AppImage/.deb). Existing installs
auto-update to this version.
Supply-chain verification (recommended)
cosign verify ghcr.io/wolvesdotink/web:0.3.3 \
--certificate-identity-regexp "https://github.com/wolvesdotink/owlat/.github/workflows/.*@.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com"
gh attestation verify docker-compose.yml --repo wolvesdotink/owlatImages: web, mta, updater, convex-deploy, imap, mail-sync, code-worker, setup — all ghcr.io/wolvesdotink/<name>:0.3.3
What's Changed
Other Changes
- Connect an external IMAP account as a shared team inbox in one motion by @marcelxpfeifer in #347
- feat(desktop): add "Check for Updates…" menu bar item by @marcelxpfeifer in #365
- feat(desktop): settings surface that works without a workspace by @marcelxpfeifer in #367
- ci: cache, affected-only, shard, and remote-cache the test pipeline by @marcelxpfeifer in #370
- fix(web): repair bash syntax error in fetch-owlat provisioning script by @marcelxpfeifer in #379
Full Changelog: v0.3.2...v0.3.3
v0.3.2
Owlat v0.3.2
Self-hosted server
From the admin dashboard → Settings → System & Updates → "Update now", or:
owlat upgrade --version 0.3.2Manual upgrade (fetch compose + SHA256, verify, apply):
curl -fsSL https://github.com/wolvesdotink/owlat/releases/download/v0.3.2/docker-compose-0.3.2.yml -o docker-compose.yml
curl -fsSL https://github.com/wolvesdotink/owlat/releases/download/v0.3.2/docker-compose-0.3.2.yml.sha256 -o docker-compose.yml.sha256
sha256sum -c <(sed "s|docker-compose-0.3.2.yml|docker-compose.yml|" docker-compose.yml.sha256)
docker compose pull && docker compose up -d
docker compose --profile deploy run --rm convex-deployDesktop app
Download the installer for your OS from the assets below (macOS .dmg,
Windows .msi/.exe, Linux .AppImage/.deb). Existing installs
auto-update to this version.
Supply-chain verification (recommended)
cosign verify ghcr.io/wolvesdotink/web:0.3.2 \
--certificate-identity-regexp "https://github.com/wolvesdotink/owlat/.github/workflows/.*@.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com"
gh attestation verify docker-compose.yml --repo wolvesdotink/owlatImages: web, mta, updater, convex-deploy, imap, mail-sync, code-worker, setup — all ghcr.io/wolvesdotink/<name>:0.3.2
What's Changed
Other Changes
- Make macOS Gatekeeper handling first-class: CI signing verification, unsigned-build warnings, docs by @marcelxpfeifer in #349
- fix(desktop): boot into the app, not the marketing landing page by @marcelxpfeifer in #352
Full Changelog: v0.3.0...v0.3.2
v0.3.0
Owlat v0.3.0
Self-hosted server
From the admin dashboard → Settings → System & Updates → "Update now", or:
owlat upgrade --version 0.3.0Manual upgrade (fetch compose + SHA256, verify, apply):
curl -fsSL https://github.com/wolvesdotink/owlat/releases/download/v0.3.0/docker-compose-0.3.0.yml -o docker-compose.yml
curl -fsSL https://github.com/wolvesdotink/owlat/releases/download/v0.3.0/docker-compose-0.3.0.yml.sha256 -o docker-compose.yml.sha256
sha256sum -c <(sed "s|docker-compose-0.3.0.yml|docker-compose.yml|" docker-compose.yml.sha256)
docker compose pull && docker compose up -d
docker compose --profile deploy run --rm convex-deployDesktop app
Download the installer for your OS from the assets below (macOS .dmg,
Windows .msi/.exe, Linux .AppImage/.deb). Existing installs
auto-update to this version.
Supply-chain verification (recommended)
cosign verify ghcr.io/wolvesdotink/web:0.3.0 \
--certificate-identity-regexp "https://github.com/wolvesdotink/owlat/.github/workflows/.*@.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com"
gh attestation verify docker-compose.yml --repo wolvesdotink/owlatImages: web, mta, updater, convex-deploy, imap, mail-sync, code-worker, setup — all ghcr.io/wolvesdotink/<name>:0.3.0
What's Changed
Other Changes
- feat(ui): micro-interaction kit — hover-reveal, spring press, stagger, ticker by @marcelxpfeifer in #180
- docs: progressive-disclosure standard + PR checklist item by @marcelxpfeifer in #181
- feat(ui): FF chart kit — UiTrendChart, UiSparkline, UiStatTile, UiBars by @marcelxpfeifer in #182
- refactor(web): one meaning per word — Team Inbox, All activity, subscription topics by @marcelxpfeifer in #183
- feat(postbox): labeled segmented view-mode control with server persistence by @marcelxpfeifer in #184
- feat(web): human trust language for agent confidence + self-check flags by @marcelxpfeifer in #186
- refactor(web): shared AgentTaskCard system for Reply Queue + Review Queue by @marcelxpfeifer in #187
- feat(postbox): Today view — the focused default inbox landing surface by @marcelxpfeifer in #188
- feat(postbox): centered reader overlay + keyboard flow for the Today view by @marcelxpfeifer in #189
- feat(postbox): Daily Brief card by @marcelxpfeifer in #190
- feat(marketing): re-add bento grid micro-animations by @marcelxpfeifer in #192
- feat(web): auto-advance task flow for both agent queues by @marcelxpfeifer in #191
- chore(marketing): remove the TrustBar highlights strip by @marcelxpfeifer in #193
- refactor(postbox): one AI home in the thread reader by @marcelxpfeifer in #194
- feat(postbox): resizable composer popups + dock + focus compose by @marcelxpfeifer in #195
- feat(inbox): unified status chip + team snooze by @marcelxpfeifer in #196
- feat(inbox): thread presence — who is viewing, who is replying by @marcelxpfeifer in #197
- feat(inbox): soft-hold on send/approve while a teammate is replying by @marcelxpfeifer in #198
- refactor(convex): reduce unbounded .collect()/.filter() and make the gate honest by @marcelxpfeifer in #199
- feat(inbox): actionable All-activity feed + guided empty state by @marcelxpfeifer in #202
- refactor(web): IA — the Send section (campaigns, automations, transactional, templates) by @marcelxpfeifer in #203
- feat(inbox): Team Inbox rows on Postbox row DNA + per-user unread by @marcelxpfeifer in #200
- feat(inbox): filter pills, needs-attention sort, URL state for Team Inbox by @marcelxpfeifer in #205
- feat(inbox): assignment people notice — avatar picker, assign-to-me, notify by @marcelxpfeifer in #206
- refactor(web): IA — first-class Delivery section with live health dot by @marcelxpfeifer in #204
- refactor(campaigns): 3-step wizard — Setup, Content, Review (A/B opt-in) by @marcelxpfeifer in #207
- feat(web): global Cmd-K across email objects by @marcelxpfeifer in #208
- chore(deps): bump better-auth to patched 1.6.x (GHSA-86j7-9j95-vpqj) by @marcelxpfeifer in #211
- feat(desktop): redesign app icon with brand background by @marcelxpfeifer in #210
- feat(desktop): per-workspace accent frame + derived tints by @marcelxpfeifer in #214
- feat(web): sidebar hide (Cmd-) + hover-peek overlay by @marcelxpfeifer in #215
- feat(desktop): macOS traffic lights follow the sidebar by @marcelxpfeifer in #216
- feat(desktop): workspace switching — visible, instant-feeling by @marcelxpfeifer in #218
- feat(desktop): reply-from-notification, compose quick action, compose window memory + spring by @marcelxpfeifer in #219
- feat(audience): Suppressions under Audience + inline "why no mail?" answer by @marcelxpfeifer in #213
- feat: instance-level migrationMode flag (default off) by @marcelxpfeifer in #222
- feat(api): per-user onboarding state (userOnboarding table) by @marcelxpfeifer in #220
- feat(api): SES bounce & complaint feedback loop via SNS by @marcelxpfeifer in #225
- feat(campaigns): one command center replaces index/all/reports by @marcelxpfeifer in #209
- feat(campaigns): report redesign on the chart kit + A/B fold-in by @marcelxpfeifer in #228
- feat(delivery): the health hub — verdict, trends, domains, thresholds by @marcelxpfeifer in #212
- feat(desktop): a titlebar that earns its pixels by @marcelxpfeifer in #217
- refactor(desktop): remove the menu-bar tray icon — close means quit, dock badge for unread by @marcelxpfeifer in #223
- feat(api): campaignSenders table + send-time enforcement by @marcelxpfeifer in #226
- feat(web): invite flow — copyable link, resend, mailbox reserved by default by @marcelxpfeifer in #224
- feat(api): generic SMTP relay send-provider adapter by @marcelxpfeifer in #227
- feat(api): shared-mailbox membership model (mailboxMembers + access choke point) by @marcelxpfeifer in #221
- feat(web): admin "Campaign senders" settings page + custom-sender toggle by @marcelxpfeifer in #230
- feat(web): team page redesign — members table, roles at point of choice by @marcelxpfeifer in #231
- feat: create a team inbox + manage its members by @marcelxpfeifer in #232
- feat(web): SMTP relay in the setup wizard with provider presets by @marcelxpfeifer in #233
- feat(web): one Sending surface — transport card + guided switch by @marcelxpfeifer in #235
- feat(web): first-login welcome flow + resumable per-user checklist by @marcelxpfeifer in #236
- feat(web): campaign wizard sender picker replaces free-text from-fields by @marcelxpfeifer in #238
- feat(web): team inboxes in the Postbox — sidebar, shared read state, stale-reply guard by @marcelxpfeifer in #239
- feat: invite someone straight into a team inbox by @marcelxpfeifer in #237
- feat(web): one import wizard for every provider (Gmail + generic IMAP unified) by @marcelxpfeifer in #240
- feat: open campaigns to editors (guardrail now exists) by @marcelxpfeifer in #241
- feat: send-as choice — reply as the team or as yourself by @marcelxpfeifer in #242
- feat(desktop): draw the workspace accent frame in the native macOS window by @marcelxpfeifer in #229
- feat(web): the fresh-start path — the default welcome by @marcelxpfeifer in #243
- feat(web): move Audience below Send in the sidebar by @marcelxpfeifer in #244
- feat: post-import "switch your sending" prompt (outbound-only, gated) by @marcelxpf...
Owlat Desktop desktop-v0.3.1
Owlat Desktop v0.3.1
Desktop-only release. Download the installer for your OS from the
assets below (macOS .dmg, Windows .msi/.exe, Linux
.AppImage/.deb). Existing installs auto-update to this version.
What's Changed
Other Changes
- Make macOS Gatekeeper handling first-class: CI signing verification, unsigned-build warnings, docs by @marcelxpfeifer in #349
Full Changelog: v0.3.0...desktop-v0.3.1
v0.2.1
Owlat v0.2.1
Self-hosted server
From the admin dashboard → Settings → System & Updates → "Update now", or:
owlat upgrade --version 0.2.1Manual upgrade (fetch compose + SHA256, verify, apply):
curl -fsSL https://github.com/wolvesdotink/owlat/releases/download/v0.2.1/docker-compose-0.2.1.yml -o docker-compose.yml
curl -fsSL https://github.com/wolvesdotink/owlat/releases/download/v0.2.1/docker-compose-0.2.1.yml.sha256 -o docker-compose.yml.sha256
sha256sum -c <(sed "s|docker-compose-0.2.1.yml|docker-compose.yml|" docker-compose.yml.sha256)
docker compose pull && docker compose up -d
docker compose --profile deploy run --rm convex-deployDesktop app
Download the installer for your OS from the assets below (macOS .dmg,
Windows .msi/.exe, Linux .AppImage/.deb). Existing installs
auto-update to this version.
Supply-chain verification (recommended)
cosign verify ghcr.io/wolvesdotink/web:0.2.1 \
--certificate-identity-regexp "https://github.com/wolvesdotink/owlat/.github/workflows/.*@.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com"
gh attestation verify docker-compose.yml --repo wolvesdotink/owlatImages: web, mta, updater, convex-deploy, imap, mail-sync, code-worker, setup — all ghcr.io/wolvesdotink/<name>:0.2.1
What's Changed
Other Changes
- fix(api): read BETTER_AUTH_SECRET lazily so pushes survive component schema derivation by @marcelxpfeifer in #177
- refactor(web,ui): dedupe auto-imported helper exports by @marcelxpfeifer in #178
- Local dev seeding + desktop connect fixes by @marcelxpfeifer in #179
Full Changelog: v0.2.0...v0.2.1
v0.2.0
Owlat v0.2.0
Self-hosted server
From the admin dashboard → Settings → System & Updates → "Update now", or:
owlat upgrade --version 0.2.0Manual upgrade (fetch compose + SHA256, verify, apply):
curl -fsSL https://github.com/wolvesdotink/owlat/releases/download/v0.2.0/docker-compose-0.2.0.yml -o docker-compose.yml
curl -fsSL https://github.com/wolvesdotink/owlat/releases/download/v0.2.0/docker-compose-0.2.0.yml.sha256 -o docker-compose.yml.sha256
sha256sum -c <(sed "s|docker-compose-0.2.0.yml|docker-compose.yml|" docker-compose.yml.sha256)
docker compose pull && docker compose up -d
docker compose --profile deploy run --rm convex-deployDesktop app
Download the installer for your OS from the assets below (macOS .dmg,
Windows .msi/.exe, Linux .AppImage/.deb). Existing installs
auto-update to this version.
Supply-chain verification (recommended)
cosign verify ghcr.io/wolvesdotink/web:0.2.0 \
--certificate-identity-regexp "https://github.com/wolvesdotink/owlat/.github/workflows/.*@.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com"
gh attestation verify docker-compose.yml --repo wolvesdotink/owlatImages: web, mta, updater, convex-deploy, imap, mail-sync, code-worker, setup — all ghcr.io/wolvesdotink/<name>:0.2.0
What's Changed
Other Changes
- Green the public CI: security advisories, Docker builds, scanners, coverage by @marcelxpfeifer in #8
- feat(setup-cli): add
owlat-setup env --showto list required env vars for the current flag state by @marcelxpfeifer in #9 - chore(env): delete inert NOTIFICATION_PROVIDER and VECTOR_STORE seams by @marcelxpfeifer in #15
- test(campaigns): cover the pre-send content/URL scan gate + reconcile roadmap by @marcelxpfeifer in #11
- docs(roadmap): reconcile the Knowledge Graph row — auto-link, graph retrieval, analytics already ship by @marcelxpfeifer in #14
- feat(files): link auto-captured inbound attachments to the sender contact by @marcelxpfeifer in #10
- feat(inbox): auto-archive inbound mail from blocklisted senders on receipt by @marcelxpfeifer in #12
- feat(ai): cross-source LLM-synthesized ask-anything answers with citations by @marcelxpfeifer in #13
- ci: auto-regenerate bun.lock on Dependabot npm PRs by @marcelxpfeifer in #16
- chore(email-builder): delete dead allBlockTypes union mirror by @marcelxpfeifer in #17
- refactor(shared): derive social-platform labels from one exhaustive Record by @marcelxpfeifer in #18
- refactor(web): route local date/number formatters through formatters.ts by @marcelxpfeifer in #19
- refactor(web): extract UiSpinner and dedup 75 brand-spinner copies by @marcelxpfeifer in #20
- refactor(api): add getOrThrow load-or-404 helper by @marcelxpfeifer in #21
- refactor(api): use adminQuery wrapper for inline org:manage reads by @marcelxpfeifer in #22
- fix(api): single-
.paginate()-safe audience/segment counting; bump convex-test to 0.0.54 by @marcelxpfeifer in #24 - refactor(api): collapse hand-rolled permission ceremony onto requireOrgPermission by @marcelxpfeifer in #23
- refactor(api): bake feature-flag floor into chat/assistant fn wrappers by @marcelxpfeifer in #26
- refactor(api): delete duplicate MTA client, route systemMail via sendProviderDispatch by @marcelxpfeifer in #27
- refactor(api): extract shared email translation blob operations by @marcelxpfeifer in #28
- feat: suggest merged SPF record so adding DNS records doesn't break other mail providers by @marcelxpfeifer in #25
- refactor(web): extract UiAvatar and dedup chat avatar blocks by @marcelxpfeifer in #29
- feat(web): show why a DNS record failed to verify (found vs expected) by @marcelxpfeifer in #30
- feat(web): one-line domain readiness summary above the DNS records by @marcelxpfeifer in #31
- feat(web): auto-recheck domain DNS verification so users need not click Verify repeatedly by @marcelxpfeifer in #32
- feat(web): autodiscover IMAP/SMTP settings from the email address by @marcelxpfeifer in #33
- feat(web): deep-link the exact app-password page on external-mailbox auth errors by @marcelxpfeifer in #34
- feat(web): auto-detect the server public IP in the desktop setup wizard by @marcelxpfeifer in #35
- feat(api,web): real reverse-DNS (PTR) preflight for the receiving MX host by @marcelxpfeifer in #36
- feat(web): stop guessing the Convex dashboard URL in the onboarding banner by @marcelxpfeifer in #37
- feat(web): warn before adding an unusable sending domain (freemail / no NS) by @marcelxpfeifer in #38
- feat(web): actionable fix on the delivery cannot-send card by @marcelxpfeifer in #39
- feat(web): Cmd+Enter send, Cmd+Shift+Enter send-later, Esc minimizes the composer by @marcelxpfeifer in #40
- feat(web): Superhuman-parity single-key shortcuts + "?" cheat-sheet overlay by @marcelxpfeifer in #41
- feat(web): auto-advance to the next conversation after archive/trash/snooze by @marcelxpfeifer in #42
- feat(web): undoable triage — "Archived — Undo (Cmd+Z)" toast for archive/trash/move/spam by @marcelxpfeifer in #43
- feat(web): layout-matching skeletons + designed empty states for Postbox by @marcelxpfeifer in #44
- feat(web): sender/recipient avatars (initials + deterministic color) across Postbox by @marcelxpfeifer in #45
- feat(web): prefetch adjacent messages on j/k so Enter opens instantly by @marcelxpfeifer in #46
- chore: relicense from MIT to Apache 2.0 by @marcelxpfeifer in #47
- feat(web): adaptive dark-mode rendering of received HTML email by @marcelxpfeifer in #48
- feat(web): in-app Quick Look overlay for image/PDF attachments by @marcelxpfeifer in #49
- feat(web): tracking-pixel detection + privacy badge on received mail by @marcelxpfeifer in #50
- chore: add .gitattributes to force LF on shell scripts by @marcelxpfeifer in #51
- docs(contributing): document Windows dev needs WSL2 or Git Bash by @marcelxpfeifer in #52
- docs(self-hosting): add supported-platforms / OS matrix section by @marcelxpfeifer in #54
- fix(install): guard install.sh to Linux with an actionable message by @marcelxpfeifer in #55
- feat(web,api): one-click Unsubscribe chip from List-Unsubscribe headers by @marcelxpfeifer in #53
- fix(web,desktop): use cross-env so the desktop build works on Windows by @marcelxpfeifer in #56
- feat(web): reader typography + header polish (measure cap, timestamps, avatars) by @marcelxpfeifer in #57
- ci(desktop): publish the release so in-app auto-update resolves by @marcelxpfeifer in #58
- fix(desktop): force exec bit on packed scripts for Windows clients by @marcelxpfeifer in #59
- feat(web): inline reply box pinned under the conversation by @marcelxpfeifer in #60
- ci(desktop): gate the Rust shell on macOS + Windows too by @marcelxpfeifer in #61
- docs: link to wolves.ink from the README header by @marcelxpfeifer in #64
- fix(setup): make owlat quickstart work under Docker Desktop by @marcelxpfeifer in #63
- feat(web): honest link destinations in received mail (tooltip + mismatch flag) by @marcelxpfeifer in #62
- feat(api): detect and track "needs a reply from me" on personal mail by @marcelxpfeifer in #65
- ci: unify release into one v* tag, with server-v*/desktop-v* single-target escapes by @marcelxpfeifer in #66
- feat(web): the Reply Queue — an AI task list of emails waiting on you by @marcelxpfeifer in #67
- feat(web,api): "remind me if no reply" follow-up ...