<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://bunworkspaces.com/blog/</id>
    <title>bun-workspaces Blog</title>
    <updated>2026-04-04T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://bunworkspaces.com/blog/"/>
    <subtitle>bun-workspaces Blog</subtitle>
    <icon>https://bunworkspaces.com/blog/images/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[Version 1 is here! - Package Overview]]></title>
        <id>https://bunworkspaces.com/blog/bun-workspaces-v1</id>
        <link href="https://bunworkspaces.com/blog/bun-workspaces-v1"/>
        <updated>2026-04-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[bun-workspaces was in alpha for several months, and now version 1 is here! The package is officially at 1.1.2 at the time of writing.]]></summary>
        <content type="html"><![CDATA[<p><code>bun-workspaces</code> was in alpha for several months, and now version 1 is here! The package is officially at <code>1.1.2</code> at the time of writing.</p>
<p>Along with this first stable version is the first blog post! Let's take a walk through some of the core features of <code>bun-workspaces</code>, both its CLI and its TypeScript API.</p>
<!-- -->
<div class="bwunsters_c0EE"><img src="https://bunworkspaces.com/blog/images/bwaby_20x22.png" class="pixel-art-image undefined"><img src="https://bunworkspaces.com/blog/images/bwunsterito_34x38.png" class="pixel-art-image undefined"><img src="https://bunworkspaces.com/blog/images/bwunster_64x70.png" class="pixel-art-image small undefined"></div>
<h2 class="anchor anchorTargetStickyNavbar_K52K" id="background">Background<a href="https://bunworkspaces.com/blog/bun-workspaces-v1#background" class="hash-link" aria-label="Direct link to Background" title="Direct link to Background" translate="no">​</a></h2>
<p>Before diving directly into features, I'd like to give some background to the package first. You can <a href="https://bunworkspaces.com/blog/bun-workspaces-v1#the-features" class="">skip forward</a>
to get right to how <code>bun-workspaces</code> works.</p>
<h3 class="anchor anchorTargetStickyNavbar_K52K" id="fundamentals">Fundamentals<a href="https://bunworkspaces.com/blog/bun-workspaces-v1#fundamentals" class="hash-link" aria-label="Direct link to Fundamentals" title="Direct link to Fundamentals" translate="no">​</a></h3>
<p>It's good to familiarize yourself with the basics of Bun's <a href="https://bun.com/docs/pm/workspaces" target="_blank" rel="noopener noreferrer" class="">workspaces</a> features.
If you're coming from Node, Bun workspaces are extremely similar to <a href="https://docs.npmjs.com/cli/v7/using-npm/workspaces?v=true" target="_blank" rel="noopener noreferrer" class="">npm workspaces</a>.</p>
<p>The general idea is not very complicated: Normally you have one package in a git repo, defined by a <code>package.json</code> at the root. When using workspaces,
you can nest any number of <code>package.json</code>s in subdirectories in your project, with configuration for this in your root <code>package.json</code>.</p>
<p>These workspaces can import and export code between each other like local modules that are named by their <code>package.json</code>, acting like local node_modules.
I have more about this in the <a href="https://bunworkspaces.com/concepts/workspace-dependencies" target="_blank" rel="noopener noreferrer" class="">documentation</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_K52K" id="history">History<a href="https://bunworkspaces.com/blog/bun-workspaces-v1#history" class="hash-link" aria-label="Direct link to History" title="Direct link to History" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_K52K" id="inspiration">Inspiration<a href="https://bunworkspaces.com/blog/bun-workspaces-v1#inspiration" class="hash-link" aria-label="Direct link to Inspiration" title="Direct link to Inspiration" translate="no">​</a></h4>
<p>The inspiration for <code>bun-workspaces</code> comes from my experience working with TypeScript and monorepos in general.
I've worked in setups where I was publishing private npm packages when I wished I had a monorepo,
and I've worked in complex monorepo setups, such as managing microfrontends with Nx.</p>
<p>The bare-bones monorepo features of Node and Bun don't offer a lot in terms of features, but
the alternatives are generally heavyweight frameworks that require a steep learning curve and complex configuration, like Nx.</p>
<p>For years, I've wanted to meet in the middle and have a monorepo power user layer that works in tandem with native workspaces, but
I didn't get around to it while working previous jobs.</p>
<h4 class="anchor anchorTargetStickyNavbar_K52K" id="how-it-started">How It Started<a href="https://bunworkspaces.com/blog/bun-workspaces-v1#how-it-started" class="hash-link" aria-label="Direct link to How It Started" title="Direct link to How It Started" translate="no">​</a></h4>
<p>I originally created <code>bun-workspaces</code> to finally start
a project that works with native workspaces, but it wasn't very serious and was mostly a workaround for a now irrelevant limitation of Bun's <code>--filter</code> feature
at first.</p>
<p>But, I noticed that several developers liked the idea. The positive reactions I've received and the
usefulness I've found for myself have now propelled the project forward from a tiny, slapped-together package with a basic CLI and README
to the project you see now that has a well-tested CLI and TypeScript library, a full documentation website with an <a href="https://bunworkspaces.com/web-cli" target="_blank" rel="noopener noreferrer" class="">in-browser
demo</a> of the CLI, this blog, and more.</p>
<h4 class="anchor anchorTargetStickyNavbar_K52K" id="going-forward">Going Forward<a href="https://bunworkspaces.com/blog/bun-workspaces-v1#going-forward" class="hash-link" aria-label="Direct link to Going Forward" title="Direct link to Going Forward" translate="no">​</a></h4>
<p>I am just as much of a user or more than any of my
current users, so I'm driven to keep adding functionality, with the hypothesis that a lot of monorepo frameworks' features
can be achieved in a more lightweight package that works with, rather than against, native tooling.</p>
<p>I don't think well-automated monorepos are just for large enterprise projects, so I want there to be tooling that gives more accessible power to
users that are solo, in smaller teams, or simply have projects that aren't worth a heavy framework.</p>
<p>You can see a more detailed roadmap <a href="https://bunworkspaces.com/roadmap" target="_blank" rel="noopener noreferrer" class="">here</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_K52K" id="the-features">The Features<a href="https://bunworkspaces.com/blog/bun-workspaces-v1#the-features" class="hash-link" aria-label="Direct link to The Features" title="Direct link to The Features" translate="no">​</a></h2>
<p>The main <a href="https://bunworkspaces.com/" target="_blank" rel="noopener noreferrer" class="">documentation</a> intends to provide the true exhaustive description of <code>bun-workspaces</code>'s features,
so I won't repeat everything here, but I would like to highlight some core features.</p>
<p>In general, you can say <code>bun-workspaces</code> has two main jobs:</p>
<ul>
<li class="">Getting metadata about a monorepo's workspace structure</li>
<li class="">Running scripts across workspaces with advanced control, in parallel (by default) or sequentially</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_K52K" id="a-cli-and-api-in-parity">A CLI and API in Parity<a href="https://bunworkspaces.com/blog/bun-workspaces-v1#a-cli-and-api-in-parity" class="hash-link" aria-label="Direct link to A CLI and API in Parity" title="Direct link to A CLI and API in Parity" translate="no">​</a></h3>
<p>This package started out as only a CLI. The idea of shipping a TypeScript library (the API)
along with the CLI sounded like a lot of extra work at first.</p>
<p>However, I had already designed CLI features to have strong CLI-agnostic code behind them, a good practice
for any kind of interface, so I already almost had a TypeScript library.
Making it public just meant taking extra care to its design and ensuring that it's documented.</p>
<h5 class="anchor anchorTargetStickyNavbar_K52K" id="benefits">Benefits<a href="https://bunworkspaces.com/blog/bun-workspaces-v1#benefits" class="hash-link" aria-label="Direct link to Benefits" title="Direct link to Benefits" translate="no">​</a></h5>
<p>This has become a great boon to the project, as it forces the core features to be designed strongly before thinking
about the CLI, encourages another strong layer of testing to diagnose core logic issues separately from CLI issues, and allows users to
choose either shell scripting or JavaScript/TypeScript scripting with first-class support to accomplish the same thing.</p>
<h4 class="anchor anchorTargetStickyNavbar_K52K" id="comparison">Comparison<a href="https://bunworkspaces.com/blog/bun-workspaces-v1#comparison" class="hash-link" aria-label="Direct link to Comparison" title="Direct link to Comparison" translate="no">​</a></h4>
<p>We can directly look at a shell script and a TypeScript script that perform essentially the same functions below:</p>
<h5 class="anchor anchorTargetStickyNavbar_K52K" id="cli">CLI<a href="https://bunworkspaces.com/blog/bun-workspaces-v1#cli" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h5>
<pre class="syntax-highlighter" style="display:block;overflow-x:auto;padding:0.75rem 1rem;color:var(--code-base-color);background:#1c1b1b;border-radius:0.5rem;background-color:var(--code-block-bg);border:1px solid rgba(40, 44, 52, 0.52);line-height:1.4;margin:0.5rem 0"><code class="language-bash" style="white-space:pre"><span style="color:var(--code-comment-color)"># A shell alias for simplicity</span><span>
</span><span></span><span style="color:var(--code-built-in-color)">alias</span><span> bw=</span><span style="color:var(--code-string-color)">"bunx bun-workspaces"</span><span>
</span>
<span></span><span style="color:var(--code-comment-color)"># List workspaces</span><span>
</span>bw ls
<!-- -->
<span></span><span style="color:var(--code-comment-color)"># Get info about my-workspace in JSON format</span><span>
</span>bw info my-workspace --json --pretty
<!-- -->
<span></span><span style="color:var(--code-comment-color)"># Get same info using a configured alias (optional bw.workspace.json)</span><span>
</span>bw info my-alias --json --pretty
<!-- -->
<span></span><span style="color:var(--code-comment-color)"># Run the "lint" script in parallel across all workspaces</span><span>
</span><span></span><span style="color:var(--code-comment-color)"># and write a report to results.json</span><span>
</span>bw run lint --json-outfile=results.json</code></pre>
<h5 class="anchor anchorTargetStickyNavbar_K52K" id="api">API<a href="https://bunworkspaces.com/blog/bun-workspaces-v1#api" class="hash-link" aria-label="Direct link to API" title="Direct link to API" translate="no">​</a></h5>
<pre class="syntax-highlighter" style="display:block;overflow-x:auto;padding:0.75rem 1rem;color:var(--code-base-color);background:#1c1b1b;border-radius:0.5rem;background-color:var(--code-block-bg);border:1px solid rgba(40, 44, 52, 0.52);line-height:1.4;margin:0.5rem 0"><code class="language-typescript" style="white-space:pre"><span style="color:var(--code-keyword-color)">import</span><span> { createFileSystemProject } </span><span style="color:var(--code-keyword-color)">from</span><span> </span><span style="color:var(--code-string-color)">"bun-workspaces"</span><span>;
</span>
<span></span><span style="color:var(--code-comment-color)">// Initialize Project, by default at process.cwd()</span><span>
</span><span></span><span style="color:var(--code-keyword-color)">const</span><span> myProject = createFileSystemProject();
</span>
<span></span><span style="color:var(--code-comment-color)">// List of Workspaces</span><span>
</span><span></span><span style="color:var(--code-keyword-color)">const</span><span> myWorkspaces = myProject.workspaces;
</span>
<span></span><span style="color:var(--code-comment-color)">// Workspace aliases are validated to be unique from workspace names,</span><span>
</span><span></span><span style="color:var(--code-comment-color)">// so this is unambiguous</span><span>
</span><span></span><span style="color:var(--code-keyword-color)">const</span><span> myWorkspace = myProject.findWorkspaceByNameOrAlias(</span><span style="color:var(--code-string-color)">"my-alias"</span><span>);
</span>
<span></span><span style="color:var(--code-comment-color)">// Run the lint script in parallel across workspaces</span><span>
</span><span></span><span style="color:var(--code-keyword-color)">const</span><span> { output, summary } = myProject.runScriptAcrossWorkspaces({
</span><span>  </span><span style="color:var(--code-attr-color)">script</span><span>: </span><span style="color:var(--code-string-color)">"lint"</span><span>,
</span>});
<!-- -->
<span></span><span style="color:var(--code-keyword-color)">for</span><span> </span><span class="hljs-function" style="color:#f08d49">await</span><span class="hljs-function">(</span><span class="hljs-function hljs-params" style="color:var(--code-keyword-color)">const</span><span class="hljs-function hljs-params"> { chunk, metadata } </span><span class="hljs-function hljs-params" style="color:var(--code-keyword-color)">of</span><span class="hljs-function hljs-params"> output.text()</span><span class="hljs-function">)</span><span>{
</span><span>  </span><span style="color:var(--code-comment-color)">// console.log(chunk); // the output chunk's content (string)</span><span>
</span><span>  </span><span style="color:var(--code-comment-color)">// console.log(metadata.streamName); // "stdout" or "stderr"</span><span>
</span><span>  </span><span style="color:var(--code-comment-color)">// console.log(metadata.workspace); // the Workspace the output is from</span><span>
</span>}
<!-- -->
<span></span><span style="color:var(--code-comment-color)">// Object with details about exit results etc.</span><span>
</span><span></span><span style="color:var(--code-comment-color)">// This is the same data as the CLI's --json-outfile</span><span>
</span><span></span><span style="color:var(--code-keyword-color)">const</span><span> results = </span><span style="color:var(--code-keyword-color)">await</span><span> summary;</span></code></pre>
<p>See the <a href="https://bunworkspaces.com/cli" target="_blank" rel="noopener noreferrer" class="">full CLI docs</a> and <a href="https://bunworkspaces.com/api" target="_blank" rel="noopener noreferrer" class="">full API
docs</a> for more.</p>
<h3 class="anchor anchorTargetStickyNavbar_K52K" id="aliases-and-configuration-files">Aliases and Configuration Files<a href="https://bunworkspaces.com/blog/bun-workspaces-v1#aliases-and-configuration-files" class="hash-link" aria-label="Direct link to Aliases and Configuration Files" title="Direct link to Aliases and Configuration Files" translate="no">​</a></h3>
<p>Part of <code>bun-workspaces</code>'s philosophy is to never require special configuration, since it
can determine a project's structure simply from metadata available from Bun.</p>
<p>That being said, optional config can be used, such as to define aliases for workspaces,
which can make it easier to reference a workspace with a long <code>package.json</code> name such as
<code>@my-organization/my-long-package-name</code>.</p>
<p>These aliases can't clash with workspace names so that they can also unambiguously represent a workspace.</p>
<p>An example configuration file that might be at <code>my-project/my-workspaces/bw.workspace.json</code>:</p>
<pre class="syntax-highlighter" style="display:block;overflow-x:auto;padding:0.75rem 1rem;color:var(--code-base-color);background:#1c1b1b;border-radius:0.5rem;background-color:var(--code-block-bg);border:1px solid rgba(40, 44, 52, 0.52);line-height:1.4;margin:0.5rem 0"><code class="language-json" style="white-space:pre"><span>{
</span><span>  </span><span style="color:var(--code-attr-color)">"alias"</span><span>: </span><span style="color:var(--code-string-color)">"my-alias"</span><span>
</span>}</code></pre>
<p>You can read more about configuration <a href="https://bunworkspaces.com/config" target="_blank" rel="noopener noreferrer" class="">here</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_K52K" id="workspace-patterns">Workspace Patterns<a href="https://bunworkspaces.com/blog/bun-workspaces-v1#workspace-patterns" class="hash-link" aria-label="Direct link to Workspace Patterns" title="Direct link to Workspace Patterns" translate="no">​</a></h3>
<p>Workspaces can be filtered or selected for certain features using workspace patterns. You can read more about these
<a href="https://bunworkspaces.com/concepts/workspace-patterns" target="_blank" rel="noopener noreferrer" class="">here</a>.</p>
<h6 class="anchor anchorTargetStickyNavbar_K52K" id="cli-1">CLI<a href="https://bunworkspaces.com/blog/bun-workspaces-v1#cli-1" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h6>
<pre class="syntax-highlighter" style="display:block;overflow-x:auto;padding:0.75rem 1rem;color:var(--code-base-color);background:#1c1b1b;border-radius:0.5rem;background-color:var(--code-block-bg);border:1px solid rgba(40, 44, 52, 0.52);line-height:1.4;margin:0.5rem 0"><code class="language-bash" style="white-space:pre"><span style="color:var(--code-comment-color)"># Filter the workspace list by patterns.</span><span>
</span><span></span><span style="color:var(--code-comment-color)"># This could be used to test patterns</span><span>
</span><span></span><span style="color:var(--code-comment-color)"># before using the run command.</span><span>
</span><span></span><span style="color:var(--code-comment-color)">#</span><span>
</span><span></span><span style="color:var(--code-comment-color)"># my-workspace may match a name or alias,</span><span>
</span><span></span><span style="color:var(--code-comment-color)"># while "my-pattern-*" matches by name pattern only.</span><span>
</span><span></span><span style="color:var(--code-comment-color)">#</span><span>
</span><span></span><span style="color:var(--code-comment-color)"># The "path:" specifier matches workspace directories</span><span>
</span><span></span><span style="color:var(--code-comment-color)"># relative to the project root via glob </span><span>
</span><span>bw ls my-workspace </span><span style="color:var(--code-string-color)">"my-pattern-*"</span><span> </span><span style="color:var(--code-string-color)">"path:my-glob/**/*"</span><span>
</span>
<span></span><span style="color:var(--code-comment-color)"># Run for workspaces that have my-script and match the patterns.</span><span>
</span><span></span><span style="color:var(--code-comment-color)"># You can see that it's still possible to match aliases by wildcard</span><span>
</span><span>bw run my-script </span><span style="color:var(--code-string-color)">"alias:my-alias-*"</span><span> </span><span style="color:var(--code-string-color)">"path:my-glob/**/*"</span><span>
</span>
<span></span><span style="color:var(--code-comment-color)"># In general, any positional arguments for commands have </span><span>
</span><span></span><span style="color:var(--code-comment-color)"># alternative flag options</span><span>
</span>bw run \
<span>  --workspace-patterns=</span><span style="color:var(--code-string-color)">"my-workspace path:my-glob/**/*"</span><span> \
</span><span>  --script=</span><span style="color:var(--code-string-color)">"my-script"</span></code></pre>
<h6 class="anchor anchorTargetStickyNavbar_K52K" id="api-1">API<a href="https://bunworkspaces.com/blog/bun-workspaces-v1#api-1" class="hash-link" aria-label="Direct link to API" title="Direct link to API" translate="no">​</a></h6>
<pre class="syntax-highlighter" style="display:block;overflow-x:auto;padding:0.75rem 1rem;color:var(--code-base-color);background:#1c1b1b;border-radius:0.5rem;background-color:var(--code-block-bg);border:1px solid rgba(40, 44, 52, 0.52);line-height:1.4;margin:0.5rem 0"><code class="language-typescript" style="white-space:pre"><span style="color:var(--code-comment-color)">// Similar to listing by pattern via the CLI</span><span>
</span><span></span><span style="color:var(--code-keyword-color)">const</span><span> myWorkspaces = myProject.findWorkspacesByPattern(
</span><span>  </span><span style="color:var(--code-string-color)">"my-workspace"</span><span>,
</span><span>  </span><span style="color:var(--code-string-color)">"my-pattern-*"</span><span>,
</span><span>  </span><span style="color:var(--code-string-color)">"path:my-glob/**/*"</span><span>
</span>);
<!-- -->
<span></span><span style="color:var(--code-comment-color)">// Same as the above CLI run command</span><span>
</span><span></span><span style="color:var(--code-keyword-color)">const</span><span> { output, summary } = myProject.runScriptAcrossWorkspaces({
</span><span>  </span><span style="color:var(--code-attr-color)">workspacePatterns</span><span>: [
</span><span>    </span><span style="color:var(--code-string-color)">"alias:my-alias-*"</span><span>,
</span><span>    </span><span style="color:var(--code-string-color)">"path:my-glob/**/*"</span><span>
</span>  ],
<span>  </span><span style="color:var(--code-attr-color)">script</span><span>: </span><span style="color:var(--code-string-color)">"my-script"</span><span>,
</span>});</code></pre>
<h3 class="anchor anchorTargetStickyNavbar_K52K" id="inline-scripts-via-the-bun-shell">Inline Scripts via the Bun Shell<a href="https://bunworkspaces.com/blog/bun-workspaces-v1#inline-scripts-via-the-bun-shell" class="hash-link" aria-label="Direct link to Inline Scripts via the Bun Shell" title="Direct link to Inline Scripts via the Bun Shell" translate="no">​</a></h3>
<p>Running scripts in <code>bun-workspaces</code> usually means running a command from the "scripts" in workspaces' respective <code>package.json</code>s.</p>
<p>However, it's possible to also write "inline scripts," which are simply plain shell commands.</p>
<p>Bun created the <a href="https://bun.com/docs/runtime/shell" target="_blank" rel="noopener noreferrer" class="">Bun Shell</a> as a cross-platform bash-like shell,
and this turned about to be perfect for this feature.</p>
<p>The following code uses the Bun Shell to run the inline command in all workspaces, so its behavior should
be consistent across all major operating systems:</p>
<h6 class="anchor anchorTargetStickyNavbar_K52K" id="cli-2">CLI<a href="https://bunworkspaces.com/blog/bun-workspaces-v1#cli-2" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h6>
<pre class="syntax-highlighter" style="display:block;overflow-x:auto;padding:0.75rem 1rem;color:var(--code-base-color);background:#1c1b1b;border-radius:0.5rem;background-color:var(--code-block-bg);border:1px solid rgba(40, 44, 52, 0.52);line-height:1.4;margin:0.5rem 0"><code class="language-bash" style="white-space:pre"><span>bw run </span><span style="color:var(--code-string-color)">"echo 'This is my inline script'"</span><span> --inline</span></code></pre>
<h6 class="anchor anchorTargetStickyNavbar_K52K" id="api-2">API<a href="https://bunworkspaces.com/blog/bun-workspaces-v1#api-2" class="hash-link" aria-label="Direct link to API" title="Direct link to API" translate="no">​</a></h6>
<pre class="syntax-highlighter" style="display:block;overflow-x:auto;padding:0.75rem 1rem;color:var(--code-base-color);background:#1c1b1b;border-radius:0.5rem;background-color:var(--code-block-bg);border:1px solid rgba(40, 44, 52, 0.52);line-height:1.4;margin:0.5rem 0"><code class="language-typescript" style="white-space:pre"><span>myProject.runScriptAcrossWorkspaces({
</span><span>  </span><span style="color:var(--code-attr-color)">script</span><span>: </span><span style="color:var(--code-string-color)">"echo 'This is my inline script'"</span><span>,
</span><span>  </span><span style="color:var(--code-attr-color)">inline</span><span>: </span><span style="color:#f08d49">true</span><span>
</span>});</code></pre>
<p>You aren't limited to only the Bun Shell but can also force the system shell, which is <code>sh</code> for Linux/macOS/WSL and <code>cmd</code> for Windows.
You can read more on inline scripts <a href="https://bunworkspaces.com/concepts/inline-scripts" target="_blank" rel="noopener noreferrer" class="">here</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_K52K" id="in-conclusion--the-future">In Conclusion &amp; The Future<a href="https://bunworkspaces.com/blog/bun-workspaces-v1#in-conclusion--the-future" class="hash-link" aria-label="Direct link to In Conclusion &amp; The Future" title="Direct link to In Conclusion &amp; The Future" translate="no">​</a></h2>
<p>Above doesn't cover everything that <code>bun-workspaces</code> can currently do.</p>
<p>However, I realize that still many features
should be added to satiate those users that are used to the heavier monorepo frameworks.</p>
<p>I'm one of those users myself, so I will be working continuously towards a more and more advanced feature set, without
sacrificing the no-config easy entry that only requires a valid Bun monorepo.</p>
<p>Now that version 1 has solidified, I'm free to build on top of this foundation that has proven itself for the features thus
far with little technical debt, and I will strive to
keep about the same weekly release cadence that I've kept up for many months already.</p>
<p>Keep an eye out for new releases as I work on the <a href="https://bunworkspaces.com/roadmap" target="_blank" rel="noopener noreferrer" class="">roadmap</a>,
and consider subscribing to the blog at the top right of the page, as I will write new posts for big releases!</p>
<div class="conclusion_G73h"><img src="https://bunworkspaces.com/blog/images/bwunster-blogger_64x70.png" class="pixel-art-image undefined"></div>]]></content>
        <author>
            <name>Scott</name>
            <uri>https://github.com/ScottMorse</uri>
        </author>
        <category label="Release" term="Release"/>
        <category label="bun-workspaces" term="bun-workspaces"/>
    </entry>
</feed>