# Missing Features vs shadcn CLI
Features that shadcn CLI has that our `ui-cli` currently lacks.
---
shadcn CLI vs rust-ui CLI — Feature Comparison
┌─────────────────────────────────────────────────────────────────────────────┐
│ COMMAND COMPARISON │
├─────────────────────┬───────────────────────┬────────────────────────────── │
│ Feature │ shadcn (TS) │ rust-ui (Rust) │
├─────────────────────┼───────────────────────┼───────────────────────────────┤
│ init │ ✅ Full │ ✅ Basic │
│ add │ ✅ Full │ ✅ Full + TUI │
│ starters │ ❌ │ ✅ (tauri, tauri-fullstack) │
│ diff │ ✅ (deprecated) │ ✅ │
│ search │ ✅ │ ✅ │
│ list │ ❌ │ ✅ (rust-ui exclusive) │
│ update │ ❌ │ ✅ (rust-ui exclusive) │
│ info │ ✅ │ ✅ │
│ docs │ ✅ │ ✅ │
│ view │ ✅ │ ✅ │
│ mcp │ ✅ │ 🚧 planned (see __FEATURES_MCP.md) │
│ migrate │ ✅ │ ❌ (not needed) │
│ build │ ✅ │ ❌ (not needed) │
│ registry add │ ✅ │ ❌ (not needed) │
└─────────────────────┴───────────────────────┴───────────────────────────────┘
---
init — Both have it, shadcn's is far richer
┌─────────────────────────────────────────────┬────────────────────────────────────────────────┬───────────────────────┐
│ Capability │ shadcn │ rust-ui │
├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
│ Framework auto-detection │ ✅ (Next, Vite, Astro, Laravel, React Router…) │ ❌ │
├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
│ Monorepo / workspace support │ ✅ │ ✅ (workspace_utils) │
├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
│ Multiple templates │ ✅ 7 templates │ ❌ │
├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
│ Theme presets / color base selection │ ✅ interactive │ ⚠️ auto-selects Default│
├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
│ CSS variables toggle │ ✅ │ ❌ │
├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
│ RTL support │ ✅ │ ❌ │
├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
│ Overwrite config prompt │ ✅ │ ✅ │
├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
│ --yes / --force / --defaults flags │ ✅ │ ❌ │
├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
│ Re-install existing components │ ✅ │ ❌ │
├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
│ Backup/restore on failure │ ✅ │ ❌ │
├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
│ Leptos dep check │ ❌ │ ✅ │
├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
│ Tailwind CSS file detection from Cargo.toml │ ❌ │ ✅ │
├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
│ merge package.json (preserves user deps) │ ❌ │ ✅ │
└─────────────────────────────────────────────┴────────────────────────────────────────────────┴───────────────────────┘
---
add — rust-ui has a unique interactive TUI (ratatui)
┌───────────────────────────────────┬────────────────────────────────┬──────────────────────────────────────────────────────────────────────────┐
│ Capability │ shadcn │ rust-ui │
├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
│ Add by name │ ✅ │ ✅ │
├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
│ Dependency resolution │ ✅ │ ✅ (via tree_parser) │
├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
│ Interactive TUI picker │ ❌ (simple multiselect prompt) │ ✅ Ratatui with tabs (components, hooks, blocks, icons, demos, settings) │
├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
│ Overwrite prompt (interactive) │ ✅ │ ✅ │
├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
│ --yes / --overwrite flag │ ✅ │ ✅ │
├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
│ --all flag │ ✅ │ ❌ (not planned) │
├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
│ --dry-run │ ✅ │ ✅ │
├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
│ --diff / --view │ ✅ │ ✅ │
├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
│ --path override │ ✅ │ ✅ │
├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
│ --json output │ ✅ │ ✅ (list, search, diff, update, view, info) │
├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
│ JS file dependency download │ ❌ │ ✅ │
├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
│ Cargo dep injection │ ❌ │ ✅ │
├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
│ Register module in lib.rs/main.rs │ ❌ │ ✅ │
├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
│ Deprecated component warnings │ ✅ │ ❌ │
└───────────────────────────────────┴────────────────────────────────┴──────────────────────────────────────────────────────────────────────────┘
---
Commands only in shadcn (not needed / not planned for rust-ui)
┌──────────────┬───────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Command │ What it does │
├──────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────┤
│ migrate │ Run migrations: icons, radix, rtl — auto-refactors source files (not needed) │
├──────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────┤
│ build │ Build registry items from local source (for publishing custom registries) (not needed) │
├──────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────┤
│ registry add │ Add a registry source to the project config (not needed) │
└──────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────┘
---
## Features Still Missing
### `mcp` command
Start the CLI as an MCP server so AI coding tools (Claude Code, Cursor, VS Code) can call it programmatically.
See `__FEATURES_MCP.md` for the full design.
### `add` — deprecated component warnings
Warn when a requested component is deprecated in the registry.
### `init --yes` / `--force` / `--defaults` flags
Skip all prompts and use defaults. Needed for scripted/CI environments.
### `init` — backup/restore on failure
Back up existing config before writing; restore if the process exits unexpectedly.
### `init` — re-install existing components
After re-running `ui init`, offer to re-download and overwrite already installed components.
### `init` — interactive theme/color picker
Currently auto-selects the Default style. Should let the user pick a base color
(neutral, zinc, slate, stone…) interactively during init.
---
## Quality-of-Life Improvements
- **Custom registry support** — allow users to point `add`/`search` at a non-default registry URL
- **`--silent` flag** — suppress all output (for scripting)