# Changelog

## [1.33.0](https://github.com/portel-dev/photon/compare/v1.32.6...v1.33.0) (2026-05-21)

### Features

* **tsx:** focus-preserving reconciliation in the JSX runtime ([a05766d](https://github.com/portel-dev/photon/commit/a05766d4a08ec2c14a1b83e77ccc22cc2fdbf083))

### Bug Fixes

* **daemon,beam:** survive FD-table exhaustion gracefully ([940ebc4](https://github.com/portel-dev/photon/commit/940ebc4ffe510dad4e2c91e246a1d963c96296a2))
* **tsx:** cache-busting for .tsx views on Cloudflare deploy ([cc61361](https://github.com/portel-dev/photon/commit/cc61361a810a064aba3b0190d5b54c74d0eaa35b))
* **tsx:** content-hash cache-busting for .tsx views ([588ecf2](https://github.com/portel-dev/photon/commit/588ecf2f5c88a95dd8041dca0f824d0343af550c))

## [1.32.6](https://github.com/portel-dev/photon/compare/v1.32.5...v1.32.6) (2026-05-18)

### Bug Fixes

* clean CI unused variable warnings ([b988320](https://github.com/portel-dev/photon/commit/b9883207d051a47f5df5a49810a2dba4b47ad044))
* **ps:** split disable/pause target on last colon so instance ids work ([d807b80](https://github.com/portel-dev/photon/commit/d807b80e487284b267a56f3fad35d37a5617cdf5))

## [1.32.5](https://github.com/portel-dev/photon/compare/v1.32.4...v1.32.5) (2026-05-16)

### Features

* add surface intent metadata ([e34e383](https://github.com/portel-dev/photon/commit/e34e383f2066704944de46f0a3c8107a371b4b4d))
* use intent metadata in Beam ([02139d7](https://github.com/portel-dev/photon/commit/02139d79e76f4eaccb5cb7207ee178e3ab23698f))
* use intent metadata in CLI ([68536f3](https://github.com/portel-dev/photon/commit/68536f3d7098a12d94e7f0df5df98a25131452ef))

### Bug Fixes

* add daemon-safe photon config ([444c13b](https://github.com/portel-dev/photon/commit/444c13bc19c53a6a90c3bac7c9feb9e5de2fca60))
* close daemon log handle after spawn ([cb4b40f](https://github.com/portel-dev/photon/commit/cb4b40f5b27b5472f0ee8584da5e2cc9519e72e3))
* guard daemon eager lifecycle loading ([2b84628](https://github.com/portel-dev/photon/commit/2b846282d5c9b8402e5fa50a593b63308597bdd5))
* keep daemon config scoped to photon dirs ([c33b9c3](https://github.com/portel-dev/photon/commit/c33b9c3a74eaaed67e7f5727bf93e23c626ad4f1))
* make bun release publish from package root ([cf653b0](https://github.com/portel-dev/photon/commit/cf653b0ce4699502c14199519feebd1d475d79c8))
* make shell hook independent of PATH shim ([e6ef947](https://github.com/portel-dev/photon/commit/e6ef947f2879f2231d81affc3f087deb13a33cb7))
* replay constructor env across daemon restarts ([55bc12a](https://github.com/portel-dev/photon/commit/55bc12a195e7e1bba6900e833740be4e577cd3da))

## [1.32.4](https://github.com/portel-dev/photon/compare/v1.32.3...v1.32.4) (2026-05-14)

### Bug Fixes

* cap Beam daemon connection pressure ([33617d1](https://github.com/portel-dev/photon/commit/33617d1e8bf7d89066d57d179efabdb621741c49))
* harden daemon health recovery ([b45b0cb](https://github.com/portel-dev/photon/commit/b45b0cbf40cb828da34440d19f3f55d3ccb9826a))
* ignore phantom Beam asset watcher events ([c34778a](https://github.com/portel-dev/photon/commit/c34778af502fb51df240d866d10a68ac638744ab))

## [1.32.3](https://github.com/portel-dev/photon/compare/v1.32.2...v1.32.3) (2026-05-13)

### Features

* move Auto UI render hints into MCP metadata ([734c191](https://github.com/portel-dev/photon/commit/734c19163d7125c3617f4b6d204220b6f9c6eb24))

### Bug Fixes

* absorb daemon restart socket races ([b532f1f](https://github.com/portel-dev/photon/commit/b532f1fb98dd4f8e8550350c94ebca74cbb24ef7))
* allow tested release hook path ([8466863](https://github.com/portel-dev/photon/commit/84668636d3b689965358d199082fdea0158c775e))
* avoid duplicate promise release gate ([d887441](https://github.com/portel-dev/photon/commit/d8874417e7ef37c5874821c352edcffb81dcfc6c))
* coalesce daemon watcher reload events ([11d8cf4](https://github.com/portel-dev/photon/commit/11d8cf4635d1d41a833d6eb5bb99038e3ab50560))
* harden Beam daemon transport stability ([51943bb](https://github.com/portel-dev/photon/commit/51943bbd87c5a1a6faf9dcbc676b805be2e8d123))
* harden beam photon app smoke paths ([04bd58d](https://github.com/portel-dev/photon/commit/04bd58d70b7d54aa30ded5ab7ac2440016a25dfa))
* harden daemon socket recovery under bun ([6a8afbe](https://github.com/portel-dev/photon/commit/6a8afbebadd46a94dd8fd07186f87f2c1e1eccaf))
* isolate release fresh install check ([6158fd2](https://github.com/portel-dev/photon/commit/6158fd25037ad70adcd74bf76883d310a1d88b07))
* keep Bun-launched Beam alive ([807eeca](https://github.com/portel-dev/photon/commit/807eeca3cde1ab186abba4c533eb4e7bca35484f))
* paginate MCP discovery lists ([1c5ff94](https://github.com/portel-dev/photon/commit/1c5ff944b0521efc4631718ea65d6812db282c70))
* raise release test file limit ([d10c992](https://github.com/portel-dev/photon/commit/d10c992b48399328c069e63ab2ff6bebd12fb886))
* restore stateful app UI metadata ([232f6d5](https://github.com/portel-dev/photon/commit/232f6d5d9382312a50d4e60ea9ae56c8753704e8))
* route interactive asks through MCP elicitation ([4e83c42](https://github.com/portel-dev/photon/commit/4e83c429ec8cef53f00d8ee01bc20ea23f999cb6))
* stabilize beam regression checks ([4ab633f](https://github.com/portel-dev/photon/commit/4ab633f08788f74c06ca6b17318180c6a86b1ac2))
* unfreeze production install simulation ([c17cf22](https://github.com/portel-dev/photon/commit/c17cf228c91a22f47a2a2f57813a2e05fd4efc21))
* use bunx in Beam install guidance ([4cafba4](https://github.com/portel-dev/photon/commit/4cafba42d008266209272a481103b38646a53662))

## [1.32.2](https://github.com/portel-dev/photon/compare/v1.32.0...v1.32.2) (2026-05-12)

### Bug Fixes

* support local ts imports in photons ([fb326e0](https://github.com/portel-dev/photon/commit/fb326e0ebe5fb0278e74382d211b042269bbc3e9))

## [1.32.0](https://github.com/portel-dev/photon/compare/v1.31.2...v1.32.0) (2026-05-12)

### Features

* **beam:** dynamic web route matching with `:param` path segments ([1e648ec](https://github.com/portel-dev/photon/commit/1e648ec0ecaf2a0a193af8eba59d4f2be6529a89))
* **daemon:** load lifecycle photons from all registered base directories ([8b8973c](https://github.com/portel-dev/photon/commit/8b8973c5407661d940467132496a8c4c98479253))
* **daemon:** non-blocking Beam startup during daemon restart ([316b520](https://github.com/portel-dev/photon/commit/316b520d2eef9a905136a0e7ec5c28f3804bef74))
* **loader:** isolate PHOTON_DIR per photon context ([386528d](https://github.com/portel-dev/photon/commit/386528d46b65e1fc1d5ac9200e4fc84b582ca0f0))

### Bug Fixes

* **beam:** stream non-HTML web route responses directly without buffering ([7cbfec7](https://github.com/portel-dev/photon/commit/7cbfec7270995a88cc7e40be7fd0ac7437bf5692))
* **daemon:** keep base directory isolated across photon dirs during restart ([859e22b](https://github.com/portel-dev/photon/commit/859e22b8f098be9cf39103e6390665332953e7d1))
* **loader:** allow async generator subscriptions without sync generator guard ([fbf9b6f](https://github.com/portel-dev/photon/commit/fbf9b6f8c9ecd78e489615256e28707d833694d2))
* **settings:** allow photon methods to write to this.settings directly ([00c1905](https://github.com/portel-dev/photon/commit/00c1905d1a94d20e26d52e5a1f7c1e66ee282b3b))
* **transport:** forward data payload and AbortSignal across all generator paths ([266dcd0](https://github.com/portel-dev/photon/commit/266dcd0d))

## [1.31.2](https://github.com/portel-dev/photon/compare/v1.31.1...v1.31.2) (2026-05-11)

### Bug Fixes

* **daemon:** delay catch-up fires 15 s to keep event loop free during startup ([877f437](https://github.com/portel-dev/photon/commit/877f437d0d34408cae4ce17f7164f0c9d25978bc))

## [1.31.1](https://github.com/portel-dev/photon/compare/v1.31.0...v1.31.1) (2026-05-11)

### Bug Fixes

* **daemon:** defer schedule load until after socket is bound ([ef9ec6f](https://github.com/portel-dev/photon/commit/ef9ec6f2ec6c140ef2426da4a6107dd1c228162d))

## [1.31.0](https://github.com/portel-dev/photon/compare/v1.30.0...v1.31.0) (2026-05-11)

### Features

* **beam:** announce and render photon web routes via MCP capabilities ([42d5e26](https://github.com/portel-dev/photon/commit/42d5e26e1ef29ca952e533b61dd453eb44bb028b))
* **beam:** inject x-photon-base-path header into forwarded web route requests ([a973c3d](https://github.com/portel-dev/photon/commit/a973c3dea2d6ff44a6ad22e7ca13c8df9219fff7))
* **bridge:** expose window.photon.url as photon base URL ([9285898](https://github.com/portel-dev/photon/commit/92858983c9cd31eb6db51ff5fbddc78859a7a1e9))

### Bug Fixes

* **beam:** actually contain method card params within card boundary ([e452952](https://github.com/portel-dev/photon/commit/e452952b2b1d6b93e089cab3e132f28264295260))
* **beam:** auto-retry on load failure; auth photons show token config ([7dee6dd](https://github.com/portel-dev/photon/commit/7dee6dd2fd28536ea8af87c7561841216e190d32))
* **beam:** don't auto-enter focus mode when selecting a web-app photon ([2d4ab4a](https://github.com/portel-dev/photon/commit/2d4ab4ad1efcaacd61de624b1552d0e5ba008901))
* **beam:** eliminate horizontal and vertical scrollbars on main page ([84afab9](https://github.com/portel-dev/photon/commit/84afab9594e08badcbca5ff6cdaabbba8a6adfe5))
* **beam:** enter focus mode for web-app view, same as mcp-app ([c4bcd05](https://github.com/portel-dev/photon/commit/c4bcd05ecc7289f14a605c5854642d4b54e81be2))
* **beam:** flush notification queue before HTTP response for SSE transport ([ba0c85d](https://github.com/portel-dev/photon/commit/ba0c85d4422740ba6f3b4797cb10e1bba6076a59))
* **beam:** guard /api/restart against cross-site requests ([89f2df6](https://github.com/portel-dev/photon/commit/89f2df64a1c15d1afe99200afa11d6dbba9532a5))
* **beam:** handle daemon socket errors without crashing Beam ([a11acac](https://github.com/portel-dev/photon/commit/a11acaca86312f4203881b446b4a38942b5de7aa))
* **beam:** prevent method card parameter and description overflow ([36ba3eb](https://github.com/portel-dev/photon/commit/36ba3eb7fb4c5908ce4d564c5bb898d4c66d21b9))
* **beam:** remove URL bar chrome from web-app iframe view ([d07841e](https://github.com/portel-dev/photon/commit/d07841e42d023484460f204f7734df85764b8b64))
* **beam:** route status/progress notifications to SSE stream, not HTTP response ([5a551cf](https://github.com/portel-dev/photon/commit/5a551cf48f49f7a1d3a117d41ed2a6d82264ce31))
* **beam:** show method and param names verbatim, no title-casing ([3cc5d1f](https://github.com/portel-dev/photon/commit/3cc5d1f2ba526e80a5e5b81cfbd51f81f19b4aa8))
* **beam:** surface compiler crash as actionable banner with restart button ([f209440](https://github.com/portel-dev/photon/commit/f209440f556e0700752b23969b6d1f27fa5e8967))
* **cf-template:** gate WebSocket fan-out to explicit channel emits only ([25e233a](https://github.com/portel-dev/photon/commit/25e233a8e5a5f437fb0e6e5d6eaac16d8c6d73ba))
* **cli:** add missing commands and subcommands to shell completion scripts ([a7ad2be](https://github.com/portel-dev/photon/commit/a7ad2be3aea7fedc16d38ab1c65e01ebba3341b3))
* **cli:** always emit hook to stdout so eval"$(photon init cli)" activates immediately ([429ab41](https://github.com/portel-dev/photon/commit/429ab418c648ca0d968827bf96ad9cb2a48fce23))
* **cli:** map kebab-case flags to snake_case params, suppress loader error prefix ([deaba80](https://github.com/portel-dev/photon/commit/deaba8084225cb90ea89d7999586593f9d5a522d))
* **daemon:** close three resilience gaps in daemon communication ([b64e9e6](https://github.com/portel-dev/photon/commit/b64e9e6a8f192108a6e8cff9a0247ce92348695f))
* **daemon:** treat zombie processes as dead during stale cleanup ([4731029](https://github.com/portel-dev/photon/commit/47310296071ba1e9e6cb8180d3d18adb94b5dc6b))
* **loader,beam:** auto-recover from compiler service crashes ([2b32232](https://github.com/portel-dev/photon/commit/2b32232a3260645d4e4e6eab0afac1f85693ff74))
* **release:** poll for Beam startup banner instead of fixed 6s sleep ([9d58362](https://github.com/portel-dev/photon/commit/9d58362172c5a930707f605c537ca5d16fe19638))
* **test:** correct beam-status-sse SSE notification assertion ([321eb7b](https://github.com/portel-dev/photon/commit/321eb7b2fb94f5379f5393755c004fdcab613061))
* **test:** increase SSE stream warmup and use polling in beam-status-sse ([0e7bf30](https://github.com/portel-dev/photon/commit/0e7bf304e2b80c9f7e32b8a0181bb474dbc9271e))
* **test:** update visual promise assertion and wait for main content before screenshot ([289d1f2](https://github.com/portel-dev/photon/commit/289d1f2f8de8ed3004a93259304a37490a4b8791))

## [1.30.0](https://github.com/portel-dev/photon/compare/v1.29.0...v1.30.0) (2026-05-09)

### Features

- **photon-injection:** three ways to consume runtime capabilities, same surface everywhere — `extends Photon` (classic), `constructor(private photon: Photon)` (compose without inheritance), or extend an unrelated base class and inject `Photon` alongside. Switching between modes is purely cosmetic; the runtime resolves to the same memory scope, schedule, call handler, etc. for the same photon name.
- **cf-injection:** Cloudflare resources reach the photon through a separate, optional `Cloudflare` (or `CloudflareEnv<T>`) constructor parameter. Importing `Cloudflare` from `@portel/photon` is the deploy-target signal — the import line documents the dependency. Outside CF, the loader injects a throwing Proxy whose error message names the imported symbol so the diagnostic is unambiguous. Forgiving auto-inject covers plain classes that reference `this.cf.*` without the explicit ctor param.
- **cf-auto-naming:** binding names are now derived from the photon name + optional qualifier — `cf.kv()` → `<photon>_kv`, `cf.kv('cache')` → `<photon>_cache_kv`, etc. Single source of truth (`bindingNameFor` from `@portel/photon-core`) feeds the local miniflare seed list, the deploy-time `wrangler.toml` emission, and the Worker-runtime lookup. Photons no longer pick global binding names; collisions across photons are impossible by construction.
- **cf-source-scanner:** `cf-usage-scanner.ts` walks photon source at boot/deploy time to discover every literal qualifier passed to `cf.<category>(...)`. Qualifiers are recognized on every access path (`this.cf`, `this.<paramName>` for any constructor param typed `Cloudflare`, type-cast variants like `(this as any).cf`). Dynamic qualifiers fall back to the default binding plus a clear runtime miss for unknown names.
- **cf-overrides:** `protected cfBindings` becomes a pure override layer keyed by qualifier. Optional in most photons; declare only when repointing a binding at a pre-existing CF resource (shared bucket, real D1 UUID, etc.). CLI overrides via `photon cf set <photon> <category>.<qualifier> <value>` continue to layer on top via JSON at `<baseDir>/.data/cf-overrides/<photon>.json`.
- **cf-deploy:** `photon host deploy cloudflare` autogenerates `wrangler.toml` from the source scanner, namespaced per photon. Each photon contributes its own auto-named bindings; siblings can't collide.
- **cf-flush:** `this.emit({ emit: 'progress'|'status'|'log'|'render' })` (and the `this.status(...)` / `this.log(...)` / `this.progress(...)` helpers) now flush through the active SSE writer on deployed Workers, mapped to `notifications/progress` / `notifications/message` JSON-RPC notifications. Client-supplied `_meta.progressToken` is echoed back so progress correlates with the request. Local STDIO already had this wiring; the deployed Worker now matches for cross-transport parity.
- **cf-helpers:** the deployed Worker template now injects `this.status / this.log / this.progress / this.toast / this.thinking / this.render` on plain-class photons. Mirrors `injectEmitHelpers` from the classic loader so a photon written against the local runtime behaves identically when served from CF.
- **cf-deploy/auth:** transport-level bearer check on `/mcp`. Set `PHOTON_MCP_BEARER` as a Worker secret and `tools/call` requires `Authorization: Bearer <secret>` (timing-safe compare); `tools/list`, `initialize`, `ping`, and `notifications/*` stay unauthed so MCP clients can complete handshake. Mismatch returns `401` with `WWW-Authenticate: Bearer realm="photon"`. Unset secret = open behavior (back-compat).
- **cf-deploy/auth:** `this.mcpAuthed` boolean exposed on photon instances when running on Cloudflare Workers. Reads an `AsyncLocalStorage` scoped to the active `tools/call` so per-method guards can branch on it without race conditions.
- **cf-local:** miniflare-backed local sandbox with persistent storage under `<baseDir>/.data/cf-sandbox/<photon>/`. KV / R2 / D1 (prepare/bind/run/all/exec) / Queue producer / Vectorize / Workers AI / Images all wired. Browser Rendering deferred until a photon dogfoods it (Chromium dep).
- **cli:** kebab-case flag names resolve to camelCase parameters (`--pair-code` → `pairCode`).

### Breaking changes (CF surface — pre-release, no published consumers)

- `this.cf` is no longer a member of the `Photon` base class or the `withPhotonCapabilities` mixin. Authors that want the wrapped surface declare `constructor(private cf: Cloudflare)` or rely on the forgiving auto-inject for `this.cf.*`. Plain `extends Photon` photons that previously read `this.cf` need to either add the constructor injection or reference `this.cf.*` from a method (auto-inject covers it).
- `cf.kv(name)` semantics changed: the argument is now an optional **qualifier** that's auto-resolved into a binding name, not the literal binding name. Photons that depended on the literal-name lookup must declare the qualifier in `protected cfBindings` overrides and update the call shape.
- `CFRuntime` and `notConfiguredCF` exports retired from `@portel/photon-core`. `CFLocalRuntime` retains a deprecated positional constructor (`new CFLocalRuntime(name, cfBindings, baseDir)`) for transitional callers; new code should use the options form.

### Documentation

- New [docs/guides/PHOTON-INJECTION.md](docs/guides/PHOTON-INJECTION.md) — comprehensive reference for the three consumption modes.
- [docs/guides/CF-BINDINGS.md](docs/guides/CF-BINDINGS.md) rewritten to lead with `Cloudflare` injection + auto-naming. Covers override layer, deploy autogen, escape hatch, miniflare sandbox, and the migration from the legacy shape.

### Deferred (acknowledged, not blocking release)

- Beam UI panel for binding management (CLI surface ships now; UI iterates next).
- "Create resource" buttons that call the Cloudflare API.
- Secrets manager / drift detection.
- Type-inferred `cf` IDE typing per photon (Alchemy-style codegen) — deferred follow-on.
- Schema/migration ownership for D1 (BYO migrations for now).

## [1.29.0](https://github.com/portel-dev/photon/compare/v1.28.2...v1.29.0) (2026-05-05)

### Features

* **bridge:** handshake-timeout + fetch fallback for standalone tabs ([e4b97c7](https://github.com/portel-dev/photon/commit/e4b97c7cbd2c7532e6f212aaa111a45897a93f37))
* **build:** bundle <photon>/assets/ tree into standalone binaries ([3b8a480](https://github.com/portel-dev/photon/commit/3b8a48072bcb31ad369cccd878a75fb697119a28))
* **deploy/cf:** [@expose](https://github.com/expose) auto-RPC dispatch on Cloudflare ([5c6ba5b](https://github.com/portel-dev/photon/commit/5c6ba5b2f95292c010b9edf7cf322b40c230061c))
* **deploy/cf:** bundle <photon>/assets/ via wrangler [assets] binding ([fccfdf6](https://github.com/portel-dev/photon/commit/fccfdf6ab63eb27e8f73b5e00ccfd2fe0fa968ef))
* **examples:** todo-app reference photon for three-context smoke ([5eedea7](https://github.com/portel-dev/photon/commit/5eedea74bae6da9c73279ffa3622cfc2acdcaa19))
* **format:** registry + HTTP content negotiation (v1.29 Track A) ([b2c9ede](https://github.com/portel-dev/photon/commit/b2c9ede499f2da443c18229bc3ee2f59ce646ffc))
* **http:** [@expose](https://github.com/expose) auto-RPC at /api/<kebab> with SameSite gate ([7afafb2](https://github.com/portel-dev/photon/commit/7afafb28d965df3fe6155e65451dd59b96bbf415))
* **http:** COOP/COEP for standalone [@ui](https://github.com/ui) pages, CORP on assets ([4b79cb9](https://github.com/portel-dev/photon/commit/4b79cb9104431889935b68580d72bb50155cd8ad))
* **http:** directory-style serving for [@ui](https://github.com/ui) SPA siblings ([7770d9c](https://github.com/portel-dev/photon/commit/7770d9ce658d26e25dbae5657994b23efef4a3e0))
* **loader:** auth → instance binding for [@stateful](https://github.com/stateful) photons ([0b8fa4a](https://github.com/portel-dev/photon/commit/0b8fa4aadf4f5eac55a88a765876edb3ed18f915))
* **resources:** resources/subscribe + notifications/resources/updated ([c9f7853](https://github.com/portel-dev/photon/commit/c9f7853448fec4e64562c89aabd2154d833a2b1a))
* **server:** per-claim instance pool for [@stateful](https://github.com/stateful) + [@auth](https://github.com/auth) photons ([96dc04f](https://github.com/portel-dev/photon/commit/96dc04fbd4c54ba5536436c25738d7d4fb02fc6b))
* **server:** roots/list capability and this.roots wiring ([2207e2c](https://github.com/portel-dev/photon/commit/2207e2caf75f665598a6d30e478c73ff086b8498))
* **transport:** SSE parity for method-level resources and class-level assets ([8afa74d](https://github.com/portel-dev/photon/commit/8afa74d68f28e938d3315c96491b844b65f5687f))

### Bug Fixes

* **build:** preserve binary asset bytes in compiled-binary tree ([d449daf](https://github.com/portel-dev/photon/commit/d449daf3448c5e2c69f5fa87017e81b655331e09))
* **cloudflare:** robust extractInstance for CF Access routing ([ffcc55e](https://github.com/portel-dev/photon/commit/ffcc55eea2732b1bdfb09e5cc301de79b5844525))
* **daemon:** real ping in health probe + log warning when binary is stale ([0b733db](https://github.com/portel-dev/photon/commit/0b733db229c43ca81ab2370c85ee35ef08a459f8))
* **loader:** guard emit-helper injection so user methods win ([2a86bf9](https://github.com/portel-dev/photon/commit/2a86bf978adce5d617ffd2d5ef5306e260e9953d))
* **server:** [@expose](https://github.com/expose) HTTP routes also use the per-claim instance pool ([127e7cf](https://github.com/portel-dev/photon/commit/127e7cf6a62039e6771d0d04d8d0a6c021ffe569))
* **server:** echo client progressToken in notifications/progress ([ee8b1be](https://github.com/portel-dev/photon/commit/ee8b1be0d406d56566ae019ea104b8a8aa46d0f9))

## [1.28.2](https://github.com/portel-dev/photon/compare/v1.28.1...v1.28.2) (2026-05-04)

### Bug Fixes

* **daemon,beam:** unconditional auto-start + parent-watchdog against orphan leaks ([fcf3801](https://github.com/portel-dev/photon/commit/fcf3801f9b4e8193188317cdc021393af3bba4d0))

## [1.28.1](https://github.com/portel-dev/photon/compare/v1.28.0...v1.28.1) (2026-05-03)

### Bug Fixes

* **deploy/cf:** source-extract @get/[@post](https://github.com/post) routes; never trust photon-core ([3edab51](https://github.com/portel-dev/photon/commit/3edab515b9b0ab61570440d30e927e342a3be947))

## [1.28.0](https://github.com/portel-dev/photon/compare/v1.27.0...v1.28.0) (2026-05-03)

### Features

* **sample:** augment this.sample() with memory includes, context registry, and loop detection ([154cca5](https://github.com/portel-dev/photon/commit/154cca5ba9b3d386d0eae93d4ccffebd316a59f7))

### Bug Fixes

* **cli:** use direct HTTPS for npm registry version checks ([8ea3b9d](https://github.com/portel-dev/photon/commit/8ea3b9de8da6d6cb9ae4ebe01347bc4adee939aa))
* **daemon:** dedupe declared vs active schedules by (photon,method,cron) ([729abd8](https://github.com/portel-dev/photon/commit/729abd8ab50269d7672147c1f40f43c2fd278ae6))

## [1.27.0](https://github.com/portel-dev/photon/compare/v1.26.1...v1.27.0) (2026-05-03)

### Features

* **beam:** per-photon Pulse view with schedules + activity ([232d59a](https://github.com/portel-dev/photon/commit/232d59af42dd54e34cf927afed748b6836023fc6))
* **beam:** persist Methods/App across Pulse/Help tab switches ([819ca8c](https://github.com/portel-dev/photon/commit/819ca8c3eb5aaa3f2b19cbbc23b0fcb777f21edb))
* **cf:** photons can override / via [@get](https://github.com/get) with content negotiation ([d0c96ad](https://github.com/portel-dev/photon/commit/d0c96ad9197f36589c70fc91a944d30baed1623e))
* **cf:** support :param path matching in @get/[@post](https://github.com/post) routes ([a1ad05f](https://github.com/portel-dev/photon/commit/a1ad05f13817e4524e472524469b0b151a0bf69f))
* **daemon:** host-mode marker, test PG-kill helper, prune-bases command ([4edeafe](https://github.com/portel-dev/photon/commit/4edeafe223f44f4023e5b2ed1b654210b8ad3577))
* **pulse:** add cron presets, live preview, and inline validation ([b3a0fa8](https://github.com/portel-dev/photon/commit/b3a0fa890d1a3cc29082e07a16adfc946455087b))
* **pulse:** add manual cron schedules from the UI ([5d22861](https://github.com/portel-dev/photon/commit/5d22861a019067ba5175ef0e79616bad9d245fcc))

### Bug Fixes

* **beam:** add Fullscreen button to result toolbar ([77b6726](https://github.com/portel-dev/photon/commit/77b672600f94edd1ae32292091f7a222079e7c80))
* **beam:** clean result table styling ([b0a504f](https://github.com/portel-dev/photon/commit/b0a504f2b104f9a6274f6b2a08b55695d6a47f9b))
* **beam:** drive narrow-mode from render(), not CSS attribute selectors ([2bccaa3](https://github.com/portel-dev/photon/commit/2bccaa3a9b48e3c80937adabb19cc7cd02bdebee))
* **beam:** drive narrow-mode with ResizeObserver, not [@container](https://github.com/container) ([e9d5935](https://github.com/portel-dev/photon/commit/e9d5935486112249294a0456e26622e88ab5cf3d))
* **beam:** drop trailing 'last -' from Pulse timing line ([5163d15](https://github.com/portel-dev/photon/commit/5163d15df78c2750838a89d0aa2ae205c20929fe))
* **beam:** empty Pulse hint, count badge, rename Daemon→Pulse ([b3c5140](https://github.com/portel-dev/photon/commit/b3c5140bd0df278f546619b439b1a436f00cde7c))
* **beam:** favorites count inside the star + icon-only narrow mode ([c4800cb](https://github.com/portel-dev/photon/commit/c4800cbd39334a7bde03b0462847898195330c6f))
* **beam:** hide malformed marketplace source chips ([1e830d9](https://github.com/portel-dev/photon/commit/1e830d9d2abc5c9c177d08c9bb15a312b49641c6))
* **beam:** humanize cron strings and capitalize daemon refresh hint ([fedd62c](https://github.com/portel-dev/photon/commit/fedd62c73180e8810c4250e1dc88cff0cf505a59))
* **beam:** humanize method param hints and expand acronym dictionary ([6fd5596](https://github.com/portel-dev/photon/commit/6fd559683ad72787766a4706dc900bfe15e95f06))
* **beam:** humanize step-minute and weekday-range cron patterns ([ec41a4a](https://github.com/portel-dev/photon/commit/ec41a4a1bf16741220964f780bf512f5805bdee6))
* **beam:** move sidebar container query off :host (Safari fix) ([34ec9ff](https://github.com/portel-dev/photon/commit/34ec9ff5d44123c63ddef19b2b780ea0818a27a7))
* **beam:** rename Daemon panel to Pulse + card layout ([bed2eec](https://github.com/portel-dev/photon/commit/bed2eec7807c07e873e50a6c6518df74908c3063))
* **beam:** separate Pulse schedule groups with whitespace and a rule ([dd88af1](https://github.com/portel-dev/photon/commit/dd88af1fe5e232ff33d5f12107e993836fa3a684))
* **beam:** show favorites count as a bubble on the star icon ([de6a8f3](https://github.com/portel-dev/photon/commit/de6a8f374a565119729814feb228044048bc6309))
* **beam:** shrink sidebar title to "Beam" at narrow widths ([00f5314](https://github.com/portel-dev/photon/commit/00f5314709029699dd36657a568dbeff9f6021a1))
* **beam:** title-case photon name in settings page heading ([d30195b](https://github.com/portel-dev/photon/commit/d30195bdeae35345b1d090721b5c47833f1cbb21))
* **beam:** trim wasted right padding on photon rows ([884fe6d](https://github.com/portel-dev/photon/commit/884fe6d01a8f01ab234275714cd6c4ada3f49617))
* **beam:** use container query for sidebar narrow mode ([539f4bc](https://github.com/portel-dev/photon/commit/539f4bce11ef03b494e58d04a42459c755f1b97a))
* **beam:** use plain [@media](https://github.com/media) query for sidebar narrow mode ([99aaa64](https://github.com/portel-dev/photon/commit/99aaa644177a94f01b484ce5d8fbabd82d915eda))
* **daemon:** address codex review regressions in connectToDaemon ([cd4d85f](https://github.com/portel-dev/photon/commit/cd4d85f36f9e8f7f16a392c8798f6be95f2fd8b4))
* **daemon:** auto-suppress schedules whose photon source has vanished ([904974b](https://github.com/portel-dev/photon/commit/904974b864fcd61c687475112e4f5430ed39c4b0))
* **daemon:** close host-mode bypasses (codex consult P1-P4) ([e189083](https://github.com/portel-dev/photon/commit/e18908369051fbd684031ae8f23df730cc6d3fe4))
* **daemon:** close imposter-daemon race in waitForDaemon ([7d8105f](https://github.com/portel-dev/photon/commit/7d8105fca12edc4829f48cbad01ced0ca8956ac6))
* **daemon:** detect PID reuse before signaling tracked daemon process ([f3d3ce0](https://github.com/portel-dev/photon/commit/f3d3ce02023787e499be223c3730019fc7f29217))
* **daemon:** enforce single daemon per socket via argv scan ([7837b77](https://github.com/portel-dev/photon/commit/7837b77c2ebca656b75202e96100da5581a8bcc1))
* **daemon:** evict cron jobs in-process when loader runs inside the daemon ([3bdc02e](https://github.com/portel-dev/photon/commit/3bdc02efaf3f3b1397d9774f3a1af4081e895391))
* **daemon:** make daemon recovery work on Windows named pipes ([f7384ed](https://github.com/portel-dev/photon/commit/f7384ed899730d6ae7877144e2410eab553fc7a6))
* **daemon:** refuse socket deletion when daemon process survives kill ([30d9ec7](https://github.com/portel-dev/photon/commit/30d9ec79b1c3f9e0dd0a0ccfa489bcd28cdaf23f))
* **daemon:** wait for SIGTERM before deleting socket/pid files ([96086f7](https://github.com/portel-dev/photon/commit/96086f778a92caf67484737c5f2146d2b41c5cbb))
* **schedule:** boot-time dedup of [@scheduled](https://github.com/scheduled) vs ScheduleProvider duplicates ([2a210aa](https://github.com/portel-dev/photon/commit/2a210aa32e9284e87f0c1ef8b43e99f24d9a2df4))
* **schedule:** drop ghost schedules when photon source is missing ([90899a5](https://github.com/portel-dev/photon/commit/90899a536b991d53c7749fbab5757d6714fbf18d))
* **schedule:** handle namespaced names + legacy-layout probe (codex review) ([cec6b59](https://github.com/portel-dev/photon/commit/cec6b59e590360d865b2e895acf10e83bb78fc3b))
* **schedule:** pin legacy schedule's owning base so runJob can lazy-load ([9325511](https://github.com/portel-dev/photon/commit/932551156a1f88df7d512c45b6cfa1c24defb77f))
* **schedule:** recompute exec key after legacy base pin (codex P3) + ESM import ([ec00fdc](https://github.com/portel-dev/photon/commit/ec00fdce299f8f5d600e6b9bf3489ba5bc1603b6))
* **schedule:** tighten ghost probe to schedule's own base + default ([f160dbb](https://github.com/portel-dev/photon/commit/f160dbb2d2418dee878448acc8e30cfe02f07db1))

## [1.26.1](https://github.com/portel-dev/photon/compare/v1.26.0...v1.26.1) (2026-04-30)

### Bug Fixes

* **test:** increase mcp-config startup wait from 200ms to 1500ms for CI ([4c03620](https://github.com/portel-dev/photon/commit/4c03620a906401704400acec084edd6ddd3acf18))

## [1.26.0](https://github.com/portel-dev/photon/compare/v1.25.0...v1.26.0) (2026-04-30)

### Features

* **deploy/cf:** --logs flag enables Workers Logs in generated wrangler.toml ([6a23d21](https://github.com/portel-dev/photon/commit/6a23d21dc612ae40e87cb15c405c488e19fb2194))
* **deploy/cf:** cross-photon this.call via sibling DO bindings ([b5f7cc6](https://github.com/portel-dev/photon/commit/b5f7cc6c09e1893e835ad75ff591012528341711))
* **deploy/cf:** expose env on photon instances + auto-bind Workers AI ([3b27d75](https://github.com/portel-dev/photon/commit/3b27d75dbb39a130d1668f271efd1f54a718c4cc))
* **deploy/cf:** full sample/confirm/elicit via SSE response stream ([c409ec8](https://github.com/portel-dev/photon/commit/c409ec83ccb567dcf982dcbe995487ab0682edff))
* **deploy/cf:** host stateful photons in Durable Objects ([d3cefd1](https://github.com/portel-dev/photon/commit/d3cefd1fb79d7cd0f9cd7bfb294e77e3a27c6455))
* **deploy/cf:** scratch outputDir + actionable failure block ([ebcc3a0](https://github.com/portel-dev/photon/commit/ebcc3a0d23e4bfca05e10ea6df92b83a21c8e3cb))
* **deploy/cf:** spread positional args + warn on undeclared imports ([daefb5b](https://github.com/portel-dev/photon/commit/daefb5bcf9ff6da73e552f652919030635fe6243))
* **deploy/cf:** this.schedule via DO alarm multiplexer ([8a26dd8](https://github.com/portel-dev/photon/commit/8a26dd83c92b7e9533eac0d820f4dc6a6075df5c))
* **deploy/cf:** throwing stubs for sample/confirm/elicit ([db55711](https://github.com/portel-dev/photon/commit/db55711b6f3d9dd1fb7d879445ceaf9f9b51ae93))
* HTTP route dispatch for @get/[@post](https://github.com/post) tags on SSE and CF deployments ([f16a1ba](https://github.com/portel-dev/photon/commit/f16a1ba1f59c5b8a29b37aaae158ebe6ac302a8b))

### Bug Fixes

* **beam:** expand acronym list in formatLabel (MD, PR, CI, CD, ENV, SDK, OS, DB, IO, GIT) ([b329ecd](https://github.com/portel-dev/photon/commit/b329ecdc18fbdbbf4e4709f864e316227eb003ae))
* **beam:** strip docblock tags from descriptions, humanize method names, format ISO dates ([4d104f7](https://github.com/portel-dev/photon/commit/4d104f76264e8e3303ad8ec832e6fd0be4405d82))
* **loader:** extract @get/[@post](https://github.com/post) HTTP routes in loader, not photon-core ([ccac75c](https://github.com/portel-dev/photon/commit/ccac75c74cc04319e04ceec87f6eb5e7a34e6282))
* **loader:** skip channel injection when photon already defines a getter named 'channel' ([81ce7da](https://github.com/portel-dev/photon/commit/81ce7da58d1118604accd3b5ddeafbbe3c6f8e2c))
* **schedule:** persist disable_schedule across daemon restarts + dedup annotation/provider ([c2d3ffc](https://github.com/portel-dev/photon/commit/c2d3ffc5a4edb9772b158385dbba208c4720d34e))
* **ts:** cast httpRoutes access to any until photon-core type is updated ([613946b](https://github.com/portel-dev/photon/commit/613946b98e862f89210d3541f1d2adbcc81b310d))

## [1.25.0](https://github.com/portel-dev/photon/compare/v1.24.0...v1.25.0) (2026-04-25)

### Features

* **deploy/cf:** bundle photon [@dependencies](https://github.com/dependencies) into Worker scaffold ([fdedd67](https://github.com/portel-dev/photon/commit/fdedd67f1d58f3549068173b641f98b4abd16720))

### Bug Fixes

* **deploy/cf:** pass through string returns as raw text in tools/call ([e426bee](https://github.com/portel-dev/photon/commit/e426bee5f3e1a1b8e6e8a96381240008f8c7c126))
* propagate caller cwd across worker and cross-photon-call boundaries ([c7f34da](https://github.com/portel-dev/photon/commit/c7f34dad82c1bd177e142f157ae9d6f39337cf95))

## [1.24.0](https://github.com/portel-dev/photon/compare/v1.23.1...v1.24.0) (2026-04-24)

### Features

* **beam:** human-in-the-loop sampling — Beam answers sampling/createMessage ([7f7a3dd](https://github.com/portel-dev/photon/commit/7f7a3ddc520f59e8ce3961d5e6763928bd0b8b7a))
* **beam:** SDK-transport-only MCP client prototype (not yet wired) ([e34ef2f](https://github.com/portel-dev/photon/commit/e34ef2fd2058ce89c43beeebfe9703b918f1133c))
* **claim:** scoped remote access for MCP sessions via short-lived codes ([6300a87](https://github.com/portel-dev/photon/commit/6300a874755678da11e63b7b34fd711e3bb2b0e3))
* **cli:** remove timeouts, heartbeat contract, Ctrl+C handling ([95f470d](https://github.com/portel-dev/photon/commit/95f470d40a97ee95dbdb3489ba1a3d332c4b865e))
* **deploy/cf:** auto-bridge cf CLI token and bump wrangler pin to v4 ([84e5171](https://github.com/portel-dev/photon/commit/84e5171ca80a71efd555e1985bae1d0d44b4ce20))
* **runtime:** SQLite-backed memory backend ([4fb70e5](https://github.com/portel-dev/photon/commit/4fb70e5a5986ca08b4e72559b577d4ef65e5e93f))
* **runtime:** wire this.sample / this.confirm / this.elicit end-to-end ([44016ab](https://github.com/portel-dev/photon/commit/44016ab305bdd98cd9ccff00a20646dbe3bf6d33))
* **scheduler:** catch up missed fires after daemon downtime ([9a32bff](https://github.com/portel-dev/photon/commit/9a32bff8116ef01f1483c23ddb22c4aa69613e90))

### Bug Fixes

* address codex adversarial review findings (4 P1 + 4 P2) ([ea2a87c](https://github.com/portel-dev/photon/commit/ea2a87cb76fbc320b350e27b9d34ec5f9ed3a861))
* address codex review P1s + P2s on claim + sampling + SDK client ([470e610](https://github.com/portel-dev/photon/commit/470e610d151fe9f46364709c0a555865b3d56d86))
* **beam:** bump MCP method-call timeout from 60s to 5 min ([b3cc61a](https://github.com/portel-dev/photon/commit/b3cc61ad8f4e00ba34430171b7a88e41a20e304a))
* **beam:** mirror theme tokens on sampling modal so dark/light tracks beam-app ([667128c](https://github.com/portel-dev/photon/commit/667128c09189a738cc9a5dd5898aacd7b2ced390))
* **daemon:** boot-time scanner loads schedule.create() files ([23b1c1a](https://github.com/portel-dev/photon/commit/23b1c1a3906c85ecbc236fdc9195ebfe58717834))
* **deploy/cf:** replace hung SSE session transport with stateless MCP Streamable HTTP ([809373a](https://github.com/portel-dev/photon/commit/809373aa0278bf24d12976a13b24afe95593d676))
* **loader:** always-inject this.memory and this.instanceMeta on plain classes ([f1f74d4](https://github.com/portel-dev/photon/commit/f1f74d495e1c5bd5302e447388fa008b6b19cf19))
* **loader:** inject schedule-unschedule hook so cancel evicts ghosts ([eece871](https://github.com/portel-dev/photon/commit/eece8718f908c81fa62f9a9e3edcf90c806684d4))
* **runtime:** serialize concurrent method calls per photon instance ([2ebfcc0](https://github.com/portel-dev/photon/commit/2ebfcc075ac1b5c9f8e3755b229ec7b930dcdfa7))
* **scheduler:** fire cron jobs without requiring a warm photon ([d74bfc0](https://github.com/portel-dev/photon/commit/d74bfc0fdff6dafc823b99d80c09856566194a96))
* **serv:** tools/call echoes client-supplied _meta.progressToken ([dc45b9d](https://github.com/portel-dev/photon/commit/dc45b9ddacaa4ad82e7713c4f5335c0190039bb6))

## [1.23.1](https://github.com/portel-dev/photon/compare/v1.23.0...v1.23.1) (2026-04-21)

### Bug Fixes

* **install:** auto-trust native deps + actionable error messages ([678445f](https://github.com/portel-dev/photon/commit/678445f631e73e6438515b7f4ae21b15c3fb2fbe))

## [1.23.0](https://github.com/portel-dev/photon/compare/v1.22.1...v1.23.0) (2026-04-21)

### Features

* **a2ui:** action round-trip — button name dispatches photon method ([f3f0d33](https://github.com/portel-dev/photon/commit/f3f0d33bf388da4d5f95940481f158f9c5bbf71f))
* **a2ui:** Beam renderer + end-to-end tests + docs ([fc64192](https://github.com/portel-dev/photon/commit/fc641925ed423f7975fbe4e1c8b4bf3fa8a20fc4))
* **audit:** SQLite-backed audit store with runtime-agnostic loader ([ee8b653](https://github.com/portel-dev/photon/commit/ee8b6538efdd0b02465678a33bd217949cbc510a))
* **beam:** daemon panel UI — four tables, actions, history drawer ([7a0bbc7](https://github.com/portel-dev/photon/commit/7a0bbc73e31f1596fb5b6a1761e90afe1d3207b8)), closes [#16](https://github.com/portel-dev/photon/issues/16)
* **beam:** HTTP wrappers around the daemon ps/schedule RPCs ([97d28e4](https://github.com/portel-dev/photon/commit/97d28e44c62078d1501041938d4afae5794678ce))
* **beam:** instance label + JSDoc help text in Settings tabs ([9cc3719](https://github.com/portel-dev/photon/commit/9cc3719c3fe04b26c6bf05f2b474a7c58e79f026))
* **beam:** split Settings view into Setup + Configuration sub-tabs ([7e6a489](https://github.com/portel-dev/photon/commit/7e6a48944e4bb64adfc260c3d6acde6608e93a3d))
* **cli:** add 'photon new' as a top-level shortcut for 'photon maker new' ([e66cfb7](https://github.com/portel-dev/photon/commit/e66cfb7425936291a17c71e4d6ec51feb94b518d))
* **cli:** announceContext adoption across PHOTON_DIR-sensitive commands ([78cf93a](https://github.com/portel-dev/photon/commit/78cf93a480584f1a99e09c15ac376f0d720d52a7))
* **cli:** announceContext helper + --verbose/--json context envelope ([a178d42](https://github.com/portel-dev/photon/commit/a178d4279ffade88cef4e14831033836650118d3))
* **daemon:** brand registry-key types so bare-string lookups don't compile ([7f5ac35](https://github.com/portel-dev/photon/commit/7f5ac3585b7004980b3924bd59feb2bd4e53e411))
* **daemon:** brand scheduledJobs/jobTimers keys + route disable through unscheduleJob ([99476fa](https://github.com/portel-dev/photon/commit/99476fa868ddbd4fb856fbbc05a8abd3db0c2145))
* **daemon:** brand the remaining photon-scoped maps + patch two latent multi-base bugs ([78e991e](https://github.com/portel-dev/photon/commit/78e991e147c8cb79b25d9e5c48e02b2193040b4a))
* **daemon:** discover [@scheduled](https://github.com/scheduled) and [@webhook](https://github.com/webhook) tags at boot, lazy-load on fire ([c6206d3](https://github.com/portel-dev/photon/commit/c6206d3db85772f587536974fe664a56c377367b))
* **daemon:** live watcher for [@scheduled](https://github.com/scheduled) / [@webhook](https://github.com/webhook) tag edits ([2725f3c](https://github.com/portel-dev/photon/commit/2725f3cc06f509526262efe9907da0020b03c896))
* **daemon:** SQLite backend for execution history with indexed queries ([c10ae80](https://github.com/portel-dev/photon/commit/c10ae80c5744d1cf5ca33ff9da6f506e5b29b38f))
* **doctor:** tool-sprawl and secret-named-param lints ([abc331d](https://github.com/portel-dev/photon/commit/abc331dbd0d5f1dd871226ed4d368b32aac8352e)), closes [#4](https://github.com/portel-dev/photon/issues/4) [#5](https://github.com/portel-dev/photon/issues/5) [#3](https://github.com/portel-dev/photon/issues/3)
* **errors:** link common errors to TROUBLESHOOTING.md ([be914fa](https://github.com/portel-dev/photon/commit/be914fadaa828fbeffb4eab2593699e9d3260db9)), closes [#photon-not-found](https://github.com/portel-dev/photon/issues/photon-not-found) [#mcp-not-found-in-marketplace](https://github.com/portel-dev/photon/issues/mcp-not-found-in-marketplace) [#photon-not-found](https://github.com/portel-dev/photon/issues/photon-not-found) [#missing-environment-variables](https://github.com/portel-dev/photon/issues/missing-environment-variables)
* **loader:** inject this.shell with cwd pinned to the photon's folder ([4d4b791](https://github.com/portel-dev/photon/commit/4d4b791ef0a6f05735fd9d036deb9a60a5418e35))
* **loader:** register stat-gate reloader for CLI-direct dispatch ([0db9177](https://github.com/portel-dev/photon/commit/0db9177f14d06b70649820e02fbb300f6fe264c2)), closes [#17](https://github.com/portel-dev/photon/issues/17)
* **maker:** scaffold new photons into CWD by default, --global opts into ~/.photon ([6b32479](https://github.com/portel-dev/photon/commit/6b324798625204293a08d0690d853faa0e7768d9))
* **mcp:** add 'photon mcp install' to register a photon in Claude Desktop ([366133e](https://github.com/portel-dev/photon/commit/366133e1a3d0968ec8a85906aca4eebbd1a29388))
* **new:** add --for and --force flags to scaffold command ([848bcd8](https://github.com/portel-dev/photon/commit/848bcd81ae27cbee9eb4ca610c31554f7a1cac75))
* **ps:** `photon ps` command for observing + controlling scheduled work ([157e33f](https://github.com/portel-dev/photon/commit/157e33f534e8fb77f61a3c4d17069c18d1aa85a3))
* **schedules:** cross-base startup scan + legacy IPC sweep ([3c44a88](https://github.com/portel-dev/photon/commit/3c44a8832de7500b8cd1c2f114e43bf563f26031))
* **schedules:** persist execution history for scheduled jobs ([1dbdf82](https://github.com/portel-dev/photon/commit/1dbdf8228d950dc62bbad492d4349946a1c064c5))
* **schedules:** two-step model — declare via [@scheduled](https://github.com/scheduled), enroll via active list ([45da5c1](https://github.com/portel-dev/photon/commit/45da5c1db7777127bd0d7da9240b6f36c24945bf))
* **security:** default 60/min rate limits on webhook + /mcp transports ([b7766b6](https://github.com/portel-dev/photon/commit/b7766b6be03a8ad41eaddc96c7fd852ab56cc2aa))
* **serv:** HTTP adapter mounts the OAuth 2.1 endpoints onto Node's http server ([1d79b00](https://github.com/portel-dev/photon/commit/1d79b00aa02a03a5f8c95b3762b5719d08404d7c))
* **serv:** OAuth 2.1 authorization server endpoints with CIMD + DCR ([f97b473](https://github.com/portel-dev/photon/commit/f97b4739124ec8697f8a297f397216ab1b222f11))
* **serv:** Serv-class factory + OTel metrics + AS docs ([8f3cefc](https://github.com/portel-dev/photon/commit/8f3cefcc0ee629402836516691350106d132957d))
* **serv:** SQLite elicitation + grant stores for upstream OAuth persistence ([4a4c001](https://github.com/portel-dev/photon/commit/4a4c001f7204ce6aea809f94d6cd86d100400322))
* **serv:** token revocation/introspection, OIDC id_token, RS256/ES256, RFC 8693 token exchange, SQLite persistent stores ([7e17ac0](https://github.com/portel-dev/photon/commit/7e17ac0ea0c8011085b28d4538c87a45fc3ea842))
* **update,upgrade:** add --dry-run to preview changes before installing ([2d3970a](https://github.com/portel-dev/photon/commit/2d3970aecaa4613c9d97d0dba0a702bc514fe644))
* **version:** dev-build marker via semver build-metadata (+sha.<short>) ([3c0e110](https://github.com/portel-dev/photon/commit/3c0e1100052a8df58bcb164a6d3f4b7780f94480))
* **webhook:** CIDR source allowlist for daemon webhook server ([26f568e](https://github.com/portel-dev/photon/commit/26f568e1db14b6cb7c4c2c09d70c146ba820e71b))

### Bug Fixes

* **a2ui:** tighter stream detection + card shape guard + RFC 6901 decode ([cd23d13](https://github.com/portel-dev/photon/commit/cd23d1319d3c9c8065c8c03b4c729d7519df19d1))
* **add:** drop spurious fuzzy matches that echo the query back ([d525640](https://github.com/portel-dev/photon/commit/d52564034e6023e77df0aca1756601c8908cb6df))
* **cli-runner:** cast hint to string for 'a2ui' comparison ([8e3d26d](https://github.com/portel-dev/photon/commit/8e3d26d61064d444d27592a49426355cbbd97a2a))
* **cli,daemon:** bundled-photon guard runs first + legacy-key sweep on disable ([ddb1423](https://github.com/portel-dev/photon/commit/ddb1423a12786e07e10e4a714b6e20d98b34da86))
* **cli,server:** photon ps --base flag + revert hot-reload heuristic ([7f0b94a](https://github.com/portel-dev/photon/commit/7f0b94a03baa20a741763cb10a4e1d47ccd324fe))
* **cli:** always persist PHOTON_DIR in mcp install when workspace != ~/.photon ([0fd0ec3](https://github.com/portel-dev/photon/commit/0fd0ec38d22bf6ddcabd40a258ecfe346ac34ded))
* **cli:** exclude lifecycle hooks from photon cli method listing ([6a8adb7](https://github.com/portel-dev/photon/commit/6a8adb7d63145400a6e9020fa0e517ae9bce319c))
* **cli:** preserve JSDoc paragraph breaks in photon cli help output ([a70f759](https://github.com/portel-dev/photon/commit/a70f75980e9a6abb310c06d2fd49884703f038ba))
* **cli:** show subcommands in group --help (maker, host, marketplace) ([e28f81e](https://github.com/portel-dev/photon/commit/e28f81e4016e79564cac6f36bb08bca7d36abf80))
* **context-store:** honor PHOTON_DIR for instance state, env, state log paths ([7df9fcd](https://github.com/portel-dev/photon/commit/7df9fcdda4ac02b782a7f2ee93d05e7faab83a9e))
* **context:** require .marketplace/ for PHOTON_DIR detection (with one-release transition) ([0eac2a0](https://github.com/portel-dev/photon/commit/0eac2a08f114efa51fbdcd9b9a83ca17f9f70ce3))
* **daemon,ag-ui:** hot-rescan and AG-UI adapter both normalize with boot discovery ([7578ed0](https://github.com/portel-dev/photon/commit/7578ed0e1912398446fa5b8133fb6d130ee1d62e))
* **daemon,bridge:** webhook tracker scoped to base + Beam card heuristic mirrors server ([e1b08ad](https://github.com/portel-dev/photon/commit/e1b08add996fec084af64924389d7a3e58d19476))
* **daemon,cli,a2ui:** scope cross-base drops, walk to workspace root, preserve A2UI escape-hatch fields ([fdf3ad9](https://github.com/portel-dev/photon/commit/fdf3ad9a9bf6732fedc0e79c626d8e50c3c8f042))
* **daemon,cli:** proactive locations keyed by base + a2ui handles null ([e8e07d0](https://github.com/portel-dev/photon/commit/e8e07d0b3b280eb1e43847b3f55576ca6d09a0a3))
* **daemon,cli:** restore default-base schedules + tighten A2UI heuristic ([58766a2](https://github.com/portel-dev/photon/commit/58766a2435de767da12313c5de3cc4eac9085e30))
* **daemon,cli:** three regressions from round-6 fixes ([a6f9d98](https://github.com/portel-dev/photon/commit/a6f9d981e2810c7b6e36087d861d26db8333a0fa))
* **daemon,serv:** SQLite history partitioned by base + loginUrl honors config override ([175b4ab](https://github.com/portel-dev/photon/commit/175b4ab0d719135aa7cd70c261e9ea5f5d979db2))
* **daemon:** auto-register uses loader.baseDir so enabled schedules don't double ([7bd3163](https://github.com/portel-dev/photon/commit/7bd316378eadc2b6e56e1dcce3c2b5c954c1f0b8))
* **daemon:** disk fallback for peer resolution in getOrCreateSessionManager ([57a2f17](https://github.com/portel-dev/photon/commit/57a2f17982e37a82205ebeb0ca610ee052a65bea))
* **daemon:** hot-reload preserves fresh _settings schema + backing ([bc8a8df](https://github.com/portel-dev/photon/commit/bc8a8dfa9842256ae6f50768981573b73a33d573))
* **daemon:** resolve peer photons with marketplace → global fallback ([22bb417](https://github.com/portel-dev/photon/commit/22bb417e4c6fb61f68cbf2900e4c0cd7804bac10))
* **daemon:** scope schedule keys by PHOTON_DIR to prevent cross-base collision ([950a798](https://github.com/portel-dev/photon/commit/950a798490b72e5ff56b9c04a0a861e468dc8f5a))
* **daemon:** sessionManagers + autoRegistered keyed by (photon, base) ([da19f05](https://github.com/portel-dev/photon/commit/da19f057845e7b659e3ed77e04791766ec30a349))
* **daemon:** split SQLite history schema into 3 phases + partition sweep by base ([347d683](https://github.com/portel-dev/photon/commit/347d6839e78115638cedfb0d9e9bf6b0c159ad20))
* **daemon:** webhookRoutes keyed by base + disable sweep scoped to base ([88db561](https://github.com/portel-dev/photon/commit/88db561acf3b6c9e5029bddef778e58ef8f1dc18))
* **doctor:** don't warn on expected overlap between built-in marketplaces ([29e81c0](https://github.com/portel-dev/photon/commit/29e81c0796fef25044d85d1fa02c32e933a6c146))
* **hot-reload:** pass { reason: 'hot-reload', oldInstance } to Beam hooks ([5a42eea](https://github.com/portel-dev/photon/commit/5a42eeaddb61ff45cf49e49f71cb2019ce506193))
* **info:** wrap single-photon --mcp output in mcpServers ([39d54ae](https://github.com/portel-dev/photon/commit/39d54ae8ec87fb1e142a633de71874fd3b68b696))
* **loader:** always inject this.call on plain classes ([90500ab](https://github.com/portel-dev/photon/commit/90500ab98f015dd606a6ca8be14e09fa6933ea39))
* **loader:** always-inject cheap capabilities regardless of cap detection ([58dc00d](https://github.com/portel-dev/photon/commit/58dc00d04b21d3170e222a3442d932bc750cfbb2))
* **loader:** pin instance._baseDir at both load sites + cross-process regression test ([8835a34](https://github.com/portel-dev/photon/commit/8835a3414d7b6e72ac919274dfbe1ea0e038a08b))
* **marketplace,info:** stop leaking marketplace-manager noise into user commands ([39f3070](https://github.com/portel-dev/photon/commit/39f30703f17f60641478fb1730f9cbee6838abb4))
* **migration:** drop detectNamespace; flat photons migrate under empty namespace ([675fcd0](https://github.com/portel-dev/photon/commit/675fcd0a21edefe21ad9d82490d63a8f683366fb))
* **namespace:** data layout mirrors source layout, no more git-remote guessing ([fd7cf69](https://github.com/portel-dev/photon/commit/fd7cf6923da02b0a95d5821e4f8643d3ff249885))
* **ps,a2ui:** ps forwards opts.base as-is + A2UI escapes key JSON pointers ([1b88ab4](https://github.com/portel-dev/photon/commit/1b88ab4f0a246c29d786cfec930825b015f450e7))
* **ps,bridge:** default schedule ops to current base + Beam A2UI classifier ([318feb3](https://github.com/portel-dev/photon/commit/318feb33cbd0413d95013b02c2f72fe3835a278b))
* **schedules:** route writes through PHOTON_DIR, read new + legacy ([ee1b1a9](https://github.com/portel-dev/photon/commit/ee1b1a9503d5cacb48fffee591e1d7e0563260dc))
* **serv,server,cli:** three regressions surfaced by codex re-review ([315a4d9](https://github.com/portel-dev/photon/commit/315a4d9bd421889442769eef090540db59331460))
* **server:** don't stomp fresh initializer values during hot-reload state copy ([ff32ea7](https://github.com/portel-dev/photon/commit/ff32ea73818b6073929bf01c61c49e12a46756d4))
* **server:** pass { reason: 'shutdown' } to onShutdown on Beam stop ([817ed1c](https://github.com/portel-dev/photon/commit/817ed1c20ac623e5a3318473ae6b60955a3cb547))
* **serv:** ES256 emits RFC 7518 P1363 + OIDC nonce echoed into id_token ([7fabacd](https://github.com/portel-dev/photon/commit/7fabacd40de608a087832fe360fd9cfeb2db97b1))
* **serv:** peek auth code + pending consent before validation ([47915fe](https://github.com/portel-dev/photon/commit/47915fea1bde11e94ec7d99b15d97a9669ddd5d3))
* **serv:** PKCE challenge uses SHA-256 per RFC 7636, harden CIMD resolution ([89990eb](https://github.com/portel-dev/photon/commit/89990ebf36d45b77ba4995f9c232967ca13b8342))
* **serv:** tenant-scoped default loginUrl in buildEndpointDeps ([b909ffd](https://github.com/portel-dev/photon/commit/b909ffd512444a0b4e632e41c59a61159bbcee05))
* **storage:** resolve compiled-photon storage paths under PHOTON_DIR, not hardcoded ~/.photon ([6403193](https://github.com/portel-dev/photon/commit/640319341c6df40c99d90819af23dadef1214d60))
* **tasks:** resolve tasks dir per call instead of at module import ([fa52820](https://github.com/portel-dev/photon/commit/fa528203324a7ba8db897e172ffd15d042de3a15))
* **templates:** align scaffold banner and response style with docs ([4a12ee6](https://github.com/portel-dev/photon/commit/4a12ee64365905585d7d180274a96a4dd9e20534))
* **tests:** cimd 304 mock + format-coverage scan walks matching brace ([6d6d3c3](https://github.com/portel-dev/photon/commit/6d6d3c3bad95788fffd796b61d84b2549e4413cb))

## [1.22.1](https://github.com/portel-dev/photon/compare/v1.22.0...v1.22.1) (2026-04-16)

### Bug Fixes

* **ci:** sync package-lock.json with package.json and add lockfile guardrail ([33b9973](https://github.com/portel-dev/photon/commit/33b997310fdc48d94c5224b129fe746cf0eceecf))
# Changelog

## [1.22.0](https://github.com/portel-dev/photon/compare/v1.21.0...v1.22.0) (2026-04-16)

### Features

* /api/health liveness/readiness with subsystem breakdown ([a0505f9](https://github.com/portel-dev/photon/commit/a0505f9b6bfe2ab3e5b80d8f415c02aa26e9da9d))
* add caller to MiddlewareContext for auth-aware middleware ([6c57749](https://github.com/portel-dev/photon/commit/6c577496e28c59d50ad80ee4a61669ac2b9ffb1a))
* add Intent 10 (Standards-Aligned) to platform promises ([4d2256b](https://github.com/portel-dev/photon/commit/4d2256bf120da47167f6f51397c2d6e04a6931bf))
* add OTel metrics for tool calls and circuit breaker ([01cd554](https://github.com/portel-dev/photon/commit/01cd554c2ab98ac37b64f83e62f5a269bb38ad47))
* add regression prevention tests from post-release analysis ([49ba6ae](https://github.com/portel-dev/photon/commit/49ba6aecda8a8f000fd62e4d28c0e0656208f2d5))
* adopt CloudEvents 1.0 envelope for [@stateful](https://github.com/stateful) event emissions ([8f0ac63](https://github.com/portel-dev/photon/commit/8f0ac633046a8bc1ce55fa20b4ef907cac3a3ef1))
* adopt photon-core 2.21.0 native PhotonError cause option ([dff34ff](https://github.com/portel-dev/photon/commit/dff34ffcec391ef34aab882dbc8f3161bce64a10))
* adopt photon-core 2.22.0 [@bulkhead](https://github.com/bulkhead) middleware ([834ef7e](https://github.com/portel-dev/photon/commit/834ef7ec1ff3f32ece5b7e16b9963aec2ce91269))
* **ag-ui:** structured errors, trace correlation, capability handshake ([957a3eb](https://github.com/portel-dev/photon/commit/957a3eb2d8a806d758a7557a9d553d0594877595))
* AsyncLocalStorage request context for ambient trace/caller ([9f14fc1](https://github.com/portel-dev/photon/commit/9f14fc11d19c4c4029110b1769457784b587e8a4))
* expose circuit breaker health via /api/health/circuits ([38ddb2c](https://github.com/portel-dev/photon/commit/38ddb2c64199af491cb83c4995a83f3a18deb241))
* harden error handling and observability ([45734f1](https://github.com/portel-dev/photon/commit/45734f14aebcf4baf43c103372fb551c11a5b2d5))
* nested this.call() inherits parent trace context ([1cb4d00](https://github.com/portel-dev/photon/commit/1cb4d0070a5213c65b6c52b921f3bd62cc37f904))
* OTel logs bridge and documented I10 assertions ([720e664](https://github.com/portel-dev/photon/commit/720e664cb197c2286d7e000d37f44afa40674207))
* OTel NodeSDK bootstrap and observability guide ([55ec95e](https://github.com/portel-dev/photon/commit/55ec95ea0ff36506d239883301ee2ee0ea4683f0))
* OTel parent-context propagation and finish console.* cleanup ([7402dc8](https://github.com/portel-dev/photon/commit/7402dc8a1363a9105a7fed5df02efa92fcbaadbd))
* propagate W3C trace_id from server to tool spans ([0ea66c5](https://github.com/portel-dev/photon/commit/0ea66c5c512795a6a8d607680ec2a55cd3f11ad7))
* rate-limit rejections surface as rate_limited error + metric ([b8bf940](https://github.com/portel-dev/photon/commit/b8bf940e30621c4e8b75a5824af81a53f14549ca))
* reactive circuit events, daemon health, auto service.version, CHANGELOG ([926b047](https://github.com/portel-dev/photon/commit/926b0477bc9fa20dfb079d6953c017451f346a4a))
* structured error payload on MCP tool responses ([c5f7cb0](https://github.com/portel-dev/photon/commit/c5f7cb03f4ecbfda9731d7cf3a8f9796f1494c22))

### Bug Fixes

* serialize STDIO notifications and bump photon-core to 2.19.2 ([6dd214a](https://github.com/portel-dev/photon/commit/6dd214a6fa184e19798cc35e78b0546dde0c0b2b))
* shell integration skips aliases for existing commands ([dabc28d](https://github.com/portel-dev/photon/commit/dabc28da088ccc547fe6a48c3b36d4da8a9ac7e0))
* stateful wrapper skips async generators to preserve iterator protocol ([7a0017a](https://github.com/portel-dev/photon/commit/7a0017a6bcec9ef11415d3ea5f61ea5c65c1d15f))
* use static ESM import for telemetry/context to share ALS across module instances ([6427f01](https://github.com/portel-dev/photon/commit/6427f01b15b4a2d909883c32b5075def544913c3))
# Changelog

## [1.21.0](https://github.com/portel-dev/photon/compare/v1.20.1...v1.21.0) (2026-04-14)

### Features

* add canvas demo photon with three test scenarios ([bf330f9](https://github.com/portel-dev/photon/commit/bf330f9ffcb51f47562d4a4b2ce1304436a99d1d))
* add canvas two-stream AI-generated UI system ([0121ae7](https://github.com/portel-dev/photon/commit/0121ae7409c0451d2df23b7290c81e9f7698d347))
* add co-creative canvas engine ([5c256ee](https://github.com/portel-dev/photon/commit/5c256eeb592ef831569b4bbdcc4d9fe7ee4e9c36))
* add cross-transport data parity tests ([445f1ac](https://github.com/portel-dev/photon/commit/445f1acfdfc93bbb6b9f28f2fb7712ef7ec62ee2))
* add format catalog with data schemas and /api/formats endpoint ([92f5593](https://github.com/portel-dev/photon/commit/92f55931171e93a388d3b7338799ef46093a64ef))
* add photon publish wizard as bundled [@internal](https://github.com/internal) photon ([1653f0b](https://github.com/portel-dev/photon/commit/1653f0bfbd77f7c4507ce7cb51c964a40e2ac59b))
* canvas engine Phase 1 — persistence, interactions, undo ([b39ae0c](https://github.com/portel-dev/photon/commit/b39ae0cbf7a1a0a5515abd1a1b240d5b2b8f34b0))
* canvas Magic Move playback — Keynote-inspired animated transitions ([c2ffb8e](https://github.com/portel-dev/photon/commit/c2ffb8e9abaaaf64d557f66a3bbe346e728dd587))
* canvas Phase 2 — turn-taking, locking, multi-agent colors ([bebe1b7](https://github.com/portel-dev/photon/commit/bebe1b7126ae248aa1426bd1575ca53eba6ab700))
* canvas Phase 3 — AI feedback loop with describe and screenshot ([2b0ad91](https://github.com/portel-dev/photon/commit/2b0ad91429060ae5583f068c95e367fc3edd19a9))
* canvas Phase 4 — custom components and AI-generated HTML ([cc3e4ca](https://github.com/portel-dev/photon/commit/cc3e4ca12793143a70c49f837216e76fdf606b12))
* canvas Phase 5 — export scene graph as standalone photon ([98df0ff](https://github.com/portel-dev/photon/commit/98df0ffa2d567c8af009600366e4c5bdaed65f5b))
* canvas timeline — history, checkpoint, restore, fork ([4932860](https://github.com/portel-dev/photon/commit/4932860352accaab56d73da657d01805a217c55f))
* enforce [@auth](https://github.com/auth) at loader level across all transports ([3b04916](https://github.com/portel-dev/photon/commit/3b04916978a78687861023049d47838a5856210e))
* expand promise test coverage from 23.6% to 40.4% ([b6e004f](https://github.com/portel-dev/photon/commit/b6e004fd60feb0cba6b598e3032ca0a11eb9fd35))
* inject this.formats on every photon instance ([8cae650](https://github.com/portel-dev/photon/commit/8cae650948af80630dc83c897be1a48b12714c60))
* inject toast/log/status/progress/thinking helpers on plain-class photons ([e7e60a6](https://github.com/portel-dev/photon/commit/e7e60a6049251eaa426147107e3f38a9dfe033bb))
* Precision Optics design system — amber accent, new typography, kill glass ([73decbb](https://github.com/portel-dev/photon/commit/73decbbcaff9c739f111c7c765adfb806fb4276b)), closes [#FFB000](https://github.com/portel-dev/photon/issues/FFB000) [#EEF1F5](https://github.com/portel-dev/photon/issues/EEF1F5)
* Prefab-inspired UI enhancements — column pipes, ring, charts, expandable rows, toast bridge ([45385dd](https://github.com/portel-dev/photon/commit/45385dd9bb4b385d2a4fd39c5f09209993276bcf))
* push promise coverage from 40% to 49% (44/89 assertions) ([cc67c5b](https://github.com/portel-dev/photon/commit/cc67c5b2f5448995943e3589b6a9d45a3efe1cfb))
* TSX view files with built-in DOM-based JSX runtime ([7f3d5e7](https://github.com/portel-dev/photon/commit/7f3d5e78ccdfe543e0801930924a41658410e60c))

### Bug Fixes

* __meta audit trail for [@stateful](https://github.com/stateful) plain class methods ([74ea9b6](https://github.com/portel-dev/photon/commit/74ea9b66471281ea51fed320ef51932851aa8ad4))
* [@auth](https://github.com/auth) regex no longer matches [@author](https://github.com/author), [@authorize](https://github.com/authorize), etc. ([4016e9b](https://github.com/portel-dev/photon/commit/4016e9b8b0833c6194610b981ac89f86c6143306))
* activate shell integration in current session via eval ([70b1921](https://github.com/portel-dev/photon/commit/70b19213d3723f48598d83c4fbe45309e7332e4b))
* beam scopes photons to baseDir, respect PHOTON_DIR, fix symlink leak ([86b0a7b](https://github.com/portel-dev/photon/commit/86b0a7b791e7b682a8be799e0c13eef81009e78d))
* canvas timing and auto-resize ([239f548](https://github.com/portel-dev/photon/commit/239f5481c009dabdc07ad1c8ad10344544c85210))
* change default OKLCH preset from Violet to Amber ([48b0b11](https://github.com/portel-dev/photon/commit/48b0b11b56c01e1f8d76a2399655839951daf560))
* emit locks-reset event on daemon startup ([1dbdf74](https://github.com/portel-dev/photon/commit/1dbdf74b2113963a2f9eff8b91e2024d1baeb777))
* graceful daemon shutdown and session lifecycle cleanup ([2847611](https://github.com/portel-dev/photon/commit/28476118eda3d1ce2c1181d84f14ee5349c67b35))
* in-flight request drain before hot-reload and scheduled job persistence ([044c05f](https://github.com/portel-dev/photon/commit/044c05fccb50fbc16a9fe01db3770619a09ac082))
* remove background glow remnant from beam-app ([022019c](https://github.com/portel-dev/photon/commit/022019c753fd41cc7a1a1d0140b011022be7b790))
* replace tsx with plain node for build-beam script ([1604be6](https://github.com/portel-dev/photon/commit/1604be66c1ee1d761b5a84e6e19528a8ca9a51fe))
* strip [photon-loader] prefix from CLI toast output ([c110be3](https://github.com/portel-dev/photon/commit/c110be35f9ce56b20a7cbb2181c957358ec52a5c))
* unknown [@format](https://github.com/format) tags fall back to auto-detection in CLI ([76cab95](https://github.com/portel-dev/photon/commit/76cab955a0cf25f36470dd53bc169989a13fe057))
* worker crash recovery with backoff and read-only client retry ([89b0885](https://github.com/portel-dev/photon/commit/89b08854a82a516fdd411b1c8d88f69070561c8f))

## [1.20.1](https://github.com/portel-dev/photon/compare/v1.20.0...v1.20.1) (2026-04-10)

### Features

* add hideCloseButton property to photon-studio component ([39a4b80](https://github.com/portel-dev/photon/commit/39a4b80d9f290a90bd82754e409e9c3ba7d11a82))
* photon creation flow, MCP config export, and UI refinements ([8098d8f](https://github.com/portel-dev/photon/commit/8098d8f5b0013097e0546c1592a9b17ad057564a))
* wire up pending approvals for deferred elicitations ([6fff785](https://github.com/portel-dev/photon/commit/6fff78544c92e17dcadf9d73af02aee6b59f8459))

### Bug Fixes

* daemon stop→start race condition and worker spawn ceiling timeout ([07d5a35](https://github.com/portel-dev/photon/commit/07d5a35086c55fa3e81f9b18b9ad43e427e4445e))
* emit progress messages during worker initialization phases ([55e748e](https://github.com/portel-dev/photon/commit/55e748e802653849f0b37427c381c00fb7f735c7))
* log stale symlink cleanup during photon discovery ([a40eaea](https://github.com/portel-dev/photon/commit/a40eaea7d24cb3bddbc001304cc689a14d4db996))
* update photon-core to v2.18.1 for broken symlink cleanup ([76dccee](https://github.com/portel-dev/photon/commit/76dccee7c290441e3b7a9aa6d3825b264f148c9f))
* wire hideCloseButton on studio embed and default to source tab ([4f9c5b5](https://github.com/portel-dev/photon/commit/4f9c5b50e0611ebdd4d905421831f70420f40780))
* worker dep resolution during spawn and client retry on connection close ([a242d40](https://github.com/portel-dev/photon/commit/a242d40387620ef2d9210d93769f3b37771240db))

## [1.20.0](https://github.com/portel-dev/photon/compare/v1.19.0...v1.20.0) (2026-04-08)

### Features

* add draggable resize handle to split pane divider ([2661878](https://github.com/portel-dev/photon/commit/26618789e05e06dc69fb05243309e3f2e7746b8b))
* add sidebar resize handle with localStorage persistence ([2c9b8c1](https://github.com/portel-dev/photon/commit/2c9b8c1afb0ba21080fd82466184c0aeeb05b6e1))
* add tab switcher (App / Methods / Log) to main toolbar ([a4d0bf4](https://github.com/portel-dev/photon/commit/a4d0bf434954266148600abfbe8004ee20bc18a1))
* beam UI improvements — sidebar tabs, bridge extensions, app renderer updates ([a0454c4](https://github.com/portel-dev/photon/commit/a0454c4aad41d20700a2ee1f7dae0e425bf9e7ae))
* gate edit controls on photon editability ([951043d](https://github.com/portel-dev/photon/commit/951043dfa2b8a6a00ab6345fd2b8afb4bfbe4eb5))
* merge context-bar into main-toolbar row to eliminate wasted vertical space ([0c9efaa](https://github.com/portel-dev/photon/commit/0c9efaa39b36d533b0dc0f85c92a818a639f6216))
* namespace migration, beam route encoding, forking improvements, and test updates ([1209827](https://github.com/portel-dev/photon/commit/12098272f6cb323bfe561128e0cdd8e104fe91f3))

### Bug Fixes

* add file locking for approvals and audit log to prevent race conditions ([9775b7c](https://github.com/portel-dev/photon/commit/9775b7c05f66f713aa23cb3d5e6843aa52376871))
* add global error handlers and replace silent catch blocks with logging ([7cd8b2c](https://github.com/portel-dev/photon/commit/7cd8b2c67e6a3d2355f43a89c5cc70606cf00ba0))
* app tab fills viewport with no outer scroll or methods hint ([08ded4b](https://github.com/portel-dev/photon/commit/08ded4b7f9306a05b2d47dfcb0eafd39e4b2166f))
* block all studio/edit entry points for non-editable photons ([a4db38c](https://github.com/portel-dev/photon/commit/a4db38c3440f521fc4f84b5bf7d4a800a56956a3))
* cap activity log height so custom apps get their full vertical space ([11e770f](https://github.com/portel-dev/photon/commit/11e770fdecc8a9d59bbe1cb1ef2b6b09f8e5ba3a))
* cap method card grid column width at 380px to prevent overwide cards on large screens ([1ddc189](https://github.com/portel-dev/photon/commit/1ddc18903a98e997ace654c25f34cc6d1bf9f417))
* constrain app tab to available viewport height without outer scroll ([d26660a](https://github.com/portel-dev/photon/commit/d26660a63487da3dfd428853382dd4fb2c6f4ea4))
* fall back to auto-discovery when asset resolvedPath does not exist ([88e4158](https://github.com/portel-dev/photon/commit/88e4158a6aad3fc64cbd05a053ae2fdf2c09e37f))
* guard daemon socket connections against ENOENT on fresh install ([dc006c6](https://github.com/portel-dev/photon/commit/dc006c6327ec4b7902118831279ac4539ae0b23e))
* move toolbars into scroll container, remove negative-margin hack ([6b0bcfa](https://github.com/portel-dev/photon/commit/6b0bcfa5ccb9238508c1eba7d422d5eb29c0b318))
* pin activity log to bottom, eliminate competing scrollbars in main area ([73d058c](https://github.com/portel-dev/photon/commit/73d058c26b77dc62bcd87b3a7ca797f13d00bb9a))
* prevent command injection in marketplace fork/contribute operations ([5ec76ae](https://github.com/portel-dev/photon/commit/5ec76ae6664c1438bf8a276511b6bd1583300e34))
* prevent race conditions in daemon channel iteration, watcher debounce, and worker calls ([bf0f6f4](https://github.com/portel-dev/photon/commit/bf0f6f46bc603611c21978ef4130c19204d81316))
* prevent XSS by replacing innerHTML with safe DOM construction ([7638223](https://github.com/portel-dev/photon/commit/763822314071c5a4906f93d0935e691984a81389))
* reduce double-gap spacing between photon header and anchor nav ([30075a7](https://github.com/portel-dev/photon/commit/30075a70275869646d1a49e7f0c993bbb8377add))
* remove border-radius clipping on app-viewport in app tab mode ([6204e87](https://github.com/portel-dev/photon/commit/6204e873b87210d48fbf61e1628df6096b1d1c09))
* resolve singleton initialization races and clean up leaked timers ([a5066a0](https://github.com/portel-dev/photon/commit/a5066a01e271a639d6b3427e3deb57f3f655b99a))
* restore app sidebar, fill log tab height, fix app renderer flex ([bef4e51](https://github.com/portel-dev/photon/commit/bef4e51678b9199301b065a3f51108affc01d45a))
* restrict CORS to localhost and add CSRF protection on marketplace endpoints ([8212d02](https://github.com/portel-dev/photon/commit/8212d0242c018d616d83483f8998537ca7784995))
* route split pane progress events to the correct panel ([3bf439a](https://github.com/portel-dev/photon/commit/3bf439a17c62c11f2bced4ca475824b68e0664c0))
* set correct mainTab when loading app photon via URL route ([fe9c888](https://github.com/portel-dev/photon/commit/fe9c888c6d231ad5a44544a424c4d46f9a43fa8b))
* use stable calc heights for app tab to prevent resize loop vibration ([732c314](https://github.com/portel-dev/photon/commit/732c3140b91fd127eb01f65598a297949395c5fb))

## [1.19.0](https://github.com/portel-dev/photon/compare/v1.18.0...v1.19.0) (2026-04-05)

### Features

* [@channel](https://github.com/channel) tag — photons as Claude Code channels via capabilities negotiation ([7d02579](https://github.com/portel-dev/photon/commit/7d025798379b97382b1f5cd0721088cc63348b69))
* auto-migration to .data/ layout and version upgrade notifications ([fd00c1e](https://github.com/portel-dev/photon/commit/fd00c1e1779a44fb717e50ab4fad53b4b73079c0))
* channel permission relay and callable channel object ([207ad98](https://github.com/portel-dev/photon/commit/207ad98df7429c49d95d396740717d1a1cd84828))
* client-agnostic channel support via clientInfo name detection ([c791c49](https://github.com/portel-dev/photon/commit/c791c495a907934d1f728f32c7961eb5d5aef8a8))
* elicitation custom message + render('guide') stepper widget ([46aee31](https://github.com/portel-dev/photon/commit/46aee314f6b7492402d013cb7a873e903b11b9f1))
* enhanced slides — moods, themes, backgrounds, responsive sizing ([cff3c47](https://github.com/portel-dev/photon/commit/cff3c4797826f44f3c5ef94f8e88bbb8a3935d76))
* ghost syntax — adaptive near-invisible markdown markers in CLI ([4db5327](https://github.com/portel-dev/photon/commit/4db5327da0e9ebd693c06f9b3f52e11d806b24c8))
* loader resolves and propagates namespace to all photon instances ([9c33073](https://github.com/portel-dev/photon/commit/9c33073cd598a2c938c392e3d07ec2510ba46c46))
* maker init adds .data/ to .gitignore automatically ([42ab05e](https://github.com/portel-dev/photon/commit/42ab05ee9a52d6125059f4e165e3761fab5d9bc8))
* migrate photon runtime to .data/ consolidated data layout ([5e250e1](https://github.com/portel-dev/photon/commit/5e250e1424cee273f295dd71f5cda222255530e8))
* non-blocking version check with changelog highlights ([3a00a98](https://github.com/portel-dev/photon/commit/3a00a988f292b9da815eee5b1cc700b916389114))
* photon add supports qualified names (marketplace/name, owner/repo/name) ([79279d4](https://github.com/portel-dev/photon/commit/79279d49fe375cc274988dad5d9688e4311c449a))
* photon update actually upgrades, photon changelog shows what's new ([52d0445](https://github.com/portel-dev/photon/commit/52d04454da608e69a0b6bb8b9bc2d7b52ad063a4))
* rename push() to channel(), support [@channel](https://github.com/channel) targets ([57326eb](https://github.com/portel-dev/photon/commit/57326eb8f8ed0f609002d865aac1eebe4f996e6c))
* slides phase 6-8 — theme dedup, fonts, text effects ([aacfde0](https://github.com/portel-dev/photon/commit/aacfde09352c55155884de079e502c56ecceb57a))

### Bug Fixes

* [@dependencies](https://github.com/dependencies) parser only matches inside JSDoc blocks ([d79a7a6](https://github.com/portel-dev/photon/commit/d79a7a6f606e923f8e6320b292d9b3b7a8c3120e))
* [@dependencies](https://github.com/dependencies) without version spec silently skipped ([76ce342](https://github.com/portel-dev/photon/commit/76ce342c697cd3a29a46dad5b1ece1bf47fde1b8))
* auto-detect photon directory from cwd when PHOTON_DIR is not set ([1baf8c7](https://github.com/portel-dev/photon/commit/1baf8c7b4fa21f9ce1ff912e4ea360c25bfbe39a))
* auto-install [@photon](https://github.com/photon) transitive dependencies on marketplace install ([4c93593](https://github.com/portel-dev/photon/commit/4c9359358a69ecdae222d510282d09367ddc0dec))
* Beam file watcher ignores runtime data subdirectories ([fd1e846](https://github.com/portel-dev/photon/commit/fd1e8460a07737f8a6bc5677207790aff65461a6))
* bind instance context when capturing emit for channel injection ([6fc5155](https://github.com/portel-dev/photon/commit/6fc5155a4fbffe9950c9a55fc20f098a8edf0abe))
* bridge InProcessBroker to daemon socket subscribers ([6188a8b](https://github.com/portel-dev/photon/commit/6188a8bc5fab96709d017949710f4fc916ccf942))
* bridge slides get background effects, scan lines, theme signatures ([2dbc374](https://github.com/portel-dev/photon/commit/2dbc37417e5a92ba9a8a396e0d55d7a7fa0c7d93))
* CLI auto-restarts stale daemon before running stateful photons ([1abb16f](https://github.com/portel-dev/photon/commit/1abb16ffc85cae35c36a6e5066be8d2f0b564ff3))
* confirm dialog dark theme fallbacks, sidebar refresh after delete ([8d43274](https://github.com/portel-dev/photon/commit/8d432746ad3abd7869b607792e60887585403ffc))
* confirm dialog renders inside beam-app shadow root for theme tokens ([9c86f77](https://github.com/portel-dev/photon/commit/9c86f77fb5016b4fbe452e6aa4f8f243ef65fa6d))
* cwd with .photon.ts files takes priority over stale PHOTON_DIR ([4a05707](https://github.com/portel-dev/photon/commit/4a0570716f6164f33d2ad5bdf0848c2561e166a5))
* don't inject into README when markers are removed ([1339243](https://github.com/portel-dev/photon/commit/13392436263893371f42d58d12d1eecdf493364d))
* extract class-level JSDoc for channel instructions, not first comment in file ([7a4b63b](https://github.com/portel-dev/photon/commit/7a4b63b32a13b8d5e985be9e57867a71284b730d))
* file watcher skips .data/ entirely and only reloads on ui/ changes ([ced7660](https://github.com/portel-dev/photon/commit/ced76603f3e90aeed272613ca2732699e3691868))
* force chalk truecolor on TTY, enabling proper ghost RGB colors ([ae3a3ed](https://github.com/portel-dev/photon/commit/ae3a3edfec364e377b666c10fb321c5067b1d1f5))
* ghost bypasses chalk with raw ANSI escapes ([8136187](https://github.com/portel-dev/photon/commit/8136187488d3dcf86504e8196f7a12b195ac4094))
* ghost color uses ANSI 256 instead of truecolor RGB ([71af1d1](https://github.com/portel-dev/photon/commit/71af1d1bb8aa10d7e2150978ee5e1f32f8df23a3))
* ghost color uses chalk.dim.gray for universal terminal support ([58162a4](https://github.com/portel-dev/photon/commit/58162a4f075c526180e9d9dbab6a90e5cfa85875))
* ghost forces chalk.level inside function call ([fe672b8](https://github.com/portel-dev/photon/commit/fe672b8e6879688110dbf39cf8c184480f5ccf19))
* ghost strips markdown syntax instead of ANSI tricks ([9c2dedc](https://github.com/portel-dev/photon/commit/9c2dedcd0a6bd916550ff94ba8bce1619e352c2e))
* ghost syntax handles bold+link combo and ordering ([4893102](https://github.com/portel-dev/photon/commit/489310204cc5fbfb0106fe037d84cc50689cbf69))
* ghost TTY detection checks TERM env as fallback for bun ([b1c547d](https://github.com/portel-dev/photon/commit/b1c547da70955fec64c719649f0cdc98f5b70fb7))
* ghost uses ANSI hidden attribute for truly invisible syntax ([5bb817d](https://github.com/portel-dev/photon/commit/5bb817d0f84e609a110df2fe7989dfbef74859bb))
* ghost uses chalk.gray (basic ANSI) — no truecolor dependency ([4f13a0c](https://github.com/portel-dev/photon/commit/4f13a0c094a0e3ede5cce31e9009f687cca6687c))
* ghost uses String.fromCharCode(27) for ESC to avoid stripping ([2a3fd17](https://github.com/portel-dev/photon/commit/2a3fd17037afd7b079dff103112d4f94d2cda720))
* handle global install failures gracefully in pre-release check ([0924b54](https://github.com/portel-dev/photon/commit/0924b546a85e6ab6da5bba9279f610fa4056496e))
* light slide themes (editorial, swiss) apply bg to viewport too ([76e28ca](https://github.com/portel-dev/photon/commit/76e28ca8b738961972de81721eadc611beeff225))
* loader dependency cache uses .data/.cache/dependencies/ ([808a6d3](https://github.com/portel-dev/photon/commit/808a6d3197442a99778a72010da55c818a397207))
* markdown array CLI output now uses ghost syntax rendering ([428a7c3](https://github.com/portel-dev/photon/commit/428a7c367a9f6261e9c3f05f303ba99e6aea936a))
* MCP Streamable HTTP compatibility for llama.cpp and modern clients ([dffde7d](https://github.com/portel-dev/photon/commit/dffde7dbe0f9b982878ee1080774e7c950aee4ee))
* mood entrance animations + more visible gradient-mesh drift ([526b695](https://github.com/portel-dev/photon/commit/526b69514cbf507b16d9daa142fed9c892676f66))
* namespace channel-push events with photon name for daemon routing ([ced8c51](https://github.com/portel-dev/photon/commit/ced8c5134507fe4aa130176130e47e839ec5428e))
* pass baseDir to MemoryProvider so memory reads from correct directory ([79b6419](https://github.com/portel-dev/photon/commit/79b64199378bfab954ff4c89f9143a7fbb033cf0))
* PHOTON_DIR respected across all CLI commands and entry points ([10d5b2d](https://github.com/portel-dev/photon/commit/10d5b2d622bc49fd0e194993c9e72c2f6aca03a3))
* retry dep install on 'require is not defined' error ([4f86434](https://github.com/portel-dev/photon/commit/4f86434c64dc56460004bb61caafdaf95b40b989))
* route channel push through daemon pub/sub, not direct handler injection ([51f1723](https://github.com/portel-dev/photon/commit/51f172379840d5de28b0c2042ead900c319208b7))
* route channel push through daemon pub/sub, skip daemon subscription in channel mode ([cfbe005](https://github.com/portel-dev/photon/commit/cfbe005d116786c27eb1979b37a646bffd619a8f))
* run channel photons in-process, skip daemon to avoid poll conflicts ([95c308c](https://github.com/portel-dev/photon/commit/95c308c1d4bd0e38c394a81b0640b1fecd44aee4))
* simplify ghost to chalk.gray — relies on chalk.level = 1 at import ([c14ee0b](https://github.com/portel-dev/photon/commit/c14ee0b2d3c3d832a56c8bff72909d278af65bc3))
* simplify watcher — .data/ filter is sufficient now that storage() is fixed ([acd74ac](https://github.com/portel-dev/photon/commit/acd74acc41ce6a82534c6b9d1340a7a95a5855f2))
* slide children hidden until stagger applies data-enter ([8597d57](https://github.com/portel-dev/photon/commit/8597d575b6ced2aa26ea8a8520df347928d15ba0))
* slim update notice, on-demand changelog via photon update --changelog ([8154873](https://github.com/portel-dev/photon/commit/815487355d98f8a76ca104e08c62af7eca5663fc))
* stagger fallback reveals slide content after 1.5s timeout ([fc857ab](https://github.com/portel-dev/photon/commit/fc857abc8aa63916d3e55b8253b39e039cd4917c))
* text effects (typing, scramble, wave, fly-in) work in bridge iframe ([a9ffef1](https://github.com/portel-dev/photon/commit/a9ffef10c58b647c2b2f84538fa3de555ecfeb5a))
* tolerate semver range prefix in photon-core version comparison ([4f55784](https://github.com/portel-dev/photon/commit/4f55784478c29abc12ad7276a9da7987fec36743))
* unset PHOTON_DIR after fresh install simulation in pre-release check ([d618c06](https://github.com/portel-dev/photon/commit/d618c0627a93d660adebc58ddf81cfa2041bd278))
* untrack test fixture data files, gitignore tests/**/.data/ ([1f2ec8e](https://github.com/portel-dev/photon/commit/1f2ec8eb422dfe6d3dd5ae2c2c77384a1344ad46))
* update tests for Streamable HTTP transport ([6d8f37a](https://github.com/portel-dev/photon/commit/6d8f37a62553dcd54ca0dfd25dd255943851e89d))
* use absolute tarball path in global install test, stop cd-ing ([847792e](https://github.com/portel-dev/photon/commit/847792e33c14015b831564e64bad1df6ae8bbbfd))
* use photon basename for channel server name, not raw CLI argument ([5d1b66b](https://github.com/portel-dev/photon/commit/5d1b66beaaffbc98c6e6ac559fc084718a5dff68))
* wait for auto-connect before activating channel polling, skip daemon subscription in channel mode ([9fa9d3c](https://github.com/portel-dev/photon/commit/9fa9d3c2eb9b97703157f56e04d8ee5760f3376e))

## [1.18.0](https://github.com/portel-dev/photon/compare/v1.17.6...v1.18.0) (2026-04-01)

### Features

* [@format](https://github.com/format) magazine — markdown-powered multi-column layout ([2fb8ce0](https://github.com/portel-dev/photon/commit/2fb8ce08bd753b30b32be21ad5125a1fd453ae85))
* markdown string[] renders as tabbed results instead of wall of text ([e1624c6](https://github.com/portel-dev/photon/commit/e1624c67d58121f7d42bc2193533fbad9ec0a5f4))
* MCP Tasks spec compliance (2025-11-25) ([dc7de8c](https://github.com/portel-dev/photon/commit/dc7de8ceb033c669940e80101002ebcfee2fd408))
* test runner with failure summary ([90539eb](https://github.com/portel-dev/photon/commit/90539eb0e79198df8bfa13bf06db7ccc9cf686d9))

### Bug Fixes

* build script calls eslint directly instead of npm run lint ([b3d14ef](https://github.com/portel-dev/photon/commit/b3d14efec1886a5c4724dc1f48c331dc5dd6ece7))
* dashboard mini-list table — reduce gap, smaller font, no truncation ([3f13640](https://github.com/portel-dev/photon/commit/3f13640e143bfcf43603f44b1ba97bb1f19d14ae))
* dashboard mini-list uses proper HTML table for auto column sizing ([aecc81b](https://github.com/portel-dev/photon/commit/aecc81b22533eb8f6c85a46022e87c481ab13c1e))
* dashboard panel alignment — metrics centered, tables full-width ([6f127fd](https://github.com/portel-dev/photon/commit/6f127fd9eb0b9a21c157f6f1080a2424fcf39257))
* indeterminate progress bar for status emits and markdown tab rendering ([8d5f4be](https://github.com/portel-dev/photon/commit/8d5f4be8dd811d1eb6d5af47790e70400a3d00f8))
* magazine images float within column flow instead of stacking above ([1c67dc5](https://github.com/portel-dev/photon/commit/1c67dc5174cc4975d695d550f2b27df2a36fc365))
* magazine layout column gap caused by h2 column-span ([8b3dad8](https://github.com/portel-dev/photon/commit/8b3dad8cad38a4eaa454890e266cc7ff8f9378ed))
* markdown array rendering — correct count, full render, CLI support ([43b4071](https://github.com/portel-dev/photon/commit/43b4071e7147bb84135480b5b9e8a5b2a5633c6a))
* markdown array renders as stacked list instead of tabs ([9c5d588](https://github.com/portel-dev/photon/commit/9c5d5882ca1bd9275e593569a6cf8aff0e7886cf))
* markdown tabs use simple numbered circles instead of truncated titles ([39ef1a6](https://github.com/portel-dev/photon/commit/39ef1a6ab89bf25d135049bc1f4c44fc8ea39728))
* only reinstall deps when [@dependencies](https://github.com/dependencies) change, not on every source edit ([6bea517](https://github.com/portel-dev/photon/commit/6bea517612f043256270e323e9a4bd9fc06a3717))
* persist remember-values and verbose-logging toggles from panel menu ([a06ec8a](https://github.com/portel-dev/photon/commit/a06ec8a08d7c0d4631dd0fd36d6b7740dabda842))
* photon removal moves to trash instead of permanent deletion ([7ae7d00](https://github.com/portel-dev/photon/commit/7ae7d00d933abf116aa68fbcd0ece82e9663f667))
* test runner uses bun for faster execution ([ea1610b](https://github.com/portel-dev/photon/commit/ea1610b62708fb17f1b43c5465b373e14ee54d86))
* test runner uses bunx for vitest and bun test for node:test suites ([3e87a0e](https://github.com/portel-dev/photon/commit/3e87a0e0a426989f3ca8102b0379adb455ccd45b))
* update photon-core to 2.17.6 (magazine format recognition) ([ae0686a](https://github.com/portel-dev/photon/commit/ae0686ac8b15b86f8e40e729845b0e39c3bcd905))

## [1.17.6](https://github.com/portel-dev/photon/compare/v1.17.5...v1.17.6) (2026-03-31)

### Bug Fixes

* update photon-core to 2.17.5 (bun trust after install) ([fb35511](https://github.com/portel-dev/photon/commit/fb35511915ac27565aaaf5f0ef24539b86739287))

## [1.17.5](https://github.com/portel-dev/photon/compare/v1.17.4...v1.17.5) (2026-03-31)

### Bug Fixes

* update photon-core to 2.17.4 (bun --production/--trust incompatibility) ([1b72504](https://github.com/portel-dev/photon/commit/1b72504df5921cbe5ed2f8d5fda2fc1b3a75c80c))

## [1.17.4](https://github.com/portel-dev/photon/compare/v1.17.3...v1.17.4) (2026-03-31)

### Bug Fixes

* 6 Beam UI bugs found on bun-only machine testing ([23c7d5d](https://github.com/portel-dev/photon/commit/23c7d5db9f780084c4be14294a8f9bbdeb57dfed))
* scrollbar spacing — thinner, translucent, doesn't crowd content ([31df543](https://github.com/portel-dev/photon/commit/31df54392f9205b567a64ad0ed9d7b0ab9ab9c9c))
* update photon-core to 2.17.3 (auto-trust bun postinstall scripts) ([82ac3cd](https://github.com/portel-dev/photon/commit/82ac3cd330807b8771ce9616aee3413570ab82ee))

## [1.17.3](https://github.com/portel-dev/photon/compare/v1.17.2...v1.17.3) (2026-03-30)

### Bug Fixes

* add global install smoke test to pre-release check ([5abf61b](https://github.com/portel-dev/photon/commit/5abf61bd940a9e0c005ae93e7a82b37a77be6617))
* replace all native confirm() dialogs with themed modal ([c01e70e](https://github.com/portel-dev/photon/commit/c01e70ea844a511c8a61b85b1555390f55bca61a))
* update photon-core to 2.17.2 (bun dependency install + format whitelist) ([bc51aef](https://github.com/portel-dev/photon/commit/bc51aef92fdb5856b6edb1895d3377ec2a6ef79e))

## [1.17.2](https://github.com/portel-dev/photon/compare/v1.17.1...v1.17.2) (2026-03-30)

### Bug Fixes

* resolve symlinks in CLI launcher for bun global install ([b705a7d](https://github.com/portel-dev/photon/commit/b705a7d79d64350eb9f507e52fba2795bbea9eaa))

## [1.17.1](https://github.com/portel-dev/photon/compare/v1.17.0...v1.17.1) (2026-03-30)

### Bug Fixes

* CLI launcher works with bun global install (no node required) ([c49608c](https://github.com/portel-dev/photon/commit/c49608c013931df09f482da150f6e5aa9d6fb105))

## [1.17.0](https://github.com/portel-dev/photon/compare/v1.16.1...v1.17.0) (2026-03-30)

### Features

* .photon.md support — markdown with live data-method embeds ([bc79bab](https://github.com/portel-dev/photon/commit/bc79bab0025691602e96a8565c3f642b8956c5c6))
* [@format](https://github.com/format) article with Pretext text layout engine integration ([53bce33](https://github.com/portel-dev/photon/commit/53bce331fcc2337533d40f0533a6aac154e2fa16))
* [@format](https://github.com/format) checklist with interactive UI and motion system enhancements ([1ace2ea](https://github.com/portel-dev/photon/commit/1ace2eab417bc5b3335ca751341f79f752d8ad3b))
* optimized file I/O with Bun.file() / Bun.write() when available ([066b3ca](https://github.com/portel-dev/photon/commit/066b3cab56fb1139195eefca0059f4b3a6ac0c6c))
* Pretext-powered slide scaling and .photon.md fluid layout styles ([b31b577](https://github.com/portel-dev/photon/commit/b31b5774bf4ba67b29e1fab261896888e9da9354))
* runtime-safe file watching, health monitoring, and memory cleanup ([dab5028](https://github.com/portel-dev/photon/commit/dab5028b134d91836e808261982158ec67b0f3bb)), closes [bun#27667](https://github.com/portel-dev/bun/issues/27667)
* transitive [@photon](https://github.com/photon) dependency install and [@ui](https://github.com/ui) asset download ([c985d98](https://github.com/portel-dev/photon/commit/c985d986cab2113ab808a270e6ff6e31a9f92bec))

### Bug Fixes

* bridge checklist renderer polished to match Lit version ([56d39b9](https://github.com/portel-dev/photon/commit/56d39b917a43fc7885bba65115b5c632f5206afc))
* checklist and article visual polish from UI audit ([3c80262](https://github.com/portel-dev/photon/commit/3c802629a43f2afe6defbcbf838a4ad35c6118f3))
* checklist callback persistence and todo photon state ([ff3820f](https://github.com/portel-dev/photon/commit/ff3820f6b33f1a2798cd41fd3ac917707b7bbbb8))
* design review findings — checklist a11y, editorial columns, article routing ([00034ca](https://github.com/portel-dev/photon/commit/00034ca8b03ec92c1f1c325d34e77ef5f8b93a5e))
* hide Cancel button on parameterless methods ([568baef](https://github.com/portel-dev/photon/commit/568baefb85f55f654de8b29c78cedad40f43f9a8))
* improve slides layout for projection readability ([c604d8f](https://github.com/portel-dev/photon/commit/c604d8f3dfdb9b8b4602938d94415e9534be6e4a))
* polish checklist UI to commercial quality ([7102f6c](https://github.com/portel-dev/photon/commit/7102f6c3e49b7b9dd21d5d831e186da783e96c2d))
* remove "Result" label noise above format renderers ([bfa3e9b](https://github.com/portel-dev/photon/commit/bfa3e9bcb4a4d6366e036e9875c8fb11d7f8bb68))
* scope [@stateful](https://github.com/stateful) and [@auth](https://github.com/auth) detection to class-level JSDoc block ([4cbc94a](https://github.com/portel-dev/photon/commit/4cbc94a8a38b6a22ed601a16998d48c779d1651a))
* sidebar warmth animation was hiding items via opacity: 0 ([ec322d7](https://github.com/portel-dev/photon/commit/ec322d75f97259e4aa141853d1825f97e8f54c8b))
* steps connector line should be green based on previous step status ([76b5ebb](https://github.com/portel-dev/photon/commit/76b5ebb8589de9d79656f0a71df874330db71a44))
* steps renderer clipping last step on narrow viewports ([bd7b055](https://github.com/portel-dev/photon/commit/bd7b05522e4b4cabc74f2dc37ad52a16fd58927a))

## [1.16.0](https://github.com/portel-dev/photon/compare/v1.14.0...v1.16.0) (2026-03-27)

### Features

* _meta system parameter namespace for format, fields, viewport, locale ([433d9aa](https://github.com/portel-dev/photon/commit/433d9aa18f5a85604e231140475fb64f01020965))
* add AI-powered visual test suite using lookout photon ([caf6f5a](https://github.com/portel-dev/photon/commit/caf6f5ae8fc215c119ddcb20b264e9f353b75217))
* add bundled slides photon and improve [@format](https://github.com/format) slides renderer ([1a9df3e](https://github.com/portel-dev/photon/commit/1a9df3efccb9fb24e406660f3cec123e1243e98d))
* add contract tests — schema, format coverage, DOM regression ([60649dc](https://github.com/portel-dev/photon/commit/60649dca5244ddc6b499d292d78b9a656d2c933d))
* add docs photon — markdown document editor with page-aware preview ([be393bb](https://github.com/portel-dev/photon/commit/be393bb153c6139d8709aaa8d3163111cf112206))
* add isolated view modes for form and result rendering ([f8c0c0e](https://github.com/portel-dev/photon/commit/f8c0c0e586cf7ae647205aa3a50d4d2c03f4d2e7))
* add Keynote-style transitions and motion effects to slides UI ([387f231](https://github.com/portel-dev/photon/commit/387f231dc47426833e6a0e01f7319201f8b91c43))
* add promise validation as pre-release gate (step 8) ([cd8b56e](https://github.com/portel-dev/photon/commit/cd8b56e95ffc86695307c7ccd5c857eea3dc8674))
* add promise validation suite (test:promises) ([78724c6](https://github.com/portel-dev/photon/commit/78724c683c8b902e127f962a0b6adc2fc225d93f))
* add universal motion primitives for Beam UI ([01aefec](https://github.com/portel-dev/photon/commit/01aefece635971793e06d5e9746b733203cabe43))
* auto-confirm [@destructive](https://github.com/destructive) methods via Beam elicitation modal ([921e5a8](https://github.com/portel-dev/photon/commit/921e5a8ddab4dd4d1197393234ef2e0104a14901))
* bridge-powered slide iframes with streaming render event pipeline ([238e0db](https://github.com/portel-dev/photon/commit/238e0db6345e68626e691e481d68ed69deca524c))
* bundle spreadsheet photon as first-party ([6bd087b](https://github.com/portel-dev/photon/commit/6bd087b7767fb89c466469a374ab40208f484654))
* disambiguate duplicate photon names with marketplace suffix ([5f3697f](https://github.com/portel-dev/photon/commit/5f3697f9cac8257e0a9e548062b463ef98a14924))
* form embeds use pure-view with invoke-form bundle (no beam-app chrome) ([b1599a3](https://github.com/portel-dev/photon/commit/b1599a3e9cd4b6b9797772ef7f430b6bebfb0c9b))
* integrate universal motion system across all Beam touch points ([a264716](https://github.com/portel-dev/photon/commit/a264716abd5404db35f162c4c30bee3809a3de2c))
* Keynote-style presentation UI with transition picker ([a2d6cac](https://github.com/portel-dev/photon/commit/a2d6cace2d4aa668ddf59d5ec85aec13ca5f84d2))
* pre-render pipeline for flicker-free slide navigation ([5f2fb87](https://github.com/portel-dev/photon/commit/5f2fb87d64114722092c6ec68da3809cc3d3d7e2))
* pure view architecture — bridge-powered embeddable views ([a0e72a1](https://github.com/portel-dev/photon/commit/a0e72a10f827117e9ff0510494fa0beeab8d4df2)), closes [#slide-N](https://github.com/portel-dev/photon/issues/slide-N)
* rebuild slides photon from arul-photons base ([16e8bed](https://github.com/portel-dev/photon/commit/16e8beda1c0758693a4055fb39f2ecadd7804229))
* reveal.js-style fixed canvas scaling for slides ([85ce9b3](https://github.com/portel-dev/photon/commit/85ce9b352401b973c2907f011963c993be5b102a))
* slide layout utility CSS classes in bridge iframe ([ebaa312](https://github.com/portel-dev/photon/commit/ebaa312ee7d477ac3cde0401b27c18f26ea65e46))
* slide vertical layout — title slides centered, content slides distributed ([9e81104](https://github.com/portel-dev/photon/commit/9e81104fc9965075fa05e7abb94daafece4e03f4))
* slides inherit visual identity from MCP host theme ([7f46f91](https://github.com/portel-dev/photon/commit/7f46f91bba21e78e73e5ea1753d68631966dfd8e)), closes [#1a1a2e](https://github.com/portel-dev/photon/issues/1a1a2e) [#e5e5e5](https://github.com/portel-dev/photon/issues/e5e5e5) [#7dd3fc](https://github.com/portel-dev/photon/issues/7dd3fc)
* support private GitHub repos in marketplace ([2882e50](https://github.com/portel-dev/photon/commit/2882e50a9652cb89f6dbe5bb1c7f073ef9c18661))

### Bug Fixes

* add design system CSS variables to pure-view form mode ([d678a5b](https://github.com/portel-dev/photon/commit/d678a5b1950d662124669d074359674b18d64f41))
* add tooltip to truncated marketplace card descriptions ([a425b59](https://github.com/portel-dev/photon/commit/a425b59e7498ec12de66116c4b44d741fb205f28))
* anchor title at top, distribute content below with space-evenly ([12d8f5e](https://github.com/portel-dev/photon/commit/12d8f5e43b43b0af5e6b27a9ab651c452bae53f8))
* apply daemon state patches to Beam's local instance for cross-client sync ([2e88785](https://github.com/portel-dev/photon/commit/2e8878574158a69b9464a181d2eca1f6406836a6))
* asset scanner scans entire photon folder, install strips name prefix ([0553616](https://github.com/portel-dev/photon/commit/05536166513f7cec9211e413fdaea72284b41270))
* auto-scale content to fill viewport in view=result/form mode ([05f0007](https://github.com/portel-dev/photon/commit/05f000724510ddc17537d50441355037fd8bcfd8))
* auto-scale for bridge iframe + title alignment + controls height ([32d9249](https://github.com/portel-dev/photon/commit/32d92494bdd57911a5faa411bf73992b67d35dee))
* auto-scale works with bridge iframe, header/footer inside iframe ([bacb399](https://github.com/portel-dev/photon/commit/bacb399eebfcc3bfb38c8e1f49738479602a0a3f))
* bridge auto-form uses text input for dates (native date picker doesn't scale with CSS zoom) ([a5fe54e](https://github.com/portel-dev/photon/commit/a5fe54eb9453a80bfca93b6de31fb6173bb4d7cf))
* bridge streaming — dispatch photon:result to eventListeners ([0b3842c](https://github.com/portel-dev/photon/commit/0b3842ce89187fb9cc09dd8530dd1d2b667135c2))
* CLI [@format](https://github.com/format) qr now works with plain string results ([53edf71](https://github.com/portel-dev/photon/commit/53edf7165072ebee08a10766aa86d187baf7358c))
* clip emoji icon fallback text in sidebar ([0852cee](https://github.com/portel-dev/photon/commit/0852cee24e87a0392bed05f87c3cb2fc0be61683))
* consistent error formatting across transports and CLI marketplace access ([a163a5e](https://github.com/portel-dev/photon/commit/a163a5ea03b8f8a8bceb6f33f65dc3ef55b17f0c))
* correct [@ui](https://github.com/ui) asset path for slides photon ([244dc9e](https://github.com/portel-dev/photon/commit/244dc9e8a8ef7b5ffecbb384066ddbbd4aae80e2))
* doc extractor detects sync methods, not just async ([0cdfd33](https://github.com/portel-dev/photon/commit/0cdfd3317fa5d9cb8497a7cc18094e5179a650ad))
* eliminate slide size jump with visibility toggle ([eb18872](https://github.com/portel-dev/photon/commit/eb18872f082523c4f1003c240d88e174da736704))
* eliminate slides size-jump and gauge overflow in presentations ([3f3b4fb](https://github.com/portel-dev/photon/commit/3f3b4fbd9a60031217f37f622f31b4ddb6e026c7))
* embed scaling, chrome flash, form height, and gauge navigation in slides ([12c8185](https://github.com/portel-dev/photon/commit/12c8185afde45561d3f6239df666b1fa41eac15d))
* extract [@ui](https://github.com/ui) linkedUi from source when loader assets are empty ([46e5502](https://github.com/portel-dev/photon/commit/46e5502202ca91d5227a49c7be6004243a82460b))
* form CSS uses theme tokens instead of hardcoded colors ([270fb88](https://github.com/portel-dev/photon/commit/270fb88ad3a5af6e80d21ce9755f7e6c5bdec8ab))
* form embed white flash and chart overflow in slides ([24f4e75](https://github.com/portel-dev/photon/commit/24f4e754b114bb3141faca4c34b49b56a91e0281)), closes [#111318](https://github.com/portel-dev/photon/issues/111318) [#111318](https://github.com/portel-dev/photon/issues/111318)
* form embed white flash and chart sizing ([7954c7f](https://github.com/portel-dev/photon/commit/7954c7f4a53a60913745e43d47efad75b71189f4)), closes [#pure-view](https://github.com/portel-dev/photon/issues/pure-view) [#111318](https://github.com/portel-dev/photon/issues/111318)
* form embeds use full Beam invoke-form with custom components ([4b22188](https://github.com/portel-dev/photon/commit/4b22188b1cb54a823dd0dd2cda8ee1ef30ea0342))
* global keyboard navigation and chart DPR for crisp rendering ([0651600](https://github.com/portel-dev/photon/commit/0651600c7597d932f9d97aa157794e123f47ca9f))
* hide native scrollbars in slide canvas and pure-view ([61ede16](https://github.com/portel-dev/photon/commit/61ede16eb0f56ec25304fd50bbb7b3e90a22c1a6))
* iframe background transparency and code block label styling ([eca2f4b](https://github.com/portel-dev/photon/commit/eca2f4b080af7b5cbf2e21b96c3cf50628872df0))
* iframe fills viewport edge-to-edge, no background mismatch ([8b228b1](https://github.com/portel-dev/photon/commit/8b228b16cdca6e7ae16a10dd5bfeb1fe10ec8419))
* improve embed container layout for slides ([fdb1bb5](https://github.com/portel-dev/photon/commit/fdb1bb5943e3d520bcf80a9dfdc813007564ebf2))
* inline code blocks in bridge iframe instead of lazy-loading placeholders ([a762eab](https://github.com/portel-dev/photon/commit/a762eab7ea25f1e7e7496019fb079532e6aa5d6f))
* invoke-form renders fields only, chrome is beam-app's wrapper ([a0b9ba8](https://github.com/portel-dev/photon/commit/a0b9ba8fa20cfaa82fb9b22d491783cc1bc32b3c))
* marketplace card layout, built-in install path, and remove button ([02b6969](https://github.com/portel-dev/photon/commit/02b696900a895c15827a62b3f1bb8730209bcb79))
* marketplace route clears stale photon state, h key updates URL ([536dfd1](https://github.com/portel-dev/photon/commit/536dfd1589a4fa734c80d5d2bb73a93d83082159))
* position slide controls inside viewport for proper clipping ([9821a27](https://github.com/portel-dev/photon/commit/9821a277e07dfaf2de1e4f3ba16759dc08738492))
* pre-render pipeline improvements and slide rendering fixes ([4cf898a](https://github.com/portel-dev/photon/commit/4cf898a016294047367635ad01feb7cb8e0682f7))
* prefer bun over npm for dependency installation ([e8c09b4](https://github.com/portel-dev/photon/commit/e8c09b40a2d1e2c379e959cd55e34433e5700654))
* prevent activity log error messages from being clipped ([b66a6e4](https://github.com/portel-dev/photon/commit/b66a6e48d505bbd7cb863fd6e540c53ac235b9ec))
* prevent multiple daemon instances via cross-process startup lock ([cb9741e](https://github.com/portel-dev/photon/commit/cb9741e3f04735492ffabb18700ff624bed7658e))
* prevent split pane panels from being clipped at viewport edge ([df62fc7](https://github.com/portel-dev/photon/commit/df62fc7e11408e275f28a5aece2e5e736dcf1457))
* prevent toast notifications from overlapping each other ([e292f52](https://github.com/portel-dev/photon/commit/e292f522d65eb064d59913e85fa7e7f575a734d4))
* re-scale slides on fullscreen toggle, use view=form for embeds ([223105d](https://github.com/portel-dev/photon/commit/223105d5a6213001c03e591196d3660c15e0b93a))
* reliable auto-scale on slide navigation ([5d21f56](https://github.com/portel-dev/photon/commit/5d21f56081e45690ec6950bdb9870f87beb9cfaf))
* reload daemon on hot-reload and block auto-invoke for [@destructive](https://github.com/destructive) methods ([3330027](https://github.com/portel-dev/photon/commit/33300279e513ef3a9e9be79869fbbda785e86b7b))
* remove max scale cap — text is vector, scales cleanly at any factor ([5f2952f](https://github.com/portel-dev/photon/commit/5f2952fcaf2f0e71cb722ac4367482492380561c))
* rename photon-examples marketplace tag to examples ([80c04b9](https://github.com/portel-dev/photon/commit/80c04b94f42f7614c168aa30e2ac9137ba3f6b9e))
* result-viewer renders pure content by default, chrome is beam-app's wrapper ([1985032](https://github.com/portel-dev/photon/commit/1985032e2682e45ab9536ca715266f5460e490f3))
* revert to transform:scale with GPU compositing for crisp rendering ([b9d8f65](https://github.com/portel-dev/photon/commit/b9d8f65f286ba802e25a7d5d5a10d6b1e4eda85a))
* scale all slide content uniformly using CSS zoom ([73437af](https://github.com/portel-dev/photon/commit/73437af0a835b2a082f3158c2f47d98ab3eff218))
* scan assets/ subdirectory and include icon in search API ([96208b7](https://github.com/portel-dev/photon/commit/96208b7a084ffeeb6bdc8a4f60f0ad7971fb1e72))
* show methods for internal photons (maker, marketplace) in Beam UI ([ed4dcee](https://github.com/portel-dev/photon/commit/ed4dceefec7a065c56cfe7b76c376339a7e68573))
* skip result chrome for slides/app, hide hamburger in embeds ([e1637d9](https://github.com/portel-dev/photon/commit/e1637d90fc1bafedd9446ce6139fe3e7658a2e8a))
* slide blurriness during navigation and form embed chrome flash ([e3892f2](https://github.com/portel-dev/photon/commit/e3892f2c58d1a038bc77694341e00b7aa7a6aa3a))
* slide controls only appear on hover near bottom edge ([51cc449](https://github.com/portel-dev/photon/commit/51cc449ce84d293f7ee594616d04e83de8497108))
* slide embeds default to view=result, aggressive chrome stripping ([b78b504](https://github.com/portel-dev/photon/commit/b78b504aa304ab2d20c21afa4120b4cf91294b71))
* slide iframe layout, background, and syntax highlighting ([d5df15e](https://github.com/portel-dev/photon/commit/d5df15e77bd48f45545a80fed19d341c2dce3271))
* slide iframe sizing — fill viewport and center content ([168facc](https://github.com/portel-dev/photon/commit/168facc9cdd9ff59f0840337d3814ee0b32ae855))
* slide rendering — prevent blurry text and form embed chrome flash ([6e59f4b](https://github.com/portel-dev/photon/commit/6e59f4b84aa4f78a8d2de438df978cb6135b7ae5))
* slide rendering — remove GPU hints causing blur, fix form embed visibility and chart overflow ([edcaade](https://github.com/portel-dev/photon/commit/edcaade5d97854476d5c5decb4b70400639ad8d1))
* slides controls only appear on bottom-edge hover ([bff2a1e](https://github.com/portel-dev/photon/commit/bff2a1e2d6bd74f9f00f8a0ee7bff7e02b259189))
* slides lifecycle — this.layout was undefined, use outputFormat ([1fb16f0](https://github.com/portel-dev/photon/commit/1fb16f0669f38a7987ba73fc40caa95bb2348e83))
* slides pre-render measurement, replace emojis with SVG icons ([ffe2d15](https://github.com/portel-dev/photon/commit/ffe2d15fa522fac0d6bc45aa07bda0588c23e1e6))
* slides themes use Beam CSS variables instead of hardcoded colors ([e76dcb0](https://github.com/portel-dev/photon/commit/e76dcb01a25741f322459bc42bd46e5c1e1d6916))
* subscribe to state-changed events for dynamically discovered photons ([228d07d](https://github.com/portel-dev/photon/commit/228d07d32ca49da8a45517106333a8db6af51e3b))
* sync Beam's local instance from daemon state and add warmth on state-changed ([7bd2472](https://github.com/portel-dev/photon/commit/7bd24726599b2a2003cc5c6eccd9435d531cb1ce))
* syntax highlighting for inline HTML code blocks, gauge thrashing ([4b28f1f](https://github.com/portel-dev/photon/commit/4b28f1f5457f0367348dbdb5527989376a0159d0))
* tighter slide layout + 1280x720 canvas to prevent blurry upscaling ([ed03a7d](https://github.com/portel-dev/photon/commit/ed03a7d5e26391bde2ea32ea96427a6a36a81cf6))
* update smoke test assertions for flat install paths ([f2f389d](https://github.com/portel-dev/photon/commit/f2f389d873fc1b1225a64db09b22e26945d00f1e))
* use CSS zoom instead of transform:scale for crisp text rendering ([977f7ae](https://github.com/portel-dev/photon/commit/977f7aed8bd972b4d3f24b31cef5effa78f8e0ee))
* use space-evenly for content slide layout ([516bc1d](https://github.com/portel-dev/photon/commit/516bc1dfee5aed8ae8e9ae3a5b88c4912dbc9574))
* use transform:scale instead of CSS zoom for iframe auto-scaling ([ff234bc](https://github.com/portel-dev/photon/commit/ff234bc35e9677a994bd09e48e26652e49df8e15))
* validate required parameters before tool execution ([162a82c](https://github.com/portel-dev/photon/commit/162a82c2257ce13b0009af071485d1aa64408090))
* view-mode embed scaling and complete chrome stripping ([9e80808](https://github.com/portel-dev/photon/commit/9e8080809e05589afb388cfe3031b18b34fd4d2c))
* zero padding on fullscreen bridge iframe, responsive body padding ([6ec80fb](https://github.com/portel-dev/photon/commit/6ec80fbdd72fd129340915f49ab895e3dff4f3a7))

## [1.14.0](https://github.com/portel-dev/photon/compare/v1.13.0...v1.14.0) (2026-03-21)

### Features

* add -y flag for non-interactive CLI mode ([ab38016](https://github.com/portel-dev/photon/commit/ab380166e5664f4e27b0ebb08556a02fcb4acf14))
* add [@format](https://github.com/format) code renderer with syntax highlighting ([815e4ad](https://github.com/portel-dev/photon/commit/815e4ad401c540dfd71f2e0ca6455d174c1e609c))
* add [@format](https://github.com/format) slides for Marp-style presentations ([5dd4c92](https://github.com/portel-dev/photon/commit/5dd4c92246757203b77a3b5794e6e7a46648cc94))
* add /api/assets/:photon/* route for serving photon assets ([4f970f0](https://github.com/portel-dev/photon/commit/4f970f075a91332ae3c57bdd11cf0f44589b5e3b))
* add A2A Agent Cards for multi-agent discovery ([c277ac7](https://github.com/portel-dev/photon/commit/c277ac7377f58b14280da12023f8474eadc36e38))
* add AG-UI protocol adapter on MCP transport ([2041711](https://github.com/portel-dev/photon/commit/2041711a06531cd90b243bcae50128082ac9ecc5))
* add all 23 new format types to docblock autocomplete ([e8bda6e](https://github.com/portel-dev/photon/commit/e8bda6edc5455311936efa50753e9ce6d7ed3a8f))
* add Batch 1 format renderers — 10 new [@format](https://github.com/format) types ([6b35da1](https://github.com/portel-dev/photon/commit/6b35da1fbc266e0a343148ffb5474744d20afd53))
* add Batch 2 format renderers — 9 new [@format](https://github.com/format) types ([f0ea7a3](https://github.com/portel-dev/photon/commit/f0ea7a3cff6f37022f6a8aefc863b411749479df))
* add Batch 3 format renderers — map, calendar, network/graph ([baf86cb](https://github.com/portel-dev/photon/commit/baf86cb67d61d3f5f8cfb9c3e832ea6aae179316))
* add beam typescript worker for studio ([ef0c994](https://github.com/portel-dev/photon/commit/ef0c9941ed37db45cbe0cf237a64952ff6488f34))
* add bidirectional state exposure and persistent approval queue ([75d21e6](https://github.com/portel-dev/photon/commit/75d21e6ec0d4fda2e281fc6253887e0946b3f908))
* add CLI and Beam modes to compiled binary entrypoint ([abc4eb2](https://github.com/portel-dev/photon/commit/abc4eb2633391dcecb996fa44ca409a811c5cb12))
* add clickable studio diagnostics ([5792301](https://github.com/portel-dev/photon/commit/57923018a872df4594882551ea7991f48a8262f0))
* add clickable studio diagnostics ([badafdd](https://github.com/portel-dev/photon/commit/badafdd40f0c6831b7691ab3ec9cc15c8d81cfb5))
* add data-embed for live Beam iframes in slides ([aba5423](https://github.com/portel-dev/photon/commit/aba5423e8cd5623e17d0e4ff9c8ce0190bfe1603))
* add declarative .photon.html version of render-showcase dashboard ([d2ff1e5](https://github.com/portel-dev/photon/commit/d2ff1e5acf3d101713a13fcfa82397ab67d2d6ef))
* add input-showcase example demonstrating all input format types ([df575a1](https://github.com/portel-dev/photon/commit/df575a1f668a993c92ece967d3a7296c95302fe2))
* add interactive slide bindings and view transitions ([6b813f2](https://github.com/portel-dev/photon/commit/6b813f2d0c25d5516916c509a842971bac65bed4))
* add interactive walkthrough photon — slides-based tutorial ([8f5fc7f](https://github.com/portel-dev/photon/commit/8f5fc7f18517ab689c39ba990fe7b6665aa8dd52))
* add MCP OAuth endpoints and auth gate for [@auth](https://github.com/auth) photons ([f53a130](https://github.com/portel-dev/photon/commit/f53a130c18eceba33efe998fb5b81230113a389b))
* add MCP Server Cards for server discovery ([d2c3041](https://github.com/portel-dev/photon/commit/d2c30413f934f709132bde88067707dfe2baa944))
* add MCP Tasks primitive for async long-running operations ([4659dee](https://github.com/portel-dev/photon/commit/4659deedccf0c220cbc4ad0c4866897ddb24e981))
* add OpenTelemetry GenAI instrumentation for tool execution ([e424bf8](https://github.com/portel-dev/photon/commit/e424bf8aaf0d09687a5b28724384c3793cbb8525))
* add photon runtime completions in beam editor ([f0d1f1d](https://github.com/portel-dev/photon/commit/f0d1f1d85ea3e9c683c41456a016474bc9232b5f))
* add photon.render() bridge API with 10 format renderers ([d6e363c](https://github.com/portel-dev/photon/commit/d6e363c5d4b4dcce5f47019ea3f47c0cab43f19d))
* add protocol interoperability features with docs and showcase ([761ebab](https://github.com/portel-dev/photon/commit/761ebabc0f7b3b29a969d650a1147a7852e1c0d7))
* add render-showcase example photon demonstrating photon.render() ([d283e85](https://github.com/portel-dev/photon/commit/d283e8533ee46e67772e740df31c069e42a75d66))
* add renderQR to photon bridge API for custom UI iframes ([199761c](https://github.com/portel-dev/photon/commit/199761c99fa56fadeb6ab06d402ae168f5f1e330))
* add shell aliases for bundled photons during setup --shell ([c9e5d49](https://github.com/portel-dev/photon/commit/c9e5d493d7a26b1240492eccce6535ef1f605e0a))
* add studio go-to-definition support ([b4fc5f1](https://github.com/portel-dev/photon/commit/b4fc5f1f990b9245d200981a095a5635d8df64a2))
* add studio hover info and diagnostics panel ([51c7a3d](https://github.com/portel-dev/photon/commit/51c7a3d002833a882b2b2e3aa8d12b244c6de3d2))
* add studio outline navigation ([8e3e8b4](https://github.com/portel-dev/photon/commit/8e3e8b4372429e61d6638416bc200a49c936dabc))
* add studio outline navigation ([419fa52](https://github.com/portel-dev/photon/commit/419fa523a763ce9d0fb7f5cf828b28c05a63139c))
* add studio project context for imports ([488066a](https://github.com/portel-dev/photon/commit/488066adb99f80f2ca5b6c0d6413f26ab8353034))
* add studio quick fixes ([d95acbe](https://github.com/portel-dev/photon/commit/d95acbe617160bb2256985025afcf11ec8217ea3))
* add studio quick fixes ([2565c26](https://github.com/portel-dev/photon/commit/2565c2620fa893ebfece118673b5b62b4e4f0b5a))
* add studio read-only source previews ([2683c5c](https://github.com/portel-dev/photon/commit/2683c5cb71da4d95abeec1a69025d907efddba35))
* add studio rename preview ([036f8e9](https://github.com/portel-dev/photon/commit/036f8e9c275e8ccf7dbf2f3c39abc64a3a1c46e8))
* add studio rename symbol support ([0716b45](https://github.com/portel-dev/photon/commit/0716b45cc27f90028edcd766833c01414fa685c9))
* add studio signature help ([8c6a239](https://github.com/portel-dev/photon/commit/8c6a239d2374cf24cf16bcb4010628c3a62244e5))
* add studio signature help ([ffeeaa6](https://github.com/portel-dev/photon/commit/ffeeaa67827d80f6b0621c117448b53a748eaeee))
* add studio symbol filtering ([65dab96](https://github.com/portel-dev/photon/commit/65dab96d1a1606106f79375a3c3660fca584fd5a))
* add studio symbol filtering ([43f06eb](https://github.com/portel-dev/photon/commit/43f06eb1e0be4d96b7d35209cdf46f7a86a06549))
* add tab completion for compiled binaries ([75e4fc7](https://github.com/portel-dev/photon/commit/75e4fc768538a18edc7fe3f8e6e09e74197a8161))
* add this.instance(name) for same-photon cross-instance access ([073113c](https://github.com/portel-dev/photon/commit/073113cc7d85a67d42fdd20d941c00bf17b92203))
* add vscode photon cache details ([a485968](https://github.com/portel-dev/photon/commit/a485968214ab7ed4816923dc915fb0b6a98d8bbc))
* add vscode photon dogfood workflow ([1487f5f](https://github.com/portel-dev/photon/commit/1487f5fa8f0e70b525f7db07822271c81987c764))
* add vscode photon language helpers ([e8bdd9d](https://github.com/portel-dev/photon/commit/e8bdd9d33d76591eb7682027edc480a6dccf7a9a))
* add vscode photon outline navigation ([f33ac5d](https://github.com/portel-dev/photon/commit/f33ac5dbc6ce8b0d127636d958e14c84e27b6ec2))
* add vscode photon quick fixes ([f3814a3](https://github.com/portel-dev/photon/commit/f3814a34b0b0a9bdc7aa554ba54501c110b7fef7))
* add vscode photon references and rename ([5b2b055](https://github.com/portel-dev/photon/commit/5b2b05581f68d2ffe86be245a19865a915d622ef))
* add vscode photon runtime completions ([def5b4c](https://github.com/portel-dev/photon/commit/def5b4c8d9f9a5a703fd5cfbac75de8d3b19f775))
* add vscode photon signature help ([99d0850](https://github.com/portel-dev/photon/commit/99d0850e35fd3520cf85efaa998eee917b4232dc))
* add vscode photon status summary ([6f43382](https://github.com/portel-dev/photon/commit/6f43382c28e92d2a7beeb489cc1614fd07dbdd28))
* auto hot-reload transfer, channel event capability, auto-symlink ([3bb79bd](https://github.com/portel-dev/photon/commit/3bb79bd13987598fdb89a085179ce8899bdacfe6))
* auto-detect worker mode from lifecycle hooks ([e8de349](https://github.com/portel-dev/photon/commit/e8de349b4081ccca3492ee35aefa171daa09b76c))
* auto-wrap HTML fragments with photon base styles ([dc6e5a3](https://github.com/portel-dev/photon/commit/dc6e5a36ebb5d56ff432053bedc0b2b3708c1472))
* Beam frontend OAuth client for MCP auth ([3cd87e5](https://github.com/portel-dev/photon/commit/3cd87e5249e631e389ad7472a9e8dbb7dfffd26c))
* BeamCompatTransport for compiled binaries with Beam UI ([32f7b10](https://github.com/portel-dev/photon/commit/32f7b10c37d6b8959eb9e9567da12f578a6af7eb))
* binary setup & app commands for compiled photon binaries ([9da0e49](https://github.com/portel-dev/photon/commit/9da0e4914d5b2510ed22cb7b4053d67a15581f2c))
* CLI clear-and-replace rendering for this.render() ([67ce3b8](https://github.com/portel-dev/photon/commit/67ce3b83e8056dbd76508e9cb5bb3ab1cac6c369))
* custom date picker component replacing native browser date input ([45520c2](https://github.com/portel-dev/photon/commit/45520c219174f7a84672c89420becbc4e6827fe3))
* declarative .photon.html templates with zero-JS data binding ([9f2bea4](https://github.com/portel-dev/photon/commit/9f2bea4ecb509fccaf89a64e55129b7a81d9d858))
* eager-load lifecycle photons on daemon startup for auto-resume ([b4c359d](https://github.com/portel-dev/photon/commit/b4c359dc28aa2cac20e8f903bf8b7a142401cf4b))
* edit support files in studio previews ([9871604](https://github.com/portel-dev/photon/commit/9871604cf947a98a9a3d1139f010849c5279145a))
* fix photon names, icons, and embed [@ui](https://github.com/ui) templates in compiled binaries ([b8e0a5d](https://github.com/portel-dev/photon/commit/b8e0a5dc310e185ed195974dc509bdbb36e31998))
* focus studio source previews on changed lines ([f7c3560](https://github.com/portel-dev/photon/commit/f7c3560a309b396acd3609fa89300786e3afe20a))
* focus studio source previews on changed lines ([919a930](https://github.com/portel-dev/photon/commit/919a93006d7ab4837746a6d8099296628fa39ab0))
* forward OKLCH theme colors to custom UI iframes ([7781cc4](https://github.com/portel-dev/photon/commit/7781cc4bd0d4f31edbd1f3b6bf0649e6b201729a))
* highlight active studio symbols ([2275638](https://github.com/portel-dev/photon/commit/22756385366ca811613295c1d0e3f50dafbcb51d))
* highlight active studio symbols ([fb54f3c](https://github.com/portel-dev/photon/commit/fb54f3c88b22c6e48086dbe046da94e8a8dca911))
* identity-aware locks for multiplayer turn-based photons ([04e2e71](https://github.com/portel-dev/photon/commit/04e2e716e75751d5f4f4f35dcd62effea9195783))
* improve beam app entry and editor support ([4077a5e](https://github.com/portel-dev/photon/commit/4077a5ec70b28e3e94fd1f75a96bc2b7a0e7149c))
* improve vscode photon edit previews ([6f14f63](https://github.com/portel-dev/photon/commit/6f14f6372bb537d991969ee282953172b1215d93))
* inject render() for plain classes + comprehensive pipeline tests ([400e75c](https://github.com/portel-dev/photon/commit/400e75cf25fb5ae25b417292584e57e268592db4))
* interactive parameter prompting and self-describing CLI help ([153c1ed](https://github.com/portel-dev/photon/commit/153c1edeffeadff071649244ca84271c1dc311b5))
* local photons stay at ~/.photon/ root, only marketplace gets namespaced ([d5d9efe](https://github.com/portel-dev/photon/commit/d5d9efe8360c8ced30dc9f1d13aa6e959a857c41))
* metadata-driven declarative binding for .photon.html templates ([e0ae4af](https://github.com/portel-dev/photon/commit/e0ae4af725c241af09508c68c1e74ee7fbf9512e))
* multi-photon support in compiled binary Beam UI ([f221e11](https://github.com/portel-dev/photon/commit/f221e11ee650d61b09ddded5e5c7b11d47ab2640))
* namespace system, storage/assets injection, instance-aware DI, renderable yields ([e454072](https://github.com/portel-dev/photon/commit/e454072b4ab08ee6b052fbc013a33cf70e8a6755))
* optional ? suffix for [@photon](https://github.com/photon) and [@mcp](https://github.com/mcp) dependencies ([cfa4262](https://github.com/portel-dev/photon/commit/cfa42624ce31801d4dff34b0ed8b8365319a5b47))
* optional dependencies with ? suffix ([@dependencies](https://github.com/dependencies) sharp@^0.33.0?) ([3af3f84](https://github.com/portel-dev/photon/commit/3af3f847c1ae383c77b776134dee5d78428cfc1f))
* package vscode photon extension ([b3da2c7](https://github.com/portel-dev/photon/commit/b3da2c7a76ee5a126a21b32d2097985e75a41612))
* Phase 3 rich input components — tags, rating, segmented, code, markdown ([2945311](https://github.com/portel-dev/photon/commit/2945311d2b0848760e9852662a21d216a2cf6050))
* render:clear support, logging capability, compiled binary fixes ([8438a7e](https://github.com/portel-dev/photon/commit/8438a7e109a6561760920b015c6601139e9da556))
* replace symlinks with wrapper scripts and `x` subcommand ([0685a3e](https://github.com/portel-dev/photon/commit/0685a3e41742803756c855fd84af1d2c222eee8c))
* resolve {[@choice-from](https://github.com/choice-from)} dynamic enums server-side in tools/list ([48ed702](https://github.com/portel-dev/photon/commit/48ed702fe2491b98502a06ba04f68c8a3558dcf2))
* resolve {[@choice-from](https://github.com/choice-from)} on Beam frontend via MCP tool calls ([fcac715](https://github.com/portel-dev/photon/commit/fcac715ed84a567b5c9933585d77dc453bf6b111))
* resolve linkedUi for all methods sharing a UI asset ([a6ad0e5](https://github.com/portel-dev/photon/commit/a6ad0e5de8f78e9887476e923cc74e03570b9317))
* resolve relative image paths in slides via baseUrl ([d9f7a61](https://github.com/portel-dev/photon/commit/d9f7a61d65879758a191d2d6fb92c464b55746b6))
* resolve transitive [@photon](https://github.com/photon) deps from GitHub + fix beam launch issues ([ff8e2bf](https://github.com/portel-dev/photon/commit/ff8e2bf9c2a7e431692a95f7d077e25baa18d666))
* scaffold vscode photon extension ([19b27a2](https://github.com/portel-dev/photon/commit/19b27a25c0366b9d4ee46d82561e2c9fc591d443))
* setup always installs completions, aliases, and wrappers ([6186d83](https://github.com/portel-dev/photon/commit/6186d83fabbb579b6d2a80e3089d55ea31e5553e))
* smart date picker positioning + Phase 2 enhanced input formats ([3ebb9ef](https://github.com/portel-dev/photon/commit/3ebb9ef9d39f809038025059bef82a87e61ced47))
* Streamable HTTP transport for compiled binaries with Beam UI ([42e921a](https://github.com/portel-dev/photon/commit/42e921aa1feb9facf3cadacc85ca3ffbb9391d44))
* support qualified refs in explicit cli command ([eae5259](https://github.com/portel-dev/photon/commit/eae5259d379c0fc8cff331da3d4f4dfb07179770))
* this.render() pipeline across all transports ([c911859](https://github.com/portel-dev/photon/commit/c91185916b9f564b66b100e4a958ed87f14be110))
* wire MCP OAuth caller identity through transport and loader ([88a91f4](https://github.com/portel-dev/photon/commit/88a91f4853ce58001c02a818c4836bc1d5134d82))
* worker thread isolation for [@worker-tagged](https://github.com/worker-tagged) photons ([6fac33d](https://github.com/portel-dev/photon/commit/6fac33d6901dcbb1b7ce57fff839253969aef0f1))

### Bug Fixes

* .photon.html priority over .html when asset pre-resolved, fix code string matching ([60a8588](https://github.com/portel-dev/photon/commit/60a85884dce230e0a59fed79bcef3c732021cce6)), closes [#x27](https://github.com/portel-dev/photon/issues/x27)
* [@author](https://github.com/author) tag falsely triggering MCP OAuth auth gate ([6f69364](https://github.com/portel-dev/photon/commit/6f69364b7ebb287177ff66455475145056a23315))
* [@photon](https://github.com/photon) proxy dedup, hot-reload survival, and event method passthrough ([abdf0f3](https://github.com/portel-dev/photon/commit/abdf0f3d01318d0e6d0c10cfc7a70135b6b946f5))
* add /api/diagnostics endpoint for compiled binary Beam UI ([d893d99](https://github.com/portel-dev/photon/commit/d893d99298029a9618e8e98475310e6208649b0b))
* add error boundaries so bad photon reload can't crash daemon ([3892b9b](https://github.com/portel-dev/photon/commit/3892b9bf76c705c6dff94dd8252a0b7561bd5289))
* add fetch timeout to AG-UI proxy to prevent hanging connections ([64b641b](https://github.com/portel-dev/photon/commit/64b641b3080cfffda826576c1d92922a7a1cdef7))
* add load-queuing to renderQR to prevent dropped renders during concurrent calls ([3929c77](https://github.com/portel-dev/photon/commit/3929c77505454a10c54057d674173a2a46a4586b))
* apply custom dropdown triangle to all remaining select elements ([408e806](https://github.com/portel-dev/photon/commit/408e806164bef0051d038f8cf4ef6564280a6ceb))
* auto-scale overflowing slides and fix stripQuotes hoisting bug ([01c41b0](https://github.com/portel-dev/photon/commit/01c41b06a201fe6d7b64fb2cc060158b6e4315ad))
* beam startup status line not printed in non-TTY mode ([d7b215e](https://github.com/portel-dev/photon/commit/d7b215e69ed72a5ffb9f6100e359a6cf4fa5bd15))
* beam toolbar buttons overlay without stealing content width ([87bff2f](https://github.com/portel-dev/photon/commit/87bff2f3b5ac8e0b759917a9a8f4ce872a50b200))
* bridge theme class uses token values instead of hardcoded colors ([41bfef2](https://github.com/portel-dev/photon/commit/41bfef21033fba2741758ae02451468b4a5a9129)), closes [ffffff/#0d0d0d](https://github.com/ffffff/photon/issues/0d0d0d)
* code renderer syntax highlighting with correct template escaping ([3b13f30](https://github.com/portel-dev/photon/commit/3b13f30a45c78dcaf0d342ec048061404075f4c9))
* correct gauge SVG arc geometry for upper semicircle rendering ([b80f188](https://github.com/portel-dev/photon/commit/b80f1889f65f0edff6fad4fd8f98346204b01462))
* daemon loads persisted schedule files from ScheduleProvider ([68a0587](https://github.com/portel-dev/photon/commit/68a05870195d921223c286c81a466c46ed3d1954))
* defer photon module loading in compiled binary to prevent startup hang ([cc27fb2](https://github.com/portel-dev/photon/commit/cc27fb2341d938b3fd2e1a92f0696e592e4f1374))
* eagerly generate photon editor declarations ([49406ac](https://github.com/portel-dev/photon/commit/49406ac7ca9e4f9e904ee26c4af5f107f18447fd))
* getter-safe tool discovery and binary compilation support ([f5d6603](https://github.com/portel-dev/photon/commit/f5d6603ce1026a8e4005dac392fca77a8305e753))
* handle fetch errors gracefully in explicit cli command ([1034cec](https://github.com/portel-dev/photon/commit/1034cec84c742bb20ec61c88731a26e84565d31b))
* handle runtime tools (_use, _instances) for worker-thread photons ([0e2d08f](https://github.com/portel-dev/photon/commit/0e2d08f6758cfca815f0cd40e2f7e7f6b908b1ba))
* highlight code blocks in slides renderer ([3230323](https://github.com/portel-dev/photon/commit/32303237df650696ecddff5eecc661ae8e798bb6))
* hot-reload subfolder photons, assets, renderQR, and theme notifications ([39e2659](https://github.com/portel-dev/photon/commit/39e26596f12caf8d616fde2208d354a3a86a135f))
* import 'nothing' from Lit to prevent form render crash ([c79405c](https://github.com/portel-dev/photon/commit/c79405c9fa7b302ee1911fd21f211c69367cc843))
* improve slides UI — auto-hide controls, strip header quotes, fix overflow ([bb08b66](https://github.com/portel-dev/photon/commit/bb08b6611d1c43bd9c85e473368bf001795f59af))
* improve SSE connection stability in BeamCompatTransport ([0dc4784](https://github.com/portel-dev/photon/commit/0dc4784b51e6ab3ac968cb775d497641dec3f7ea))
* input format dispatch order and date picker outside-click handling ([82dbc47](https://github.com/portel-dev/photon/commit/82dbc47ae2fe3445026832bfac32efcdb2577853))
* invalidate custom UI iframes when photon assets change ([894f2ed](https://github.com/portel-dev/photon/commit/894f2ed3d87fab6c220d6423242180f354f4fadb))
* make renderCLIFormat synchronous for proper clear-and-replace line counting ([f0a0ad2](https://github.com/portel-dev/photon/commit/f0a0ad2a45391a060fbad7bec5ac0cbef2c20bed))
* method selector dropdown uses custom triangle indicator ([189e04d](https://github.com/portel-dev/photon/commit/189e04d54215f4f8ff202de89f863e06a5fbe650))
* migrate data/<photonName>/ directories during namespace migration ([8940e39](https://github.com/portel-dev/photon/commit/8940e3924ce2e40d22c7b0327467282232a3abe3))
* mobile hamburger and back button overlap in top-left corner ([ac85d35](https://github.com/portel-dev/photon/commit/ac85d35b69091c7c3ac864cd5bd17ec3dd338909))
* move template test fixtures after examples removal ([503d6d3](https://github.com/portel-dev/photon/commit/503d6d3e6a37cc3834e009bf8dff6b5f8e323540))
* native photons take precedence over external MCPs with same name ([dbb3d66](https://github.com/portel-dev/photon/commit/dbb3d66d5244ea88b30a09f37c193c1942e433f2))
* non-interactive mode shows method help instead of terse error ([3432bca](https://github.com/portel-dev/photon/commit/3432bca5c4269aa18f740c95d9c12f7330136970))
* preloaded modules resolve storage() under ~/.photon/ ([7c8da9e](https://github.com/portel-dev/photon/commit/7c8da9e41e7d30c386679a307498a2cc83c82eb8))
* pull toolbar buttons flush to top edge to reclaim vertical space ([a73bca9](https://github.com/portel-dev/photon/commit/a73bca90fa0da69665fa88a59f2c537e90d38883))
* QA fixes — boolean validation, segmented caps, grammar, false alert ([b2cf920](https://github.com/portel-dev/photon/commit/b2cf9206a47c9f60bf82a9400fe8f4b5c72ce961))
* QR code card sizing and background in dark theme ([49ee7e5](https://github.com/portel-dev/photon/commit/49ee7e537cebeffdce9baf347172e070a0027216))
* QR code rendering in custom UI bridge and result-viewer ([9c24f90](https://github.com/portel-dev/photon/commit/9c24f90bb9490762f8f1ecd8ae927e7b77c534e2))
* remove duplicate methods from merge causing runtime crashes ([2c8d3f8](https://github.com/portel-dev/photon/commit/2c8d3f87487c7787efaab60fc90338342b9e2fb3))
* remove duplicate port-finding in beam CLI ([cf2f0a6](https://github.com/portel-dev/photon/commit/cf2f0a65f56510c0c4bdb04d2adcc073ca0abd27))
* remove duplicate slide counter from footer ([c2fea2b](https://github.com/portel-dev/photon/commit/c2fea2b82e1f8f3b63dad880ea8fbec169035660))
* remove global auth gate that blocked all photons when one needs auth ([ca344fb](https://github.com/portel-dev/photon/commit/ca344fb0553aa4bc34b47e990adc3583022c0395))
* render-showcase dashboard uses theme CSS variables for light/dark support ([3412d6b](https://github.com/portel-dev/photon/commit/3412d6b9e5d96210f741754687c83ea41041bb5f)), closes [#1a1a1a](https://github.com/portel-dev/photon/issues/1a1a1a) [#2a2a2a](https://github.com/portel-dev/photon/issues/2a2a2a) [#555](https://github.com/portel-dev/photon/issues/555)
* renderers and declarative bindings react to theme changes ([fe4ec5c](https://github.com/portel-dev/photon/commit/fe4ec5c6f9e6860790fbe995d3fcd45ddbf6f6db))
* resilient module loading and deferred imports in compiled binary ([e3fcf1f](https://github.com/portel-dev/photon/commit/e3fcf1fbf83ef991b725aff178a38a7dc949f1e2))
* resolve [@ui](https://github.com/ui) templates from asset folder convention in build ([9c7c530](https://github.com/portel-dev/photon/commit/9c7c530362cf6454d8631f6853e757998f9fc610))
* rewrite HTML src attributes for relative paths in slides ([cc06ffb](https://github.com/portel-dev/photon/commit/cc06ffb6a73ceabd8b8646395f62b38f2c50d28f))
* skip undefined modules in dependency map for compiled binaries ([5978d37](https://github.com/portel-dev/photon/commit/5978d378cc2cf36415a9a4f9f5016dcf3703a54e))
* slides theme inherits from Beam, add header/footer/paginate support ([16e8eaa](https://github.com/portel-dev/photon/commit/16e8eaab871e45027e058809a1333d892d3206b9))
* support implicit photon asset helpers and asset loading ([686d2f5](https://github.com/portel-dev/photon/commit/686d2f5a2d4b4dfcb79236ebbb8940dda9405501))
* toolbar buttons sit above app content, never overlay ([3e6a387](https://github.com/portel-dev/photon/commit/3e6a387a3cf52f2fe676b4765d1f3b3f81ec3e9d))
* update smoke tests to use math photon instead of nonexistent todo ([1efa5bc](https://github.com/portel-dev/photon/commit/1efa5bc3cb7f6c633897351199b3ecb47fe9870c))
* use correct bridge API pattern in render-showcase dashboard ([07bcade](https://github.com/portel-dev/photon/commit/07bcade0da342114b5dec4e7ed52f3c17fa28766))
* use embedded source for metadata extraction in compiled binaries ([ba76eaf](https://github.com/portel-dev/photon/commit/ba76eaf8e45dd136d03a73a407bd44fb23042c86))
* use stub module for failed deps to prevent disk path search ([47290a8](https://github.com/portel-dev/photon/commit/47290a8c8a34d33011ad908757553ebc8815dea5))

### Performance

* cache vscode photon support files ([9862489](https://github.com/portel-dev/photon/commit/98624892a6c565961084b9e69d2646ef5a8c2fe4))

## [1.13.0](https://github.com/portel-dev/photon/compare/v1.12.0...v1.13.0) (2026-03-13)

### Features

* add `photon build` command to compile photons into standalone binaries ([96fa7eb](https://github.com/portel-dev/photon/commit/96fa7eb2e2ccbd0801a6da6643bae256fb3752d7))
* add CLI fallback rendering for all 30 [@format](https://github.com/format) tags ([7bb76b9](https://github.com/portel-dev/photon/commit/7bb76b93adf555e5a8b07b6671d0888c9fc3db58))
* add QR code rendering support and fix photon-core dependency install ([5f3a8a9](https://github.com/portel-dev/photon/commit/5f3a8a90bbd0b3951a8d5fc6b044e8b53a3cda90))
* add SVG audience badges to method cards in Beam UI ([90a3f6c](https://github.com/portel-dev/photon/commit/90a3f6c8f87873a6c266918128180180043db775))
* add tests for auto-inferred and {[@value](https://github.com/value)} structured output ([2d29d42](https://github.com/portel-dev/photon/commit/2d29d42dc01859e7a7cf4cb0fcf6594cace6c527))
* apply middleware pipeline to [@photon](https://github.com/photon) inter-instance method calls ([6283037](https://github.com/portel-dev/photon/commit/628303743e3186476b6ca2336e27d3edf79e24c1))
* auto-discover new photon files added to ~/.photon at runtime ([a0c4bc4](https://github.com/portel-dev/photon/commit/a0c4bc409d3e403e42a5902dc06958b0ae9d1c43))
* embedded runtime, [@photon](https://github.com/photon) dep bundling, and symlink routing for compiled binaries ([e2647e6](https://github.com/portel-dev/photon/commit/e2647e6df66726ade792fdf928982065522db683))
* format shape validation, CLI prefix stripping, and error rendering ([4b82d45](https://github.com/portel-dev/photon/commit/4b82d45e5d2c21ffae866a8143c7a130b61c0617))
* pass hot-reload context to lifecycle hooks for socket preservation ([9306ab4](https://github.com/portel-dev/photon/commit/9306ab48bcd3c222228a0c1074a3673ad8689fba))
* resolve icon images to MCP standard icons[] field ([710a4a2](https://github.com/portel-dev/photon/commit/710a4a2a1c12802feaa1a15ab8fe2765da818fb2))
* shared [@photon](https://github.com/photon) instances, CLI bare-word args, channel auto-prefix ([472fc75](https://github.com/portel-dev/photon/commit/472fc75e9a4deef07b544e78acf20064e47dd91c))
* stream generator emit yields from daemon to CLI client ([5c0c19f](https://github.com/portel-dev/photon/commit/5c0c19f90eca3c675a94220c235753b536ba179c))
* wire MCP annotations into STDIO transport and add spec tests ([0f05a9a](https://github.com/portel-dev/photon/commit/0f05a9a31f89ba9ced9fee76f391942d4792fd61))
* wire MCP standard annotations into runtime and transport ([e81500f](https://github.com/portel-dev/photon/commit/e81500f32b72aabb0ec70cffc7b085ea15bfbcce))
* wire Tool.icons to standard MCP server for full spec compliance ([8612c5d](https://github.com/portel-dev/photon/commit/8612c5d483e0194a4755734ecd835731b4773536))

### Bug Fixes

* [@format](https://github.com/format) json now renders syntax-highlighted JSON for object results ([8cd207a](https://github.com/portel-dev/photon/commit/8cd207a590897af72e8f5921f0e15bc0d5a1a055))
* call onShutdown before hot-reload and defer onInitialize until after state transfer ([b3872ef](https://github.com/portel-dev/photon/commit/b3872ef0227ae8fea09c3047dc179633eb648613))
* prevent npm install failure for @portel/photon-core dependency ([e3aa7c3](https://github.com/portel-dev/photon/commit/e3aa7c3a9beadd9be738970841a296e41f4bdd10))
* QR format renderer now checks result.qr field ([c0317ee](https://github.com/portel-dev/photon/commit/c0317eed7fd8c235e425cfb3c40372a6eae3b869))
* skip property copy during hot-reload for photons with lifecycle hooks ([159161a](https://github.com/portel-dev/photon/commit/159161a7a8d1852fe77d4ae849f230bfcb180376))
* symlink @portel/photon-core into build cache for all photons ([2b3ca0a](https://github.com/portel-dev/photon/commit/2b3ca0af500afa8dbc0e46bf14f244250e283ee4))

## [1.12.0](https://github.com/portel-dev/photon/compare/v1.11.0...v1.12.0) (2026-03-09)

### Features

* add Bun runtime support across ecosystem ([b80c08a](https://github.com/portel-dev/photon/commit/b80c08a23e3254a2f799bd36b58df39fe791f682))
* add format-based input validation for string fields ([f1c6ae6](https://github.com/portel-dev/photon/commit/f1c6ae667061d84cb9f5f9c985584a2dca32000b))
* add independent instance/session dropdowns to split view panels ([005fc46](https://github.com/portel-dev/photon/commit/005fc4659bd7df7637a07c0091e806961ac277a1))
* add integer type enforcement and regex-based decimal filtering for numeric inputs ([b92a904](https://github.com/portel-dev/photon/commit/b92a904547e2872a51c5b1fbe8174875577c2f33))
* add QR code format support - implement [@format](https://github.com/format) qr rendering ([177e194](https://github.com/portel-dev/photon/commit/177e19493cd1904ddc004571f8a02ffbb6375e85))
* add QR code format support with [@format](https://github.com/format) qr tag ([2f98dbb](https://github.com/portel-dev/photon/commit/2f98dbb8a2cea2dabf26abfa19ef93a5278af09b))
* add split panel entry points for apps and linked UIs ([a5a2231](https://github.com/portel-dev/photon/commit/a5a22314eaf2bd8441e922f6854f678bcc5c12d1))
* add split view foundation with dual-panel state management ([057b12f](https://github.com/portel-dev/photon/commit/057b12fb5ba6300469952aefdcf280b0efffe85b))
* add split view UI button and method picker ([2024cdc](https://github.com/portel-dev/photon/commit/2024cdc6f954497e7fa8f5ecad48288571e8eeca))
* add standalone PWA mode - renders [@ui](https://github.com/ui) template full-screen without Beam shell ([3633efe](https://github.com/portel-dev/photon/commit/3633efefc622769937c6c5de6436108e6544a8ed))
* attach __meta audit metadata to returned objects in [@stateful](https://github.com/stateful) methods ([660a51d](https://github.com/portel-dev/photon/commit/660a51d9bc704a50d239b9c5f776dd52ce137d93))
* auto-wrap array results with pagination metadata for [@stateful](https://github.com/stateful) photons ([2f3ad37](https://github.com/portel-dev/photon/commit/2f3ad373d7455b616dd81641dbae085f3b163bfc))
* call _updateRoute() when split view state changes ([de8422c](https://github.com/portel-dev/photon/commit/de8422ce7bd4eaa852242929b19f50df3af2866d))
* complete PWA install flow — service worker, install prompt, daemon auto-start, and menu integration ([77fc473](https://github.com/portel-dev/photon/commit/77fc4730ce9c311f0fadb527361305f6fe33f38d))
* comprehensive multi-client synchronization tests with JSON changeset validation ([2520c98](https://github.com/portel-dev/photon/commit/2520c9839ebb84180110634e37ce8a8ce58c946a))
* comprehensive pagination integration tests and stress testing ([f416dce](https://github.com/portel-dev/photon/commit/f416dce562aec9533328c80aa7067ac06a3ae79e))
* display audit trail in Beam UI (Phase 4) ([f80ab45](https://github.com/portel-dev/photon/commit/f80ab45e1104b24261a9bc000af49358c5fb64b1))
* enhanced QR display with clickable links and polished card UI ([60b730a](https://github.com/portel-dev/photon/commit/60b730ae6ddc6163a7ec1f9d8f810c9121c126f4))
* enrich [@stateful](https://github.com/stateful) changeset pipeline with full event context ([b74ecb5](https://github.com/portel-dev/photon/commit/b74ecb50a61b46635614055de214ce1b445e8f34))
* external .test.ts files for photon testing ([0dfc7df](https://github.com/portel-dev/photon/commit/0dfc7df6c3a01cda56d9130caf6f12214918c97a))
* generalize split view to support N panels (max 3) ([77ff08f](https://github.com/portel-dev/photon/commit/77ff08ff4bc7a0d4c4f1aa8ff43b7efce0426a54))
* implement client-side QR code generation using QRCode.js library ([b3bfdaa](https://github.com/portel-dev/photon/commit/b3bfdaa1bc7f93009550bedef4a85db96ed2c282))
* implement notification subscription filtering in Beam ([d60c6ce](https://github.com/portel-dev/photon/commit/d60c6ce81212e9e03826b8f394d97836b7ad2c62))
* implement Phase 1 of viewport-based pagination - global photon instance injection ([8a247c1](https://github.com/portel-dev/photon/commit/8a247c148d76dd0e977657ab5a42a08c878a62c6))
* implement Phase 2 of viewport-based pagination - ViewportAwareProxy for smart client-side fetching ([555c285](https://github.com/portel-dev/photon/commit/555c2852a761e1f63eec974d36a413a7e7aa927f))
* implement Phase 6b - OfflineStateManager for IndexedDB persistence ([b9f11b7](https://github.com/portel-dev/photon/commit/b9f11b7e836fd1015faf9198eb02220698c96935))
* implement Phase 6c - OfflineSyncOrchestrator for offline-first coordination ([8813d7e](https://github.com/portel-dev/photon/commit/8813d7ec59eaa36b39b66914be79e9ced5b1255b))
* implement Phase 6d - Offline-First Integration Testing ([e49a771](https://github.com/portel-dev/photon/commit/e49a7719927c7f4b4bdd5dc7f17fd81381ec3982))
* implement URL state persistence for split view with proper UI placement ([0e60b9e](https://github.com/portel-dev/photon/commit/0e60b9e262d2453594a4e49b997babda73088d19))
* implement warmth notification system in Beam sidebar ([ee4a62d](https://github.com/portel-dev/photon/commit/ee4a62d4ecb42c916caf72f1f1c4f6c51b690bac))
* improve numeric input styling and add mouse wheel support ([77bb789](https://github.com/portel-dev/photon/commit/77bb78920a052d601f7b5ec57b2b9c00ffbfcb0f))
* index-aware events for pagination & range-based sync (Phase 5) ([d57366c](https://github.com/portel-dev/photon/commit/d57366c93c59aa9b3ae02ed4eb5182a66b705306))
* instance-aware state-changed event channels for multi-instance isolation ([8e1d99b](https://github.com/portel-dev/photon/commit/8e1d99be5d905bf06c37b2760461623fe1716b03))
* integrate PWA install into main Beam shell — manifest, service worker, and install prompt ([515b3a5](https://github.com/portel-dev/photon/commit/515b3a5f8a2c5df81ba08c3d3fc7df818befa096))
* integrate ViewportAwareProxy into beam-app for automatic pagination ([8b56d87](https://github.com/portel-dev/photon/commit/8b56d871bda2dd041128d3d86ba20577630a0e87))
* integrate ViewportManager with IntersectionObserver for automatic scroll detection ([46284e5](https://github.com/portel-dev/photon/commit/46284e598f6717fdf123095b9f09ba94bee63759))
* JSON Patch generation, event log, and undo/redo for [@stateful](https://github.com/stateful) photons ([b7dce09](https://github.com/portel-dev/photon/commit/b7dce090d59c1006dd1f685abdf1e466070e2697))
* make tunnel photon visible in sidebar for easy public access setup ([abc3281](https://github.com/portel-dev/photon/commit/abc3281397b6b83edbaa3c4e15ee71e8586c71ba))
* minimize MCP transmission payload for state-changed events ([10c7716](https://github.com/portel-dev/photon/commit/10c77167a53544854cffb3d57efc1ee8e7495a7e))
* Phase 5c - Paginated List Manager integration with ViewportManager and SmartFetcher ([fdbd202](https://github.com/portel-dev/photon/commit/fdbd202123a177254f3f96f57be4f1d643cf4aac))
* Phase 5d - Browser integration tests and performance validation ([a4f5723](https://github.com/portel-dev/photon/commit/a4f57235cfc877a6ae00af7796de685ef46392d0))
* Phase 6a - ServiceWorkerManager implementation ([357988f](https://github.com/portel-dev/photon/commit/357988fbf3ecdc7e0296da7a28d09a8388e4c08e))
* prevent invalid characters from being typed into numeric input fields ([055c98e](https://github.com/portel-dev/photon/commit/055c98e481ba59863e879b09914d13a625ac0c58))
* PWA icon pipeline — file-based icons, client-side PNG generation, Safari install guidance ([1075bde](https://github.com/portel-dev/photon/commit/1075bde97c51a1f5e93c202e91b393dee4750aa7))
* redesign split view with per-panel headers and auto-execute ([53f683d](https://github.com/portel-dev/photon/commit/53f683d457406621779679dd3850790de0fbb5fc))
* restore full PWA standalone shell at /app/{photonName} ([1d7a6b0](https://github.com/portel-dev/photon/commit/1d7a6b0cc93c06feafc07af277f1f9bbd645f8d1))
* restore session selector with data icon in normal and split view modes ([da46cdf](https://github.com/portel-dev/photon/commit/da46cdff4c487a10a7c2cf7c5ffad8bface117aa))
* scope PWA to app photons and make launchers portable ([6fac6d8](https://github.com/portel-dev/photon/commit/6fac6d8ec15b8c4d585fc00c8d6907a25123378c))
* self-contained panel headers replacing context-bar in method views ([4fc5a91](https://github.com/portel-dev/photon/commit/4fc5a910c5cb7cb55888720b2e3b54475ec00274))
* simplify numeric input - rely on HTML5 step enforcement ([181f1e4](https://github.com/portel-dev/photon/commit/181f1e4cdd70c1b73244b6a9287f7addadcb5f34))
* simplify state-changed event names for cleaner client code ([07d33cc](https://github.com/portel-dev/photon/commit/07d33cce5a733707e6850d2eec6434aa97eae218))
* track modifications in __meta audit trail (Phase 2) ([ab17f2d](https://github.com/portel-dev/photon/commit/ab17f2da7175db801776bbf117e635bf955ff268))
* tunnel defaults to cloudflared, removes localtunnel, improves QR card ([b39cafd](https://github.com/portel-dev/photon/commit/b39cafd9a0447ade5a4fec54af9bd33c6ea8d006))
* warmth detection integration with __meta timestamps (Phase 3) ([5678b0d](https://github.com/portel-dev/photon/commit/5678b0d255861837662346d9144018f2587dfca8))

### Bug Fixes

* add 10s timeouts to fetch calls in beam startup and SSE init ([f800a98](https://github.com/portel-dev/photon/commit/f800a985f1f4cbe5161bf000ed27f100207eaae4))
* adjust cache hit rate expectation in performance test ([a322db0](https://github.com/portel-dev/photon/commit/a322db01a938e4fd2528cf8f5c48c96b8005ff35))
* align back/focus buttons, improve mobile layout and dropdown arrows ([b483028](https://github.com/portel-dev/photon/commit/b483028a7b4bd5983a1c9c58916e8d6dc65feeae))
* allow Chrome address bar install icon by not suppressing beforeinstallprompt ([a3b29cf](https://github.com/portel-dev/photon/commit/a3b29cf8ef072b79fe942f244f377624569cc042))
* app view not showing on initial page load for deferred photons ([312d1af](https://github.com/portel-dev/photon/commit/312d1af1e14289cbaeebc75f95e82509a793d5a1))
* auto-selected first photon not showing app view on initial load ([135674e](https://github.com/portel-dev/photon/commit/135674ee469051097d3bdc389daed1eed2c870b3))
* comprehensive CSS token consistency sweep across 8 components ([804ff80](https://github.com/portel-dev/photon/commit/804ff806ec679c2d06272df64c7f8afcac8ae960))
* comprehensive form input polish across all components ([ace9772](https://github.com/portel-dev/photon/commit/ace977265153de0c925d85aebea4e6985c749c1c)), closes [#1a1a2e](https://github.com/portel-dev/photon/issues/1a1a2e)
* context-aware PWA status pages for local vs remote/mobile users ([da62270](https://github.com/portel-dev/photon/commit/da622702016e1de3b10ad248b30d48aec19b14a8))
* correct emit() call signature in [@stateful](https://github.com/stateful) wrapper ([00ec0b7](https://github.com/portel-dev/photon/commit/00ec0b723198211ab54d073800960493c1998d65))
* correct second panel tool invocation in split view ([8bdcabb](https://github.com/portel-dev/photon/commit/8bdcabb995cdb7a161729098a8f89214c72ae090))
* eliminate duplicate [@stateful](https://github.com/stateful) event emissions ([ff7eeea](https://github.com/portel-dev/photon/commit/ff7eeeaa134009139bcdd90a7cc617081a211d63))
* emit [@stateful](https://github.com/stateful) events at executeTool level for real-time transmission ([fbaacbb](https://github.com/portel-dev/photon/commit/fbaacbb39a5f61b2d3a753d1a9aa332612b52be3))
* enforce integer rounding and min/max clamping on slider number inputs ([f3998f0](https://github.com/portel-dev/photon/commit/f3998f03d894c0975c4dc7ea31478fa1027221f2))
* enhance numeric input spinner hiding with robust cross-browser CSS ([70bf539](https://github.com/portel-dev/photon/commit/70bf539e98452da873b4bafc2a0bea33180f8e0a))
* export missing isMobileDevice and attachViewportManager from viewport-manager ([d05f92f](https://github.com/portel-dev/photon/commit/d05f92f1be0195b0be4416129402d4484a62e6ff))
* expose _undo and _redo tools in Beam's MCP tool listing ([219f4c4](https://github.com/portel-dev/photon/commit/219f4c41c1f239d04671ccab9ff9afa76be1ba9b))
* implement proper [@stateful](https://github.com/stateful) array injection at constructor level in paginated-list photon ([5712033](https://github.com/portel-dev/photon/commit/571203398696abe710e6613c2d34f235452bb563))
* improve split view UI and photon switching behavior ([480e0ff](https://github.com/portel-dev/photon/commit/480e0ff0d89b284f45db70e8c65efbe97a846256))
* install published photon-core v2.10.1 from npm registry ([8eea04b](https://github.com/portel-dev/photon/commit/8eea04b4051d974c83c8bbbb6304cb1877ec9e58))
* parse tool results in split view and simplify CLI commands ([e284fec](https://github.com/portel-dev/photon/commit/e284fecf5a586f62a8ed8055a969f861d3db77cf))
* place + button immediately after method dropdown ([e04281c](https://github.com/portel-dev/photon/commit/e04281c5a22e5a58e03b27fe277669baf4efb56a))
* polish numeric slider UI with filled track, refined thumb, and clean number input ([6586911](https://github.com/portel-dev/photon/commit/65869117cb3e6485a94c31353d2f4c0f98487312))
* PWA standalone shell — full MCP Apps protocol, auto-invoke, no install button ([388d62e](https://github.com/portel-dev/photon/commit/388d62ef39141ca1e7b013ef07bb2d32d0c150b8))
* PWA standalone shell discovers template URL client-side ([293e1ed](https://github.com/portel-dev/photon/commit/293e1ed1907e381b91a7d96d839d3c8c3851c91d))
* QR card spacing and copy button visibility ([503bfea](https://github.com/portel-dev/photon/commit/503bfead43a19bb4aca9791edc16251ccb041b08))
* QR card tighter layout — remove double padding, reduce max-width ([1b5ac7c](https://github.com/portel-dev/photon/commit/1b5ac7cccbc7c0c6592fcdca8c1a37482073879d))
* remove junk files from repo, improve QR card and tunnel UX ([a6a815e](https://github.com/portel-dev/photon/commit/a6a815e819101521486acd4472916fe3f04bb666))
* reset invalid numeric input values to defaults instead of NaN ([8d2e4e4](https://github.com/portel-dev/photon/commit/8d2e4e430eacbfbc8982c786ab8e56b365258d78))
* resolve Chrome PWA installability — real PNG icons via service worker + server fallback ([36d87ec](https://github.com/portel-dev/photon/commit/36d87ecf0a0da89cb7919e8562e204a1a57bd9c3))
* restore overflow menu and add static manifest for PWA installability ([57bb1c2](https://github.com/portel-dev/photon/commit/57bb1c2d7d4c07d1639267a55a938490090eef40))
* restore spacing in split view panels ([59ddf2c](https://github.com/portel-dev/photon/commit/59ddf2c7fa4982f266665f6f2f6575b625c15e29))
* route [@stateful](https://github.com/stateful) events through outputHandler for daemon pub/sub transmission ([4ab485b](https://github.com/portel-dev/photon/commit/4ab485bbc5b4a7d724212ee6c990e8f26f5303f2))
* show session/instance selector for [@stateful](https://github.com/stateful) photons in method form view ([1c0294d](https://github.com/portel-dev/photon/commit/1c0294d9a05e39623aceadc7c130cc85b2bbaf37))
* slim down slider track to 4px with pill-shaped border radius ([36ba5cf](https://github.com/portel-dev/photon/commit/36ba5cf40c103258ec2498641fbfa4855056db81))
* split view edge cases — back cleanup, route reset, focus mode ([455b01d](https://github.com/portel-dev/photon/commit/455b01d0e49088b3d11ad9933939ff22e55414b0))
* strip JSDoc tags ([@emits](https://github.com/emits), [@internal](https://github.com/internal), [@deprecated](https://github.com/deprecated)) from tool descriptions ([55d5a70](https://github.com/portel-dev/photon/commit/55d5a70bfb875325fd159327641de2ffd09a30f0))
* strip JSDoc tags from method descriptions to prevent leakage into UI ([c316c2e](https://github.com/portel-dev/photon/commit/c316c2efb6cdf5321874d44c2e91255cdb60dee8))
* SW icon pipeline handles all content types + populate class metadata on configure ([1634a96](https://github.com/portel-dev/photon/commit/1634a96e9b823e00321a0e22ddc3f9eead25cc28))
* test runner discovers CWD photons, deduplicates tests, handles load failures ([eaa42d3](https://github.com/portel-dev/photon/commit/eaa42d3bbbf109cb8580f0d3870ea3a772aa4658))
* update Beam UI to use initializeGlobalPhotonSession function name ([ebd9b82](https://github.com/portel-dev/photon/commit/ebd9b828ec4b9666f5031a67f18d62888cf75571))
* update daemon-watcher tests to use instance-scoped state-changed channels ([2c6de9a](https://github.com/portel-dev/photon/commit/2c6de9aae04b511358e9bdb24555ca20fae400c5))
* update photon-instance-manager test to use session-based API ([035b78e](https://github.com/portel-dev/photon/commit/035b78e5cee819456fe62babef86dbcb5bc9613e))
* upgrade hono and @hono/node-server to patch security vulnerabilities ([aa651cf](https://github.com/portel-dev/photon/commit/aa651cff8c1c05d43f944b00d5d49d474f3fd599))
* use QR server API instead of npm library for QR code generation ([95fe9a3](https://github.com/portel-dev/photon/commit/95fe9a3b1aa6bf796d7dd6491af889943d515f89))

## [1.10.0](https://github.com/portel-dev/photon/compare/v1.9.0...v1.10.0) (2026-03-03)

### Features

* add [@forked](https://github.com/forked)From tag for photon provenance tracking ([f446803](https://github.com/portel-dev/photon/commit/f4468039ff09bf6a77362386a4c47769fbc0af2d))
* add audit dashboard with latency stats, per-photon and per-client breakdown ([67dc9b0](https://github.com/portel-dev/photon/commit/67dc9b06680f4b22a74e89522ff53c38fb24bcb1))
* add Beam design system spec, SVG icon module, and focus trap utility ([062fca4](https://github.com/portel-dev/photon/commit/062fca46e435b7ed6c949c4557ff74a1f594b8ee))
* add board/instance selector dropdown to stateful app layout ([7d5cac8](https://github.com/portel-dev/photon/commit/7d5cac8373ffaa19e73c86606c4f932f947075e1))
* add collapsible accordion sections to sidebar ([ea16df4](https://github.com/portel-dev/photon/commit/ea16df4358a92a6fe4262d9ba22ce4b926e0de1e))
* add dual hash manifest, contribute, and fork commands ([1bad89a](https://github.com/portel-dev/photon/commit/1bad89a1d0715de669549bd3ab1c302dfcfbffd5))
* add fork/contribute to Beam UI with consolidated overflow menu ([5abd581](https://github.com/portel-dev/photon/commit/5abd5817deb377a051e8aad3974b9826615a78f1))
* add form validation, keyboard nav feedback, and description constraints ([25e5149](https://github.com/portel-dev/photon/commit/25e5149fb3d294ef79377a414285a9c79268d722))
* add hash routing for home, rich home page, and sidebar logo navigation ([add6405](https://github.com/portel-dev/photon/commit/add6405a35f23c09f0e0ccd749d68f72df1aed80)), closes [#home](https://github.com/portel-dev/photon/issues/home)
* add mtime-based instance listing with metadata for auto mode ([f1500cc](https://github.com/portel-dev/photon/commit/f1500cc419107156ab8a4cc6cbf39f1d2ba0621f))
* add Phase 5 polish — run-last, dirty guard, recent, tags, theme revert ([ed0092a](https://github.com/portel-dev/photon/commit/ed0092a0d4ae15acaea9a6ed8922a461e926613c))
* add photon daemon subcommand (start/stop/restart/status) ([be05c1f](https://github.com/portel-dev/photon/commit/be05c1f233ba089f9033c443e7895c4e0453642f))
* add photon init daemon, photon uninit daemon, photon init all ([b27400b](https://github.com/portel-dev/photon/commit/b27400b2897ea10a8fdde46c54e668f7d6a39cd3))
* add size-based audit log rotation with CLI controls ([c4a9e88](https://github.com/portel-dev/photon/commit/c4a9e881b846a295fbad37567313ae83a2c06755))
* add structured audit trail with persistent JSONL log and CLI viewer ([eb1e0d3](https://github.com/portel-dev/photon/commit/eb1e0d3979e8f9ed0063ddbcb90a7ec10695983d))
* always show Update in photon dropdown for marketplace photons, rename Configure→Reconfigure and MCP Config→Copy MCP Config ([677bb27](https://github.com/portel-dev/photon/commit/677bb27f6d33ad15f6cb7c1a632b9bce94a72683))
* auto-detect and inject capabilities for plain Photon classes ([2a777aa](https://github.com/portel-dev/photon/commit/2a777aab3381e73f50c5d911228a5be98c803cba))
* auto-follow active board via board-update events in instance selector ([50b5241](https://github.com/portel-dev/photon/commit/50b5241cf66227c1e39e0efa93440da6792c62ca))
* auto-generate Quick Reference table in marketplace .md docs ([ecfd3f8](https://github.com/portel-dev/photon/commit/ecfd3f801405fbeb1e069759c33980fd1bb4e85f))
* auto-install photon from marketplace when launched by name via beam ([8969c64](https://github.com/portel-dev/photon/commit/8969c649f65cf8dba86ff1a1791bfcc00ef25933))
* detect content changes even when photon version stays the same ([dcf63b8](https://github.com/portel-dev/photon/commit/dcf63b8515e9d3d531ad71889fd226b711dfe0b9))
* extensible middleware runtime with custom [@use](https://github.com/use) tag support ([c4982f5](https://github.com/portel-dev/photon/commit/c4982f5c50240b72e830b54331e8030a03eb0a43))
* implement multi-directory daemon support with workingDir propagation ([028e518](https://github.com/portel-dev/photon/commit/028e5182d18dab468bf6fa3a13e4a270176d1174))
* install and run photons directly from GitHub refs (npx-style) ([f76e93c](https://github.com/portel-dev/photon/commit/f76e93c1e57673d593d158097663c1c93a0210a7))
* instance-scoped composition for photon dashboards ([da39b12](https://github.com/portel-dev/photon/commit/da39b12a6f76eefe69313b6269420db5e4097c55))
* method card and sidebar UI improvements ([037ba93](https://github.com/portel-dev/photon/commit/037ba93b9a122c3e61a9f0c9bb762c2762d2db18))
* move anchor nav below toolbar, consistent across app/photon/mcp views ([e5fcb94](https://github.com/portel-dev/photon/commit/e5fcb9427ebcf30b16f86c31d7cb96ba9ecb7e6f))
* photon name launches beam focused on that photon in full-width mode ([c48ea6e](https://github.com/portel-dev/photon/commit/c48ea6e91615bf137a1382e42080dec3e64fdad4))
* proactive daemon-owned hot-reload for symlinked photon files ([12c1377](https://github.com/portel-dev/photon/commit/12c137748caafb1ec8aba22000a8dde971e72155))
* replace emoji with SVG icons and fix WCAG accessibility across Beam UI ([6c48548](https://github.com/portel-dev/photon/commit/6c485485aabe3a4eec4fed35cff355ad59bde831))
* replace fullscreen button with focus mode toggle ([b9d8d40](https://github.com/portel-dev/photon/commit/b9d8d404df2aa4775227f3769b60d9b89c763917))
* replace hand-drawn SVG icons with Lucide icon library ([af02c40](https://github.com/portel-dev/photon/commit/af02c40b12d9436d332ec8cd0e375e970b56342f))
* rich inputs in elicitation modal — sliders, toggles, date pickers, dropdowns ([52243bc](https://github.com/portel-dev/photon/commit/52243bc1f7ef9c010a982165fb30dbe857bbb33e))
* runtime enforcement for functional JSDoc tags ([8cac0f0](https://github.com/portel-dev/photon/commit/8cac0f0d4b0dbc5d0196d5bf7797945d2785e483))
* settings as first-class property-driven runtime feature ([07aec2e](https://github.com/portel-dev/photon/commit/07aec2e6aa9522d8d48e66ee4528d781ba20c0e1))
* shell functions respect PHOTON_DIR env var for --dir routing ([70a581b](https://github.com/portel-dev/photon/commit/70a581b350b78b483e5d49c3b0a87bea7a7389d6))
* show git-style short hash suffix for hash-only marketplace drift ([23d00e8](https://github.com/portel-dev/photon/commit/23d00e803eb8fadbbfe0a078e1ff88a39229c0dc))
* show update version in badge and dropdown label when update is available ([25cf3ca](https://github.com/portel-dev/photon/commit/25cf3ca4a01053a312f7e88592124ffb24e87193))
* slider-first numeric inputs and date/time picker support ([e2f866c](https://github.com/portel-dev/photon/commit/e2f866cace927608b312686ed4dbd6e5187f4ba8))
* surface photon load errors in Beam UI needs-attention section ([62acbff](https://github.com/portel-dev/photon/commit/62acbff6457bb17f0e4605f1983e8d8bd11f33fe))
* unhide add, remove, and upgrade CLI commands ([8448ce3](https://github.com/portel-dev/photon/commit/8448ce358ae23ce1b8b13011ab8a47a3c1b26040))
* unify Beam UI with instance manager, source/edit toggle, and settings promotion ([bfc8898](https://github.com/portel-dev/photon/commit/bfc8898dbf2d4a5ade0202f757f316a3a892f8f9))
* wire up observability with tool call timing, HTTP access logging, and daemon health ([b2bc692](https://github.com/portel-dev/photon/commit/b2bc692979bb9e4f6437c13175610721d1bc03a8))

### Bug Fixes

* add AI to known acronyms in formatLabel so 'ai' renders as 'AI' ([468b601](https://github.com/portel-dev/photon/commit/468b6013f6253ae6d4ccf5aa41536f98b9ffaab4))
* add database icon and proper SVG chevron to instance picker ([1e76ae8](https://github.com/portel-dev/photon/commit/1e76ae8a00d2dfe1352c07a407eeb0273e800ecb))
* add full overflow menu items to App layout below-fold context bar ([20253e7](https://github.com/portel-dev/photon/commit/20253e768d1e26274b16e63f61e1a06f0eb53c55))
* add glass background to marketplace emoji icons for visual balance ([ce5f298](https://github.com/portel-dev/photon/commit/ce5f298bf3ba5dd0c7efe85eb2c4332fad355ee8))
* add glass background to sidebar section headers for visual clarity ([bc4414b](https://github.com/portel-dev/photon/commit/bc4414bedd2b981a3863294bac05104ce633eb02))
* add newline after status line in TTY mode before restoring output ([601cae7](https://github.com/portel-dev/photon/commit/601cae7a081ff128544a93c92961fddb9e393c68))
* add Scheduled badge to cron method cards for visual distinction ([e4d2eb4](https://github.com/portel-dev/photon/commit/e4d2eb4982cda7e32507887107f58efe60763f46))
* add thin custom scrollbars to studio editor and inspector pane ([b13b434](https://github.com/portel-dev/photon/commit/b13b43461910f072c188450b1563c38a101bdde5))
* add timeout to instance CRUD fetch calls ([86d6a43](https://github.com/portel-dev/photon/commit/86d6a430b1e761973b193b04ee7926e8d5223c7e))
* add tooltip to Update badge in context bar ([f3819d6](https://github.com/portel-dev/photon/commit/f3819d6855b7cbefd5a62e34efe3ad50255c8b0e))
* add uninit to reserved commands and update subcommand map ([ef811f1](https://github.com/portel-dev/photon/commit/ef811f1b3fee9a418575afcb64f5594eeeb591ab))
* address remaining issues from QA round ([74a0efe](https://github.com/portel-dev/photon/commit/74a0efeb897ef0135f3429c4d4d03fc5fea18f7d))
* align star icons by giving count pills consistent min-width ([5f133b9](https://github.com/portel-dev/photon/commit/5f133b95dcb01d2b6ac8aea6b0dc2b10182ba6d8))
* allow focus rings on marketplace filter pills by using overflow: clip ([c8e7346](https://github.com/portel-dev/photon/commit/c8e73460ef8538cc68bdb9ce2ce4a736933a2f40))
* always include 'default' instance in _instances list ([482307b](https://github.com/portel-dev/photon/commit/482307b3dea1f4bf7c8b3652213ec5607c20530e))
* always include default instance in Beam /api/instances endpoint ([cc036d7](https://github.com/portel-dev/photon/commit/cc036d711933a4af2a49b155c4135b2140af260c))
* annotate catch blocks to resolve swallowed-error warnings ([f3ca874](https://github.com/portel-dev/photon/commit/f3ca874ec3048907c8bb82a0fa5c92be654d80b0))
* async safety — dedup concurrent loads, atomic Map cleanup, tracked timers ([82ef711](https://github.com/portel-dev/photon/commit/82ef7113560fa15f4f025785f8e57676be2b8b14))
* auto-refresh manifest cache on content hash mismatch during install ([6526ec4](https://github.com/portel-dev/photon/commit/6526ec4b0fae0b7b13f76f0fbf5c6ad00d7ed841))
* auto-resolve npm-linked packages in pre-release check ([d54d13b](https://github.com/portel-dev/photon/commit/d54d13b2953e5317b8a4d2d1d19e8dc8386dbb4b))
* auto-restart daemon when binary is updated after build or install ([4ecebff](https://github.com/portel-dev/photon/commit/4ecebffe74a35b0177daac535c18390dcdf74a72))
* auto-scope activity log to current photon when switching between photons ([3808235](https://github.com/portel-dev/photon/commit/3808235ec9c120480885950ac3081a54135a95b1))
* beam defaults to CWD for true project-level isolation ([d1da78d](https://github.com/portel-dev/photon/commit/d1da78d891b06fbc975346c65c07e68c7f681857))
* capitalize enum option labels, add comma-separated hint for array fields, fix number spinbutton ARIA bounds ([0b3225d](https://github.com/portel-dev/photon/commit/0b3225d44dd739709996c03fb5fa6be782a16648))
* capture raw client capabilities before SDK Zod strips extensions field ([6bbabe4](https://github.com/portel-dev/photon/commit/6bbabe496109e22392fb8b51f1f5caac8adffdcb))
* change root element overflow from clip to visible for focus rings ([a1f932f](https://github.com/portel-dev/photon/commit/a1f932fd58a8fd29a756a159101ffea0df06a96f))
* clamp overflow menu position to viewport to prevent top clipping ([b51144a](https://github.com/portel-dev/photon/commit/b51144a77c25dd5d4c7439595ac942859ef3720b))
* clear stale daemon instances when Beam starts with a fresh workingDir ([2c14465](https://github.com/portel-dev/photon/commit/2c14465c2b983131c2c6c9796ca499486ebb3c7c))
* clear stale result panel when navigating via browser back/forward ([398a5fe](https://github.com/portel-dev/photon/commit/398a5fef53ae0995148b03bc9208740542a09fb1))
* clicking current instance in auto mode now switches to manual mode ([278b67e](https://github.com/portel-dev/photon/commit/278b67eb584725a9bb8dbbbc8967a029fe99a7c5))
* coalesce concurrent ensureDaemon calls and log stale binary restarts ([46b4d5a](https://github.com/portel-dev/photon/commit/46b4d5a27d280534af16a0b669225aec6a4045c5))
* core-features test import and add middleware compat test ([4d9da3f](https://github.com/portel-dev/photon/commit/4d9da3f434c9bb2d366eb42492bfd651c29505b3))
* create state marker file on _use to ensure instance discoverability ([378c158](https://github.com/portel-dev/photon/commit/378c158dbb1c891a9a019bf5a311b3169ab8f88e))
* daemon hot-reload bugs caught by test-first approach ([7ca2589](https://github.com/portel-dev/photon/commit/7ca2589db8dbfa90d47cf040adb7cf78d00bb24b))
* daemon socket and PID file now respect PHOTON_DIR env var ([c427ed2](https://github.com/portel-dev/photon/commit/c427ed22f69ca088c38cd793bfbd4d88ad5b6cdc))
* daemon socket readiness check uses actual connection test, not file existence ([b27c4af](https://github.com/portel-dev/photon/commit/b27c4afe4143702fa91b1e61457e51970234e373))
* dedup concurrent MCP/photon loads in loader.ts and track OAuth interval in elicitation-modal ([290a479](https://github.com/portel-dev/photon/commit/290a4793e4606bd3d12faa67a5803d65ae25570f))
* deduplicate sidebar items shown in RECENT section ([75a1c12](https://github.com/portel-dev/photon/commit/75a1c12e9fe4b65c4c1e1e68d2249bc3182c7a13))
* DEFAULT_WORKING_DIR respects PHOTON_DIR env var ([262aee2](https://github.com/portel-dev/photon/commit/262aee27c76c7652d2f3f041a8a24e2b2e9e345c))
* defer non-TTY beam status line until after photons are loaded ([0def49a](https://github.com/portel-dev/photon/commit/0def49aafd2477c958775907906c2d3e7a39c07b))
* detect Claude Desktop UI capability from extensions field ([adf8219](https://github.com/portel-dev/photon/commit/adf821996b3a677673bc931f9d93c33a7d8f2a1a))
* detect MCP Apps UI capability from extensions field ([8ba2a02](https://github.com/portel-dev/photon/commit/8ba2a02146085484992a12888994b0abc09d8c97))
* detect photon files misplaced in subdirectories during maker sync ([cb1d7ee](https://github.com/portel-dev/photon/commit/cb1d7ee1d1e56b75e3804f5c138615da13b2743f))
* distinguish rename vs delete for workingDir, handle photon/state subdir deletion ([7723e55](https://github.com/portel-dev/photon/commit/7723e558151fa351efcef4bb770cb397170a5fbb))
* eliminate double print and suppress config.json watching message ([bb54ed0](https://github.com/portel-dev/photon/commit/bb54ed0b1f16d6f80a8156d9de3060a694c7ea4d))
* enable Configure and MCP Config buttons in app below-fold toolbar ([f4db6ae](https://github.com/portel-dev/photon/commit/f4db6aee74ea2d68a29ceff5f99cfba234b269fa))
* enhance status LED glow and improve star icon visibility ([476f9f7](https://github.com/portel-dev/photon/commit/476f9f73d1effa164162f2693e16b1fed87e3349))
* ensure method signature brackets always close in method cards ([b3d08ef](https://github.com/portel-dev/photon/commit/b3d08eff3fb55d7c2c9d80b2d8bd8bcfb33bb9f3))
* exclude [@internal](https://github.com/internal) methods from marketplace manifest tool count ([9fde15c](https://github.com/portel-dev/photon/commit/9fde15c77507d3ffcc78c0a3af4d747b5faddcfa))
* exclude internal runtime tools (_use, _instances) from sidebar method count ([088a9b5](https://github.com/portel-dev/photon/commit/088a9b5ae1ba17af02d1853bb690082b72a0f9c5))
* external MCP apps not receiving initial data in iframe ([8a1b1fc](https://github.com/portel-dev/photon/commit/8a1b1fc8fb1a2e385e41242e47f7796f31d5e513))
* fire photon:data-ready and set __PHOTON_DATA__ in Beam bridge on tool result ([b595284](https://github.com/portel-dev/photon/commit/b595284b1049a27cf0a084cb671c415089732743))
* handle ECONNRESET in daemon watcher tests for CI stability ([735d406](https://github.com/portel-dev/photon/commit/735d40656b294f3eb492dc119ae11f2ac9b0d651))
* hide context bar pencil icons until hover ([c2c2709](https://github.com/portel-dev/photon/commit/c2c27098d671c929494b3d83e48bfd7e0b20080e))
* hide context-bar in focus mode ([72f54e1](https://github.com/portel-dev/photon/commit/72f54e1e85352b3e980362d8a466c3b3d352bae3))
* hide update button when marketplace hash is corrupt (sha256: with no digest) ([af1df72](https://github.com/portel-dev/photon/commit/af1df72105df9fd2bf838254acb7357018c6788f))
* hot reload for symlinked photon source files ([7883ec2](https://github.com/portel-dev/photon/commit/7883ec2f5b290d0a2d7ae992bb9493d0163a8a99))
* humanize method names in cards, breadcrumbs, and form headings ([94c3fb2](https://github.com/portel-dev/photon/commit/94c3fb2a8725a4ed6648a0019f312de08c6ff8e7))
* iframe auto-height, auto-instance UI and initial-load selection ([9011df4](https://github.com/portel-dev/photon/commit/9011df4ab745a5d807954fe4fc9207a085f12500))
* ignore ghost watcher events for non-existent new photon files ([22f6a66](https://github.com/portel-dev/photon/commit/22f6a6671146371a87ded4b1867d7230107ad54b))
* implement full 5-field cron parser with day-of-month, month, day-of-week support ([b0f56d6](https://github.com/portel-dev/photon/commit/b0f56d6b779f8cc908e5cbf491e77cc93010855a))
* improve filter pill focus visibility by ensuring overflow and z-index ([98482e7](https://github.com/portel-dev/photon/commit/98482e722eeee773797a3b35483eeb1114aa9346))
* improve instance picker visibility and custom scrollbar ([4f3f8f9](https://github.com/portel-dev/photon/commit/4f3f8f9bf5d8c72ba9cd4d942cfebb561fab33c2))
* include asset files in photon hash calculation ([2973730](https://github.com/portel-dev/photon/commit/297373083628b77dc8aaf1afe67070249e59935e))
* increase marketplace emoji icon size to better fill container ([9a8233f](https://github.com/portel-dev/photon/commit/9a8233f30d1a197fda7091e3b588cdc33d0176b5))
* increase marketplace icon size and fix card hover clipping ([7db6eed](https://github.com/portel-dev/photon/commit/7db6eedeaba992e5831c231f2bd3621fbfc7fb5f))
* instance panel event forwarding and hash restore populating instances ([7b8c04c](https://github.com/portel-dev/photon/commit/7b8c04c8b4d48c6ac4aff36dd1723b5d64982989))
* isolate photon state by workingDir and fix [@stateful](https://github.com/stateful) constructor injection ([4b447df](https://github.com/portel-dev/photon/commit/4b447df7aff8d9b5dc629e64d3ffe6d8d6aa11b0))
* kanban board stuck at Loading when opened from sidebar ([f85a5cb](https://github.com/portel-dev/photon/commit/f85a5cb3ea4259084820185f985cbb671332cccf))
* live workingDir migration on rename — update loader baseDir and reload instances ([0e39a12](https://github.com/portel-dev/photon/commit/0e39a128f0428b58c8152aeea55cf6cf098e695b))
* make CONFIG_FILE respect --dir parameter instead of hardcoding ~/.photon ([72a5523](https://github.com/portel-dev/photon/commit/72a552352998c2a192c6e6c7855d678a66259e77))
* make marketplace card initials theme-adaptive ([ba5f8c7](https://github.com/portel-dev/photon/commit/ba5f8c7cad3507d1f8000f28cd89dc0f4d081369))
* make section header background more prominent ([23805ab](https://github.com/portel-dev/photon/commit/23805abb2d6df066a0f902094f51148af419900f))
* move board/instance selector into kanban's own UI ([61a6e58](https://github.com/portel-dev/photon/commit/61a6e585c49f54e18029e4afd95c31e2ffe62b34))
* one global daemon per system, socket responsiveness check prevents zombies ([76be09e](https://github.com/portel-dev/photon/commit/76be09e65aaa381701b4ace056b744fc15266bee))
* only classify external MCPs as apps when they have standalone UI resources ([5037d9a](https://github.com/portel-dev/photon/commit/5037d9a3da81073f402d47858a2bb4cfc130822a))
* only render slider when both minimum and maximum are explicitly declared ([40d0c92](https://github.com/portel-dev/photon/commit/40d0c921802326dd97e8ea5e32531fb197b65c86))
* overlay update dot on tool count badge for uniform star alignment ([2686a5a](https://github.com/portel-dev/photon/commit/2686a5a79fef9b5eb01d12badf6bc84ded51a311))
* panel header styling, progress gauge rendering, and live emit persistence ([73398ec](https://github.com/portel-dev/photon/commit/73398ec704fdc2e053d3cd5e52ecd9974d725fa8))
* pass baseDir to EnvStore and getInstanceStatePath in resolveAllInjections ([8d29b7e](https://github.com/portel-dev/photon/commit/8d29b7e4229f9359a4ec97e233588227ce4e1186))
* pass workingDir to InstanceStore in instances command ([cde03fa](https://github.com/portel-dev/photon/commit/cde03fa41c2730f640d4400eae15959083f6af9a))
* point docs link to GitHub README instead of placeholder URL ([d522390](https://github.com/portel-dev/photon/commit/d5223907655b57d4cebb678c29b1cf3db0fd38dd))
* polish P2 issues — section labels, update badge tooltip, MCP description fallback ([d1d7675](https://github.com/portel-dev/photon/commit/d1d7675a618736de9e831e903e21651b4f4e9d2f))
* pre-release check script looking for correct Beam startup message ([51d55c9](https://github.com/portel-dev/photon/commit/51d55c9fb306065bc140fd6faa6cb6199f995bfb))
* preserve @-prefixed code term content in method card descriptions ([11f3b4d](https://github.com/portel-dev/photon/commit/11f3b4d412ba4e2490b33289232e5f03fa222671))
* preserve backtick content in method detail descriptions (same as method card fix) ([06ac33b](https://github.com/portel-dev/photon/commit/06ac33b9a7ec789087575462dbf91507ec594a27))
* preserve inline [@tag](https://github.com/tag) references in descriptions (only strip line-starting docblock tags) ([08b057c](https://github.com/portel-dev/photon/commit/08b057ccca6d33274ce70662be91c724ebc7bedb))
* preserve markdown syntax chars in CLI output for clean copy-paste ([03e119f](https://github.com/portel-dev/photon/commit/03e119fcb8c44f5cda34921be90a7e8dd3ac0f5b))
* preserve newlines when cleaning description before markdown parsing, add list CSS ([24b5005](https://github.com/portel-dev/photon/commit/24b500576d96fa4a95ab4cf7dade82b9f16f7e52))
* prevent duplicate photon registration during marketplace install ([770da70](https://github.com/portel-dev/photon/commit/770da708628ac7a9ce585986e8c8941f92b960bb))
* prevent duplicate status lines and suppress initial display until URL ready ([804e10c](https://github.com/portel-dev/photon/commit/804e10c1fc154c27c15dfe291b9c6b46c510cd7d))
* prevent focus ring clipping on marketplace filter pills ([18da6f5](https://github.com/portel-dev/photon/commit/18da6f59e96ad8fc888c9a82538654e58b5eba15))
* prevent pencil edit icons from pushing method card text outside bounds ([ad0ab1f](https://github.com/portel-dev/photon/commit/ad0ab1fbbd53d368738e0f8106588b6df75af109))
* prevent SSE reconnect from blanking app UI by re-invoking main() ([bde1574](https://github.com/portel-dev/photon/commit/bde15743f92b54b628de6eb78c557a5d27cef4ff))
* prioritize content dirs over state dir for mtime-based auto mode ([01c9e17](https://github.com/portel-dev/photon/commit/01c9e17756bf1b413ee29ceef81cf4911a7da3df))
* propagate installSource and preserve hasUpdate across SSE refreshes ([2a7d640](https://github.com/portel-dev/photon/commit/2a7d640264cfbf3d7f9319b5e1069093dbe9fe76))
* re-fetch instances when switching back to auto mode ([5631307](https://github.com/portel-dev/photon/commit/5631307bfe4045d933ec6352937555a3d0fa4da8))
* re-find externalMCP after awaits in reconnectExternalMCP ([6f1b5d2](https://github.com/portel-dev/photon/commit/6f1b5d2315366b136b7f49ee5029f1f8c1363dbb))
* reconstruct bullet lists in method descriptions flattened by JSDoc extraction ([7db9844](https://github.com/portel-dev/photon/commit/7db984422ba1628c5031ff439218d13889c38d65))
* register audit as reserved command to prevent photon name collision ([2e6fe34](https://github.com/portel-dev/photon/commit/2e6fe34623f2151058cf4f694dd74021e0c69fc2))
* remove knip from prepublish - library exports may be unused but are part of public API ([cddb8ec](https://github.com/portel-dev/photon/commit/cddb8ecd856b39323b8ba6af5db3968027b21929))
* remove pencil icon flip and nudge form indicator to card corner ([f1c73e7](https://github.com/portel-dev/photon/commit/f1c73e7b1f481649c3d51e707b7c1d2314199409))
* remove tests for dead code eliminated in refactor ([41d5ee0](https://github.com/portel-dev/photon/commit/41d5ee071eca13a893ab7f6c2ee12e70a75b0825))
* render multiline strings in monospace with preserved whitespace ([7810d96](https://github.com/portel-dev/photon/commit/7810d9651671903d3dc5b04c3b7a74adc96efb3b))
* replace execSync shell interpolation with spawnSync array args in tunnel; add postMessage origin validation in Beam bridge ([0e730f7](https://github.com/portel-dev/photon/commit/0e730f74077ff735dcea8c9e10a803eaf5218a6c))
* replace RECENT section with recency-based sorting within categories ([1d66ae7](https://github.com/portel-dev/photon/commit/1d66ae7c4351e912b6c7e9d49035ed5a7fa05626))
* replace remaining emoji with SVG icons across theme, results, and diagnostics ([c069495](https://github.com/portel-dev/photon/commit/c069495d1428fa04736b8398b9abd4af14c459a3))
* replace status lens icon with activity pulse, make footer icon-only ([f6be2aa](https://github.com/portel-dev/photon/commit/f6be2aace3f98bea426c8c6a2504b38e6b1df060))
* replace system dialogs with inline UI for instance clone and delete ([a13ee6c](https://github.com/portel-dev/photon/commit/a13ee6ca94cb48dc3d11126cfd8ec5f5561fd240))
* reposition pencil edit icons to right side with horizontal flip ([708a2e7](https://github.com/portel-dev/photon/commit/708a2e7a0dc0857b566bb12e6c824a4cdb1d24aa))
* resilient hot-reload for symlinked photons ([a478621](https://github.com/portel-dev/photon/commit/a478621b0a94401058907e908cbdef5d2e603162))
* resolve [#home](https://github.com/portel-dev/photon/issues/home) redirect, instance pill prefix, and logo click ([8ea623a](https://github.com/portel-dev/photon/commit/8ea623afc6ca68bde5c695e3a721b0b65f8da17f)), closes [#boards](https://github.com/portel-dev/photon/issues/boards)
* resolve 8 Beam UI and CLI issues from novice UX audit ([cf9d0da](https://github.com/portel-dev/photon/commit/cf9d0da073d67320cdf08df4431f5d7f1830b46a))
* resolve all async state management races in photon loading ([a4a9f76](https://github.com/portel-dev/photon/commit/a4a9f76b482558f1c3fb7132d969296b75c76c3b))
* resolve all npm audit vulnerabilities ([501632f](https://github.com/portel-dev/photon/commit/501632ff03f180d0443ed96fe54168528e9be888))
* resolve Beam UI form and result rendering issues ([8f268ad](https://github.com/portel-dev/photon/commit/8f268adf9fe41f38cce56927c2f8c8dcdac93c0f))
* resolve CI failures from local symlink in lockfile ([d1d6d82](https://github.com/portel-dev/photon/commit/d1d6d82fc9527c8685291d5eb9ae023483caefa5))
* resolve CI lint failure and add eslint to pre-commit hook ([b30e39b](https://github.com/portel-dev/photon/commit/b30e39b3f9e0668ef053f700577e0112d11ad5f8))
* resolve compiler test path for CI environment ([aa8b530](https://github.com/portel-dev/photon/commit/aa8b530a5320231e41164998e7a7ee1562b05966))
* resolve daemon server.js path when running via tsx from source ([10d0620](https://github.com/portel-dev/photon/commit/10d06204dc84f4eb1a6255fafa9c4a2a65788880))
* resolve instances from board files for legacy board-based photons ([9b13f67](https://github.com/portel-dev/photon/commit/9b13f67b804d2b1d7030662075b35e458128c9e6))
* resolve knip configuration hints ([2e3d3aa](https://github.com/portel-dev/photon/commit/2e3d3aa55b721b18c61bc591443562a62536cb46))
* resolve PHOTON_DIR to absolute path and auto-detect project photon dirs ([f0318a4](https://github.com/portel-dev/photon/commit/f0318a495e04639ec38dc46bfa8c453bc3d24565))
* resolve pre-commit hook warnings and marketplace-view timeout leak ([faf654a](https://github.com/portel-dev/photon/commit/faf654a3553a88bcbd2b695c11b7be488dbc7526))
* resolve symlink cache divergence and rename shell init to init cli ([4fe1b16](https://github.com/portel-dev/photon/commit/4fe1b1625ff7eccb62f5a7550b59877bf6a2e2d4))
* restore full-height iframe layout in custom-ui-renderer ([70d8ada](https://github.com/portel-dev/photon/commit/70d8adaf83bab3b878eb037532e8513378507df4))
* restore full-height iframe layout in mcp-app-renderer ([a23ff82](https://github.com/portel-dev/photon/commit/a23ff82cc789e3dcc1f82fd0a69cc5f5ef4bc230))
* restore isValidDaemonResponse and fix all test failures ([e7af49f](https://github.com/portel-dev/photon/commit/e7af49f0159aba134252e136f5668b793de8dcdd))
* restore logo gradient by removing background:none override in button CSS ([326c632](https://github.com/portel-dev/photon/commit/326c6326472cc3248256d284d7197e3b7bfd8585))
* restore missing /api/instances endpoint lost during route extraction ([fafd55f](https://github.com/portel-dev/photon/commit/fafd55f89231392fedef9b2763a56011625dded4))
* revert --dir from shell integration, update @portel/cli to 1.0.3 ([e37d9b9](https://github.com/portel-dev/photon/commit/e37d9b95ab6ce27edf847a0d2e2cf5f5ae91a52b))
* revert Update to hasUpdate-gated, keep label renames only ([cac71fe](https://github.com/portel-dev/photon/commit/cac71fe022de06f5c7c1ae54fba2c107c5a6d742))
* Safari blank iframe rendering in shadow DOM ([b849668](https://github.com/portel-dev/photon/commit/b8496687ade29cdf82307d0aec7cf57c02da8d13)), closes [whatwg/html#763](https://github.com/whatwg/html/issues/763)
* serve UI assets from symlink origin, not symlink location ([ea108e7](https://github.com/portel-dev/photon/commit/ea108e702ff72d1424a93771b23d42e4b855a65b))
* set PHOTON_DIR env var from --dir flag so photons respect working directory isolation ([713d32c](https://github.com/portel-dev/photon/commit/713d32c8ce9dc917a9470f489e85e27b4bbadde7))
* show correct short hash in marketplace update button version ([d6fd416](https://github.com/portel-dev/photon/commit/d6fd41699c767bf8999ca57f74399ea7ce12edc7))
* show progress message and spinner during app startup and UI load ([cbbc20e](https://github.com/portel-dev/photon/commit/cbbc20eebab4f9d17a2533cec9e026425211a2f7))
* show raw method names in breadcrumbs/form and clean up toolbar styling ([3b9589e](https://github.com/portel-dev/photon/commit/3b9589e77d721b40916dd447032f53298d0e5c51))
* show version number in update badge as '↑ 4.0.1' with tooltip ([2b14415](https://github.com/portel-dev/photon/commit/2b14415d04c0ecff46d444f7e2a89437cb9aa764))
* sidebar footer overflow and update dot color/accessibility ([679e776](https://github.com/portel-dev/photon/commit/679e7764b2620f865eb4228f29c608efac1a7b43))
* sidebar hover clipping and marketplace card layout redesign ([6ef2c82](https://github.com/portel-dev/photon/commit/6ef2c8296174f98b2beb4a903c601fa33a2d9e78))
* simplify beam workingDir - respect --dir, default to ~/.photon ([32ed9c0](https://github.com/portel-dev/photon/commit/32ed9c0ece9e339f3d4578f4434f3e62e416fa8a))
* snap numeric slider to integers when min/max are whole numbers ([ea9778d](https://github.com/portel-dev/photon/commit/ea9778d65e1db54af240f2e85e14f5c46046c15a))
* snapshot live Map iterators before await and track channel unsubscribers in server.ts; add timeout to photon-bridge callTool ([405cb17](https://github.com/portel-dev/photon/commit/405cb1784ce3cd5b37dcd6ba75da8174e26cde3d))
* stop cascading daemon restarts on subscription reconnect ([eb0ef52](https://github.com/portel-dev/photon/commit/eb0ef52c341eefcd1ae6a91731ac72f44499c318))
* stop description extraction at ## markdown headings ([4d8fb1d](https://github.com/portel-dev/photon/commit/4d8fb1d4208f69d004fc16a2e69fa09e321898db))
* store prompt timeout handle in client.ts and re-verify session after await in switchInstance ([7273124](https://github.com/portel-dev/photon/commit/72731242b0ca7d90a6c26b945572185a1a916154))
* strip enum value lists from descriptions even when schema has no enum property ([2232360](https://github.com/portel-dev/photon/commit/2232360ae7b1d4e27e8fd6b893de464019d71a95))
* strip redundant enum values from field description hint text ([6402ff2](https://github.com/portel-dev/photon/commit/6402ff2768df24a3dedfed875ac15b0904a10763))
* strip trailing [@tag](https://github.com/tag) annotations from method descriptions ([a8a618b](https://github.com/portel-dev/photon/commit/a8a618bb2d419f423064b4d24d6eac5d02c4a88b))
* suppress runtime-injected settings method from method card list ([3b73862](https://github.com/portel-dev/photon/commit/3b73862eebb75976eae3e6299f9cb4de617dfc8a))
* surface swallowed errors in daemon client and beam file watcher ([9aeb88e](https://github.com/portel-dev/photon/commit/9aeb88ed19c5147ef021f37da26490f748946f7d))
* sync package-lock.json with package.json for CI ([fa4cb4c](https://github.com/portel-dev/photon/commit/fa4cb4c9abddd7b10acad12f0d5ac4c4c339015b))
* three async state bugs found by systematic code audit ([b25b9f7](https://github.com/portel-dev/photon/commit/b25b9f7e0e7e7bb6db7de773c87229977d0082e4))
* tighten sidebar pill spacing to prevent name clipping ([d6c26ba](https://github.com/portel-dev/photon/commit/d6c26ba2b8e6871223147adc6d74f349f70d9b06))
* unify all install paths to use installPhoton() ([2a11b33](https://github.com/portel-dev/photon/commit/2a11b336596734a800cab537846d953863c01eaf))
* unify marketplace install path and scope asset discovery ([3459b9a](https://github.com/portel-dev/photon/commit/3459b9a350bc2030fd2d9a53cd34d5c1d9b619a6))
* update badge reads as action 'Update to 4.0.1' matching marketplace pattern ([e818511](https://github.com/portel-dev/photon/commit/e818511623995b57b81077522270163d199d9f2d))
* update c8 to v11 to resolve deprecated glob warning ([3307111](https://github.com/portel-dev/photon/commit/33071116a8ad163d8f50bb962f9e25fd87da95d3))
* upgrade now re-downloads assets and updates metadata ([f7e983d](https://github.com/portel-dev/photon/commit/f7e983d2d46f6eee3648084e75cf893ea00ffa1e))
* use '/path/to/folder' placeholder for directory-mode file picker ([6fe9ad9](https://github.com/portel-dev/photon/commit/6fe9ad9062890ffdc3b03f6ac0628965c570aee3))
* use combined source+asset hash for install metadata and modification checks ([9791429](https://github.com/portel-dev/photon/commit/9791429550c7f5f73cbb90345ac9a60e6f754339))
* use formatLabel for column headers and inline nested-object keys in result viewer ([ad500ed](https://github.com/portel-dev/photon/commit/ad500edfb3beb22869e2f1340d214e3d7a5dce7e))
* use instance metadataFile in savePhotonMetadata/getPhotonInstallMetadata ([7387f71](https://github.com/portel-dev/photon/commit/7387f719379b0ccb08e9dfadf73e666cfb7803eb))
* use outline instead of box-shadow for marketplace filter pill focus state ([1a1702c](https://github.com/portel-dev/photon/commit/1a1702cfa22d438b3a6ee41556fd8e8352e9b647))
* use published @portel/photon-core instead of local file reference ([59d15e5](https://github.com/portel-dev/photon/commit/59d15e52300322ba9ec5271e7e21cfa2b59dcbd8))
* use result.content for MCP dependency setup after installPhoton refactor ([b1ca479](https://github.com/portel-dev/photon/commit/b1ca4796627b0918387af85af4aa0ef6b8bc767f))
* use vivid saturated colors for status LED indicator ([fdc7b59](https://github.com/portel-dev/photon/commit/fdc7b59b2b7556cdd80dea53729553ed8f99eb1b)), closes [#00e676](https://github.com/portel-dev/photon/issues/00e676) [#ffab00](https://github.com/portel-dev/photon/issues/ffab00) [#ff4444](https://github.com/portel-dev/photon/issues/ff4444) [#00c853](https://github.com/portel-dev/photon/issues/00c853) [#ff8f00](https://github.com/portel-dev/photon/issues/ff8f00) [#e53935](https://github.com/portel-dev/photon/issues/e53935)
* validation bug and runtime tests for functional tags ([d5d2244](https://github.com/portel-dev/photon/commit/d5d224453e781a8edabf4ee0edb8ab67d5cae6a1))
* visible slider tracks and integer step inference for number inputs ([61fd641](https://github.com/portel-dev/photon/commit/61fd641d18d89c19c205cbfb2b1193df5fa02da5))
* wait for photon indexing to complete before accepting initialize requests ([21ce2d3](https://github.com/portel-dev/photon/commit/21ce2d3dfc800654de3029a651567cd9b2b468dc))
* watch parent of workingDir to clear stale instances on deletion ([b2cd569](https://github.com/portel-dev/photon/commit/b2cd569c84d153c586ee60124eaf59b96b3e250c))
* wire extracted route modules into Beam HTTP server ([dd9c9c5](https://github.com/portel-dev/photon/commit/dd9c9c570c619491763bd4d4e00b3f2b2916642c))
* wire settings hasSettings flag through MCP transport to Beam UI ([8fa48b6](https://github.com/portel-dev/photon/commit/8fa48b6101692f720a51aa895464c8c89349dccb))

### Performance

* skip marketplace I/O when photon already installed (fast path for MCP restarts) ([969dce5](https://github.com/portel-dev/photon/commit/969dce587a6091ac37979b13fec19f2553bb247f))

## [1.9.0](https://github.com/portel-dev/photon/compare/v1.8.4...v1.9.0) (2026-02-17)

### Features

* add marketplace card detail modal with full markdown descriptions ([abbc30c](https://github.com/portel-dev/photon/commit/abbc30c1cb1276eee80d01b0d1db7a0d70b8a667))
* add marketplace Update button with hash-based update detection ([b89bab3](https://github.com/portel-dev/photon/commit/b89bab3965374e4d5d64ea6723f73c93ae1e5151))
* animate search filter transitions in result viewer ([3539c56](https://github.com/portel-dev/photon/commit/3539c564a128018f6a260cc83464d7219d5a48d6))
* marketplace uninstall button and cleaner sidebar icons ([2221c5b](https://github.com/portel-dev/photon/commit/2221c5b8c89a267f85f0ea6a2ed5234deda2879f))
* rename Preview to Inspector, auto-parse on debounce ([b461dd2](https://github.com/portel-dev/photon/commit/b461dd22f771f4d3021166e0e2a7d06501d49f2d))

### Bug Fixes

* add period separator between summary and extended description in docblock parsing ([eb6ffc3](https://github.com/portel-dev/photon/commit/eb6ffc3388b9a93cdabb04ed10b074e06ddc6acd))
* apply formatLabel to method detail title, breadcrumbs, and config form fields ([58abfe0](https://github.com/portel-dev/photon/commit/58abfe08d36e8250ac8d048533df05453d1a6363))
* hide templates for existing photons and fix result filter rendering ([0385130](https://github.com/portel-dev/photon/commit/0385130d7dc0f9ffa61e870cc7783b3175568df0))
* include icon field in marketplace manifest generation ([c1eef2c](https://github.com/portel-dev/photon/commit/c1eef2c062c51852eddd5f76ba2e75b6ff4d9b0a))
* instant sidebar appearance after install and auto-refresh stale caches ([bf41944](https://github.com/portel-dev/photon/commit/bf41944151743ccbfd2f75f15963355713d3aad7))
* move template picker from editor to New Photon creation flow ([5cee586](https://github.com/portel-dev/photon/commit/5cee586637fc2189c666cc3bf510051445749d31))
* paragraph-aware description parsing in PhotonDocExtractor ([f1924d5](https://github.com/portel-dev/photon/commit/f1924d558c7b421dd36c73e7a258de824ed60477))
* polish theme palette and sidebar initials icons ([ce3ee05](https://github.com/portel-dev/photon/commit/ce3ee05e163302c477a9caae953e762637ea019e))
* redesign template gallery as a clean vertical list ([36103e0](https://github.com/portel-dev/photon/commit/36103e087817c0cae06d85df48ebb8cf20920515))
* scheduled job template broken by */5 cron syntax inside JSDoc ([acac74f](https://github.com/portel-dev/photon/commit/acac74f433fd49b7b6cd12e2de5a1ea1580e8884))
* show "prompts" instead of "methods" for template-only photons ([6624625](https://github.com/portel-dev/photon/commit/66246255a2b2ca36f109cb94a5d721c8687cf99b))
* strip all docblock directive tags from card descriptions ([949a99b](https://github.com/portel-dev/photon/commit/949a99bd1a075d7f52acc7c0ad13bf4e1038380a))
* sync context-bar isGenericDesc check with beam-app ([ff601e7](https://github.com/portel-dev/photon/commit/ff601e7b1308350b0a7c8c52dc0db4ffafd7cfe7))
* truncate marketplace card descriptions to 3 lines with ellipsis ([16c4e08](https://github.com/portel-dev/photon/commit/16c4e08098f6a466418a8b2c31052b7cf974f943))

## [1.8.4](https://github.com/portel-dev/photon/compare/v1.8.3...v1.8.4) (2026-02-17)

### Features

* show version at Beam startup and compact port-finding output ([ce4ce81](https://github.com/portel-dev/photon/commit/ce4ce81fbd230db6100dc78ee42bd1a350a5525e))

### Bug Fixes

* auto-repair missing assets for photons installed before v1.8.3 ([f3ad70a](https://github.com/portel-dev/photon/commit/f3ad70a55daa87ebefff04cdf915763af246e834))
* render markdown arrays as formatted content instead of chips ([8eea720](https://github.com/portel-dev/photon/commit/8eea72078d1227ac0adaa0838862d533a07c0c9b))

## [1.8.3](https://github.com/portel-dev/photon/compare/v1.8.2...v1.8.3) (2026-02-17)

### Bug Fixes

* auto-fetch marketplace manifest in fetchMCP when cache is empty ([d6b2d78](https://github.com/portel-dev/photon/commit/d6b2d789bdfeb28052ecee9b80f587087295fa7f))
* harden marketplace against corrupted config and missing cache ([04d11f1](https://github.com/portel-dev/photon/commit/04d11f18f051fb750ae2f7626dad0bf0dd3f8b01))

## [1.8.2](https://github.com/portel-dev/photon/compare/v1.8.1...v1.8.2) (2026-02-17)

### Bug Fixes

* add automated pre-release verification to prevent broken releases ([7dcbd79](https://github.com/portel-dev/photon/commit/7dcbd79e70576f30d761b4fe796c5c00b1ae19ba))
* convert step yields to emit pattern in internal photons ([73022fa](https://github.com/portel-dev/photon/commit/73022fa2a9c97d44b7533067529eed81612f97b9))
* handle multi-line and single-line yields in pre-release check ([df62376](https://github.com/portel-dev/photon/commit/df62376b435c6a3aa0084c4fef387314b2e5940f))
* improve fresh install robustness and error visibility ([a3a1cb7](https://github.com/portel-dev/photon/commit/a3a1cb7cbf69c7a1cada6ab12cec1e8a2dbf6c0b))

## [1.8.1](https://github.com/portel-dev/photon/compare/v1.8.0...v1.8.1) (2026-02-16)

### Bug Fixes

* Moved esbuild from dev dependencies to dependencies in package.json ([2b57589](https://github.com/portel-dev/photon/commit/2b57589755455c566ffa5b36c4ac9f9d00b7a997))

## [1.8.0](https://github.com/portel-dev/photon/compare/v1.7.0...v1.8.0) (2026-02-16)

### Features

* `photon shell init` for direct photon commands in terminal ([2fede55](https://github.com/portel-dev/photon/commit/2fede5519d96026864a3a6d901518c45d74909ac))
* add breadcrumb method dropdown for quick method switching ([4ed44a9](https://github.com/portel-dev/photon/commit/4ed44a9fe2f4fda1ece880478bfaebac6b525b02))
* add charts, metrics, gauges, timelines, and dashboards to auto-UI ([fe6d72f](https://github.com/portel-dev/photon/commit/fe6d72f7e294022203d2c7ef1bd265ada9424abc))
* add OKLCH theme customizer to Beam settings panel ([8efdf96](https://github.com/portel-dev/photon/commit/8efdf96dc78782959052a50aebbbde25270b4a3b))
* add purpose-driven UI type detection in result-viewer ([b4ab09f](https://github.com/portel-dev/photon/commit/b4ab09f2dec7cb2846d26869dfabda7b108432c6))
* add shared button, form, and badge stylesheets ([cf24ffd](https://github.com/portel-dev/photon/commit/cf24ffd20c90c75f2491143cb698efc0c75c5b71))
* add shopping cart layout and composable container formats to auto-UI ([3c00445](https://github.com/portel-dev/photon/commit/3c00445fe1abf5d9b7e39860b55dd391d810c719))
* add Space Grotesk display font and systematic type scale to Beam ([31906e7](https://github.com/portel-dev/photon/commit/31906e7161fbf7b0c6d485f50eba4d6e1a1ad3d7))
* add structuredContent to tool responses for MCP Apps compatibility ([7a841cd](https://github.com/portel-dev/photon/commit/7a841cdb29f7ed15116a8d7ea1d091100af745b8))
* add top-level mermaid layout detection and rendering ([abd7d6d](https://github.com/portel-dev/photon/commit/abd7d6dc310956b1677d9dc0e1ca1de637969093))
* add visual richness to method cards with design system colors ([773e893](https://github.com/portel-dev/photon/commit/773e8933d8566cd9906d16d2beef5f26f0d1040f))
* add warm data animations and recency heat to result-viewer ([10915a9](https://github.com/portel-dev/photon/commit/10915a94fc4bb15bfe10b43bc69cc3c2b3c8aff4))
* auto-detect and render mermaid diagrams in card cell values ([bdbc878](https://github.com/portel-dev/photon/commit/bdbc878adc28be529d4f8a2c90b69d51840a3a7f))
* auto-install shell integration with tab completion ([d5d5492](https://github.com/portel-dev/photon/commit/d5d5492d339fe9f4670a7c2c5b00e99e4dddaec2))
* auto-reload daemon when stateful photon files change ([5b9e722](https://github.com/portel-dev/photon/commit/5b9e7220c832c286725450e2ed2d0a1420ae7db6))
* auto-scaffold empty .photon.ts files when detected by Beam ([8ab430c](https://github.com/portel-dev/photon/commit/8ab430c064bff2187e54283544bbb9db7954bccd))
* auto-start daemon and reconnect subscriptions for stateful photons ([9f40f34](https://github.com/portel-dev/photon/commit/9f40f341d8257fda16423a7a19bc9ab0a723d48f))
* deletion exit animation and reorder detection in diff ([b381c01](https://github.com/portel-dev/photon/commit/b381c01e4f1eccb0104c37dc4ff56fb810fb5de1))
* enable live collection subscriptions for non-array results ([f4ce92e](https://github.com/portel-dev/photon/commit/f4ce92e7dfe810380894b927131c42fc273da79d))
* ephemeral CLI instances + Beam instance switcher ([be4ca7a](https://github.com/portel-dev/photon/commit/be4ca7a5b53900eb8bf1be62633d568a5cd0409b))
* fix [@inner](https://github.com/inner) hints, stack visuals, and add dynamic format animations ([5cefcfa](https://github.com/portel-dev/photon/commit/5cefcfae01d346330b8ba3b3fb425cc06d64a640))
* full tab completion for photon methods, params, and instances ([ce36d8b](https://github.com/portel-dev/photon/commit/ce36d8b9e78ea0b513f83a80efc79bd8eaf64572))
* handle 'state' injection type in loader and update test assertions ([057c51b](https://github.com/portel-dev/photon/commit/057c51b52582155a0e5764de598a697603c36c7e))
* implement `photon use` and `photon set` CLI commands ([effa1ed](https://github.com/portel-dev/photon/commit/effa1edbd9af918ce86cdd41094f15608e937ef7))
* launch Beam by default when running `photon` with no args ([058aa73](https://github.com/portel-dev/photon/commit/058aa7318f767834851a28468d37daf35997cccf))
* move file watcher to daemon for universal hot-reload ([ef7aad4](https://github.com/portel-dev/photon/commit/ef7aad4d63f72d96a759912d220af7b4b7006768))
* named instances for stateful photons via MCP tools ([ef466c6](https://github.com/portel-dev/photon/commit/ef466c6cfb62910055c191578e072c0ea1da1536))
* per-tab instance sessions and create-instance button in Beam ([0c6bcbd](https://github.com/portel-dev/photon/commit/0c6bcbd76154e0ea018cf8372798a7e83301bf33))
* persist instance selection across tab refresh via sessionStorage ([9c8cd65](https://github.com/portel-dev/photon/commit/9c8cd65991f0dc96e7793d31d86cfed033471922))
* PowerShell support and unsupported shell handling ([1147410](https://github.com/portel-dev/photon/commit/114741000b96dcc101438c00c87d9bb4bb7352ed))
* progressive enhancement — adapt MCP responses by client capability ([4bf499e](https://github.com/portel-dev/photon/commit/4bf499e15852565d312e13a2019a2692cfbdfa6c))
* pulsing LIVE indicator for results with active subscriptions ([3048978](https://github.com/portel-dev/photon/commit/30489783077e9641d2101da4e808bfe1d45ea378))
* real-time push updates for stateful photons across clients ([cb3a448](https://github.com/portel-dev/photon/commit/cb3a4480e2e8d3527ae9b6b148a7f6ee48ec11b8))
* render markdown in method descriptions with educational format-showcase content ([07db8b2](https://github.com/portel-dev/photon/commit/07db8b29bf2613c41b3c453f813b687329dd2d1a))
* replace custom instance bar with MCP elicitation-based instance selection ([7539ee4](https://github.com/portel-dev/photon/commit/7539ee4fec785c5ce03227711ee7419b17eb9625))
* route stateful photon calls through daemon for cross-client sync ([cdc1bd3](https://github.com/portel-dev/photon/commit/cdc1bd34371bbf53a1fbc7c985a423d381f02d50))
* session-scoped CLI instances via CLISessionStore ([da7e468](https://github.com/portel-dev/photon/commit/da7e46855fe1b89d8a74f0695a58eccc5149ce03))
* show fullscreen button for all photon views ([ebbb39b](https://github.com/portel-dev/photon/commit/ebbb39b22cf0b5b6a74e69066dc050447db88b85))
* smooth mermaid re-rendering for streaming diagram updates ([09aec4d](https://github.com/portel-dev/photon/commit/09aec4d15e8cd7d0dcb5faae66c08d7ab85f185c))
* strengthen real-time animations and add warmth to chips ([d043c05](https://github.com/portel-dev/photon/commit/d043c0587cdd6d895618d0b5bbf280b93faec8e8))
* support sync photons, fix param extraction, limit connection retries ([4cc348d](https://github.com/portel-dev/photon/commit/4cc348d3dfbea17cade214f21db51d5237a1ccbb))
* support YAML frontmatter in markdown rendering ([6037144](https://github.com/portel-dev/photon/commit/6037144a022295d6b561b2c8b2af8254fed5f6c5))
* update Beam light theme to warm cream/beige palette ([9fa2fbf](https://github.com/portel-dev/photon/commit/9fa2fbff912aae8092f247767dd891567fced5eb))

### Bug Fixes

* add animation support to chips/tags layout in result-viewer ([da17cb9](https://github.com/portel-dev/photon/commit/da17cb9aed3e1d45064a189489c6ef64ad2d073f))
* add comments to empty catch blocks in cache refresh calls ([c997081](https://github.com/portel-dev/photon/commit/c997081db256ce57b898b9b2f987cce29d7a9864))
* add fullscreen button to external MCP app view ([a7b7638](https://github.com/portel-dev/photon/commit/a7b7638fbc6bb2a6021821fb2b9e75b5e23f4392))
* add mermaid fallback detection in _renderText for timing resilience ([e904e2d](https://github.com/portel-dev/photon/commit/e904e2dac1e2076a7de64de1fa3970bd51bb7ccd))
* add missing 'grid' case in _renderContent() for [@inner](https://github.com/inner) grid hints ([0fda7ab](https://github.com/portel-dev/photon/commit/0fda7ab4db07db04c4fd9a3228dc49cd6baf3409))
* add scroll hint for external MCP app views ([92f4483](https://github.com/portel-dev/photon/commit/92f4483bc58210b1ddc439330b671645b92a351f))
* align arrow and text in metric delta pill ([31cbfef](https://github.com/portel-dev/photon/commit/31cbfefa876c2bea098494c4b1ab3bb0aa70f0a3))
* align MCP Apps bridge theme with platform-compat bridge ([a3a38a1](https://github.com/portel-dev/photon/commit/a3a38a1eb6328256e86b9de51ff4d97386501fc2)), closes [#f4f4f5](https://github.com/portel-dev/photon/issues/f4f4f5) [#ffffff](https://github.com/portel-dev/photon/issues/ffffff)
* align MCP Apps theme tokens with platform-compat bridge ([4d3143d](https://github.com/portel-dev/photon/commit/4d3143d93a42b4a44a02c8c6cbb38ab9dbf20c05))
* align STDIO and SSE transport responses for MCP parity ([3e5089a](https://github.com/portel-dev/photon/commit/3e5089ae1855f5b7db59ecc9ffd391d1d3253eb2))
* align table sort indicators inline with header text ([2af47ef](https://github.com/portel-dev/photon/commit/2af47efdf73d9a074e2e34f79b51ae399ee60faa))
* allow _use(name: "") to switch to default without elicitation ([4da7cfa](https://github.com/portel-dev/photon/commit/4da7cfa189a0a87c64eff89a95ce9134499dd48a))
* always reset CLI session to default to prevent instance leaking ([5b4596e](https://github.com/portel-dev/photon/commit/5b4596ee2a91fa720edd88de4933bb798219210f))
* animate toggle switches on click in overflow menu ([b04a4e4](https://github.com/portel-dev/photon/commit/b04a4e42308de3978845477bf9d28841028a78c2))
* animations and warmth broken by ID field mismatch + no persistence ([18f4828](https://github.com/portel-dev/photon/commit/18f4828a90b975b6b37f45e7dedcbf7ee18a67e0))
* auto-detect enum values from description and render as dropdown ([35153df](https://github.com/portel-dev/photon/commit/35153df7cf572c79749b25abf24f0f3cedb96769))
* break infinite state-changed refresh loop in beam-app ([e226fc7](https://github.com/portel-dev/photon/commit/e226fc7ab9419e89b173fe4d7a65165584bb76b4))
* broadcast state-changed after instance switch for UI refresh ([33110cf](https://github.com/portel-dev/photon/commit/33110cfc7fc1497738a3ff1e5563856b704718e5))
* browser back navigation and context-bar/method-detail card spacing ([1482908](https://github.com/portel-dev/photon/commit/1482908cb10ff97223ad82a43f3692c0bfe57d4e))
* clean external MCP error logs and harden SSE reconnection ([5d86f86](https://github.com/portel-dev/photon/commit/5d86f86ca15de985408439850bb62a232eb43d2f))
* clean up method card design - remove green border, ready badge, autorun tag, and run button ([e031c00](https://github.com/portel-dev/photon/commit/e031c00457b0d5873ef25669db9e3116242dcd68))
* consolidate table header template to single line, remove whitespace formatting ([0b3b857](https://github.com/portel-dev/photon/commit/0b3b857ea4ca12d445c19c21daadef453d5051aa))
* correct CLI list format test to match box-style rendering ([ed924e3](https://github.com/portel-dev/photon/commit/ed924e3121990b8d9d401e7d974280ab1b77c21c))
* correct SVG largeArcFlag calculation in gauge rendering ([a3f9a1b](https://github.com/portel-dev/photon/commit/a3f9a1bedb42c68e529ae43b986c70f5efa46b02))
* dev:beam now auto-rebuilds backend, frontend, and restarts Beam ([7368c4d](https://github.com/portel-dev/photon/commit/7368c4d30fcd11d798cf05347974d1fd6a43efbb))
* display human-readable labels for method names, parameters, and strip markdown from descriptions ([d59496e](https://github.com/portel-dev/photon/commit/d59496e4a3f0aa8d97b4ea3448858d6e831cc58e))
* don't pass axis labels as chart field-name hints ([2d6e761](https://github.com/portel-dev/photon/commit/2d6e7613ee756d856a89ffdf4b22774d289a3ab0))
* eliminate all as-any casts and dead parameters in server/loader ([2510545](https://github.com/portel-dev/photon/commit/2510545d09899cfd33cc16665fe50a9487a66b7c))
* ensure dev:beam kills all child processes on Ctrl+C ([64abcd5](https://github.com/portel-dev/photon/commit/64abcd5795eaecceeac3bb4923d59415725dafcb))
* ensure method dropdown renders above method card content ([973d40f](https://github.com/portel-dev/photon/commit/973d40f91b7b694826d43d497a0010d7450fda81))
* extract [@format](https://github.com/format) tags from method docblocks ([9915c7d](https://github.com/portel-dev/photon/commit/9915c7d76ae141a7f3d5ba0e389075c7c62fad47))
* flush fullscreen button to container corner ([5a53d3e](https://github.com/portel-dev/photon/commit/5a53d3ee88e3b4315d219ab4225113f4e9a203be))
* format security-hardened files with prettier ([58041ea](https://github.com/portel-dev/photon/commit/58041ea3fa16cbcaad70ee2d1f82f65644d4228a))
* fullscreen only for results, overflow menu theme and toggle styling ([399736f](https://github.com/portel-dev/photon/commit/399736fec1d4513c116391185ffba6a3147ba004))
* fully consolidate table header template to single line, eliminate all newlines ([75821d0](https://github.com/portel-dev/photon/commit/75821d0f246edfe5a4b5747568fdd5f99080d874))
* gauge arc not rendering due to HTML namespace issue ([ee8ec63](https://github.com/portel-dev/photon/commit/ee8ec6354586805a4e15751534dfb6251d24a1f6))
* handle union types in CLI arg parsing for relative adjustments ([8376a5d](https://github.com/portel-dev/photon/commit/8376a5d6d2901adf2bfcd564e35ecee55a995c47))
* hide internal methods, expand object params into sub-fields, filter placeholder descriptions ([3737d35](https://github.com/portel-dev/photon/commit/3737d352f1aaf1f98a08e3fe214134cfe495b6a1))
* improve Beam UI result viewer and form polish ([f93d594](https://github.com/portel-dev/photon/commit/f93d594a8254a9ef162dac0eb129964db779585b))
* improve Beam UI visibility for version badges, param tags, and LED indicator ([abb1f49](https://github.com/portel-dev/photon/commit/abb1f4916dbdc72cde8b84099c5199f3606ac22c))
* improve CLI help text, method listing, table rendering, and info command ([d69115a](https://github.com/portel-dev/photon/commit/d69115a8d14a06444d07f61966a5f656e19b007a))
* improve mobile layout for method detail view ([d582e34](https://github.com/portel-dev/photon/commit/d582e3462b0b7fe7e9e191a50f1d76e781d8dd99))
* improve mobile touch affordances, warning section differentiation, and remaining hardcoded colors ([bcd35fa](https://github.com/portel-dev/photon/commit/bcd35fabf7a20a4a09df60a13418aac6200d57a0))
* improve timeline visual with connecting line and dot alignment ([d55949a](https://github.com/portel-dev/photon/commit/d55949a695a1da7089c584d8abeb920667461bfe))
* label palette swatches in theme settings for clarity ([fc98643](https://github.com/portel-dev/photon/commit/fc98643a1f359843a13d6721f249c72f396f497c))
* move fullscreen button above app container to prevent overlap ([213c414](https://github.com/portel-dev/photon/commit/213c4145eb659bfc77f018cee31ee3e908bec02c))
* move fullscreen button to Beam chrome level ([84d2518](https://github.com/portel-dev/photon/commit/84d25180c5152b3c85142efb2e3317f0173f6b21))
* move LIVE indicator from result card to context bar breadcrumb ([04251c5](https://github.com/portel-dev/photon/commit/04251c50a709c0866a4ce694cf24c3f773a6baef))
* move UI type unwrapping from render() to updated() lifecycle ([2564629](https://github.com/portel-dev/photon/commit/25646293fd57919bd73f1e8ec7d221ee8dba0c5c))
* optimize card spacing to reduce excessive whitespace ([3378236](https://github.com/portel-dev/photon/commit/3378236f302c09b6795c9d161c5519207f8b5f67))
* optimize spacing and padding across auto-UI formats ([37637f6](https://github.com/portel-dev/photon/commit/37637f655ea9001b07c298aa3b8aed3724364dc7))
* parse [@format](https://github.com/format) chart:bar correctly instead of truncating at colon ([63ed978](https://github.com/portel-dev/photon/commit/63ed97869f1c448240e25c17115d6dbc413fc418))
* pass photonPath in daemon command requests from CLI runner ([02da02f](https://github.com/portel-dev/photon/commit/02da02f74a2dccffede8adf47e2150f5ac899bff))
* place instance dropdown in active list view, not dead code ([d1f5c09](https://github.com/portel-dev/photon/commit/d1f5c093c14a6ae894f118fd7a7f808a517d4216))
* pre-release audit fixes for security, dependencies, and test stability ([498887d](https://github.com/portel-dev/photon/commit/498887dd0bf071236ed319fa99f87b1f9e3fc83d))
* prevent Beam server disconnections with improved connection stability ([6cc7416](https://github.com/portel-dev/photon/commit/6cc7416a84c88d30c5e1df0a00e1d7ffdec03738))
* prevent instance drift when daemon sessions expire ([1c500bf](https://github.com/portel-dev/photon/commit/1c500bfe09fc9149deda23cc2b268b3e3158120f))
* prevent silent refresh cascade when viewing mutation methods ([9082b4d](https://github.com/portel-dev/photon/commit/9082b4d5a45120e985eab78306549ea2f4f905ce))
* prevent silent refresh from replaying mutation methods ([793b4a0](https://github.com/portel-dev/photon/commit/793b4a0ad4f461c63116107ac48b3ed874e89f09))
* prevent SSE server crash on client disconnect ([e555896](https://github.com/portel-dev/photon/commit/e55589669cdd6b5a3e111946b095e940e27ccc21))
* push fullscreen button to true top-right corner ([e8d6149](https://github.com/portel-dev/photon/commit/e8d614923d1bc8be375e6e581920f0ee9772c413))
* put Execute button above Cancel when stacked on narrow screens ([1f8886d](https://github.com/portel-dev/photon/commit/1f8886d17365ecc5bcfa8332ac3c3df99469df0f))
* redesign app layout divider and move fullscreen button ([5d0af21](https://github.com/portel-dev/photon/commit/5d0af21aaf0894a959efc0070576cac1ea284c63))
* reduce daemon reconnection log spam and prevent duplicate shutdown ([b6496c9](https://github.com/portel-dev/photon/commit/b6496c9175fe3dfda6a9a4547ff640a7327042e2))
* reduce excessive vertical spacing in container formats ([a15f47f](https://github.com/portel-dev/photon/commit/a15f47f10b30768c42a8b70787e68cb71a84a313))
* reduce excessive vertical spacing in format-showcase components ([872d82f](https://github.com/portel-dev/photon/commit/872d82f3d4cf3749e25118c69716d76641314211))
* reduce table cell padding for better space efficiency ([43144b4](https://github.com/portel-dev/photon/commit/43144b4ec73d6ebf8505cb14d90b85c0d74574f9))
* reduce vertical spacing in accordion and stack formats ([5fff2be](https://github.com/portel-dev/photon/commit/5fff2be83f9ded6a7d239967c5b22b2d722b7da4))
* remove 800px height cap on MCP app iframe renderer ([eb635ef](https://github.com/portel-dev/photon/commit/eb635ef897d816af1ff91ae1fc539d06dbc8a328))
* remove dead code, deprecated wrappers, and silent error swallowing ([c745748](https://github.com/portel-dev/photon/commit/c7457481977c4845a08a146ee7da4e61bcf983f2))
* remove duplicate fullscreen button from mcp-app-renderer ([a746db4](https://github.com/portel-dev/photon/commit/a746db4a06d0d31c450e8a7d95741fd78977a2ec))
* remove whitespace in accordion chevron span to prevent line breaks ([4bfb0e3](https://github.com/portel-dev/photon/commit/4bfb0e31c50eade35b4b093676835f498b5e83a5))
* remove whitespace in list badge and chips rendering templates ([6ef7bfc](https://github.com/portel-dev/photon/commit/6ef7bfcee4d055af148f218cbdefb3368663d150))
* remove whitespace in table header template that created line breaks ([d18b79a](https://github.com/portel-dev/photon/commit/d18b79a20543d38c7a7779831d2d0e083893595f))
* render structured table data as ASCII table in CLI output ([3186927](https://github.com/portel-dev/photon/commit/3186927ae35849c9aa6f603a1a0f03084bcc786d))
* replace ↕ (U+2195) with ⇅ (U+21C5) for better cross-browser font support ([b77eba3](https://github.com/portel-dev/photon/commit/b77eba3e01ad39dabe0f6edc9c93d7fca163f2f9))
* replace hardcoded border-radius values with CSS custom property tokens ([f60cf9b](https://github.com/portel-dev/photon/commit/f60cf9bcb2db08460af986b318b6c23d9097e592))
* replace tiny chevron character with crisp SVG icon ([b09068e](https://github.com/portel-dev/photon/commit/b09068e740139213c13fa2d5b5d078ff53da6766))
* reserve space for parameter tags in method cards for visual uniformity ([be0a511](https://github.com/portel-dev/photon/commit/be0a51182e956e66d2c641c54846bdab0d5d5db5))
* resolve scrollbar, chart, tab, and accordion issues across formats ([18eaa41](https://github.com/portel-dev/photon/commit/18eaa417cbcec463b62bcca18c3685cebbf881b0))
* resolve SSE keepalive bug causing constant reconnections ([d5d7032](https://github.com/portel-dev/photon/commit/d5d70324057e3c0fead6b8c3cdc6380227ca7d95))
* resolve visual issues across format-showcase components ([38bb8a5](https://github.com/portel-dev/photon/commit/38bb8a53b410bbe5c38e0e75ddde4ac9cc388c99))
* restore fullscreen button and fix theme propagation for external MCPs ([425dfec](https://github.com/portel-dev/photon/commit/425dfecbcc7623786cda33eb526cc83979210d8d))
* restore fullscreen button to absolute top-right inside container ([b9f47fe](https://github.com/portel-dev/photon/commit/b9f47fe05be960fc7655b74e88b4d2877489bd22))
* restore fullscreen button to beam-app and improve theme propagation for MCP apps ([09f12a7](https://github.com/portel-dev/photon/commit/09f12a729e73748fa1c660a3aab4daabfca7ba6c))
* return 'Done' acknowledgment for void method results and restore label tags ([8a956c9](https://github.com/portel-dev/photon/commit/8a956c90f3f21582036d9f7f3f2d9a577b1499ec))
* right-align LIVE indicator in context bar ([c691f7b](https://github.com/portel-dev/photon/commit/c691f7b2c310e0529df3e95b8f2d71f4e5389599))
* show (default) label and auto-execute on instance switch ([d6f9493](https://github.com/portel-dev/photon/commit/d6f9493daef276d1b2a36d96f9a24b8f136bd342))
* show instance dropdown in both list and form views ([d2da743](https://github.com/portel-dev/photon/commit/d2da7434a91b71a747fae412714309bca76e1315))
* split content CSS into text and structured layout modes ([3aec015](https://github.com/portel-dev/photon/commit/3aec0156dea9a31fccb7f8cdf1c7703b9c1f4157))
* standardize error handling across CLI, daemon, and context stores ([f1cfe6d](https://github.com/portel-dev/photon/commit/f1cfe6dc96c890d4e5701e07dbcbf4aa75fe97b8))
* state persistence accesses user class through PhotonMCPClass wrapper ([d59776c](https://github.com/portel-dev/photon/commit/d59776ca038f3a39afba768cd151718765f26110))
* strip markdown to plain text in method card descriptions ([10f9314](https://github.com/portel-dev/photon/commit/10f9314b015241ae5d3cae4252299a419cfc298b))
* subscribe to daemon state-changed lazily on first tool call ([6d59d34](https://github.com/portel-dev/photon/commit/6d59d34c77a64320f9ba02cc67f6bb88c9e4236b))
* subscription retry on initial failure and instance restore race ([3da85b6](https://github.com/portel-dev/photon/commit/3da85b6355221c3b30a5ad21add7e59189b2271b))
* sync Beam session to current instance for stateful photons ([acc3cc5](https://github.com/portel-dev/photon/commit/acc3cc5db5e3f51c43147c8c677135703dc301f2))
* table rendering, description truncation, and --no-flag parsing in CLI ([fcdaa57](https://github.com/portel-dev/photon/commit/fcdaa576af1fc3bdbd23f9297a85b0730400a852))
* test all known UI clients and align docs with code ([8130119](https://github.com/portel-dev/photon/commit/8130119196e006cc224941cfbc53ab37383a3508))
* tighten fullscreen button position to top-right corner ([a3e128a](https://github.com/portel-dev/photon/commit/a3e128ad624852becfec7a7e51e0d05d61db5055))
* timeline dot alignment and connecting line visibility ([01bf6ea](https://github.com/portel-dev/photon/commit/01bf6ea482a796ba1df55064c6588eddbe458651))
* update @portel/photon-core to 2.8.2 and @portel/cli to 1.0.2 ([b82963c](https://github.com/portel-dev/photon/commit/b82963cce6b29097844437ff83af64dc92c045c6))
* update @portel/photon-core to 2.8.3 ([fc240ea](https://github.com/portel-dev/photon/commit/fc240eaff02096440cae16ac2ee92e90a4c72b1c))
* update stale comments and docs for SEP-1865 default change ([42cc7af](https://github.com/portel-dev/photon/commit/42cc7af71ae7f8738f5140e62737cacd4a0f75fe))
* use colon separator for instance in breadcrumb (list:macha / get) ([31c384e](https://github.com/portel-dev/photon/commit/31c384e3ae11584ffb673625a905b0741ca0d350))
* use negative sticky top to push button flush with main-area edge ([d7ccd99](https://github.com/portel-dev/photon/commit/d7ccd99bfc894a9cc65b12b6a9f72d2f9e692d92))
* use stable Lit-managed container for streaming mermaid updates ([25720e4](https://github.com/portel-dev/photon/commit/25720e4ef40e96e899119b3045a92cda1669c03f))
* use stable session ID for stateful photons in CLI runner ([2e84017](https://github.com/portel-dev/photon/commit/2e8401719109f0d9e57d59a08bab6628e751b6cd))
* use TTY-based session key for CLI instance scoping ([02e5255](https://github.com/portel-dev/photon/commit/02e525571e0e80abca6387f1866101c4215606b5))
* validate number and enum parameters, show help on no-args ([ec869ed](https://github.com/portel-dev/photon/commit/ec869ed4faac9fdc5212a6e2e81b26491a939969))
* warmth highlighting persists after page refresh ([e015e02](https://github.com/portel-dev/photon/commit/e015e02bc8396dfa7aad196106721156a0b2383a))
* warmth survives refresh + animations trigger on diff ([70bfd69](https://github.com/portel-dev/photon/commit/70bfd699c5ebf0ef3fd90c548b98ef3aaa2ed09b))

## [1.7.0](https://github.com/portel-dev/photon/compare/v1.6.1...v1.7.0) (2026-02-08)

### Features

* upgrade photon-core to 2.6.1 and re-export elevationLight ([e47f777](https://github.com/portel-dev/photon/commit/e47f7779837a309db1af89fe0c0513c66db9a147))
* upgrade photon-core to 2.7.0 ([ce0a289](https://github.com/portel-dev/photon/commit/ce0a289dfa60eaa7ee0956b7684220fcf00cee0b))
* wire async execution and cross-photon calls in runtime ([7647f1e](https://github.com/portel-dev/photon/commit/7647f1e8ede2382ba7e135b8f92ba3bdf93dc062))
* wire execution audit trail into tool execution pipeline ([4090072](https://github.com/portel-dev/photon/commit/40900725011417c00ad13977fcb8c8e5bf178cdb))

### Bug Fixes

* add body size limits, enforce HTTPS marketplace, add security headers ([e149f44](https://github.com/portel-dev/photon/commit/e149f44bf6cfdc4862eb4e85c13149fe61277cb5))
* add mitigations for sandboxing, postMessage, and rate limiting ([648f120](https://github.com/portel-dev/photon/commit/648f1208cf64310a71056582950e415035747d86))
* add path validation and auth guards for HTTP endpoints ([81efc70](https://github.com/portel-dev/photon/commit/81efc701a5852194417ef82d1caa9be5ce923fd1))
* format code with prettier and fix IPv6 test failure in CI ([98a366d](https://github.com/portel-dev/photon/commit/98a366d4dd1a4c5abf50e3eda6ea31d87b16dc04))
* format loader.ts and server.ts with prettier ([4088f2d](https://github.com/portel-dev/photon/commit/4088f2daebde992b1d8b7ebeec0d66f2d8ba45e8))
* inline npm package validation in maker photon ([e6d1950](https://github.com/portel-dev/photon/commit/e6d1950be1de3a1259f95c9b5ba1c62deeb16b77))
* prevent command injection in npm view calls and URL handling ([fbcc443](https://github.com/portel-dev/photon/commit/fbcc443441f0456e3927fd436009cad50643c017))
* prevent path traversal in asset downloads and harden server binding ([6ff9557](https://github.com/portel-dev/photon/commit/6ff9557d2a81f1dda4ff860cbbd1e0e00d291aa8))
* prevent XSS, prototype pollution, and code injection ([f7c95cd](https://github.com/portel-dev/photon/commit/f7c95cddf97824f54be2e67776ffc3f0791b4634))
* remove duplicate marketplace content and stray photon files ([5bf7c25](https://github.com/portel-dev/photon/commit/5bf7c25948ada8a0d067b6ec3f0f6be55eae7bea))
* remove marketplace sync from runtime repo, clean up artifacts ([bf1dd4a](https://github.com/portel-dev/photon/commit/bf1dd4acc3bf5c6989f5eb5942ca3c0c85cfb18e))
* simplify release workflow to validation-only ([65cf9ed](https://github.com/portel-dev/photon/commit/65cf9ed435fd8de509e6270660cb8b8ce91cd904))

## [1.6.1](https://github.com/portel-dev/photon/compare/v1.6.0...v1.6.1) (2026-02-06)

### Bug Fixes

* move esbuild from devDependencies to dependencies ([0349502](https://github.com/portel-dev/photon/commit/034950272f78111974e32c26914f531883b7e556))

## [1.6.0](https://github.com/portel-dev/photon/compare/v1.5.1...v1.6.0) (2026-02-06)

### Features

* add [@label](https://github.com/label) tag for custom photon display names ([36c0cae](https://github.com/portel-dev/photon/commit/36c0cae68af523f5372d807b7f4df96f73d1d01f))
* add [@persist](https://github.com/persist) tag support for settings UI ([803bee6](https://github.com/portel-dev/photon/commit/803bee621252a4034de3e7c3f5b65bed6d98685d))
* add HTTP Streamable transport for external MCPs ([e5d60b8](https://github.com/portel-dev/photon/commit/e5d60b87d36dac78adb0da76a92ca08aac1af6b0))
* add MCP Apps Extension support for external MCPs ([cd106e4](https://github.com/portel-dev/photon/commit/cd106e4c5b3c2a29d0ca79f3a2d9abf622ae4279))
* add method type badges for autorun/webhook/cron/locked ([15ffd49](https://github.com/portel-dev/photon/commit/15ffd49a33d6c066f47329c8e2338825f21a7a47))
* add Photon Studio inline code editor for Beam ([d1a4807](https://github.com/portel-dev/photon/commit/d1a4807629c879fd874eb5dc8362d7fbbe8e7e32))
* add Swagger-style array forms with Form/JSON tabs ([eaccc44](https://github.com/portel-dev/photon/commit/eaccc4444a9b73bf35afd9181f3da0b1090de8bf))
* add tab bar for MCPs with multiple UIs and fix theme switching ([080a53f](https://github.com/portel-dev/photon/commit/080a53f38019100f0ab82b256ce377f68adf7348))
* add universal MCP support in Beam ([505057d](https://github.com/portel-dev/photon/commit/505057d40ae8c9b9b5db93c3668a0adbed2178d7))
* adopt official MCP Apps Extension SDK (AppBridge) ([a873131](https://github.com/portel-dev/photon/commit/a873131a2e85bcef5b2ed65c5982fe5c0037fc95))
* always-visible Run button on method cards ([5c41d94](https://github.com/portel-dev/photon/commit/5c41d94c3a76e0e4243100a5d282ed21adef8346))
* app-first layout with pop-out for App photons ([8d8df6f](https://github.com/portel-dev/photon/commit/8d8df6f4ebb5d19a3bd97b15bb59ae6f7cbe79d7))
* auto-invalidate dependency cache on photon-core version change and auto-restart daemon on connection failure ([d4ff898](https://github.com/portel-dev/photon/commit/d4ff898f2c3a561533a61f10cd4d99860b0e30dc))
* auto-subscribe to ReactiveCollection events in Auto UI ([e91813d](https://github.com/portel-dev/photon/commit/e91813d24cc5629f7c160a31fd10db8cf67d7e1d))
* auto-wire ReactiveArray/Map/Set properties for zero-effort reactivity ([f3631b5](https://github.com/portel-dev/photon/commit/f3631b5e5be6c25f8b45531f4fb7fb2836b4ec34))
* clean up sidebar — pure navigation focus ([99b12e8](https://github.com/portel-dev/photon/commit/99b12e86e0937b3be51a89003a98b8c3f11ab9e1))
* extract context-bar and overflow-menu components from beam-app ([b042dc5](https://github.com/portel-dev/photon/commit/b042dc5dd0a8c4cd2479056fdb21e5f0445eb080))
* implement unified UI bridge architecture using MCP Apps SDK ([3c95823](https://github.com/portel-dev/photon/commit/3c958235672479ac8d9850845c99cd62f67b416a))
* improve docs, add file paths and progressive onboarding to Beam ([b8fe0d6](https://github.com/portel-dev/photon/commit/b8fe0d64bb9b4aae42e34dbe95001469716fddab))
* improve light theme with soft shadows and cool blue-gray palette ([51dafc6](https://github.com/portel-dev/photon/commit/51dafc6d0b0e931ece35a7b32b65e7294e6df726)), closes [#F4F6F8](https://github.com/portel-dev/photon/issues/F4F6F8)
* methods-first bento layout with compact Context Bar ([36f9b48](https://github.com/portel-dev/photon/commit/36f9b48477c8083fcbe2cb49161438fbacd23651))
* rename sidebar sections and classify app-capable MCPs under APPS ([f70f24f](https://github.com/portel-dev/photon/commit/f70f24fdcadcaebc6090433f4e64c46ef069f331))
* render nested arrays/objects in card view as collapsible tables ([d1f8286](https://github.com/portel-dev/photon/commit/d1f828698201295420e16b223a2be3d79b7a2992))
* restyle CLI snippet as terminal with black background and monospace font ([d2be411](https://github.com/portel-dev/photon/commit/d2be4111623db93d9e857cfcea043c4e89b4e1a8))
* seamless class-based development with clean client API and animations ([06b655d](https://github.com/portel-dev/photon/commit/06b655d1eb292cc1658f7f3cd62d86be07f60b10))
* show CLI command preview in invoke form ([0012c55](https://github.com/portel-dev/photon/commit/0012c553d811834d7620d49a2c18319723fcbee2))
* show schema default values as input placeholders ([b3ae303](https://github.com/portel-dev/photon/commit/b3ae303e302d1db0a0d0dc3fadca8b66f97c3628))
* simplify app layout, remove method card initials, revert setup badge ([5c76055](https://github.com/portel-dev/photon/commit/5c760550e8fed49c50e7e0cdc220e95d5a254260))
* support client-side event subscriptions for injected photons ([3be68ef](https://github.com/portel-dev/photon/commit/3be68eff2ccbfbd4ac4928db70128fda8a006a35))
* support Collection<T> in loader wiring and auto-UI rendering hints ([3126f5d](https://github.com/portel-dev/photon/commit/3126f5d6e6ad5882890b9871c8c8266ec5f21ba4))
* unify source viewing with Open in Studio link ([a932eb9](https://github.com/portel-dev/photon/commit/a932eb9b82c80b578740f74259b0b25651d8bf0c))
* use standard MCP protocol for real-time cross-client sync ([ba87761](https://github.com/portel-dev/photon/commit/ba87761ea3d4a012927230e806c847dd45ecce88))
* watch config.json for external MCP changes + rename "Setup Pending" to "Needs Attention" ([28788a6](https://github.com/portel-dev/photon/commit/28788a6b568220cc694809e8eb460a6e030f25d8))

### Bug Fixes

* add fullscreen button to MCP apps, exclude UI from resource count ([5cfc606](https://github.com/portel-dev/photon/commit/5cfc606208270bbb233aa24657ce2a970e03765e))
* add grid layout to external MCP Available Tools section ([a5cfd11](https://github.com/portel-dev/photon/commit/a5cfd11339bb340673b47e81e94ced14f9dce719))
* add legacy SSE fallback for URL-based external MCPs ([f7191e7](https://github.com/portel-dev/photon/commit/f7191e7494b689ee0252f8b69d8824437e9c2168))
* add size notifications to MCP Apps bridge for proper iframe sizing ([2a24efd](https://github.com/portel-dev/photon/commit/2a24efde35d35a127d08c690e1b73bc26130a020))
* address release blockers and clean up for v1.6.0 ([ebaeb85](https://github.com/portel-dev/photon/commit/ebaeb85ac83dfaea8f148c16134114215524b616))
* autocomplete triggers inside JSDoc and route new photons to Studio ([cf676c6](https://github.com/portel-dev/photon/commit/cf676c65ab561721fa9878a78bd0e8670170e0e4))
* backfill env vars for constructor params with defaults after load ([80a25aa](https://github.com/portel-dev/photon/commit/80a25aa2d88430ddd423a427d0259e3f55b75d54))
* cap MCP Apps UI height to 800px for chat window fit ([28e6a69](https://github.com/portel-dev/photon/commit/28e6a6987fbbfb9a50d158ab89ed51edfae81966))
* capture generator return value when no yields occur ([73ec8fb](https://github.com/portel-dev/photon/commit/73ec8fb730fedc8c0299f8a81787afd59011b6dd))
* complete unified bridge migration for cross-client real-time sync ([5532dc8](https://github.com/portel-dev/photon/commit/5532dc8d5a9be24a2a59f2c1fbc2718c0cc6fcb9))
* constrain file picker to photon's workdir ([144f29a](https://github.com/portel-dev/photon/commit/144f29afa23d265a0b2d087cd318b2c637f264dd))
* contextual button labels and JSON serialization in array forms ([59d9aae](https://github.com/portel-dev/photon/commit/59d9aaed7795aef41053ef85f9c774d3c56275c0))
* correct [@internal](https://github.com/internal) detection and photon-core version resolution ([0d8397c](https://github.com/portel-dev/photon/commit/0d8397c0b63c76b40e25c58e363d3fa5f4b83ee8))
* correct README commands and render textarea for code fields in Beam ([3f341af](https://github.com/portel-dev/photon/commit/3f341af9738d832c5ea9f7770484deffea6ff7d5))
* detect port conflicts with localhost-only bindings ([59c7bd2](https://github.com/portel-dev/photon/commit/59c7bd2dc40f8b632d8b900241cb0bdd70727a5e))
* ensure appResourceUris defaults to empty array in tools response ([eb9d9eb](https://github.com/portel-dev/photon/commit/eb9d9eb39714f86abc2c1369b06b14c4a02ac530))
* external MCP App rendering and tool invocation in Beam ([d099324](https://github.com/portel-dev/photon/commit/d0993249aaed1d6949fd5a4b466260956a89bc75))
* external MCP tools not appearing in Beam ([f4eab95](https://github.com/portel-dev/photon/commit/f4eab95e01d4f0efe8bb8ac8388ae4fabe3a7dd4))
* extract and parse MCP result content in platform bridge ([7a406ba](https://github.com/portel-dev/photon/commit/7a406ba17842b49a7b6a693a518ac937234fe378))
* filter binary files and add directory mode to file picker ([71b3f41](https://github.com/portel-dev/photon/commit/71b3f41210b00b516dab2e4ec5d10b3400401cc2))
* filter theme tokens to spec-valid keys for AppBridge ([f5d6f6a](https://github.com/portel-dev/photon/commit/f5d6f6a2e8c1283362786ee1f0a06e676eed6926))
* force 620px minimum height for kanban boards ([227ba4e](https://github.com/portel-dev/photon/commit/227ba4e25ad3313a89cccc39969d5bcbcbf053d9))
* gracefully close external MCP clients on shutdown ([0ad4e1e](https://github.com/portel-dev/photon/commit/0ad4e1ee1f3f8868d4c7f1bcd3531bd468d1844b))
* handle isError flag in platform bridge tool results ([4630125](https://github.com/portel-dev/photon/commit/4630125252ae5376321f730b0c207e74623f6dca))
* hide photon-specific toolbar buttons for external MCPs ([f095859](https://github.com/portel-dev/photon/commit/f095859c993b4a5f451abff4b6bb95193ecfcfd2))
* implement correct MCP Apps ui/initialize handshake ([d11f422](https://github.com/portel-dev/photon/commit/d11f42238fdb72241689797c5e3548dfa33a6a32))
* improve Beam UI configuration, form handling, and diagnostics ([c409c0b](https://github.com/portel-dev/photon/commit/c409c0b39050cb3a3436d13f3eaad0e82d026810))
* improve MCP Apps size calculation for kanban boards ([941cbdf](https://github.com/portel-dev/photon/commit/941cbdf4b3e8bdb02079e707a90029b5af3a6600))
* improve param tag contrast in light theme method cards ([eaafca3](https://github.com/portel-dev/photon/commit/eaafca38d23408da5e74c156b102fd9b98543a53))
* increase light theme contrast — darker bg, stronger borders/shadows ([51ebeb5](https://github.com/portel-dev/photon/commit/51ebeb5eddf9f038bd30776aed2c81f65ea50c75)), closes [#F4F6F8](https://github.com/portel-dev/photon/issues/F4F6F8) [#E5E9EE](https://github.com/portel-dev/photon/issues/E5E9EE) [#FFFFFF](https://github.com/portel-dev/photon/issues/FFFFFF) [#F6F7F9](https://github.com/portel-dev/photon/issues/F6F7F9)
* inject MCP Apps bridge script into UI resources ([eb64cf4](https://github.com/portel-dev/photon/commit/eb64cf47a238ea3839af057a4f8ff66d80465bcd))
* JSDoc comment continuation and [@runtime](https://github.com/runtime) version in Studio autocomplete ([5998ac7](https://github.com/portel-dev/photon/commit/5998ac74235757b6faa266520c038a584e347b8e))
* MCP App hash navigation and auto-invoke linked tool ([ad53269](https://github.com/portel-dev/photon/commit/ad532692f5b0f62ededf67fa669d4ad1400c4805)), closes [#system-monitor](https://github.com/portel-dev/photon/issues/system-monitor)
* MCP Apps bridge sets __PHOTON_DATA__ and improved size calculation ([7617882](https://github.com/portel-dev/photon/commit/7617882c5698cb62ca15471cd24b02976210a0c7))
* move fullscreen button to toolbar above app viewport ([335548d](https://github.com/portel-dev/photon/commit/335548d45ff733152ad58f52e688e737621a4fda))
* move param tags to own row in method cards ([efd952e](https://github.com/portel-dev/photon/commit/efd952e1ee81fcd0b105d0238e901fb2e5e08100))
* no-op description saves, param tags on cards, hover pencil hints ([3fd5c53](https://github.com/portel-dev/photon/commit/3fd5c53819bf0e27aef703d62bc86e55f4461802))
* pencil-only edit triggers, name editing, and overflow menu portal ([e7fad58](https://github.com/portel-dev/photon/commit/e7fad5811f6b7f16fb8a01641dcd3edc97765aa2))
* preserve structuredContent in external MCP tool calls ([f3d3280](https://github.com/portel-dev/photon/commit/f3d328055799470a74a9f42e3c8b8bd2bbfda7e0))
* prevent file paths from rendering as broken image thumbnails ([ae9e250](https://github.com/portel-dev/photon/commit/ae9e250e3737af4c364abdfacca08a45b2fd57ee))
* prevent iframe from rendering before elicitation completes ([53090f7](https://github.com/portel-dev/photon/commit/53090f7955a9c8840e873b57514192d08f698ff7))
* pull nested arrays out of kv-table to eliminate excess whitespace ([6fbcca5](https://github.com/portel-dev/photon/commit/6fbcca5d829549fec41e58a17e8b42672b2de800))
* recognize 'modified', 'expires', 'since' as date fields ([19194c8](https://github.com/portel-dev/photon/commit/19194c845b83f901e48fdf2d02622f91d4e0ceed))
* render Mermaid diagrams and style tables in help modal ([9abd68a](https://github.com/portel-dev/photon/commit/9abd68a7127084e1bc8b35002342908f501d1746))
* replay saved configure() params on photon startup and hot-reload ([c66a638](https://github.com/portel-dev/photon/commit/c66a6383ff7211c5a9e57277ac5ea5abf14ff845))
* resolve config form cross-contamination and reconfigure failure ([6c9827d](https://github.com/portel-dev/photon/commit/6c9827d953e15ccae25e942a6ce763ae7fed03da))
* resolve file picker workdir from running photon instance ([d5d698c](https://github.com/portel-dev/photon/commit/d5d698cdc36d7f153ff9a61ca3235f1c551569e5))
* restore ecosystem infographic to README ([a326f92](https://github.com/portel-dev/photon/commit/a326f921a3ef62eb943c9f22b79d6b28d5bb9141))
* set MCP Apps context flag to prevent non-JSON-RPC messages ([5a7227c](https://github.com/portel-dev/photon/commit/5a7227cd0eba74d7d22f07ebd9d06235453f4afa))
* simplify help modal title to just "Help" ([b2540f9](https://github.com/portel-dev/photon/commit/b2540f982a3093279d62b6a77149c7fa17a50adf))
* stabilize docblock completion function reference for CM6 ([cdaae21](https://github.com/portel-dev/photon/commit/cdaae21f0223ccc543da05e9996d744bdd5772a1))
* suppress stderr from external MCP processes ([637c091](https://github.com/portel-dev/photon/commit/637c0915d857b7f152ce12b64ff688d35781c23e))
* use actual bound port for --open flag in beam command ([4e8a875](https://github.com/portel-dev/photon/commit/4e8a875a343f778215a4a43b50dec8290d7825bd))
* use correct mimeType for MCP Apps extension compatibility ([820ff8b](https://github.com/portel-dev/photon/commit/820ff8b79265bff06b7f5b4f68ae4a5963e8fa2b))
* use mcp-app-renderer for external MCPs in form view and fix matchMedia override ([7f9ee29](https://github.com/portel-dev/photon/commit/7f9ee29a8636bdd7ca5944688a681319246692fb))

## [1.5.1](https://github.com/portel-dev/photon/compare/v1.4.1...v1.5.1) (2026-02-02)

### Features

* actionable toasts, better error messages, connection recovery guidance ([55e73e9](https://github.com/portel-dev/photon/commit/55e73e90b33578437031c7b0e86591d68ed999f7))
* add _meta.outputTemplate to tools with linked UI ([8733425](https://github.com/portel-dev/photon/commit/8733425c373469b6d653a3ecf3b3b9baf8f49bce))
* Add [@accept](https://github.com/accept) filter to code-diagram file picker ([466fd52](https://github.com/portel-dev/photon/commit/466fd523419db1eafec080ceee169fb512a081c2))
* Add [@cli](https://github.com/cli) dependency checking in loader ([6ae91ae](https://github.com/portel-dev/photon/commit/6ae91ae7a741515add3dff25192e0938d8116b7f))
* Add [@runtime](https://github.com/runtime) tag for version compatibility checking ([e78fce9](https://github.com/portel-dev/photon/commit/e78fce990ed309f55a6a52266259e5dd16d39fdd))
* Add {[@label](https://github.com/label)} tag support and improved label formatting ([0e41373](https://github.com/portel-dev/photon/commit/0e413736dabc48a4779353051d9774b4ece0597f))
* Add {[@placeholder](https://github.com/placeholder)}, {[@hint](https://github.com/hint)}, and [@icon](https://github.com/icon) support in BEAM ([63c31d6](https://github.com/portel-dev/photon/commit/63c31d6c93b8af274e229ddd98fa547139c0d941))
* add /api/local-file endpoint for serving local files ([d5248b8](https://github.com/portel-dev/photon/commit/d5248b84b3df38e4544947cced5527a414f6157f))
* add `photon package` command for cross-platform PWA launchers ([bc10823](https://github.com/portel-dev/photon/commit/bc10823d6fd13345920246e226f38cda3a16639b))
* Add accessibility and animation performance improvements ([471d758](https://github.com/portel-dev/photon/commit/471d75837b47f2d7b3abf709a25a347f52445989))
* Add activity panel (audit trail) to Beam UI ([ba142b8](https://github.com/portel-dev/photon/commit/ba142b858436655c4f9ec7c9e4922da328089b80))
* Add advanced Beam UI features ([ecdf4b2](https://github.com/portel-dev/photon/commit/ecdf4b28c565d71a4daccafbab7cc1a3da0e9138))
* Add all 3 test modes to BEAM (direct, cli, mcp) ([7ad5066](https://github.com/portel-dev/photon/commit/7ad5066e526b0f4421f436dd6f60bd2baa70fb34))
* Add app state persistence API and improve settings menu ([9a3d496](https://github.com/portel-dev/photon/commit/9a3d4960ea0b59be75a814c43774cbf02e574517))
* add asset folder discovery in Loader ([06b448c](https://github.com/portel-dev/photon/commit/06b448c9c0b3a02ed7cd667b4cde2903fab4cc20))
* Add BEAM UI E2E test framework with Playwright ([d24931a](https://github.com/portel-dev/photon/commit/d24931aa129641596f31a9b21100b07d5b00a391))
* add bidirectional prompt protocol for daemon ↔ CLI ([e113f67](https://github.com/portel-dev/photon/commit/e113f6798c930578e0b9c3b899a298e7394f8ca9))
* Add bundled Maker photon for authoring ([4c0efff](https://github.com/portel-dev/photon/commit/4c0efff34056ba361754822673da7cfcb440e093))
* Add bundled photon support for maker ([ecea222](https://github.com/portel-dev/photon/commit/ecea22294655a77503f7810a6e214cbf47680c7d))
* Add bundled photon support to Beam UI ([134fbbe](https://github.com/portel-dev/photon/commit/134fbbeb9020fd8229fe1ea50267f4442a5a7acb))
* Add card, tabs, accordion to [@format](https://github.com/format) tag parser ([6835148](https://github.com/portel-dev/photon/commit/68351480ca328fa5bcc7c629483d6f165a54def9))
* Add channel-based pub/sub for cross-process emit notifications ([f133d8e](https://github.com/portel-dev/photon/commit/f133d8e7bcfae7c77bcdfc6b44ff3193451d58c3))
* add CLI handlers for form and URL elicitation ([73bbf1a](https://github.com/portel-dev/photon/commit/73bbf1a91d413b5547fbf11d4de150e26c5d30ad))
* Add Cloudflare D1 and KV store implementations ([f3affb1](https://github.com/portel-dev/photon/commit/f3affb1b8184697f0c9cd1a624cbe7754a2b5d91))
* add Cloudflare Workers deployment ([21332d7](https://github.com/portel-dev/photon/commit/21332d7182dff177b03c54c0d0b93fcf314eb2c0))
* Add comprehensive demo photon for testing ([05b6538](https://github.com/portel-dev/photon/commit/05b6538433eb4189abca4b3b735144bcb55437bc))
* Add configuration UI component and smart result rendering ([41509b2](https://github.com/portel-dev/photon/commit/41509b217fb72ecdbe9c213eb02376f9baaa2d58))
* Add cross-client notifications via daemon pub/sub ([39546c5](https://github.com/portel-dev/photon/commit/39546c57d0953e19b8b6c3f5f17f7d7caad261e9))
* Add custom UI rendering and auto-run for no-param methods in BEAM ([6ac4292](https://github.com/portel-dev/photon/commit/6ac4292fb4fb2212888f6237d3a83d1d0e55bd3f))
* Add daemon channel subscription to BEAM for cross-process updates ([2c945aa](https://github.com/portel-dev/photon/commit/2c945aaa9cfac664ba27273ed111d8c76c385ac6))
* Add daemon hot-reload for stateful photons ([6e3089d](https://github.com/portel-dev/photon/commit/6e3089d78d5a4681501f41c39bce37db33fee86e))
* Add dev:beam script with auto-restart on code changes ([1f08f24](https://github.com/portel-dev/photon/commit/1f08f243a78e908438cb195c0cc1eb168b093093))
* Add distributed locks, scheduled jobs, and webhooks to daemon ([3eff6e3](https://github.com/portel-dev/photon/commit/3eff6e304dd5ea7e906f6f51364d1e5c22867164))
* Add dual-mode testing to BEAM (direct + MCP) ([9ee8702](https://github.com/portel-dev/photon/commit/9ee8702467168ff42dea1d5129f28cdea805b6e8))
* Add E2E test suite for Beam UI flows ([9bf4537](https://github.com/portel-dev/photon/commit/9bf45374bdad03d98b67ac1414b2db0d3284c454))
* Add elicitation modal to Beam UI with interactive prompts ([03b5d42](https://github.com/portel-dev/photon/commit/03b5d426a84121c3153d0ac3bb75b3d2eb031075))
* Add enhanced markdown rendering with mermaid, callouts, and multi-column layouts ([2631a69](https://github.com/portel-dev/photon/commit/2631a692a0fb94c04db8807f2e5f5b9dd7c79f99))
* Add enum types and defaults to Serum parameters ([c8771f4](https://github.com/portel-dev/photon/commit/c8771f44fe28b6b0628c830541544755c0f5503d))
* add ephemeral progress indicators ([d7c2e4a](https://github.com/portel-dev/photon/commit/d7c2e4ab3d0706dd4eba044f5a68e8bb84cb644b))
* Add Escape key to cancel executions and close modals ([4a20bed](https://github.com/portel-dev/photon/commit/4a20bede4120739f083b75df72a20a3d001b3656))
* Add ESLint and Prettier configuration ([eb82f8c](https://github.com/portel-dev/photon/commit/eb82f8c59954cf9b3ef7487e264aca3cd2924e60))
* Add event replay support for reliable real-time sync ([bf4cab2](https://github.com/portel-dev/photon/commit/bf4cab23aae409e01bb648d56809a088f6344f7f))
* Add Execute/Data tabs to photon view method panel ([9fb564a](https://github.com/portel-dev/photon/commit/9fb564aedf899a980569f89e7aa96e39a5490e68))
* Add experimental MCP sampling capability ([a5cff16](https://github.com/portel-dev/photon/commit/a5cff1646721c56625867bd9ccd2c4c022e92304))
* Add file browser for path/file input fields in Beam UI ([c2d9706](https://github.com/portel-dev/photon/commit/c2d97063a2cf1a9692c7419fe41de037432e5c4c))
* Add file upload/download and [@ui](https://github.com/ui) template support ([73e6e46](https://github.com/portel-dev/photon/commit/73e6e4662a10afa4226490bbeb88746130d1b095))
* Add file watching for automatic hot reload in Beam ([412e51d](https://github.com/portel-dev/photon/commit/412e51da45e9675dff8211c4b3327c65af47de67))
* add first-run welcome wizard with install/create paths ([ab6edc5](https://github.com/portel-dev/photon/commit/ab6edc570a746b016d06ce64f78668273b2cf285))
* Add Form and JSON tabs to config view ([200e1d2](https://github.com/portel-dev/photon/commit/200e1d2b4d0ac8ad929e8ec50529947b9a5bd56a))
* Add form persistence, file picker improvements, and [@accept](https://github.com/accept) filtering ([8e1717b](https://github.com/portel-dev/photon/commit/8e1717b4d46bd87724e5c181c999afb9fd3dbea4))
* add generator support for interactive prompts in CLI ([f9f71f7](https://github.com/portel-dev/photon/commit/f9f71f7a347159e920f31cd40c718399d30b1d39))
* add generator support to PhotonAdapter ([4ecb35d](https://github.com/portel-dev/photon/commit/4ecb35d5a14214f477a50f27d9480e1510147613))
* Add goHome() function to return to home view ([985abc1](https://github.com/portel-dev/photon/commit/985abc1079430a57fc59532424e7e6d5724b60e1))
* Add hash-based routing to Beam UI ([74e8d6a](https://github.com/portel-dev/photon/commit/74e8d6a804059962b6a574347748264cb268b67a))
* Add hashed photon ID for unique identification ([19a4bd4](https://github.com/portel-dev/photon/commit/19a4bd4bf767e9bbec428d776d08bb84fc0f0c78))
* Add history and favorites to BEAM UI ([f01757d](https://github.com/portel-dev/photon/commit/f01757d18ccbd2a9d4bf493ea7e704868d18e29f))
* Add image zoom and fix mermaid inline buttons ([1b58f14](https://github.com/portel-dev/photon/commit/1b58f143d6b76d8916451be2b235c0a46bf03197))
* Add implicit CLI mode for sleeker interface ([3c3e4ca](https://github.com/portel-dev/photon/commit/3c3e4ca5b467e6123a5fd4d8b4a6f1dba21111cf))
* Add inline editing for method descriptions and icons ([6f7387f](https://github.com/portel-dev/photon/commit/6f7387f117b3d4a2f1527c770869a9251a75db87))
* Add inline editing for photon description and icon ([807f298](https://github.com/portel-dev/photon/commit/807f29815cb802f438aabf5ab8c3278a003e663b))
* add inline progress animation for CLI ([10b63e5](https://github.com/portel-dev/photon/commit/10b63e54633eb250c35f637c60c4d28042643937))
* add inline progress bar with spinner animation ([09540f7](https://github.com/portel-dev/photon/commit/09540f7c03cff302b41c7132cc774bbc70a72921))
* add input validation to critical paths ([18f0eb7](https://github.com/portel-dev/photon/commit/18f0eb73ac6257c6fc1afdd4b2c013e0115d9563))
* Add interactive UI pattern with Promise-based invokePhotonMethod ([1e3b996](https://github.com/portel-dev/photon/commit/1e3b9967034fa2277d3085bec916edd1826e95e8))
* Add interface testing modes (CLI, MCP) to test runner ([9d24e8e](https://github.com/portel-dev/photon/commit/9d24e8e77c4ba2e26241f689cc95624a6a6d881c))
* Add JSON input support for complex array/object parameters ([c7fcd81](https://github.com/portel-dev/photon/commit/c7fcd8112e010f419f8aa8431de745a08342936b))
* Add keyboard shortcuts to BEAM UI ([ab7156f](https://github.com/portel-dev/photon/commit/ab7156f288dd9c50156343272f427bd7db44f9fb))
* Add light/dark theme support and App vs Tool sidebar organization ([c232b51](https://github.com/portel-dev/photon/commit/c232b5172dde8c18146a843edc4c9d237e847a3c))
* Add LocalServ for zero-dependency local development ([bcc53e7](https://github.com/portel-dev/photon/commit/bcc53e7fec36be54d3ab4dd7488df4fa2d8ba39c))
* Add maker actions to Beam UI ([3c1b548](https://github.com/portel-dev/photon/commit/3c1b5483d2a5303684b7eb59df4f82bf6dbb52e1))
* Add marketplace filter pills to display and filter by source ([d1c80d2](https://github.com/portel-dev/photon/commit/d1c80d20bc8f71b261a2f7b3f7729875e61af933))
* Add marketplace integration and empty state UI in BEAM ([3cfe7c4](https://github.com/portel-dev/photon/commit/3cfe7c40b4e94df2b82cd15278a6975250c4e8d5))
* Add MCP Apps ui:// scheme support for UI resources ([3a295e2](https://github.com/portel-dev/photon/commit/3a295e2bd57b241b6ea0546f8449e1b385a6eafb))
* Add MCP client service for LitElement UI ([097e9ff](https://github.com/portel-dev/photon/commit/097e9ff2a6a1cc889cd7a3f82b5c9ba68c1c4847))
* Add MCP elicitation support for SDK 1.25 ([8de8a82](https://github.com/portel-dev/photon/commit/8de8a82069f5d27d3d97fe423f39914c6da55000))
* Add MCP prompts and resources viewer UI ([93be7b4](https://github.com/portel-dev/photon/commit/93be7b405022a225564ee5b31f5fc7dd74af58b0))
* add MCP protocol client for calling external MCPs from Photons ([cf66a0f](https://github.com/portel-dev/photon/commit/cf66a0fdd65cd4bff703d6749d254cf2a3d6356d))
* Add MCP protocol support over WebSocket for Beam UI ([3a02a69](https://github.com/portel-dev/photon/commit/3a02a6971e7da679fcf140257bd1cfd2100999a5))
* add MCP resource serving for Photon assets ([7b5de9a](https://github.com/portel-dev/photon/commit/7b5de9ae618440722098acc4f22a60ab16c12b5e))
* Add MCP Streamable HTTP transport for standard clients ([0b25c5a](https://github.com/portel-dev/photon/commit/0b25c5a87ee95574601851cf97732a3b690fab76))
* Add MCP-based configuration for unconfigured photons ([f2d53bc](https://github.com/portel-dev/photon/commit/f2d53bcc0d867dc99bd977295a007e939fddeec4))
* Add MCP-style postMessage bridge for portable HTML UIs ([0a2244a](https://github.com/portel-dev/photon/commit/0a2244a87450d398dd317bc168fdc38b8e6cac3a))
* add Mermaid diagram generation for Photons ([d63c158](https://github.com/portel-dev/photon/commit/d63c158fbb0dbe09a920305b6cb558d4756fae2b))
* Add Mermaid diagram rendering in Beam UI ([a33b91f](https://github.com/portel-dev/photon/commit/a33b91fa85aa656a00cc4e1a4c89f21dc786f7b6))
* add method-level [@ui](https://github.com/ui) linking after auto-discovery ([9993b8f](https://github.com/portel-dev/photon/commit/9993b8fe69cc5da6c7a1c57d15a2c6b0f4deddd8))
* Add notification/toast support to BEAM ([efcb8c2](https://github.com/portel-dev/photon/commit/efcb8c28dfd11ba177e6b4c372c15f4a1cb34d94))
* Add OAuth elicitation support to BEAM ([ed592d3](https://github.com/portel-dev/photon/commit/ed592d30cbd8cfa2274d5efa95ad1b8bf07535ad))
* Add OpenAPI 3.1 spec generation for Beam UI ([f25d1af](https://github.com/portel-dev/photon/commit/f25d1afcc86c5eaf6476cb85a3ad8eced6493d64))
* Add output filtering to BEAM UI ([a84cd3a](https://github.com/portel-dev/photon/commit/a84cd3a8530c21cbd5fa6c19fb5288899511966a))
* Add Photon Design System based on Material Design 3 + Apple HIG ([465e140](https://github.com/portel-dev/photon/commit/465e140b43115e4e50a6b9da4a544cc700c8cb2c))
* Add photon reload and remove functionality in Beam UI ([315748a](https://github.com/portel-dev/photon/commit/315748a6221560389b40ffb439987fb60be3710e))
* Add photon test runner for CLI and BEAM ([439e9c1](https://github.com/portel-dev/photon/commit/439e9c1bb278462f2c424e8be3a5d235af9cdbf9))
* Add PhotonBridge for unified custom UI communication ([fb99db6](https://github.com/portel-dev/photon/commit/fb99db60ee3624eabfcd3294179588f6fe9c165e))
* Add platform compatibility layer for MCP Apps, ChatGPT, and Claude ([a42e03b](https://github.com/portel-dev/photon/commit/a42e03bab45d8a634c04a92e2aeed5a772f6177b))
* add playground command for interactive multi-photon UI ([a8d217a](https://github.com/portel-dev/photon/commit/a8d217aea85352929023b39286dbd6cc1bed0a0d))
* add playground for interactive MCP Apps testing ([135ffce](https://github.com/portel-dev/photon/commit/135ffce363c3810fd1f138b9db88e8312474ccc2))
* Add real-time board updates via push notifications ([28aa07f](https://github.com/portel-dev/photon/commit/28aa07fe47dc51a23f8d330f05190b23edce1902))
* Add repository button and unified button styling in marketplace ([f8eb00c](https://github.com/portel-dev/photon/commit/f8eb00cf9e6517957b35ca7b03e92500cef1c0ec))
* Add responsive design for mobile devices ([c7e66a7](https://github.com/portel-dev/photon/commit/c7e66a7e5b7eed2495b1322c05bd4bfcec695eb7))
* Add result viewer modal and mermaid diagram controls ([01ed1ad](https://github.com/portel-dev/photon/commit/01ed1ad8eb6d602dde053767fafc5e96714c8dbd))
* Add rich select with filters, search, and quantity controls ([c025763](https://github.com/portel-dev/photon/commit/c02576315e4a026d4a578991a3ec222652cacf3c))
* Add SEP-1865 MCP Apps compatibility for UI templates ([0364897](https://github.com/portel-dev/photon/commit/03648971c1213d6916de8b3ebbfde6bf477e78b5))
* Add Serum - a collection of powerful prompt templates ([4913596](https://github.com/portel-dev/photon/commit/4913596da52996d79c2cb8bb69705cb15fadf5b9))
* Add SERV multi-tenant OAuth 2.1 authentication system ([17891a6](https://github.com/portel-dev/photon/commit/17891a65b8f16c8f585b24ecb07a1f89cc2baa3b))
* Add SERV OAuth runtime integration and serv command ([026b53c](https://github.com/portel-dev/photon/commit/026b53cd00045dab55fd7a02ff5c4162340a1306))
* add serve command with auto port detection ([7da3405](https://github.com/portel-dev/photon/commit/7da34053f96439e02b6305e454e11e14278ea2ad))
* Add share result link functionality ([02383bc](https://github.com/portel-dev/photon/commit/02383bc7080d3a585121172b7d9cfbb9116dcb45))
* Add smart form inputs based on schema ([156025c](https://github.com/portel-dev/photon/commit/156025c56b6ca3b2aba9f918e18c93c13b401892))
* Add Smart Rendering System for BEAM UI ([6087456](https://github.com/portel-dev/photon/commit/60874566c15d952eaf49b5c3f394b04601554f15))
* add SSE transport support for MCP server ([c1d2fbb](https://github.com/portel-dev/photon/commit/c1d2fbb2e30be9529136d45a7fb4bfc5e73000b6))
* add stateful workflow CLI commands ([3411d45](https://github.com/portel-dev/photon/commit/3411d4523d84562635252a0bff1a332abc4a0a3e))
* Add support for [@icon](https://github.com/icon) and [@internal](https://github.com/internal) docblock tags ([491e078](https://github.com/portel-dev/photon/commit/491e0782af9e9f957be6f49d5dbac916b994ca38))
* Add Swagger-style schema preview for complex JSON parameters ([ce811f8](https://github.com/portel-dev/photon/commit/ce811f85c4487d973b94a9db8ee075dc20433f69))
* Add test coverage reporting with c8 ([2039f9a](https://github.com/portel-dev/photon/commit/2039f9affe2e11cff505e7d4def1522cfb165e75))
* Add testing utilities with mocking and lifecycle hooks ([3e35750](https://github.com/portel-dev/photon/commit/3e3575082054610901ab5baf94c86dfa15cae0c2))
* Add tests and documentation for daemon docblock tags ([fdc816b](https://github.com/portel-dev/photon/commit/fdc816b659cedf2ac2a0021d0cb9b1a9b3a8e891))
* Add theme-aware syntax highlighting and mermaid diagrams ([11cf7c5](https://github.com/portel-dev/photon/commit/11cf7c5500628d0efcd77b602481e9addfa82546))
* Add tunnel photon for remote access ([94d8535](https://github.com/portel-dev/photon/commit/94d85355a0320639ec61f8730fb3e21ec6c30acb))
* Add tunnel to bundled photons in Beam UI ([24e04dd](https://github.com/portel-dev/photon/commit/24e04ddad43f933c8ee3a693997e6ffea96b1fb5))
* Add ui:// E2E tests for MCP Apps SEP-1865 support ([ef81b49](https://github.com/portel-dev/photon/commit/ef81b4905e250415e416f00dc7e5f94472da9514))
* Add unified MCP execution layer for Beam UI ([e557949](https://github.com/portel-dev/photon/commit/e557949b22b83bdb3623aae1725eee4ee8679b01))
* Add watch mode for Beam UI frontend auto-rebuild ([308cf9b](https://github.com/portel-dev/photon/commit/308cf9b469fa000f2dceb168762b082db97dadbc))
* Add web-based elicitation and html format support ([d335781](https://github.com/portel-dev/photon/commit/d335781df7d9a292c8ed82390471f03232916ce7))
* Add zoom, pan, and close controls to fullscreen viewers ([4866ede](https://github.com/portel-dev/photon/commit/4866eded2fcc93feb3c3cbdd7b0992d7c0cd1964))
* align custom UI output with MCP Apps ext-apps spec ([11e58da](https://github.com/portel-dev/photon/commit/11e58da2bea65cca518f51f57293528f39ab77ff))
* align playground streaming with MCP progress notifications ([d4ac1a6](https://github.com/portel-dev/photon/commit/d4ac1a6de318a106e210098b554e6a4103c8a97c))
* align theme communication with MCP Apps standard ([32679f6](https://github.com/portel-dev/photon/commit/32679f6eb292ae2b8343bd38e91b43cd1024c3e7))
* App-first navigation with main() convention ([10f0e14](https://github.com/portel-dev/photon/commit/10f0e14810a62241827dbabc9dccb540cad827cf))
* Apps use full panel without Execute/Data tabs ([dc9d594](https://github.com/portel-dev/photon/commit/dc9d59486dd79351c4da6a0b4796ad5c85793f91))
* auto-configure MCP dependencies during photon add ([f34ba02](https://github.com/portel-dev/photon/commit/f34ba02693c5386a1e80e4f6c96d6e4c42c218f1))
* Auto-detect @portel/photon-core import and include as dependency ([460ae69](https://github.com/portel-dev/photon/commit/460ae6990053769cd51ac311c5c92a4f2ed68040))
* auto-inject [@mcp](https://github.com/mcp) declared dependencies into Photon instances ([2f96412](https://github.com/portel-dev/photon/commit/2f96412eca83d2b9bbbc3b5e1ac596f4656ef0af))
* Auto-launch Custom UI for Apps with YouTube-style scroll layout ([fcfd762](https://github.com/portel-dev/photon/commit/fcfd76201376e01cb7bca61c2094ed23e294bd34))
* **beam:** Add auto-invoke for zero-param methods and HTML format rendering ([3d9f9a9](https://github.com/portel-dev/photon/commit/3d9f9a9023d80ed294f14be1a65c8d505446412f))
* **beam:** Add connection reliability with heartbeat and offline queue ([4c26343](https://github.com/portel-dev/photon/commit/4c26343ca250fc77d836eb2aaad9c946a2c07095))
* **beam:** Add minimal UI mode for HTML format methods ([0743d35](https://github.com/portel-dev/photon/commit/0743d35b1978097e373542744bcdd47c1e8246a5))
* **beam:** Add mobile responsiveness to remaining UI components ([bc8a3f0](https://github.com/portel-dev/photon/commit/bc8a3f04c8712ab5c5278beb1231dd5075f31e4e))
* **beam:** Add mobile responsiveness to UI components ([0524375](https://github.com/portel-dev/photon/commit/05243753176a199faa8b6d49fb9980ac44fb4394))
* **beam:** Add progress bar for async generator methods ([5ea0873](https://github.com/portel-dev/photon/commit/5ea08731111b15b3038a69b8b84647c557e5ce0f))
* **beam:** Add real-time emit types and elicitation support ([16e3ec5](https://github.com/portel-dev/photon/commit/16e3ec5a0a57625de8d079f27b191603c70deac4))
* **beam:** Add responsive action toolbar for desktop and mobile ([f83966c](https://github.com/portel-dev/photon/commit/f83966c5bcbac78a9e15aef9054be5d23f7401a7))
* **beam:** Add support for static methods in photons ([c693162](https://github.com/portel-dev/photon/commit/c69316290aa975bedd41d83caf992e9c92fe49d3))
* **beam:** Add syntax highlighting to View Source modal ([e0cf519](https://github.com/portel-dev/photon/commit/e0cf51971b955c11587d706767217b5cc8940a33))
* **beam:** Improve activity log UX with verbose mode and status indicator ([136adca](https://github.com/portel-dev/photon/commit/136adcaabe0d820d3203ffc1ffe6199020a0d153))
* Complete LitElement frontend with toast notifications, loading states, and error recovery ([41b6d48](https://github.com/portel-dev/photon/commit/41b6d48bd4057b882a2aefcd2f9efc3a7b84d645))
* Constrain file browser to photon's workdir ([51b4a16](https://github.com/portel-dev/photon/commit/51b4a16904936879057f92e566fbd77d02e50a7c))
* create marketplace photon + backend data enrichment ([c1242b8](https://github.com/portel-dev/photon/commit/c1242b89f7c9ac6df0ffada7727614cb687d9801))
* diagnostics view, test runner UI, and maker workflow feedback ([5a2f759](https://github.com/portel-dev/photon/commit/5a2f759c90a9d072cdb16480df2b578c5e697d90))
* Display supported marketplace formats as a neat table ([f69f5cd](https://github.com/portel-dev/photon/commit/f69f5cd0341fec00e857a8448108cac24fe1372e))
* distinguish installed vs available photons in marketplace ([39963a7](https://github.com/portel-dev/photon/commit/39963a7c34e87fd57e13fbcbefdc3f0599774b39))
* Enable [@mcp](https://github.com/mcp) dependency injection via protocol ([d5f075c](https://github.com/portel-dev/photon/commit/d5f075cac25ec5b8839ccf83ad1861367f076422))
* Enable static method execution in PhotonLoader ([9c1d3bb](https://github.com/portel-dev/photon/commit/9c1d3bbf34e7b2d9a1bb9b0e510bf10d12ebfaca))
* enhance maker wizard with description, icon, methods, and npm dependency validation ([e157f4d](https://github.com/portel-dev/photon/commit/e157f4d6684fae99004f3826d748732702219a07))
* enhance validation with type guards and assertions ([f86f8c9](https://github.com/portel-dev/photon/commit/f86f8c93d94cde36838ff01406adac23308b9260))
* Enhanced window.mcp API for ChatGPT Apps SDK parity ([1ebfc31](https://github.com/portel-dev/photon/commit/1ebfc314742b0d19a9be075f0d77f87291da53d9))
* **error-handling:** improve error handling across the codebase ([a4fdaaf](https://github.com/portel-dev/photon/commit/a4fdaaff53fd8d4c15aa7e0ec0ebc349ec72fe55))
* Expose daemon features as MCP tools ([b94255c](https://github.com/portel-dev/photon/commit/b94255c61888e3d3e57589732a6ec2a96bfc7302))
* Hide form when custom UI handles all interaction ([e088cf4](https://github.com/portel-dev/photon/commit/e088cf45096fe5b921e5306967c632d0d985c4ce))
* hide internal photons from sidebar, show welcome dashboard on first run ([6bbabc9](https://github.com/portel-dev/photon/commit/6bbabc9a92f330cad847359f6840b9df11d05b47))
* Implement Auto-UI system with progress indicators and component rendering ([901e0cd](https://github.com/portel-dev/photon/commit/901e0cdfa47a117cf6d2ca90abd2fe731087dae7))
* Implement ChatGPT SDK methods and add documentation ([bbc2f7d](https://github.com/portel-dev/photon/commit/bbc2f7df692bdeea1b0a2caf18cffb66b9d2f67d))
* Implement Custom UI rendering and asset distribution system ([453f81f](https://github.com/portel-dev/photon/commit/453f81fa9c86e04c733d92029b98e7b5d401ea49))
* implement MCP Apps standard compliance (7 features) ([faaba97](https://github.com/portel-dev/photon/commit/faaba971cc3b2072d3435f0809c4c177d94e488d))
* Implement missing Beam UI features from pre-Lit version ([8b8f12d](https://github.com/portel-dev/photon/commit/8b8f12daea7c8336e036ddb5715124d09c7bd4e6))
* Implement single global Photon daemon with event buffer ([2e12145](https://github.com/portel-dev/photon/commit/2e12145e556a04968b16e0f70060d9eaf1bc8c0f))
* implement streaming progress support in runtime and playground ([2b4aad8](https://github.com/portel-dev/photon/commit/2b4aad879d90b7d5a113afaf57a33cfdbb522b98))
* implement type-based constructor injection in PhotonLoader ([749f051](https://github.com/portel-dev/photon/commit/749f0510282b851c1ac1069d0ad02ac5412ecc27))
* Implement workspace-centric design for BEAM UI ([90315fe](https://github.com/portel-dev/photon/commit/90315fee43610ce3b9663207a0ffbb1ea7bd10c4))
* Improve "Ready to go" screen with stats and quick actions ([7546722](https://github.com/portel-dev/photon/commit/7546722ac45fcf89345b33cbe07b325c1f377680))
* Improve beam UI form field intelligence ([e1a1cd2](https://github.com/portel-dev/photon/commit/e1a1cd2e4b3f3babba6e08a9ce0faa323ad6b79c))
* Improve beam UI form field rendering ([55293d5](https://github.com/portel-dev/photon/commit/55293d5c17881f1fdc0c14420e61199613cbf802))
* Improve config form with defaults and boolean toggle ([43f34d3](https://github.com/portel-dev/photon/commit/43f34d3d4111fc412a0d73fba51e4fc0cb9cf263))
* Improve onboarding UX and make BEAM the default command ([893a891](https://github.com/portel-dev/photon/commit/893a891c608fb68dc195c60fccc84a39e4d02aab))
* Improve photon display with header and uniform method cards ([f4b5fe1](https://github.com/portel-dev/photon/commit/f4b5fe1a9c2f7aa8e42d8309aa9d1390372df488))
* Improve table rendering for [@format](https://github.com/format) table annotation ([af39a21](https://github.com/portel-dev/photon/commit/af39a2133fb056a22b2a43468620cb0f769097d4))
* improve workflow CLI messaging ([4aeab05](https://github.com/portel-dev/photon/commit/4aeab05d5feb7ac7a953cbb933ac00284527e253))
* Include MCP prompt templates in methods list ([2fb7dd5](https://github.com/portel-dev/photon/commit/2fb7dd5f47e96e15f772abb27a713ecb5be7a72a))
* Include public IP as password in tunnel result for localtunnel ([e21ab5e](https://github.com/portel-dev/photon/commit/e21ab5e5ad218530c50859d1a3ec694743339b0c))
* Include UI metadata in MCP tools/call response ([48a64bb](https://github.com/portel-dev/photon/commit/48a64bb01f7c095dc8382d96073f529ce793d58a))
* integrate implicit stateful execution into tool execution ([c7cd495](https://github.com/portel-dev/photon/commit/c7cd495eaeb353b2dfb0319adc69ff3883cc708f))
* integrate marked.js for markdown rendering and implement a glassmorphism-inspired UI refresh with new CSS variables and component styles. ([89b36ef](https://github.com/portel-dev/photon/commit/89b36efd7010b5d2f4913ee9ff7f7223c262db7a))
* integrate mcp-servers.json config with PhotonLoader ([bdac9ea](https://github.com/portel-dev/photon/commit/bdac9ea5ecd7726c81c06301dcc009418c4497e6))
* Introduce Beam UI frontend with LitElement components and a dedicated build system. ([94867c7](https://github.com/portel-dev/photon/commit/94867c7eb6244e6f83695da4a68f7b84ab5b300c))
* Introduce code diagram generation for TypeScript/JavaScript files and enhance UI styling for activity log and file picker components. ([3c06199](https://github.com/portel-dev/photon/commit/3c06199ea8dcabdfd1cf53f49a563de4694bb850))
* MCP server starts daemon for [@stateful](https://github.com/stateful) photons ([c2f7a60](https://github.com/portel-dev/photon/commit/c2f7a60c70c387f59c8cbf7752e230020311167d))
* Move search bar to home view ([d366759](https://github.com/portel-dev/photon/commit/d3667591364afe1019512f5b2c03e1cab5fa7551))
* move test runner to action toolbar and add cross-photon test runner in diagnostics ([fdbf9d6](https://github.com/portel-dev/photon/commit/fdbf9d62561a3a8c97373bc19328a17b9fbb9915))
* Organize sidebar into three sections with unconfigured indicator ([2517cd9](https://github.com/portel-dev/photon/commit/2517cd939fa75dd74dec1f650cef0149ccc5d786))
* photon detail header, enhanced welcome, MCP config export, per-field config editing ([5c1ed6f](https://github.com/portel-dev/photon/commit/5c1ed6f48d7b7449c7a39970e9b08b8123d9830f))
* **playground:** merge form and auto-UI in UI tab ([bb4695c](https://github.com/portel-dev/photon/commit/bb4695c54abb445fa9e72e4794ec07ae74211d21))
* Redesign marketplace with source management and keyboard shortcuts ([2e4a987](https://github.com/portel-dev/photon/commit/2e4a9872d268a33be08dcb2fb26ef58984650244))
* Redesign playground with professional mobile-friendly UI ([ff9be10](https://github.com/portel-dev/photon/commit/ff9be1089a5ec3568436c015fd802a668cec8295))
* redesign playground with tabs, auto-execute, and syntax highlighting ([00d8204](https://github.com/portel-dev/photon/commit/00d82048e9436afd410ad4841b373c04b17def99))
* Redesign Serum with cohesive injection metaphor ([ec8bea5](https://github.com/portel-dev/photon/commit/ec8bea5801d51f8c130b724b6d5404253ab386e2))
* Refactor CLI commands by renaming `serve` to `sse`, `serv` to `serve`, introducing a new `host` command for deployment and preview, and updating documentation. ([8912d84](https://github.com/portel-dev/photon/commit/8912d8458307b9f223d1e9f83cb7f0039bebd972))
* Rename playground to beam and add configuration UI ([b983c8f](https://github.com/portel-dev/photon/commit/b983c8f3ada33dec8c557f98d177680edd19378e))
* Render single objects as vertical key-value table ([df5711d](https://github.com/portel-dev/photon/commit/df5711d70260bd9646afce1a48d24c6b1f573329))
* Reorganize help system - shortcuts in sidebar, per-photon help in settings ([39d37e1](https://github.com/portel-dev/photon/commit/39d37e19916c13e21c98965a58977422fe6ca4b5))
* Replace boolean dropdown with toggle switch in BEAM forms ([17f3f90](https://github.com/portel-dev/photon/commit/17f3f903dbeadd9b89614daa2ba97905f5ea1b1d))
* Replace WebSocket with SSE via MCP Streamable HTTP ([f051047](https://github.com/portel-dev/photon/commit/f051047feea33bae90b7a2ff7354ba71b868934f))
* Replace WebSocket with Streamable HTTP for Beam UI MCP client ([95fd5c6](https://github.com/portel-dev/photon/commit/95fd5c6467285f1475a532348fad8a7d39545be6))
* separate static vs instance methods in UI ([b0aa4db](https://github.com/portel-dev/photon/commit/b0aa4db5929640cf5f204a0ea36262249e49299c))
* serve photon help from generated markdown docs ([09142fd](https://github.com/portel-dev/photon/commit/09142fda00a14457ca971f8bdc280432ee7d7576))
* Show icon and internal status in sidebar and help modal ([1209371](https://github.com/portel-dev/photon/commit/1209371b83308e00c8e3799a919d611c3919bddb))
* show method names in photon info output ([1a43404](https://github.com/portel-dev/photon/commit/1a434041be651b7480adb20c1fc755f90b184254))
* sidebar enrichment with version, counts, and update badges ([61b7606](https://github.com/portel-dev/photon/commit/61b760684d882e7e2926e8e8a4a349f30edc3f2e))
* Support {[@hidden](https://github.com/hidden)} tag to exclude fields from UI forms ([0fa5e84](https://github.com/portel-dev/photon/commit/0fa5e849848ec8b4a25acc33b3c854ff060fa5f1))
* Support methods, prompts, and resources in Maker ([968fe8b](https://github.com/portel-dev/photon/commit/968fe8bbc4d93fe5fe8704d4bc747e2f4e2cd0b3))
* surface workflow run ID to CLI and MCP users ([ec613dd](https://github.com/portel-dev/photon/commit/ec613dde8485973cc5ed5aeea47b9ec9f96ee2d5))
* throw MCPConfigurationError for missing MCP dependencies ([72ecced](https://github.com/portel-dev/photon/commit/72ecced9c0cd7b2d459f3bd92d88bc2f0365c3ac))
* Unify config to ~/.photon/config.json ([d34ade0](https://github.com/portel-dev/photon/commit/d34ade0aae396a5b54817f78a22da8e08281f630))
* Update demo photon to use io helper API ([647a0cd](https://github.com/portel-dev/photon/commit/647a0cda45e15047754a5254e1f6c4da731c970f))
* Update light theme to Saledash-inspired Slate palette ([b820af4](https://github.com/portel-dev/photon/commit/b820af4342365c0f751db93226cb11bb0bc67d56)), closes [#f1f5f9](https://github.com/portel-dev/photon/issues/f1f5f9) [#fafbfc](https://github.com/portel-dev/photon/issues/fafbfc)
* Update marketplace modal hints to show all supported source types ([23f0bc1](https://github.com/portel-dev/photon/commit/23f0bc1006b0f203e3fcd949b4e1a8add6494bfa))
* update to photon-core 1.2.0 with ask/emit pattern ([20716da](https://github.com/portel-dev/photon/commit/20716da3e4c1f09bee53a59d1bbc9fe0183cc0a4))
* upgrade doc generation with feature badges and architecture diagrams ([d70d157](https://github.com/portel-dev/photon/commit/d70d157b7fe75ba07cd081910a50e4a49a2c26e9))
* Use MCP resources/read for UI template fetching ([8cecff9](https://github.com/portel-dev/photon/commit/8cecff9aed7f5811946e3364eff944430cb5d5e6))
* use method names as button labels and filter lifecycle methods in playground ([dcf5a44](https://github.com/portel-dev/photon/commit/dcf5a44ff034b9368dd68faad2c16cd0d87dff0b))
* use official MCP SDK with multi-transport support ([573501d](https://github.com/portel-dev/photon/commit/573501dbca0cf442ff1b5caeb26d7cd30bd79d0f))
* Use web UI for elicitations instead of native dialogs ([1b1babd](https://github.com/portel-dev/photon/commit/1b1babdcc997b3e368a64bb85e263b289c527841))
* Watch asset folder for hot reload in dev mode ([33d7379](https://github.com/portel-dev/photon/commit/33d7379d132a87538e685e9a5263435b4cbc574a))
* Watch bundled photon asset folders for hot reload in Beam ([b066df4](https://github.com/portel-dev/photon/commit/b066df426190b10666c7b3c19c26d030e99802fe))
* Wire up on-demand channel subscriptions ([3051e7f](https://github.com/portel-dev/photon/commit/3051e7f48b5b31df08f5e263aa618b28e2dad8fa))
* zero-config MCP startup with auto-install and elicitation ([4c2d3b1](https://github.com/portel-dev/photon/commit/4c2d3b1432f02c5593ed5473721b540400916337))

### Bug Fixes

* Add .js extension to ES module import in platform-compat ([2ff175b](https://github.com/portel-dev/photon/commit/2ff175b9605064c8ea427e1cc96c4c25b9566217))
* Add allow-modals to iframe sandbox for confirm() dialogs ([774232d](https://github.com/portel-dev/photon/commit/774232dd95e19382c59664db6c2370613ed09dbb))
* Add app-mode detection to selectMethodByName for hash navigation ([7b59010](https://github.com/portel-dev/photon/commit/7b5901005423936341d96684c2ba28219886ebf0))
* Add common CSS variable aliases for iframe theme compatibility ([caba201](https://github.com/portel-dev/photon/commit/caba20159675be465c2674eba6e1269fb68c4eb0))
* add error logging, fetch timeouts, and named constants for pre-commit warnings ([0ce4107](https://github.com/portel-dev/photon/commit/0ce410769e6bc21e5245ad8e7f83aabad77d7956))
* Add ES module __dirname support to BEAM for CLI tests ([e1aedbd](https://github.com/portel-dev/photon/commit/e1aedbde850a26dc4b3d5ae5dde85d4bf565b068))
* Add ESM-compatible __dirname and fix startup detection in E2E tests ([a4c66a3](https://github.com/portel-dev/photon/commit/a4c66a3ca45f0402b8c16b8283f6c3ce6d36c04d))
* Add fetch timeouts and fix pre-commit hook detection ([0a97aed](https://github.com/portel-dev/photon/commit/0a97aed66c17b918e4519910c602b51ec85b6815))
* Add form rendering support in BEAM elicitation modal ([4388198](https://github.com/portel-dev/photon/commit/4388198c7e87cc4cbf0eb1e7b95f3c3030ed8fe4))
* Add JSON syntax highlighting to Execute tab smart rendering ([7e52e86](https://github.com/portel-dev/photon/commit/7e52e8640c2041e194b354d2d3a5638c011d4ba2))
* Add missing renderMethodView function and fix dashboard caching ([6a627d0](https://github.com/portel-dev/photon/commit/6a627d053a60e342525d4f3857320767ab5faa3d))
* Add missing TypeScript types for cancel and elicitation messages ([fd76a9d](https://github.com/portel-dev/photon/commit/fd76a9d1b308763106a1f51e4cecb6ab5be4569f))
* Add photon:call-tool handler for custom UI templates ([080a9b5](https://github.com/portel-dev/photon/commit/080a9b5f0228218c8e628235a9a0262a1f4515c4))
* Add port fallback retry in startBeam for race conditions ([bc931c6](https://github.com/portel-dev/photon/commit/bc931c64f6060a78e94a7abbdfac83d99be9dea4))
* Add prepublish safeguard for file: dependencies ([edd1ddf](https://github.com/portel-dev/photon/commit/edd1ddf5c0d0422140588b9a1171d6bf58a450b0))
* Add settings menu to methods list view and help button ([962a9a9](https://github.com/portel-dev/photon/commit/962a9a9ceaee0234587e9e8065fd593826db9c1b))
* Add theme sync to custom UI apps (dashboard, etc.) ([47dcc83](https://github.com/portel-dev/photon/commit/47dcc8359648624a0dfc771011d1dfdb2ae93f36))
* Add WebSocket dependencies and imports for playground ([71b34b4](https://github.com/portel-dev/photon/commit/71b34b46ba13c81deccd511a4b2d0170f40df577))
* Address architectural anti-patterns from pre-commit hook ([45b15eb](https://github.com/portel-dev/photon/commit/45b15eb10506c0822380dc88a495328e11c389e4))
* Align activity panel with 300px sidebar width ([445c5c1](https://github.com/portel-dev/photon/commit/445c5c1dfdc616eb0280778203f8c19ba244510d))
* Align dropdown indicator in select fields ([a07ebaa](https://github.com/portel-dev/photon/commit/a07ebaade3444c05bbe46edda6d6d43ad8aa10d5))
* App-mode invoke and selection state management ([147140c](https://github.com/portel-dev/photon/commit/147140c9d7e340bf8541b36a5b712f6b070a7c5c))
* App-mode now fills full viewport height by hiding method header ([0a295cd](https://github.com/portel-dev/photon/commit/0a295cda52ab6313af7852abf797c33ed770a94f))
* Back button from App method returns to App view with methods visible ([4421ee5](https://github.com/portel-dev/photon/commit/4421ee59654e3fa79a2121f1637f29669cbed749))
* Back button navigation for App methods with Custom UI ([8730a42](https://github.com/portel-dev/photon/commit/8730a42d3c8a406918cf6382b686a3effb6b7c46))
* **beam:** Add no-cache headers for UI templates ([60b1bbe](https://github.com/portel-dev/photon/commit/60b1bbe1c61f80a8df7e2ea6010d6257d6404c9f))
* **beam:** Fix View Source to show code modal and update Remember icon ([f77beb0](https://github.com/portel-dev/photon/commit/f77beb005f65a378181bb75ff720b065e5a90fee))
* **beam:** Handle photon file deletion in hot-reload watcher ([780f693](https://github.com/portel-dev/photon/commit/780f693073221dfb805006a0bc1d1956ba57948d))
* **beam:** Pass photon path to frontend for View Source ([89abc33](https://github.com/portel-dev/photon/commit/89abc333b013e5c75cb146586bb89dcd2ce52af5))
* **beam:** Restore unconfigured photons in sidebar SETUP section ([19c44b3](https://github.com/portel-dev/photon/commit/19c44b3f88b80ef223677e9e15e8e8b0db229380))
* Clean up Add Marketplace modal formatting ([69174b4](https://github.com/portel-dev/photon/commit/69174b41e8fdbedc3a9f9a0b731c067ba62ffa38))
* Clean up beam startup output and prevent error spam ([a86d2ce](https://github.com/portel-dev/photon/commit/a86d2ce72c6647a95316c975639d197245fe1c5c))
* clean up preprocessArgs flag-value skipping logic ([2f42a04](https://github.com/portel-dev/photon/commit/2f42a04b6a4b7430723808c92bdcdb840de43051))
* Clear stale results when switching between methods ([cf41210](https://github.com/portel-dev/photon/commit/cf41210da9834a1331e55ee4c53d208680a3e1dd))
* Collapse expanded photons when search is cleared ([7cce82e](https://github.com/portel-dev/photon/commit/7cce82e967fab73a262fc903120e1a752413c63f))
* Correct elicitation and progress bar handling in playground ([f463854](https://github.com/portel-dev/photon/commit/f4638542670beaa6dd9533686a6904a146fb7f12))
* correct tool count assertion in server comprehensive test ([840f96e](https://github.com/portel-dev/photon/commit/840f96e24b12a5725e4b417d1d24b3255bfe6d4e))
* correct UI data injection variable name in playground ([b55f569](https://github.com/portel-dev/photon/commit/b55f5697250b8231dac579b5544317b37493fb4d))
* deduplicate prompt templates from tool count in sidebar ([f72265e](https://github.com/portel-dev/photon/commit/f72265e25f49d71d0cd9792eb7af75adcb487c0d))
* default version to 1.0.0 when not detected ([65696d1](https://github.com/portel-dev/photon/commit/65696d1057bf9705209f28d918bd68e3d303e066))
* Don't shut down daemon when channel subscribers are active ([060b847](https://github.com/portel-dev/photon/commit/060b8472fe70a5967a97ff8dd4bd6821ebc4fa55))
* Enable cross-client pub/sub notifications via daemon ([ac781c5](https://github.com/portel-dev/photon/commit/ac781c58d7a7c5c90b7a9d8bb9b5cb7223c8b579))
* Enable dynamic theme switching for embedded iframes ([847bace](https://github.com/portel-dev/photon/commit/847bace8c9ec262a025b68cee093b48d99305049))
* Enable layout hints by rebuilding photon-core ([0ab6a1a](https://github.com/portel-dev/photon/commit/0ab6a1adb6cd69f56a52541977bf547011c552fa))
* Exit cleanly when no ports available instead of hanging ([0e2aee4](https://github.com/portel-dev/photon/commit/0e2aee49bb05fd6a6a5891a2591c2f012239cc7a))
* extract ProgressRenderer and use async file access ([1b30d77](https://github.com/portel-dev/photon/commit/1b30d774b01000077c28fac74a0146b65a8ae546))
* File browser now uses BEAM's working directory for filesystem photon ([fb84874](https://github.com/portel-dev/photon/commit/fb84874be8512b46a7160a64201e6a0518f22e00))
* Fix button label formatting in BEAM UI ([19220ea](https://github.com/portel-dev/photon/commit/19220ea45af1e43b6b05d18f44f5bd18ce8643c1))
* Fix playground form button label update ([0306fa3](https://github.com/portel-dev/photon/commit/0306fa33e1c2db3e3aeb4b6b1e500d5fff41cd1e))
* Forward board-update emits from MCP calls to WebSocket clients ([2ad09a2](https://github.com/portel-dev/photon/commit/2ad09a24a470242267884671b32760606e2eeb54))
* Forward board-update emits from Streamable HTTP MCP calls ([8a4b553](https://github.com/portel-dev/photon/commit/8a4b55302f97a865666546dc313d02b347de307a))
* Forward events to iframes in nested shadow DOMs ([8fa29d5](https://github.com/portel-dev/photon/commit/8fa29d5241a45f28575f6fc1ce9a0d32aeb0d643))
* Forward MCP tool channel events to global daemon for real-time sync ([3539147](https://github.com/portel-dev/photon/commit/353914768e0619c792fbac6a336207877025eddb))
* Give custom UI iframes more height using viewport calc ([8392815](https://github.com/portel-dev/photon/commit/8392815a8a30ee591b0fef918aff3c061aaa0aa2))
* Handle anyOf schemas in BEAM form rendering ([d11ea72](https://github.com/portel-dev/photon/commit/d11ea72d690fd99b7291551db701b63fd3a0fb27))
* Handle null data-content element in photon view result rendering ([fc22b5f](https://github.com/portel-dev/photon/commit/fc22b5f34f18b339140730fc7183bc0484820bd1))
* Handle property/method name collisions in tool execution ([09a2d06](https://github.com/portel-dev/photon/commit/09a2d065be3e759dacc1d21c95a55921ea4d8a38))
* Hide BEAM filter for custom UI, add priority filter to dashboard ([2f14648](https://github.com/portel-dev/photon/commit/2f1464887b4410423582d9e8556f350dfd88b7a3))
* hide iframe until loaded to prevent white flash ([387b7e5](https://github.com/portel-dev/photon/commit/387b7e558b34dc907946ad33a72bed4a2d606644))
* Hide progress dialog for interactive UI invocations ([53a90ce](https://github.com/portel-dev/photon/commit/53a90ce20a4a30de179aca7b7074d106bb702f72))
* Hide Run button for auto-executing methods ([b25cc0e](https://github.com/portel-dev/photon/commit/b25cc0e838fe47ad07324c97c293cd072e25f856))
* Ignore data files in hot reload watcher ([2ac8b63](https://github.com/portel-dev/photon/commit/2ac8b63ae7de1d12557e22061866b983ebf96308))
* Improve 'method not found' error to show available methods ([b30c16c](https://github.com/portel-dev/photon/commit/b30c16ce72406d28557f83c672e1b42bd1dfb33f))
* Improve BEAM test reliability with shared context ([b01a9ad](https://github.com/portel-dev/photon/commit/b01a9ad9e634107edb2fb9bc0788628221fdb58c))
* Improve BEAM UI rendering for lists and JSON display ([eade8cb](https://github.com/portel-dev/photon/commit/eade8cb639803b4489aef4534da2ba4236a3c052))
* Improve Data tab styling in photon view ([75c72bf](https://github.com/portel-dev/photon/commit/75c72bf41465306362a6a3ec7daf46157972ece1))
* Improve fullscreen viewer behavior ([fb25472](https://github.com/portel-dev/photon/commit/fb2547295335dc6ba25dccbbf614a927ee38309d))
* Improve markdown rendering with blockquotes, code, and line breaks ([cb86620](https://github.com/portel-dev/photon/commit/cb8662015795d027f41ef3ed3626531671913d91))
* Improve markdown rendering with YAML front matter and link styles ([0416e49](https://github.com/portel-dev/photon/commit/0416e49a29152299d04e4c30411af4615ab4bc1e)), closes [#64b5f6](https://github.com/portel-dev/photon/issues/64b5f6)
* Improve mermaid fullscreen and view switching ([b7b7f8c](https://github.com/portel-dev/photon/commit/b7b7f8c59592fd2bd595292e00aa690565566bb0))
* Improve public IP detection with multiple fallback services ([bdcdf70](https://github.com/portel-dev/photon/commit/bdcdf70eccb4f2364d35a11b056ea9f5b1ffa3f8))
* Improve tunnel photon and URL display in results ([ce50145](https://github.com/portel-dev/photon/commit/ce50145fde2d34715b3c1a14c8b2fa84bccfcb14))
* Improve unconfigured photon detection and display ([2f6db0b](https://github.com/portel-dev/photon/commit/2f6db0b0c3876572854034a8e9450bfff6755576))
* Include outputFormat and layoutHints in hot reload schema ([1fe6293](https://github.com/portel-dev/photon/commit/1fe629333314d963a8778b68232fbbcdd927604b))
* label wizard submit button as "Create" instead of "Execute" ([624bbdc](https://github.com/portel-dev/photon/commit/624bbdc67e03f6964715ae7dd5e00e48a0fef0ed))
* Lowercase first char of test names for camelCase display ([9aaad02](https://github.com/portel-dev/photon/commit/9aaad02e36babda100ff26d321a12ab92e68f778))
* make wizard name a direct parameter instead of elicitation step ([9b45d3e](https://github.com/portel-dev/photon/commit/9b45d3eff09b92d9530b86e9d20309cd197bdf1d))
* Mermaid fullscreen close button not working ([c1e2079](https://github.com/portel-dev/photon/commit/c1e2079abdf33108680f0cd5c7b1816e5fc8a9a0))
* Mermaid fullscreen now uses full viewport space ([8a0dec5](https://github.com/portel-dev/photon/commit/8a0dec5de6441746c20b0e24fe176215b5ca558a))
* Move config form from sidebar dropdown to main content area ([1d369df](https://github.com/portel-dev/photon/commit/1d369dfd0593a330caf7a72d5313f5eb8a26dc82))
* Only show filter input for array results ([2dbbd30](https://github.com/portel-dev/photon/commit/2dbbd307d1caa80dc098e87825ff5f808464cf06))
* parse MCP result envelope before forwarding to custom UI iframes ([53e0528](https://github.com/portel-dev/photon/commit/53e0528a2ffd86d34f9c98842336f1707ba50baf))
* Preserve existing owner field when syncing marketplace manifest ([dc0b614](https://github.com/portel-dev/photon/commit/dc0b614565a2000783135213871a83a01bd1cfb0))
* Prevent input overflow in marketplace Add Repository modal ([8d3514b](https://github.com/portel-dev/photon/commit/8d3514b4156c627049075fd24e21d874b065aba5))
* Prevent keyboard shortcuts from triggering while typing in inputs ([f6cca0c](https://github.com/portel-dev/photon/commit/f6cca0c9db66c4ca61c0fa0798091bde7735071e))
* Prevent method cards from stretching to equal row heights ([79746ca](https://github.com/portel-dev/photon/commit/79746ca5828f26d72d786fb8bbddbf2f589794fc))
* Progress shows as centered overlay and clears on result ([0f38b3c](https://github.com/portel-dev/photon/commit/0f38b3cc03410942d131f096f507b062424a4ec9))
* Properly render mermaid diagrams in markdown results ([e04e75c](https://github.com/portel-dev/photon/commit/e04e75c0c6e6ad3405aa97e147e7f9df76d61332))
* Redesign light theme with warm editorial palette and fix CSS variable inheritance ([d5c3f90](https://github.com/portel-dev/photon/commit/d5c3f908f1160f7e0de38e5b1424068534c83f76))
* Refresh button reloads current photon only ([3e3ee78](https://github.com/portel-dev/photon/commit/3e3ee781aa02a27e106aff09d2a06c088d542e6b))
* Refresh iframes on hot reload for asset changes ([85fa5ae](https://github.com/portel-dev/photon/commit/85fa5ae86489a113e9d63dd44587a47568adbb4e))
* regenerate photon help doc when source is newer than cached .md ([63a01bf](https://github.com/portel-dev/photon/commit/63a01bfe8661a118ca0b4c182f343585a222f0b2))
* Remove [@state](https://github.com/state) from mermaid blocks to prevent infinite update loop ([7b65d41](https://github.com/portel-dev/photon/commit/7b65d41a3dfa049abc655388dcfdaad8d84bc5e8))
* Remove comment containing </script> that broke HTML parsing ([f304ea4](https://github.com/portel-dev/photon/commit/f304ea4138b0dee455c39add232ce2503b6e6efc))
* remove hardcoded error messages, support custom errors ([fd605dc](https://github.com/portel-dev/photon/commit/fd605dc2da675f9affe29539076050807333a52c))
* Remove hardcoded paths and improve cross-platform compatibility ([286ed6b](https://github.com/portel-dev/photon/commit/286ed6bced965e96ff56b2227c50937f0d26898e))
* Remove inline script from toggle switch to prevent syntax errors ([3b2e366](https://github.com/portel-dev/photon/commit/3b2e366cd53c1be643a4d7661c974c3d6b7cfbcd))
* Remove noisy success toasts for tool executions ([879a8df](https://github.com/portel-dev/photon/commit/879a8df7c0c2b968a7f9bed200f24dfe939131d1))
* Rename 'Raw JSON' tab to 'Data' for format agnosticism ([15c3101](https://github.com/portel-dev/photon/commit/15c310172c2ab313004347ee0f4ca85c691c4a54))
* Rename "Add Repository" to "Add Source" in marketplace modal ([697466b](https://github.com/portel-dev/photon/commit/697466b24885ff6baa0984062c3d1f0f1e20517f))
* rename reserved method name in schema-extractor test ([e0658b9](https://github.com/portel-dev/photon/commit/e0658b982a5a1d4121f7e11ef5f85af914a5bb5b))
* Rename sidebar sections and fix method data for configured photons ([c20b651](https://github.com/portel-dev/photon/commit/c20b651074f4362e0ae4c88cf1d9d6e692612649))
* replace __PHOTON_DATA__ injection with MCP bridge in playground ([a087b0e](https://github.com/portel-dev/photon/commit/a087b0edeec6002f9ce4ce141ffafab1d1e2ebe8))
* Replace redundant APP badge with method count for all photons ([cedb1fa](https://github.com/portel-dev/photon/commit/cedb1fa0cd18103c8f0c74c8845dde7a91f227a8))
* replace template literal renderer with char-by-char walker ([853731c](https://github.com/portel-dev/photon/commit/853731cfca18c1b63e765f3f04f3b8809f4e5c8f))
* Replace unsafe Function type with typed callback in MCPClientService ([c2c30fa](https://github.com/portel-dev/photon/commit/c2c30fa669e4492f6522401ffc9d2823b61ddc9a))
* Resolve formatting issues and unused variable warnings ([48edb95](https://github.com/portel-dev/photon/commit/48edb957a30f61acd3274e53ccd6ded25c336705))
* resolve marketplace Photon dependencies from ~/.photon ([adfb10f](https://github.com/portel-dev/photon/commit/adfb10f4fb5cd48245de552abff4bf42f4861431))
* resolve photon name in deploy commands like other commands ([77ca2d1](https://github.com/portel-dev/photon/commit/77ca2d1e1a57a4762b0ce1529c9547bf38c1c488))
* resolve pre-commit hook warnings ([9805627](https://github.com/portel-dev/photon/commit/980562782b8af058efe76846ff30c189eac36115))
* Resolve TypeScript errors in photon-config and result-viewer ([aadb0d6](https://github.com/portel-dev/photon/commit/aadb0d673a0d00d9f688cec95d301823d64ceffe))
* resolve working dir to absolute path, load static-only photons ([0ad22d4](https://github.com/portel-dev/photon/commit/0ad22d42e8cc8bd64e2c16a3461251feaa36d49d))
* restore UI preview and show determinate progress ([d7a5606](https://github.com/portel-dev/photon/commit/d7a5606a962398013ecaffa0003d52b34ca28592))
* restrict playground to dev mode only ([c2a5e90](https://github.com/portel-dev/photon/commit/c2a5e90e0745e4f0efdef3ef4560ba355099584a))
* restrict playground to dev mode only ([7a4095e](https://github.com/portel-dev/photon/commit/7a4095ea59887745b873f5ffcfc93b41ce8b487a))
* Return final result from tunnel.start instead of yielding ([4ca2874](https://github.com/portel-dev/photon/commit/4ca2874b1fd59ccd9e092864d7bcc1255fa1e494))
* Set PHOTON_NAME in MCP command for daemon pub/sub to work ([f70eb28](https://github.com/portel-dev/photon/commit/f70eb28240bd32c26bdf96da10b1f209a1852561))
* Show friendly message in settings when no configuration needed ([9aa06ad](https://github.com/portel-dev/photon/commit/9aa06add5735185dbb1743aeddf240a855f9615b))
* Show progress bar instead of spinner for determinate progress ([e9faa44](https://github.com/portel-dev/photon/commit/e9faa443244b19d9de31ff0af88848a1fdd0d0fc))
* sidebar missing prompt and resource counts ([eb968a3](https://github.com/portel-dev/photon/commit/eb968a37959c9eb91a8f9fdfe9d6cc8103f25e69))
* Smart download button adapts to content format ([57fd86a](https://github.com/portel-dev/photon/commit/57fd86a7dc55f41b8b44f2174ad66a43a6813b8d))
* Source viewer scroll and README image paths ([1ebf541](https://github.com/portel-dev/photon/commit/1ebf541f0a82e600a893d2b423416c580a5bca71))
* Standardize CLI error handling and exit codes ([effaf50](https://github.com/portel-dev/photon/commit/effaf50f1b7a887349df3a91baf1a9c0aa25741e))
* Strip 'test' prefix from test names in CLI output ([c73005e](https://github.com/portel-dev/photon/commit/c73005ecae4639b78783bf83217d17b9a667fbb7))
* Subscribe to all kanban board channels for real-time updates ([042e414](https://github.com/portel-dev/photon/commit/042e4148bade298160c5925eed15a56f6483266b))
* Subscribe to correct channel based on actual board name ([3033afd](https://github.com/portel-dev/photon/commit/3033afd265fcce387f2976b3e541ecab70a554af))
* Sync app iframe theme with BEAM theme changes ([9d84ab6](https://github.com/portel-dev/photon/commit/9d84ab6e454156abbe611ae26779237e0d4b94d4))
* Sync rendering files with photon-core ([14a46d5](https://github.com/portel-dev/photon/commit/14a46d541c22e0cee443b2ae64364db7c01a1b9a))
* Target all iframe types in app-mode CSS for full height ([12598f0](https://github.com/portel-dev/photon/commit/12598f0f2b17b77cf945ac63e71761e9b2512f97))
* Test suite compatibility fixes ([7cd4c98](https://github.com/portel-dev/photon/commit/7cd4c98588b730803d3a6f6523bbcf66a6f31a1b))
* UI layout improvements for activity bar and search spacing ([d6bdbf0](https://github.com/portel-dev/photon/commit/d6bdbf07822bda6ee86f4d486840c6b5c998f1eb))
* Update BEAM UI tests for workspace-centric design ([33e29c8](https://github.com/portel-dev/photon/commit/33e29c8fa10fd8752edf10bad0243d2b0b6981a0)), closes [#help-modal](https://github.com/portel-dev/photon/issues/help-modal)
* Update E2E tests with correct selectors and skip problematic tests ([2b46d90](https://github.com/portel-dev/photon/commit/2b46d9055e4df7e218b732e53a2006f54aaf981c))
* update moduleResolution to bundler for subpath export support ([04dfb59](https://github.com/portel-dev/photon/commit/04dfb5919fb0edff65a25ee57e6b4e7504c33fdc))
* Update photon-core to 2.1.1 for tilde expansion support ([b9d8f71](https://github.com/portel-dev/photon/commit/b9d8f713c5af7a44e71a5a6780c32f57fbbc6a5c))
* Update photon-core to 2.1.2 for tilde expansion and npm deps ([1936a8c](https://github.com/portel-dev/photon/commit/1936a8c874489822fdffc0d3e3de48222d8448ec))
* Use --dir= syntax in readme validation tests ([71e9499](https://github.com/portel-dev/photon/commit/71e9499f0b32f283cf3fe92035e7e03d2ff9f60d))
* Use "Add Marketplace" wording throughout marketplace UI ([ee9fc7f](https://github.com/portel-dev/photon/commit/ee9fc7f8dd7d9aa678a14f1c349e75c3e33486ae))
* Use consistent daemon name for MCP auto-subscription ([0a0928f](https://github.com/portel-dev/photon/commit/0a0928f72b338a71acd40f37e20b4bd581fcf32b))
* Use event delegation for mermaid fullscreen controls ([8e71f07](https://github.com/portel-dev/photon/commit/8e71f0793186ab8f9eeb234022b1f92c959de3c6))
* Use loader.executeTool for proper this.emit() support in playground ([ed85ba8](https://github.com/portel-dev/photon/commit/ed85ba8873057717b3fa4e91ca6bea23bfec170a))
* use npm registry for @portel/photon-core dependency ([ac6ab1c](https://github.com/portel-dev/photon/commit/ac6ab1cd015fbd5aaddbba8e5950b746badd02a0))
* Use PhotonLoader in playground for proper dependency management ([6fcb37a](https://github.com/portel-dev/photon/commit/6fcb37ac7afd3fb7aafbb1ec4f2a6d414783828e))
* Use PhotonLoader in SSE playground for consistent dependency handling ([e02846d](https://github.com/portel-dev/photon/commit/e02846d984349bb86b26f2ce4cecb5c910b4fec4))
* Use reloadFile() for proper hot reload in Beam UI ([28b4e65](https://github.com/portel-dev/photon/commit/28b4e651f3c41d43b50487f13046b166d7c7f266))
* Use subtle setup indicator for unconfigured photons in Beam UI ([f51ed2f](https://github.com/portel-dev/photon/commit/f51ed2f6b9856d18182e3d57b024c03ecb3b9544))
* Watch symlinked photon asset folders for hot reload ([57201fd](https://github.com/portel-dev/photon/commit/57201fd8f9e3747605ce1713716d917fe6d01efe))
* wizard yields use standard ask/emit protocol, CLI defaults to beam with flags ([ced69fb](https://github.com/portel-dev/photon/commit/ced69fbd157fc2398b866221db765f3970819854))
* Wrap HTML fragments in proper document structure for script execution ([98a5936](https://github.com/portel-dev/photon/commit/98a5936937f32d16b589ecc9128a790013b9da3c))

### Performance

* optimize Beam startup by deferring photon loading and parallelizing ([d510f9a](https://github.com/portel-dev/photon/commit/d510f9a55b8c8d3cbfc85c4a381cc870aa9c8ef5))

## [1.4.0](https://github.com/portel-dev/photon/compare/v1.3.0...v1.4.0) (2025-11-24)

### Features

* add content format support for CLI and MCP output ([477aae3](https://github.com/portel-dev/photon/commit/477aae3bc6b495bb787ac66b04f3312570780aef))
* add hash-based dependency cache validation ([6706ea2](https://github.com/portel-dev/photon/commit/6706ea27d9cbfccaf87406521166799a77d70fc6))
* add maker command namespace for marketplace creators ([774f6e6](https://github.com/portel-dev/photon/commit/774f6e6385adb9cd6845a8e259c1feaee8305d9b))
* add missing CLI commands and improve command discoverability ([5f85a47](https://github.com/portel-dev/photon/commit/5f85a47644239bdac80462b7d9d0b6a96872d928))
* add shared CLI output formatter for consistent table/tree formatting ([c5f81ee](https://github.com/portel-dev/photon/commit/c5f81eefb1ab5d9d79ca76c4624a64f618b78a82))
* add syntax highlighting for --json flag output ([a1fcc92](https://github.com/portel-dev/photon/commit/a1fcc92955570bd08e4cd0e61fb0a49aab39c59b))
* add update command and typo suggestions ([c060591](https://github.com/portel-dev/photon/commit/c060591d8e04f01a1218e4cce5395a4a069f8864))
* migrate to @portel/photon-core for shared functionality ([91451b6](https://github.com/portel-dev/photon/commit/91451b68b220dbafdb6fd0e555349aa1318bfc04))

### Bug Fixes

* add type definitions and fix outputFormat access ([8c741e7](https://github.com/portel-dev/photon/commit/8c741e77cc9e24a11a1675671c001353aa789bd1))
* address PR review feedback ([d926095](https://github.com/portel-dev/photon/commit/d92609588f8ccccb08032b282ac5228e3e054f52))
* remove call to nonexistent removeInstallMetadata method ([9251121](https://github.com/portel-dev/photon/commit/9251121582bbedf30e49688e11e75f1b6a2371e4))
* update test imports to use @portel/photon-core ([4a2efd3](https://github.com/portel-dev/photon/commit/4a2efd39db061bc729319c33cba587ff7304fd2b))

## [1.3.0](https://github.com/portel-dev/photon/compare/v1.2.0...v1.3.0) (2025-11-19)

### Features

* add [@format](https://github.com/format) tag system for structured output rendering ([b824088](https://github.com/portel-dev/photon/commit/b8240888c53308c25dd45c491a4ca529480a7f78))
* add {[@unique](https://github.com/unique)} constraint for array uniqueItems ([d643ed6](https://github.com/portel-dev/photon/commit/d643ed6732c48e28ae987531e1d4204481deaeb9))
* add advanced JSDoc constraints - example, multipleOf, deprecated, readOnly/writeOnly ([7194f17](https://github.com/portel-dev/photon/commit/7194f172bc65e53a868327f41256330468bde751))
* add beautified table rendering with borders and clean output ([502e9bb](https://github.com/portel-dev/photon/commit/502e9bb0108891a960cd4ea6758bf758977bb7f8))
* add CLI aliases to run photons as standalone commands ([c5de92b](https://github.com/portel-dev/photon/commit/c5de92b0e521b748a3e2007f708b3a649ec83979))
* add comprehensive CLI documentation and tests ([2d5ba17](https://github.com/portel-dev/photon/commit/2d5ba17760babde8d1a72736c83ee0c5c181025c))
* add comprehensive JSDoc constraint support ([ddd537f](https://github.com/portel-dev/photon/commit/ddd537ff082065eb337290379cb5cd1d09866f4e))
* add direct CLI invocation for photon methods ([81e4be4](https://github.com/portel-dev/photon/commit/81e4be4d299fc25768c3c82640a4ff54e5122bad))
* add JSDoc constraint tags {[@min](https://github.com/min)} and {[@max](https://github.com/max)} ([d76092c](https://github.com/portel-dev/photon/commit/d76092c65fcaf2dc75791cf83c21f5bbf88b44fa))
* extract readonly from TypeScript with JSDoc precedence ([5a0f1a1](https://github.com/portel-dev/photon/commit/5a0f1a101998279d233b3025a03e5e3fbae16a18))
* format CLI output for better readability ([de70721](https://github.com/portel-dev/photon/commit/de707212dd33af96726fe4b1c8c5bbcca84bb721))
* generate proper JSON Schema enum arrays for literal unions ([1718188](https://github.com/portel-dev/photon/commit/171818820f8711a92add5f1409c8f6a3c648372b))
* implement session management for daemon isolation ([bae22d6](https://github.com/portel-dev/photon/commit/bae22d6125cfcd5af210123fa4118409b26811cb))
* implement stateful photon daemon architecture ([783e1cc](https://github.com/portel-dev/photon/commit/783e1cc511e2601bbb8f5b57e54310a5d6579a83))
* improve CLI error messages with hints ([837d47e](https://github.com/portel-dev/photon/commit/837d47e4594c4b5cd86c21fc3361bccf6b2b03a3))
* improve CLI help to follow standard conventions ([76ba48e](https://github.com/portel-dev/photon/commit/76ba48efcad43db17d161b7fbfdabae52b6325fa))
* optimize anyOf schemas for mixed type unions ([3281f2f](https://github.com/portel-dev/photon/commit/3281f2f301c7c973b6b4675e24bc4d777536919e))

### Bug Fixes

* add type coercion for CLI arguments based on method signatures ([a2125e0](https://github.com/portel-dev/photon/commit/a2125e02b0d120656070b703370f81e702520eef))
* critical CLI bugs - exit codes and --help ([6ee6da7](https://github.com/portel-dev/photon/commit/6ee6da782fa680f83bb866753ee2280e65d464cb))
* daemon CLI pairing flow and exit behavior ([83a3233](https://github.com/portel-dev/photon/commit/83a3233f6a9147e9a150cbe36af5b2c97b3cab36))
* detect optional parameters from TypeScript signatures ([8481df6](https://github.com/portel-dev/photon/commit/8481df6580e152133dd92acf39b8bf1803b9ef5c))
* make CLI aliases truly cross-platform ([1e541c2](https://github.com/portel-dev/photon/commit/1e541c2e571c711cb18aaa18c9dfcc1056a7316d))
* preserve +/- prefix for relative adjustments in CLI arguments ([38edba4](https://github.com/portel-dev/photon/commit/38edba474f29c54fbbc3fa8c18949e6c2a06ebe4))
* properly format JSDoc constraint tags in generated documentation ([d3f07f4](https://github.com/portel-dev/photon/commit/d3f07f4012753fb2b384fa575b7959b8e2fd79fa))
* remove 'path.' prefix from MCP config default values ([2ab0d30](https://github.com/portel-dev/photon/commit/2ab0d30fa1153513a50e038945dc7855cad23505))
* remove stack traces from CLI error output ([c3bf1e2](https://github.com/portel-dev/photon/commit/c3bf1e2e5ee4e73a0eec157e7a0c927ddd1de82a))
* update tests for CLI changes ([3557c10](https://github.com/portel-dev/photon/commit/3557c10569bbef94f523cfef69bacd4553a9cbef))
* use absolute path for lg-remote credentials file ([76e2357](https://github.com/portel-dev/photon/commit/76e2357341c7e044405b0c527318150968ef9963))
* use import.meta.url instead of __dirname for ES modules ([ccabd24](https://github.com/portel-dev/photon/commit/ccabd24e13322a5f3e39ce5f761ed954aa895386))
* use PhotonLoader for CLI to share dependency cache with MCP ([f8246e3](https://github.com/portel-dev/photon/commit/f8246e3b94dcfd3e1714052dc6b480200dcd78eb))

## [Unreleased]

### Features

* **CLI Interface** - Every photon automatically becomes a CLI tool with beautiful formatted output
  - `photon cli <name>` - List all methods for a photon
  - `photon cli <name> <method> [args...]` - Call methods directly from command line
  - `--help` flag for photon-level and method-level help
  - `--json` flag for raw JSON output
  - Natural syntax with positional arguments
  - Proper exit codes (0 for success, 1 for error)

* **Format System** - Smart output formatting with 5 standard types
  - `@format primitive` - String, number, boolean values
  - `@format table` - Bordered tables for flat objects
  - `@format tree` - Hierarchical data with indentation
  - `@format list` - Bullet-pointed arrays
  - `@format none` - Void operations
  - Auto-detection when no @format tag provided

* **Beautified Output** - Professional CLI presentation
  - Unicode box-drawing characters for tables (┌─┬─┐)
  - Bullet points for lists
  - Indented trees for nested data
  - Clean, minimal output (no progress logs unless errors)

* **Stateful Daemon Architecture** - Long-running photon processes with IPC
  - Daemons automatically start when needed
  - Unix domain sockets for fast IPC
  - Shared state across multiple CLI calls
  - Daemon management commands

* **CLI Aliases** - Run photons as standalone commands (cross-platform)
  - Automatic alias creation for each photon
  - Direct invocation: `lg-remote volume 50`
  - Works on Windows, macOS, and Linux

* **Type Coercion** - Automatic argument type conversion
  - Strings → numbers/booleans based on method signature
  - Preserves +/- prefixes for relative adjustments
  - JSON parsing for complex types

### Bug Fixes

* **Exit codes** - CLI now returns proper exit codes for automation/CI/CD
* **--help flag** - Fixed to work at photon level (`photon cli <name> --help`)
* **Relative adjustments** - Preserve +/- prefix in CLI arguments (e.g., `volume +5`)
* **Error messages** - Extract and display user-friendly error messages
* **Daemon pairing** - Fixed CLI pairing flow and exit behavior
* **ES modules** - Use import.meta.url instead of __dirname

### Documentation

* **Comprehensive CLI docs** - Added CLI Interface section to README
  - Quick examples with real output
  - Format system explanation
  - CLI command reference
  - "One Codebase, Multiple Interfaces" philosophy
  - Context-aware error messages
  - Exit codes for automation
* **Updated roadmap** - Highlight MCP + CLI availability
* **Examples** - Real-world CLI usage examples

### Tests

* **CLI test suite** - 17 comprehensive tests for CLI functionality
  - Method listing and invocation
  - Format detection and rendering
  - Relative adjustments
  - Error handling and exit codes
  - Help flags
  - Type coercion
* All 106 tests passing across all suites

## [1.2.0] - 2025-11-11

### Features

* **Unified info command** - `photon info` now shows both installed AND available photons from marketplaces
  - `photon info` - Lists all installed photons with marketplace availability in tree structure
  - `photon info <name>` - Shows details for photon (installed or available)
  - Tree format clearly shows which marketplace offers what photons
  - Install status marked with ✓ for easy identification

* **Smart global detection** - Automatically detects and uses global photon installation
  - Uses `photon` command if installed globally (cross-platform)
  - Falls back to `npx @portel/photon` if not installed globally
  - No manual configuration needed

* **Smart --dev guidance** - Contextual recommendations based on photon origin
  - Marketplace photons: Run without --dev, suggests copying to customize
  - Modified marketplace photons: Run with --dev, warns about upgrade conflicts
  - Local/custom photons: Run with --dev for hot reload

### Bug Fixes

* **Static analysis** - Use PhotonDocExtractor for `info` command to avoid instantiation errors
  - No longer requires constructor parameters to view photon details
  - Works for any photon regardless of configuration requirements

* **Cross-platform compatibility** - Use `photon` command instead of full path
  - Generated MCP configs now use `"command": "photon"` instead of platform-specific paths
  - Works consistently across macOS, Linux, and Windows

### Changed

* **Command renamed** - `photon get` → `photon info` for clarity
  - More intuitive naming (info shows information, add downloads)
  - Removed duplicate marketplace `info` command (now unified)
  - All documentation updated to reflect new command

### Tests

* Updated all test suites to use `info` command
* All tests passing (schema, marketplace, loader, server, integration, README validation)

## [1.1.0](https://github.com/portel-dev/photon/compare/v1.0.0...v1.1.0) (2025-11-09)

### Features

* add --claude-code flag to sync marketplace command ([1940535](https://github.com/portel-dev/photon/commit/1940535f5ed3c61378889280a8affe81b8fed7ac))
* add Claude Code integration section to README template ([eb0bd09](https://github.com/portel-dev/photon/commit/eb0bd093ccefdea63cc977d3c362c2aa6bd272a4))
* add photon marketplace init command with automatic git hooks ([0600756](https://github.com/portel-dev/photon/commit/06007567b72dab82e28b83f652bc1ecc73f22c45))
* generate individual plugin for each photon ([1d3c50c](https://github.com/portel-dev/photon/commit/1d3c50c5db048e892bb735bd5b1f3deff316acfb))

### Bug Fixes

* ensure owner field is always present in Claude Code plugin manifest ([2740c03](https://github.com/portel-dev/photon/commit/2740c036899acb3acf2b42fa492d679f2d2af7cf))
* switch npm badges from shields.io to badgen.net ([1f7e544](https://github.com/portel-dev/photon/commit/1f7e5440e6664d1d548ac08837f2d8e2381ae35c))
* update contact email from contact@portel.dev to arul@luracast.com ([96a195d](https://github.com/portel-dev/photon/commit/96a195dd21d57539d9a51116d2de93b9744c3518))
* use absolute path for CLI in tests to work after cd operations ([54ca674](https://github.com/portel-dev/photon/commit/54ca674c76a41bfe1a82f8e6ba453b9fc44d97a9))

## [Unreleased]

### Changed

**CLI Structure Overhaul:**
- `photon <name>` → `photon mcp <name>` - More explicit MCP server invocation
- `photon list` → `photon info` - Unified command for local and marketplace info
- `photon list --config` → `photon info <name> --mcp` - Generate MCP config
- `photon info` - List all Photons (local + marketplace availability)
- `photon info <name>` - Show Photon details with metadata
- `photon info --mcp` - MCP config for all Photons
- `photon info <name> --mcp` - MCP config for one Photon

**Marketplace System (replacing Registry):**
- `photon registry:*` → `photon marketplace *` - Simpler, clearer naming
- Marketplace structure: `.marketplace/photons.json` (was `.photon/marketplace.json`)
- Added `photon marketplace init` - Generate marketplace manifest from directory
- Marketplace manifest includes SHA-256 hashes for integrity verification
- Source paths relative to `.marketplace/` directory (use `../` prefix)

### Added

**Metadata Tracking:**
- Installation metadata stored in `~/.photon/.metadata.json`
- Track marketplace source, version, installation date for each Photon
- SHA-256 hash calculation for modification detection
- `photon info <name>` shows version, marketplace, and modification status
- ⚠️ Modified indicator when file hash doesn't match original

**Commands:**
- `photon marketplace init [path]` - Generate marketplace manifest
- `photon add <name>` - Install Photon from marketplace
- `photon search <query>` - Search across marketplaces

**Logging:**
- Conditional logging in PhotonLoader (verbose mode)
- Server mode shows compilation logs (verbose=true)
- CLI inspection commands are quiet (verbose=false)
- Errors always display regardless of verbose setting

### Removed

- `[Photon]` prefix from all log messages - cleaner output
- Old registry commands (`photon registry:add`, etc.)
- Old list command format

### Documentation

- Updated README.md with new CLI structure
- Updated GUIDE.md with new commands and marketplace system
- Updated COMPARISON.md with new command references
- Added marketplace structure and creation documentation
- Added metadata tracking documentation

## [1.0.0] - 2025-01-04

### Initial Release

**Photon MCP** - Zero-install CLI for running single-file TypeScript MCPs

#### Features

- ✅ Single-file `.photon.ts` MCP server format
- ✅ Convention over configuration (no base classes required)
- ✅ Auto schema extraction from TypeScript types and JSDoc
- ✅ Hot reload in development mode (`--dev`)
- ✅ Production mode for MCP clients
- ✅ Template generation (`photon init`)
- ✅ Validation command (`photon validate`)
- ✅ Claude Desktop config generation (`--config`)
- ✅ Global installation support (`npm install -g @portel/photon`)
- ✅ Zero-install support (`npx @portel/photon`)
- ✅ **Name-only references** - Run `photon calculator` (no paths, no extensions)
- ✅ **Working directory** - Default to `~/.photon/`, override with `--working-dir`
- ✅ **Simple mental model** - All MCPs in one directory, accessible from anywhere
- ✅ **List command** - `photon list` shows all MCPs in working directory
- ✅ **Zero configuration** - Just create, run, done!

#### Package

- **Name**: `@portel/photon` (scoped package)
- **Binary**: `photon`
- **Version**: 1.0.0
- **License**: MIT

#### Installation

```bash
# Global install
npm install -g @portel/photon

# Or use with npx (zero install)
npx @portel/photon --help
```

#### Usage

```bash
# Create new MCP (stored in ~/.photon/)
photon init my-tool

# Run from anywhere (just the name!)
photon my-tool --dev

# Generate Claude Desktop config
photon my-tool --config

# List all MCPs
photon list

# Custom directory
photon --working-dir ./mcps init project-tool
photon --working-dir ./mcps project-tool --dev
```

**Note:** Reference MCPs by name only—no paths, no extensions needed!

#### Examples

Three example Photon MCPs included:
- `calculator.photon.ts` - Arithmetic operations
- `string.photon.ts` - Text manipulation utilities
- `workflow.photon.ts` - Task management

#### Documentation

- `README.md` - Complete user guide
- `GUIDE.md` - Developer guide for creating Photon MCPs
- `LICENSE` - MIT license

#### Architecture

Built on:
- `@modelcontextprotocol/sdk` - Official MCP SDK
- `esbuild` - Fast TypeScript compilation
- `chokidar` - File watching for hot reload
- `commander` - CLI framework
