* feat(bitbucket): support glob patterns in repository exclusions
Update Bitbucket Cloud and Server exclusion logic to support glob
patterns (e.g., "org/repo*") in the exclude.repos configuration,
matching the documented behavior and aligning with other providers
(GitHub, GitLab, Gitea, Azure DevOps).
Changes:
- Add micromatch import for pattern matching
- Replace Array.includes() with micromatch.isMatch() in
cloudShouldExcludeRepo and serverShouldExcludeRepo functions
- Add reason logging for exclusion decisions to match GitHub's pattern
This enables users to exclude repositories using wildcard patterns
as documented in the Bitbucket Cloud connection documentation.
* update changelog
---------
Co-authored-by: Jose Hernandez <jose.hernandez@emilabs.ai>
Co-authored-by: bkellam <bshizzle1234@gmail.com>
When syncing generic-git-host connections with thousands of repositories,
unbounded Promise.all caused resource exhaustion (EAGAIN errors) by spawning
too many concurrent git processes. This resulted in valid repositories being
incorrectly skipped during sync.
- Add p-limit to control concurrent git operations (max 100)
- Follow existing pattern from github.ts for consistency
- Prevents file descriptor and process limit exhaustion
- Uses rolling concurrency to avoid head-of-line blocking
Fixes#590
* properly handle emails for github app auth case
* add docs info for auth through github app
* more info in docs for user auth perms
* modify review agent env var names
* github app service auth
* coderabbit suggestions
* fixes
* fix build
* support passing in token manually in auth header
* remove unneeded PAT embed check
* cleanup authheader usage
* changelog
* var name typo
* unset auth header in fetch
* move unset to finally in fetch
* initial ado pol
* add support for ado logo
* default to main instead of HEAD when generating file url
* bump zoekt
* fix(web) Fix "At least one project, user, or group must be specified" for GitLab configs in web configurator (#512)
* feat(ask_sb): Fallback on fromNodeProviderChain if access key or sessionToken are not provided (#513)
* Quote branches argument in zoekt.ts to fix Pipe (#506)
* remove connections settings page
* fix styling and remove additional components
* add changelog
* add docs
* fix build error
* bump zoekt
* fix broken links for ado docs
* fix HEAD support for ado
* changelog
---------
Co-authored-by: Brendan Kellam <bshizzle1234@gmail.com>
Co-authored-by: Michael Dekoski <michaeldekoski@gmail.com>
* migrate anonymous access logic out of ee
* add anonymous access toggle
* handle anon toggle properly based on perms
* add forceEnableAnonymousAccess setting
* add docs for access settings
* change forceEnableAnonymousAccess to be an env var
* add FORCE_ENABLE_ANONYMOUS_ACCESS to list in docs
* add back the enablePublicAccess setting as deprecated
* add changelog entry
* fix build errors
* add news entry for anonymous access
* feedback
## Problem
If a repository is added **after** a search context (e.g., a new repository is synced from the code host), then it will never be added to the context even if it should be included. The workaround is to restart the instance.
## Solution
This PR adds a call to re-sync all search contexts whenever a connection is successfully synced. This PR adds the `@sourcebot/shared` package that contains `syncSearchContexts.ts` (previously in web) and it's dependencies (namely the entitlements system).
## Why another package?
Because the `syncSearchContexts` call is now called from:
1. `initialize.ts` in **web** - handles syncing search contexts on startup and whenever the config is modified in watch mode. This is the same as before.
2. `connectionManager.ts` in **backend** - syncs the search contexts whenever a connection is successfully synced.
## Follow-up devex work
Two things:
1. We have several very thin shared packages (i.e., `crypto`, `error`, and `logger`) that we can probably fold into this "general" shared package. `schemas` and `db` _feels_ like they should remain separate (mostly because they are "code-gen" packages).
2. When running `yarn dev`, any changes made to the shared package will only get picked if you `ctrl+c` and restart the instance. Would be nice if we have watch mode work across package dependencies in the monorepo.