## kodustech/kodus-ai — web-1.1.28…web-1.1.29

_86 commits._

### Features
- **add better error handling for llm/byok errors** (eed757a)
- **Fixing logic to add rules on global or repository. Fixing search field** (9f60d3b)
- **feat(kody-rules): confirm-on-delete for global rule sources, Save is add-only** (9eed7d1)
- **feat(kody-rules): gate self-hosted global rules import by license too** (1787cdd)
- **feat(kody-rules): plan-gate global rules import (free/trial/paid)** (02a4af9)
- **feat(code-review): skip review on global Kody Rules source repositories** (36bb310)
- **feat(kody-rules): sync global rules from selected source repositories** (2e0c919)
- **add better pagination to bitbucket** (87ea905)

### Fixes
- **Merge pull request #1624 from kodustech/fix/health-check-repoll** (bad9ce2)
- **Merge pull request #1623 from kodustech/fix/getcommits-transient-swallow** (40d2e2c)
- **fix(http): match undici timeout errors in isTransientFetchError** (a57f1c3)
- **fix(platform): rethrow transient fetch failures from getCommits swallow** (84c2790)
- **fix onboarding telemetry test mock** (e8331c5)
- **Merge pull request #1621 from kodustech/fix/gitlab-suggestions** (ee211c1)
- **Merge pull request #1584 from kodustech/fix/kody-language-flash-on-refresh** (b418dbe)
- **fix(settings): scope language seed to initial team and drop debug logs** (ec7b9fb)
- **Merge pull request #1619 from kodustech/fix/cloud-byok-refresh** (addcca2)
- **Merge pull request #1610 from kodustech/fix/gitlab-custom-bot-username-review-commands** (033bc2f)
- **fix(settings): eliminate language flash on refresh via generic SSR-seed bridge** (b105cf1)
- **Merge pull request #1616 from mzglinski/fix/1591-ai7-cached-token-tracking** (5eaecd1)
- **Merge pull request #1516 from Fanduzi/agent/fix-gitlab-draft-wip** (bd379da)
- **Merge pull request #1618 from kodustech/fix/cloud-app-token-refresh** (5bf8454)
- **fix: isHeavyReviewCommand fallback to hardcoded @kody pattern** (308630d)
- **fix(observability): read ai@7 cache/reasoning usage fields** (e69428b)
- **Merge pull request #1615 from kodustech/fix/onboarding-telemetry-hang** (d47b15e)
- **fix(github): scope the suspendedAt schema verdict per API base URL** (1a02297)
- **fix(onboarding): time-bound the telemetry member lookup; stop doomed suspendedAt batches** (6d241ba)
- **Merge pull request #1614 from kodustech/fix/invitation-page** (89ef6e3)
- **Merge pull request #1612 from kodustech/fix/matrix-integration-token** (5d804c3)
- **fix(github): list/create repo webhooks under the repo's owner, not the account's** (d720755)
- **fix(platform): catch fire-and-forget webhook creation rejections** (a9d2ffe)
- **fix: support custom bot username for GitLab review commands** (1d0d3a3)
- **fix(rabbitmq): single-source workflow queue arguments across declarers** (7ec9803)
- **fix(rabbitmq): assert workflow job queues before binding to DLX** (e4d6f62)
- **Merge pull request #1607 from kodustech/fix/matrix-integration-token** (2d3dd80)
- **Merge pull request #1603 from kodustech/fix/matrix** (e2de7ea)
- **Merge pull request #1601 from kodustech/fix/clearer-llm-error-messaging** (dd71907)
- **Merge pull request #1600 from kodustech/fix/delete-per-repository-function** (4d3f022)
- **Merge pull request #1598 from kodustech/fix/list-repositories** (c92df09)
- **Merge pull request #1594 from kodustech/fix/byok-change-button-confusion** (5708237)
- **Merge pull request #1597 from kodustech/fix/import-global-and-repository-rule** (e76f299)
- **Merge pull request #1596 from kodustech/fix/text-in-progress-bar** (56db53c)
- **Merge pull request #1592 from kodustech/fix/needs-attention-stuck** (de998a3)
- **fix: modified so the model form isn't cleared after clicking "change"** (a028ea0)
- **fix env** (0235bec)
- **fix(kody-rules): add global_rules_source_repositories to org-param enum** (60c1270)
- **Merge pull request #1587 from kodustech/fix/bitbucket-onboarding-get-prs** (630018e)
- **fix(evals): classify provider billing/quota exhaustion as infra** (fe04189)
- **fix(evals): pr-summary runner null-guard + env-error classification** (282dabc)
- **fix(code-review): don't force temperature 0 in PR summary** (7ce1836)
- **fix(gitlab): respect work_in_progress for draft MRs** (81e703c)

### Backend
- **Merge pull request #1622 from kodustech/malinosqui/save-github-org-dev** (924f95a)
- **persist code host member count** (15e5301)
- **Discarded phantom suggestions** (d3a569a)
- **Fixing gitlab range to create comments only in lines added** (0c73863)
- **Merge pull request #1617 from mzglinski/chore/1590-langfuse-ai-sdk7-telemetry** (e6396a2)
- **Fixing invitation** (561e53c)
- **Fixing delete repository configuration function** (3547102)
- **Adding front pagination in get repository** (58e58bf)
- **Fixing text** (d2ba32a)
- **Merge pull request #1595 from kodustech/worktree-global-rules-sync** (535082d)
- **Adding documentation about import global rules** (082aa61)
- **reap orphaned jobs** (a4a9855)
- **Merge pull request #1588 from kodustech/feat/eval-generate-pr-summary** (9a041c3)

### Tests
- **test(e2e): don't let an incidental non-success row end the health poll** (863c7df)
- **test(e2e): refresh cloud tenants' BYOK key at matrix run start** (8411370)
- **test: mock toAiSdkTelemetryArgs in Langfuse call-site specs** (32841a2)
- **test(e2e): author product-visible events with the PAT, not the App bot** (04a431c)
- **test(e2e): re-mint GitHub App installation token inside long polls** (17a4b9d)
- **test(e2e): purge stale tunnel webhooks in bitbucket cleanup** (d80fea0)
- **test(e2e): capture the full worker log window in server evidence** (983fff3)
- **test(e2e): diagnose why bitbucket code-review-basic finds no review** (7f83b14)
- **test(e2e): per-cell circuit breaker on GitHub rate-limit exhaustion** (7c900a3)
- **test(e2e): preflight GitHub bot-account rate limits before the matrix** (dc4da89)
- **test(kody-rules): provide OrganizationParametersService in listener spec** (a04e958)
- **test(rbac): register global-rules endpoints in the RBAC manifest** (91efc6c)
- **test(kody-rules): cover global-rules sync purge and reconciliation** (c6d7e5b)
- **test(evals): cover new-commit summary behaviours (behaviourForNewCommits)** (fde4118)
- **test(evals): add PR-summary matrix eval (generate + post + route + compose)** (6c16055)

### Chore
- **chore: drop stray migration edit unrelated to bot-username feature** (075a6f3)
- **chore(observability): register Langfuse AI SDK 7 telemetry** (ca01af5)
- **ci(e2e): dedicated GitHub account for the product integration credential** (d3edf56)
- **ci(e2e): feed the GitHub bot-token pool in the self-hosted matrix** (607d5d2)
- **refactor(kody-rules): address global-rules review feedback** (4ae4e98)
- **chore(env): declare GLOBAL_RULES_IMPORT_TIER_OVERRIDE in env schema** (1b8fcfc)
- **ci(evals): pr-summary gate tolerates infra (exit 2) like the finder gate** (a2e7b9c)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/kodustech/kodus-ai?utm_source=github-action)._