@prnv/tuck 1.7.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -27,22 +27,26 @@
27
27
  - **Beautiful CLI** — Gorgeous prompts, spinners, and progress bars powered by @clack/prompts
28
28
  - **Safe by default** — Creates backups before every operation, never overwrites without asking
29
29
  - **Git-native** — Uses Git under the hood but hides the complexity
30
- - **Cross-platform** — Works on macOS and Linux
30
+ - **Cross-platform** — Works on macOS, Linux, and Windows
31
31
 
32
32
  ## Installation
33
33
 
34
34
  ```bash
35
- # npm
35
+ # npm (all platforms)
36
36
  npm install -g @prnv/tuck
37
37
 
38
- # Homebrew (macOS/Linux)
39
- brew install prnv/tap/tuck
38
+ # Homebrew (macOS/Linux) - coming soon
39
+ brew install pranav-karra-3301/tap/tuck
40
40
 
41
- # pnpm
41
+ # pnpm (all platforms)
42
42
  pnpm add -g @prnv/tuck
43
43
 
44
- # yarn
44
+ # yarn (all platforms)
45
45
  yarn global add @prnv/tuck
46
+
47
+ # Windows (PowerShell)
48
+ npm install -g @prnv/tuck
49
+ # Or download the binary from GitHub Releases
46
50
  ```
47
51
 
48
52
  ## Quick Start
@@ -124,6 +128,17 @@ tuck restore --all
124
128
  | `tuck config remote` | Configure git provider (GitHub/GitLab/local) |
125
129
  | `tuck config wizard` | Interactive configuration setup |
126
130
 
131
+ ### Diagnostics
132
+
133
+ | Command | Description |
134
+ | --------------- | ---------------------------------------------------- |
135
+ | `tuck doctor` | Run repository health and safety diagnostics |
136
+
137
+ `tuck doctor` flags:
138
+ - `--json`: Machine-readable output for CI
139
+ - `--strict`: Treat warnings as non-zero exit
140
+ - `--category <env|repo|manifest|security|hooks>`: Run one check group
141
+
127
142
  ## How It Works
128
143
 
129
144
  tuck stores your dotfiles in `~/.tuck`, organized by category:
@@ -208,7 +223,41 @@ Configure tuck via `~/.tuck/.tuckrc.json` or `tuck config wizard`:
208
223
  ### File Strategies
209
224
 
210
225
  - **copy** (default) — Files are copied. Run `tuck sync` to update the repo.
211
- - **symlink** — Files are symlinked. Changes are instant but require more care.
226
+ - **symlink** — tuck copies the file into the repo, then replaces the original path with a symlink to the repo file. Changes are instant, but this modifies your home dotfile paths.
227
+
228
+ ## Windows Support
229
+
230
+ tuck fully supports Windows with platform-specific handling:
231
+
232
+ ### Detected Windows Dotfiles
233
+
234
+ | Category | Files |
235
+ |----------|-------|
236
+ | **Shell** | PowerShell profiles (`Microsoft.PowerShell_profile.ps1`) |
237
+ | **Terminal** | Windows Terminal settings, ConEmu/Cmder configs |
238
+ | **Editors** | VS Code, Cursor, Neovim (in `%LOCALAPPDATA%`) |
239
+ | **Git** | `.gitconfig`, `.gitignore_global` |
240
+ | **SSH** | SSH config in `%USERPROFILE%\.ssh` |
241
+ | **Misc** | WSL config (`.wslconfig`), Docker, Kubernetes |
242
+
243
+ ### Windows-Specific Behavior
244
+
245
+ - **Symlinks**: On Windows, tuck uses directory junctions (don't require admin privileges) or falls back to copying files
246
+ - **Permissions**: Unix-style file permissions (chmod) don't apply on Windows; tuck handles this gracefully
247
+ - **Paths**: Windows environment variables (`%APPDATA%`, `%LOCALAPPDATA%`, `%USERPROFILE%`) are automatically expanded
248
+ - **Hooks**: tuck uses PowerShell Core (`pwsh`) or Windows PowerShell for hook execution
249
+
250
+ ### PowerShell Profile Merging
251
+
252
+ tuck supports smart merging for PowerShell profiles with preserve markers:
253
+
254
+ ```powershell
255
+ # In your PowerShell profile, mark local-only sections:
256
+ <# tuck:preserve #>
257
+ # Machine-specific aliases
258
+ Set-Alias code "C:\Program Files\Microsoft VS Code\Code.exe"
259
+ <# /tuck:preserve #>
260
+ ```
212
261
 
213
262
  ## Security
214
263