wtw
0.2.9
Git worktree + VS Code/(vscode based editors like Cursor) workspace manager. Creates, switches, and removes worktrees with auto-generated workspace files, unique Peacock colors, shell aliases, and fuzzy name resolution.
Minimum PowerShell version
7.0
Installation Options
Owners
Copyright
(c) 2025-present Sergey Novikov. All rights reserved.
Package Details
Author(s)
- Sergey Novikov
Tags
git worktree vscode cursor workspace peacock devtools ssh remote
Functions
Add-WtwEntry Copy-WtwWorkspace Enter-WtwWorktree Get-WtwList Get-WtwUpdateStatus Get-WtwWindowTitle Initialize-WtwConfig Install-Wtw Install-WtwSkill Invoke-Wtw Invoke-WtwClean Invoke-WtwHost New-WtwWorkspace New-WtwWorktree Open-WtwWorkspace Register-WtwProfile Register-WtwTerminalTitle Remove-WtwWorktree Set-WtwColor Sync-WtwWorkspace Unregister-WtwEntry
Dependencies
This module has no dependencies.
Release Notes
Adds remote worktrees: `wtw --on <host> cursor <name>` opens a worktree that lives on another machine over Remote-SSH, discovering it by asking that machine's own wtw rather than mirroring its registry. `wtw host` manages those machines and keeps ~/.ssh/config.d/wtw in sync, since the editor resolves hosts through the ssh client: `discover` registers everything on your tailnet (Tailscale, taking the platform from it and skipping devices that cannot host a worktree), `show` describes the effective config, `trust` compares host-key fingerprints against ones you already trust, and `test` diagnoses a failure across addresses, ssh config and the remote wtw. Addresses are an ordered candidate list probed at sync time, classified by transport (tailscale / zerotier / mdns / lan); `--via` picks one, either persistently via `host add` or for a single command via `wtw --on <host> <cmd> --via <transport>`. `editor` in the config now also accepts an ordered chain (["cursor","code"]) — first runnable wins. With --on, `go` opens an interactive pwsh inside the remote worktree — right directory, remote profile, and the local tab titled and coloured from that worktree's own registry entry. Workspace colors now pick their foreground by WCAG contrast ratio instead of a brightness threshold, so chrome text stays readable on mid-tone palette entries in both light and dark themes, and the active tab gets a border so the current file is identifiable by more than its fill. Internally, the VS Code family (prefixes, CLI candidates, app bundles, Remote-SSH extension ids, settings dirs) comes from one table instead of four lists that could drift.
FileList
- wtw.nuspec
- LICENSE
- README.md
- completions\wtw.auto-completion.ps1
- private\Add-HexAlpha.ps1
- private\Connect-WtwRemoteWorktree.ps1
- private\Convert-HslToHex.ps1
- private\Convert-WtwArgsToSplat.ps1
- private\ConvertTo-DarkerHexColor.ps1
- private\ConvertTo-HexComponent.ps1
- private\ConvertTo-PeacockColorBlock.ps1
- private\ConvertTo-WtwBranchSafeName.ps1
- private\ConvertTo-WtwRemoteUri.ps1
- private\ConvertTo-WtwRgbArray.ps1
- private\ConvertTo-WtwWorkspaceFileStem.ps1
- private\Find-WtwContrastColor.ps1
- private\Format-WtwTable.ps1
- private\Get-ContrastForeground.ps1
- private\Get-PerceptualDistance.ps1
- private\Get-WtwAllTargetNames.ps1
- private\Get-WtwCmuxTabLabel.ps1
- private\Get-WtwColorAssignment.ps1
- private\Get-WtwColorCircleEmoji.ps1
- private\Get-WtwConfig.ps1
- private\Get-WtwCurrentPrNumber.ps1
- private\Get-WtwEditDistance.ps1
- private\Get-WtwEditorFamily.ps1
- private\Get-WtwGitCommand.ps1
- private\Get-WtwListFormatHelpers.ps1
- private\Get-WtwNetworkPeers.ps1
- private\Get-WtwPropertyNames.ps1
- private\Get-WtwRegistry.ps1
- private\Get-WtwRemoteTarget.ps1
- private\Get-WtwRepoAliases.ps1
- private\Get-WtwRepoFromCwd.ps1
- private\Get-WtwSessionScript.ps1
- private\Get-WtwSourceGitBookmark.ps1
- private\Get-WtwTerminal.ps1
- private\Get-WtwWindowTitleHelpers.ps1
- private\Initialize-WtwCmuxCurrentSession.ps1
- private\Initialize-WtwWorktreeMetadata.ps1
- private\Install-WtwItermPromptHook.ps1
- private\Invoke-WtwAgentCtl.ps1
- private\Invoke-WtwClaudeProject.ps1
- private\Invoke-WtwCmuxProject.ps1
- private\Invoke-WtwCmuxRawCommand.ps1
- private\Invoke-WtwCodexProject.ps1
- private\Invoke-WtwCursorProject.ps1
- private\Invoke-WtwEditorCli.ps1
- private\Invoke-WtwSourceGit.ps1
- private\Invoke-WtwSupersetWorkspace.ps1
- private\Invoke-WtwT3Project.ps1
- private\Invoke-WtwWmuxProject.ps1
- private\Lighten-HexColor.ps1
- private\New-WtwColor.ps1
- private\New-WtwDefaultConfig.ps1
- private\New-WtwWorkspaceFile.ps1
- private\Open-WtwRemoteWorkspace.ps1
- private\Read-JsoncFile.ps1
- private\Repair-WtwSupersetProjectPath.ps1
- private\Reset-WtwTerminalColor.ps1
- private\Resolve-WtwColorArgs.ps1
- private\Resolve-WtwColorInput.ps1
- private\Resolve-WtwCurrentTarget.ps1
- private\Resolve-WtwDefaultTemplatePath.ps1
- private\Resolve-WtwEditorCommand.ps1
- private\Resolve-WtwEditorPreference.ps1
- private\Resolve-WtwFuzzyMatch.ps1
- private\Resolve-WtwHost.ps1
- private\Resolve-WtwRealPath.ps1
- private\Resolve-WtwRepo.ps1
- private\Resolve-WtwRepoRoot.ps1
- private\Resolve-WtwRepoTemplatePath.ps1
- private\Resolve-WtwSessionScript.ps1
- private\Resolve-WtwTarget.ps1
- private\Resolve-WtwTerminalWorkspaceMetadata.ps1
- private\Restore-WtwInstalledModule.ps1
- private\Save-WtwConfig.ps1
- private\Save-WtwRegistry.ps1
- private\Set-WtwAgentCtlProfile.ps1
- private\Set-WtwTerminalColor.ps1
- private\Set-WtwWorktreeEnv.ps1
- private\Show-WtwCommandHelp.ps1
- private\Split-WtwOnHostArgs.ps1
- private\Sync-WtwSshConfig.ps1
- private\Test-WtwAliasMatch.ps1
- private\Test-WtwEditorCli.ps1
- private\Test-WtwRemoteExtension.ps1
- private\Write-WtwColorSwatch.ps1
- private\Write-WtwUpdateNotice.ps1
- public\Add-WtwEntry.ps1
- public\Copy-WtwWorkspace.ps1
- public\Enter-WtwWorktree.ps1
- public\Get-WtwList.ps1
- public\Get-WtwUpdateStatus.ps1
- public\Get-WtwWindowTitle.ps1
- public\Initialize-WtwConfig.ps1
- public\Install-Wtw.ps1
- public\Install-WtwSkill.ps1
- public\Invoke-Wtw.ps1
- public\Invoke-WtwAgent.ps1
- public\Invoke-WtwClean.ps1
- public\Invoke-WtwHost.ps1
- public\Invoke-WtwSbx.ps1
- public\New-WtwWorkspace.ps1
- public\New-WtwWorktree.ps1
- public\Open-WtwClaudeCodeWorkspace.ps1
- public\Open-WtwCmuxWorkspace.ps1
- public\Open-WtwSupersetWorkspace.ps1
- public\Open-WtwT3Workspace.ps1
- public\Open-WtwWmuxWorkspace.ps1
- public\Open-WtwWorkspace.ps1
- public\Register-WtwProfile.ps1
- public\Register-WtwTerminalTitle.ps1
- public\Remove-WtwWorktree.ps1
- public\Set-WtwColor.ps1
- public\Sync-WtwWorkspace.ps1
- public\Unregister-WtwEntry.ps1
- shell\wtw.bash
- shell\wtw.cmd
- shell\wtw.zsh
- wtw.psd1
- wtw.psm1
Version History
| Version | Downloads | Last updated |
|---|---|---|
| 0.2.9 (current version) | 5 | 8/15/2026 |
| 0.2.3 | 4 | 8/15/2026 |
| 0.2.0 | 4 | 8/14/2026 |
| 0.1.48 | 5 | 8/13/2026 |
| 0.1.46 | 11 | 8/2/2026 |
| 0.1.45 | 12 | 7/29/2026 |
| 0.1.43 | 10 | 7/28/2026 |
| 0.1.40 | 8 | 7/26/2026 |
| 0.1.39 | 8 | 7/25/2026 |
| 0.1.37 | 9 | 7/24/2026 |
| 0.1.35 | 14 | 7/24/2026 |
| 0.1.33 | 11 | 7/24/2026 |
| 0.1.31 | 19 | 7/6/2026 |
| 0.1.30 | 6 | 7/6/2026 |
| 0.1.29 | 19 | 6/2/2026 |
| 0.1.25 | 5 | 5/30/2026 |
| 0.1.24 | 4 | 5/30/2026 |
| 0.1.23 | 8 | 5/28/2026 |
| 0.1.22 | 8 | 5/28/2026 |
| 0.1.21 | 7 | 5/28/2026 |
| 0.1.20 | 6 | 5/26/2026 |
| 0.1.19 | 7 | 5/26/2026 |
| 0.1.18 | 6 | 5/26/2026 |
| 0.1.17 | 6 | 5/23/2026 |
| 0.1.16 | 6 | 5/23/2026 |
| 0.1.15 | 22 | 5/19/2026 |
| 0.1.14 | 6 | 5/18/2026 |
| 0.1.13 | 6 | 5/16/2026 |
| 0.1.10 | 6 | 5/16/2026 |
| 0.1.9 | 6 | 5/14/2026 |
| 0.1.6 | 6 | 5/11/2026 |
| 0.1.5 | 6 | 5/7/2026 |
| 0.1.4 | 9 | 4/23/2026 |
| 0.1.2 | 4 | 4/20/2026 |
| 0.1.1 | 6 | 4/12/2026 |
| 0.1.0 | 5 | 4/12/2026 |