Skip to content

Tags: shellui-dev/shellui

Tags

v0.4.0

Toggle v0.4.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
docs: correct the docs for the 0.4.0 release (#82)

Docs-only fixes for the 0.4.0 release, checked against the source at
`3810f00` (`Program.cs`, `ComponentManager`, `ComponentInstaller`,
`DoctorService`, `MigrateService`, `ComponentRegistry.cs` and the
template metadata, `ShellUIConfig`, `CssTemplates`, the `.csproj`
files). No code, version or `release/v0.3` changes.

Registry facts used: 254 entries = 98 direct targets (`IsAvailable =
true`) + 156 hidden; per-category counts and the direct-target
dependency table were regenerated from the template metadata and match.

## Packaged README (ships in the nupkg)

- **`src/ShellUI.CLI/README.md`**
  - Command table had no `doctor` or `migrate`; added both.
- `list` said "the 93 components"; it lists 98 (components and layout
blocks).
- `update` row said `--all` is needed for every component; with no names
it already updates all of them.
- Said `update` overwrites your copies; it skips files changed since the
CLI wrote them unless `--force`.
- Said `remove` doesn't handle dashboard layouts; it deletes the file
from `Components/Layout/` and lists files that still use it.
  - Added `add all` / `--except` and the `migrate` options.
- `src/ShellUI.Components/README.md`: checked (asset names,
`ButtonVariant.Outline`, .NET 8/9/10), no changes needed.

## Repo docs

- **`docs/CLI_INSTALLATION.md`**: local tool manifest example showed
`"version": "0.3.5"`, now `0.4.0`.
- **`README.md`**: command reference table had no `doctor` / `migrate`;
`update` row didn't mention that changed files are skipped; `add` row
now mentions `all`.
- **`docs/QUICKSTART.md`**: "93 direct targets" → 98; the `input.css`
excerpt showed `--primary: oklch(0.55 0.22 264.53)`, but `init` writes
`oklch(0 0 0)` (and `color-scheme: light;` first).
- **`docs/CLI_SYNTAX.md`**: said `update` "still overwrites the file";
it compares against the recorded `Hash` and skips changed files unless
`--force`. Added `Hash` (an illustrative 64-char hex value) to the
`shellui.json` sample.
- **`docs/FAQ.md`**: "93 direct targets" (twice) → 98; same `update
overwrites` claim fixed; `Hash` added to the sample; "Pass the version
explicitly" was followed by a command with no version (now: re-run
without `--version` for the latest stable).
- **`docs/PROJECT_STATUS.md`**: 243/93/150 → 254/98/156; command list
had no `doctor` / `migrate`; dropped `--prerelease` from the
pinned-version `dotnet add package` example.
- **`docs/COMPONENT_ROADMAP.md`**: header said ".NET 10" → ".NET 8, 9
and 10"; 243/93/150 → 254/98/156; the "Compositional upgrades (done)"
list was missing the 0.4 parts for AlertDialog, Breadcrumb, Command,
Form, Menubar, Pagination and Resizable.
- **`docs/COMPONENT_DEPENDENCIES.md`**: list of `shellui-js` users was
missing `resizable` (table itself matched the metadata).
- **`docs/COMPARISON.md`**: "Current project is an alpha snapshot" →
"Pre-1.0 project".
- **`docs/ARCHITECTURE.md`**: command table (which says commands not
listed aren't part of the CLI) had no `doctor` / `migrate`; option list
for `init`/`add` was missing `--dashboard`, `--replace-layout`,
`--except`; said layout blocks must be removed manually; added the file
hash to what `add` records.
- **`docs/CONTRIBUTING.md`**: "active alpha project" / "Alpha software"
→ pre-1.0; command list had no `doctor` / `migrate`; 243/93/150 →
254/98/156; framework line now mentions net9.0 for `ShellUI.Components`.
- **`docs/tailwind-setup.md`**: prerequisite said ".NET 10.0 SDK" →
".NET 8 SDK or later"; said `init` downloads Tailwind into the project's
`.shellui/bin` (it's the per-machine `~/.shellui/bin`); command list had
no `doctor` / `migrate`; init options now include `--dashboard` /
`--replace-layout`.
- **`VERSIONING_STRATEGY.md`**: "the current repository baseline is .NET
10" and the summary "targeting .NET 10" were wrong for 0.4.0;
"`0.3.0-rc.1` was the last release targeting .NET 9" now says 0.4.0
supports .NET 8, 9 and 10 again (verified per tag); dropped
`--prerelease` from the pinned-version example; `Hash` added to the
sample.
- **`docs/RELEASING.md`**: the "Cutting a release" walkthrough used
`0.4.0-alpha.3`; it now walks through the stable `0.4.0` (empty suffix,
`prepare-release.ps1 -Version 0.4.0 -DryRun`, `git tag v0.4.0`), with a
note on the suffix for prereleases.

Checked and left as is: `docs/RELEASE_NOTES.md` `# ShellUI v0.4.0`
section (claims match the source; compare link is `v0.3.6...v0.4.0`),
`docs/razor-class-library.md` (matches
`InitService.RazorClassLibraryHostSteps`).

## Verification

- `bash scripts/extract-release-notes.sh 0.4.0`: exit 0, 61 lines, from
`# ShellUI v0.4.0` to the Full Changelog line.
- `dotnet build ShellUI.slnx -c Release`: 0 warnings, 0 errors.
- `dotnet test ShellUI.slnx -c Release`: 542 passed, 0 failed on net8.0
and on net10.0.

## Unsure / for review

- `docs/CLI_INSTALLATION.md`'s CI examples use `dotnet-version: 10.0.x`.
That works, but .NET 8 would work too; left unchanged.

v0.3.6

Toggle v0.3.6's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore(release): v0.3.6 (#75)

A small patch for both packages, cherry-picked from main.

**Package icon** (`6d480f1` on main)
0.3.5 shipped without `PackageIcon`, so nuget.org shows its default icon
for `ShellUI.CLI` and `ShellUI.Components`, and the package list uses
the latest stable's icon. Both now carry `assets/icon.png`.

**Safelist** (`145997e` on main, from #74)
The safelist generator read `.razor` class attributes only up to their
first quote, so classes passed to `Shell.Cn("...")` and literals in
ternaries never reached `shellui-classes.txt`. On 0.3, 181 classes were
missing for apps that build their own Tailwind CSS from the package,
including the dialog's centring (`translate-x/y-[-50%]`),
`sm:rounded-lg` and the Sonner variant colours. The precompiled
`shellui-all.css` wasn't affected. The safelist is regenerated from
0.3's own components: 369 to 550 classes, none removed.

**This PR also**
- Bumps `Directory.Build.props` and the version references to `0.3.6`
- Adds the `# ShellUI v0.3.6` section to `docs/RELEASE_NOTES.md`;
`scripts/extract-release-notes.sh 0.3.6` extracts it

**Checks**
- Release build 0 warnings; 251 tests pass
- Both packed nupkgs contain `icon.png` and declare
`<icon>icon.png</icon>`
- A .NET 10 app on the packed `ShellUI.Components` writes all 550
classes to `wwwroot/shellui-classes.txt`, and Tailwind built from that
file generates `translate-x/y-[-50%]`, `sm:rounded-lg` and
`bg-green-500/20`

v0.3.5

Toggle v0.3.5's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore(release): v0.3.5 (#73)

Brings the 0.4 prerelease fixes to the stable line as 0.3.5. Each fix is
a cherry-pick from main, adapted where 0.3 differs; 0.4-only features
and the breaking template changes (Input/Textarea variants, the Stepper
rework, the Toast/Skeleton/Pagination/NavigationMenuItem API changes)
stay in 0.4.

**CLI**
- One Tailwind CLI per machine in `~/.shellui/bin`, resumable download
with retries, `init` finishes when the download fails; `update` moves
existing projects onto it (#48)
- `update` keeps local changes (content hash per file, `--force`
overwrites) and installs new dependencies; `remove` uses the install
path (#46)
- `add` never downgrades a NuGet package the project already references
(#56)
- `init` supports Razor class libraries, plus
`docs/razor-class-library.md` (#53)
- Release workflow publishes with NuGet Trusted Publishing (#59)

**Components (package and templates)**
- `Shell.Cn` merges conflicting classes, so `Class` overrides a
component's own (#51)
- Focus trap in Dialog, AlertDialog, Sheet and Drawer; the
non-compositional Sheet and Drawer panels take focus and close on Escape
(#50)
- RadioGroup and RadioGroupItem `Disabled` (template), ScrollArea,
DatePicker weekday, TimePicker `Step`, DateRangePicker and EmptyState
(template), Label `for`, FileUpload icon, Sheet/Drawer click propagation
and close button, CarouselItem (part of #52)

**Adapted for 0.3**
- `ComponentInstaller.InstallComponent` returns `bool` so `update` can
report failures; the update tests use 0.3's registry entries
- 0.3 has no compositional AlertDialog parts; `AlertDialog` renders
through `DialogContent`, so it gets the trap from there
- Docs mention only what 0.3 has (no auth layouts, Bootstrap cleanup or
`qr-code`)
- Safelist regenerated (`scrollbar-*` and the Material Symbols class
gone, `w-9` added)

**This PR also**
- Bumps `Directory.Build.props` and the version references to `0.3.5`
- Adds the `# ShellUI v0.3.5` section to `docs/RELEASE_NOTES.md`;
`scripts/extract-release-notes.sh 0.3.5` extracts it

**Release checks**
- Release build has 0 warnings, and all 250 tests pass
- `Shell.Cn` leaves all 1,235 of 0.3's own class strings unchanged when
merged alone
- An app set up with the released 0.3.4 CLI (45 components), updated
with the packed 0.3.5 CLI: 47 updated, `Build/ShellUI.targets` replaced,
the project's Tailwind copy removed, `.shellui/.gitignore` added, builds
0/0; a later local edit to `Card.razor` is skipped by `update`
- CLI templates in a browser: RadioGroup selects (disabled item
ignored), ScrollArea scrolls, `Class="px-8 bg-destructive"` replaces the
button's `px-4 bg-primary`, DatePicker puts 1 October 2026 under
Thursday, TimePicker `Step="15"` lists 00/15/30/45 and Cancel closes it,
Dialog and Sheet keep Tab and Shift+Tab inside, wrap, and return focus
to the trigger on Escape, the Sheet with only `Description` shows its
close button
- The packed `ShellUI.Components` in a browser: the same Cn, DatePicker,
TimePicker, ScrollArea and focus-trap checks, Label renders `for`,
FileUpload shows an SVG icon, clicks inside a Sheet don't reach the
parent; no console errors
- All 76 direct targets together in `my-app` build 0/0 on net8.0, net9.0
and net10.0 (176 registry entries)

v0.4.0-alpha.3

Toggle v0.4.0-alpha.3's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore(release): v0.4.0-alpha.3 (#72)

Release notes and version references for 0.4.0-alpha.3. The first
release published with NuGet Trusted Publishing (#71).

**In this release** (already on main)
- #69: a component's `Class` overrides its own conflicting classes
(`Shell.Cn` merges like tailwind-merge)
- #64: Dialog, AlertDialog, Sheet and Drawer keep keyboard focus inside
and return it on close
- #70: `add` never downgrades a NuGet package the project already
references
- #71: `init` supports Razor class libraries, plus a guide; release
workflow on Trusted Publishing
- #63, #65, #66, #68: CLI templates reconciled with the package
(RadioGroup, ScrollArea, DatePicker, TimePicker, Pagination, Toast,
Skeleton, Sheet/Drawer and more)

**Breaking for CLI template users** (after `shellui update`, all in the
notes with upgrade steps): `Input.InputVariant` becomes `InputVariant`
(new `input-variants` template); Stepper parts read `ActiveStep` instead
of taking `CurrentStep`; `ScrollArea` drops its `scrollbar-*` classes.
`update` installs the new templates automatically.

**This PR**
- `Directory.Build.props` suffix `alpha.3`; README, VERSIONING_STRATEGY,
CLI_INSTALLATION, CLI_SYNTAX, FAQ, QUICKSTART and the version fallbacks
move to `0.4.0-alpha.3`
- `docs/RELEASE_NOTES.md`: the 0.4.0-alpha.3 section;
`scripts/extract-release-notes.sh 0.4.0-alpha.3` extracts it

**Release checks**
- Release build has 0 warnings, and all 484 tests pass
- An app set up with the released 0.4.0-alpha.2 CLI, updated with the
packed alpha.3 CLI: 36 components updated, `input-variants`,
`textarea-variants` and `stepper-models` installed, builds 0/0
- CLI templates in a browser: RadioGroup selects (disabled items
ignored), ScrollArea scrolls, Pagination `@bind-CurrentPage`, Stepper
Next, DatePicker puts 1 October 2026 under Thursday, TimePicker
`Step="15"` lists 00/15/30/45, `Class="px-8 bg-destructive"` replaces
the button's own `px-4 bg-primary`, `InputVariant.Error` applies
- Focus trap with real key presses (templates and package): Tab cycles
inside the dialog and wraps, Shift+Tab goes back, Escape closes and
returns focus to the trigger
- All 93 direct targets together in `my-app` build 0/0 on net8.0, net9.0
and net10.0 (244 registry entries)
- The packed `ShellUI.Components` in a browser: the class override,
TimePicker, dark mode with `color-scheme`, Popover Escape, Command
`Action`, the dialog focus trap; no console errors

v0.4.0-alpha.2

Toggle v0.4.0-alpha.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore(release): v0.4.0-alpha.2 (#49)

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

v0.3.4

Toggle v0.3.4's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix: v0.3.4 – TimePicker value, dark-theme color-scheme (#47)

Patch release for 0.3, porting two fixes and a test from #46.

- **Package `TimePicker` threw when `Value` was set** (`580031c`): it
formatted a `TimeSpan?` with `"HH:mm"`, a DateTime pattern, so any set
value threw a `FormatException`. It now uses `@"hh\:mm"`, like the CLI
template.
- **Dark theme didn't set `color-scheme`** (`b0b5a65`): the browser drew
its own controls (date pickers, scrollbars, select lists, autofill)
light on a dark page. `color-scheme: light` / `dark` is now in the
`init` theme, the blocks `theme apply` writes, the package's
`shellui-theme.css` (and so `shellui-all.css`) and the demo.
- **Value render test** (`58d26c7`): renders every package component
that takes a value with a sample value, and fails if one renders empty
but throws once it has a value. It finds nothing else on 0.3.
- **`chore(release): v0.3.4`** (`a9da2d3`): version bumped in the same
11 files as 0.3.3, plus a v0.3.4 section in `docs/RELEASE_NOTES.md`. The
upgrade note tells existing projects to add the two `color-scheme` lines
to `input.css` or rerun `theme apply`, since `update` doesn't rewrite
`input.css`.

Checked:
- Release build has 0 warnings, and all 164 tests pass
- `scripts/extract-release-notes.sh 0.3.4` extracts the new section
- The CSS bundle builds and contains `color-scheme`
- `ShellUI.CLI` and `ShellUI.Components` both pack as `0.3.4`

v0.3.3

Toggle v0.3.3's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix: v0.3.3 – theme CSS 404, Command actions, Escape on Dropdown and …

…Popover, SidebarProvider reloads (#45)

Patch release for 0.3, porting the non-breaking fixes from #41 plus the
theme CSS fix.

- **Theme CSS 404 (package):** `shellui-theme.css` no longer starts with
`@import "tailwindcss";`, so linking it directly no longer logs a 404.
The CSS build script adds the import itself; `shellui-all.css` is
unchanged.
- **`Command` runs `CommandItem.Action` (package and template):** it
runs the item's `Action`, then raises `CommandSelected`, like
`CommandPalette`. Ported by hand, since 0.3's `Command` predates the
compositional rewrite on main.
- **Escape closes `Dropdown` and `Popover` (package and templates).**
- **`SidebarProvider` template:** also catches `JSDisconnectedException`
on dispose, so full reloads no longer log it twice. The demo app's copy
on 0.3 already catches everything, so it is unchanged.
- **Tests:** `PackageBehaviorTests` covers the Command action and Escape
on both components. The Command test clicks the item's `<button>`,
because 0.3 has no `role="option"`.
- **`chore(release): v0.3.3`:** version bumped in the same 11 files as
0.3.2, plus a v0.3.3 section in `docs/RELEASE_NOTES.md`.

Checked:
- Release build has 0 warnings and all 159 tests pass, including on the
test commit by itself
- `scripts/extract-release-notes.sh 0.3.3` extracts the new section
- The CSS bundle builds
- `ShellUI.CLI` and `ShellUI.Components` both pack as `0.3.3`

v0.4.0-alpha.1

Toggle v0.4.0-alpha.1's commit message
ShellUI v0.4.0-alpha.1

v0.3.2

Toggle v0.3.2's commit message
ShellUI v0.3.2

v0.3.1

Toggle v0.3.1's commit message
ShellUI v0.3.1