---
title: "Beacon Changelog"
platform: web
slug: beacon-changelog
screens: ["changelog"]
domains: ["developer-tools"]
style: "flat"
fonts: ["Sora", "IBM Plex Mono"]
roles: ["item-indicator", "badge", "chip", "avatar", "top-navigation-bar", "navigation-menu", "search-bar", "button", "breadcrumb", "sidebar", "divider", "card", "hyperlink", "pagination", "text-field"]
score: {clean: 100, consistent: 82, accessible: 86, comprehensible: 54}
url: https://gui.farm/web/beacon-changelog
raw: https://gui.farm/web/beacon-changelog/design.guix
download: https://gui.farm/web/beacon-changelog.gui
---

# Beacon Changelog

A dark, flat developer-platform changelog listing dated release entries with version badges, typed change items, author credits, and a release-cadence chart.

- **Live preview:** https://gui.farm/web/beacon-changelog
- **Raw source:** https://gui.farm/web/beacon-changelog/design.guix
- **Download (.gui):** https://gui.farm/web/beacon-changelog.gui

## Source (design.guix)

```xml
<gui version="0.2" name="Beacon Changelog">
  <tokens>
    <color name="bg" value="#0F0F12" />
    <color name="surface" value="#16161B" />
    <color name="surface-2" value="#1D1D24" />
    <color name="line" value="#2A2A31" />
    <color name="line-strong" value="#3A3A44" />
    <color name="text" value="#F3F3F5" />
    <color name="muted" value="#9C9CA8" />
    <color name="faint" value="#8E8E98" />
    <color name="accent" value="#FF3E9A" />
    <color name="accent-dim" value="#8A2E5C" />
    <color name="accent-ink" value="#16161B" />
    <number name="r-sm" value="6" />
    <number name="r-md" value="10" />
    <number name="r-lg" value="14" />
    <number name="r-pill" value="999" />
  </tokens>

  <fonts>
    <font family="Sora" source="google" weights="400 500 600 700" styles="normal" />
    <font family="IBM Plex Mono" source="google" weights="500 600" styles="normal" />
  </fonts>

  <styles>
    <text-style name="Display" font-family="Sora" font-size="30" font-weight="700" line-height="36" />
    <text-style name="H2" font-family="Sora" font-size="20" font-weight="600" line-height="26" />
    <text-style name="H3" font-family="Sora" font-size="15" font-weight="600" line-height="20" />
    <text-style name="Body" font-family="Sora" font-size="14" font-weight="400" line-height="21" />
    <text-style name="BodyStrong" font-family="Sora" font-size="14" font-weight="600" line-height="20" />
    <text-style name="Small" font-family="Sora" font-size="12" font-weight="500" line-height="16" />
    <text-style name="Nav" font-family="Sora" font-size="13" font-weight="500" line-height="16" />
    <text-style name="Btn" font-family="Sora" font-size="13" font-weight="600" line-height="16" />
    <text-style name="Mono" font-family="IBM Plex Mono" font-size="12" font-weight="500" line-height="15" />
    <text-style name="MonoB" font-family="IBM Plex Mono" font-size="13" font-weight="600" line-height="16" />
    <text-style name="Tag" font-family="IBM Plex Mono" font-size="10" font-weight="600" line-height="12" />
  </styles>

  <components>
    <component name="NavVersion" id="comp-nav">
      <props>
        <prop name="ver" type="text" target="nv-ver" />
        <prop name="date" type="text" target="nv-date" />
        <prop name="cnt" type="text" target="nv-cnt" />
        <prop name="active" type="visible" target="nv-active" />
      </props>
      <row w="fill" p="9 10" gap="10" radius="$r-sm" fill="$surface" align="middle-left">
        <row w="8" align="middle-center">
          <ellipse id="nv-active" w="7" h="7" fill="$accent" role="item-indicator" />
        </row>
        <col w="fill" gap="2">
          <text id="nv-ver" text-style="MonoB" value="v4.0.0" color="$text" />
          <text id="nv-date" text-style="Small" value="Aug 14" color="$faint" />
        </col>
        <text id="nv-cnt" text-style="Mono" value="23" color="$muted" />
      </row>
    </component>

    <component name="ChangeRow" id="comp-change">
      <props>
        <prop name="type" type="text" target="cr-type" />
        <prop name="desc" type="text" target="cr-desc" />
        <prop name="hot" type="visible" target="cr-hot" />
      </props>
      <row w="fill" gap="14" align="top-left">
        <row w="82" align="top-left">
          <row p="3 7" radius="$r-sm" fill="$surface-2" border="1 $line-strong" align="middle-center" role="badge">
            <text id="cr-type" text-style="Tag" value="IMPROVED" color="$muted" text-case="uppercase" letter-spacing="0.5" />
          </row>
        </row>
        <text id="cr-desc" w="fill" text-style="Body" value="Change description goes here." color="$text" />
        <img id="cr-hot" src="https://api.iconify.design/lucide/sparkles.svg?color=%23FF3E9A" w="15" h="15" />
      </row>
    </component>

    <component name="FilterChip" id="comp-filter">
      <props>
        <prop name="label" type="text" target="fc-label" />
        <prop name="cnt" type="text" target="fc-cnt" />
      </props>
      <row w="fill" p="8 12" gap="8" radius="$r-sm" fill="$surface-2" border="1 $line" align="middle-left" role="chip">
        <text id="fc-label" w="fill" text-style="BodyStrong" value="New" color="$text" />
        <text id="fc-cnt" text-style="Mono" value="12" color="$muted" />
      </row>
    </component>

    <component name="NavLink" id="comp-navlink">
      <props>
        <prop name="label" type="text" target="nl-label" />
        <prop name="active" type="visible" target="nl-dot" />
      </props>
      <col gap="6" p="0 4" align="middle-center">
        <text id="nl-label" text-style="Nav" value="Docs" color="$text" />
        <row w="18" h="2" align="middle-center">
          <rect id="nl-dot" w="18" h="2" radius="2" fill="$accent" />
        </row>
      </col>
    </component>

    <component name="Avatar" id="comp-avatar">
      <props>
        <prop name="ini" type="text" target="av-ini" />
      </props>
      <row w="28" h="28" radius="$r-pill" fill="$surface-2" border="1 $line-strong" align="middle-center" role="avatar">
        <text id="av-ini" text-style="Tag" font-size="11" value="JC" color="$text" />
      </row>
    </component>
  </components>

  <col w="1440" fill="$bg">

    <!-- ================= TOP NAV ================= -->
    <row w="fill" h="64" p="0 32" gap="24" align="middle-left" fill="$bg" border-bottom="1 $line" role="top-navigation-bar">
      <row gap="10" align="middle-center">
        <rect w="26" h="26" radius="$r-sm" fill="$accent" />
        <text text-style="H3" font-size="17" value="Beacon" color="$text" letter-spacing="-0.2" />
      </row>
      <row gap="18" align="middle-left" role="navigation-menu">
        <instance component="comp-navlink" label="Docs" active="false" />
        <instance component="comp-navlink" label="API Reference" active="false" />
        <instance component="comp-navlink" label="Changelog" active="true" />
        <instance component="comp-navlink" label="Status" active="false" />
      </row>
      <row w="fill" gap="12" align="middle-right">
        <row w="230" p="8 12" gap="8" radius="$r-sm" fill="$surface" border="1 $line" align="middle-left" role="search-bar">
          <img src="https://api.iconify.design/lucide/search.svg?color=%239C9CA8" w="15" h="15" />
          <text w="fill" text-style="Small" value="Search releases" color="$faint" />
          <row p="1 5" radius="4" fill="$surface-2" border="1 $line"><text text-style="Tag" value="/" color="$muted" /></row>
        </row>
        <row p="9 15" gap="8" radius="$r-sm" fill="$accent" align="middle-center" role="button">
          <img src="https://api.iconify.design/lucide/bell.svg?color=%2316161B" w="15" h="15" />
          <text text-style="Btn" value="Subscribe" color="$accent-ink" />
        </row>
        <instance component="comp-avatar" ini="JC" />
      </row>
    </row>

    <!-- ================= BREADCRUMB ================= -->
    <row w="fill" h="42" p="0 32" gap="8" align="middle-left" fill="$bg" border-bottom="1 $line" role="breadcrumb">
      <text text-style="Small" value="Docs" color="$faint" href="https://beacon.dev/docs" />
      <img src="https://api.iconify.design/lucide/chevron-right.svg?color=%238E8E98" w="13" h="13" />
      <text text-style="Small" value="Changelog" color="$muted" />
    </row>

    <!-- ================= BODY ================= -->
    <row w="fill" p="28 32 64 32" gap="32" align="top-left">

      <!-- LEFT SIDEBAR -->
      <col w="236" gap="20" role="sidebar">
        <col w="fill" gap="8">
          <text text-style="Tag" value="RELEASES" color="$faint" text-case="uppercase" letter-spacing="1" />
          <col w="fill" gap="2" role="navigation-menu">
            <instance component="comp-nav" ver="v4.0.0" date="Aug 14, 2026" cnt="23" active="true" />
            <instance component="comp-nav" ver="v3.9.0" date="Aug 6, 2026" cnt="11" active="false" />
            <instance component="comp-nav" ver="v3.8.0" date="Jul 28, 2026" cnt="14" active="false" />
            <instance component="comp-nav" ver="v3.7.0" date="Jul 19, 2026" cnt="9" active="false" />
            <instance component="comp-nav" ver="v3.6.0" date="Jul 8, 2026" cnt="16" active="false" />
            <instance component="comp-nav" ver="v3.5.0" date="Jun 27, 2026" cnt="7" active="false" />
          </col>
        </col>

        <line fill="$line" role="divider" />

        <!-- Cadence mini chart (data-viz) -->
        <col w="fill" gap="10">
          <text text-style="Tag" value="CHANGES / RELEASE" color="$faint" text-case="uppercase" letter-spacing="1" />
          <row w="fill" h="64" gap="8" align="bottom-left">
            <rect w="32" h="19" radius="3" fill="$accent-dim" />
            <rect w="32" h="45" radius="3" fill="$accent-dim" />
            <rect w="32" h="25" radius="3" fill="$accent-dim" />
            <rect w="32" h="39" radius="3" fill="$accent-dim" />
            <rect w="32" h="31" radius="3" fill="$accent-dim" />
            <rect w="32" h="64" radius="3" fill="$accent" />
          </row>
          <row w="fill" gap="auto" align="middle-left">
            <text text-style="Tag" value="v3.5" color="$faint" />
            <text text-style="Tag" value="v4.0" color="$muted" />
          </row>
        </col>
      </col>

      <!-- CENTER FEED -->
      <col w="744" gap="24">

        <!-- Page header -->
        <row w="fill" gap="16" align="bottom-left">
          <col w="fill" gap="6">
            <text text-style="Display" value="Changelog" color="$text" letter-spacing="-0.4" />
            <text text-style="Body" value="Everything new in Beacon, newest first. Updated continuously." color="$muted" />
          </col>
          <row p="9 13" gap="8" radius="$r-sm" fill="$surface" border="1 $line" align="middle-center" role="button">
            <img src="https://api.iconify.design/lucide/rss.svg?color=%23FF3E9A" w="15" h="15" />
            <text text-style="Btn" value="RSS" color="$text" />
          </row>
        </row>

        <!-- ===== FEATURED RELEASE v4.0 ===== -->
        <col w="fill" fill="$surface" border="1 $line" radius="$r-lg" p="24" gap="18" role="card">
          <row w="fill" gap="12" align="middle-left">
            <row p="4 9" radius="$r-sm" fill="$accent" align="middle-center" role="badge">
              <text text-style="MonoB" value="v4.0.0" color="$accent-ink" />
            </row>
            <row p="4 9" radius="$r-sm" fill="none" border="1 $accent" align="middle-center" role="badge">
              <text text-style="Tag" value="LATEST" color="$accent" text-case="uppercase" letter-spacing="0.8" />
            </row>
            <row w="fill" gap="8" align="middle-right">
              <img src="https://api.iconify.design/lucide/calendar.svg?color=%238E8E98" w="14" h="14" />
              <text text-style="Mono" value="Aug 14, 2026" color="$faint" />
              <text text-style="Mono" value="2 hours ago" color="$muted" />
            </row>
          </row>

          <col w="fill" gap="7">
            <text text-style="H2" value="Query Studio and faster ingest" color="$text" />
            <text w="fill" text-style="Body" value="The biggest release since launch: a rebuilt query editor, 3x faster log ingestion, and per-team retention controls." color="$muted" />
          </col>

          <line fill="$line" role="divider" />

          <col w="fill" gap="14">
            <instance component="comp-change" type="New" desc="Query Studio: build, save, and share log queries with autocomplete and live results." hot="true" />
            <instance component="comp-change" type="New" desc="Per-team retention policies, configurable from 3 to 400 days." hot="true" />
            <instance component="comp-change" type="Improved" desc="Log ingestion pipeline rewritten in Rust; median ingest latency dropped from 840ms to 260ms." hot="false" />
            <instance component="comp-change" type="Improved" desc="Dashboards now refresh incrementally instead of doing a full reload on every filter change." hot="false" />
            <instance component="comp-change" type="Fixed" desc="Traces occasionally dropped spans under high cardinality; root-caused and patched." hot="false" />
          </col>

          <row w="fill" p="12 14" gap="10" radius="$r-md" fill="$surface-2" align="middle-left">
            <img src="https://api.iconify.design/lucide/git-commit-horizontal.svg?color=%239C9CA8" w="15" h="15" />
            <text w="fill" text-style="Small" value="18 more updates in this release" color="$muted" />
            <text text-style="Small" value="View all" color="$accent" href="https://beacon.dev/changelog/v4-0-0" role="hyperlink" />
          </row>

          <line fill="$line" role="divider" />

          <row w="fill" gap="10" align="middle-left">
            <instance component="comp-avatar" ini="MR" />
            <col gap="1">
              <text text-style="BodyStrong" value="Mara Ruiz" color="$text" />
              <text text-style="Small" value="Shipped 23 changes" color="$faint" />
            </col>
            <row w="fill" gap="8" align="middle-right">
              <row p="6 10" gap="7" radius="$r-pill" fill="$surface-2" border="1 $line" align="middle-center">
                <img src="https://api.iconify.design/lucide/heart.svg?color=%23FF3E9A" w="14" h="14" />
                <text text-style="Mono" value="212" color="$muted" />
              </row>
              <row p="6 10" gap="7" radius="$r-pill" fill="$surface-2" border="1 $line" align="middle-center">
                <img src="https://api.iconify.design/lucide/message-circle.svg?color=%239C9CA8" w="14" h="14" />
                <text text-style="Mono" value="34" color="$muted" />
              </row>
            </row>
          </row>
        </col>

        <!-- ===== RELEASE v3.9 ===== -->
        <col w="fill" fill="$surface" border="1 $line" radius="$r-lg" p="24" gap="16" role="card">
          <row w="fill" gap="12" align="middle-left">
            <row p="4 9" radius="$r-sm" fill="$surface-2" border="1 $line-strong" align="middle-center" role="badge">
              <text text-style="MonoB" value="v3.9.0" color="$text" />
            </row>
            <text w="fill" text-style="H3" value="Alert routing and Slack v2" color="$text" />
            <row gap="8" align="middle-right">
              <img src="https://api.iconify.design/lucide/calendar.svg?color=%238E8E98" w="14" h="14" />
              <text text-style="Mono" value="Aug 6, 2026" color="$faint" />
            </row>
          </row>

          <line fill="$line" role="divider" />

          <col w="fill" gap="14">
            <instance component="comp-change" type="New" desc="Route alerts to different channels by severity and by service." hot="true" />
            <instance component="comp-change" type="Improved" desc="Slack integration rebuilt on the Blocks API with threaded alert updates." hot="false" />
            <instance component="comp-change" type="Fixed" desc="Corrected a timezone offset in scheduled digest emails." hot="false" />
            <instance component="comp-change" type="Fixed" desc="Resolved a memory leak in the log tailer during long-lived sessions." hot="false" />
          </col>

          <row w="fill" gap="10" align="middle-left">
            <instance component="comp-avatar" ini="TK" />
            <text w="fill" text-style="Small" value="Theo Kwan and 4 others" color="$faint" />
            <text text-style="Small" value="Read release notes" color="$accent" href="https://beacon.dev/changelog/v3-9-0" role="hyperlink" />
          </row>
        </col>

        <!-- ===== RELEASE v3.8 ===== -->
        <col w="fill" fill="$surface" border="1 $line" radius="$r-lg" p="24" gap="16" role="card">
          <row w="fill" gap="12" align="middle-left">
            <row p="4 9" radius="$r-sm" fill="$surface-2" border="1 $line-strong" align="middle-center" role="badge">
              <text text-style="MonoB" value="v3.8.0" color="$text" />
            </row>
            <text w="fill" text-style="H3" value="Saved views and CSV export" color="$text" />
            <row gap="8" align="middle-right">
              <img src="https://api.iconify.design/lucide/calendar.svg?color=%238E8E98" w="14" h="14" />
              <text text-style="Mono" value="Jul 28, 2026" color="$faint" />
            </row>
          </row>

          <line fill="$line" role="divider" />

          <col w="fill" gap="14">
            <instance component="comp-change" type="New" desc="Saved views: pin your most-used filter combinations to the sidebar." hot="true" />
            <instance component="comp-change" type="New" desc="Export any query result to CSV, up to 1M rows per file." hot="true" />
            <instance component="comp-change" type="Improved" desc="Search now matches on deeply nested JSON fields without a schema." hot="false" />
            <instance component="comp-change" type="Breaking" desc="Deprecated the v1 ingest endpoint; migrate to /v3/ingest before Sep 30." hot="false" />
          </col>

          <row w="fill" gap="10" align="middle-left">
            <instance component="comp-avatar" ini="AD" />
            <text w="fill" text-style="Small" value="Ana Duarte and 2 others" color="$faint" />
            <text text-style="Small" value="Read release notes" color="$accent" href="https://beacon.dev/changelog/v3-8-0" role="hyperlink" />
          </row>
        </col>

        <!-- ===== PAGINATION ===== -->
        <row w="fill" p="6 0" gap="12" align="middle-center" role="pagination">
          <line w="fill" fill="$line" />
          <row p="9 16" gap="8" radius="$r-sm" fill="$surface" border="1 $line" align="middle-center" role="button">
            <text text-style="Btn" value="Older releases" color="$text" />
            <img src="https://api.iconify.design/lucide/chevron-down.svg?color=%239C9CA8" w="15" h="15" />
          </row>
          <line w="fill" fill="$line" />
        </row>
      </col>

      <!-- RIGHT RAIL -->
      <col w="332" gap="16">

        <!-- Subscribe card -->
        <col w="fill" fill="$surface" border="1 $line" radius="$r-lg" p="18" gap="14" role="card">
          <col gap="5">
            <text text-style="H3" value="Never miss a release" color="$text" />
            <text w="fill" text-style="Small" value="Get the changelog in your inbox whenever Beacon ships." color="$muted" />
          </col>
          <row w="fill" p="10 12" gap="8" radius="$r-sm" fill="$surface-2" border="1 $line" align="middle-left" role="text-field">
            <img src="https://api.iconify.design/lucide/mail.svg?color=%238E8E98" w="15" h="15" />
            <text w="fill" text-style="Small" value="you@company.com" color="$faint" />
          </row>
          <row w="fill" p="10 14" gap="8" radius="$r-sm" fill="$accent" align="middle-center" role="button">
            <text text-style="Btn" value="Subscribe" color="$accent-ink" />
          </row>
          <text text-style="Small" value="Also available on RSS and Slack" color="$faint" href="https://beacon.dev/changelog/rss" role="hyperlink" />
        </col>

        <!-- Filter card -->
        <col w="fill" fill="$surface" border="1 $line" radius="$r-lg" p="18" gap="12" role="card">
          <text text-style="Tag" value="FILTER BY TYPE" color="$faint" text-case="uppercase" letter-spacing="1" />
          <col w="fill" gap="8">
            <instance component="comp-filter" label="New" cnt="34" />
            <instance component="comp-filter" label="Improved" cnt="41" />
            <instance component="comp-filter" label="Fixed" cnt="52" />
            <instance component="comp-filter" label="Breaking" cnt="3" />
          </col>
        </col>

        <!-- Rollout card -->
        <col w="fill" fill="$surface" border="1 $line" radius="$r-lg" p="18" gap="14" role="card">
          <row w="fill" gap="auto" align="middle-left">
            <text text-style="H3" value="4.0 rollout" color="$text" />
            <text text-style="MonoB" value="71%" color="$accent" />
          </row>
          <col w="fill" gap="7">
            <row w="296" h="8" radius="$r-pill" fill="$surface-2" align="middle-left">
              <rect w="210" h="8" radius="$r-pill" fill="$accent" />
            </row>
            <text text-style="Small" value="71% of workspaces upgraded to 4.0" color="$muted" />
          </col>
          <line fill="$line" role="divider" />
          <row w="fill" gap="auto" align="middle-left">
            <text text-style="Small" value="Avg ingest latency" color="$muted" />
            <text text-style="MonoB" value="260ms" color="$text" />
          </row>
          <row w="fill" gap="auto" align="middle-left">
            <text text-style="Small" value="Releases this quarter" color="$muted" />
            <text text-style="MonoB" value="12" color="$text" />
          </row>
        </col>
      </col>

    </row>
  </col>
</gui>

```
