D Diagent docs

Platform admin

Application changelog

The application changelog at /changelog is the public-facing release-notes surface for buyers. Authoring sits at /admin/changelog (super_admin only).

Format

Each entry is one row keyed by an immutable version (semver: v1.4.0). Entries follow the Keep a Changelog convention โ€” markdown with sections under ## Added / ## Changed / ## Fixed / ## Removed / ## Security. The public renderer supports headings, bullet lists, **bold**, and `code` spans; everything else passes through as plain text.

Status lifecycle

StatusWhat it does
draft Default on create. Invisible to buyers; the public /changelog page filters drafts out.
published Visible to buyers. The entry's version becomes immutable โ€” buyers may have linked to /changelog#v1.4.0 and silently changing what that anchor refers to would rewrite history. To renumber, archive the entry first and create a new one.
archived Hidden from the public listing but kept in the table so old buyer linkbacks still resolve. Use this instead of hard-deleting.

JSON feed

/changelog.json serves the same published entries as machine-readable JSON, capped at the latest 100. Buyers can scrape it for embedding "what's new" widgets in their own dashboards or subscribing via a Make/Zapier polling trigger.

{
  "brand": "Pitchbar",
  "entries": [
    {
      "version": "v1.4.0",
      "released_at": "2026-05-09T00:00:00+00:00",
      "title": "Workflow visual editor + Phase 2 step types",
      "body": "## Added\n- React Flow canvas\nโ€ฆ"
    }
  ]
}

What's-new banner

Authenticated workspace members see a slim "What's new in vX.Y.Z" banner across the top of the admin shell whenever a published entry is newer than the user's users.last_changelog_seen_at timestamp. Dismissing the banner POSTs to /changelog/seen and stamps the timestamp; the banner stays hidden until the next entry lands. Super-admins don't see the banner โ€” they author the entries themselves.

CLI

php artisan changelog:add drops an entry from the terminal โ€” useful for committing release notes alongside the code that ships them.

php artisan changelog:add v1.4.0 \
  --title="Workflow visual editor" \
  --status=published \
  --body="$(cat <<'EOT'
## Added
- React Flow canvas at /app/workflows/{id}/canvas
- Branch / tag_lead / webhook step types

## Fixed
- Mobile homepage hero overflow on viewports under 480px
EOT
)"

Idempotent on version โ€” re-running with the same semver leaves the existing row untouched. To edit a published entry, use the admin form at /admin/changelog/{id}/edit.

Persistence

Changelog entries live as a single JSON file at storage/app/private/changelog-entries.json โ€” same pattern as the internal Kanban board. Storage is intentionally NOT a database table, so php artisan migrate:fresh during development never wipes release notes.

On every read, the store auto-seeds itself from source markdown files at database/changelog-entries/v*.md. New versions on disk are inserted; existing entries are never overwritten (admin edits in the UI are the source of truth post- bootstrap). This gives a "ship the source in git, sync to disk on first request" workflow with zero manual steps โ€” deploying the new code, hitting /changelog once, the entries appear.

Source markdown shape

---
version: v1.1.0
title: Visual workflow editor, customizable lead form, and widget polish
released_at: 2026-05-09
---

## New features

**Visual workflow editor.** Build branching chat flows on a
drag-and-drop canvas...

## Improvements

...

## Fixes

...

Three frontmatter fields are required: version, title, and released_at. Body is plain markdown rendered by the public changelog page.

Disabling the bootstrap

Set changelog.bootstrap_dir to an empty string in your config or environment overlay. Useful when you want an empty changelog and want to author entries from scratch via the admin UI.