- Changed color definitions from '\033[...]' to $'\033[...]'
(actual escape bytes instead of literal strings)
- Replaced all display echo -e/echo -n/echo with printf
- Kept echo only for function return values and JSON output
- Fixes ANSI escape codes showing as raw text in list/inspect/monitor
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- ./winctl.sh stop all finds and stops all running containers
- Updated help, WINCTL_GUIDE.md, and readme.md
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Changed restart policy from unless-stopped to on-failure
so Windows shutdown stops the container instead of restarting
- Added RESTART_POLICY env variable to .env.modern and .env.legacy
- Compose files use ${RESTART_POLICY:-on-failure} for flexibility
- Updated WINCTL_GUIDE.md with restart policy documentation
- Updated readme.md with RESTART_POLICY setting
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Changed post-increment to pre-increment in cmd_monitor
((total_count++)) → ((++total_count)) to avoid set -e exit on ((0))
- Added invalidate_cache for accurate real-time status updates
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Changed USERNAME example from Docker to docker (lowercase)
- Added link to WINCTL_GUIDE.md for complete documentation
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove base-legacy.yml and base-modern.yml (YAML anchors don't work with include)
- Make all compose files self-contained
- Add .env.modern (8G RAM, 4 CPU) for Win 10/11, Server 2016+
- Add .env.legacy (2G RAM, 2 CPU) for older systems
- Update README and .env.example documentation
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace echo with printf '%b' in select_category and select_versions
to properly interpret ANSI escape sequences.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Cache container statuses in ~/.cache/winctl/status.json
- Auto-refresh if cache older than 7 days or data is stale
- Add 'refresh' command to force cache refresh
- Dramatically faster menus (single Docker call vs 44 calls)
- Bump version to 1.1.0
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Send menu prompts to stderr so they display in terminal
- Read user input from /dev/tty for proper interactive mode
- Add status cache to fetch all container states in one Docker call
- Handle interactive_select errors properly in all callers
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Use printf '%b' instead of cat heredoc to properly interpret
ANSI escape sequences in the show_usage function.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add winctl.sh with 12 commands for managing Windows Docker containers:
- start, stop, restart, status, logs, shell, stats
- build, rebuild, list, inspect, monitor, check
- Interactive menus, prerequisites checking, color output
- Support for 22 Windows versions across 4 categories
Multi-version compose structure:
- Split base.yml into base-modern.yml (8G) and base-legacy.yml (2G)
- Add .env.example for configuration
- Update all compose files to use env_file
- Add unique port mappings per version
- Update README with winctl.sh documentation
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add compose/ folder with modular compose files for all Windows versions
- Organize by category: desktop, legacy, server, tiny
- Create data/ subfolders for each version's storage
- Update .gitignore to track folder structure via .gitkeep files
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>