Skip to content

feat: file-based changelog system as settings page - #79

Merged
fazxes merged 7 commits into
mainfrom
feat/migration
Mar 19, 2026
Merged

fazxes merged 7 commits into
mainfrom
feat/migration

Conversation

@fazxes

@fazxes fazxes commented Mar 18, 2026

Copy link
Copy Markdown
Member

Summary

  • Adds a Changelog page to Settings with a timeline layout matching orbit.build/changelog
  • Auto-discovers changelog entries from markdown files via Vite import.meta.glob — drop a new .md file in apps/agent/src/changelogs/ and it appears without code changes
  • Hybrid data model merges bundled historical changelogs with remote release notes from the Tauri updater
  • Changelog button on the update toast now opens Settings without dismissing the toast, preserving the "Update now" CTA
  • Sidebar shows a "What's new" link after the toast is dismissed

Changes

  • 6 changelog entries (v0.0.1–v0.0.6) with full release notes from orbit.build
  • Timeline UI: sticky date column, dot/line, version badges, "Latest" tag
  • Inline code restyled across chat and changelog: subtle border, tinted bg, primary color
  • Top/bottom gradient fade masks on settings scroll container
  • Timezone-safe date parsing (local midnight, no UTC shift)
  • Removed old changelog dialog infrastructure (dialog, accordion, CSS animations)

Test plan

  • bun run typecheck passes
  • bun run lint passes
  • bun run test passes (new tests for loader, merge logic, renderer, toast wiring, settings nav)
  • Trigger update simulation → toast shows 3 buttons → click "Changelog" → Settings opens, toast stays
  • Close settings → toast still there → click "Update now"
  • Click "Later" → sidebar shows update indicator + "What's new" link
  • Settings → Changelog nav item → full timeline with all 6 versions
  • Add a new .md file to changelogs/ → restart dev → appears automatically

Add a changelog page to Settings with a timeline layout matching
orbit.build/changelog. Changelogs are auto-discovered from markdown
files in apps/agent/src/changelogs/ via Vite import.meta.glob — drop
a new file and it appears without code changes.

- 6 changelog entries (v0.0.1–v0.0.6) with full release notes
- Hybrid data model: bundled files + remote release notes from updater
- Timeline UI with sticky date column, dot/line, version badges
- Changelog button on update toast opens Settings without dismissing
- Sidebar "What's new" link after toast is dismissed
- Inline code restyled (chat + changelog): subtle border, tinted bg
- Top/bottom gradient fade masks on settings scroll container
- Timezone-safe date parsing (local midnight, no UTC shift)
- Tests for loader, merge logic, renderer, toast wiring, nav

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: aeb5fb6634

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +142 to +145
label="Changelog"
variant="secondary"
onClick={() => {
useUIStore.getState().openSettings('changelog');

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Guard the changelog toast action on the welcome screen

When Orbit is still showing the welcome surface, clicking this new Changelog button only flips settingsOpen; App.tsx renders the settings surface only when !isWelcome (settingsOpen && !isWelcome at lines 909-915), so first-launch users get a button that appears to do nothing. This regression is specific to the no-workspace/welcome flow, but in that state there is no other visible way to reach the new changelog page.

Useful? React with 👍 / 👎.

Comment on lines +118 to +122
onOverlayMount();
return (): void => {
onOverlayUnmount();
};
}, [open]);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep the browser overlay hidden until lightbox exit finishes

In browser mode, this effect calls onOverlayUnmount() as soon as open flips to false, but the dialog itself stays mounted for the 200ms AnimatePresence exit animation. That lets showBrowserSafe() run before the lightbox has actually disappeared, so the native browser window can flash behind the fading overlay. The previous DialogOverlay implementation tied the hide/show lifecycle to the real overlay mount, which avoided that race.

Useful? React with 👍 / 👎.

fazxes added 6 commits March 18, 2026 15:31
…error handling

Connect Settings UI API keys to agent-bridge sidecar (AES-256-GCM encrypted
credentials flow), add startup preflight health checks, credential bridge for
Rust↔sidecar key exchange, auth error banner, error classifier, and health
indicator components. Protect shell env API keys from OAuth deletion.

Also fix Tailwind v4 canonical classes in update-toast and clippy warnings in
build.rs. Mark credential plans as done and sync plan tracking index.
Add radio-card selector to Account Settings so users can explicitly choose
between OAuth and API Key as their preferred Claude auth method. Persists
preference in encrypted credentials, respects it at startup and in the
sidecar credential push flow.
Fix two bugs in the react-grab element selector:
1. "Failed to copy" tooltip caused by async handler returning Promise
2. Missing content in chips showing only bare tag name

Make onElementSelect synchronous (returns true immediately), capture
textContent with sanitization, and defer React source enrichment via
a separate orbit-eval://element-enriched URL scheme with epoch-based
staleness protection.

Add click-to-inspect detail dialog on compact element chips with
syntax-highlighted HTML, copy buttons, click-to-open file in editor,
and keyboard accessibility.
- New: docs/skills/PLUGIN-PUBLISHING-GUIDE.md — Claude Code plugin
  creation, plugin.json manifest, marketplace distribution, Orbit-plugin ref
- Updated: docs/skills/SKILLS-PUBLISHING-GUIDE.md — added Orbit Audit Suite
  (11 skills) to the current skills table
- Updated: docs/CLAUDE.md — added plugin guide to skills/ index
@fazxes
fazxes merged commit ae74a4a into main Mar 19, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant