All notable changes to Thunderbolt are documented in this file. Generated by git-cliff.
- Raise iOS deployment target to 15.0 (#1259) (6f1795f)
- Stop the prompt input overlapping the chat area (#1260) (1e98ca5)
- Dev environment setup (#1256) (3c71c17)
- External link behavior preference (ask / sidebar / browser) (#1244) (557edd4)
- Tell the user by ear when the mic opens (#1248) (48bfa06)
- Repair Opus rows still stranded on the sonnet slug (#1251) (3c48b92)
- Drop the Suspense boundary that delayed the first Cmd+K (#1250) (04265f0)
- Stop the brand gradient seaming at the button's edges (#1249) (715b4c1)
- Keep the chat subtree mounted through the first send (#1247) (2df9706)
- Run PowerSync sync stream in a dedicated worker on iOS (#1228) (0ae9101)
- Fix FTS5 tokenization for multilingual content and restore mid-word prefix matching (#1246) (91f68ad)
- Derive unit defaults from locale and clean up the units data files (#1243) (510fbd3)
- Add managed inference usage guardrails (#1240) (003cf59)
- Route DeepSeek V4 Flash through Tinfoil (#1236) (8a4e08c)
- Projects — instructions, cross-chat recall, artifacts (#1215) (32f108a)
- Eval production parity, search-necessity gate, and CI (#1191) (112075c)
- Upgrade default Opus model to version 5 (5244e30)
- Lowercase path segments in COMPOSE_PROJECT_NAME (#1150) (89dcfc0)
- Auto-release Android nightlies to internal testing (#1226) (759771f)
- Migrate DeepSeek V4 Flash to the Fireworks 0731 serverless model (#1224) (8e8b6ca)
- Recover empty model turns without flashing an error panel (#1221) (f2cad3b)
- Prevent sensitive analytics payloads (#1210) (4781f57)
- Bound the first database query so boot cannot hang forever (#1199) (7ce26a1)
- Skip Semgrep PR comment on fork pull requests (#1214) (2ed01e0)
- Declare macos private api in base tauri config (#1207) (0104133)
- Redact raw provider errors in posthog ai generation events (#1188) (13a15c7)
- Remove modes table and legacy chat-modes code (#1181) (a025d2c)
- Publish Thunderbolt product update (#1212) (8643173)
- App min-version gate — backend enforcement + FE upgrade blocker (#1220) (c631272)
- Shut down dev servers cleanly on Ctrl+C in make run (#1225) (d2d4fb1)
- Serve frontend and marketing via unprivileged nginx on 8080 (#1198) (777b587)
- Pause automatic eval runs (#1218) (9041d0a)
- Update .env.example to include mozilladatacollective.com as waitlist auto approve (#1213) (9889640)
- Harden preview/deploy workflows (script injection, curl|sh, secret scoping) (#1195) (ae8cff7)
- Run backend/keycloak/powersync as non-root; update quinn-proto (#1197) (56ea04b)
- Fix main CI failures from stale dialog assertion and mock ordering (#1200) (9d7c9a1)
- Auto-focus search input when palette opens on mobile (#1194) (4d80376)
- Resolve WebKitGTK OOM and OPFS-unavailable sync failure (#1089) (d4f405a)
- Remove Dependabot version updates config (#1192) (c5b4b86)
- Windows/Linux window decorations, scrolling, and sidebar layout (#1187) (4839524)
- Global search & command palette (Cmd+K) (#1176) (a627f4b)
- Enforce web tool turn budgets (#1175) (1689e62)
- Capture upstream inference errors in telemetry (#1174) (40b9dd5)
- Add ungraded multi-select "choices" mode to Ask widget (#1180) (0e9a740)
- Compress large images and PDFs before the attachment cap (#1177) (f10b124)
- Add NSCameraUsageDescription to prevent camera crash (#1190) (a44bf7d)
- Deliver images to vision-capable hosted models (#1185) (8cdb0fe)
- Drop jump-to-dependent affordance from dependents dialog (#1179) (9f0da5e)
- Use trash icon for clear-all-chats button (#1178) (9a80477)
- Revert "refactor(THU-720): use trash icon for clear-all-chats button (#1178)" (#1184) (84d210b)
- Allow thunderbolt-automation-agent bot in deep review (#1182) (cc5f671)
- Unify tinfoil retry stack, add timeouts, surface real errors (#1151) (4dc166b)
- Web-CLI bridge resilience — survive relay restarts without a page reload (#1171) (6e6be92)
- Route tinfoil sends to the assigned enclave and cut GLM latency (#1170) (b68d513)
- Force webview opaque so status bar matches theme (#1172) (fef1a6e)
- Lint shared/ folder (#1169) (e9678f1)
- Acoustic barge-in for voice mode (#1148) (cd0b56b)
- Convert chat widgets into skills with progressive disclosure over ACP (#1137) (7345f82)
- Voice mode (STT/TTS) via Thunderbolt + custom providers (#1146) (daa51dd)
- Upgrade tinfoil and enable prompt caching (#1140) (e48c741)
- Restore built-in web search behavior with default prompt rules (#1149) (2a6b35c)
- Redesign part 6 (#1145) (7840df6)
- Redesign part 5 (#1144) (a806ffd)
- Redesign part 4 (#1143) (065d4b8)
- Redesign part 3 (#1142) (efdeb0e)
- Redesign - part 2 (#1136) (d47f99a)
- Regenerate lockfiles for oauth2-mock-server 9.1.0 (#1138) (d82819d)
- Bump actions/checkout from 6.0.2 to 7.0.1 (#1121) (d8aeff9)
- Bump sharp from 0.34.5 to 0.35.3 in /web in the npm_and_yarn group across 1 directory (#1134) (b7fda75)
- Bump oauth2-mock-server from 8.2.3 to 9.1.0 in /backend (#1112) (a4242c4)
- Bump oauth2-mock-server from 8.2.3 to 9.1.0 (#1117) (e9d48e1)
- Bump actions/cache/save from 5.0.5 to 6.1.0 (#1125) (c9d720a)
- Bump actions/cache/restore from 5.0.5 to 6.1.0 (#1129) (b1342c5)
- Bump actions/cache from 5.0.5 to 6.1.0 (#1122) (3d81440)
- Bump docker/build-push-action from 6.19.2 to 7.3.0 (#1127) (38db972)
- Bump nick-fields/retry from 3.0.2 to 4.0.0 (#1128) (a5c0768)
- Bump dorny/paths-filter from 3.0.2 to 4.0.2 (#1130) (23df23f)
- Bump actions/setup-node from 6.4.0 to 7.0.0 (#1120) (30e4fa0)
- CLI backend auth and same-account iroh auto-trust (#1064) (8d6ebb8)
- Reapply cli auth device tables with a current-timestamp migration (#1135) (c367c3c)
- Bump the actions group across 1 directory with 2 updates (#1109) (a8ae4b0)
- Dependabot sweep 2 (rust, actions, react-email, pulumi, pi) (#1106) (74c2928)
- Major upgrades — astro 7, bson 7, exa-js 2 (#1101) (c222429)
- Adopt frontend & backend minor-and-patch groups (excl. anthropic-sdk) (#1100) (0a749cd)
- Redesign (#1095) (6d38ec4)
- Clear stale ACP session id when switching agents (#1097) (3978c42)
- Show correct setup commands for binary-distributed catalog agents (#1092) (4f71778)
- Batch minor/patch bumps (actions, keycloak, rust) (#1099) (868730e)
- Multi-provider cli setup wizard and self-hosted iroh relay (#1070) (c2e88b3)
- Add tooltips to models page actions (#1030) (fc12d06)
- Skip first-sync + /config wait on refresh (extend defaults version-gate) (#1078) (b6b4aa5)
- Enforce LF line endings for shell scripts on all platforms (#1039) (a2be8d0)
- Add SELinux :Z labels to postgres/powersync bind mounts (#1084) (581ff71)
- Prevent make doctor crash when ANDROID_HOME is unset (#1029) (2fd42a0)
- Restore built-in agent tools and drop permission prompts on the pi harness (#1085) (ca5824c)
- Use --chmod flag instead of separate RUN chmod command (#770) (0e15622)
- Add a curl-to-shell remote installer (#1080) (918b8af)
- Exclude libwayland-client from Linux AppImage (#1076) (dc3824d)
- Bypass proxy for Custom providers on local URLs (#1075) (aa9ba04)
- Request advertised scopes in MCP OAuth flow (#1073) (d627178)
- Name release binaries thunderbolt-cli- (#1081) (55eb43a)
- Portable coding agent across cli, web, mobile, and p2p (#1032) (cca70cf)
- Frameless desktop window + menu-bar icon tray (#1067) (e318e94)
- Support editing MCP servers in settings (#1008) (a26735b)
- Require successful connection test before saving a model (#1006) (f558119)
- Quote-reply — quote a passage from a response into the composer (#1054) (b3c9253)
- Keep sidebar branding on web and mobile (#1069) (de70d95)
- Add accessible names to icon-only buttons and unlabeled controls (#1057) (f4b2fcb)
- Cut per-token render and save overhead in the chat streaming pipeline (#1053) (c037a72)
- Lazy-load posthog-js so analytics leaves the entry chunk (#1058) (7f008f9)
- Lazy-load KaTeX and drop the duplicate markdown parser (#1059) (0852182)
- Stop leaking desktop-only tauri plugins into the web entry (#1060) (a5667ab)
- Make PowerSync JWT kid env-driven and drop orphan sync rule (#1068) (f2e1bc9)
- Update sync-rule workflow for self-hosted PowerSync (#1071) (605808c)
- Revert 0.2.0 bump and link CLI install guide on web (#1079) (65da5eb)
- Drop 5s test timeout in pr-metrics (#1072) (185431e)
- Replace demo-nightly with nightly image rebuild + scope preview cleanup (#1063) (5d83346)
- Add render_html artifact tool with live preview (#1055) (ac584e1)
- Support file attachments from the clipboard (#1056) (dd2a0ce)
- Upgrade thunder-deep-review skill for dual CI and local contexts (#1051) (df8bd5c)
- File attachments — native-first delivery, remediation & multi-format composer (#1041) (045a1d4)
- Show a mode aware status label before the first token (#1036) (b9bb3ca)
- Add App Version section to settings (#1031) (2e3771c)
- Sweep retired system models unconditionally (#1062) (044e962)
- Version-gate models reconcile + OTA + THU-645 lineup (#1049) (e77cf09)
- Advertise host-reachable PowerSync URL in local compose (#982) (76c7cee)
- Skip pulumi destroy when stack is already gone (#983) (ec8d7b7)
- Cache Better Auth session so app boots offline (#954) (30643e3)
- Surface IndexedDB failures when attaching files (#1050) (efff704)
- Make openssl -legacy conditional for macOS runner matrix (#1043) (fbea966)
- Add -legacy to openssl pkcs12 reads for macos-26 (#1040) (f19033d)
- Dedupe identical tool calls and reuse results before searching (#1037) (342aef0)
- Rebuild thunder-deep-review diff from Files API to survive large PRs (#1042) (dfc392c)
- Harden Android versionCode and CrabNebula upload (#1034) (6bbc6dd)
- Smooth the mobile close by dropping the animated backdrop blur (#1038) (996a091)
- Show friendly message when WebGL is unavailable (#1033) (e797c1b)
- Cut time to first token via prompt prefix cache, preflight dedupe, and Tinfoil prewarm (#1035) (69ff4b3)
- Add generalized map widget (THU-605) (#1000) (3264a41)
- App version management: track device versions and enforce minimum version (FRONTEND) (#986) (492c670)
- App version management: track device versions and enforce minimum version (BACKEND) (#985) (59093cb)
- Add generalized quiz widget (THU-607) (#1001) (3cc2bf3)
- Render LaTeX math in chat markdown (THU-606) (#999) (5ea8ba9)
- Add browseable ACP agent catalog to settings (#987) (4cc457c)
- Add thunder-deep-review skill and advisory CI review proposal (#1003) (6f740ab)
- User data export & import (#991) (51ce411)
- Allow editing custom agents in settings (#1009) (5ab9cfc)
- Explain why opposite-mode models are disabled in selector (#1007) (3759290)
- Fetch forecast client-side from Open-Meteo to fix shared-IP 429 (#1027) (4767c14)
- Correct pinned skill chip sizing on desktop (#1017) (c9f3223)
- Show a message when IndexedDB is unavailable in iOS Lockdown Mode (#1013) (a1dc46f)
- Block NAT64/6to4/Teredo IPv6 addresses embedding private IPv4 in SSRF guard (#995) (b42aa8f)
- Fall back to hosted proxy when native_fetch isn't compiled (#1004) (a51d5fe)
- Skip temperature for models that reject it (#1011) (bbc23e2)
- Fail closed on unknown client IP in rate limiting (#993) (dd23a09)
- Simplify copy and drop gzip (#1022) (8d2ed6d)
- Guard against reachable glib VariantStrIter unsoundness (#997) (e974c3c)
- Bump Tinfoil GLM default to 5.2 (#1014) (2bbfa78)
- Remove gptoss model (#1005) (316cf6c)
- Assert session cookie is issued with HttpOnly (#994) (a4cfa11)
- Bump tar to 0.4.46 to patch GHSA-3pv8-6f4r-ffg2 (PAX desync) (#996) (1043745)
- Expose ACP agent commands in the chat slash menu (#964) (29dc18e)
- Add advanced JSON config mode and overhaul the MCP add-server dialog (#972) (288f94e)
- Improve rendering of MCP tool calls in chat history (#973) (fb846cc)
- Add OAuth 2.1 authorization for remote MCP servers (#962) (c1cb055)
- Support authenticated remote MCP servers (bearer / API key) (#942) (465edb2)
- Tighten & equalize prompt-area selector/button sizing (#981) (922f614)
- Prevent safe-area padding from stacking with keyboard inset (#979) (c783cf2)
- Target iOS simulator by name in dev-ios (#980) (2107bb4)
- Bump tao to 0.35.3 to fix android oauth deep-link crash (#977) (86eeebb)
- Fix copy button overlapping tool calls (#966) (f95c9cd)
- Make EncryptionMiddleware data-driven to fix stale-bundle ciphertext leak (#957) (99c5839)
- Agent selector resets to the built-in agent (#934) (2b50ec6)
- Stabilize backend (WS PGlite contention) and frontend (mock leakage) CI (#953) (167bc15)
- Unstick "Reset to default" and stuck PATCH uploads (#952) (ea16e9e)
- Speed up app initialization and add startup timing telemetry (THU-595) (#984) (631f360)
- Centralize websocket subprotocol constants and refresh stale bearer comments (#918) (57db906)
- Pass --repo to gh release edit in desktop publish job (#950) (279807c)
- Update models (#915) (0f1839f)
- Wire TINFOIL_API_KEY + TINFOIL_ENCLAVE_URL into preview deploy (#945) (c6a03ba)
- Remove Google Drive integration and drive.readonly scope (#939) (bbe8d50)
- Migrate automations into skills at app launch (#917) (e796c4f)
- Connection & feedback bugs (#933) (1bff400)
- Raise /get-session rate limit to 30 req/sec (#935) (2a90dca)
- Align skills popover positioning and hover radius (#928) (521e52e)
- Remove "confidential" copy from the app (#937) (97c41f6)
- Update footer copywrite from MoFo to Mozilla.org (#930) (f9ab6e7)
- Skills v1 telemetry + edge polish (PR 4/5) (#913) (fe25b20)
- Pin cloudUrl in SignInModal sent-state test (#923) (5d32d79)
- Defer skill-token highlight until token is committed (#921) (664ec74)
- Align pin-skill button height with suggestion chips (#919) (a7ce23d)
- Connect to cloud in background during init (#925) (e4c6ae5)
- Instrument cold start and eager-load WaitlistPage (#920) (538aa37)
- Finer-grained connect timings (#922) (c0f7ad3)
- Add agent client protocol with WebSocket transport (#905) (67d8071)
- Improve skill suggestion chip touch targets on mobile (#916) (3d2a7f3)
- Speed up first sync via priority buckets (#914) (73fadbb)
- Wire skills into the chat composer (#906) (f5d9ce4)
- Skills frontend persistence + settings page (56dc7ae)
- Add Tinfoil as an inference provider (#890) (52d64b6)
- Universal proxy (new approach) (#837) (1aef7bf)
- Add skills synced table (backend) (0ed6e62)
- Preview fork PRs behind maintainer approval gate (2d2ab41)
- Anonymous sessions (#851) (7c75816)
- Automate changelog generation (#855) (0304efc)
- Raise per-user rate limits to 60/100 rpm (#853) (90ed205)
- Disable telemetry by default for self-hosted (OIDC) instances (#714) (c67cdb6)
- Repair backend dev script (#902) (6b91150)
- Keep WryActivity.getId() from R8 to fix release crash (#891) (e9c36c8)
- Stabilize auth-gate test under randomized runs (#887) (853e5d7)
- Use app subdomain for mobile OAuth redirect URI (#886) (f212d78)
- Drop per-PR database before stack destroy (#875) (11f7cf9)
- Provision per-PR Keycloak OIDC client (838eb4b)
- Pin workflow version of bun to 1.3.13 (beb3c0d)
- Lazy-load page components for per-page code splitting (#878) (de8f509)
- Lazy-load framer-motion features (#872) (2bf6bfa)
- Standardize device ID headers across all authenticated requests (#856) (e69f9a2)
- Fix desktop release getting stuck in draft state (#912) (a0be951)
- Remove process-wide leaks from mock.module and iframe window (#897) (e383ada)
- Localhost defaults + dev scripts (#862) (9f43192)
- Revert "chore: bump version to 0.2.0 for release" (#892) (000e5f1)
- Remove debug console.logs from oidc-integration test (#889) (0589c2e)
- Add privacy policy to landing page (d10ef6e)
- Move integration secrets to local-only table (#859) (922c6f5)
- Move model API keys to local-only table (#858) (a03a85b)
- Local settings store (#857) (7727651)
- Cloud Deployability Improvements (#870) (8b9e511)
- Preview shared environment resources (038795b)
- Make dev, test, and self-host stacks just work (55c8a8b)
- Enforce PR title convention (#854) (59920da)
- Shared eslint config and tsconfig base (#849) (964e267)
- Handle expired auth session by showing sign-in modal (#825) (540df44)
- Hourly preview cleanup with persist label opt-out (#830) (34d420e)
- Mark denied devices revoked and exclude from device cap (#848) (ed194c7)
- Surface clear error when Google/Microsoft OAuth is unconfigured (#828) (eb4164e)
- Reflect telemetry availability in settings UI (#836) (25d97cc)
- Always use appUrl for magic link verify URL (#847) (5199b1b)
- Unblock SSO end-to-end in docker compose stack (#835) (df2afc5)
- Randomize preview environment passwords/credentials/keys (#838) (ff7575d)
- Rename preview cleanup opt-out label to
preview:persist(#832) (8eec110)
- Bump @tauri-apps/api to ^2.11.0 to match tauri crate (#831) (071e78e)
- Remove invalid "//" entry from package.json overrides (#829) (39a71a3)
- Document desktop build prerequisites (#722) (b3486d3)
- Keep header fixed to top on mobile (#822) (875e8be)
- Make k8s backend address configurable via env var (#824) (771bc7b)
- Add socials to landing page (#821) (87c57a9)
- Add SAML SSO support and migrate OIDC to @better-auth/sso plugin (#782) (b6ec1c5)
- GitHub Stars badge not rendering in header (#819) (8f87746)
- Enterprise Sandbox Followup (#548) (8299b8b)
- Implement unified /v1/proxy HTTP endpoint (#800) (59864f4)
- Bump react-resizable-panels from v3 to v4 (#817) (cd9d837)
- Bump eslint to v10 and fix new rule violations (#815) (de5cefe)
- Bump tauri to 2.11.0 and tauri-build to 2.6.0 (#814) (dac5c88)
- Update typescript 5.9 to 6.0 (#806) (91ad911)
- Update @pulumi/aws v6 to v7 and @pulumi/awsx v2 to v3 (#807) (3d42be4)
- Remove OTP value from subject line (#811) (e874d97)
- Replace Get Started button with Github button/stars (#801) (90887fc)
- Migrate react-email v5 to v6 (#804) (31edb7e)
- Add lighthouse plugin to PRs (#627) (46a9f38)
- Cut over deep links to app.thunderbolt.io (#759) (06be79d)
- Unblock direct AI providers on Tauri (#781) (6dbb78b)
- Validate OIDC redirect URL protocol before navigation (#587) (1c0cc69)
- Unbreak ci by hoisting semver v7 and pinning bun version (#761) (b90ca83)
- Extract http client spy helpers into own module (#780) (9c47bdf)
- Harden nginx config with per-location security headers (#767) (712395f)
- Revert "chore: update vite v7 to v8 and plugin-react to v6 (#805)" (#810) (2823663)
- Update vite v7 to v8 and plugin-react to v6 (#805) (c0b4a56)
- Update safe backend deps (#803) (9494537)
- Update safe frontend deps and fix useEffectEvent misuse (#802) (9725f85)
- Update GitHub Actions versions and rustls-webpki security patch (#799) (6fd3c58)
- Revert "fix(THU-462): unblock direct AI providers on Tauri (#781)" (#798) (259d15f)
- Add MPL 2.0 License text to every source file (#778) (25207de)
- Add sccache to development.md prerequisites (#768) (833942c)
- Harden GitHub Actions workflows (#765) (fe73c84)
- Use exact hostname matching in mock fetch handlers (#764) (9a6f46c)
- Add github stars badge to marketing site and update contact form (#766) (4aec6e9)
- Public config endpoint & E2EE config updates (#606) (0c544c9)
- Add a blog and docs (#574) (9d05b36)
- Update all fronted + backend deps (#753) (5ef6e9b)
- Missing canary proof-of-CK-possession on device revocation enables E2EE state reset (#632) (0255848)
- Optimize logo with SVG (#712) (3dab3ca)
- Revert "chore: bump version to 0.2.1 for release" (#756) (13698f2)
- Media section for landing page with utm parameters for tracking (418ef95)
- Release pipeline version bump failing due to branch protection (#635) (9dd917a)
- Use draft status for Play Store uploads until app setup is complete (#706) (8a07274)
- Upgrade @opentelemetry/exporter-trace-otlp-proto to patch CVE-2026-41242 (#718) (a7a8c9f)
- Remove alpha channel from iOS app icons for App Store validation (#713) (faf2dd8)
- Restore thunderbird logo to footer (#711) (8c39ec5)
- Unblock Android build with Tauri upgrades and manifest fixes (#693) (5ddc01e)
- Align partnership logos vertically on mobile (#696) (47712eb)
- Unblock releases by pinning action SHAs, adding frozen lockfile, and upgrading Tauri crates (#630) (0f39722)
- Typo in readme (#617) (edd5e15)
- Correct architecture diagram E2E encryption placement and Tauri boundary (#609) (713f2b3)
- Upgrade Vite to 7.3.2 — patches WebSocket file read, fs.deny bypass, and path traversal (#596) (0f66a8a)
- Upgrade tar to 0.4.45 to patch symlink and PAX header vulnerabilities (#595) (d16b11c)
- Android internal release not being created (#593) (4521e61)
- Bind sessions to devices, add device limit, harden revocation (#560) (24325ed)
- Show day icons for weather forecasts and add Microsoft token refresh buffer (#588) (41d99e8)
- Replace GPL-licensed tauri-plugin-m3 with native Tauri commands (#590) (a745fb0)
- Add --frozen-lockfile to bun install in PR workflows (#583) (1b1ff09)
- Validate OAuth redirect_uri origin before forwarding to provider (#577) (fddcb3e)
- Reject weak PowerSync JWT secrets and invalid token expiry values (#576) (37914f0)
- Remove FK constraints on chat_messages and add safe error handler (#575) (34f350a)
- Narrow OTP inputs to match button width (#572) (3b5f781)
- Removed SuggestionButtons from chat ui (#598) (80a5c29)
- Extract OTP magic strings into shared constants (#571) (c4a7595)
- Add missing cd .. in Quick Start before make docker-up (#621) (2c67ff8)
- Readme (#615) (5d0e3d4)
- Fix powersync doc links + update readme (#613) (4cf7ead)
- Update main screenshot (#608) (2075841)
- Update readme (#601) (e60915d)
- Remove on-device storage bullet from README (#599) (a7bf1cb)
- Update feature statuses in roadmap (3cd4c84)
- Rename roadmap to features and roadmap, mark E2E and sync as preview (540deea)
- Rewrite README (#592) (eeee971)
- Use environment secrets and rename RELEASE_APP_ID to RELEASE_APP_CLIENT_ID (#752) (f501cf3)
- Add owner and repositories to GitHub App token action (#751) (346293e)
- Podman compatibility + rename make commands (#717) (139fc75)
- Add PostHog sync diagnostics for iOS sync bug (#628) (dbf783c)
- Remove Claude Code Assistant CI workflow (#710) (3a5c3ce)
- Set up dependabot (#633) (9d9c18b)
- Add Deepset/Haystack partnership section to landing page (235bbb9)
- Fix demo user email in README (#622) (d29f7a9)
- Thunderbolt Announcement Page (5532b77)
- Rebrand logo (#607) (099bb7a)
- IP Based Rate Limiting (#600) (2bf278f)
- Replace MongoDB with PostgreSQL for PowerSync bucket storage (#594) (5a200bf)
- Enterprise marketing landing page (#519) (79ba8a0)
- OTP Hardening (#579) (3908ab2)
- Code quality cleanup — dead code, deprecated APIs, fragile checks (#591) (28990b8)
- Pin third-party GitHub Actions to commit SHAs and add permissions (#580) (2374ba8)
- Source Map Exposes Full Source Code (#573) (ba588d9)
- Harden OTP authentication with session binding, cooldown, and 8 digit codes (#567) (84efb49)
- PowerSync visibility-based reconnect + manual retry (#570) (5480a28)
- Resolve CSP script-src errors from PostHog without widening CSP (#569) (217f382)
- Allow PostHog proxy scripts in CSP script-src directive (#568) (34c002c)
- Add XSS-prevention headers to proxy responses (#566) (95ed505)
- Raivieiraadriano92/hotfix ps middleware (#565) (4446259)
- Set up End-to-End Encryption (E2EE) with PowerSync (#525) (c3a70fe)
- Remove manual token storage that overwrote signed bearer token (#562) (88cc5cb)
- Remove CORS regex (#557) (1dcd3ca)
- Mitigate OTP brute-force via waitlist rate limiting and resend hardening (#555) (3d51956)
- Vite Development Server Allow List (#553) (e672a2c)
- Strip Thunderbolt session token from MCP proxy forwarded headers (#554) (71ff7ac)
- Prevent cross-origin PowerSync data injection via CORS and Origin validation (#552) (5e111d4)
- Signature requirement for bearer token authentication (#559) (109b880)
- Add configurable Swagger/OpenAPI documentation via SWAGGER_ENABLED (#558) (bc36447)
- Update elysia (#549) (949fd42)
- Rate Limiting Middleware (#532) (304d23d)
- Containerized enterprise sandbox environment (#538) (e1c9369)
- Improve UX/UI for weather widget in chat (#539) (3ac8268)
- Improve auth/fetch security + code quality (#543) (321ffda)
- Make source maps private (#542) (0474408)
- Extra semgrep finds (b54aec8)
- Set up automated code security review for PRs (#536) (dd9177a)
- Revert "fix: extra semgrep finds" (a3fa0d7)
- Update create release script to update tauri properties (98d2ce5)
- Fix release/mobile security issues from semgrep (#537) (d538de3)
- Android release error (5a1d291)
- Revert "chore: bump version to 0.2.0 for release" (e6b5a84)
- [BACKEND] THU-348: MCP backend — CORS proxy, SSRF protection, local-only tables (#524) (715ace7)
- Cleanup + Security Fixes (#535) (3c9a44e)
- Add authentication for inference routes (#529) (ec457d4)
- Require 7-day minimum release age for new packages (#530) (b246880)
- Remove hardcoded dark backgroundColor behind iOS keyboard corners (#528) (e743f41)
- Android release version update (481541e)
- Add /mcp/oauth/callback to AASA for mobile OAuth deep links (#521) (b908127)
- Add OIDC Support for Enterprise (#517) (262141d)
- Keyboard theme should follow app preference theme (#513) (4df3867)
- Fix waitlist screen bugs (#516) (fb7a032)
- Separate dev/prod bundle identifiers and prevent duplicate desktop instances (#462) (1c0a719)
- Rename chat fix for Safari/Chrome/Mobile keyboard (#483) (1840efc)
- Refactor unnecessary useEffect calls across the codebase (#484) (aa3cecd)
- Add desktop / mobile download links (#428) (bb249b8)
- Remove copy reference to magic link in email template (#509) (e7f83d3)
- Light/dark mode flicker on mobile app startup (9c8d9fd)
- New email templates and managment pattern (a823f4b)
- Revert "fix: use dark mode keyboard in dark mode (#495)" (a82a552)
- Use dark mode keyboard in dark mode (#495) (5290a96)
- Resolve TS2322 generic type error in invoke mock (3ed8be8)
- Replace mock.module with spyOn in oauth-loopback tests (3ecde37)
- UX Refinements (#487) (8fee7c2)
- Copy and paste button for messages (#466) (f05f625)
- Thunderbot v2 — modular architecture with progressive disclosure (#460) (32c9c96)
- UI Refinements (#482) (6d3a2eb)
- Move sidebar lastChatPath ref assignment from useEffect to render body (c258efe)
- Remove redundant trigger useEffect in autosize-textarea — pass value directly (9ccf106)
- Remove prop-copying useEffect in weather-forecast display (c462f62)
- Replace derived-state useEffects with inline const in reasoning-group-title and automations (fcd04b8)
- Remove ref-syncing useEffects — assign refs directly in render body (4736acc)
- Raivieiraadriano92/revert commits (#477) (068b8bf)
- Ability to rename conversation titles (#464) (1f5da78)
- Desktop crash on update and restart (#463) (3518365)
- [THU-344] Add some PR automations (#456) (c496577)
- Link preview + citation widget bugs (#451) (9a04e82)
- Increase mobile font + button sizes (#475) (795381b)
- Remove alpha channels as ios does not support and build/release fails (#474) (a83ccde)
- Raivieiraadriano92/syncing fixes (#443) (54fea9d)
- Add disk cleanup step to android release workflow (#461) (fa67a53)
- Automation text cannot scroll with mouse wheel (only by dragging/arrow keys) (#459) (9d45633)
- PowerSync sync not connecting on page refresh (#458) (52678ed)
- Simplify DAL: remove mapModel and introduce DrizzleQueryWithPromise type (#452) (f8c3c16)
- Add cursor[bot] to allowed_bots in Claude PR review workflow (26a47fd)
- ⚡ THU-313: Set app icons and web favicon (83c4015)
- ⚡ THU-249: Rearchitect Database.instance.db with dependency injection (#426) (b82a40d)
- Replace useQuery from @tanstack/react-query with @powersync/tanstack-react-query (#434) (a1adf84)
- ⚡ THU-273: Refactor backend to use DAL pattern like frontend (#427) (9df9c30)
- THU-302 [1/2]: Add OAuth loopback server module (cd55919)
- Fix CI glob to match branch names with slashes (45c97e2)
- ⚡ THU-333: Fix Enter sending on mobile web (02470f6)
- ⚡ THU-331: Persist prompt input draft per chat thread (#441) (7ac76f6)
- Separate disabled models into labeled groups in model selector (#439) (2f26e31)
- Move sync icon to sidebar header on mobile (#440) (76487a4)
- Stop filtering out PR author comments in thunderfix skill (2119dd0)
- Restore missing thunderbot files and fix path references (1115016)
- Fix typos and numbering in thunderbot README (f8edfdb)
- Add CLI tools table to thunderbot README (4392976)
- Rewrite thunderbot README with FAQ and add setup script (b1de1ba)
- ⚡ THU-336: Move auto-approved waitlist domains to env variable (#437) (4b0242e)
- ⚡ THU-320: Fix citation bottom sheet blocked by Android nav bar (9fbfc92)
- Allow model invocation for all thunderbot skills (572166f)
- [THU-327] Haptic Feedback (#420) (83d95d8)
- Improve thunderbot README layout and add customize make target (2165ed3)
- Move thunderbot subtree to .thunderbot/ with symlinks into .claude/ (182a7e0)
- Merge commit '28d00347bde7b550a92ff514e0c6661270d9e0e9' as '.thunderbot' (987dde1)
- Squashed '.thunderbot/' content from commit 49a890cc (28d0034)
- Remove thunderbot subtree at old prefix (58c00fb)
- Add front matter metadata to thunder command files (279fbad)
- Merge branch 'main' of github.com:thunderbird/thunderbolt (1fb694d)
- Add thunderbot-pull and thunderbot-push make targets (b094e21)
- Add thunder commands, make targets, and thunderbot infrastructure (#412) (72a3593)
- Prevent thunderout CWD from becoming invalid after worktree removal (#421) (c8d27bb)
- Add SSRF protection to proxy route (#411) (43081bb)
- Center model selector in mobile header (#415) (9a239e0)
- Remove thunder commands in prep for subtree (300e165)
- Update thunderbot remote URL in README (7ca5763)
- Add thunderbot subtree sync instructions to README (d112b88)
- ⚡ THU-329: Bottom-align chat input on mobile (#422) (57643f0)
- Merge commit 'bfa9cfa705e21a9adcf3a2ae6ddba2d9a79ae09b' (79fb55e)
- Squashed '.claude/commands/' changes from 186fb579..10965d5c (bfa9cfa)
- Merge commit '41dc3a09da7a7bc959360a886bfd7d96b76ed176' (3b81263)
- Squashed '.claude/commands/' changes from fab792a8..186fb579 (41dc3a0)
- Merge commit '9fd7de19a054f95be2086495e667fb30a29292c8' (19b5568)
- Squashed '.claude/commands/' changes from 2517b804..fab792a8 (9fd7de1)
- Merge commit '333aa8f81f3288e11e1a5993a160f5ee7424bfbe' as '.claude/commands' (f5ec901)
- Squashed '.claude/commands/' content from commit 2517b804 (333aa8f)
- Make thunderimprove ask before fixing (d4dda49)
- ⚡ THU-324: Fix multiple security vulnerabilities (#417) (9708937)
- Verification failed error message displays before navigating away (a2acd4c)
- ⚡ THU-290: Fix tool call group duration showing conversation total (#416) (31f4be1)
- Implement db.transaction to optimize PowerSync operations (#402) (e12ab4a)
- Setup new ESLint rules for better code style (#403) (8ef8bf4)
- Confirm external link modal before navigation (9bd735c)
- Enable multi tabs support for PowerSync on web (#396) (90fb5c2)
- Register model_profiles migration in drizzle journal (#401) (e3983c8)
- Prompt Separation by Model/Chat Mode (#371) (6f5bd2e)
- Prompt Separation - DB Migrations (#400) (010dbd2)
- Menu spacing (fe3b052)
- Resolve OAuth callback losing state during onboarding redirect (#395) (f59ff21)
- Reduce input box footprint on mobile (04d0205)
- Update token handling in sign-in and waitlist state management (d86fc80)
- Enable workers and disable multi tabs (65b098f)
- Use OPFSCoopSyncVFS (fcfd8c1)
- Ui tweaks (59ce2a8)
- Remove unused import for getPlatform in database.ts (6e5e395)
- Disable web workers for PowerSync (0ac4e54)
- No webworks for powersync on ios (f15197b)
- Test flight fixes (637a10f)
- Add new BE PowerSync schemas (#372) (702cab7)
- Include X-Device-ID and X-Device-Name headers in corsAllowHeaders (#390) (26aa54a)
- Improve Waitlist / Signup Flow (#391) (9dc8119)
- Revert "chore: bump version to 0.2.0 for release" (ba4efa9)
- PowerSync Pre-release (#383) (15a541e)
- Fix rounded corner clipping on model selector (1e649c1)
- Improve the link preview feature (#373) (63cf6b7)
- Mobile sidebar opens 80%, dims/blurs content (f41aa40)
- Back button from settings now returns to correct chat, or falls back to new chat (1ac8471)
- Remove hardcoded rounded-lg from inner div in mode selector (cbf2f67)
- Reduce Claude PR reviewer noise with parallel agents (#374) (88e9862)
- Improve OTP error handling (#369) (7eef55c)
- Add a source citations feature (#364) (805656d)
- Waitlist Fixes (#368) (c9f49cc)
- Backend: prevent sql params from appearing in stdout logs (ea943fb)
- More useful backend errors (5e71a17)
- Resolve otel errors when otel env vars not set (8ccd1cb)
- Claude PR reviews (32d2d36)
- Add Xcode 26 Metal Toolchain workaround for iOS build (#358) (cbe37de)
- Raivieiraadriano92/fix waitlist flicker (#367) (15f9847)
- Add mozilla.ai and mozilla.com domains to auto-approval for waitlist (42bd651)
- [THU-91] Set up nightly build pipeline (#349) (014073d)
- Remove Metal Toolchain to fix Swift compatibility lib errors (#359) (0cc317a)
- Failed inference response retry (#346) (56311a0)
- Handle pre-release suffixes in version bumping to prevent NaN (#356) (d147356)
- Wait experimentalFeatureTasks finish loading to mount app routes (#352) (8527c48)
- More test timeouts (d60455f)
- Slow test timeout (0825e30)
- Backend errors with backend data (6ccb9b3)
- Do not return backend error details on error (380cf87)
- Waitlist - Auto Approve Mozilla Emails (#355) (339c853)
- Update iOS SDK Version (#354) (c97bb5d)
- Cleanup unused users table (#351) (a2db939)
- Waitlist Flow (frontend) (#344) (a5415b5)
- Scroll behavior adjustment (#347) (4fbe23f)
- Remove the debug logs (ae26b53)
- Update the apple signing identification (b012cf2)
- THU-168-apple-notarization (03a1aff)
- [THU-241] Create the Desktop Update flow with CrabNebula Cloud (#329) (529ec3d)
- Preserve original auth/utils exports in waitlist integration test mocks (005b413)
- Fix reconcile defaults tests (0a62662)
- Modes Feature (#343) (23aa34e)
- Waitlist flow - Backend (#341) (e07794d)
- Update ai-sdk to v6 (745cfad)
- Switching theme mode causes crash (ef3d3a4)
- Not found page (6ef59e2)
- Filter out country-level results from location search (#325) (4c91d07)
- Raivieiraadriano92/schema fix create indexes (#333) (3ff6675)
- Changing a location alert is broken (#334) (ab757e7)
- Raivieiraadriano92/schema fix remove indexes (#332) (326bf9e)
- THU-238: Update model names to be human friendly (e7d168a)
- Authentication not working on mobile (#322) (bfc6f8c)
- Soft Delete Implementation (#319) (6e9846b)
- Implement missing DAL operations to avoid direct db access inside of components (#318) (30ad226)
- Disable submit-on-enter for mobile keyboards (#315) (7514261)
- Adjust scroll behavior (#308) (157569d)
- Enhance PostHog initialization by disabling session recording, scroll properties, and performance capture (#300) (0453242)
- No Answer, repeated Twice (#305) (9963f6a)
- Model is not responding in some scenarios after user chooses "Don't ask again" option in Connect Google/Microsoft widget. (#302) (32c0164)
- Chat responses should continue streaming after user navigates away from the current thread and then returns to it (#293) (8b555b7)
- Fix claude code permissions (2515535)
- Fix Google Drive Issues (#297) (aceaacf)
- Update Cargo.lock on the release process (5fd7840)
- Set up uuidv7 for assistant messages (#294) (da89e05)
- Disable surveys in PostHog initialization (#296) (a06e296)
- Mock posthog-js globally to prevent browser detection errors in tests (#298) (369586c)
- Add claude to github actions (#299) (ddd5667)
- Design Updates (#291) (c684b20)
- Revert "design updates / refactoring (#290)" (243d0c3)
- Add support for Mistral Large 3 model in inference and settings (#284) (de54b14)
- Fix auth url (69f59d8)
- Remove sendMessage from chat store and implement validation in chat instance (#288) (039e19c)
- Design updates / refactoring (#290) (8da7de9)
- Authentication (#270) (a300f31)
- Fix model sort order (dfc324f)
- The metadata times for each tool call / total response are showing up as 0 (#285) (64f2dba)
- Update react and react-dom to version 19.2.1 (#286) (198a131)
- Revamp Model Selection UI (#283) (fb0e041)
- Strip partial <widget prefixes to prevent streaming flash (#278) (ba95a96)
- Invalidate chatThreads query after running automation to ensure updated data (#280) (f9f3817)
- Load theme from localStorage to avoid screen flickering while sqlite is loading (#277) (485d050)
- Remove unused packages and components (#282) (0e539c7)
- Revamp Model Selection UI - Setting up Design Tokens (#279) (e501a38)
- Gpt-oss frequently forgets to respond to me after doing all of its research (#273) (17a6176)
- Preview link images are not showing up on mobile app builds (#272) (6e75f0b)
- Update README with new demo link and cloud URL (c0d6554)
- Fix mobile Google Auth nav bug (#268) (072f684)
- Fix URL bar on iOS (#242) (d981201)
- Hide scrollbars globally for consistent cross-platform appearance on Windows (#269) (fdbcf36)
- Db driver (3a0394a)
- Use pglite by default; postgres if specifid (9a661f6)
- Add postgres library for prod (48c3880)
- Add unit tests for PR #211 (#254) (34b01c8)
- Set up backend postgres database + dev setup (#266) (e43c8a2)
- Revert "add privacy policy + terms of service to raw html for google (#264)" (#265) (53591ec)
- Add privacy policy + terms of service to raw html for google (#264) (eb6de8a)
- Prevent sidebar from flashing during loading state in layout component (#263) (ad383f3)
- Android: nav menu won't close via swiping (#262) (48b0aa6)
- Conversation deletion does not reset chat history (#256) (f1c3b22)
- Disable the webview browser when clicking on preview links on mobile (#261) (e33b0d2)
- Enabling preview features (eg Tasks) is not updating the state (#260) (c272e66)
- Tool info screen header (where close button is) is cut off on mobile (#259) (e5bdba0)
- Make reasoning preview text area fixed height (#257) (81040f9)
- Fix bug where thinking time is zero until entire response finishes rendering (#258) (624b247)
- Fix oauth integration for Desktop (#253) (ce2fa0a)
is showing up in results (#250) (64b9518)- Update system prompt (#251) (21f6362)
- Fix Google/Microsoft login on mobile - Universal Link approach (#248) (3d0995b)
- Adding config files for app/universal links (#246) (215a115)
- Use instant scroll when loading existing threads (#249) (ca388bc)
- Add Content-Type headers for .well-known files (#247) (2c3943e)
- Update cargo.lock (61b77a3)
- Increase test timeout (8fb815e)
- Create email/calendar connection display component (#232) (75eea73)
- Switch to @journeyapps/wa-sqlite to fix multiple database issues (#245) (419f686)
- Reduce Test Pollution (#239) (13a83a4)
- Broken search (5c2214c)
- Test Improvements (#233) (32d8830)
- Update reasoning group title to reflect (#235) (4daa43b)
- Change the tool title, loading spinner, and green check to all be gray (#237) (d5187fa)
- Show error message for incomplete streaming responses (#238) (0c33cd8)
- Update lockfiles (ec5d719)
- Update android release to +2000 (2948b85)
- Raivieiraadriano92/thu-164-dont-show-the-scroll-bar-in-the-reasoning-area-or-chat-area (#236) (ad1e28f)
- Prompt input + nav cut off on mobile app builds (#229) (8f35331)
- Improving app loading error handling (#215) (be2cbb2)
- Remove extra bottom padding to avoid excessive modal scrolling on mobile (#217) (db4e9e4)
- Refactor chat UI component hierarchy (#211) (79ca45f)
- Switch Fireworks -> Custom Inference (#225) (d5244e9)
- Revert "hotfix: sqlite worker" (c29dd84)
- Bun lock (19db555)
- Vite version (257d71e)
- Sqlite worker (8e193a2)
- Run prettier after bundleMigrations on app startup (#224) (747a4bf)
- Onboarding Experience (#196) (6dd7532)
- Update cargo.lock (57c3289)
- Release Improvements (#214) (b8812aa)
- In-app web browser (#206) (19969d2)
- Create android release action (8992837)
- Update ios deployment action (b5f1fdf)
- Update ios deployment action (fe142bd)
- Update ios action artifact (ad61605)
- Setup iOS automated deploy (#102) (98b42e0)
- Replace DestructiveDialog with DeleteAllChatsDialog and DeleteChatDialog components for chat deletion functionality (9b320b4)
- Add DestructiveDialog component and integrate it into ChatSidebar for chat deletion confirmation (e95c054)
- Init android project (6439ff2)
- Fix build by setting exact ai version (adc7c85)
- Fix backend CORS regex (#210) (1e12935)
- Set mobile sidebar overlay background (#209) (1361b4e)
- Enable SidebarRail when sidebar is open (#178) (5a29172)
- Sqlocal drizzle driver .get() should not return empty object (#168) (579a296)
- .prettierignore should not ignore backend anymore (3bc6d1c)
- Flower qwen3 context window size is actually 32k (fa82c53)
- Missing /v1 (fe600d6)
- Align reset logic with database type (#158) (93ed7c0)
- Security issues and increment error (c7fea29)
- Fix csp issue with render api (#99) (153df59)
- Fix ruff formatting (4b5c48a)
- Use libsql with only core features for Windows compatibility (e037432)
- Add cargo clean step for Windows build (49c5d3b)
- Remove libsql encryption feature to fix Windows build (2bcfd96)
- Fix xcode config that didn't get renamed (1eb3d57)
- Fix hallucinations when tools are disabled (d727e89)
- Fixes and improvements (1d35b7c)
- Fix sideview scroll (dff895e)
- Fixes (83eece8)
- Fix embedding examples (9badd67)
- Fixes (48bf758)
- Fix drizzle bug with wrong order of columns (ecf2804)
- Fix new thread (29aabdd)
- Fix bug when navigating between chats (129f592)
- Fix init (43620c0)
- Fix rust warnings (a4fb4c4)
- Fix dev tools (inspector) not opening (221a7f2)
- Fix chat streaming / tool calling issues (7380bb6)
- Load posthog client on app init (#185) (d64f0fe)
- Simplify chat loading logic in ChatDetailPage component (b8c7e20)
- Update dialog titles for clarity in chat deletion confirmations (53771da)
- Update alert dialog descriptions and button labels for clarity in chat deletion dialogs (1a6cc28)
- Refactor chat scroll into a hook (7b2a353)
- Refactor settings logic (c0f84de)
- Revert "chore: bump version to 0.2.0" (034edf3)
- Fix truncated wide content on mobile (#208) (5e2662a)
- Fix mobile chat scrolling bug (#201) (023103e)
- Enforce encryption state per thread (#197) (e682386)
- Improve backend types + injectable fetch (#205) (b58fb70)
- Clean up cloud settings and analytics (#204) (7bd68cf)
- Handle client disconnections gracefully in OpenAI streaming (#200) (4a54643)
- Trigger display components with XML tags instead of tool calls. (#199) (aa0cd40)
- Update Sidebar UX (#195) (e5521f8)
- THU-103 + THU-126: Qwen3 -> gpt-oss (#193) (bc2630e)
- Storybook (c487a5e)
- Misc issues from PR #191 (e0b0479)
- Settings Mega Branch (#191) (3dc0624)
- Track parent message ID when creating new messages (#187) (e1d75b8)
- Cleanup Unused Features + Code (#182) (517e95c)
- Tools should have timeouts (#179) (c188918)
- Raivieiraadriano92/dal refactor (#173) (cb6815e)
- Persist partial responses during streaming (#163) (68104d2)
- Revert "refactor: simplify chat loading logic in ChatDetailPage component" (7544dab)
- Fix weather location bugs (#167) (af1b27a)
- Refactor chat creation flow with /chat/new route (#169) (5afe4af)
- Update AGENTS.md (4867341)
- Update readme (3204211)
- CI Release Process (#171) (72cb7e1)
- Exa Rewrite (#165) (07d2278)
- Fix fetch-content endpoint (#162) (0aa716d)
- Rewrite backend with Elysia (#161) (8c22f9e)
- Add comment on why using commit hashes on the deployment action (ebc99d3)
- Improve tool-call UX (#160) (0e65dcf)
- Add a weather forecast component (#156) (30122f5)
- Remove automations feature flag (#148) (2656cac)
- Enable PostHog error tracking (#155) (e7fa584)
- Fix bug where assistant ends before finishing long searches (#153) (62206db)
- Revert "THU-64: Fix infinite loading loop when incomplete tool call states exist" (13f60a2)
- License (#152) (e7cebdb)
- Fix conversation lag in long chats (#150) (e3d3221)
- Revamp Settings -> Models page (#144) (db58a48)
- Fix automation deletion bug (#147) (9c76845)
- Remove DuckDuckGo and consolidate to single search endpoint (#146) (ca3ee68)
- Fix infinite loading loop when incomplete tool call states exist (a1bfb98)
- Correct Exa SDK response attribute from contents to results (8bfabe6)
- THU-10 Proxy fetch content tool for user privacy (#136) (4bf759f)
- Add PostHog feature flags for preview features (#141) (96444ac)
- THU-61 Update Flower Intelligence SDK to 0.2.3 + Enable Flower Context Usage Tracking (#143) (b9e1492)
- Replace React Default Imports with Named Imports (#140) (6179fd5)
- Add preview features settings section (#134) (cc16fd2)
- THU-27 Get Android Working (#138) (1b0b5f1)
- Standardize code formatting (#133) (5e1c501)
- Add AGENTS.md (and symlink CLAUDE.md) (#128) (fe48c95)
- Bump tracing-subscriber (#132) (6d4f6fa)
- Standardize query/DAL logic (#131) (e1ab7f0)
- Token Tracking (#130) (5fac418)
- Implement granular PostHog event tracking (#129) (7623534)
- Add telemetry settings toggle (#123) (1e013de)
- Fix Google Auth Integration State Not Updating After Connecting (#121) (d4de1e5)
- Adding Mise config to .gitignore for now (55c0372)
- Fix Google Drive Search (#120) (3c5239f)
- Upgrade all npm and cargo dependencies (#116) (c989fef)
- Add file change detection to optimize Rust CI workflow (#115) (e19228d)
- Storybook Setup (#111) (ad3f5b8)
- Fix Flower error (#109) (1a99e7a)
- Update npm packages (#105) (3d8ed95)
- Update AI SDK Version (#100) (a38aadb)
- Sidebar Chat Thread Section - Basic Search (#98) (7bd1c70)
- Merge pull request #95 from thunderbird/clear-chats-modal-confirmation (2998329)
- Monitoring (#94) (8639d0e)
- Posthog Analytics (#90) (c9119e3)
- Update AI Packages (#93) (81e0da9)
- Bump the cargo group across 2 directories with 1 update (#89) (a33bf6c)
- Fix CI (#88) (c7d622f)
- CI Tests Parallelization (#85) (9805a32)
- Update daily brief prompt (#84) (7e054e7)
- Chat Fixes (#83) (2a1affa)
- Fix Flower Fetch (#81) (375f713)
- Flower Confidential Compute (#79) (b4b16a6)
- Upgrade Vercel AI SDK to v5 (#80) (55ba920)
- Adjust date to user's timezone (78adc2a)
- Fix invalid google search query (#78) (41ba3fe)
- Google Drive / Docs (#76) (edbc85b)
- Qwen 3 Thinking (#74) (cb14b4c)
- Google Integration Revamp (#73) (7940005)
- Exa Search + Tool Call Descriptors (#72) (637b778)
- Fix various AI layer issues (#68) (f2744e9)
- Update Dev Container (#71) (54d0202)
- Update System Models: Qwen 3 2507 (#70) (275ce00)
- Message Streaming Testing Tools (#65) (bf79dd4)
- Claude Code Dev Container (74aef8d)
- Bump openssl (#99) (09ce7ac)
- Bump tokio (#98) (7fd762a)
- Agentic Improvements (#96) (1edd168)
- Mobile UX Continued (#94) (1bd12ad)
- Mobile UX Improvements (#88) (525e9b1)
- Various Bug Fixes (#87) (349014c)
- Chat Message Refactor (#86) (49399e2)
- Fix Windows Builds (6bab194)
- Fix Bugs (#83) (63d246f)
- Rewrite Model Selection Logic (#82) (3954403)
- Tauri's HTTP Plugin - CORS Fix (#79) (0887686)
- Update Packages (#78) (5ec3808)
- Stop text generation (#77) (13f187b)
- Reasoning Improvements (#70) (a7ad0ea)
- Tasks Improvements (#54) (36c5b7a)
- Automations Features (#51) (400557f)
- TB Pro Backend Fixes (#46) (6b071d7)
- Flower Refactor (#44) (b978d01)
- Handle Migration Errors More Gracefully (#43) (42cb427)
- Fix hardwired "localhost" references in new Thunderbolt Pro integration (53d58ae)
- Pro Tools Refactor (#40) (b57817f)
- Tasks (#34) (483bb85)
- Google Tools (#35) (467a9dd)
- Refactor memoization and update integration connection handling (52026f5)
- Add Microsoft OAuth integration and related tools (#32) (f9f91f4)
- Integrations > Google (#31) (e2bbca5)
- Better fix for OpenAI tool calling (9760d4b)
- Revert "Fix OpenAI tool calls" (ef41d8d)
- Fix OpenAI tool calls (d811896)
- Misc cleanup/fixes (380a352)
- Fix (a053f12)
- Cleanup (172203c)
- Merge branch 'main' of github.com:thunderbird/thunderbolt (a0b0efb)
- Re-add missing dependencies (50b3e7c)
- Remove unused npm dependencies (afc5c12)
- Fix release (5ff1484)
- Fix title generation (a19ecbc)
- Merge branch 'main' of github.com:thunderbird/thunderbolt (63ecedf)
- Continue on Error (To Bypass CrabNebula Error) (7f3ccb6)
- Rearrange build steps (857aceb)
- Rust Refactor (#30) (a3c7504)
- Better Thread Titles (cfd748e)
- Use db for theme storage (eb1ee5a)
- Use in-memory SQLocal in private tabs (when OPFS is not available) (eb502d7)
- Fix missing MCP tools bug (42074fa)
- Fix sidebar thread text getting cut off (600fe82)
- Update CORS to work with regex (to support preview builds) (e359415)
- Update CLAUDE.md (99c1aae)
- Formatting (ac50378)
- Demo link (afc4e24)
- Fix tsc (a2303b9)
- Use db singleton in dal (3b5d3cf)
- Flower caching + use tools with flower mistral (9985e16)
- Fix type errors (cccc7f8)
- Flower use bundled (997421e)
- Flower fix (attempt) (93044b8)
- Cleanup (624a124)
- Fixes/cleanup (d6f11ab)
- Fix JSON settings bug (342e620)
- Cleanup (5fc4c2d)
- SQLocal (#29) (396ee4a)
- Add GitHub Actions workflow for platform-specific builds (22ac919)
- Better error handling for server errors (c8403de)
- Merge branch 'main' of github.com:thunderbird/thunderbolt (6a1d8ce)
- Separate windows and mac builds by architecture (5158acc)
- Tweak prompt to use local units (2af62b2)
- Windows arm build (9395c91)
- Fix sidebar width animation (d0c9791)
- Tweak prompt to use more markdown (42d4c63)
- Fix bug causing location not to be undefined when it was not set (5e408f9)
- Fix bug causing location not to get saved correctly (9703954)
- Merge branch 'main' of github.com:thunderbird/thunderbolt (f6072b0)
- Fix CSP script evaluation error on Windows (c93906a)
- Solve CSP by allowing unsafe-eval for Flower. Temporary fix. (5a8078b)
- Add together ai provider (6f126e0)
- Fix CSP on Windows (insecure for now) (5e71a36)
- Merge branch 'main' of github.com:thunderbird/thunderbolt (16cbce9)
- Refactor AI module imports and enhance streaming response configuration (c08db0f)
- Fix error preventing OpenAI from working with tool calls. (3cdb60d)
- Update .gitignore and refine Tauri configuration (eb2bf1f)
- Add Flower AI integration and mobile UI enhancements (1969a1c)
- Update Tauri configuration to enhance security settings (2663efe)
- Flower Concept (#23) (e5eda94)
- Update Tailwind CSS dependencies and refactor CSS variables (92afd99)
- Update dependencies for Tailwind CSS and Tauri (677ab82)
- Add ESLint and Prettier configuration files, update Makefile and package.json (34ac6c0)
- Add @tauri-apps/plugin-os and enhance app initialization error handling (4b86c9d)
- Make check (7117162)
- Clean up makefile (cd8443c)
- Refactor type checking and update CI configuration (d7bd574)
- Cloud URL from Build Config (#24) (e735cd5)
- Add CI status badge to README (f6e6412)
- Merge branch 'main' of github.com:thunderbird/thunderbolt (7177410)
- Update build/release workflow to use manual cargo caching (6e949cf)
- Switch to manual cargo caching with correct target path (697349a)
- Remove automatic tag creation from release workflow (b8cb233)
- Create GitHub releases (7a839df)
- Enable rust-cache in CI workflow (e4f24fb)
- Fix unused variable warnings in commands.rs (a050675)
- Fix all CI issues with latest Rust nightly (2fee4ab)
- Remove Codecov from CI workflow (47f9137)
- Improve Python type annotations and enable strict mypy (1e69c95)
- Fix CI and linting issues (31dc68e)
- Fix CI workflow errors (1cb407e)
- Fix CI workflow configuration (667c59b)
- Release process (a20c983)
- Merge branch 'main' of github.com:thunderbird/thunderbolt (98f71b8)
- Merge branch 'main' of github.com:thunderbird/thunderbolt (0721cc5)
- Remove mistral examples to avoid heavy dependency (ab8e7ab)
- Yet another windows fix attempt (b9fe019)
- Fix patch / Cargo (53d4db7)
- Merge branch 'main' of github.com:thunderbird/thunderbolt (9570cb1)
- Fix rust warnings (f5d2d41)
- Fix windows? (8ef4ffb)
- Merge branch 'main' of github.com:thunderbird/thunderbolt (7e1c3ab)
- Upgrade frontend npm packages (71b0f99)
- Try to fix windows version by upgrading libsql to main branch (c1d5756)
- Upgrade Crates (88f306a)
- Upgrade libsql to latest (edf6958)
- Fix Ubuntu and macOS Intel build issues (2e97df8)
- Fix macOS dual architecture build setup (7c4999a)
- Build universal binary for macOS (6fc6d25)
- Fix macOS build by removing cross-compilation (61d2d86)
- Fix Rust toolchain setup for Tauri project structure (9b3cb88)
- Disable RUSTFLAGS warnings-as-errors in workflow (5dc15c6)
- Add sccache installation to workflow (e1363a1)
- Fix Rust toolchain version in workflow (ee0396d)
- Replace npm with bun in Tauri release workflow (8cdc7cb)
- Add CrabNebula Cloud environment to workflow jobs (a22ff8a)
- Add github actions build step for tauri (a273a1e)
- Ios build working (c55a0fe)
- Disable r1 for now (7a07e55)
- Add model fixes (922ee8a)
- Tool usage setting for models (f9f5a3c)
- Fix the chat input min width to collapse properly (070e721)
- Merge branch 'links-new-window' (3c167b1)
- Open links in external browser (f7d2e06)
- Disable checkboxes in mcp tool list (c2f44df)
- Weather + location refactor: switch to open meteo and move to mcp (f3dabaa)
- Update backend/CLAUDE.md (0c97637)
- Dont show sideview toggle when no content (7449d66)
- Circumvent cors for mcp servers (1cb2d0f)
- Go to new chat after clearing chats (e7aeb61)
- Remove fireworks-specific urls from thunderbolt models (0f00cb9)
- Add claude instructions (d000a2e)
- Clean up settings -> preferences (29a64b7)
- Tweak theme toggle (3b30741)
- Final chat auto-scroll cleanup and smoothness (4c5a1c2)
- Chat-ui scroll fix (0e820c9)
- Add missing sidebar trigger (00b7b9e)
- Revamp models screen (7a24329)
- Experimental extensions (7d727dc)
- Wip (c7cb42b)
- Wip (f4e4169)
- Semi-working (4b95c5e)
- Dark mode (43fb5ef)
- Axios -> ky (1b3025e)
- Mcp servers polish (4ab3481)
- Multiple mcp servers (02690ce)
- Global mcp connection (8a7e3f0)
- Improved tool calling ux (107531d)
- Chat ui fixes (20ca075)
- Streaming markdown (452b285)
- Working mcp (190eb83)
- Mcp server (f275c23)
- Back to fireworks (1e53b92)
- Cleanup, fix, and tests (bfb740c)
- Fix binary output in weather API proxy - add brotli support and manual decompression (e909630)
- Fix binary output issue in weather API proxy endpoint (b5d9e0c)
- Set default model to thunderbolt (ec9f0d2)
- Prepare for production deployment (f7f33ce)
- Proxy requests (5a2c9d3)
- Proxy requests for llm and tools (1f68a7f)
- Update thread names (0719870)
- Dont create new threads if there is already an empty thread (6167e6e)
- Suggestion buttons (21ea705)
- Ui improvements (b37a9e1)
- New Chat UX (#14) (3ad2c50)
- Cleanup (6dc54f9)
- Clear chats / sidebar formatting (90595df)
- Tool calling (5c2341c)
- Wip tasks ui (14bda67)
- Task list tool (ac89735)
- Update python backend (952b17a)
- Chat loading fixes (0b83188)
- Thunderbolt Rename (#7) (16d45ba)
- Update to Vercel AI SDK v5 (alpha) (#6) (1968377)
- Chat (c323f65)
- Cors, axios (d4b36dd)
- Add server for backend (54f7557)
- Prompt fixed (4c03da7)
- Add sample weather api call (93eaa9a)
- Move dev tools and ui kit into menu (ea3ce34)
- Update readme (4777bad)
- Working on Linux (#2) (b5a4c9f)
- Update readme (0bda905)
- Update readme (0353d1d)
- Model names (c1c42d6)
- Sideview min width (e0b67bd)
- Agent tool responses wip (f9a9611)
- Settings (7a76824)
- Accounts / settings / imap (66bfcf1)
- Accounts table settings page (2c99bc4)
- Redo migrations (f65aca5)
- Sideview styling (d1e53c6)
- Working sideview (41e005b)
- Working refactor (fd67e71)
- Sync threads with messages (b4e3bf5)
- Inbox sync / imap mailboxes (46fcdfd)
- Imap sync progress (ea3382d)
- Imap sync wip (9e0b735)
- Sideview wip (a3f1840)
- Sideview url state (2f94323)
- Sideview wip (bc2acc8)
- Select models working (af83654)
- Wip models (820ca56)
- Welcome wip (a26a743)
- Working action items (cda81d5)
- Wip (3ea818c)
- Welcome section wip (a4208af)
- Cloud embedding / hybrid poc (6c69fda)
- Better thread grouping (d1b8337)
- Search threads (cad16dc)
- Thread-level embeddings (7a55fff)
- Create threads (b69636c)
- Search working (75c28ca)
- Wip (9748981)
- Embedding e5 (51232d8)
- Wip (5bdea7a)
- Wip (c4a2170)
- Embedding optimizations (3f46b44)
- Embedding and dev tools (6611223)
- Embedder state control (ad2a66c)
- Embedding working (ff797c2)
- Always use separate threads (7de8774)
- Db pool/wal (270110b)
- Working vector search (a1a64db)
- Embeddings working ish (9408311)
- Embeddings wip (0dd2afb)
- Cleanup libsql (4ce3fc5)
- Wip (2979c77)
- Delete chat (d4b0e59)
- Wip (9ca4b18)
- Installed scroll area (7aa0126)
- Wip (67ed783)
- Wip (62574fd)
- Wip (87ca827)
- Wip (f76e3ac)
- Wip (570f0ca)
- Side nav wip (4ec9774)
- Settings button updating (f19866c)
- Wip (0632bf7)
- Dialog added (7c66148)
- Delete dialofg added (75ae556)
- Installed alert dialog (7358027)
- Installed resizable component (61d68a2)
- Wip (b5e7eb9)
- Wip (11a3e26)
- Wip (297778b)
- Wip (434b9e9)
- Wip (cf61bb3)
- Wip (3021903)
- Merge remote-tracking branch 'origin/jess-ui-react' (474e278)
- Wip (712cf66)
- Wip (f187ae1)
- Wip (a7ff5a4)
- Wip (2429ac2)
- Wip (1c1ffa0)
- Working imap sync (c81363f)
- Add dev tools (98c895a)
- Imap sync (b5dde2e)
- Create email message stable (1822c8d)
- Merge remote-tracking branch 'origin/jess-ui-react' (875ed6e)
- Wip (20e769b)
- Wip (152ea8c)
- Wip (066b777)
- Wip (c74e239)
- Wip (b162f76)
- Imap crate + frontend state (4261a30)
- List mailboxes (ef755ba)
- Merge remote-tracking branch 'origin/jess-ui-react' (18bab72)
- Wip (6dfd2f3)
- Wip (7ac0778)
- Wip (a021b06)
- Wip (dde6977)
- Wip (d7da263)
- Wip (9220a9c)
- Wip (97b8adf)
- Wip (26e1940)
- Wip (9ebc437)
- Wip (5664463)
- Wip (a9a829e)
- Wip (b53d70e)
- Mail card working in progress (14db738)
- Wip (094fa51)
- Wip. Going to work on select component (18c7b00)
- Email fetch wip (7b4f5fe)
- Better email parsing (00eb4c7)
- Load emails from backend (6495873)
- Cleanup + active chat (16f0ab3)
- Scroll to bottom on new message (8d065b8)
- Cleanup (9bb16e4)
- Working thread persistence (980edae)
- No strict mode (e5d9936)
- Wip (557cbff)
- Refine init (05b9ead)
- Cleanup (f9a0881)
- Rewrite in react (6d290c4)
- Wip (ad73429)
- Create new threads (b51d6ac)
- Update accounts settings page (e80c5d3)
- Simplified and working settings state (84699b9)
- Settings proxy reactivity (69fed78)
- Ui kit (55d27af)
- Wip (5e26156)
- Better settings (dca8e34)
- Cleanup (2299e68)
- Savable settings (3000be8)
- Cleanup unused code (e6e0732)
- Cleanup seaorm code (17f60cf)
- Reorganize migrations slightly (39d00bc)
- Drizzle migrations working (e0fcf89)
- Optional encryption key as 2nd argument for initing db (6700237)
- Cleanup after libsql merge (3f96739)
- Encryption working (bf6eda1)
- Wip (f8ecb30)
- Drizzle vector wip (ff8c8d0)
- Poc working (8d4206f)
- Almost there (f38ad59)
- Libsql plugin wip (fb28492)
- Poc working (d1e1cfd)
- Add drizzle dep (60ffad0)
- Cleanup + fix crashes (b398078)
- Keyring conditional (85ba4f3)
- Settings wip (d9b56d5)
- Ui wip (3078eda)
- Cleanup (d4cca01)
- Tailwind button (cb44b03)
- Sqlite settings (daad3a0)
- Wip secrets (8508503)
- Organize routes (4ee93f5)
- Solid router (8017290)
- Remove overscroll behavior (d90b8a6)
- Email search poc working (eee7bca)
- Hide/show dock icon when app is open/closed (30c8216)
- Hide dock icon (7c7d5a9)
- Working (7670da2)
- System tray (e05e61f)
- Vite analyzer (fa6b454)
- Configure window settings (354442f)
- Organize ai / chat logic (d13eabb)
- Cleanup (6700b74)
- Dont use http plugin -> fix streaming (8769717)
- Styling (6cafc31)
- Chat ui wip (0f083a2)
- Setting up ui frameworks (49e164c)
- Solidjs (8ade1f0)
- Load openai env file (ea774cc)
- Working chat with tools (c05f684)
- Working (dffce80)
- Semi-working vercel ai sdk (6f4193e)
- Enable inspection in finder for now (f95ab0a)
- Cleanup (7a558eb)
- Ios working-ish (b592ac0)
- Html2text and dont reload on local db change (99edfc4)
- Parse emails + cargo speedups (b0fbe06)
- Entities (df3443f)
- Migrations (f2418a7)
- Run db on start (9f35dae)
- Seaorm (8fff9b8)
- Workspace (ac97015)
- Mailparse (8edd626)
- Imap idle (52f58df)
- Summarize many example for benchmarking (e17e5bd)
- Make embed-many efficient (a7765a6)
- Embed-many and fix embedding to work on metal (fe07a83)
- Set up rust examples + update readme (5f2cb37)
- Imap client hello world (c45b6c4)
- Isolation pattern: https://tauri.app/concept/inter-process-communication/isolation/ (700dfc5)
- Set up rust profiles for binary size improvement: https://tauri.app/concept/size/ (369035d)
- Setup tauri project (502b7b3)