Changelog
View Source0.2.2 - 2026-08-29
Upgrade notes
- Remove
:corex_designfromcompilersif present. Runmix corex.design.buildfromassets.build/assets.deploy. - Keep
{:corex_design, "~> 0.2", runtime: false}(noonly: :dev). - After changing
config :corex_design, runmix corex.design.build(ormix assets.build). - For
--a11y+mix release, addcorex_design: :load.
Components
- Slider — single thumb (
value={n}) or range / N thumbs (value={[a, b]}) (#106).
Bug fixes
- Slider and angle-slider thumbs emit
aria-valuemin/aria-valuemax/aria-valuenowin SSR. - Doc a11y waits for descendant
[data-loading]so async pattern skeletons are gone before axe runs. - [dev]
mix assets.buildraises a clear error when the nesteddesign/Mix project fails (fetchcd design && mix deps.get) instead of aMatchError. - Hexdocs for
:corexnow include this changelog.
Dependencies
- Zag.js 1.43.3, Phoenix 1.8.13, LiveView 1.2.10, Credo /
oeditus_credoupdates (#118).
Security
- [e2e, integration_test] Bump
postgrexto 0.22.4 (CVE-2026-66838 / GHSA-3gww-3f36-2388: SQL injection via the:commentoption onPostgrex.stream/4).
0.2.1 - 2026-08-08
Bug fixes
- [installer] Ship Tableau scaffold CSS/JS (
blog.css,prose.css,locale.js,heroicons.js) underpriv/tableausomix corex.tableau.newworks from the Hex mix archive (archives only keepebin+priv, nottemplates/) - [packaging] Keep Dialyzer PLTs out of Hex
priv(#87)
0.2.0 - 2026-08-07
Design and MCP ship as separate Hex packages. Theming is config-driven through an Elixir CSS pipeline.
Packages
corex_design— optional Design package (runtime: false, MIT): tokens, themes, modes, and component CSS fromconfig :corex_design. Hex only (CSS is built in the app withmix corex.design.build).corex_mcp— optional MCP package (only: [:dev, :test], Apache-2.0) for AI component and design discovery. Never enable in production. License differs from the MIT siblings because the HTTP MCP stack follows Tidewave’s Apache-2.0 lineage.corex— unstyled Phoenix components and Zag.js hooks (MIT); npm package ships built hooks underpriv/staticonly.mix corex.new— Design and MCP on by default (--no-design/--no-mcpto skip). Scaffolds.cursor/mcp.jsonwhen MCP is enabled; optional--a11ywires accessibility preference CSS.
Security
- Strip leading C0/space before URL scheme checks in the URL allowlist helper and the JS redirect helper so prefixed
javascript:/data:cannot bypass allowlists (same class as LiveView CVE-2026-58228). See SECURITY.md. - Require Phoenix LiveView ≥ 1.2.7 and Phoenix ≥ 1.8.9 for upstream link/navigation fixes.
Design
- Config-driven Elixir pipeline: declare themes, semantics, and modes, then generate CSS with
mix corex.design.build. - Shared
ui-*modifiers for roles and variants (subtle /ui-solid/ui-ghost).ui-outlineand per-component BEM modifiers are gone. - Notable renames:
layer→surface; public token names only (no--theme-*indirection). - Optional accessibility preference CSS (
--a11y/ design accessibility emit).accessibility: trueenables all six axes;Corex.Design.Accessibilityis documented on Hexdocs.
Components
- Several LiveView event and slot names are normalized (toast, toggle group, pagination, color picker, file upload, marquee). See the update guide rename table.
- Form controls need an explicit
idwhen you do not passfield. Opt intoauto_invalidfor alert borders on used invalid fields. - Multi-value datasets use JSON in the DOM (
Corex.Dataset.encode_json/1). button_groupremoved; compose buttons with sharedui-*modifiers.- Marquee: push payload uses
id(wasmarquee_id);auto_filldefaults for clone settling.
MCP
- Design and guides tools (
list_modifiers,get_component_style,list_themes,design_guide, installation/guides helpers). - Cursor protocol negotiation; richer component discovery prompts.
Requirements
- Elixir
~> 1.17. - Phoenix LiveView
>= 1.2.7, Phoenix>= 1.8.9recommended.
See the update guide when upgrading from 0.1.x.
0.1.2
Bug fixes
- [pagination] Align link trigger
aria-labelwith Connect SSR; omit labels on dead prev/next links (#64) - [menu] Fix trigger and items disabled state (#61)
- [tooltip] Non-focusable trigger slot for composition (button/div triggers) (#62)
- [deps] Widen
phoenix_live_viewto~> 1.1so generated apps on LiveView 1.1.x or 1.2.x resolve without forcing an upgrade (#65) - [installer] Join
NODE_PATHenv lists incorex.newconfig for Elixir 1.18 and tailwind 0.4.x - [file-upload-live] Drop invalid
live_img_previewsizing attrs; preview size comes from file-upload CSS
Enhancements
- Integration tests: repeat all OTP / Elixir rows with pinned
phx_new 1.8.4alongside latest
0.1.1
Bug fixes
- [menu] Fix submenu leaks and LiveView drift on open menus (#58)
- [menu] Scope server
set_open/3to the targeted menu - [combobox] Preserve custom item slots after LiveView updates
- [toast] Sanitize action URLs
- [data-table] Harden sort and selection params
- [pagination] Validate page URLs
- [redirect] Validate redirect schemes
- [date-picker] Reduce unnecessary re-renders
Enhancements
- [menu] Item and trigger layout aligned with select, combobox, and listbox
- [combobox] Default
close_on_selecttotrue - [docs] Restore
mix corex.newon Hexdocs - [mcp] Security hardening
After upgrading within 0.1.x, refresh design CSS with mix corex.design.build (the old mix corex.design task is retired in 0.2.0).
0.1.0
Initial Corex stable release.