diff --git a/Directory.Build.props b/Directory.Build.props
index 20539fc..33c9952 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -3,7 +3,7 @@
0.4.0
- alpha.1
+ alpha.2
diff --git a/README.md b/README.md
index 5ccefb2..6e02eb1 100644
--- a/README.md
+++ b/README.md
@@ -24,12 +24,12 @@
| Channel | Version | Notes |
|---|---|---|
-| Latest stable (recommended) | `0.3.2` | Tailwind CSS `4.3.2` |
-| Prerelease | `0.4.0-alpha.1` | This branch; install with `--version 0.4.0-alpha.1` |
+| Latest stable (recommended) | `0.3.4` | Tailwind CSS `4.3.2` |
+| Prerelease | `0.4.0-alpha.2` | This branch; install with `--version 0.4.0-alpha.2` |
The CLI needs the .NET 10 SDK and works in Blazor projects on .NET 8, 9 and 10. The `ShellUI.Components` NuGet package targets .NET 10 only; on .NET 8 or 9, use the CLI.
-`main` is the 0.4 line, so this README and `docs/` describe `0.4.0-alpha.1`, including features that are not in a stable release yet, such as `shellui init --dashboard` and the auth blocks. For the stable version, read the [v0.3.2 docs](https://github.com/shellui-dev/shellui/tree/v0.3.2). Prereleases need `--version` to install.
+`main` is the 0.4 line, so this README and `docs/` describe `0.4.0-alpha.2`, including features that are not in a stable release yet, such as `shellui init --dashboard` and the auth blocks. For the stable version, read the [v0.3.4 docs](https://github.com/shellui-dev/shellui/tree/v0.3.4). Prereleases need `--version` to install.
ShellUI is pre-1.0, so APIs and generated output can still change between minor versions. Validate it in your target Blazor and hosting environments before relying on it.
diff --git a/VERSIONING_STRATEGY.md b/VERSIONING_STRATEGY.md
index a1f0650..965fd9b 100644
--- a/VERSIONING_STRATEGY.md
+++ b/VERSIONING_STRATEGY.md
@@ -6,7 +6,7 @@ ShellUI uses one centralized version for the source templates, CLI tool, and pac
| Scope | Value |
|---|---|
-| Version | `0.4.0-alpha.1` (prerelease; latest stable `0.3.2`) |
+| Version | `0.4.0-alpha.2` (prerelease; latest stable `0.3.4`) |
| Target framework | .NET 10 |
| Tailwind version | `4.3.2` |
@@ -19,13 +19,13 @@ The root `Directory.Build.props` supplies the version:
```xml
0.4.0
- alpha.1
+ alpha.2
```
`Directory.Build.props` composes the package and assembly metadata:
-- `Version` becomes `0.4.0-alpha.1` with the suffix above, and `0.4.0` without one.
+- `Version` becomes `0.4.0-alpha.2` with the suffix above, and `0.4.0` without one.
- `AssemblyVersion` and `FileVersion` use the numeric base `0.4.0`.
- `InformationalVersion` includes the prerelease suffix.
- Component metadata reads the centralized properties when running from the repository. `VersionHelper` uses assembly metadata as a fallback when its repository search does not find the solution file.
@@ -57,7 +57,7 @@ The CLI writes the computed version into `shellui.json` for each installed entry
"InstalledComponents": [
{
"Name": "button",
- "Version": "0.4.0-alpha.1",
+ "Version": "0.4.0-alpha.2",
"InstalledAt": "2026-01-01T00:00:00Z",
"IsCustomized": false
}
diff --git a/docs/CLI_INSTALLATION.md b/docs/CLI_INSTALLATION.md
index 1931dc4..76c2ed6 100644
--- a/docs/CLI_INSTALLATION.md
+++ b/docs/CLI_INSTALLATION.md
@@ -4,8 +4,8 @@
| Context | Version |
|---|---|
-| Latest stable (recommended) | `0.3.2`, needs the .NET 10 runtime |
-| Prerelease | `0.4.0-alpha.1`, install with `--version 0.4.0-alpha.1` |
+| Latest stable (recommended) | `0.3.4`, needs the .NET 10 runtime |
+| Prerelease | `0.4.0-alpha.2`, install with `--version 0.4.0-alpha.2` |
| Previous stable | `0.2.1` |
| Tailwind | `4.3.2` |
@@ -44,7 +44,7 @@ The manifest is `.config/dotnet-tools.json` and uses the installed package versi
"isRoot": true,
"tools": {
"shellui.cli": {
- "version": "0.3.2",
+ "version": "0.3.4",
"commands": ["shellui"]
}
}
diff --git a/docs/CLI_SYNTAX.md b/docs/CLI_SYNTAX.md
index 6778f90..3df2986 100644
--- a/docs/CLI_SYNTAX.md
+++ b/docs/CLI_SYNTAX.md
@@ -1,6 +1,6 @@
# ShellUI CLI Syntax
-This reference covers CLI `0.4.0-alpha.1` (prerelease): it runs on .NET 10, sets up Blazor projects on .NET 8, 9 and 10, uses Tailwind CSS `4.3.2`, and has 93 direct component targets. Some options, such as `--dashboard`, are not in the released 0.3.0; see the [v0.3.0 reference](https://github.com/shellui-dev/shellui/blob/v0.3.0/docs/CLI_SYNTAX.md) for that version.
+This reference covers CLI `0.4.0-alpha.2` (prerelease): it runs on .NET 10, sets up Blazor projects on .NET 8, 9 and 10, uses Tailwind CSS `4.3.2`, and has 93 direct component targets. Some options, such as `--dashboard`, are not in the stable 0.3.4; see the [v0.3.4 reference](https://github.com/shellui-dev/shellui/blob/v0.3.4/docs/CLI_SYNTAX.md) for that version.
## Command prefix
@@ -257,7 +257,7 @@ Representative fields look like this:
"InstalledComponents": [
{
"Name": "button",
- "Version": "0.4.0-alpha.1",
+ "Version": "0.4.0-alpha.2",
"InstalledAt": "2026-01-01T00:00:00Z",
"IsCustomized": false
}
diff --git a/docs/FAQ.md b/docs/FAQ.md
index 7f20e71..6a36012 100644
--- a/docs/FAQ.md
+++ b/docs/FAQ.md
@@ -6,7 +6,7 @@ Answers for the current ShellUI source and the currently published packages.
### Which version should I use?
-Use the latest stable release, `0.3.2`. It uses Tailwind CSS `4.3.2`. The `0.4.0-alpha.1` prerelease, with 93 direct component targets, needs `--version 0.4.0-alpha.1`:
+Use the latest stable release, `0.3.4`. It uses Tailwind CSS `4.3.2`. The `0.4.0-alpha.2` prerelease, with 93 direct component targets, needs `--version 0.4.0-alpha.2`:
```bash
dotnet tool install -g ShellUI.CLI
@@ -145,7 +145,7 @@ A representative Tailwind and component record is:
"InstalledComponents": [
{
"Name": "button",
- "Version": "0.4.0-alpha.1",
+ "Version": "0.4.0-alpha.2",
"InstalledAt": "2026-01-01T00:00:00Z",
"IsCustomized": false
}
diff --git a/docs/QUICKSTART.md b/docs/QUICKSTART.md
index 5812b10..bb4792e 100644
--- a/docs/QUICKSTART.md
+++ b/docs/QUICKSTART.md
@@ -1,6 +1,6 @@
# ShellUI Quick Start
-This quick start uses ShellUI `0.4.0-alpha.1`, a prerelease, with Tailwind CSS `4.3.2`. The CLI needs the .NET 10 SDK and works in Blazor projects on .NET 8, 9 and 10.
+This quick start uses ShellUI `0.4.0-alpha.2`, a prerelease, with Tailwind CSS `4.3.2`. The CLI needs the .NET 10 SDK and works in Blazor projects on .NET 8, 9 and 10.
## Prerequisites
@@ -20,7 +20,7 @@ dotnet --version
A global tool is invoked as `shellui`:
```bash
-dotnet tool install -g ShellUI.CLI --version 0.4.0-alpha.1
+dotnet tool install -g ShellUI.CLI --version 0.4.0-alpha.2
shellui --version
```
diff --git a/docs/RELEASE_NOTES.md b/docs/RELEASE_NOTES.md
index 74c3a56..2f49109 100644
--- a/docs/RELEASE_NOTES.md
+++ b/docs/RELEASE_NOTES.md
@@ -1,5 +1,89 @@
# ShellUI Release Notes
+# ShellUI v0.4.0-alpha.2 ๐งช
+
+> The second 0.4 prerelease. It fixes `shellui update`, which could leave a project upgraded from 0.3 unable to build, and makes `update` keep the files you changed. The Tailwind CLI is now downloaded once per machine instead of into every project, and the download survives slow connections. It also fixes `remove`, the dark theme and the package `TimePicker`. It is a prerelease, so installs need `--version`. Report issues via [GitHub Issues](https://github.com/shellui-dev/shellui/issues).
+
+## ๐ฌ๏ธ Tailwind CLI: once per machine
+
+- **Projects no longer hold the binary.** The standalone Tailwind CLI (about 110 MB) is downloaded once into `~/.shellui/bin` (or `SHELLUI_CACHE_DIR`), and `init` and the build run it from there. A new project went from about 112 MB to 130 KB, and later projects set up offline. A copy in a project's `.shellui/bin` still takes precedence. The binary is a build tool and never shipped with your app.
+- **Nothing in `.shellui/` is committed:** it now contains a `.gitignore` of `*`.
+- **Slow connections work.** The download streams to a `.partial` file, resumes after a dropped connection, retries, and only gives up after a minute with no data. Before, `init` gave up after five minutes and left the project uninitialised. The build's own download uses the same cache and retries too.
+- **A failed download no longer stops `init`.** It finishes the rest of the setup and warns, and the next build tries again; its warning names the URL and where to save the file.
+
+## ๐ง `shellui update` and `remove`
+
+- **`update` installs new dependencies.** Components gain parts between versions; in 0.4, `breadcrumb` gained `breadcrumb-list`, `-link`, `-page`, `-separator` and `-ellipsis`, and `tabs` gained `tab-models`. `update` only rewrote existing files, so a project updated from 0.3 failed to build (`BreadcrumbList`, `TabItem` not found). It now installs missing dependencies the way `add` does, with their NuGet packages and `_Imports.razor` usings.
+- **`update` keeps your changes.** `shellui.json` now records a hash of each file the CLI writes. `update` skips files you have changed since and says so; `--force` overwrites them. Before, `update` with no names rewrote everything, including `app-sidebar` and the dashboard layouts that apps are meant to edit.
+- **`remove` finds files the way install writes them.** It always looked in `Components/UI`, so it ignored a custom `ComponentsPath`, could not remove dashboard or auth layouts, and reported every name as removed. It now removes layouts too, lists files that still use a removed layout (usually `Routes.razor`), and counts what it removed.
+
+## ๐ Fixes
+
+- **Dark theme:** the browser drew its own controls (the `` calendar, number spinners, scrollbars, autofill, `