Auto-sync from catchthesethighs

This commit is contained in:
Aaron D. Lee
2025-12-16 20:37:11 -05:00
parent b6e5c33763
commit c4c3f9ca3b
7 changed files with 3463 additions and 2 deletions

328
CHANGELOG_v1.2.0.md Normal file
View File

@@ -0,0 +1,328 @@
# Changelog - Version 1.2.0
## [1.2.0] - 2025-12-16
### Added
#### Python Project Templates
- **`py-new`** - Basic Python project with venv, tests, and proper structure
- **`py-django`** - Django web application template with best practices
- **`py-flask`** - Flask web application with blueprints and templates
- **`py-fastapi`** - FastAPI REST API with automatic documentation
- **`py-data`** - Data science project with Jupyter, pandas, and structured data directories
- **`py-cli`** - Command-line tool template using Click framework
**Features:**
- Automatic virtual environment creation
- Poetry support (configurable via `PY_TEMPLATE_USE_POETRY`)
- Pre-configured .gitignore for Python projects
- README with setup instructions
- Requirements.txt with common dependencies
- Project structure following best practices
- Optional git initialization
- Quick aliases: `pynew`, `pydjango`, `pyflask`, `pyfast`, `pydata`, `pycli`
- `venv` function to quickly activate virtual environments
#### SSH Session Manager with Tmux Integration
- **Save SSH connection profiles** with aliases for quick access
- **Automatic tmux session attachment** on remote hosts
- **Auto-create named sessions** per server connection
- **Fuzzy search connections** with fzf integration
- **Dotfiles sync** to remote servers
- **Quick reconnect** to last used connection
**Commands:**
- `ssh-save <n> <connection>` - Save connection profile
- `ssh-connect <n>` - Connect with auto-tmux attach
- `ssh-list` - List all saved profiles
- `sshf` - Fuzzy search and connect
- `ssh-reconnect` - Quick reconnect to last/specific connection
- `ssh-sync-dotfiles <n>` - Deploy dotfiles to remote
**Aliases:**
- `sshl`, `sshs`, `sshc`, `sshd`, `sshr`, `sshsync`
#### Tmux Workspace Manager
- **Pre-configured workspace templates** for different workflows
- **Quick workspace creation** from templates
- **Session management** with persistence across disconnects
- **Custom template creation** by saving current layouts
- **Fuzzy search workspaces** with fzf
- **Pane synchronization toggle** for multi-server commands
**Templates:**
- `dev` - 3 panes: vim (50%), terminal (25%), logs (25%)
- `ops` - 4 panes in grid for monitoring
- `ssh-multi` - 4 panes for multi-server management
- `debug` - 2 panes: main (70%), helper (30%)
- `full` - Single full-screen pane
- `review` - Side-by-side comparison
**Commands:**
- `tw <n>` - Quick attach or create workspace
- `tw-create <n> [template]` - Create from template
- `tw-list` - List all workspaces
- `tw-save <n>` - Save current layout as template
- `tw-sync` - Toggle pane synchronization
- `twf` - Fuzzy search workspaces
**Aliases:**
- `twl`, `twc`, `twa`, `twd`, `tws`, `twt`, `twe`, `twf`
### Changed
#### Alias System Cleanup
- **Removed `stats` alias** - Forces explicit `dfstats` usage to avoid conflicts with other tools
- Updated help text in `dotfiles-cli` to reflect removal
- Added clarifying comments in aliases.zsh
### Configuration
#### New Python Template Settings (dotfiles.conf)
```bash
# Python Project Templates
PY_TEMPLATE_BASE_DIR="$HOME/projects" # Where to create projects
PY_TEMPLATE_PYTHON="python3" # Python executable
PY_TEMPLATE_VENV_NAME="venv" # Virtual environment name
PY_TEMPLATE_USE_POETRY="false" # Use Poetry instead of venv
PY_TEMPLATE_GIT_INIT="true" # Auto-initialize git repos
```
#### New SSH Manager Settings (dotfiles.conf)
```bash
# SSH Session Manager
SSH_AUTO_TMUX="true" # Auto-attach to tmux on connect
SSH_TMUX_SESSION_PREFIX="ssh" # Tmux session prefix
SSH_SYNC_DOTFILES="ask" # ask, true, or false
```
#### New Tmux Workspace Settings (dotfiles.conf)
```bash
# Tmux Workspace Manager
TW_SESSION_PREFIX="work" # Session name prefix
TW_DEFAULT_TEMPLATE="dev" # Default template
```
---
## Breaking Changes
- **`stats` alias removed** - Use `dfstats` instead
- **Reason:** Potential conflicts with other tools/scripts
- **Migration:** Replace `stats` with `dfstats` in any scripts or muscle memory
---
## File Structure
### New Files
```
zsh/functions/
├── python-templates.zsh # Python project templates
├── ssh-manager.zsh # SSH session manager
└── tmux-workspaces.zsh # Tmux workspace manager
docs/
└── SSH_TMUX_INTEGRATION.md # Complete integration guide
.ssh-profiles # SSH connection profiles (generated)
.tmux-templates/ # Tmux workspace templates (generated)
├── dev.tmux
├── ops.tmux
├── ssh-multi.tmux
├── debug.tmux
├── full.tmux
└── review.tmux
```
### Modified Files
- `zsh/aliases.zsh` - Removed `stats` alias
- `dotfiles.conf` - New configuration sections (optional)
---
## Integration Instructions
### 1. Add to .zshrc
Add to the deferred loading section in `.zshrc`:
```bash
_deferred_load() {
# ... existing code ...
# Python project templates
[[ -f "$_dotfiles_dir/zsh/functions/python-templates.zsh" ]] && \
source "$_dotfiles_dir/zsh/functions/python-templates.zsh"
# SSH Session Manager
[[ -f "$_dotfiles_dir/zsh/functions/ssh-manager.zsh" ]] && \
source "$_dotfiles_dir/zsh/functions/ssh-manager.zsh"
# Tmux Workspace Manager
[[ -f "$_dotfiles_dir/zsh/functions/tmux-workspaces.zsh" ]] && \
source "$_dotfiles_dir/zsh/functions/tmux-workspaces.zsh"
}
```
### 2. Reload Shell
```bash
source ~/.zshrc
# or
exec zsh
```
---
## Usage Examples
### Python Templates
**Basic project:**
```bash
py-new myproject
cd myproject
source venv/bin/activate
```
**Django:**
```bash
py-django myblog
cd myblog
source venv/bin/activate
python manage.py runserver
```
**Data Science:**
```bash
py-data analysis
cd analysis
source venv/bin/activate
jupyter notebook
```
### SSH + Tmux Workflow
**Save and connect:**
```bash
# Save connection
ssh-save prod user@prod.example.com 22 ~/.ssh/prod_key
# Connect (auto-attaches to tmux)
ssh-connect prod
```
**Multi-server monitoring:**
```bash
# Create workspace
tw-create monitoring ssh-multi
# In each pane, connect to different server
# Enable sync to run commands on all
tw-sync
```
### Tmux Workspaces
**Quick project setup:**
```bash
# One command creates workspace with dev template
tw myproject
# Panes ready:
# 1. Vim/editor
# 2. Terminal
# 3. Logs
```
**Custom workflow:**
```bash
# Create with specific template
tw-create backend ops
# Save current layout for reuse
tw-save my-custom-template
```
---
## Testing Checklist
- [ ] Python templates create correct structure
- [ ] Virtual environments activate properly
- [ ] SSH profiles save and load correctly
- [ ] SSH auto-tmux attachment works on remote
- [ ] Tmux templates create expected layouts
- [ ] Workspace persistence across sessions
- [ ] Fuzzy search works (requires fzf)
- [ ] `stats` alias is removed
- [ ] `dfstats` still works correctly
- [ ] All new aliases function properly
---
## Documentation Updates
### Created
- `docs/SSH_TMUX_INTEGRATION.md` - Complete guide for SSH and Tmux features
### Update Needed
- `README.md` - Add Python Templates, SSH Manager, and Tmux Workspaces sections
- `README.md` - Update aliases table (remove `stats`)
- `SETUP_GUIDE.md` - Add integration instructions
- `SETUP_GUIDE.md` - Document configuration options
---
## Future Enhancements (v1.3.0)
### Python Templates
- Add `py-test` template for testing frameworks
- Add `py-package` for PyPI package development
- Add `py-ml` for ML projects with more ML tools
- Interactive template customization wizard
- Pyenv integration for version management
- GitHub Actions workflow templates
- Docker support for projects
### SSH & Tmux
- SSH connection health monitoring
- Auto-reconnect on network drop
- Tmux session backup/restore
- Remote tmux session discovery
- Multi-hop SSH connections
- SSH tunnel management
- Tmux plugin recommendations
---
## Known Issues
None reported yet.
---
## Credits
- SSH Manager: Inspired by SSH config management tools
- Tmux Workspaces: Inspired by tmuxinator and teamocil
- Python Templates: Best practices from Python community
---
## Upgrade Notes
This is a **minor version** update with new features. No breaking changes except the intentional removal of the `stats` alias.
**Recommended upgrade path:**
1. Pull latest dotfiles
2. Review new configuration options in `dotfiles.conf`
3. Add integration code to `.zshrc` (see above)
4. Reload shell
5. Test new features
**Optional:**
- Customize Python template settings
- Set up SSH profiles for your servers
- Create custom tmux templates