v0.21.0 ships a TypeError at require time:
(0, import_provider_utils6.createProviderToolFactoryWithOutputSchema)
is not a function
Cause: PR #158 added @ai-sdk/xai, @ai-sdk/mistral, @ai-sdk/deepseek.
All three pull @ai-sdk/provider-utils@4, while core ai@5 is pinned to
@ai-sdk/provider-utils@3. pnpm hoisting + electron-builder's asar pack
pick the wrong version at runtime and the app refuses to open.
Fix: drop the three SDK packages. All three services expose
OpenAI-compatible endpoints, so route them through createOpenAI with
the matching base URL — same pattern GLM and Ollama already use. User-
facing provider list is unchanged.
Also extract the provider switch into ai-providers.ts so it can be
unit-tested without pulling in Electron, and:
- ai-providers.test.ts smoke-tests createProviderClient for every
AIProvider. Catches any future require-time crash from an @ai-sdk
package.
- ai-deps.test.ts walks node_modules/@ai-sdk and asserts every package
agrees on the provider-utils major version. This is the invariant
that #158 violated; the suite now fails fast if it breaks again.
CI guardrails:
- New ci.yml runs typecheck + tests on every push/PR to main. There
was no PR check before, which is how #158 landed green.
- build.yml and build-artifacts.yml gate all platform builds behind
a new `verify` job running the same checks, so a broken main can
never produce a release artifact.
- Artifact workflow now uses --frozen-lockfile like the release one.
* docs(plan): add docs site revamp design
Root-causes the slow layout transitions on docs.datapeek.dev
(Framer Motion 500ms fade, sidebar tree re-sent per nav, version
lag) and plans phased fix: triage, version bumps, MDX brittleness,
prerender, brand polish, follow-up distinctive design pass.
* docs(plan): add docs site revamp implementation plan
Phased tasks covering Framer Motion / tree-reload removal,
version bumps (Fumadocs 16.7, TanStack 1.168), remark plugins
for resilient MDX parsing, CI types:check gate, prerender, and
typography polish. Validation checklist at the end.
* perf(docs): remove page fade-in and move tree to parent route
Framer Motion wrapper added a 500ms fade on every nav and the
sidebar tree was re-sent and re-transformed per navigation. Move
the tree to a new /docs parent layout route with staleTime:Infinity
and drop the motion wrapper + CSS fade-in on main.
Navigating /docs/* now feels instant.
* chore(docs): bump fumadocs to 16.7 / 14.2 and switch to useContent
fumadocs-ui/core 16.2.1 -> 16.7.x and fumadocs-mdx 14.0.4 -> 14.2.x.
fumadocs-mdx 14.2 tightened ClientLoader typings so getComponent()
returns FC<never> by default. Switch to clientLoader.useContent()
which is the canonical Fumadocs-on-TanStack pattern anyway — cleaner
and handles Suspense internally.
* chore(docs): bump tanstack router/start to 1.168/1.167
Bumps @tanstack/react-router to ^1.168.10, @tanstack/react-start to
^1.167.16, and @tanstack/react-router-devtools to ^1.166.11. Catches
~34 minor versions of hydration, loader, scroll restoration, and
routing fixes. No source changes required - existing createFileRoute,
createServerFn, inputValidator, and createRouter APIs remain compatible.
* fix(docs): harden MDX parsing and add types:check CI gate
Add remark-gfm + remark-smartypants to fumadocs MDX config so
prose containing numeric operators, comparisons, and angle
brackets parses cleanly without author discipline. The workaround
from 60282cd (backtick-wrapping operators) is no longer strictly
needed, though we leave existing wrappers in place.
Add .github/workflows/docs-types.yml that runs pnpm --filter docs
types:check on every PR touching apps/docs. This parses every MDX
file and fails the build if anything regresses — catches the kind
of issue that hit prod in 60282cd.
* docs(plan): capture post-revamp perf baseline and defer prerender
Prerender attempted but blocked by a race between tanstack-start-
plugin-core and nitro@3.0.1-alpha.1 in the preview-server handoff
(fetches the first route before the nitro child process has bound
to its port). Runtime is fine — only the prerender crawl fails.
Documented the deferral in the baseline file.
Baseline measurements taken against the non-prerendered production
build for future regression comparisons.
* style(docs): tighten typography scale and body rhythm
Smaller h1/h2/h3 (1.875/1.25/1.0625 rem) and body line-height 1.6
match the 'dense but scannable' principle in CLAUDE.md and bring
the docs closer to Linear/Raycast density without sacrificing
readability.
* docs(plan): mark docs revamp validation checklist and note follow-ups
Code-level items verified, visual items flagged for human check.
Honest on the LCP number: 7.8s under Lighthouse mobile throttling
does not meet the 1.5s target, though TBT is 0ms and server latency
is ~20ms so perceived perf is far better than the mobile score.
Broken-internal-links check dropped from Phase 2 — noted as
follow-up.
* fix(docs): scope prose link color so landing hero CTA is readable
The global \`a { color: var(--dp-accent) }\` rule was leaking into
\`routes/index.tsx\` and overriding the landing page CTA's inline
\`text-[#0a0a0b]\` class. Because the CTA background is also
var(--dp-accent), the button text was invisible-on-itself.
Scope the rule to \`article a\` so it only styles MDX prose
content (docs pages wrap in <article> via DocsPage; landing uses
<main> via HomeLayout). Sidebar, TOC, and navbar links already
have their own scoped rules and are unaffected.
This bug was pre-existing (introduced in 04268973, 2025-11-30) but
surfaced during the docs revamp visual review.
* fix(docs): resolve type checking errors and commit routeTree.gen.ts
Updates the cask auto-update workflow to push formula changes to
Rohithgilla12/homebrew-tap instead of committing to this repo.
Requires HOMEBREW_TAP_TOKEN secret for cross-repo push.
* wip apple signing
* feat: update build file
* chore: remove unwated overrides
* chore: remove unused macOS folder entitlements
Remove NSDocumentsFolderUsageDescription and NSDownloadsFolderUsageDescription
from electron-builder config since the app does not access Documents or
Downloads folders.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* chore: add total downloads
---------
Co-authored-by: Claude <noreply@anthropic.com>
- Builds for macOS, Linux, and Windows using GitHub-hosted runners
- Triggered by version tags (v*) or manual dispatch
- Uploads build artifacts and creates draft releases