Repository navigation
chore(deps): upgrade LiveView to 1.2, gettext to 1.0, LiveDashboard and dns_cluster - #84
Merged
Merged
Conversation
dns_cluster discovers the other nodes of a clustered deployment from
DNS_CLUSTER_QUERY. 0.3 adds SRV queries, and 0.3.1 fixes the hostname
lookup for {basename, query} tuples. Textbin passes a plain query
string, or :ignore when the variable is unset, and both behave as
before.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019fnjMN7WpEjQJD2zveakV6
gettext 1.0 has no breaking changes from 0.26. Textbin already uses the Gettext.Backend and `use Gettext, backend:` style that 0.26 introduced. 1.0 adds compile-time sigil concatenation, Gettext.put_locale!/2 and a longer extraction timeout. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019fnjMN7WpEjQJD2zveakV6
1.2.7 fixes CVE-2026-58228 (GHSA-5cgh-g58j-m9cq), a scheme validation bypass in Phoenix.LiveView.Utils. The 1.1 line lists no backport of it. 1.1.33 already had the open-redirect fix for CVE-2026-64941. 1.2 also adds colocated CSS, JSON-encodable JS commands, per-module opt-outs for debug annotations, and configurable test DOM checks. A form with phx-change but no id now emits a warning by default. The suite emits none of these warnings, because every Textbin form already has an id. The JS client is bundled from deps, so it changes too. I checked it in Chromium against the dev server: log in, create a paste through the phx-change/phx-submit form with push_navigate to its page, navigate live back to the list, search, delete, restore from the Deleted tab, and drop and reconnect the socket. None of it raised a console or page error. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019fnjMN7WpEjQJD2zveakV6
The 1.2 HTML formatter keeps an empty element's closing tag on the same line as its opening tag, even when the opening tag wraps the line limit. The format check uses the formatter from deps, so these two templates have to change with the upgrade. The rendered markup is the same. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019fnjMN7WpEjQJD2zveakV6
LiveDashboard is mounted only in development, at /dev/dashboard. 0.9 requires LiveView 1.0+ and Elixir 1.15+, both met. It adds a nested supervision-tree view and process labels, and 0.9.1 skips Ecto repos it cannot resolve to an extras module. The home, OS data, metrics, processes and Ecto stats pages all load and connect in Chromium with no client errors. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019fnjMN7WpEjQJD2zveakV6
`{:lumis, "~> 0.3"}` allows 0.10, so `mix deps.update --all` would
quietly install it. From 0.9, language parsers no longer ship with
lumis. Each one is a separate lumis_wasm_* package that wasmtime
compiles at runtime, and a language without its package renders as
plain text with only a logged warning. Pastes would lose their colours
with no error to catch it. 0.10 also renders lines as <span> instead of
<div>, which the line-number CSS depends on.
Upgrading is a deployment decision: which parser packages to ship,
where the compiled-module cache lives in a read-only container, and
which parsers to warm at boot. This constraint keeps it from happening
by accident.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019fnjMN7WpEjQJD2zveakV6
darwin67
added a commit
that referenced
this pull request
Oct 11, 2026
This brings the asset toolchain up to date. It is independent of #82, #83 and #84. The Hex `esbuild` and `tailwind` packages were already current; the binary versions in `config/config.exs` and the vendored JS were behind. | Commit | Change | Effect | |---|---|---| | topbar | 3.0.0 → 3.0.1 (vendored) | The canvas gets `role="presentation"` and is hidden with the `hidden` attribute. Checked in Chromium: shown during `phx:page-loading`, hidden afterwards. | | esbuild | 0.25.4 → 0.28.2 | The breaking releases don't touch this build. The binaries now need Linux 3.2+ and macOS 12+. The bundle differs only in esbuild's CommonJS wrapper. | | Tailwind | 4.1.7 → 4.3.3 | Additive utilities, plus a deprecation of `start-*`/`end-*`, which aren't used. CSS is 3.5 KB smaller. This matches what Phoenix 1.8.15 generates. | | daisyUI | 5.0.35 → 5.7.47 (vendored) | No breaking changes flagged. CSS grows by 51 KB raw, **3.7 KB gzipped**, from extra `@supports` fallbacks and state rules. | ### Visual check I screenshotted nine pages in light and dark, at 1280 and 390 px, before and after each CSS change, and diffed the pixels. The pages were login, pastes, new paste, paste detail with highlighting, deleted, workspace settings, search, user settings and orgs. Two runs with no change differed by at most 6 pixels. - **Tailwind:** no real change. The largest difference was 11 pixels of anti-aliasing on a button edge. - **daisyUI** made two small visible changes: - `badge-sm` pills (audience, syntax, expiry) are a few pixels wider, so they sit about 5 px further left on the list and detail pages; - `select` fields have about 4 px less left padding before their text. Nothing else moves. None of the 36 screenshots logged a console or page error. The LiveView flows (create, live navigation, search, delete, restore, socket reconnect) pass on the new bundle. `mix test` passes (582 tests). `assets/vendor/daisyui-theme.js` is not referenced by `app.css`, so it is left as it is. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_019fnjMN7WpEjQJD2zveakV6 --- _Generated by [Claude Code](https://claude.ai/code/session_019fnjMN7WpEjQJD2zveakV6)_ --------- Co-authored-by: Claude <noreply@anthropic.com>
darwin67
added this pull request to stack #86
October 11, 2026 22:45
darwin67
marked this pull request as ready for review
October 11, 2026 22:46
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is stacked on #82. It covers the Elixir upgrades that need a
mix.exsconstraint change.{basename, query}lookups. Textbin passes a plain query or:ignore.Gettext.Backendstyle.Phoenix.LiveView.Utils. The 1.1 changelog lists no backport. 1.1.33 already had the CVE-2026-64941 redirect fix.style:mix format --check-formattedstays green./dev/dashboard.build:lumis~> 0.3→~> 0.7.0lumis is held at 0.7, not upgraded
From 0.9, lumis no longer bundles parsers. Each language is a separate
lumis_wasm_*Hex package that wasmtime compiles at runtime. A language without its package renders as plain text and only logs a warning. I tried 0.10.3: every sample (Elixir, JS, Python, Rust, JSON, SQL, YAML) came back uncoloured, with no error. Lines also become<span>instead of<div>, and the line-number CSS and two tests depend on the<div>.The old
~> 0.3would have letmix deps.update --allmake that jump silently, so this PR tightens it to~> 0.7.0. Doing the upgrade properly means choosing:LUMIS_DATA_DIRfor the compiled-module cache in the read-only container;That belongs in its own PR.
Verification
mix precommitpasses (582 tests). The suite also passes with S3 storage against SeaweedFS.mix deps.unlock --check-unusedis clean, andmix deps.getreports no packages with advisories.phx-change/phx-submitform, withpush_navigateto its page;🤖 Generated with Claude Code
https://claude.ai/code/session_019fnjMN7WpEjQJD2zveakV6
Generated by Claude Code