Features
- feat(ai): replace Groq with DeepSeek + Moonshot (Kimi) providers36fdd954
- feat(ai): OpenRouter + AWS Bedrock, provider-following embeddings, 3 tiers, Gemini 3 defaults3680f08f
- feat: support multiple AI models410bc1da
- feat(api): auto-verify agency subdomains + validate UI languages7b04fc7d
- feat(cli): add Enterprise Edition commands + safer community updateb360ac53
Fixes
- fix(ai): resolve ruff lint (E402 import order, F401 unused import in tests)2acdd24e
- fix(workflow): skip dispatch for pull requests from forks to prevent failures1aca8e25
- fix(locales): complete Ukrainian wiring (missing keys + backend support)f9b4ea2a
- fix: address CodeQL stack-trace exposure + review regressions on PR #816e3dfd4ea
- fix(api): restrict custom-domain auto-verify to the org's own slug host1822bea7
- fix(web): make next-lint pass on changed filesff9732fe
- fix(web): clear strict-eslint errors in changed files9be19445
- fix: resolve path-injection alerts + raise patch coverage to ~100%4cd308a9
- fix(deps): update dependency google-genai to v2ec492b51
- fix(api): replace deprecated datetime.utcnow() with timezone-aware equivalentb7096697
- fix: high-severity bug fixes + backend security hardeninga0e38c67
- fix(ci): resolve pathspecs relative to working-directory in strict gate66b12feb
- fix(deps): merge dev and regenerate uv.lock for workos 8.0.0 + cryptography 48.0.13f3582c5
- fix(deps): resolve workos 8.0.0 dependency conflict by upgrading cryptography to 48.0.1037996b2
- fix(deps): update all non-major dependencies3306243b
- fix: skip verification email in OSS/self-hosted mode62cdaefc
- fix: show email verification banner based on email_verified fieldcff84adb
- fix(api): always open text files as UTF-80a59f324
- fix(web): repair memoization in HeaderProfileBox82d76786
- fix(web): compute derived state during render instead of effect+setStatedc507b20
- fix(web): hoist render-defined components to module level7d07037c
- fix(web): resolve conditional hook calls (rules-of-hooks violations)42bc0fc4
- fix(ci): restore a working ESLint setup and stop masking lint failuresd56530c8
- fix(locales): restore ukrainian translations in multiple language filese3e4e53c
- fix(deps): update dependency workos to v862e47750
- fix(deps): update dependency unsplash-js to v8c46b6f9a
- fix(deps): update dependency redis to v8ea8012a0
- fix(deps): update dependency commander to v15c9a4985a
- fix(deps): update all non-major dependenciesdbc11f49
- Merge pull request #823 from learnhouse/fix/notify-infra-skip-forks54576f36
- Merge pull request #794 from learnhouse/worktree-fix-79246cd11c5
- Merge pull request #816 from learnhouse/security-and-bugs-fix2d910768
- Merge pull request #786 from learnhouse/renovate/google-genai-2.x36764181
- Merge pull request #817 from tongshu2023/fix/deprecated-utcnowa9ee456a
- Merge pull request #810 from tongshu2023/fix/rules-of-hooks-violations1b70de3d
- Merge pull request #812 from tongshu2023/fix/derived-state-in-effectsc7047aea
- Merge pull request #813 from tongshu2023/fix/api-utf8-encodingccbd7e76
- Merge pull request #809 from tongshu2023/fix/web-lint-unmask-800e60e69dc
- Merge pull request #805 from learnhouse/renovate/workos-8.xa35eec3a
- Merge pull request #807 from learnhouse/renovate/all-minor-patch178a4f4b
- Merge pull request #803 from learnhouse/renovate/commander-15.x20c91b56
- Merge pull request #806 from learnhouse/renovate/unsplash-js-8.x0c0f404a
- Merge pull request #804 from learnhouse/renovate/redis-8.xf30d6c63
Refactoring
- refactor(enrollments): rename timestamp to enrolled_at and update query logic for recent enrollments7bb92493
Documentation
- docs(ai): clarify Gemini-3 default upgrade in the upgrade note (requires Gemini 3 access; how to pin 2.5)6866932c
- docs: upgrade dependencies to latest (Next.js 16.2.9)9dbbd6be
- docs: wire docs site for the monorepo and Vercel4c326298
- docs: add documentation site under docs/b38b7759
Maintenance
- chore(ai): review cleanups — stale groq/embeddings comments, tiers note, playground iteration guard1ce2604d