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

# Changelog

> What's new in Foglamp.

<Update label="July 24, 2026">
  ## Updates

  * Faster tab switching in the dashboard. Recently-visited routes across
    [Traces](/dashboard/traces), [Sessions](/dashboard/sessions),
    [Agents](/dashboard/agents), [Workflows](/dashboard/workflows), and the
    [Overview](/dashboard/overview) now swap in on a single paint instead of
    bouncing through a loading skeleton. Page data still revalidates in the
    background so numbers stay fresh.
</Update>

<Update label="July 17, 2026">
  ## Updates

  * Tightened the page titles and social descriptions on
    [foglamp.dev/scan](https://foglamp.dev/scan) and individual scan posters so
    shared links unfurl with clearer, more concise copy on socials and in search
    results.
</Update>

<Update label="July 10, 2026">
  ## Updates

  * The [foglamp.dev/scan](https://foglamp.dev/scan) landing page is now
    streamlined to a hero and CTA — the "One prompt, from repo to map" story
    section has been retired so you can go from arriving to scanning faster.
  * The scan hero map now scales responsively on narrower viewports, so the
    preview no longer spills off a laptop screen and the surrounding layout
    stays intact.
</Update>

<Update label="July 3, 2026">
  ## New features

  **Foglamp Scan.** Point a coding agent at any repo and get a shareable,
  unlisted `foglamp.dev/scan/<slug>` page that maps how the codebase works and
  uses AI — triggers, agents, models, tools, and stores laid out on an
  ELK-routed flow map with a scored **personality** card for the project. The
  page unfurls on socials with an OG image of the actual map, and the prompt is
  one copy-and-paste from [foglamp.dev/scan](https://foglamp.dev/scan). Anonymous,
  no account required; posters expire after 90 days.

  ## Updates

  * The scan map now scores personalities on trait dominance (so different
    codebases land on different cards), groups the legend by kind
    (Triggers / Agents / Models / Tools / Stores / External) with a hover
    spotlight, and uses brand marks for model nodes.
  * Pan and zoom on the scan map now write transforms straight to the DOM for
    smooth interaction on large graphs, and deep pipelines open height-fit on
    the start of the flow.
  * Inter is now self-hosted from the canonical `rsms/inter` v4.1 build across
    the marketing site — restoring the `opsz` optical-size axis and OpenType
    character variants that Google Fonts strips.

  ## Bug fixes

  * Fixed a 500 on `/scan/<slug>` pages under Vercel's serverless runtime caused
    by an `elkjs` module-interop shape mismatch — the layout engine is now
    lazy-loaded and probes every export shape.
  * Fixed the OG image route occasionally 500ing on cold starts by caching and
    retrying font loads.
  * Contained the marketing footer's film-grain filter to the footer box so
    noise no longer bleeds above the top border, and softened the cube field on
    the landing page.
</Update>

<Update label="June 26, 2026">
  ## Updates

  **Customer on traces.** The [Traces](/dashboard/traces) table now shows a
  customer chip (avatar + name) next to the session/agent/workflow columns, and
  the trace detail page surfaces a matching customer badge — so you can spot
  which end-customer a run belongs to without leaving the trace. Powered by the
  [customer field](/concepts/data-model#customer) you set on the SDK call.

  **"Not identified" on the Overview Customers card.** The
  [Overview](/dashboard/overview) Customers card now includes a muted **Not
  identified** row that buckets unattributed spend, so calls without a `customer`
  tag are visible instead of disappearing. Avatars across the customers UI also
  pick up a filled glyph for better contrast.

  ## Bug fixes

  * Shortened the **Clear filters** button on list-page filter bars to **Clear**,
    so it stops wrapping in narrow toolbars.
</Update>

<Update label="June 25, 2026">
  ## New features

  **AI SDK v7 — stable.** The `foglamp()` collector now tracks AI SDK v7 stable
  (`ai@7.0.0`). No code changes needed on your side; the telemetry-integrations
  API is unchanged from the v7 beta.

  **First-class `aborted` status.** A stream that's cancelled before it finishes
  (via AI SDK v7's `onAbort` — a caller cancellation, an `AbortSignal`, or a
  timeout) is now recorded with a dedicated **`aborted`** status instead of being
  swept later as an error. It renders amber across the [traces](/dashboard/traces)
  view and is **excluded from error rate** — a cancelled run isn't a failure. The
  steps that finished before the abort keep their own status.

  **Automatic nested-trace context.** On the v7 collector, a model call made
  inside a tool's `execute` now inherits the parent call's workflow / session /
  customer / metadata automatically, so sub-agents land in the same workflow run
  with no `fog.run()` plumbing. See the [SDK
  overview](/sdk/overview#nested-calls-inside-tools).

  Self-hosters: run ClickHouse migrations before relying on aborted rollups (a new
  `aborted_count` column is added to the trace, workflow-run, and per-minute
  summaries); ingest accepts the `aborted` status after the contract upgrade.
</Update>

<Update label="June 23, 2026">
  ## New features

  **Live HUD overlay.** Drop `<FoglampHUD />` from `foglamp/hud` into any
  client component and pair it with `foglamp({ hud: true })` on the server
  to watch your agents run live — steps, tool calls, tokens, and cost
  streaming on top of your app as you develop, rendered in the Foglamp
  aesthetic. It's dev/localhost only, needs no API key, and adds nothing
  to your production bundle (the broker is code-split and lazy-loaded).
  The whole thing is two lines. See [Live HUD](/sdk/hud).
</Update>

<Update label="June 21, 2026">
  ## New features

  **Per-customer cost attribution.** Tag a call with a `customer`
  (`fog.integration({ customer: { id, name?, imageUrl? } })`) to attribute its
  spend to the end-customer it serves. A new **Customers** card on the
  [Overview](/dashboard/overview) ranks your top customers by cost, with their
  avatar and name. Foggy can answer per-customer cost questions too. Only `id` is
  required and the field is fully optional — see the
  [data model](/concepts/data-model#customer).

  Self-hosters: deploy ingest before upgrading the SDK, since older ingest
  rejects the new `customer` field (and run migrations to create the customer
  rollup tables).
</Update>

<Update label="June 19, 2026">
  ## New features

  **`npx foglamp login` CLI.** Authenticate from your terminal with the
  new device-authorization flow: run `npx foglamp login`, approve the
  code in your browser, and Foglamp mints an API key and writes
  `FOGLAMP_API_KEY` to your `.env`. Zero runtime dependencies — Node 18+
  built-ins only — so it drops cleanly into agent-driven setups. See the
  [Quickstart](/quickstart).

  **Animated API key reveal.** Newly created API keys now roll from the
  name you gave them into the real value on reveal, so it's obvious which
  key just appeared. The keys table also has pinned column widths and
  shows **Last used** before **Created**. See
  [Projects, keys & billing](/dashboard/account).

  ## Updates

  **Dark-mode polish across the dashboard.** Refined shadows, borders,
  and hover states on cards, dialogs, and tables for better contrast and
  less visual noise in dark mode.

  ## Bug fixes

  * Foggy's hidden composer now blurs when the panel closes, so
    keystrokes stop landing in it and the `F` shortcut reopens the panel
    reliably.
  * Product analytics no longer load in local and preview environments.
</Update>

<Update label="June 13, 2026">
  ## New features

  **Model vs. tool latency split.** LLM steps now record the pure
  provider-call time (`modelCallMs`) separately from client-side tool
  execution. The span still covers the whole step — the waterfall adds a
  sky **model** segment (tool time is the remainder), and the span
  inspector shows the split. Captured on AI SDK v7; v4–v6 (wrap) and
  non-reasoning paths simply omit it — no estimates.

  **Grounding sources.** RAG/grounding citations a model reports
  (`StepResult.sources`) are captured per step and listed in the span
  inspector. Recorded only when output capture is on.

  **Model-drift fingerprint & safety ratings.** The OpenAI-style
  `system_fingerprint` is captured as a queryable column (spot a silent
  weight change across otherwise-identical calls), alongside provider
  safety ratings. No logprobs are captured.

  **Rate-limit headroom.** Provider rate-limit response headers
  (OpenAI `x-ratelimit-*`, Anthropic `anthropic-ratelimit-*`) are
  normalized into a cross-provider set — requests/tokens remaining, limit,
  and time-to-reset — so "you're at 90% of your TPM" becomes queryable.
  Only rate-limit headers are read; no other headers are stored.

  The provider signals above (sources, fingerprint, safety, rate-limit) are
  captured for **text and object generation alike** — `generateText`,
  `streamText`, `generateObject`, `streamObject` — and flow through the
  `ToolLoopAgent`/`Experimental_Agent` wrappers too. The model-vs-tool
  latency split is the one exception: it needs the AI SDK v7 model-call
  lifecycle, so it lands on v7 text/agent steps and is absent on the object
  path (which calls the provider directly, with no separable model window)
  and on v4–v6 — never estimated.

  Self-hosters: deploy ingest before upgrading the SDK, since older ingest
  rejects the new span fields.
</Update>

<Update label="June 12, 2026">
  ## New features

  **Reasoning (extended thinking) capture.** Both SDK collectors now record
  reasoning stream chunks: per-step thinking duration plus an intra-stream
  reasoning-token curve, sampled exactly like text chunks. The trace waterfall
  shows a violet **thinking** segment on reasoning steps, and the span
  inspector's TTFT splits into thinking time + time to first visible text.
  Models that don't reason (or SDK majors that don't report reasoning tokens)
  send nothing — no estimates. Self-hosters: deploy ingest before upgrading the
  SDK, since older ingest rejects the new span fields.

  **Agent cost breakdown donut.** The agent page now shows where an agent's
  spend goes — prompt, completion, reasoning, cache read/write, requests,
  images, and web search — summed per pricing dimension over the selected
  range. See [Agents](/dashboard/agents).

  **Ambient trace context with `fog.run()`.** Wrap any call with
  `fog.run(context, fn)` and every traced call inside picks up the
  workflow, session, and metadata automatically — no parameter
  threading, singletons stay singletons. See the [SDK overview](/sdk/overview).

  **Typed `with()` context binding and agent-class wrapping.** `fog.with(ctx)`
  now returns wrapped functions typed exactly like the originals, and
  `foglamp/wrap` ships drop-in wrappers for `ToolLoopAgent` and
  `Experimental_Agent` with per-call tool attribution. See
  [AI SDK v4–v6 (wrap)](/sdk/wrap).

  **Forgot-password and account recovery.** A new password-reset flow,
  plus a redesigned accept-invitation page with explicit accept/decline
  and a wrong-account recovery path.

  **Shareable list views.** Search, filter, sort, and pagination on
  [Traces](/dashboard/traces), [Sessions](/dashboard/sessions),
  [Agents](/dashboard/agents), and [Workflows](/dashboard/workflows)
  are now reflected in the URL — copy the link and a teammate lands on
  the same view.

  **Profile picture in the sidebar.** Google sign-in users now see their
  photo in the sidebar; email/password users keep the initials avatar.

  ## Updates

  **Confirmation dialogs for destructive actions.** Deleting a project,
  provider key, pricing override, invitation, or access grant now
  prompts before it commits — project deletes require type-to-confirm.

  **Louder SDK auth failures.** The transport now warns once on a 401
  or 403 from ingest, even without debug mode, so a bad API key can't
  silently drop every trace.

  **Vercel `waitUntil` without the peer dependency.** The SDK reads the
  Vercel runtime context directly, so serverless flushing works without
  adding `@vercel/functions` to your project.

  **Eval scores on a 0–1 scale.** Numeric judges now score on a
  normalized 0.00–1.00 scale (was 1–5), with an **Avg score** stat card
  on the [Evals](/dashboard/evals) page that reflects active filters.

  **Deleted active project no longer strands the app.** Deleting the
  currently selected project now falls back to another project instead
  of leaving the dashboard blank.

  **Newly created projects stay selected.** Creating a project now
  keeps it as the active project instead of reverting to the first one
  in the list.

  **Onboarding key stability.** The onboarding panel no longer revokes
  prior keys you may have already pasted into your code — the minted
  key is cached and reused while valid.

  ## Bug fixes

  * Bedrock model IDs and dash-versioned Anthropic IDs
    (e.g. `claude-haiku-4-5`) now resolve to pricing instead of recording
    null cost.
  * Hardened model-ID normalization for `-fast` Anthropic variants,
    3.x IDs, and additional Bedrock creators (OpenAI, Qwen, Luma,
    Stability, TwelveLabs, DeepSeek R1).
  * Fixed a 500 in the usage-by-day query caused by a column alias
    collision.
  * Trace inspector card shadow is now visible in light mode.
  * Brightened the default button hover state in dark mode.
  * Invitation flow now survives sign-in: unauthenticated users bounce
    through login and return to the invitation, and zero-org dashboards
    list pending invitations with an **Accept** button.
  * Disabled form controls while mutations are pending to prevent
    duplicate submissions.
  * Removed loading flashes on the billing plan and encryption banner.
  * Stale project-scoped detail routes now redirect on project switch.
  * Escape closes the Foggy panel.
</Update>

<Update label="June 5, 2026">
  ## New features

  **Sessions view.** Follow a single conversation or user thread end to end. Set
  a `sessionId` on your calls and Foglamp groups every turn — across workflows
  and agents — under one session. See [Sessions](/dashboard/sessions).

  **AI SDK v4–v6 support via `foglamp/wrap`.** A new wrap adapter instruments
  older AI SDK versions without requiring an upgrade to v7. Drop-in replacement
  for `generateText`, `streamText`, `generateObject`, and `streamObject` — same
  traces, same ingest endpoint. See [AI SDK v4–v6 (wrap)](/sdk/wrap).

  **Web-search usage in traces.** Provider-reported web-search calls are now
  captured alongside token usage and cost, so search-heavy agents are billed
  and analyzed accurately.

  **Compile-time workflow safety.** The SDK now enforces that `workflowName`
  and `workflowRunId` are passed together at the type level — invalid
  combinations fail at build time rather than producing orphaned spans.

  **Better dashboard navigation.** Breadcrumb back-nav, card/table view
  toggles, and column filtering + sorting are available across list pages —
  including [Traces](/dashboard/traces), [Workflows](/dashboard/workflows),
  and [Agents](/dashboard/agents).

  **Editable project name & URL.** Change a project's name and URL from
  **Org settings → General** without recreating it — the URL drives the favicon
  shown in the project switcher. See
  [Projects, keys & billing](/dashboard/account).

  **Eval judge model picker.** Choosing a judge model when creating an
  [eval](/dashboard/evals) now uses an icon dropdown so providers and models
  are easier to identify at a glance.

  **Copy-paste instrumentation in empty states.** Empty Agents and Workflows
  pages now show ready-to-run snippets so new projects can ship their first
  trace without leaving the dashboard.

  ## Updates

  **Syntax-highlighted code blocks.** Code blocks across the dashboard are now
  rendered with Shiki and follow the app theme — `github-light` in light mode
  and `vesper` in dark mode.

  ## Bug fixes

  * Hardened the ingest path against oversized span metadata and capped
    onboarding-key accumulation.
  * Resolved access-control and denial-of-service issues surfaced in a
    security review.
  * Fixed the onboarding telemetry API so first-trace detection fires
    reliably.
</Update>
