refactor: restructure into Bun workspace monorepo [1/4] - #43

Merged
wyattjoh merged 1 commit into
mainfrom
wyattjoh/monorepo
Mar 20, 2026
Merged

refactor: restructure into Bun workspace monorepo [1/4]#43
wyattjoh merged 1 commit into
mainfrom
wyattjoh/monorepo

Conversation

@wyattjoh

@wyattjohwyattjoh commented Mar 20, 2026

Copy link
Copy Markdown
Contributor

Summary

Today the CLI is distributed as a bundled JS file (bun build → dist/cli.js) that runs under Node. This works for development but doesn't support distributing a standalone npx clerk binary -- users would need Bun installed, and we can't cross-compile or ship platform-specific native executables.

This PR restructures the repo into a Bun workspace monorepo to enable that:

  • packages/cli-core/ -- all CLI source code, commands, and tests (moved from src/). Compiled via bun build --compile into a standalone native binary per platform.
  • packages/cli/ -- the clerk npm package users install via npx clerk or npm install -g clerk. Contains a lightweight Node shim (bin/clerk) that:
    1. Detects process.platform, process.arch, and libc variant (glibc vs musl)
    2. Resolves the matching platform package (@clerk/cli-darwin-arm64, @clerk/cli-linux-x64, etc.)
    3. Spawns the prebuilt native binary, forwarding args and exit codes

This is the same pattern used by esbuild, SWC, Turbopack, and other tools that ship native binaries through npm -- a thin wrapper package with optionalDependencies on per-platform packages, so npm install only downloads the binary for the user's OS.

Other changes

  • Update CI workflow to use workspace-filtered scripts
  • Add .ts extension fixes in imports and test isolation improvements

Review note: 106 files changed, but ~57 are pure renames (src/packages/cli-core/src/) with zero content diff -- collapse them in the review UI.

Merge instructions

This is PR 1 of a 4-PR stack. After squash-merging this PR:

git fetch origin main
git rebase origin/main wyattjoh/cross-compile
git push --force-with-lease origin wyattjoh/cross-compile

Then merge PR 2, and repeat for the rest of the stack.

Test plan

  • CI passes: bun install, format:check, lint, build, test
  • bun run dev launches the CLI from the new workspace path
  • bun run build:compile produces a working binary

Convert the single-package repo into a Bun workspace monorepo:
- packages/cli-core/ — all CLI source code, commands, tests
- packages/cli/ — lightweight npm wrapper for platform binary resolution
Includes .ts extension fixes in imports, test isolation improvements,
updated CI workflow, and new package scaffolding.
@coderabbitai

coderabbitaiBot commented Mar 20, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

This pull request restructures the repository from a single-package CLI into a Bun workspace monorepo. The main CLI source code moves to packages/cli-core/ with TypeScript configuration and build scripts added. A new packages/cli/ package provides a Node.js entry point (bin/clerk) that loads platform-specific prebuilt binaries. All import paths throughout the codebase are updated from .js to .ts extensions. The root package.json converts to a workspace configuration delegating build, test, and lint tasks to @clerk/cli-core. GitHub Actions workflows are updated with job timeouts and simplified test execution. Documentation and linting configurations are adjusted to reference the new package structure.

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 10.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Title check✅ PassedThe PR title 'refactor: restructure into Bun workspace monorepo [1/4]' accurately and specifically summarizes the main change: converting the repository from a single-package layout into a Bun workspace monorepo structure.
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.

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


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

@wyattjoh

Copy link
Copy Markdown
ContributorAuthor

PR Stack — Supersedes #31

PRDescription
1#43Monorepo restructure — ← this PR
2#44Cross-compile build + smoke tests
3#45Release infrastructure (changesets)
4#46Release documentation + LICENSE

Review in parallel, merge sequentially 1→2→3→4.
Squash-merge each PR, then rebase the next branch onto the updated base before merging it.

@wyattjoh
wyattjoh merged commit c6d32ac into mainMar 20, 2026
3 checks passed
@wyattjoh
wyattjoh deleted the wyattjoh/monorepo branch March 20, 2026 17:47
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.

2 participants

@wyattjoh@brkalow
, '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

refactor: restructure into Bun workspace monorepo [1/4] - #43

Merged
wyattjoh merged 1 commit into
mainfrom
wyattjoh/monorepo
Mar 20, 2026
Merged

refactor: restructure into Bun workspace monorepo [1/4]#43
wyattjoh merged 1 commit into
mainfrom
wyattjoh/monorepo

Conversation

@wyattjoh

@wyattjohwyattjoh commented Mar 20, 2026

Copy link
Copy Markdown
Contributor

Summary

Today the CLI is distributed as a bundled JS file (bun build → dist/cli.js) that runs under Node. This works for development but doesn't support distributing a standalone npx clerk binary -- users would need Bun installed, and we can't cross-compile or ship platform-specific native executables.

This PR restructures the repo into a Bun workspace monorepo to enable that:

  • packages/cli-core/ -- all CLI source code, commands, and tests (moved from src/). Compiled via bun build --compile into a standalone native binary per platform.
  • packages/cli/ -- the clerk npm package users install via npx clerk or npm install -g clerk. Contains a lightweight Node shim (bin/clerk) that:
    1. Detects process.platform, process.arch, and libc variant (glibc vs musl)
    2. Resolves the matching platform package (@clerk/cli-darwin-arm64, @clerk/cli-linux-x64, etc.)
    3. Spawns the prebuilt native binary, forwarding args and exit codes

This is the same pattern used by esbuild, SWC, Turbopack, and other tools that ship native binaries through npm -- a thin wrapper package with optionalDependencies on per-platform packages, so npm install only downloads the binary for the user's OS.

Other changes

  • Update CI workflow to use workspace-filtered scripts
  • Add .ts extension fixes in imports and test isolation improvements

Review note: 106 files changed, but ~57 are pure renames (src/packages/cli-core/src/) with zero content diff -- collapse them in the review UI.

Merge instructions

This is PR 1 of a 4-PR stack. After squash-merging this PR:

git fetch origin main
git rebase origin/main wyattjoh/cross-compile
git push --force-with-lease origin wyattjoh/cross-compile

Then merge PR 2, and repeat for the rest of the stack.

Test plan

  • CI passes: bun install, format:check, lint, build, test
  • bun run dev launches the CLI from the new workspace path
  • bun run build:compile produces a working binary

Convert the single-package repo into a Bun workspace monorepo:
- packages/cli-core/ — all CLI source code, commands, tests
- packages/cli/ — lightweight npm wrapper for platform binary resolution
Includes .ts extension fixes in imports, test isolation improvements,
updated CI workflow, and new package scaffolding.
@coderabbitai

coderabbitaiBot commented Mar 20, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

This pull request restructures the repository from a single-package CLI into a Bun workspace monorepo. The main CLI source code moves to packages/cli-core/ with TypeScript configuration and build scripts added. A new packages/cli/ package provides a Node.js entry point (bin/clerk) that loads platform-specific prebuilt binaries. All import paths throughout the codebase are updated from .js to .ts extensions. The root package.json converts to a workspace configuration delegating build, test, and lint tasks to @clerk/cli-core. GitHub Actions workflows are updated with job timeouts and simplified test execution. Documentation and linting configurations are adjusted to reference the new package structure.

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 10.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Title check✅ PassedThe PR title 'refactor: restructure into Bun workspace monorepo [1/4]' accurately and specifically summarizes the main change: converting the repository from a single-package layout into a Bun workspace monorepo structure.
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.

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


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

@wyattjoh

Copy link
Copy Markdown
ContributorAuthor

PR Stack — Supersedes #31

PRDescription
1#43Monorepo restructure — ← this PR
2#44Cross-compile build + smoke tests
3#45Release infrastructure (changesets)
4#46Release documentation + LICENSE

Review in parallel, merge sequentially 1→2→3→4.
Squash-merge each PR, then rebase the next branch onto the updated base before merging it.

@wyattjoh
wyattjoh merged commit c6d32ac into mainMar 20, 2026
3 checks passed
@wyattjoh
wyattjoh deleted the wyattjoh/monorepo branch March 20, 2026 17:47
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.

2 participants

@wyattjoh@brkalow
, '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

refactor: restructure into Bun workspace monorepo [1/4] - #43

Merged
wyattjoh merged 1 commit into
mainfrom
wyattjoh/monorepo
Mar 20, 2026
Merged

refactor: restructure into Bun workspace monorepo [1/4]#43
wyattjoh merged 1 commit into
mainfrom
wyattjoh/monorepo

Conversation

@wyattjoh

@wyattjohwyattjoh commented Mar 20, 2026

Copy link
Copy Markdown
Contributor

Summary

Today the CLI is distributed as a bundled JS file (bun build → dist/cli.js) that runs under Node. This works for development but doesn't support distributing a standalone npx clerk binary -- users would need Bun installed, and we can't cross-compile or ship platform-specific native executables.

This PR restructures the repo into a Bun workspace monorepo to enable that:

  • packages/cli-core/ -- all CLI source code, commands, and tests (moved from src/). Compiled via bun build --compile into a standalone native binary per platform.
  • packages/cli/ -- the clerk npm package users install via npx clerk or npm install -g clerk. Contains a lightweight Node shim (bin/clerk) that:
    1. Detects process.platform, process.arch, and libc variant (glibc vs musl)
    2. Resolves the matching platform package (@clerk/cli-darwin-arm64, @clerk/cli-linux-x64, etc.)
    3. Spawns the prebuilt native binary, forwarding args and exit codes

This is the same pattern used by esbuild, SWC, Turbopack, and other tools that ship native binaries through npm -- a thin wrapper package with optionalDependencies on per-platform packages, so npm install only downloads the binary for the user's OS.

Other changes

  • Update CI workflow to use workspace-filtered scripts
  • Add .ts extension fixes in imports and test isolation improvements

Review note: 106 files changed, but ~57 are pure renames (src/packages/cli-core/src/) with zero content diff -- collapse them in the review UI.

Merge instructions

This is PR 1 of a 4-PR stack. After squash-merging this PR:

git fetch origin main
git rebase origin/main wyattjoh/cross-compile
git push --force-with-lease origin wyattjoh/cross-compile

Then merge PR 2, and repeat for the rest of the stack.

Test plan

  • CI passes: bun install, format:check, lint, build, test
  • bun run dev launches the CLI from the new workspace path
  • bun run build:compile produces a working binary

Convert the single-package repo into a Bun workspace monorepo:
- packages/cli-core/ — all CLI source code, commands, tests
- packages/cli/ — lightweight npm wrapper for platform binary resolution
Includes .ts extension fixes in imports, test isolation improvements,
updated CI workflow, and new package scaffolding.
@coderabbitai

coderabbitaiBot commented Mar 20, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

This pull request restructures the repository from a single-package CLI into a Bun workspace monorepo. The main CLI source code moves to packages/cli-core/ with TypeScript configuration and build scripts added. A new packages/cli/ package provides a Node.js entry point (bin/clerk) that loads platform-specific prebuilt binaries. All import paths throughout the codebase are updated from .js to .ts extensions. The root package.json converts to a workspace configuration delegating build, test, and lint tasks to @clerk/cli-core. GitHub Actions workflows are updated with job timeouts and simplified test execution. Documentation and linting configurations are adjusted to reference the new package structure.

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 10.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Title check✅ PassedThe PR title 'refactor: restructure into Bun workspace monorepo [1/4]' accurately and specifically summarizes the main change: converting the repository from a single-package layout into a Bun workspace monorepo structure.
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.

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


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

@wyattjoh

Copy link
Copy Markdown
ContributorAuthor

PR Stack — Supersedes #31

PRDescription
1#43Monorepo restructure — ← this PR
2#44Cross-compile build + smoke tests
3#45Release infrastructure (changesets)
4#46Release documentation + LICENSE

Review in parallel, merge sequentially 1→2→3→4.
Squash-merge each PR, then rebase the next branch onto the updated base before merging it.

@wyattjoh
wyattjoh merged commit c6d32ac into mainMar 20, 2026
3 checks passed
@wyattjoh
wyattjoh deleted the wyattjoh/monorepo branch March 20, 2026 17:47
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.

2 participants

@wyattjoh@brkalow
, '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

refactor: restructure into Bun workspace monorepo [1/4] - #43

Merged
wyattjoh merged 1 commit into
mainfrom
wyattjoh/monorepo
Mar 20, 2026
Merged

refactor: restructure into Bun workspace monorepo [1/4]#43
wyattjoh merged 1 commit into
mainfrom
wyattjoh/monorepo

Conversation

@wyattjoh

@wyattjohwyattjoh commented Mar 20, 2026

Copy link
Copy Markdown
Contributor

Summary

Today the CLI is distributed as a bundled JS file (bun build → dist/cli.js) that runs under Node. This works for development but doesn't support distributing a standalone npx clerk binary -- users would need Bun installed, and we can't cross-compile or ship platform-specific native executables.

This PR restructures the repo into a Bun workspace monorepo to enable that:

  • packages/cli-core/ -- all CLI source code, commands, and tests (moved from src/). Compiled via bun build --compile into a standalone native binary per platform.
  • packages/cli/ -- the clerk npm package users install via npx clerk or npm install -g clerk. Contains a lightweight Node shim (bin/clerk) that:
    1. Detects process.platform, process.arch, and libc variant (glibc vs musl)
    2. Resolves the matching platform package (@clerk/cli-darwin-arm64, @clerk/cli-linux-x64, etc.)
    3. Spawns the prebuilt native binary, forwarding args and exit codes

This is the same pattern used by esbuild, SWC, Turbopack, and other tools that ship native binaries through npm -- a thin wrapper package with optionalDependencies on per-platform packages, so npm install only downloads the binary for the user's OS.

Other changes

  • Update CI workflow to use workspace-filtered scripts
  • Add .ts extension fixes in imports and test isolation improvements

Review note: 106 files changed, but ~57 are pure renames (src/packages/cli-core/src/) with zero content diff -- collapse them in the review UI.

Merge instructions

This is PR 1 of a 4-PR stack. After squash-merging this PR:

git fetch origin main
git rebase origin/main wyattjoh/cross-compile
git push --force-with-lease origin wyattjoh/cross-compile

Then merge PR 2, and repeat for the rest of the stack.

Test plan

  • CI passes: bun install, format:check, lint, build, test
  • bun run dev launches the CLI from the new workspace path
  • bun run build:compile produces a working binary

Convert the single-package repo into a Bun workspace monorepo:
- packages/cli-core/ — all CLI source code, commands, tests
- packages/cli/ — lightweight npm wrapper for platform binary resolution
Includes .ts extension fixes in imports, test isolation improvements,
updated CI workflow, and new package scaffolding.
@coderabbitai

coderabbitaiBot commented Mar 20, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

This pull request restructures the repository from a single-package CLI into a Bun workspace monorepo. The main CLI source code moves to packages/cli-core/ with TypeScript configuration and build scripts added. A new packages/cli/ package provides a Node.js entry point (bin/clerk) that loads platform-specific prebuilt binaries. All import paths throughout the codebase are updated from .js to .ts extensions. The root package.json converts to a workspace configuration delegating build, test, and lint tasks to @clerk/cli-core. GitHub Actions workflows are updated with job timeouts and simplified test execution. Documentation and linting configurations are adjusted to reference the new package structure.

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 10.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Title check✅ PassedThe PR title 'refactor: restructure into Bun workspace monorepo [1/4]' accurately and specifically summarizes the main change: converting the repository from a single-package layout into a Bun workspace monorepo structure.
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.

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


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

@wyattjoh

Copy link
Copy Markdown
ContributorAuthor

PR Stack — Supersedes #31

PRDescription
1#43Monorepo restructure — ← this PR
2#44Cross-compile build + smoke tests
3#45Release infrastructure (changesets)
4#46Release documentation + LICENSE

Review in parallel, merge sequentially 1→2→3→4.
Squash-merge each PR, then rebase the next branch onto the updated base before merging it.

@wyattjoh
wyattjoh merged commit c6d32ac into mainMar 20, 2026
3 checks passed
@wyattjoh
wyattjoh deleted the wyattjoh/monorepo branch March 20, 2026 17:47
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.

2 participants

@wyattjoh@brkalow
, '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

refactor: restructure into Bun workspace monorepo [1/4] - #43

Merged
wyattjoh merged 1 commit into
mainfrom
wyattjoh/monorepo
Mar 20, 2026
Merged

refactor: restructure into Bun workspace monorepo [1/4]#43
wyattjoh merged 1 commit into
mainfrom
wyattjoh/monorepo

Conversation

@wyattjoh

@wyattjohwyattjoh commented Mar 20, 2026

Copy link
Copy Markdown
Contributor

Summary

Today the CLI is distributed as a bundled JS file (bun build → dist/cli.js) that runs under Node. This works for development but doesn't support distributing a standalone npx clerk binary -- users would need Bun installed, and we can't cross-compile or ship platform-specific native executables.

This PR restructures the repo into a Bun workspace monorepo to enable that:

  • packages/cli-core/ -- all CLI source code, commands, and tests (moved from src/). Compiled via bun build --compile into a standalone native binary per platform.
  • packages/cli/ -- the clerk npm package users install via npx clerk or npm install -g clerk. Contains a lightweight Node shim (bin/clerk) that:
    1. Detects process.platform, process.arch, and libc variant (glibc vs musl)
    2. Resolves the matching platform package (@clerk/cli-darwin-arm64, @clerk/cli-linux-x64, etc.)
    3. Spawns the prebuilt native binary, forwarding args and exit codes

This is the same pattern used by esbuild, SWC, Turbopack, and other tools that ship native binaries through npm -- a thin wrapper package with optionalDependencies on per-platform packages, so npm install only downloads the binary for the user's OS.

Other changes

  • Update CI workflow to use workspace-filtered scripts
  • Add .ts extension fixes in imports and test isolation improvements

Review note: 106 files changed, but ~57 are pure renames (src/packages/cli-core/src/) with zero content diff -- collapse them in the review UI.

Merge instructions

This is PR 1 of a 4-PR stack. After squash-merging this PR:

git fetch origin main
git rebase origin/main wyattjoh/cross-compile
git push --force-with-lease origin wyattjoh/cross-compile

Then merge PR 2, and repeat for the rest of the stack.

Test plan

  • CI passes: bun install, format:check, lint, build, test
  • bun run dev launches the CLI from the new workspace path
  • bun run build:compile produces a working binary

Convert the single-package repo into a Bun workspace monorepo:
- packages/cli-core/ — all CLI source code, commands, tests
- packages/cli/ — lightweight npm wrapper for platform binary resolution
Includes .ts extension fixes in imports, test isolation improvements,
updated CI workflow, and new package scaffolding.
@coderabbitai

coderabbitaiBot commented Mar 20, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

This pull request restructures the repository from a single-package CLI into a Bun workspace monorepo. The main CLI source code moves to packages/cli-core/ with TypeScript configuration and build scripts added. A new packages/cli/ package provides a Node.js entry point (bin/clerk) that loads platform-specific prebuilt binaries. All import paths throughout the codebase are updated from .js to .ts extensions. The root package.json converts to a workspace configuration delegating build, test, and lint tasks to @clerk/cli-core. GitHub Actions workflows are updated with job timeouts and simplified test execution. Documentation and linting configurations are adjusted to reference the new package structure.

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 10.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Title check✅ PassedThe PR title 'refactor: restructure into Bun workspace monorepo [1/4]' accurately and specifically summarizes the main change: converting the repository from a single-package layout into a Bun workspace monorepo structure.
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.

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


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

@wyattjoh

Copy link
Copy Markdown
ContributorAuthor

PR Stack — Supersedes #31

PRDescription
1#43Monorepo restructure — ← this PR
2#44Cross-compile build + smoke tests
3#45Release infrastructure (changesets)
4#46Release documentation + LICENSE

Review in parallel, merge sequentially 1→2→3→4.
Squash-merge each PR, then rebase the next branch onto the updated base before merging it.

@wyattjoh
wyattjoh merged commit c6d32ac into mainMar 20, 2026
3 checks passed
@wyattjoh
wyattjoh deleted the wyattjoh/monorepo branch March 20, 2026 17:47
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.

2 participants

@wyattjoh@brkalow
, '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

refactor: restructure into Bun workspace monorepo [1/4] - #43

Merged
wyattjoh merged 1 commit into
mainfrom
wyattjoh/monorepo
Mar 20, 2026
Merged

refactor: restructure into Bun workspace monorepo [1/4]#43
wyattjoh merged 1 commit into
mainfrom
wyattjoh/monorepo

Conversation

@wyattjoh

@wyattjohwyattjoh commented Mar 20, 2026

Copy link
Copy Markdown
Contributor

Summary

Today the CLI is distributed as a bundled JS file (bun build → dist/cli.js) that runs under Node. This works for development but doesn't support distributing a standalone npx clerk binary -- users would need Bun installed, and we can't cross-compile or ship platform-specific native executables.

This PR restructures the repo into a Bun workspace monorepo to enable that:

  • packages/cli-core/ -- all CLI source code, commands, and tests (moved from src/). Compiled via bun build --compile into a standalone native binary per platform.
  • packages/cli/ -- the clerk npm package users install via npx clerk or npm install -g clerk. Contains a lightweight Node shim (bin/clerk) that:
    1. Detects process.platform, process.arch, and libc variant (glibc vs musl)
    2. Resolves the matching platform package (@clerk/cli-darwin-arm64, @clerk/cli-linux-x64, etc.)
    3. Spawns the prebuilt native binary, forwarding args and exit codes

This is the same pattern used by esbuild, SWC, Turbopack, and other tools that ship native binaries through npm -- a thin wrapper package with optionalDependencies on per-platform packages, so npm install only downloads the binary for the user's OS.

Other changes

  • Update CI workflow to use workspace-filtered scripts
  • Add .ts extension fixes in imports and test isolation improvements

Review note: 106 files changed, but ~57 are pure renames (src/packages/cli-core/src/) with zero content diff -- collapse them in the review UI.

Merge instructions

This is PR 1 of a 4-PR stack. After squash-merging this PR:

git fetch origin main
git rebase origin/main wyattjoh/cross-compile
git push --force-with-lease origin wyattjoh/cross-compile

Then merge PR 2, and repeat for the rest of the stack.

Test plan

  • CI passes: bun install, format:check, lint, build, test
  • bun run dev launches the CLI from the new workspace path
  • bun run build:compile produces a working binary

Convert the single-package repo into a Bun workspace monorepo:
- packages/cli-core/ — all CLI source code, commands, tests
- packages/cli/ — lightweight npm wrapper for platform binary resolution
Includes .ts extension fixes in imports, test isolation improvements,
updated CI workflow, and new package scaffolding.
@coderabbitai

coderabbitaiBot commented Mar 20, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

This pull request restructures the repository from a single-package CLI into a Bun workspace monorepo. The main CLI source code moves to packages/cli-core/ with TypeScript configuration and build scripts added. A new packages/cli/ package provides a Node.js entry point (bin/clerk) that loads platform-specific prebuilt binaries. All import paths throughout the codebase are updated from .js to .ts extensions. The root package.json converts to a workspace configuration delegating build, test, and lint tasks to @clerk/cli-core. GitHub Actions workflows are updated with job timeouts and simplified test execution. Documentation and linting configurations are adjusted to reference the new package structure.

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 10.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Title check✅ PassedThe PR title 'refactor: restructure into Bun workspace monorepo [1/4]' accurately and specifically summarizes the main change: converting the repository from a single-package layout into a Bun workspace monorepo structure.
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.

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


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

@wyattjoh

Copy link
Copy Markdown
ContributorAuthor

PR Stack — Supersedes #31

PRDescription
1#43Monorepo restructure — ← this PR
2#44Cross-compile build + smoke tests
3#45Release infrastructure (changesets)
4#46Release documentation + LICENSE

Review in parallel, merge sequentially 1→2→3→4.
Squash-merge each PR, then rebase the next branch onto the updated base before merging it.

@wyattjoh
wyattjoh merged commit c6d32ac into mainMar 20, 2026
3 checks passed
@wyattjoh
wyattjoh deleted the wyattjoh/monorepo branch March 20, 2026 17:47
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.

2 participants

@wyattjoh@brkalow
, '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

refactor: restructure into Bun workspace monorepo [1/4] - #43

Merged
wyattjoh merged 1 commit into
mainfrom
wyattjoh/monorepo
Mar 20, 2026
Merged

refactor: restructure into Bun workspace monorepo [1/4]#43
wyattjoh merged 1 commit into
mainfrom
wyattjoh/monorepo

Conversation

@wyattjoh

@wyattjohwyattjoh commented Mar 20, 2026

Copy link
Copy Markdown
Contributor

Summary

Today the CLI is distributed as a bundled JS file (bun build → dist/cli.js) that runs under Node. This works for development but doesn't support distributing a standalone npx clerk binary -- users would need Bun installed, and we can't cross-compile or ship platform-specific native executables.

This PR restructures the repo into a Bun workspace monorepo to enable that:

  • packages/cli-core/ -- all CLI source code, commands, and tests (moved from src/). Compiled via bun build --compile into a standalone native binary per platform.
  • packages/cli/ -- the clerk npm package users install via npx clerk or npm install -g clerk. Contains a lightweight Node shim (bin/clerk) that:
    1. Detects process.platform, process.arch, and libc variant (glibc vs musl)
    2. Resolves the matching platform package (@clerk/cli-darwin-arm64, @clerk/cli-linux-x64, etc.)
    3. Spawns the prebuilt native binary, forwarding args and exit codes

This is the same pattern used by esbuild, SWC, Turbopack, and other tools that ship native binaries through npm -- a thin wrapper package with optionalDependencies on per-platform packages, so npm install only downloads the binary for the user's OS.

Other changes

  • Update CI workflow to use workspace-filtered scripts
  • Add .ts extension fixes in imports and test isolation improvements

Review note: 106 files changed, but ~57 are pure renames (src/packages/cli-core/src/) with zero content diff -- collapse them in the review UI.

Merge instructions

This is PR 1 of a 4-PR stack. After squash-merging this PR:

git fetch origin main
git rebase origin/main wyattjoh/cross-compile
git push --force-with-lease origin wyattjoh/cross-compile

Then merge PR 2, and repeat for the rest of the stack.

Test plan

  • CI passes: bun install, format:check, lint, build, test
  • bun run dev launches the CLI from the new workspace path
  • bun run build:compile produces a working binary

Convert the single-package repo into a Bun workspace monorepo:
- packages/cli-core/ — all CLI source code, commands, tests
- packages/cli/ — lightweight npm wrapper for platform binary resolution
Includes .ts extension fixes in imports, test isolation improvements,
updated CI workflow, and new package scaffolding.
@coderabbitai

coderabbitaiBot commented Mar 20, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

This pull request restructures the repository from a single-package CLI into a Bun workspace monorepo. The main CLI source code moves to packages/cli-core/ with TypeScript configuration and build scripts added. A new packages/cli/ package provides a Node.js entry point (bin/clerk) that loads platform-specific prebuilt binaries. All import paths throughout the codebase are updated from .js to .ts extensions. The root package.json converts to a workspace configuration delegating build, test, and lint tasks to @clerk/cli-core. GitHub Actions workflows are updated with job timeouts and simplified test execution. Documentation and linting configurations are adjusted to reference the new package structure.

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 10.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Title check✅ PassedThe PR title 'refactor: restructure into Bun workspace monorepo [1/4]' accurately and specifically summarizes the main change: converting the repository from a single-package layout into a Bun workspace monorepo structure.
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.

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


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

@wyattjoh

Copy link
Copy Markdown
ContributorAuthor

PR Stack — Supersedes #31

PRDescription
1#43Monorepo restructure — ← this PR
2#44Cross-compile build + smoke tests
3#45Release infrastructure (changesets)
4#46Release documentation + LICENSE

Review in parallel, merge sequentially 1→2→3→4.
Squash-merge each PR, then rebase the next branch onto the updated base before merging it.

@wyattjoh
wyattjoh merged commit c6d32ac into mainMar 20, 2026
3 checks passed
@wyattjoh
wyattjoh deleted the wyattjoh/monorepo branch March 20, 2026 17:47
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.

2 participants

@wyattjoh@brkalow
, '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

refactor: restructure into Bun workspace monorepo [1/4] - #43

Merged
wyattjoh merged 1 commit into
mainfrom
wyattjoh/monorepo
Mar 20, 2026
Merged

refactor: restructure into Bun workspace monorepo [1/4]#43
wyattjoh merged 1 commit into
mainfrom
wyattjoh/monorepo

Conversation

@wyattjoh

@wyattjohwyattjoh commented Mar 20, 2026

Copy link
Copy Markdown
Contributor

Summary

Today the CLI is distributed as a bundled JS file (bun build → dist/cli.js) that runs under Node. This works for development but doesn't support distributing a standalone npx clerk binary -- users would need Bun installed, and we can't cross-compile or ship platform-specific native executables.

This PR restructures the repo into a Bun workspace monorepo to enable that:

  • packages/cli-core/ -- all CLI source code, commands, and tests (moved from src/). Compiled via bun build --compile into a standalone native binary per platform.
  • packages/cli/ -- the clerk npm package users install via npx clerk or npm install -g clerk. Contains a lightweight Node shim (bin/clerk) that:
    1. Detects process.platform, process.arch, and libc variant (glibc vs musl)
    2. Resolves the matching platform package (@clerk/cli-darwin-arm64, @clerk/cli-linux-x64, etc.)
    3. Spawns the prebuilt native binary, forwarding args and exit codes

This is the same pattern used by esbuild, SWC, Turbopack, and other tools that ship native binaries through npm -- a thin wrapper package with optionalDependencies on per-platform packages, so npm install only downloads the binary for the user's OS.

Other changes

  • Update CI workflow to use workspace-filtered scripts
  • Add .ts extension fixes in imports and test isolation improvements

Review note: 106 files changed, but ~57 are pure renames (src/packages/cli-core/src/) with zero content diff -- collapse them in the review UI.

Merge instructions

This is PR 1 of a 4-PR stack. After squash-merging this PR:

git fetch origin main
git rebase origin/main wyattjoh/cross-compile
git push --force-with-lease origin wyattjoh/cross-compile

Then merge PR 2, and repeat for the rest of the stack.

Test plan

  • CI passes: bun install, format:check, lint, build, test
  • bun run dev launches the CLI from the new workspace path
  • bun run build:compile produces a working binary

Convert the single-package repo into a Bun workspace monorepo:
- packages/cli-core/ — all CLI source code, commands, tests
- packages/cli/ — lightweight npm wrapper for platform binary resolution
Includes .ts extension fixes in imports, test isolation improvements,
updated CI workflow, and new package scaffolding.
@coderabbitai

coderabbitaiBot commented Mar 20, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

This pull request restructures the repository from a single-package CLI into a Bun workspace monorepo. The main CLI source code moves to packages/cli-core/ with TypeScript configuration and build scripts added. A new packages/cli/ package provides a Node.js entry point (bin/clerk) that loads platform-specific prebuilt binaries. All import paths throughout the codebase are updated from .js to .ts extensions. The root package.json converts to a workspace configuration delegating build, test, and lint tasks to @clerk/cli-core. GitHub Actions workflows are updated with job timeouts and simplified test execution. Documentation and linting configurations are adjusted to reference the new package structure.

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 10.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Title check✅ PassedThe PR title 'refactor: restructure into Bun workspace monorepo [1/4]' accurately and specifically summarizes the main change: converting the repository from a single-package layout into a Bun workspace monorepo structure.
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.

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


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

@wyattjoh

Copy link
Copy Markdown
ContributorAuthor

PR Stack — Supersedes #31

PRDescription
1#43Monorepo restructure — ← this PR
2#44Cross-compile build + smoke tests
3#45Release infrastructure (changesets)
4#46Release documentation + LICENSE

Review in parallel, merge sequentially 1→2→3→4.
Squash-merge each PR, then rebase the next branch onto the updated base before merging it.

@wyattjoh
wyattjoh merged commit c6d32ac into mainMar 20, 2026
3 checks passed
@wyattjoh
wyattjoh deleted the wyattjoh/monorepo branch March 20, 2026 17:47
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.

2 participants

@wyattjoh@brkalow