Skip to content

Releases: portel-dev/photon

v1.22.1

16 Apr 08:09

Choose a tag to compare

Bug Fixes

  • ci: sync package-lock.json with package.json and add lockfile guardrail (#)

The v1.22.0 release bumped @portel/photon-core from ^2.20.0 to ^2.22.0 in package.json but bun install did not regenerate package-lock.json. CI and Release workflows run 'npm ci' which requires the lock file to match exactly -- both workflows failed with EUSAGE.

Full changelog: v1.22.0...v1.22.1

v1.22.0

16 Apr 07:05

Choose a tag to compare

Highlights

Full OpenTelemetry stack: traces + metrics + logs

Set OTEL_EXPORTER_OTLP_ENDPOINT, install @opentelemetry/sdk-node, and every span/counter/histogram/log record exports automatically. See docs/guides/observability.md for the one-page setup.

Observability

  • W3C traceparent propagation with parent-context chaining across this.call()
  • photon.tool.duration histogram, photon.tool.calls/errors counters, photon.circuit_breaker.transitions, photon.rate_limit.rejections, photon.bulkhead.rejections
  • AsyncLocalStorage request context (getRequestContext()) with ambient photon/tool/traceId/caller
  • Logger auto-enrichment from ambient context; OTel logs bridge via @opentelemetry/api-logs
  • recordException with full stack via Error.cause chain
  • Force-sampled error spans

Error handling

  • MCP tool errors return structuredContent.error with { type, retryable, message } for typed auto-retry
  • Classifications: circuit_open, rate_limited, bulkhead_full, validation_error, timeout_error, network_error, permission_error, not_found_error
  • PhotonError native { cause } support via photon-core 2.21+
  • wrapError preserves root cause chain

Resilience

  • Circuit breaker half-open probe latch (only one probe allowed through)
  • @bulkhead N middleware for concurrent-execution cap
  • Circuit state-change broadcasts for reactive UI updates

Health

  • GET /api/health — liveness/readiness with per-subsystem breakdown (runtime, daemon, photons, circuits); returns 503 when degraded
  • GET /api/health/circuits — per-circuit state detail

AG-UI

  • RUN_ERROR carries code, retryable, runId, threadId
  • Every event includes rawEvent.traceparent for OTel correlation
  • Capability handshake: experimental['ag-ui'].features advertises server-side features

Promise coverage

65/65 assertions pass; Intent 10 (Standards-Aligned) grew from 10 → 27 documented assertions.

Dependencies

@portel/photon-core ^2.22.0 (from ^2.20.0):

  • PhotonError({ cause }) constructor (2.21.0)
  • @bulkhead middleware (2.22.0)
  • Audit path fixes for flat local-namespace layout

Full changelog: v1.21.0...v1.22.0

v1.21.0

14 Apr 12:02

Choose a tag to compare

Release 1.21.0

v1.20.1

10 Apr 00:33

Choose a tag to compare

1.20.1 (2026-04-10)

Features

  • add hideCloseButton property to photon-studio component (39a4b80)
  • photon creation flow, MCP config export, and UI refinements (8098d8f)
  • wire up pending approvals for deferred elicitations (6fff785)

Bug Fixes

  • daemon stop→start race condition and worker spawn ceiling timeout (07d5a35)
  • emit progress messages during worker initialization phases (55e748e)
  • log stale symlink cleanup during photon discovery (a40eaea)
  • update photon-core to v2.18.1 for broken symlink cleanup (76dccee)
  • wire hideCloseButton on studio embed and default to source tab (4f9c5b5)
  • worker dep resolution during spawn and client retry on connection close (a242d40)

v1.20.0

08 Apr 09:37

Choose a tag to compare

1.20.0 (2026-04-08)

Features

  • add draggable resize handle to split pane divider (2661878)
  • add sidebar resize handle with localStorage persistence (2c9b8c1)
  • add tab switcher (App / Methods / Log) to main toolbar (a4d0bf4)
  • beam UI improvements — sidebar tabs, bridge extensions, app renderer updates (a0454c4)
  • gate edit controls on photon editability (951043d)
  • merge context-bar into main-toolbar row to eliminate wasted vertical space (0c9efaa)
  • namespace migration, beam route encoding, forking improvements, and test updates (1209827)

Bug Fixes

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

v1.19.0

05 Apr 02:49

Choose a tag to compare

Features

  • Channel support@channel tag turns photons into Claude Code channels via capabilities negotiation
  • Client-agnostic channel support via clientInfo name detection
  • Channel permission relay and callable channel object (this.channel())
  • MCP Streamable HTTP — always-on for SSE mode, compatible with llama.cpp and modern MCP clients
  • Elicitation custom message + render('guide') stepper widget

Bug Fixes

  • MCP Streamable HTTP: add event: message + id: to SSE stream per spec
  • CORS: allow Mcp-Protocol-Version header, add CORS headers to all responses (202, DELETE, 405)
  • Clean SSE startup output — ⚡ web → http://localhost:3000/mcp with loader noise suppressed
  • Channel routing through daemon pub/sub with proper namespace isolation
  • Bind instance context when capturing emit for channel injection
  • Pass baseDir to MemoryProvider for correct directory resolution
  • Auto-detect photon directory from cwd when PHOTON_DIR is not set

Refactor

  • Migrate photon data and cache paths to ~/.photon/.data/ directory
  • Pre-release check: use PHOTON_DIR env var instead of moving ~/.photon

v1.17.6

31 Mar 02:07

Choose a tag to compare

1.17.6 (2026-03-31)

Bug Fixes

  • Bun dependency install: removed incompatible --trust flag, now runs bun pm trust --all after install to unblock postinstall scripts (esbuild, crypto-js, etc.)

v1.17.5

31 Mar 02:03

Choose a tag to compare

1.17.5 (2026-03-31)

Bug Fixes

  • Fix bun --production and --trust flag incompatibility in dependency installer

v1.17.4

31 Mar 01:58

Choose a tag to compare

1.17.4 (2026-03-31)

Bug Fixes

  • Split panel: Execute button on right panel no longer triggers left panel's method
  • Enter to submit: Pressing Enter in a filled form now executes the method
  • Markdown arrays: @format markdown with string[] data now renders as separated markdown sections instead of raw JSON
  • Homepage text: Fixed unreadable black text on dark theme (button UA stylesheet override)
  • Dashboard centering: Metric cards, gauges vertically/horizontally centered in panels
  • Bun postinstall: Auto-trust dependency postinstall scripts (bun install --trust)
  • Scrollbar spacing: Thinner (6px), translucent, scrollbar-gutter: stable prevents content shift

v1.17.3

30 Mar 23:27

Choose a tag to compare

1.17.3 (2026-03-30)

Bug Fixes

  • Replace all native confirm() dialogs with themed modal (backdrop blur, destructive button styling)
  • Update photon-core to 2.17.2 — dependency installer uses bun when npm not available
  • Add global install smoke test to pre-release checks