> ## Documentation Index
> Fetch the complete documentation index at: https://docs.prodexlabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> What's new in ProDex: features, improvements, and fixes from the last few weeks.

<Update label="June 4, 2026">
  ## Modeler: validation warnings

  Model validation now has a warnings channel, and the [modeler](/product/simulation-modeling) surfaces those warnings in the UI instead of only blocking errors. You're warned when a resource's capacity is set unreasonably high (now capped at runtime) or when routing forms a zero-delay cycle that could livelock a run.

  ## Insights: search charts and KPIs

  The [insights](/product/insights) and [results](/product/results-and-analytics) pages now have a search bar for finding a chart or KPI by name, instead of scanning the grid.

  ## Charts: axis format warnings

  When a chart's axis format expects numbers but the underlying data isn't numeric, you now get a warning instead of a silently broken axis. See [results](/product/results-and-analytics).

  ## Navigation: profile account menu

  Your account settings moved out of a modal dialog into a profile account menu in the sidebar.

  ## Smaller fixes

  * Admin: the team and merge-factories tables support column sorting.
</Update>

<Update label="June 3, 2026">
  ## Dexter: context-window indicator

  Dexter's chat header now shows a context-window utilization indicator as a percentage, so you can see how full the conversation context is at a glance. See [AI assistant](/product/ai-assistant).

  ## Insights: agent prompt on empty dashboards

  An empty [insights](/product/insights) dashboard now prompts you to generate charts with Dexter, replacing the bare file-upload box.
</Update>

<Update label="June 2, 2026">
  ## AI assistant: drag-and-drop file upload

  You can now drag files anywhere onto the chat panel to upload them, and each file shows a progress indicator while it uploads, including when you're answering one of Dexter's questions. Staged files also stay available for 24 hours instead of 30 minutes, so a slow reply doesn't lose your upload. See [AI assistant](/product/ai-assistant).

  ## AI assistant: clearer question prompts

  When you answer one of Dexter's questions, the exchange now renders as a question-and-answer card aligned with your messages, instead of raw inline tags. Ranked questions also let you add your own custom options to the list. See [AI assistant](/product/ai-assistant).

  ## Dexter: search the memories file tree

  You can now search and filter Dexter's memories file tree in agent config, instead of scrolling the full list. See [AI assistant](/product/ai-assistant).

  ## Snapshots: load across model versions

  Loading a [snapshot](/reference/snapshots) saved on an older version now migrates it forward automatically, so snapshots saved before a model update keep loading.

  ## Planning: resource utilization vs capacity chart

  The resource utilization vs capacity chart is back in [planning](/product/planning) results.

  ## Modeler: topic and state-variable descriptions

  You can now add descriptions to topics and state variables in the [modeler](/product/simulation-modeling) to document what each represents. This also clears a modeler crash affecting some models with older topic data.

  ## BOM graph: dynamic sizing

  Cards in the [BOM](/product/bom) graph view size to their content, so labels no longer overflow or get clipped.
</Update>

<Update label="June 1, 2026">
  ## Navigation: icon sidebar and home logo

  The left sidebar is now locked to a compact icon rail, and the ProDex logo returns you to your home workspace: more room for the canvas, less chrome to scan.

  ## AI assistant: cleaner home start and full question history

  The home workspace consolidates its data prompts into a single **Start with exploring data** action instead of competing buttons. Dexter's question-and-answer prompts also keep their full response history visible, so earlier answers in a back-and-forth no longer drop out of view. See [AI assistant](/product/ai-assistant).
</Update>

<Update label="May 31, 2026">
  ## Modeler: resources assign on connect

  Connecting a resource to a process in the [modeler](/product/simulation-modeling) now assigns that resource to the process and draws the resource edge automatically, instead of leaving the assignment as a separate step.
</Update>

<Update label="May 29, 2026">
  ## Modeler: filtered and quantitative buffer release

  Buffers can now release a specific quantity of entities, or only the entities matching a filter, instead of releasing their full contents at once. New `on_buffer_contents_changed` and `on_station_contents_changed` events let a model react the moment a buffer or station's contents change. See [simulation modeling](/product/simulation-modeling).

  ## Insights: searchable dashboard browser

  The [insights](/product/insights) list is now a searchable dashboard browser, so you can find a dashboard by name instead of scanning a flat table.

  ## AI assistant: usage disclaimers

  Dexter's chat, the results pages, and generated agent reports now carry a short AI-usage disclaimer. See [AI assistant](/product/ai-assistant).

  ## Smaller fixes

  * Planning: importing or merging a factory now remaps planning-run entity references correctly, so imported runs resolve to the right entities. ([planning](/product/planning))
</Update>

<Update label="May 28, 2026">
  ## Scheduled jobs: pause and resume

  You can now pause and resume a scheduled job instead of deleting and recreating it. Each job carries an active flag, and due jobs are claimed reliably so a paused job stays paused until you switch it back on.

  ## Factory export: bundle memories and workflows

  Exporting a factory now bundles Dexter's agent memories and your custom workflows into the `.prdx` file, so importing into another factory or tenant carries that context with it. Sharing a factory also snapshots its current version automatically. See [export and import](/product/factory-export).

  ## AI assistant: chat search and recent conversations

  Chat search moved to a full-screen dialog, the collapsed assistant sidebar gained a Recent Conversations popover, and the sidebar now lists five recent conversations instead of three. Recommended options also sort to the top of Dexter's ask-question prompts. See [AI assistant](/product/ai-assistant).

  ## Simulation: clearer error context

  When a run fails on a resource assertion or at a run boundary, the executor surfaces richer error context, so it's easier to see what went wrong rather than getting a bare failure. See [simulation modeling](/product/simulation-modeling).

  ## Smaller fixes

  * Factory import and export buttons now show a loading spinner while the operation runs.
  * Added a Documentation link to the navigation sidebar.
  * File uploads now accept capitalized extensions like `.CSV` or `.PNG`, not just lowercase.
  * Validation errors sent to Dexter are capped and truncated so a flood of errors doesn't crowd the transcript.
</Update>

<Update label="May 27, 2026">
  ## Dexter: memories and files from home

  You can now create and edit Dexter's memories directly from the home workspace, and preview files you've uploaded to agent settings before using them. Your home workspace selection persists between sessions. See [AI assistant](/product/ai-assistant).

  ## Scheduled jobs rename

  Dexter's **Automations** section is now called **Scheduled Jobs** in the sidebar.

  ## Resources: zero default capacity

  Simulation resources can now have a default capacity of 0, so you can model a resource that starts fully unavailable. See [simulation modeling](/product/simulation-modeling).

  ## Smaller fixes

  * Snapshots and experiments: restored name search in the picker comboboxes.
  * Entities: restored legacy numeric select mappings for integer and real number attributes. ([entities](/reference/entities))
  * Schedules: dropped the misleading UTC label from the date-time picker. ([schedules](/reference/schedules))
  * Insights: the dashboard header now scrolls with the chart grid. ([insights](/product/insights))
  * Navigation: restored sidebar scrolling and icon rendering.
  * BOMs: long table text is constrained instead of overflowing. ([BOMs](/product/bom))
</Update>

<Update label="May 26, 2026">
  ## Configurator: unified workspace

  The [configurator](/product/configurator) now runs in a single tree workspace with nested option support. The top bar unifies the template and configuration selectors, sidebars were replaced with searchable tables, and committed revisions show part numbers. Revision diffs render as collapsible cards, and a configuration-space sidebar gives hover previews as you navigate. Configuration revisions also round-trip through `.prdx` export and import.

  ## Models: starring

  You can now star a model to mark it as a favorite from the model list.

  ## AI assistant: data gaps prompt

  Dexter gained a data-gaps prompt that points you at missing inputs in your model. See [AI assistant](/product/ai-assistant).

  ## Smaller fixes

  * Charts: Gantt datetime ticks use a cleaner interval ladder so axis labels read correctly. ([results](/product/results-and-analytics))
  * Insights: dashboard descriptions display in full. ([insights](/product/insights))
</Update>

<Update label="May 22, 2026">
  ## AI assistant: home chat status

  The home chat now shows status icons, so you can see at a glance where each conversation stands. See [AI assistant](/product/ai-assistant).

  ## Smaller fixes

  * Dexter no longer triggers a navigation when it's already on the target page.
  * Dexter's ask-question prompts now label their input types.
  * Admin: markdown content stays contained within viewer modals.
</Update>

<Update label="May 21, 2026">
  ## Configurator: rebuilt around revisions

  The [configurator](/product/configurator) has been rebuilt from the ground up. Revisions are now first-class: every configuration has an explicit revision history you can fork from, instead of versions being tacked on after the fact. Excel exports work with the new shape: you can export the latest revision as a single-sheet workbook, or the full history as a multi-sheet workbook with one sheet per revision and a metadata sheet on top.
</Update>

<Update label="May 20, 2026">
  ## Sharing: recipient list works for any owner

  The Share and Publish Update dialogs now populate with everyone in your tenant for any factory owner, not just tenant admins. Previously the recipient list came back empty for non-admin owners, so the dialog would open with nothing to send to.
</Update>

<Update label="May 19, 2026">
  ## Modeler: infinite station capacity

  Stations can now be marked as non-bottlenecks per entity type. In the properties panel, toggle the **Infinite** switch on a capacity row and the numeric input is replaced with an ∞ glyph: the [station](/reference/entities) never blocks for that entity type during simulation. Replaces the old workaround of typing arbitrary high values like `999999`, which looked like a real constraint in results and obscured genuine bottlenecks.

  ## Results: suggested chart chips in the empty state

  The [results dashboard](/product/results-and-analytics) empty state shows six suggested chart chips: throughput, utilization, lead time, cycle time, WIP, bottlenecks. Clicking a chip sends the same prompt the chart-creation dialog uses, and Dexter maps the description to whatever metrics your model actually emits, so the suggestions work on any model rather than only on demo data.

  ## Dexter: recovers when its sandbox restarts mid-run

  When Dexter's sandbox is restarted, evicted, or hits a transient infrastructure blip mid-run, the next tool call now repairs the session automatically instead of erroring out. Runs that would have stalled on "no Sandbox found" now keep going.

  ## AI assistant: localized tool-call summaries

  The per-group tool-call summaries in Dexter's transcript now respond in your UI language. Switch the UI to Spanish and Dexter's group summaries come back in Spanish on subsequent runs. Integration display names stay verbatim.
</Update>

<Update label="May 18, 2026">
  ## Modeler: cleaner drag previews and router routing

  Drag previews from the node library now match the shapes that actually render on the canvas: the router preview uses the same octagon outline as a placed router, and rounded corners across source, sink, process, station, buffer, combiner, and separator previews share the canvas geometry. Router-originated edges also anchor to the router's right handle by default, so new connections come out the right side.
</Update>

<Update label="May 17, 2026">
  ## Tenant-admin merge picker: owner column and filter

  The tenant-admin factory merge picker gained an Owner column and an owner filter, so admins can narrow down candidates when a tenant spans many factories across many users. The "New factory name" field is now visually marked required, and the merge description copy was rewritten in plain language (out: "content-hash dedup", "suffix-on-collision"; in: a one-line explanation of the union semantics).

  ## Smaller fixes

  * Tenant admin: removed the now-redundant tenant factory list (the merge picker covers that ground).
</Update>

<Update label="May 16, 2026">
  ## Factory sharing

  A new sharing surface lets you share a factory with another user from the factory selector. The publish-update dialog shows the recipient list and disables the action (with an explanation) when no one can receive the update. Factory selector actions are grouped so the share controls don't get lost among navigation entries.

  ## Notifications center

  The sidebar footer now hosts a notification bell and inbox, polling every 30 seconds for new activity. Renderers cover share requests, share accepts, version blasts, admin joins, and primary-owner transfers. Dismiss and mark-as-read are optimistic, so the inbox responds immediately even before the server round-trip lands.

  ## Factory merge (admin)

  Tenant and platform admins can now merge two or more factories they own into a single new factory from the admin page. The system exports each, unions the result with deduplication, imports the merged factory back, and shows a toast with items kept and dedup count before navigating you into the new factory.

  ## Tenant admin: view-all and admin-join

  Tenant admins now see every factory in their tenant (with owner, member count, and last-active timestamp) and can join any of them. Joining forks the factory into a fresh workspace and notifies the owner.

  ## Smaller fixes

  * Version tree: shared and current versions are now more clearly distinguished in the version tree dialog.
  * Notifications popover: tightened sizing and row presentation.
</Update>

<Update label="May 15, 2026">
  ## Dexter: desktop notifications

  You can now opt in to desktop notifications when Dexter finishes a task or needs your input, so you don't have to keep the assistant panel in focus to know it's waiting on you. Settings live in the agent config panel.

  ## Pipelines: multi-file upload with per-chip progress

  The [pipelines](/product/templates) new-run dialog now supports multi-file upload per source with a progress chip for each file in flight (useful when you're staging a batch of files into a single source).

  ## AI assistant: cross-factory event guard

  Closes a bug where switching factories mid-run could pull you onto a results page from the wrong factory. Operations from a stale source factory are now dropped on the frontend, so an in-flight agent run can't reach across factories.

  ## Routing: 404 page for unknown paths

  Navigating to a URL that doesn't exist now renders a Page Not Found view instead of bubbling into the error boundary.

  ## Tenant admin: enrollment settings moved out

  Tenant admins no longer see the open / invite-only toggle or the default-role selector: those settings moved to the platform admin surface. The settings themselves are unchanged.
</Update>

<Update label="May 14, 2026">
  ## Planning: variant-aware throughout

  [Planning](/product/planning) now treats variants as first-class everywhere they matter. The bill-of-resources rail labels each entry with its variant conditions (two variants of the same SKU are distinct BOMs with distinct resource requirements). Demand, supply, on-hand, inventory goals, production plan, and run-input tables all expose a variant select on the row, with collision checks scoped so the active row doesn't conflict with itself.

  ## AI assistant: inline hourglass per message

  The chat panel's top-right hourglass dropdown moved to an inline hourglass on each user message. The popover for that message includes Rollback and Export, so the version action is associated with the message it applies to rather than living as a single global control.

  ## AI assistant: chat loading polish

  Conversation tabs now show message-shaped skeleton placeholders while messages load, and the initial scroll-to-bottom on conversation open is instant and fades in instead of animating visibly.
</Update>

<Update label="May 13, 2026">
  ## Planning: full rebuild

  [Planning](/product/planning) shipped a structural rewrite. The single monolithic editor is gone: the side panel now opens dedicated workspaces for demand and supply, stock and capacity, inventory goals, bill-of-resources config, BOM config, resource constraints, tags, fulfillment, the production editor, and results. A new run side panel and shell mean switching between models and runs is faster, and individual edits no longer reload the whole aggregate.

  ## Configurator: agent-initiated sessions

  Dexter can now create and tear down [configurator](/product/configurator) sessions itself instead of requiring you to start a session in the UI first. Chat-driven flows like "configure the first bulk-uploaded order against the 40LS template" work end-to-end without touching the configurator surface.

  ## Inventory assignment: confirm before picking off-recommendation items

  When an applied rule is present for a SKU, picking inventory items outside the AI recommendation list and clicking **Next** now opens a confirmation dialog that re-shows the active rules and the count of off-list selections. The planner has to explicitly acknowledge before the flow advances. Previously the rule was shown as a warning but didn't block the selection.

  ## Smaller fixes

  * Planning: removed the unwired "Custom constraints" entry from the side panel (it was routing to a workspace that didn't actually drive optimizer behavior yet).
</Update>

<Update label="May 12, 2026">
  ## Lookups: master-detail rewrite

  The [lookup tables](/reference/constants-and-lookups) editor moved off the modal-with-expandable-rows pattern to a master-detail layout: searchable list on the left, inline form editor on the right with a sticky Save / Cancel header. The new rules table lets you add and remove dimension columns and rule rows directly, replacing the old "possible keys plus auto-generated combinations" model. The Lookups dialog itself is now larger and tabs no longer overflow.

  ## Modeler: canvas layouts persist locally

  Manually arranged canvas positions in the [modeler](/product/simulation-modeling) now persist per model, so reopening a model doesn't snap nodes back to the auto-layout.

  ## AI assistant: integration-aware tool calls

  When Dexter calls an integration tool, the assistant transcript shows a plug icon and a dynamic group header for the integration, and the pulse animation reflects integration state. You can tell at a glance which calls are reaching out to connected systems versus running locally.

  ## Experiments: surface results sooner, recover from stale runs

  Result files now stream into the [experiments](/product/experiments) UI as each event lands instead of arriving in bulk at the end. If an experiment references a cached run whose dataset is no longer available, the snapshots re-enqueue and resimulate instead of hard-failing.

  ## Smaller fixes

  * Snapshots: switching between models no longer thrashes query caches when loading a snapshot.
  * Modeler: click-to-connect is disabled (it was triggering unintended edges on stray clicks).
  * BOMs: the filter predicate popover positions correctly instead of clipping off-screen.
  * AI assistant: scroll bar in the conversation pane stays put while Dexter is streaming.
</Update>

<Update label="May 11, 2026">
  ## Memory: bulk export and import

  Dexter's memories can now be exported as a single file and re-imported into another factory or tenant (buttons live in the agent config panel).

  ## Tenant admin: tenant-level memories

  Tenant admins can now manage memories that apply across every Dexter session in the tenant, shared context like product naming conventions, escalation rules, or vocabulary specific to your operation.

  ## Factory export from the user admin

  Tenant admins can now export any user's factory directly from the admin UI, without making the user run [export and import](/product/factory-export) themselves.

  ## BOM tree, badges, and filters

  [BOMs](/product/bom) got color-coded level badges across the entities list, variant table, and tree view (L0 blue, L1 green, L2 purple, L3 orange, L4+ gray). The entities list adds an explicit search input, advanced filters by level and attribute, and a column visibility dropdown. The tree view picks up the badges, variant condition badges, and per-view search with filters by entity, level, and condition attribute. Cycle protection prevents the tree from recursing through circular BOM references.

  ## Pipelines: pick an integration at creation

  The new-pipeline dialog now includes an integration selector, so [pipelines](/product/templates) connected to external systems get wired up at creation time instead of needing post-hoc configuration.

  ## AI assistant: timezone guardrail

  When you upload data with timestamps, Dexter no longer assumes your local timezone applies to those rows. The agent treats the timestamps as ambiguous and asks before mapping them into the model.

  ## Navigation polish

  The factory selector auto-scrolls to the currently selected factory when opened, with a cleaner popover style.

  ## Smaller fixes

  * Modeler: toolbar selectors shrink and wrap on narrow widths instead of clipping the right-hand controls.
  * Lookups modal: long descriptions truncate, and the entry list only shows real entries (no more empty placeholder rows).
  * Charts: gantt tick labels stop clipping at chart edges.
  * Memories: link rendering in the memory detail view no longer breaks markdown-rendered references.
</Update>

<Update label="May 8, 2026">
  ## DSL: text functions and new aggregations

  The expression language now handles text the way it handles numbers. Added `concat`, fixed-arity text functions, and polymorphic `max` / `min` over text columns. New aggregations: `mode`, `n_unique`, and `count` over booleans. Available in both [expressions](/reference/expressions) and the modeler UI.

  ## BOM editor rebuild

  [BOMs](/product/bom) got a structural pass: chip-style breadcrumb at the top, rebuilt side panel, table view with attribute columns, and a `Cmd+K` palette for jumping between entities. The catalog rail is now grouped by role, and variant switching happens inline: no more chooser side panel.

  ## Memories panel redesign

  Dexter's memories panel switched to a master-detail layout with full markdown rendering, so longer memory entries are actually readable.

  ## Smaller fixes

  * AI assistant: message timestamps now show on hover.
  * Schedules: wheel scroll works inside the release-attribute popover.
  * What-if: jarring flicker on page load resolved.
  * Charts: stripped stray markdown out of chart descriptions.
</Update>

<Update label="May 7, 2026">
  ## Snapshots in the simulation toolbar

  You can now save and swap [snapshots](/reference/snapshots) directly from the simulation toolbar without leaving the modeler. The toolbar shows which snapshot is currently loaded, hot-loads snapshots picked from the experiments sidebar, and dedups autosaves so you don't accumulate near-duplicate copies. Backed by a new `content_hash` column and `PATCH /api/snapshots/{id}` for renaming and updating descriptions.

  ## Monte Carlo header

  [Monte Carlo](/product/monte-carlo) got a new run header with cleaner layout and clearer status indicators.

  ## Results UI: "Equation & Code"

  Renamed the "View source code" button to "Equation & Code" in [results](/product/results-and-analytics): better reflects what's actually inside.
</Update>

<Update label="May 6, 2026">
  ## AI provider failover

  Bidirectional provider failover is now active across all environments. When the primary AI provider hiccups, Dexter transparently shifts traffic to the backup with a circuit breaker keeping things stable.

  ## Modeler: empty states and replay polish

  Source nodes with no `arrival_logic` set now show an empty state instead of silently doing nothing. The simulation replay play/pause button now color-codes by state so you can see at a glance whether playback is running or paused.

  ## Schedules: safer deletes

  Deleting a schedule that's referenced elsewhere no longer hard-fails, references null out so you can clean up without first hunting down every model that points at it.
</Update>

<Update label="May 5, 2026">
  ## Simulation duration cap raised

  Maximum simulation duration is now **2 years** (up from 1).

  ## Monte Carlo moves to the sidebar

  [Monte Carlo](/product/monte-carlo) now lives in the sidebar alongside other run types instead of inside the main toolbar: tidier and faster to switch into.

  ## OIDC auth provider

  Tenants can now configure OIDC for single sign-on with discovery-based provider setup. Configurable from the admin OAuth config form.

  ## Tenant admin: usage and activity

  New usage overview section in tenant admin showing call-site aggregations, plus a last-active timestamp for each user. Audit log section is now hidden from non-platform-admins.

  ## Sandbox runtime: scipy and matplotlib

  Both libraries are now available inside the agent sandbox.

  ## Smaller fixes

  * Experiments: charts are deletable inline.
  * Pipelines: wheel scroll works inside cohort node lists.
  * Toolbar: simulation toolbar uses container queries for tighter responsive layout.
  * Results: runs prefetch on hover so switching between them is near-instant.
</Update>

<Update label="May 4, 2026">
  ## Pipelines: floating toolbar

  [Pipelines](/product/templates) now has the same floating toolbar as the modeler, with consistent layout primitives across both editors.

  ## Performance pass

  Schedule timeline, time-series rendering, page-switch ELK layout, and `ReplayEngineProvider` scoping all got measurable wins. Heavy modeler pages should feel noticeably snappier.

  ## Icon refresh

  Experiments now uses an Erlenmeyer-flask icon, subagent uses a robotic icon, and the compare sidebar is renamed to **Experiments** to match.

  ## Charts: smarter labels

  Long category labels word-wrap, and bar charts auto-flip to horizontal when labels would otherwise collide.

  ## Smaller fixes

  * Pipelines: report-link buttons in the run panel now actually trigger downloads.
  * Results: stable run-list ordering with a `run_id` tiebreaker.
</Update>

<Update label="May 2, 2026">
  ## Pipelines: bulk file upload

  The new run dialog now accepts multi-file uploads in a single drop. Pipeline node borders are saturated to make active sources clearer, and uploads are scoped to one source at a time so cross-source state can't bleed in.

  ## Factory selection scoped to tab

  Switching factories in one browser tab no longer hijacks your other open tabs: selection is now stored per-tab via `sessionStorage`.

  ## Results dashboard split

  The single "Add content" modal split into separate **Add chart** and **Add KPI** dialogs in the [results toolbar](/product/results-and-analytics), which itself was rewritten with inline-editable run labels.

  ## Modeler

  Removed the redundant simulation spinners from the metrics panel: the inline label was enough.
</Update>

<Update label="May 1, 2026">
  ## Insights: dashboards collection

  [Insights](/product/insights) now has a dashboards-table list view, a create dialog, and a backing collections API. Dashboards have optional descriptions and live in their own folder under Insights.

  ## Cmd+F search across pipelines

  Pipelines and the modeler both support `Cmd+F` to find a node by name: same palette pattern, different surface.

  ## Live KPIs and chart polish

  The live-metrics widget grid now renders KPI items with format units. Charts gained: pie-chart inner-radius support, multi-series legends, and a "merge charts" action that combines compatible series into a single chart.

  ## Results: view source on KPI cards

  Each KPI card now has an actions menu with a **View source** dialog showing the underlying SQL.

  ## AI assistant resilience

  Bidirectional provider failover with a circuit breaker landed in `ai_assistant`. (Activated across all envs on May 6.)
</Update>

<Update label="April 30, 2026">
  ## Pipelines: full rebuild

  [Pipelines](/product/templates) shipped a structural rewrite. New pipeline shell with proper cutover from the legacy canvas. Runs side panel and run-kickoff dialog. Template side panel with intake form. Node info modal with confidence badge. Foundation reorganized around shared types, stores, projections, and pure utilities: much easier to extend going forward.

  ## Modeler: find-node palette and event trace

  ⌘F now opens a find-node palette over the modeler canvas. The event trace returned to the modeler page (it had been moved out for a stretch). Default schedule is visually distinguished in the toolbar, and the primary schedule auto-selects on first model open.

  ## Reports: green = good, red = bad

  Agent-generated reports now follow a consistent color convention (improvements in green, regressions in red) so you can scan a report without parsing the legend each time.
</Update>

<Update label="April 28, 2026">
  ## Snapshots replace Checkpoints

  Checkpoints are gone. [Snapshots](/reference/snapshots) are the new way to capture model state: first-class table, `snapshot_id` on runs and Monte Carlo results, dedicated repository and APIs. Old `/api/checkpoints/*` routes return `410 Gone`. Existing checkpoint data has been backfilled into snapshots; nothing should be lost.

  ## Experiments rewrite

  [Experiments](/product/experiments) got a substantially leaner runner: skip-resim when results are already cached, model-scoped KPIs, snapshot validation on save, and a new `snapshot_service` for capture and load. Per-snapshot chart and KPI results pivot through a shared `ChartResult` envelope.

  ## "Delegate" replaces the subagent task tool

  Dexter's subagent invocation is now called `delegate`: clearer for users reading agent transcripts.

  ## DSL AI explanation tabs

  When Dexter generates a DSL expression, the explanation now lives in a tabbed UI alongside the raw code.
</Update>

<Update label="April 27, 2026">
  ## Charts and KPI dashboard reintroduction

  Recharts-based charts and the KPI dashboard came back to results, with a top-to-bottom rebuild. Unified `AxisFormat` enum, overhauled axis formats, horizontal layouts, lazy rendering, and a fullscreen chart dialog. The grid layout switched off `react-grid-layout` to a sortable fixed grid for less jitter when arranging cards.

  ## PDF export

  Run results can now be exported to PDF.
</Update>
