Repository navigation
Tags: shellui-dev/shellui
Tags
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.
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`
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)
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
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
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`
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`
PreviousNext