Skip to content

chore: update tailwind to v4.x - #913

Draft
jimhigson wants to merge 1 commit into
mainfrom
upgrade-tailwind-v4
Draft

chore: update tailwind to v4.x#913
jimhigson wants to merge 1 commit into
mainfrom
upgrade-tailwind-v4

Conversation

@jimhigson

@jimhigson jimhigson commented Jun 5, 2026

Copy link
Copy Markdown
Owner

No description provided.

Copilot AI review requested due to automatic review settings June 5, 2026 16:07
@netlify

netlify Bot commented Jun 5, 2026

Copy link
Copy Markdown

Deploy Preview for blockstack ready!

Name Link
🔨 Latest commit 9d979fa
🔍 Latest deploy log https://app.netlify.com/projects/blockstack/deploys/6a22f4265a75df0008817601
😎 Deploy Preview https://deploy-preview-913--blockstack.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

Size Change: +1.88 kB (+0.12%)

Total Size: 1.56 MB

📦 View Changed
Filename Size Change
dist/assets/store*********.js 207 kB +116 B (+0.06%)
dist/assets/index*********.js 20 kB +1.86 kB (+10.24%) ⚠️
dist/assets/index*********.css 19.4 kB -96 B (-0.49%)
ℹ️ View Unchanged
Filename Size Change
dist/assets/rock*********.mp3 215 kB 0 B
dist/assets/bookworld*********.mp3 59.7 kB 0 B
dist/assets/egyptus*********.mp3 56.7 kB 0 B
dist/assets/spritesToppy*********.webp 54.6 kB 0 B
dist/assets/sprites*********.webp 53.2 kB 0 B
dist/assets/market*********.mp3 50.1 kB 0 B
dist/assets/fanfare*********.mp3 45.9 kB 0 B
dist/assets/penitentiary*********.mp3 45.4 kB 0 B
dist/assets/moonbase*********.mp3 43.2 kB 0 B
dist/assets/supabaseDb*********.js 41.4 kB 0 B
dist/assets/safari*********.mp3 36.9 kB 0 B
dist/assets/campaign*********.js 28.7 kB -3 B (-0.01%)
dist/assets/blacktooth*********.mp3 27.9 kB 0 B
dist/assets/App*********.js 27.7 kB -11 B (-0.04%)
dist/assets/gameMain*********.js 26.9 kB +13 B (+0.05%)
dist/assets/bonus*********.mp3 22.4 kB 0 B
dist/assets/auto*********.js 21.9 kB -2 B (-0.01%)
dist/assets/RoomRenderer*********.js 21.8 kB +1 B (0%)
dist/assets/cheatRoomIdFromUrlHash*********.js 20.4 kB -2 B (-0.01%)
dist/assets/bubblesLoop*********.mp3 19.5 kB 0 B
dist/assets/Select*********.js 16.7 kB -4 B (-0.02%)
dist/assets/Tooltip*********.js 16.4 kB -1 B (-0.01%)
dist/assets/rollingBallLoop*********.mp3 16 kB 0 B
dist/assets/heelsFall*********.mp3 14.6 kB 0 B
dist/assets/helicopter*********.mp3 14.1 kB 0 B
dist/assets/robotBeepingLoop*********.mp3 13.7 kB 0 B
dist/assets/conveyorLoop*********.mp3 13.3 kB 0 B
dist/assets/crownSparkle*********.mp3 12.6 kB 0 B
dist/assets/lowerSmallMotorLoop*********.mp3 11.5 kB 0 B
dist/assets/teleportIn*********.mp3 10.6 kB 0 B
dist/assets/servosLoop*********.mp3 9.8 kB 0 B
dist/assets/MapDialog*********.js 9.43 kB -7 B (-0.07%)
dist/assets/pages*********.js 9.1 kB -11 B (-0.12%)
dist/assets/woodScrape*********.mp3 8.39 kB 0 B
dist/assets/conveyorStart*********.mp3 7.99 kB 0 B
dist/assets/headFall*********.mp3 7.56 kB 0 B
dist/assets/teleportOut*********.mp3 7.41 kB 0 B
dist/assets/conveyorStop*********.mp3 7.08 kB 0 B
dist/assets/iceScrape*********.mp3 6.85 kB 0 B
dist/assets/Cheats*********.js 6.67 kB +11 B (+0.17%)
dist/assets/jetpackLoop*********.mp3 6.46 kB 0 B
dist/assets/scrollOpen*********.mp3 6.03 kB 0 B
dist/assets/metalicScraping*********.mp3 6.01 kB 0 B
dist/assets/doughnutSplat*********.mp3 5.85 kB 0 B
dist/assets/SpritesPage*********.js 5.66 kB -8 B (-0.14%)
dist/assets/elephantHoot*********.mp3 5.42 kB 0 B
dist/assets/destroy*********.mp3 5.37 kB 0 B
dist/assets/uhOh*********.opus 5.19 kB 0 B
dist/assets/servosStop*********.mp3 5.02 kB 0 B
dist/assets/deactivate*********.mp3 4.97 kB 0 B
dist/assets/monkeyTurn*********.mp3 4.86 kB 0 B
dist/assets/servosStart*********.mp3 4.57 kB 0 B
dist/assets/mojo*********.mp3 3.93 kB 0 B
dist/assets/headWalk*********.mp3 3.91 kB 0 B
dist/assets/teleportWarningSiren*********.mp3 3.76 kB 0 B
dist/assets/window*********.js 3.62 kB 0 B
dist/assets/heelsWalk*********.mp3 3.56 kB 0 B
dist/assets/moonbaseDoor*********.mp3 3.39 kB 0 B
dist/assets/hushPuppyVanish*********.mp3 3.29 kB 0 B
dist/assets/detect*********.mp3 3.24 kB 0 B
dist/assets/spring*********.mp3 3.23 kB 0 B
dist/assets/headJump*********.mp3 3.21 kB 0 B
dist/assets/useActionTap*********.js 3.15 kB 0 B
dist/assets/blockstack-head-over-heels*********.woff2 3.08 kB 0 B
dist/assets/mojoTurnSound*********.mp3 2.98 kB 0 B
dist/assets/headOverHeelsAccent*********.mp3 2.74 kB 0 B
dist/assets/headAccent*********.mp3 2.61 kB 0 B
dist/assets/heelsAccent*********.mp3 2.5 kB 0 B
dist/assets/toasterPopUp*********.opus 2.43 kB 0 B
dist/assets/saveGameThunk*********.js 2.4 kB -2 B (-0.08%)
dist/assets/heelsJump*********.mp3 2.35 kB 0 B
dist/assets/BlockyMarkdown*********.js 2.21 kB +4 B (+0.18%)
dist/assets/jetpack_turnaround*********.mp3 2.21 kB 0 B
dist/assets/workbox-window.prod.es5*********.js 2.2 kB 0 B
dist/assets/hooter*********.mp3 2.16 kB 0 B
dist/assets/metalClang*********.mp3 2.09 kB 0 B
dist/assets/activate*********.mp3 1.88 kB 0 B
dist/assets/MenuItems*********.js 1.83 kB -8 B (-0.43%)
dist/assets/door*********.mp3 1.81 kB 0 B
dist/assets/ballHit*********.mp3 1.68 kB 0 B
dist/assets/PaletteSwapFilter*********.js 1.61 kB -3 B (-0.19%)
dist/assets/Button*********.js 1.4 kB -1 B (-0.07%)
dist/assets/Switch*********.js 1.36 kB -9 B (-0.66%)
dist/assets/emit*********.mp3 1.36 kB 0 B
dist/assets/bongo*********.mp3 1.32 kB 0 B
dist/assets/buttonOn*********.mp3 1.29 kB 0 B
dist/assets/toasterPushDown*********.opus 1.28 kB 0 B
dist/assets/lowHum*********.mp3 1.24 kB 0 B
dist/assets/glassClink*********.mp3 1.17 kB 0 B
dist/assets/swopPlayablesIfInput*********.js 1.11 kB -1 B (-0.09%)
dist/assets/playableTailwindSpriteClassname*********.js 1.06 kB -5 B (-0.47%)
dist/assets/carry*********.mp3 1.06 kB 0 B
dist/assets/multilineTextClass*********.js 1.06 kB +41 B (+4.02%)
dist/assets/voronoiLut*********.js 1.06 kB -6 B (-0.56%)
dist/assets/setting2*********.mp3 993 B 0 B
dist/assets/setting3*********.mp3 989 B 0 B
dist/assets/landing*********.mp3 983 B 0 B
dist/assets/setting0*********.mp3 977 B 0 B
dist/assets/setting1*********.mp3 969 B 0 B
dist/assets/robotWhirLoop*********.mp3 915 B 0 B
dist/assets/buttonOff*********.mp3 880 B 0 B
dist/assets/ReadTheManualDialog*********.js 870 B -2 B (-0.23%)
dist/assets/MenuItem*********.js 866 B 0 B
dist/assets/switch-shorter*********.mp3 813 B 0 B
dist/assets/registerAppSW*********.js 760 B -4 B (-0.52%)
dist/assets/LutPage*********.js 754 B -3 B (-0.4%)
dist/assets/MarkdownDialog*********.js 716 B -3 B (-0.42%)
dist/assets/NeedRefreshDialog*********.js 686 B -4 B (-0.58%)
dist/assets/DialogTitleBar*********.js 664 B -4 B (-0.6%)
dist/assets/menuSofter*********.mp3 645 B 0 B
dist/assets/softBump*********.mp3 606 B 0 B
dist/assets/tslib.es6*********.js 527 B 0 B
dist/assets/lutForSpriteOption*********.js 521 B -1 B (-0.19%)
dist/assets/core*********.js 507 B 0 B
dist/assets/useScrollingFromInput*********.js 488 B -5 B (-1.01%)
dist/assets/MapRoomTooltipBehaviour*********.js 398 B 0 B
dist/assets/useDispatchActionCallback*********.js 367 B -4 B (-1.08%)
dist/assets/openExternalLink*********.js 295 B +1 B (+0.34%)
dist/assets/dist-js*********.js 218 B 0 B
dist/assets/RoomJson*********.js 194 B -4 B (-2.02%)
dist/assets/unitVectors*********.js 191 B -4 B (-2.05%)
dist/assets/onNeedRefresh*********.js 175 B -3 B (-1.69%)
dist/assets/parseHex*********.js 160 B 0 B
dist/assets/browserAll*********.js 135 B 0 B
dist/assets/MenuItemSeparator*********.js 119 B 0 B
dist/assets/continueWithRefresh*********.js 106 B 0 B
dist/assets/upscaleSelectors*********.js 88 B 0 B
dist/assets/init*********.js 85 B 0 B
dist/assets/webworkerAll*********.js 65 B 0 B
dist/assets/twClass*********.js 46 B 0 B

compressed-size-action::game

@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

Size Change: +1.84 kB (+0.07%)

Total Size: 2.48 MB

📦 View Changed
Filename Size Change
dist/editor/assets/index*********.js 264 kB +132 B (+0.05%)
dist/editor/assets/Tooltip*********.js 27.4 kB +1.94 kB (+7.62%) 🔍
dist/editor/assets/index*********.css 20.6 kB -229 B (-1.1%)
ℹ️ View Unchanged
Filename Size Change
dist/editor/assets/editor.api2*********.js 913 kB +1 B (0%)
dist/editor/assets/json.worker*********.js 121 kB 0 B
dist/editor/assets/editor.worker*********.js 85.7 kB 0 B
dist/editor/assets/bookworld*********.mp3 59.7 kB 0 B
dist/editor/assets/egyptus*********.mp3 56.7 kB 0 B
dist/editor/assets/spritesToppy*********.webp 54.6 kB 0 B
dist/editor/assets/JsonRoomEditor*********.js 53.6 kB +1 B (0%)
dist/editor/assets/sprites*********.webp 53.2 kB 0 B
dist/editor/assets/market*********.mp3 50.1 kB 0 B
dist/editor/assets/LevelEditor*********.js 48.4 kB 0 B
dist/editor/assets/fanfare*********.mp3 45.9 kB 0 B
dist/editor/assets/penitentiary*********.mp3 45.4 kB 0 B
dist/editor/assets/moonbase*********.mp3 43.2 kB 0 B
dist/editor/assets/supabaseDb*********.js 41.4 kB 0 B
dist/editor/assets/safari*********.mp3 36.9 kB 0 B
dist/editor/assets/campaign*********.js 28.7 kB -1 B (0%)
dist/editor/assets/blacktooth*********.mp3 27.9 kB 0 B
dist/editor/assets/bonus*********.mp3 22.4 kB 0 B
dist/editor/assets/editor*********.css 22.3 kB 0 B
dist/editor/assets/bubblesLoop*********.mp3 19.5 kB 0 B
dist/editor/assets/rollingBallLoop*********.mp3 16 kB 0 B
dist/editor/assets/heelsFall*********.mp3 14.6 kB 0 B
dist/editor/assets/helicopter*********.mp3 14.1 kB 0 B
dist/editor/assets/robotBeepingLoop*********.mp3 13.7 kB 0 B
dist/editor/assets/conveyorLoop*********.mp3 13.3 kB 0 B
dist/editor/assets/crownSparkle*********.mp3 12.6 kB 0 B
dist/editor/assets/jsonMode*********.js 11.5 kB -1 B (-0.01%)
dist/editor/assets/lowerSmallMotorLoop*********.mp3 11.5 kB 0 B
dist/editor/assets/teleportIn*********.mp3 10.6 kB 0 B
dist/editor/assets/servosLoop*********.mp3 9.8 kB 0 B
dist/editor/assets/RoomEditingArea*********.js 9.79 kB +2 B (+0.02%)
dist/editor/assets/woodScrape*********.mp3 8.39 kB 0 B
dist/editor/assets/conveyorStart*********.mp3 7.99 kB 0 B
dist/editor/assets/headFall*********.mp3 7.56 kB 0 B
dist/editor/assets/teleportOut*********.mp3 7.41 kB 0 B
dist/editor/assets/conveyorStop*********.mp3 7.08 kB 0 B
dist/editor/assets/iceScrape*********.mp3 6.85 kB 0 B
dist/editor/assets/useShortTimeDisplay*********.js 6.51 kB +11 B (+0.17%)
dist/editor/assets/jetpackLoop*********.mp3 6.46 kB 0 B
dist/editor/assets/scrollOpen*********.mp3 6.03 kB 0 B
dist/editor/assets/metalicScraping*********.mp3 6.01 kB 0 B
dist/editor/assets/doughnutSplat*********.mp3 5.85 kB 0 B
dist/editor/assets/elephantHoot*********.mp3 5.42 kB 0 B
dist/editor/assets/destroy*********.mp3 5.37 kB 0 B
dist/editor/assets/uhOh*********.opus 5.19 kB 0 B
dist/editor/assets/servosStop*********.mp3 5.02 kB 0 B
dist/editor/assets/deactivate*********.mp3 4.97 kB 0 B
dist/editor/assets/monkeyTurn*********.mp3 4.86 kB 0 B
dist/editor/assets/servosStart*********.mp3 4.57 kB 0 B
dist/editor/assets/mojo*********.mp3 3.93 kB 0 B
dist/editor/assets/headWalk*********.mp3 3.91 kB 0 B
dist/editor/assets/teleportWarningSiren*********.mp3 3.76 kB 0 B
dist/editor/assets/heelsWalk*********.mp3 3.56 kB 0 B
dist/editor/assets/moonbaseDoor*********.mp3 3.39 kB 0 B
dist/editor/assets/hushPuppyVanish*********.mp3 3.29 kB 0 B
dist/editor/assets/detect*********.mp3 3.24 kB 0 B
dist/editor/assets/spring*********.mp3 3.23 kB 0 B
dist/editor/assets/headJump*********.mp3 3.21 kB 0 B
dist/editor/assets/blockstack-head-over-heels*********.woff2 3.08 kB 0 B
dist/editor/assets/mojoTurnSound*********.mp3 2.98 kB 0 B
dist/editor/assets/headOverHeelsAccent*********.mp3 2.74 kB 0 B
dist/editor/assets/headAccent*********.mp3 2.61 kB 0 B
dist/editor/assets/heelsAccent*********.mp3 2.5 kB 0 B
dist/editor/assets/toasterPopUp*********.opus 2.43 kB 0 B
dist/editor/assets/heelsJump*********.mp3 2.35 kB 0 B
dist/editor/assets/textureForItem*********.js 2.22 kB 0 B
dist/editor/assets/jetpack_turnaround*********.mp3 2.21 kB 0 B
dist/editor/assets/hooter*********.mp3 2.16 kB 0 B
dist/editor/assets/metalClang*********.mp3 2.09 kB 0 B
dist/editor/assets/activate*********.mp3 1.88 kB 0 B
dist/editor/assets/door*********.mp3 1.81 kB 0 B
dist/editor/assets/ballHit*********.mp3 1.68 kB 0 B
dist/editor/assets/ToolbarButton*********.js 1.67 kB +2 B (+0.12%)
dist/editor/assets/emit*********.mp3 1.36 kB 0 B
dist/editor/assets/EditorMapInsertButtonDecorator*********.js 1.32 kB +1 B (+0.08%)
dist/editor/assets/bongo*********.mp3 1.32 kB 0 B
dist/editor/assets/buttonOn*********.mp3 1.29 kB 0 B
dist/editor/assets/toasterPushDown*********.opus 1.28 kB 0 B
dist/editor/assets/lowHum*********.mp3 1.24 kB 0 B
dist/editor/assets/glassClink*********.mp3 1.17 kB 0 B
dist/editor/assets/carry*********.mp3 1.06 kB 0 B
dist/editor/assets/setting2*********.mp3 993 B 0 B
dist/editor/assets/setting3*********.mp3 989 B 0 B
dist/editor/assets/landing*********.mp3 983 B 0 B
dist/editor/assets/setting0*********.mp3 977 B 0 B
dist/editor/assets/setting1*********.mp3 969 B 0 B
dist/editor/assets/EditorMapTeleporterLinkDecorator*********.js 958 B 0 B
dist/editor/assets/robotWhirLoop*********.mp3 915 B 0 B
dist/editor/assets/buttonOff*********.mp3 880 B 0 B
dist/editor/assets/switch-shorter*********.mp3 813 B 0 B
dist/editor/assets/EditorMapRoomTooltipBehaviour*********.js 678 B +1 B (+0.15%)
dist/editor/assets/menuSofter*********.mp3 645 B 0 B
dist/editor/assets/softBump*********.mp3 606 B 0 B
dist/editor/assets/tslib.es6*********.js 527 B 0 B
dist/editor/assets/useElementSize*********.js 290 B -1 B (-0.34%)
dist/editor/assets/svgHelpers*********.js 239 B 0 B
dist/editor/assets/browserAll*********.js 131 B 0 B
dist/editor/assets/room.schema*********.js 85 B 0 B
dist/editor/assets/init*********.js 84 B 0 B
dist/editor/assets/webworkerAll*********.js 63 B 0 B
dist/editor/assets/twClass*********.js 46 B 0 B

compressed-size-action::editor

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR migrates the project from Tailwind v3 to Tailwind v4 while preserving existing rendering behavior by moving the bespoke sizing/spacing and sprite-utility generation onto v4’s new CSS-first configuration and scanner model.

Changes:

  • Replaces JS-config spacing/size tables and safelist config with a CSS-driven length scale (@theme inline) plus generated @source inline(...) safelist.
  • Ports the custom sprites Tailwind plugin to v4 (escaping, cascade-layer behavior, and keyframes emission).
  • Updates markdown image syntax + markdown rendering to use space-separated class tokens that v4 can scan.

Reviewed changes

Copilot reviewed 52 out of 104 changed files in this pull request and generated no comments.

Show a summary per file
File Description
tailwind.config.ts Removes v3-only config (custom spacing/size tables, safelist) and keeps only v4-compatible theme/plugin wiring.
src/ui/Select.tsx Updates arbitrary width utility syntax for v4.
src/tailwind/plugins/spritesTailwindPlugin.ts Ports sprite utility generation to v4 (escaping helper, keyframes moved to base, utility-layer override strategy).
src/tailwind/lengthScale.css Introduces v4 length-scale via @theme inline and named scale variables (spacing/width/height/max-width).
src/tailwind/escapeClassName.ts Adds a Tailwind-v3-compatible selector escaping helper for plugin output stability.
src/sprites/spritesheet/spritesheetData/snapshots/makeSpritesheetdata.test.ts.snap Re-baselines snapshot output after glyph/texture-id escaping changes.
src/sprites/escapeCharForTailwind.ts Expands escaping/replacement rules and adds codepoint-based encoding for v4-safe class/utility names.
src/pages/spritesPage/SpriteTile.tsx Removes w-min to avoid v4 ordering issues with .sprite width.
src/pages/spritesPage/SpritesheetImage.tsx Removes w-min from sprite previews to match v4 utility ordering behavior.
src/pages/spritesPage/AnimationTile.tsx Removes w-min from animation tiles to prevent width overrides under v4.
src/manual/theGame.md Converts markdown image “URL params” to space-separated classes for v4 scanning.
src/manual/theEmperorsGuardian.md Converts markdown image class encoding to space-separated tokens.
src/manual/teleports.md Converts markdown image class encoding to space-separated tokens.
src/manual/teleportBack.md Converts markdown image class encoding to space-separated tokens.
src/manual/switches.md Converts markdown image class encoding to space-separated tokens.
src/manual/springs.md Converts markdown image class encoding to space-separated tokens.
src/manual/safari.md Converts markdown image class encoding to space-separated tokens.
src/manual/returnOfTheEmpire2.md Converts markdown image class encoding to space-separated tokens.
src/manual/reincarnationFish.md Converts markdown image class encoding to space-separated tokens.
src/manual/penitentiary.md Converts markdown image class encoding to space-separated tokens.
src/manual/hushPuppies.md Converts markdown image class encoding to space-separated tokens.
src/manual/hooter.md Converts markdown image class encoding to space-separated tokens.
src/manual/historyOfTheBlacktoothEmpire.md Converts markdown image class encoding to space-separated tokens.
src/manual/hintsAndTips.md Converts markdown image class encoding to space-separated tokens.
src/manual/heels.md Converts markdown image class encoding to space-separated tokens.
src/manual/head.md Converts markdown image class encoding to space-separated tokens.
src/manual/egyptus.md Converts markdown image class encoding to space-separated tokens.
src/manual/doughnuts.md Converts markdown image class encoding to space-separated tokens.
src/manual/cuddlyStuffedWhiteRabbits.md Converts markdown image class encoding to space-separated tokens.
src/manual/crowns.md Converts markdown image class encoding to space-separated tokens.
src/manual/conveyorBelts.md Converts markdown image class encoding to space-separated tokens.
src/manual/bookWorld.md Converts markdown image class encoding to space-separated tokens.
src/manual/blacktooth.md Converts markdown image class encoding to space-separated tokens.
src/manual/bag.md Converts markdown image class encoding to space-separated tokens.
src/index.css Switches to v4 CSS entry (@import "tailwindcss", @config, @source), imports safelist + length scale, converts a component class to @utility.
src/game/render/text/TextContainer.test.ts Updates mock to compute missing-glyph IDs via the same escaping logic used in production.
src/game/render/hud/HudRenderer.ts Updates HUD glyph texture IDs to use escaped/encoded IDs via escapeCharForTailwind.
src/game/components/tailwindSprites/SanitiseForClassName.ts Tightens sanitisation to v4-safe class token charset by codepoint-encoding remaining unsafe characters.
src/game/components/dialogs/menuDialog/dialogs/sureWantEditor/SureWantEditorDialog.tsx Updates inline markdown image syntax to space-separated class tokens.
src/game/components/dialogs/menuDialog/dialogs/offerReincarnation/OfferReincarnationDialog.tsx Updates inline markdown image syntax to space-separated class tokens.
src/game/components/dialogs/menuDialog/dialogs/MenuItemLeader.tsx Avoids conflicting display utilities (inline-block vs flex) under v4 utility ordering.
src/game/components/dialogs/menuDialog/dialogs/displayOptions/SpritesOptionMenuItem.tsx Updates generated markdown image syntax to space-separated tokens.
src/game/components/dialogs/menuDialog/dialogs/crowns/FiveCrownsDisplay.tsx Replaces old negative spacing tokens (left-m10) with v4-style -left-10 etc.
src/game/components/dialogs/menuDialog/dialogs/communityGames/CommunityGamesDialog.tsx Replaces theme(width.3) with v4-friendly spacing function usage for leader column sizing.
src/game/components/dialogs/dialogClasses.ts Same leader-column width update to v4-friendly spacing function usage.
src/game/components/cheats/Cheats.tsx Uses escaped HUD glyph texture class IDs and replaces old negative spacing tokens with v4 style.
src/game/components/BlockyMarkdown.tsx Changes markdown <img> “src as classes” parsing to whitespace tokenization for v4 scanning.
src/editor/toolbar/saving/SaveAndLoadButtons.tsx Uses escaped HUD glyph texture class IDs for v4-safe selectors.
src/editor/toolbar/buttons/AddAndDeleteRoomButtons.tsx Updates HUD “plus” glyph texture class to the new escaped naming.
src/editor/postcss.config.js Updates editor PostCSS config to use @tailwindcss/postcss for Tailwind v4.
src/editor/index.css Migrates editor CSS entrypoint to v4 CSS-first setup and adds markdown @source scanning.
src/_generated/tailwindSafelist.css Adds generated @source inline(...) entries replacing v3 safelist behavior.
src/_generated/originalCampaign/rooms/blacktooth0switches.ts Updates generated scroll markdown image class encoding to space-separated tokens.
src/_generated/originalCampaign/new-rooms/switch_room_scroll.md Updates generated scroll markdown image class encoding to space-separated tokens.
src/_generated/originalCampaign/new-rooms/blacktooth0switches.json Updates generated scroll markdown image class encoding to space-separated tokens.
scripts/genTailwindSafelist.ts New generator to emit v4 @source inline(...) safelist CSS.
postcss.config.js Updates root PostCSS config to use @tailwindcss/postcss plugin entry for Tailwind v4.
pnpm-lock.yaml Updates lockfile for Tailwind v4 and related dependency changes.
package.json Bumps Tailwind ecosystem deps and adds gen:tailwindSafelist script.
e2e/spritesPage.spec.ts-snapshots/chromium-desktop/texture-ids-list.json Re-baselines texture-id list snapshot to reflect escaped/encoded glyph IDs.
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/editor/index.css
@config "../../tailwind.config.ts";
/* markdown manual/scroll pages aren't auto-scanned by v4; their per-image
classes (float-right etc., space-separated in image srcs) live only here */
@source "../**/*.md";

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seems too wide - do we need it so wide or only inside the manual dir?

@jimhigson jimhigson changed the title feat: migrate to tailwind v4 (dynamic spacing scale, native markdown class scanning) chore: update tailwind to v4.x Jun 5, 2026
@jimhigson
jimhigson marked this pull request as draft July 7, 2026 21:17
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.

3 participants