Repository navigation
fix: use one Tailwind CLI per machine and survive slow downloads - #48
Merged
Merged
Conversation
init downloaded the 112 MB Tailwind CLI into every project, held it in memory and gave up after five minutes, so on a slow connection init failed and left the project uninitialised. The build's own download used MSBuild's default timeout and wrote straight into the project, and nothing kept the binary out of git. - The CLI lives once per machine in ~/.shellui/bin (or SHELLUI_CACHE_DIR) and init and the build run it from there; a copy in .shellui/bin still wins. Projects hold no binary. - Downloads stream to a .partial file, resume with Range, retry, and stop only after 60 s without data; the file appears once its size matches. - If the download fails, init finishes the rest and the build retries. - .shellui/.gitignore of "*" keeps the folder out of git. - update replaces a targets file any released CLI wrote, unless edited, and removes a project copy identical to the shared one.
Shewart
added a commit
that referenced
this pull request
Oct 13, 2026
Release notes and version references for 0.4.0-alpha.2. **In this release** (already on main): - #48: the Tailwind CLI is downloaded once per machine and run from there, so projects hold no binary; downloads survive slow connections; `init` carries on if the download fails; `.shellui/` is git-ignored; `update` moves older projects onto the shared CLI - #46: `update` installs new dependencies and keeps files you changed (`--force` to overwrite); `remove` finds layouts and custom paths; the package `TimePicker` value fix; `color-scheme` for light and dark - #44: `shellui-theme.css` no longer 404s when linked directly - #43: NuGet package icon and README logo **This PR** - `Directory.Build.props`: suffix `alpha.2` - Docs name stable `0.3.4` and prerelease `0.4.0-alpha.2` (README, VERSIONING_STRATEGY, CLI_INSTALLATION, CLI_SYNTAX, FAQ, QUICKSTART); stable-docs links point to `v0.3.4` - The version fallbacks in `VersionHelper` and `ComponentMetadata` (still `0.3.0` on main) are now `0.4.0-alpha.2` - `docs/RELEASE_NOTES.md`: the 0.4.0-alpha.2 section, plus the 0.3.4 and 0.3.3 sections from `release/v0.3`; `scripts/extract-release-notes.sh 0.4.0-alpha.2` extracts it **Release checks** (on `9c7cfac` plus this commit) - Release build has 0 warnings, and all 334 tests pass - A 0.3.4 project updated with the packed alpha.2 CLI: targets refreshed, the 112 MB project copy of Tailwind removed, 54 components updated, the edited `AppSidebar` kept, 5 new dependencies installed, builds 0/0 - A fresh Identity app, `init --yes --dashboard 02` then `add auth-01 data-table chat qr-code time-picker`: uses the shared Tailwind CLI and builds 0/0; `.shellui` holds only its `.gitignore` - All 93 direct targets together in `my-app` build 0/0 on net8.0, net9.0 and net10.0, with no project copies of the CLI - The packed `ShellUI.Components` in a browser: `window.ShellUI` loads, TimePicker shows its value, dark mode sets `color-scheme` (including the native date input), Popover closes on Escape, Command runs `Action` then `CommandSelected`, no console errors
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.
initdownloaded the 112 MB Tailwind CLI into every project, held it in memory, and gave up after five minutes. On a slow connectioninitfailed and left the project uninitialised (found during the 0.4.0-alpha.2 release checks). The build's own download used MSBuild's default timeout and wrote straight into the project, and nothing kept the binary out of git.One CLI per machine
~/.shellui/bin/tailwindcss-<version>-<platform>(orSHELLUI_CACHE_DIR), the same locationscripts/rebuild-precompiled-css.shuses.initandBuild/ShellUI.targetsrun it from there, so projects hold no binary..shellui/binstill takes precedence..shellui/.gitignorecontaining*keeps the folder out of git without touching the project's.gitignore.Downloads that survive slow connections
.partialfile; resumed with HTTP Range after a dropped connection; up to 4 attempts; abandoned only after 60 s with no data (no overall time limit). A 404 fails at once.initspinner, and every 10% when there's no terminal..partialwith retries and a 30-minute limit, and renames only on success.When the download fails
initfinishes everything else (config, CSS, components) and warns. The build retries, and its warning names the exact URL and the file path to save it to.Existing projects
shellui updatereplacesBuild/ShellUI.targetswhen it's an unedited copy from any released CLI. There have been two standalone versions (0.0.1–0.3.4 and 0.4.0-alpha.1), matched by hash, and both are tested against the real files those CLIs wrote. It then adds the ignore file, and deletes the project's copy of the CLI if it's identical to the shared one. An edited targets file is left alone, with a note.Checked
initwith an empty cache: downloaded 107 MB in 65 s and built. The old code timed out on the same connection.initwith a warm cache: 2 s, with no binary in the project.initstill completed, and the build warned with the URL and path..shellui, and the build is 0/0.update: targets refreshed, its 112 MB copy removed, and the build is 0/0.