feat(worker): add env var to disable repo-driven permission syncing - #989

Merged
brendan-kellam merged 4 commits into
mainfrom
brendan/permission-sync-user-repo-driven-flags-SOU-634
Mar 10, 2026
Merged

feat(worker): add env var to disable repo-driven permission syncing#989
brendan-kellam merged 4 commits into
mainfrom
brendan/permission-sync-user-repo-driven-flags-SOU-634

Conversation

@brendan-kellam

@brendan-kellambrendan-kellam commented Mar 10, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds PERMISSION_SYNC_REPO_DRIVEN_ENABLED (default true) to enable/disable repo-driven permission syncing
  • User-driven syncing always runs when EXPERIMENT_EE_PERMISSION_SYNC_ENABLED=true
  • Updates docs in environment-variables.mdx and permission-syncing.mdx

Closes SOU-634

Test plan

  • Set EXPERIMENT_EE_PERMISSION_SYNC_ENABLED=true and PERMISSION_SYNC_REPO_DRIVEN_ENABLED=false — verify only user-driven syncer starts
  • Leave PERMISSION_SYNC_REPO_DRIVEN_ENABLED unset (default true) — verify both syncers start as before

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added ability to enable/disable repo-driven permission syncing via environment variable.
    • Introduced configurable interval setting for repo-driven sync operations.
  • Documentation

    • Updated permission syncing documentation with Azure DevOps Cloud and Server support information.

brendan-kellamand others added 2 commits March 9, 2026 21:06
…repo driven permission syncing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions

This comment has been minimized.

@coderabbitai

coderabbitaiBot commented Mar 10, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b07ca834-cad8-4637-be95-f52c5f1d8662

📥 Commits

Reviewing files that changed from the base of the PR and between fa8c1d5 and a8f77ec.

📒 Files selected for processing (5)
  • CHANGELOG.md
  • docs/docs/configuration/environment-variables.mdx
  • docs/docs/features/permission-syncing.mdx
  • packages/backend/src/index.ts
  • packages/shared/src/env.server.ts

Walkthrough

Adds a new environment flag PERMISSION_SYNC_REPO_DRIVEN_ENABLED (default true), exposes it in the runtime env schema, updates docs and changelog, and gates repo-driven permission sync scheduler startup behind that flag during application initialization.

Changes

Cohort / File(s)Summary
Environment Schema
packages/shared/src/env.server.ts
Add PERMISSION_SYNC_REPO_DRIVEN_ENABLED boolean to the EXPERIMENT env block (default true) for runtime validation/export.
Scheduler Initialization
packages/backend/src/index.ts
Within entitlement check for permission-syncing, only call repoPermissionSyncer.startScheduler() when PERMISSION_SYNC_REPO_DRIVEN_ENABLED is 'true'; accountPermissionSyncer.startScheduler() remains invoked as before.
Documentation & Changelog
CHANGELOG.md, docs/docs/configuration/environment-variables.mdx, docs/docs/features/permission-syncing.mdx
Document the new PERMISSION_SYNC_REPO_DRIVEN_ENABLED variable (default true), add repo-driven sync interval setting and platform support updates, and record entry in changelog.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor AppInit as Application
participant Env as Environment
participant Ent as EntitlementService
participant Repo as RepoPermissionSyncer
participant Account as AccountPermissionSyncer
AppInit->>Env: read PERMISSION_SYNC_REPO_DRIVEN_ENABLED
AppInit->>Ent: hasEntitlement("permission-syncing")?
Ent-->>AppInit: true
alt PERMISSION_SYNC_REPO_DRIVEN_ENABLED == "true"
AppInit->>Repo: repoPermissionSyncer.startScheduler()
Repo-->>AppInit: scheduler started
else PERMISSION_SYNC_REPO_DRIVEN_ENABLED != "true"
AppInit->>Repo: do not start repo scheduler
end
AppInit->>Account: accountPermissionSyncer.startScheduler()
Account-->>AppInit: scheduler started
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested reviewers

  • msukkari
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately summarizes the main change: adding environment variables to independently enable/disable user-driven and repo-driven permission syncing, which is the core objective of the PR.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch brendan/permission-sync-user-repo-driven-flags-SOU-634

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@brendan-kellambrendan-kellam changed the title feat(backend): add env vars to independently enable/disable user and repo driven permission syncingfeat(backend): add env var to disable repo-driven permission syncingMar 10, 2026
…m support table
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@brendan-kellambrendan-kellam changed the title feat(backend): add env var to disable repo-driven permission syncingfeat(worker): add env var to disable repo-driven permission syncingMar 10, 2026
@brendan-kellam
brendan-kellam merged commit ab1ff6d into mainMar 10, 2026
7 checks passed
@brendan-kellam
brendan-kellam deleted the brendan/permission-sync-user-repo-driven-flags-SOU-634 branch March 10, 2026 04:15
@github-actionsgithub-actionsBot mentioned this pull request Mar 10, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@brendan-kellam
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(worker): add env var to disable repo-driven permission syncing - #989

Merged
brendan-kellam merged 4 commits into
mainfrom
brendan/permission-sync-user-repo-driven-flags-SOU-634
Mar 10, 2026
Merged

feat(worker): add env var to disable repo-driven permission syncing#989
brendan-kellam merged 4 commits into
mainfrom
brendan/permission-sync-user-repo-driven-flags-SOU-634

Conversation

@brendan-kellam

@brendan-kellambrendan-kellam commented Mar 10, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds PERMISSION_SYNC_REPO_DRIVEN_ENABLED (default true) to enable/disable repo-driven permission syncing
  • User-driven syncing always runs when EXPERIMENT_EE_PERMISSION_SYNC_ENABLED=true
  • Updates docs in environment-variables.mdx and permission-syncing.mdx

Closes SOU-634

Test plan

  • Set EXPERIMENT_EE_PERMISSION_SYNC_ENABLED=true and PERMISSION_SYNC_REPO_DRIVEN_ENABLED=false — verify only user-driven syncer starts
  • Leave PERMISSION_SYNC_REPO_DRIVEN_ENABLED unset (default true) — verify both syncers start as before

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added ability to enable/disable repo-driven permission syncing via environment variable.
    • Introduced configurable interval setting for repo-driven sync operations.
  • Documentation

    • Updated permission syncing documentation with Azure DevOps Cloud and Server support information.

brendan-kellamand others added 2 commits March 9, 2026 21:06
…repo driven permission syncing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions

This comment has been minimized.

@coderabbitai

coderabbitaiBot commented Mar 10, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b07ca834-cad8-4637-be95-f52c5f1d8662

📥 Commits

Reviewing files that changed from the base of the PR and between fa8c1d5 and a8f77ec.

📒 Files selected for processing (5)
  • CHANGELOG.md
  • docs/docs/configuration/environment-variables.mdx
  • docs/docs/features/permission-syncing.mdx
  • packages/backend/src/index.ts
  • packages/shared/src/env.server.ts

Walkthrough

Adds a new environment flag PERMISSION_SYNC_REPO_DRIVEN_ENABLED (default true), exposes it in the runtime env schema, updates docs and changelog, and gates repo-driven permission sync scheduler startup behind that flag during application initialization.

Changes

Cohort / File(s)Summary
Environment Schema
packages/shared/src/env.server.ts
Add PERMISSION_SYNC_REPO_DRIVEN_ENABLED boolean to the EXPERIMENT env block (default true) for runtime validation/export.
Scheduler Initialization
packages/backend/src/index.ts
Within entitlement check for permission-syncing, only call repoPermissionSyncer.startScheduler() when PERMISSION_SYNC_REPO_DRIVEN_ENABLED is 'true'; accountPermissionSyncer.startScheduler() remains invoked as before.
Documentation & Changelog
CHANGELOG.md, docs/docs/configuration/environment-variables.mdx, docs/docs/features/permission-syncing.mdx
Document the new PERMISSION_SYNC_REPO_DRIVEN_ENABLED variable (default true), add repo-driven sync interval setting and platform support updates, and record entry in changelog.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor AppInit as Application
participant Env as Environment
participant Ent as EntitlementService
participant Repo as RepoPermissionSyncer
participant Account as AccountPermissionSyncer
AppInit->>Env: read PERMISSION_SYNC_REPO_DRIVEN_ENABLED
AppInit->>Ent: hasEntitlement("permission-syncing")?
Ent-->>AppInit: true
alt PERMISSION_SYNC_REPO_DRIVEN_ENABLED == "true"
AppInit->>Repo: repoPermissionSyncer.startScheduler()
Repo-->>AppInit: scheduler started
else PERMISSION_SYNC_REPO_DRIVEN_ENABLED != "true"
AppInit->>Repo: do not start repo scheduler
end
AppInit->>Account: accountPermissionSyncer.startScheduler()
Account-->>AppInit: scheduler started
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested reviewers

  • msukkari
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately summarizes the main change: adding environment variables to independently enable/disable user-driven and repo-driven permission syncing, which is the core objective of the PR.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch brendan/permission-sync-user-repo-driven-flags-SOU-634

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@brendan-kellambrendan-kellam changed the title feat(backend): add env vars to independently enable/disable user and repo driven permission syncingfeat(backend): add env var to disable repo-driven permission syncingMar 10, 2026
…m support table
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@brendan-kellambrendan-kellam changed the title feat(backend): add env var to disable repo-driven permission syncingfeat(worker): add env var to disable repo-driven permission syncingMar 10, 2026
@brendan-kellam
brendan-kellam merged commit ab1ff6d into mainMar 10, 2026
7 checks passed
@brendan-kellam
brendan-kellam deleted the brendan/permission-sync-user-repo-driven-flags-SOU-634 branch March 10, 2026 04:15
@github-actionsgithub-actionsBot mentioned this pull request Mar 10, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@brendan-kellam
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(worker): add env var to disable repo-driven permission syncing - #989

Merged
brendan-kellam merged 4 commits into
mainfrom
brendan/permission-sync-user-repo-driven-flags-SOU-634
Mar 10, 2026
Merged

feat(worker): add env var to disable repo-driven permission syncing#989
brendan-kellam merged 4 commits into
mainfrom
brendan/permission-sync-user-repo-driven-flags-SOU-634

Conversation

@brendan-kellam

@brendan-kellambrendan-kellam commented Mar 10, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds PERMISSION_SYNC_REPO_DRIVEN_ENABLED (default true) to enable/disable repo-driven permission syncing
  • User-driven syncing always runs when EXPERIMENT_EE_PERMISSION_SYNC_ENABLED=true
  • Updates docs in environment-variables.mdx and permission-syncing.mdx

Closes SOU-634

Test plan

  • Set EXPERIMENT_EE_PERMISSION_SYNC_ENABLED=true and PERMISSION_SYNC_REPO_DRIVEN_ENABLED=false — verify only user-driven syncer starts
  • Leave PERMISSION_SYNC_REPO_DRIVEN_ENABLED unset (default true) — verify both syncers start as before

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added ability to enable/disable repo-driven permission syncing via environment variable.
    • Introduced configurable interval setting for repo-driven sync operations.
  • Documentation

    • Updated permission syncing documentation with Azure DevOps Cloud and Server support information.

brendan-kellamand others added 2 commits March 9, 2026 21:06
…repo driven permission syncing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions

This comment has been minimized.

@coderabbitai

coderabbitaiBot commented Mar 10, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b07ca834-cad8-4637-be95-f52c5f1d8662

📥 Commits

Reviewing files that changed from the base of the PR and between fa8c1d5 and a8f77ec.

📒 Files selected for processing (5)
  • CHANGELOG.md
  • docs/docs/configuration/environment-variables.mdx
  • docs/docs/features/permission-syncing.mdx
  • packages/backend/src/index.ts
  • packages/shared/src/env.server.ts

Walkthrough

Adds a new environment flag PERMISSION_SYNC_REPO_DRIVEN_ENABLED (default true), exposes it in the runtime env schema, updates docs and changelog, and gates repo-driven permission sync scheduler startup behind that flag during application initialization.

Changes

Cohort / File(s)Summary
Environment Schema
packages/shared/src/env.server.ts
Add PERMISSION_SYNC_REPO_DRIVEN_ENABLED boolean to the EXPERIMENT env block (default true) for runtime validation/export.
Scheduler Initialization
packages/backend/src/index.ts
Within entitlement check for permission-syncing, only call repoPermissionSyncer.startScheduler() when PERMISSION_SYNC_REPO_DRIVEN_ENABLED is 'true'; accountPermissionSyncer.startScheduler() remains invoked as before.
Documentation & Changelog
CHANGELOG.md, docs/docs/configuration/environment-variables.mdx, docs/docs/features/permission-syncing.mdx
Document the new PERMISSION_SYNC_REPO_DRIVEN_ENABLED variable (default true), add repo-driven sync interval setting and platform support updates, and record entry in changelog.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor AppInit as Application
participant Env as Environment
participant Ent as EntitlementService
participant Repo as RepoPermissionSyncer
participant Account as AccountPermissionSyncer
AppInit->>Env: read PERMISSION_SYNC_REPO_DRIVEN_ENABLED
AppInit->>Ent: hasEntitlement("permission-syncing")?
Ent-->>AppInit: true
alt PERMISSION_SYNC_REPO_DRIVEN_ENABLED == "true"
AppInit->>Repo: repoPermissionSyncer.startScheduler()
Repo-->>AppInit: scheduler started
else PERMISSION_SYNC_REPO_DRIVEN_ENABLED != "true"
AppInit->>Repo: do not start repo scheduler
end
AppInit->>Account: accountPermissionSyncer.startScheduler()
Account-->>AppInit: scheduler started
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested reviewers

  • msukkari
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately summarizes the main change: adding environment variables to independently enable/disable user-driven and repo-driven permission syncing, which is the core objective of the PR.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch brendan/permission-sync-user-repo-driven-flags-SOU-634

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@brendan-kellambrendan-kellam changed the title feat(backend): add env vars to independently enable/disable user and repo driven permission syncingfeat(backend): add env var to disable repo-driven permission syncingMar 10, 2026
…m support table
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@brendan-kellambrendan-kellam changed the title feat(backend): add env var to disable repo-driven permission syncingfeat(worker): add env var to disable repo-driven permission syncingMar 10, 2026
@brendan-kellam
brendan-kellam merged commit ab1ff6d into mainMar 10, 2026
7 checks passed
@brendan-kellam
brendan-kellam deleted the brendan/permission-sync-user-repo-driven-flags-SOU-634 branch March 10, 2026 04:15
@github-actionsgithub-actionsBot mentioned this pull request Mar 10, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@brendan-kellam
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(worker): add env var to disable repo-driven permission syncing - #989

Merged
brendan-kellam merged 4 commits into
mainfrom
brendan/permission-sync-user-repo-driven-flags-SOU-634
Mar 10, 2026
Merged

feat(worker): add env var to disable repo-driven permission syncing#989
brendan-kellam merged 4 commits into
mainfrom
brendan/permission-sync-user-repo-driven-flags-SOU-634

Conversation

@brendan-kellam

@brendan-kellambrendan-kellam commented Mar 10, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds PERMISSION_SYNC_REPO_DRIVEN_ENABLED (default true) to enable/disable repo-driven permission syncing
  • User-driven syncing always runs when EXPERIMENT_EE_PERMISSION_SYNC_ENABLED=true
  • Updates docs in environment-variables.mdx and permission-syncing.mdx

Closes SOU-634

Test plan

  • Set EXPERIMENT_EE_PERMISSION_SYNC_ENABLED=true and PERMISSION_SYNC_REPO_DRIVEN_ENABLED=false — verify only user-driven syncer starts
  • Leave PERMISSION_SYNC_REPO_DRIVEN_ENABLED unset (default true) — verify both syncers start as before

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added ability to enable/disable repo-driven permission syncing via environment variable.
    • Introduced configurable interval setting for repo-driven sync operations.
  • Documentation

    • Updated permission syncing documentation with Azure DevOps Cloud and Server support information.

brendan-kellamand others added 2 commits March 9, 2026 21:06
…repo driven permission syncing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions

This comment has been minimized.

@coderabbitai

coderabbitaiBot commented Mar 10, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b07ca834-cad8-4637-be95-f52c5f1d8662

📥 Commits

Reviewing files that changed from the base of the PR and between fa8c1d5 and a8f77ec.

📒 Files selected for processing (5)
  • CHANGELOG.md
  • docs/docs/configuration/environment-variables.mdx
  • docs/docs/features/permission-syncing.mdx
  • packages/backend/src/index.ts
  • packages/shared/src/env.server.ts

Walkthrough

Adds a new environment flag PERMISSION_SYNC_REPO_DRIVEN_ENABLED (default true), exposes it in the runtime env schema, updates docs and changelog, and gates repo-driven permission sync scheduler startup behind that flag during application initialization.

Changes

Cohort / File(s)Summary
Environment Schema
packages/shared/src/env.server.ts
Add PERMISSION_SYNC_REPO_DRIVEN_ENABLED boolean to the EXPERIMENT env block (default true) for runtime validation/export.
Scheduler Initialization
packages/backend/src/index.ts
Within entitlement check for permission-syncing, only call repoPermissionSyncer.startScheduler() when PERMISSION_SYNC_REPO_DRIVEN_ENABLED is 'true'; accountPermissionSyncer.startScheduler() remains invoked as before.
Documentation & Changelog
CHANGELOG.md, docs/docs/configuration/environment-variables.mdx, docs/docs/features/permission-syncing.mdx
Document the new PERMISSION_SYNC_REPO_DRIVEN_ENABLED variable (default true), add repo-driven sync interval setting and platform support updates, and record entry in changelog.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor AppInit as Application
participant Env as Environment
participant Ent as EntitlementService
participant Repo as RepoPermissionSyncer
participant Account as AccountPermissionSyncer
AppInit->>Env: read PERMISSION_SYNC_REPO_DRIVEN_ENABLED
AppInit->>Ent: hasEntitlement("permission-syncing")?
Ent-->>AppInit: true
alt PERMISSION_SYNC_REPO_DRIVEN_ENABLED == "true"
AppInit->>Repo: repoPermissionSyncer.startScheduler()
Repo-->>AppInit: scheduler started
else PERMISSION_SYNC_REPO_DRIVEN_ENABLED != "true"
AppInit->>Repo: do not start repo scheduler
end
AppInit->>Account: accountPermissionSyncer.startScheduler()
Account-->>AppInit: scheduler started
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested reviewers

  • msukkari
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately summarizes the main change: adding environment variables to independently enable/disable user-driven and repo-driven permission syncing, which is the core objective of the PR.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch brendan/permission-sync-user-repo-driven-flags-SOU-634

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@brendan-kellambrendan-kellam changed the title feat(backend): add env vars to independently enable/disable user and repo driven permission syncingfeat(backend): add env var to disable repo-driven permission syncingMar 10, 2026
…m support table
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@brendan-kellambrendan-kellam changed the title feat(backend): add env var to disable repo-driven permission syncingfeat(worker): add env var to disable repo-driven permission syncingMar 10, 2026
@brendan-kellam
brendan-kellam merged commit ab1ff6d into mainMar 10, 2026
7 checks passed
@brendan-kellam
brendan-kellam deleted the brendan/permission-sync-user-repo-driven-flags-SOU-634 branch March 10, 2026 04:15
@github-actionsgithub-actionsBot mentioned this pull request Mar 10, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@brendan-kellam
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(worker): add env var to disable repo-driven permission syncing - #989

Merged
brendan-kellam merged 4 commits into
mainfrom
brendan/permission-sync-user-repo-driven-flags-SOU-634
Mar 10, 2026
Merged

feat(worker): add env var to disable repo-driven permission syncing#989
brendan-kellam merged 4 commits into
mainfrom
brendan/permission-sync-user-repo-driven-flags-SOU-634

Conversation

@brendan-kellam

@brendan-kellambrendan-kellam commented Mar 10, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds PERMISSION_SYNC_REPO_DRIVEN_ENABLED (default true) to enable/disable repo-driven permission syncing
  • User-driven syncing always runs when EXPERIMENT_EE_PERMISSION_SYNC_ENABLED=true
  • Updates docs in environment-variables.mdx and permission-syncing.mdx

Closes SOU-634

Test plan

  • Set EXPERIMENT_EE_PERMISSION_SYNC_ENABLED=true and PERMISSION_SYNC_REPO_DRIVEN_ENABLED=false — verify only user-driven syncer starts
  • Leave PERMISSION_SYNC_REPO_DRIVEN_ENABLED unset (default true) — verify both syncers start as before

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added ability to enable/disable repo-driven permission syncing via environment variable.
    • Introduced configurable interval setting for repo-driven sync operations.
  • Documentation

    • Updated permission syncing documentation with Azure DevOps Cloud and Server support information.

brendan-kellamand others added 2 commits March 9, 2026 21:06
…repo driven permission syncing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions

This comment has been minimized.

@coderabbitai

coderabbitaiBot commented Mar 10, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b07ca834-cad8-4637-be95-f52c5f1d8662

📥 Commits

Reviewing files that changed from the base of the PR and between fa8c1d5 and a8f77ec.

📒 Files selected for processing (5)
  • CHANGELOG.md
  • docs/docs/configuration/environment-variables.mdx
  • docs/docs/features/permission-syncing.mdx
  • packages/backend/src/index.ts
  • packages/shared/src/env.server.ts

Walkthrough

Adds a new environment flag PERMISSION_SYNC_REPO_DRIVEN_ENABLED (default true), exposes it in the runtime env schema, updates docs and changelog, and gates repo-driven permission sync scheduler startup behind that flag during application initialization.

Changes

Cohort / File(s)Summary
Environment Schema
packages/shared/src/env.server.ts
Add PERMISSION_SYNC_REPO_DRIVEN_ENABLED boolean to the EXPERIMENT env block (default true) for runtime validation/export.
Scheduler Initialization
packages/backend/src/index.ts
Within entitlement check for permission-syncing, only call repoPermissionSyncer.startScheduler() when PERMISSION_SYNC_REPO_DRIVEN_ENABLED is 'true'; accountPermissionSyncer.startScheduler() remains invoked as before.
Documentation & Changelog
CHANGELOG.md, docs/docs/configuration/environment-variables.mdx, docs/docs/features/permission-syncing.mdx
Document the new PERMISSION_SYNC_REPO_DRIVEN_ENABLED variable (default true), add repo-driven sync interval setting and platform support updates, and record entry in changelog.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor AppInit as Application
participant Env as Environment
participant Ent as EntitlementService
participant Repo as RepoPermissionSyncer
participant Account as AccountPermissionSyncer
AppInit->>Env: read PERMISSION_SYNC_REPO_DRIVEN_ENABLED
AppInit->>Ent: hasEntitlement("permission-syncing")?
Ent-->>AppInit: true
alt PERMISSION_SYNC_REPO_DRIVEN_ENABLED == "true"
AppInit->>Repo: repoPermissionSyncer.startScheduler()
Repo-->>AppInit: scheduler started
else PERMISSION_SYNC_REPO_DRIVEN_ENABLED != "true"
AppInit->>Repo: do not start repo scheduler
end
AppInit->>Account: accountPermissionSyncer.startScheduler()
Account-->>AppInit: scheduler started
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested reviewers

  • msukkari
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately summarizes the main change: adding environment variables to independently enable/disable user-driven and repo-driven permission syncing, which is the core objective of the PR.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch brendan/permission-sync-user-repo-driven-flags-SOU-634

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@brendan-kellambrendan-kellam changed the title feat(backend): add env vars to independently enable/disable user and repo driven permission syncingfeat(backend): add env var to disable repo-driven permission syncingMar 10, 2026
…m support table
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@brendan-kellambrendan-kellam changed the title feat(backend): add env var to disable repo-driven permission syncingfeat(worker): add env var to disable repo-driven permission syncingMar 10, 2026
@brendan-kellam
brendan-kellam merged commit ab1ff6d into mainMar 10, 2026
7 checks passed
@brendan-kellam
brendan-kellam deleted the brendan/permission-sync-user-repo-driven-flags-SOU-634 branch March 10, 2026 04:15
@github-actionsgithub-actionsBot mentioned this pull request Mar 10, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@brendan-kellam
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(worker): add env var to disable repo-driven permission syncing - #989

Merged
brendan-kellam merged 4 commits into
mainfrom
brendan/permission-sync-user-repo-driven-flags-SOU-634
Mar 10, 2026
Merged

feat(worker): add env var to disable repo-driven permission syncing#989
brendan-kellam merged 4 commits into
mainfrom
brendan/permission-sync-user-repo-driven-flags-SOU-634

Conversation

@brendan-kellam

@brendan-kellambrendan-kellam commented Mar 10, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds PERMISSION_SYNC_REPO_DRIVEN_ENABLED (default true) to enable/disable repo-driven permission syncing
  • User-driven syncing always runs when EXPERIMENT_EE_PERMISSION_SYNC_ENABLED=true
  • Updates docs in environment-variables.mdx and permission-syncing.mdx

Closes SOU-634

Test plan

  • Set EXPERIMENT_EE_PERMISSION_SYNC_ENABLED=true and PERMISSION_SYNC_REPO_DRIVEN_ENABLED=false — verify only user-driven syncer starts
  • Leave PERMISSION_SYNC_REPO_DRIVEN_ENABLED unset (default true) — verify both syncers start as before

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added ability to enable/disable repo-driven permission syncing via environment variable.
    • Introduced configurable interval setting for repo-driven sync operations.
  • Documentation

    • Updated permission syncing documentation with Azure DevOps Cloud and Server support information.

brendan-kellamand others added 2 commits March 9, 2026 21:06
…repo driven permission syncing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions

This comment has been minimized.

@coderabbitai

coderabbitaiBot commented Mar 10, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b07ca834-cad8-4637-be95-f52c5f1d8662

📥 Commits

Reviewing files that changed from the base of the PR and between fa8c1d5 and a8f77ec.

📒 Files selected for processing (5)
  • CHANGELOG.md
  • docs/docs/configuration/environment-variables.mdx
  • docs/docs/features/permission-syncing.mdx
  • packages/backend/src/index.ts
  • packages/shared/src/env.server.ts

Walkthrough

Adds a new environment flag PERMISSION_SYNC_REPO_DRIVEN_ENABLED (default true), exposes it in the runtime env schema, updates docs and changelog, and gates repo-driven permission sync scheduler startup behind that flag during application initialization.

Changes

Cohort / File(s)Summary
Environment Schema
packages/shared/src/env.server.ts
Add PERMISSION_SYNC_REPO_DRIVEN_ENABLED boolean to the EXPERIMENT env block (default true) for runtime validation/export.
Scheduler Initialization
packages/backend/src/index.ts
Within entitlement check for permission-syncing, only call repoPermissionSyncer.startScheduler() when PERMISSION_SYNC_REPO_DRIVEN_ENABLED is 'true'; accountPermissionSyncer.startScheduler() remains invoked as before.
Documentation & Changelog
CHANGELOG.md, docs/docs/configuration/environment-variables.mdx, docs/docs/features/permission-syncing.mdx
Document the new PERMISSION_SYNC_REPO_DRIVEN_ENABLED variable (default true), add repo-driven sync interval setting and platform support updates, and record entry in changelog.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor AppInit as Application
participant Env as Environment
participant Ent as EntitlementService
participant Repo as RepoPermissionSyncer
participant Account as AccountPermissionSyncer
AppInit->>Env: read PERMISSION_SYNC_REPO_DRIVEN_ENABLED
AppInit->>Ent: hasEntitlement("permission-syncing")?
Ent-->>AppInit: true
alt PERMISSION_SYNC_REPO_DRIVEN_ENABLED == "true"
AppInit->>Repo: repoPermissionSyncer.startScheduler()
Repo-->>AppInit: scheduler started
else PERMISSION_SYNC_REPO_DRIVEN_ENABLED != "true"
AppInit->>Repo: do not start repo scheduler
end
AppInit->>Account: accountPermissionSyncer.startScheduler()
Account-->>AppInit: scheduler started
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested reviewers

  • msukkari
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately summarizes the main change: adding environment variables to independently enable/disable user-driven and repo-driven permission syncing, which is the core objective of the PR.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch brendan/permission-sync-user-repo-driven-flags-SOU-634

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@brendan-kellambrendan-kellam changed the title feat(backend): add env vars to independently enable/disable user and repo driven permission syncingfeat(backend): add env var to disable repo-driven permission syncingMar 10, 2026
…m support table
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@brendan-kellambrendan-kellam changed the title feat(backend): add env var to disable repo-driven permission syncingfeat(worker): add env var to disable repo-driven permission syncingMar 10, 2026
@brendan-kellam
brendan-kellam merged commit ab1ff6d into mainMar 10, 2026
7 checks passed
@brendan-kellam
brendan-kellam deleted the brendan/permission-sync-user-repo-driven-flags-SOU-634 branch March 10, 2026 04:15
@github-actionsgithub-actionsBot mentioned this pull request Mar 10, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@brendan-kellam
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(worker): add env var to disable repo-driven permission syncing - #989

Merged
brendan-kellam merged 4 commits into
mainfrom
brendan/permission-sync-user-repo-driven-flags-SOU-634
Mar 10, 2026
Merged

feat(worker): add env var to disable repo-driven permission syncing#989
brendan-kellam merged 4 commits into
mainfrom
brendan/permission-sync-user-repo-driven-flags-SOU-634

Conversation

@brendan-kellam

@brendan-kellambrendan-kellam commented Mar 10, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds PERMISSION_SYNC_REPO_DRIVEN_ENABLED (default true) to enable/disable repo-driven permission syncing
  • User-driven syncing always runs when EXPERIMENT_EE_PERMISSION_SYNC_ENABLED=true
  • Updates docs in environment-variables.mdx and permission-syncing.mdx

Closes SOU-634

Test plan

  • Set EXPERIMENT_EE_PERMISSION_SYNC_ENABLED=true and PERMISSION_SYNC_REPO_DRIVEN_ENABLED=false — verify only user-driven syncer starts
  • Leave PERMISSION_SYNC_REPO_DRIVEN_ENABLED unset (default true) — verify both syncers start as before

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added ability to enable/disable repo-driven permission syncing via environment variable.
    • Introduced configurable interval setting for repo-driven sync operations.
  • Documentation

    • Updated permission syncing documentation with Azure DevOps Cloud and Server support information.

brendan-kellamand others added 2 commits March 9, 2026 21:06
…repo driven permission syncing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions

This comment has been minimized.

@coderabbitai

coderabbitaiBot commented Mar 10, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b07ca834-cad8-4637-be95-f52c5f1d8662

📥 Commits

Reviewing files that changed from the base of the PR and between fa8c1d5 and a8f77ec.

📒 Files selected for processing (5)
  • CHANGELOG.md
  • docs/docs/configuration/environment-variables.mdx
  • docs/docs/features/permission-syncing.mdx
  • packages/backend/src/index.ts
  • packages/shared/src/env.server.ts

Walkthrough

Adds a new environment flag PERMISSION_SYNC_REPO_DRIVEN_ENABLED (default true), exposes it in the runtime env schema, updates docs and changelog, and gates repo-driven permission sync scheduler startup behind that flag during application initialization.

Changes

Cohort / File(s)Summary
Environment Schema
packages/shared/src/env.server.ts
Add PERMISSION_SYNC_REPO_DRIVEN_ENABLED boolean to the EXPERIMENT env block (default true) for runtime validation/export.
Scheduler Initialization
packages/backend/src/index.ts
Within entitlement check for permission-syncing, only call repoPermissionSyncer.startScheduler() when PERMISSION_SYNC_REPO_DRIVEN_ENABLED is 'true'; accountPermissionSyncer.startScheduler() remains invoked as before.
Documentation & Changelog
CHANGELOG.md, docs/docs/configuration/environment-variables.mdx, docs/docs/features/permission-syncing.mdx
Document the new PERMISSION_SYNC_REPO_DRIVEN_ENABLED variable (default true), add repo-driven sync interval setting and platform support updates, and record entry in changelog.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor AppInit as Application
participant Env as Environment
participant Ent as EntitlementService
participant Repo as RepoPermissionSyncer
participant Account as AccountPermissionSyncer
AppInit->>Env: read PERMISSION_SYNC_REPO_DRIVEN_ENABLED
AppInit->>Ent: hasEntitlement("permission-syncing")?
Ent-->>AppInit: true
alt PERMISSION_SYNC_REPO_DRIVEN_ENABLED == "true"
AppInit->>Repo: repoPermissionSyncer.startScheduler()
Repo-->>AppInit: scheduler started
else PERMISSION_SYNC_REPO_DRIVEN_ENABLED != "true"
AppInit->>Repo: do not start repo scheduler
end
AppInit->>Account: accountPermissionSyncer.startScheduler()
Account-->>AppInit: scheduler started
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested reviewers

  • msukkari
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately summarizes the main change: adding environment variables to independently enable/disable user-driven and repo-driven permission syncing, which is the core objective of the PR.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch brendan/permission-sync-user-repo-driven-flags-SOU-634

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@brendan-kellambrendan-kellam changed the title feat(backend): add env vars to independently enable/disable user and repo driven permission syncingfeat(backend): add env var to disable repo-driven permission syncingMar 10, 2026
…m support table
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@brendan-kellambrendan-kellam changed the title feat(backend): add env var to disable repo-driven permission syncingfeat(worker): add env var to disable repo-driven permission syncingMar 10, 2026
@brendan-kellam
brendan-kellam merged commit ab1ff6d into mainMar 10, 2026
7 checks passed
@brendan-kellam
brendan-kellam deleted the brendan/permission-sync-user-repo-driven-flags-SOU-634 branch March 10, 2026 04:15
@github-actionsgithub-actionsBot mentioned this pull request Mar 10, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@brendan-kellam
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(worker): add env var to disable repo-driven permission syncing - #989

Merged
brendan-kellam merged 4 commits into
mainfrom
brendan/permission-sync-user-repo-driven-flags-SOU-634
Mar 10, 2026
Merged

feat(worker): add env var to disable repo-driven permission syncing#989
brendan-kellam merged 4 commits into
mainfrom
brendan/permission-sync-user-repo-driven-flags-SOU-634

Conversation

@brendan-kellam

@brendan-kellambrendan-kellam commented Mar 10, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds PERMISSION_SYNC_REPO_DRIVEN_ENABLED (default true) to enable/disable repo-driven permission syncing
  • User-driven syncing always runs when EXPERIMENT_EE_PERMISSION_SYNC_ENABLED=true
  • Updates docs in environment-variables.mdx and permission-syncing.mdx

Closes SOU-634

Test plan

  • Set EXPERIMENT_EE_PERMISSION_SYNC_ENABLED=true and PERMISSION_SYNC_REPO_DRIVEN_ENABLED=false — verify only user-driven syncer starts
  • Leave PERMISSION_SYNC_REPO_DRIVEN_ENABLED unset (default true) — verify both syncers start as before

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added ability to enable/disable repo-driven permission syncing via environment variable.
    • Introduced configurable interval setting for repo-driven sync operations.
  • Documentation

    • Updated permission syncing documentation with Azure DevOps Cloud and Server support information.

brendan-kellamand others added 2 commits March 9, 2026 21:06
…repo driven permission syncing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions

This comment has been minimized.

@coderabbitai

coderabbitaiBot commented Mar 10, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b07ca834-cad8-4637-be95-f52c5f1d8662

📥 Commits

Reviewing files that changed from the base of the PR and between fa8c1d5 and a8f77ec.

📒 Files selected for processing (5)
  • CHANGELOG.md
  • docs/docs/configuration/environment-variables.mdx
  • docs/docs/features/permission-syncing.mdx
  • packages/backend/src/index.ts
  • packages/shared/src/env.server.ts

Walkthrough

Adds a new environment flag PERMISSION_SYNC_REPO_DRIVEN_ENABLED (default true), exposes it in the runtime env schema, updates docs and changelog, and gates repo-driven permission sync scheduler startup behind that flag during application initialization.

Changes

Cohort / File(s)Summary
Environment Schema
packages/shared/src/env.server.ts
Add PERMISSION_SYNC_REPO_DRIVEN_ENABLED boolean to the EXPERIMENT env block (default true) for runtime validation/export.
Scheduler Initialization
packages/backend/src/index.ts
Within entitlement check for permission-syncing, only call repoPermissionSyncer.startScheduler() when PERMISSION_SYNC_REPO_DRIVEN_ENABLED is 'true'; accountPermissionSyncer.startScheduler() remains invoked as before.
Documentation & Changelog
CHANGELOG.md, docs/docs/configuration/environment-variables.mdx, docs/docs/features/permission-syncing.mdx
Document the new PERMISSION_SYNC_REPO_DRIVEN_ENABLED variable (default true), add repo-driven sync interval setting and platform support updates, and record entry in changelog.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor AppInit as Application
participant Env as Environment
participant Ent as EntitlementService
participant Repo as RepoPermissionSyncer
participant Account as AccountPermissionSyncer
AppInit->>Env: read PERMISSION_SYNC_REPO_DRIVEN_ENABLED
AppInit->>Ent: hasEntitlement("permission-syncing")?
Ent-->>AppInit: true
alt PERMISSION_SYNC_REPO_DRIVEN_ENABLED == "true"
AppInit->>Repo: repoPermissionSyncer.startScheduler()
Repo-->>AppInit: scheduler started
else PERMISSION_SYNC_REPO_DRIVEN_ENABLED != "true"
AppInit->>Repo: do not start repo scheduler
end
AppInit->>Account: accountPermissionSyncer.startScheduler()
Account-->>AppInit: scheduler started
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested reviewers

  • msukkari
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately summarizes the main change: adding environment variables to independently enable/disable user-driven and repo-driven permission syncing, which is the core objective of the PR.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch brendan/permission-sync-user-repo-driven-flags-SOU-634

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@brendan-kellambrendan-kellam changed the title feat(backend): add env vars to independently enable/disable user and repo driven permission syncingfeat(backend): add env var to disable repo-driven permission syncingMar 10, 2026
…m support table
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@brendan-kellambrendan-kellam changed the title feat(backend): add env var to disable repo-driven permission syncingfeat(worker): add env var to disable repo-driven permission syncingMar 10, 2026
@brendan-kellam
brendan-kellam merged commit ab1ff6d into mainMar 10, 2026
7 checks passed
@brendan-kellam
brendan-kellam deleted the brendan/permission-sync-user-repo-driven-flags-SOU-634 branch March 10, 2026 04:15
@github-actionsgithub-actionsBot mentioned this pull request Mar 10, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@brendan-kellam