|
5 | 5 |
|
6 | 6 | --- |
7 | 7 |
|
| 8 | +## 📅 Release Schedule |
| 9 | + |
| 10 | +### Eos v0.5 - EOFY 2026 (Target: June 30, 2026) |
| 11 | +**Focus**: Command structure standardization, secret manager refactoring, stability improvements |
| 12 | + |
| 13 | +**Key Deliverables**: |
| 14 | +- ✅ Flag-based command operations (Phase 1 complete - 2025-10-28) |
| 15 | +- 🔄 Secret manager architecture refactoring (Phases 1-3 complete, 4-6 in progress) |
| 16 | +- 🔄 Command structure migration (Phase 1 complete, Phase 2-3 in progress) |
| 17 | +- ⏳ Integration testing and documentation updates |
| 18 | + |
| 19 | +### Eos v2.0 - Q3 2026 (Target: ~December 2026) |
| 20 | +**Focus**: Breaking changes, deprecated pattern removal, major version bump |
| 21 | + |
| 22 | +**Key Deliverables**: |
| 23 | +- Remove deprecated subcommand syntax (`eos update [service] add` → `eos update [service] --add`) |
| 24 | +- Remove deprecated secret manager functions (`GetOrGenerateServiceSecrets` → `EnsureServiceSecrets`) |
| 25 | +- Shell completion updates (flag-based only) |
| 26 | +- Migration guide for v0.5 → v2.0 |
| 27 | + |
| 28 | +--- |
| 29 | + |
| 30 | +## 🚀 Command Structure Standardization (2025-10-28) |
| 31 | + |
| 32 | +### **Status**: Phase 1 Complete, Phase 2-3 In Progress |
| 33 | + |
| 34 | +**Goal**: Standardize all `eos update` commands to use flag-based operations instead of subcommands |
| 35 | + |
| 36 | +**Why**: Shorter syntax, better discoverability, consistency across all services (KVM, Vault already use this pattern) |
| 37 | + |
| 38 | +### Phase 1: Documentation & Soft Deprecation ✅ COMPLETE (2025-10-28) |
| 39 | + |
| 40 | +**Completed Work**: |
| 41 | +- ✅ Updated [CLAUDE.md](CLAUDE.md#L153-L170) with canonical command structure pattern |
| 42 | +- ✅ Added flag-based format: `eos [verb] [noun] --[operation] [target] [--flags...]` |
| 43 | +- ✅ Documented exception: CRUD verbs (start/stop/restart) stay positional |
| 44 | +- ✅ Added to anti-patterns table with clear examples |
| 45 | +- ✅ Deprecated `eos update hecate add [service]` subcommand ([cmd/update/hecate_add.go](cmd/update/hecate_add.go)) |
| 46 | +- ✅ Deprecated `eos update wazuh add [service]` subcommand ([cmd/update/wazuh.go](cmd/update/wazuh.go)) |
| 47 | +- ✅ Implemented hybrid pattern for Wazuh (both flag and subcommand work) |
| 48 | +- ✅ Added runtime deprecation warnings with clear migration guidance |
| 49 | +- ✅ Updated command help text with preferred syntax |
| 50 | + |
| 51 | +**User Impact**: None (both patterns work, users see warnings with migration path) |
| 52 | + |
| 53 | +**Examples**: |
| 54 | +```bash |
| 55 | +# PREFERRED (flag-based) |
| 56 | +eos update hecate --add bionicgpt --dns chat.example.com --upstream 100.64.0.1:8080 |
| 57 | +eos update wazuh --add authentik --wazuh-url https://wazuh.example.com |
| 58 | + |
| 59 | +# DEPRECATED (subcommand - warns but works) |
| 60 | +eos update hecate add bionicgpt --dns chat.example.com --upstream 100.64.0.1:8080 |
| 61 | +eos update wazuh add authentik --wazuh-url https://wazuh.example.com |
| 62 | +``` |
| 63 | + |
| 64 | +### Phase 2: Hard Deprecation (Target: ~August 2026 - 1 month after v0.5) |
| 65 | + |
| 66 | +**Planned Work**: |
| 67 | +- ⏳ Convert deprecation warnings to errors |
| 68 | +- ⏳ Update shell completion to only suggest flag-based syntax |
| 69 | +- ⏳ Add prominent notices in `eos --help` output |
| 70 | +- ⏳ Update all documentation (README, wiki, blog posts) |
| 71 | + |
| 72 | +**User Impact**: Subcommand syntax stops working, users forced to migrate |
| 73 | + |
| 74 | +### Phase 3: Removal (Target: v2.0 - Q3 2026, ~6 months after Phase 1) |
| 75 | + |
| 76 | +**Planned Work**: |
| 77 | +- ⏳ Delete `cmd/update/hecate_add.go` (118 lines) |
| 78 | +- ⏳ Delete `cmd/update/wazuh_add_authentik.go` (170 lines) |
| 79 | +- ⏳ Remove subcommand registration from parent commands |
| 80 | +- ⏳ Clean up telemetry tracking (`InvocationMethod` field no longer needed) |
| 81 | +- ⏳ Remove deprecated command aliases |
| 82 | +- ⏳ Update tests to only use flag-based syntax |
| 83 | + |
| 84 | +**User Impact**: Subcommand files removed, codebase simplified |
| 85 | + |
| 86 | +**Migration Support**: |
| 87 | +- 8-month deprecation timeline (soft warnings → hard errors → removal) |
| 88 | +- Clear error messages with remediation steps |
| 89 | +- Migration guide published at https://wiki.cybermonkey.net.au/eos-v2-migration |
| 90 | +- Both patterns work during entire v0.5 lifecycle (through June 2026) |
| 91 | + |
| 92 | +**Rationale for Flag-Based Pattern**: |
| 93 | +1. **Shorter**: `--add` vs `add [service]` saves 4 characters, clearer intent |
| 94 | +2. **Discoverable**: `--help` immediately shows available operations |
| 95 | +3. **Consistent**: Aligns with KVM (`--add`, `--enable`), Vault (`--fix`, `--unseal`) |
| 96 | +4. **Human-centric**: Reduces barriers to entry (CLAUDE.md philosophy) |
| 97 | +5. **Evidence-based**: Telemetry shows flag-based preference in existing commands |
| 98 | + |
| 99 | +**Affected Commands**: |
| 100 | +- `eos update hecate add [service]` → `eos update hecate --add [service]` |
| 101 | +- `eos update wazuh add [service]` → `eos update wazuh --add [service]` |
| 102 | +- Exception: `eos update services start/stop` (these are verbs, not operations) |
| 103 | + |
| 104 | +--- |
| 105 | + |
8 | 106 | ## 🎯 Current Focus: Secret Manager Architecture Refactoring |
9 | 107 |
|
10 | 108 | ### **Status**: Phase 1 Complete, Phase 2-3 In Progress |
@@ -1110,6 +1208,82 @@ If critical issues found: |
1110 | 1208 |
|
1111 | 1209 | ## Future Work (Deferred) |
1112 | 1210 |
|
| 1211 | +### Hecate Auto-Migration Command |
| 1212 | +
|
| 1213 | +**Status**: 📅 PLANNED |
| 1214 | +**Priority**: P2 (Quality-of-life improvement) |
| 1215 | +**Effort**: 3-4 hours |
| 1216 | +**Added**: 2025-10-28 |
| 1217 | +
|
| 1218 | +**Goal**: Auto-detect and fix outdated Hecate installations (missing port 2019 exposure in docker-compose.yml) |
| 1219 | +
|
| 1220 | +**Background**: |
| 1221 | +- Eos v1.X Hecate installations did not expose Caddy Admin API port 2019 |
| 1222 | +- Eos v2.0+ exposes port 2019 for zero-downtime config reloads via `eos update hecate --add` |
| 1223 | +- Current fallback: docker exec validation (zero-downtime, works on all installations) |
| 1224 | +- Future improvement: Automated migration for existing installations |
| 1225 | +
|
| 1226 | +**Current Workaround**: |
| 1227 | +Users can manually update `/opt/hecate/docker-compose.yml`: |
| 1228 | +```yaml |
| 1229 | +services: |
| 1230 | + caddy: |
| 1231 | + ports: |
| 1232 | + - "80:80" |
| 1233 | + - "443:443" |
| 1234 | + - "443:443/udp" |
| 1235 | + - "127.0.0.1:2019:2019" # Add this line |
| 1236 | +``` |
| 1237 | +Then restart: `cd /opt/hecate && docker-compose up -d` |
| 1238 | +
|
| 1239 | +**Planned Command**: |
| 1240 | +```bash |
| 1241 | +# Auto-detect and fix outdated Hecate installation |
| 1242 | +eos update hecate --fix-installation |
| 1243 | +
|
| 1244 | +# What it does: |
| 1245 | +1. Detect if port 2019 is exposed in docker-compose.yml |
| 1246 | +2. If not exposed: |
| 1247 | + - Backup current docker-compose.yml |
| 1248 | + - Update with new template (adds port 2019) |
| 1249 | + - Restart Hecate: docker-compose up -d |
| 1250 | + - Verify Admin API is accessible |
| 1251 | +3. If already exposed: report "already up-to-date" |
| 1252 | +``` |
| 1253 | +
|
| 1254 | +**Implementation Tasks**: |
| 1255 | +1. Create `pkg/hecate/migration.go`: |
| 1256 | + - `DetectPortExposure()` - Parse docker-compose.yml, check for "2019:2019" |
| 1257 | + - `BackupDockerCompose()` - Copy to `/opt/hecate/backups/docker-compose.yml.backup.TIMESTAMP` |
| 1258 | + - `UpdateDockerCompose()` - Inject port exposure using YAML parser (not string replacement) |
| 1259 | + - `RestartHecate()` - `docker-compose up -d` in `/opt/hecate` |
| 1260 | + - `VerifyAdminAPI()` - Check `http://localhost:2019/` responds |
| 1261 | +
|
| 1262 | +2. Add flag to `cmd/update/hecate.go`: |
| 1263 | + ```go |
| 1264 | + SecureHecateCmd.Flags().Bool("fix-installation", false, "Auto-migrate outdated Hecate installation") |
| 1265 | + ``` |
| 1266 | +
|
| 1267 | +3. Integration with existing validation: |
| 1268 | + - Preflight check detects missing port 2019 |
| 1269 | + - Suggests: `eos update hecate --fix-installation` |
| 1270 | + - Falls back to docker exec validation (current behavior) |
| 1271 | +
|
| 1272 | +**Benefits**: |
| 1273 | +- Zero-downtime migrations for existing installations |
| 1274 | +- Users get Admin API benefits without manual YAML editing |
| 1275 | +- Automated testing of installation state |
| 1276 | +
|
| 1277 | +**Risks**: |
| 1278 | +- YAML parsing complexity (use `gopkg.in/yaml.v3`) |
| 1279 | +- User-modified docker-compose.yml (detect with comment markers) |
| 1280 | +- Concurrent `docker-compose` operations (use file locking) |
| 1281 | +
|
| 1282 | +**Target Date**: TBD (after Phase 2 validation in production) |
| 1283 | +**Reference**: See [pkg/hecate/add/caddy.go](pkg/hecate/add/caddy.go) for current validation fallback logic |
| 1284 | +
|
| 1285 | +--- |
| 1286 | +
|
1113 | 1287 | ### BionicGPT Vault Integration |
1114 | 1288 |
|
1115 | 1289 | **Status**: 📅 DEFERRED - Current .env approach working |
@@ -1160,4 +1334,4 @@ Code: 403. Errors: |
1160 | 1334 | --- |
1161 | 1335 |
|
1162 | 1336 | **Last Updated**: 2025-10-28 by Henry |
1163 | | -**Next Review**: 2025-11-10 (Phase 5 completion) |
| 1337 | +**Next Review**: 2025-11-10 (Phase 5 completion, Command Structure Phase 2 planning) |
0 commit comments