refactor-1

This commit is contained in:
2026-03-15 21:46:50 +02:00
parent 24d682adf1
commit c0b378c424
25 changed files with 4839 additions and 3136 deletions

86
docs/flows.md Normal file
View File

@@ -0,0 +1,86 @@
## Feature Inventory
### Core Features
- `enter`
- SSH into a named environment target with optional tmux auto-attach
- `dev`
- create, exec into, attach to, list, stop, remove, and respawn development containers
- `dotfiles`
- clone the dotfiles repo, link/unlink/relink configs, undo link transactions, inspect status, sync modules, clean broken links, edit packages, and interact with repo state
- `bootstrap`
- run machine bootstrap profiles with packages, env validation, hostname/locale/shell setup, ssh-keygen, `runcmd`, config linking, and post-link hooks
- `package`
- install/list/remove binary packages defined in the manifest
- `sync`
- inspect git project health, fetch remotes, and summarize project state
- `completion`
- dynamic zsh completion generation and installation
### Supported Flows
#### Access a host
1. Resolve `[user@]namespace@platform`
2. Expand platform host template or configured target override
3. Optionally warn about missing remote terminfo
4. Open SSH, optionally into tmux
#### Start a dev container
1. Resolve runtime (`docker` or `podman`)
2. Normalize image shorthand
3. Apply labels and common host mounts
4. Start the container
5. `flow dev connect` attaches through tmux or falls back to direct exec
#### Manage dotfiles
1. Clone dotfiles repo
2. Optionally sync external module repos
3. Resolve shared + profile packages
4. Validate target conflicts
5. Snapshot replaced targets
6. Apply links transactionally
7. Undo from persisted transaction state if needed
#### Bootstrap a machine
1. Load and validate a profile
2. Detect or select the package manager
3. Check required environment variables
4. Apply hostname/locale/shell prerequisites
5. Install profile packages
6. Run package hooks
7. Generate SSH keys
8. Run `runcmd`
9. Link dotfiles for the profile
10. Run post-link hooks
### Command Surface Review
### Keep
- `enter`
- `dev`
- `dotfiles`
- `bootstrap`
- `package`
- `sync`
- `completion`
### Keep But Treat As Convenience Aliases
- `dotfiles sync`
- effectively `repo pull` + `modules sync`
- `dotfiles relink`
- effectively `unlink` + `link`
- `sync summary`
- effectively `sync check --no-fetch`
### Commands That Need Follow-Up Product Decisions
- `package remove`
- today it forgets install state but does not uninstall files; either rename it to `forget` or implement real uninstall semantics
- `dotfiles edit`
- current auto-commit/push behavior is powerful but risky; it may deserve an explicit confirm-or-dry-run mode before wider use