# March 2026

{% updates format="full" %}
{% update date="2026-03-25" %}

## Smoother surfaces, steadier foundations

This release improves the cloud resource explorer, filters, and blueprint creation experience, while fixing several UI glitches and a webhook reliability issue.

#### ⚡ Improvements

**Cloud resource explorer opens as a side drawer**

When creating an environment from cloud, the resource explorer now opens as a side drawer on the same page instead of redirecting to the Cloud Graph page.

**What does it mean for you?**\
You stay in context while selecting resources to codify, no more bouncing between pages during environment creation.

***

**Polished dropdowns, filters, and UI details**

Filter dropdowns for packages and deployments now load incrementally with search support. All dropdowns across the app use a fixed width with truncation and tooltips for overflowed content. We also improved the blueprint creation page with a clear empty state and validation when no packages are added, and moved the confetti animation to appear on the newly created environment node.

**What does it mean for you?**\
Faster filtering on large lists, a more consistent interface with fewer layout shifts, and clearer guidance when creating blueprints.

***

#### 🐛 Bug fixes

**Fixed crash when user email is missing**

The application no longer throws an error when a user account has no email address on file.

***

**Fixed false output reference error during CLI install**

Installing a blueprint via CLI no longer shows a spurious "missing output reference" error caused by invalid references in the environment.

***

**Code editor errors no longer cut off screen**

Validation errors in the code editor input fields are now fully visible instead of rendering outside the viewport.

***

**Double-click no longer creates duplicate collections**

Rapidly clicking the "Connect and Create" button during collection creation no longer triggers multiple API calls.

***

**"Show unchanged" filter now re-applies correctly**

The unchanged filter in plan view now works properly when toggled off and on again while a main property filter is active.

***

**Reference picker now selects items on click**

Clicking an item in the reference picker popover (deployment, package, output step) now correctly selects it instead of closing the popover.

***

**Fixed deployment audit webhook failures for approve events**

The initiator and timestamp fields were not being resolved when processing deployment approve audit events, causing org-scoped webhooks to fail silently.
{% endupdate %}

{% update date="2026-03-18" %}

## Sharper collections, smoother workflows

This release strengthens collection management with smarter role handling and clearer policy labels, improves Slack integration reliability, and squashes a solid batch of UI and CLI bugs.

#### ⚡ Improvements

**Smarter collection member management**

Two updates to how users are assigned to collections: viewers can no longer be added as collection owners (since they lack owner-level permissions), and the user picker now displays each person's organization role (Admin, Deployer, Builder, or Viewer) under their name.

**What does it mean for you?**\
You can make faster, more informed decisions when assigning collection roles, and you won't accidentally grant owner access to users who can't use it.

***

**Slack link unfurling now works across all workspaces**

Bot-posted plan links (like run summaries) now unfurl correctly in any Slack workspace. Previously, unfurling only worked in workspaces where the bot ID was manually whitelisted.

**What does it mean for you?**\
Shared run links in Slack now show rich previews everywhere, so your team gets context at a glance without clicking through.

***

**Updated fallback and error screens**

We redesigned the 404, "not found," and uncaught exception screens to match our current visual style. Environments and runs that can't be found now show a dedicated fallback page instead of a blank screen.

**What does it mean for you?**\
When something goes wrong, you get a clear, helpful error page instead of a confusing white screen. It's easier to understand what happened and navigate back.

***

**Clearer "allowed blueprints" policy label**

We renamed the confusing "Restrict blueprints" label in collection policies to "Allowed blueprints" to accurately reflect its purpose.

**What does it mean for you?**\
Policy settings now say what they mean. Less second-guessing when configuring which blueprints a collection can use.

***

#### 🐛 Bug fixes

**Fixed admin users only seeing collection-allowed blueprints**

Admin users were incorrectly limited to collection-allowed blueprints in the deploy dropdown instead of seeing all available options.

***

**Failed run logs now auto-scroll to the first error**

When a run fails, the logs panel now automatically opens and scrolls to the first error instead of staying collapsed.

***

**Fixed CLI `bricks bp state-config` crash**

We resolved a "querystring/limit" error that was causing the `bricks bp state-config` command to fail.

***

**Blueprint output validation on publish**

Publishing a parent blueprint that references missing child outputs is now caught at publish time instead of failing silently at deploy time.

***

**Removed merge button from state diff viewer**

The merge button no longer appears when comparing environment state versions in diff mode. It was showing up and was clickable, but it shouldn't have been there.

***

**Renamed "deployment" to "environment" in remaining UI spots**

We updated leftover "deployment" references to "environment" in Cloud Graph discovery tooltips and the run deletion flow.

***

**Fixed package list offset after filtering during blueprint creation**

Filtering the package list, scrolling, then clearing the filter no longer keeps the stale scroll position from the previous results.

***

**Fixed blueprint manifest drawer format reset**

Closing and reopening the manifest drawer with "Raw" selected no longer resets the view to YAML formatted as JSON.

***

**Fixed swapped tooltips in "from code" environment modal**

The blueprint name and technology tooltips in the "Create environment from code" modal were displaying each other's text.

***

**Fixed cropped avatars in user popovers**

User avatars in collection assignment lists are now displayed at full size without clipping.

***

**Fixed spurious blueprint-level prop on `bricks bp add --props`**

Running `bricks bp add` with `--props` to override an artifact-level prop was also creating a redundant, empty blueprint-level prop for the same key. The extra prop is no longer generated.

***

**Terraform variables with `default = null` no longer treated as required**

The HCL parser was treating Terraform variables with `default = null` as required, forcing blueprint authors to add unnecessary inputs that could cause plan failures. These variables are now correctly recognized as optional.

***

**Fixed collection environments tab**

The environments table under a collection had a broken layout (action buttons dropped to a second line, missing git column header), and environments stuck in a "failed to create" state were leaking into every collection's list. Both issues are resolved.

***

**Fixed self-hosted task API missing cloud config**

The Get Task API was not returning `cloud_config` details for self-hosted accounts, preventing the local orchestrator from picking up tasks.
{% endupdate %}

{% update date="2026-03-11" %}

## Polish and reliability

This release focuses on UI consistency, clearer labeling, and improved stability across blueprints, environments, and deployment workflows.

### ⚡ Improvements

#### **Improved environment creation flow**

The "Create environment from code" flow received a round of UX improvements, including layout fixes, better validations, and interaction polish.

**What does it mean for you?**\
Creating new environments is now a smoother, more guided experience.

***

#### **Compact diff view**

The JSON diff modal for package and plan diffs now shows a compact, collapsed view by default instead of displaying the full file content.

**What does it mean for you?**\
Spotting what actually changed in a diff is now much faster. No more scrolling through hundreds of unchanged lines to find the relevant changes.

***

#### **Renamed "JSON editor" to "code editor"**

The JSON editor drawer has been renamed to "code editor" across the entire application to better reflect its capabilities.

**What does it mean for you?**\
The editor handles more than just JSON, and the name now reflects that. A small change, but it removes confusion when working with different file types.

***

#### **Better invite user placeholder**

The "Invite User" modal now clearly indicates that you need to enter email addresses.

**What does it mean for you?**\
No more guessing what goes in the input field when inviting teammates to your workspace.

***

#### **Standardized filters button height**

The filters button on the environment page now renders at a consistent height across the Overview, Runs, and Archived tabs.

**What does it mean for you?**\
A smoother, less jumpy interface when switching between environment tabs.

***

### 🐛 Bug fixes

#### **Fixed blueprint version selector getting stuck after editing**

Viewing the manifest during blueprint edit mode and then canceling would freeze the version selector. The selector now works correctly after exiting edit mode.

***

#### **Fixed artifact repository source missing in table view**

Package and artifact source links were visible on the blueprint page but missing from the packages table view. Source links now show correctly in both places.

***

#### **Fixed environment TTL toggle becoming unresponsive**

The TTL on/off switch would occasionally stop responding after toggling. We resolved the race condition causing the issue.

***

#### **Removed outdated tooltip on environment archive option**

Hovering over "Archive" in environment options showed an outdated "uninstall before archiving" warning. The tooltip has been removed.

***

#### **Fixed docs link on environment properties**

The "Docs" link on the empty environment properties placeholder was linking to the general environments page instead of the properties documentation. It now points to the correct page.

***

#### **Fixed plan page outputs filter after codification**

After codifying a resource via Cloud Graph, clicking the outputs filter on the plan page showed "no results" even though outputs existed. The filter now works as expected.

***

#### **Fixed error code mismatch after taxonomy rename**

The UI was still referencing an old error code after the deployment-to-environment rename, causing certain error states to not display correctly. Updated to match the backend.

***

#### **Fixed collection list error for non-admin users**

Builders filtering collections by user encountered a 400 error. The filter query now works correctly for non-elevated users.

***

#### **Fixed 400 error on blueprint manifest page**

Viewing certain blueprint manifests returned a 400 error due to a parsing issue. The manifest parser now handles edge cases correctly.

***

#### **Fixed destroy retry failing with "stale plan"**

When an uninstall partially completed and then failed, the retry would reuse the old plan file and Terraform would reject it as stale. Retries now regenerate a fresh destroy plan.
{% endupdate %}

{% update date="2026-03-04" %}

## Streamlined creation, clearer signals

This release unifies the artifact creation experience, improves environment lifecycle management, and delivers better error messages and status accuracy across the platform.

### **🚀 New features**

#### **Unified artifact and blueprint creation flow**

Blueprint creation now uses a single entry point that supports both CLI-publish and repository-based flows when creating artifacts, removing the need to choose between different creation paths.

**What does it mean for you?**\
Whether you publish via the CLI or connect a repository, you now follow the same streamlined path, reducing friction and confusion, especially if you don't use GitHub.

<figure><img src="/files/LJUcEFoDqTw1h29JcOHM" alt=""><figcaption></figcaption></figure>

***

#### **Auto-remediation for drift detection**

You can now enable auto-remediation on scheduled drift detection jobs. When enabled, if drift is detected, Bluebricks automatically triggers a follow-up run with auto-approve to bring the environment back to its desired state.

**What does it mean for you?**\
No more manual intervention after drift is found: enable auto-remediation and your environments self-heal automatically, reducing response time and operational overhead.

<figure><img src="/files/sSiMd8yf6m2XY7chEQyP" alt=""><figcaption></figcaption></figure>

***

### **⚡ Improvements**

#### **Extended TTL uninstall deploy types**

The uninstall process for TTL-based environment cleanup now correctly supports `auto_approve` and `incremental` deploy types, ensuring consistent behavior across all lifecycle flows.

**What does it mean for you?**\
Automated cleanup and lifecycle management for multi-deploy-type environments are now more predictable and reliable.

***

#### **Archive environments without uninstalling**

Environments can now be archived regardless of their install status. We also updated the confirmation message to more clearly explain what archiving means.

**What does it mean for you?**\
You can organize and clean up your environment list without being forced to uninstall first, giving you more flexibility over environment lifecycle management.

***

#### **Plan-only runs no longer show as drifted**

Plan-only runs that detect changes no longer incorrectly move the environment status to "drifted."

**What does it mean for you?**\
Your environment statuses stay accurate and trustworthy, so you can rely on drift indicators without second-guessing whether a plan-only run caused them.

***

#### **Copy manifest on blueprint page**

The package manifest drawer now includes a copy-to-clipboard button when opened from the dedicated blueprint page.

**What does it mean for you?**\
Quickly grab your manifest content without manually selecting text, especially handy when sharing configurations or debugging.

***

#### **Renamed "Component" column to "Environment"**

We renamed the "Component" column on the homepage required actions table to "Environment" to more accurately reflect what it contains.

**What does it mean for you?**\
Clearer labeling means less guesswork when scanning your required actions.

***

#### **Improved error messages across the platform**

We improved error handling in several areas: the package manifest page no longer returns a 400 error for certain parsing issues, `PACKAGE_NOT_FOUND` responses now show human-readable package names instead of UUIDs, and cloud discovery permission errors now display a unified, provider-agnostic message.

**What does it mean for you?**\
When something goes wrong, you get clearer, more actionable error messages, less time deciphering cryptic responses and more time fixing the actual issue.

***

#### **Continued taxonomy and microcopy alignment**

We continued aligning product terminology, updating the deploy page banner and environment run deletion toast to use current naming conventions.

**What does it mean for you?**\
A more consistent experience across the platform as we finalize our terminology updates.

***

### **🐛 Bug fixes**

#### **Fixed nested blueprint node on cloud graph**

Resolved an issue where the cloud graph incorrectly displayed nested blueprint nodes after navigating from the environment page.

***

#### **Fixed broken page layouts**

Resolved an issue where certain page components were overlapping instead of maintaining proper spacing.
{% endupdate %}
{% endupdates %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bluebricks.co/docs/changelog/march-2026.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
