# April 2026

**Released:** April 2026

This release rolls out **Auth0 authentication** across the platform and expands **Clean Room Studio** with in-browser **R support**, manual analysis syncing, and a more capable AI code editor.

## 🔐 Auth0 Authentication

GoFigr now authenticates users through Auth0 on both the web app and the `gofigr` Python client, with the legacy auth path available in dual mode for a smooth transition.

**Key capabilities:**

* Auth0 login on the web app, with the legacy UI removed
* **MFA enrollment** and live status directly from user settings
* Password change, email update, and claim sync routed through Auth0
* Separate SPA and CLI client IDs exposed via the `/info` endpoint
* **`gfconfig` device-code login** — the Python client now supports Auth0 Device Authorization Flow, auto-opening the browser for verification
* Dual-mode server authentication so existing API keys and legacy credentials keep working

Auth0 integration covers: Server v2.10.0, Web App v2.2.5, Python v2.2.0.

***

## 🧪 Clean Room Studio: R Support

Clean Room Studio is no longer Python-only. Both the in-browser runtime and the AI code editor now understand R.

**New capabilities:**

* **WebR Clean Room runtime** — run R figures entirely in the browser with JS-side publishing and watermarking
* Package preloading, cache invalidation, and DataFrame preview for WebR
* Base R graphics support in Clean Room Studio
* **R language support in the AI code editor** — agentic code editing now works on R workspaces
* **WebR `publish()` parameters** — `width`, `height`, and `dpi` are honored in the WebR shim, matching the Python API

[Clean Room (Python) →](/features/clean-room-python.md) · [Clean Room (R) →](/features/clean-room-r.md)

***

## 🔄 Manual Sync Analysis

Story analysis tracking is now an explicit, user-controlled action instead of a background auto-sync.

**What's new:**

* **Sync Analysis button and modal** replace auto-tracking for story updates
* Story config auto-saves before refine and recreate operations
* Streamlined "Story Updated" modal copy
* Auto-scroll to new slides is suppressed during sync to avoid jumpy layouts

[AI Story Mode documentation →](/features/story-mode.md)

***

## 🤖 Smarter AI Code Editor

The AI code editor in Clean Room Studio gets more context and better recovery behavior.

**Improvements:**

* **Auto-retry on failure** — AI code changes are automatically retried on execution failure or no output, with runtime and `publish()` details added to the feedback prompt
* **`publish()` parameter awareness** — the editor knows about `width`, `height`, and `dpi` arguments
* **Figure image and package context** are now passed to the code edit agent for better grounding
* **Improved chat context** — the latest figure image is sent after conversation history, keeping responses grounded in the current state

***

## 🐍 Python Client: `@reproducible` & Watermarks

The `gofigr` Python client sharpens its watermarking and broadens `@reproducible` parameter support.

**Improvements:**

* **Short ID watermarks** — watermark size calculation now uses short IDs, producing smaller, cleaner QR codes
* **QR library migration** from `pyqrcodeng` to `python-qrcode`
* **`@reproducible` container support** — decorator now handles tuples, numpy arrays, and nested containers
* **Auto-injected `publish`** in Clean Room code execution
* **Matplotlib DPI capture** in the clean room manifest for accurate Pyodide rendering
* Fixed `pad_for_watermark` widening images beyond the figure's intended width
* Fixed `PosixPath` serialization error in `FileData.read`

***

## Additional Improvements

* Workspace dropdown is always visible so users can create new workspaces from anywhere
* Workspace link in the revision view, with the workspace selector syncing on navigation
* Refresh buttons added to the revision view, revision selector, and related panels
* Real-time capture wizard: data tracking and Clean Room examples, `gfconfig` integration, and API key handling improvements
* Clean Room manifest viewer: raw JSON toggle and `formatValue` helper
* Backend performance improvements (faster short ID lookups, faster cold starts)
* Numerous scroll, layout, and copy fixes across Clean Room Studio and Story Mode


---

# 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://docs.gofigr.io/releases/2026-04.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.
