Skip to content

feat: v0.6.0 — demo parity & production hardening#6

Merged
23min merged 1 commit intomainfrom
feat/v0.6.0-demo-parity-and-hardening
Feb 13, 2026
Merged

feat: v0.6.0 — demo parity & production hardening#6
23min merged 1 commit intomainfrom
feat/v0.6.0-demo-parity-and-hardening

Conversation

@23min
Copy link
Owner

@23min 23min commented Feb 13, 2026

What

Complete Builder helpers, debug renderer, demo providers, telemetry instrumentation, and graceful error handling.

Changes

Builder

  • All 18 standard component types now have Builder helpers (was 11): date_time_input/3, choice_picker/3, icon/3, video/3, audio_player/3, list/3, tabs/3

Debug renderer

  • All 18 standard component types render in priv/static/index.html (was 7): TextField, Slider, DateTimeInput, ChoicePicker, Image, Icon, Video, AudioPlayer, List, Tabs, Modal

Demos

  • 5 demo providers in demo/ directory: Component Gallery, Data Binding, Form Validation, Push Streaming, Custom Component
  • DemoRouter with query param routing (?demo=gallery|binding|form|push|custom)
  • Debug renderer forwards query params to WebSocket URL for demo selection

Telemetry

  • [:a2ui, :socket, :init], [:a2ui, :socket, :action], [:a2ui, :socket, :terminate] events in Socket
  • [:a2ui, :sse, :init], [:a2ui, :sse, :event] events in SSE

Error handling

  • Provider crashes in handle_action/2, handle_info/2, and handle_error/2 are caught and logged instead of crashing the socket process

Bug fix

  • Encoder.encode_property_value/1: add plain map support (fixes FunctionClauseError on ChoicePicker options like %{label: "Red", value: "red"})

Other

  • A2UI.Endpoint passes query params in provider_opts for both WS and SSE routes
  • demo_server.exs rewritten with DemoRouter delegating to demo providers

Tests

232 tests, 0 failures (was 220)

… demos, telemetry)

- All 18 standard component types have Builder helpers:
  date_time_input/3, choice_picker/3, icon/3, video/3,
  audio_player/3, list/3, tabs/3 (was 11, now 18)
- Debug renderer supports all 18 standard component types
  (was 7): TextField, Slider, DateTimeInput, ChoicePicker,
  Image, Icon, Video, AudioPlayer, List, Tabs, Modal
- 5 demo providers in demo/ directory:
  Component Gallery, Data Binding, Form Validation,
  Push Streaming, Custom Component
- DemoRouter with query param routing (?demo=gallery|binding|form|push|custom)
- Telemetry instrumentation: [:a2ui, :socket, :init|:action|:terminate],
  [:a2ui, :sse, :init|:event]
- Graceful error handling: provider crashes in handle_action/2,
  handle_info/2, handle_error/2 caught and logged
- Encoder: add plain map support in encode_property_value/1
  (fixes FunctionClauseError on ChoicePicker options)
- Endpoint passes query params in provider_opts for WS and SSE
- 232 tests, 0 failures
@23min 23min merged commit 73285ee into main Feb 13, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant