Skip to content

chore(assets): upgrade esbuild, Tailwind, daisyUI and topbar - #85

Merged
darwin67 merged 4 commits into
mainfrom
chore/asset-toolchain-upgrades
Oct 11, 2026
Merged

darwin67 merged 4 commits into
mainfrom
chore/asset-toolchain-upgrades

Conversation

@darwin67

Copy link
Copy Markdown
Member

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.ai/code/session_019fnjMN7WpEjQJD2zveakV6


Generated by Claude Code

topbar 3.0.1 gives its canvas role="presentation", so screen readers
skip it, and shows and hides the canvas with the `hidden` attribute
instead of inline display styles. In Chromium the bar appears during
phx:page-loading and is hidden again when loading stops.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019fnjMN7WpEjQJD2zveakV6
The breaking releases between 0.25.4 and 0.28.2 don't affect this
build:
- 0.27 uses Uint8Array.fromBase64 for the binary loader, which the
  bundle doesn't use.
- 0.28 verifies the hash of the fallback binary download.
- The binaries now need Linux 3.2+ and macOS 12+.

The bundle differs in one place: esbuild's CommonJS wrapper resets a
module that throws while loading, so it can be retried. The LiveView
flows (create, search, delete, restore, reconnect) run in Chromium
without client errors.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019fnjMN7WpEjQJD2zveakV6
Tailwind 4.2 and 4.3 add utilities (scrollbar, zoom, tab, container
size, new palettes) and deprecate start-*/end-* in favour of
inset-s-*/inset-e-*, which Textbin doesn't use. Phoenix 1.8.15
generates new apps on 4.3.3.

The built CSS is 3.5 KB smaller. Nine pages, in light and dark at 1280
and 390 px, were screenshotted before and after. Two differ by at most
11 pixels of anti-aliasing on a button edge. Two differ by under 6
pixels, the same amount that two runs before the change differed by.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019fnjMN7WpEjQJD2zveakV6
The vendored daisyUI was 5.0.35, unchanged since it was first added.
5.1 through 5.7 flag no breaking changes. They add components (steps,
floating labels, more tab styles) and add @supports fallbacks and state
rules to the existing ones. The built CSS grows from 161 to 213 KB, or
from 23.4 to 27.1 KB gzipped.

Screenshots of nine pages, in light and dark at 1280 and 390 px, show
two small visual changes from components Textbin uses:
- badges (`badge-sm`) are a few pixels wider, so the audience, syntax
  and expiry pills on the list and detail pages sit about 5 px further
  left;
- selects have about 4 px less left padding before their text.
Nothing else moves, and no page logs a client error.

daisyui-theme.js is not referenced by app.css, so it stays as it is.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019fnjMN7WpEjQJD2zveakV6
@github-actions github-actions Bot added the chore label Oct 11, 2026
@darwin67
darwin67 marked this pull request as ready for review October 11, 2026 22:45
@darwin67
darwin67 merged commit bd54918 into main Oct 11, 2026
17 checks passed
@darwin67
darwin67 deleted the chore/asset-toolchain-upgrades branch October 11, 2026 22:45
@chaba2-bot chaba2-bot Bot mentioned this pull request Oct 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants