chore: complete v1.2 milestone — archive and tag
Archive v1.2 Modularization & Polish milestone: - Archive ROADMAP.md, REQUIREMENTS.md, and audit to milestones/ - Evolve PROJECT.md with v1.2 validated requirements and decisions - Reorganize ROADMAP.md with collapsed milestone groupings - Delete REQUIREMENTS.md (fresh for next milestone) - Update STATE.md and MILESTONES.md Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
+36
-27
@@ -2,7 +2,7 @@
|
||||
|
||||
## What This Is
|
||||
|
||||
A Telegram bot that lets you manage Docker containers on your Unraid server via inline keyboard buttons and text commands. Control containers from your phone without needing to open a laptop — check status, view logs, start/stop/restart/update containers, batch operations on multiple containers at once.
|
||||
A Telegram bot that lets you manage Docker containers on your Unraid server via inline keyboard buttons and text commands. Built on a modular n8n sub-workflow architecture with 7 domain-specific sub-workflows. Control containers from your phone — check status, view logs, start/stop/restart/update containers, batch operations, and update all :latest containers at once.
|
||||
|
||||
## Core Value
|
||||
|
||||
@@ -30,16 +30,23 @@ When you get a container update notification or notice a service is down, you ca
|
||||
- ✓ Confirmation dialogs for dangerous actions (stop, update) — v1.1
|
||||
- ✓ Progress feedback during operations (message edits) — v1.1
|
||||
|
||||
**v1.2:**
|
||||
- ✓ Workflow modularization into 7 domain sub-workflows — v1.2
|
||||
- ✓ Sub-workflows callable from main without code duplication — v1.2
|
||||
- ✓ Update all :latest containers via text command ("update all") — v1.2
|
||||
- ✓ Update all :latest containers via inline keyboard button — v1.2
|
||||
- ✓ Bitmap-encoded batch selection (supports 50+ containers, eliminates 64-byte limit) — v1.2
|
||||
- ✓ Batch selection supports containers with long names — v1.2
|
||||
- ✓ Unraid update badge documented as known limitation — v1.2
|
||||
- ✓ Environment variable documentation (TELEGRAM_USERID, BOT_TOKEN) — v1.2
|
||||
- ✓ README documents proxy architecture and all v1.2 features — v1.2
|
||||
- ✓ Duplicate --max-time flags fixed — v1.2
|
||||
- ✓ Update flow consolidated (no duplicate logic) — v1.2
|
||||
- ✓ Correlation ID tracking across sub-workflow boundaries — v1.2
|
||||
|
||||
### Active
|
||||
|
||||
**Milestone v1.2: Modularization & Polish**
|
||||
|
||||
- [ ] Workflow modularization (break main workflow into sub-workflows)
|
||||
- [ ] Update all containers via text command and inline keyboard
|
||||
- [ ] Fix callback data limits (batch selection >2 containers, long names)
|
||||
- [ ] Unraid update sync (clear "update available" when bot updates container)
|
||||
- [ ] Environment variable audit (verify TELEGRAM_USERID/BOT_TOKEN necessity)
|
||||
- [ ] Documentation update (proxy architecture, new features)
|
||||
(No active requirements — define in next milestone)
|
||||
|
||||
### Out of Scope
|
||||
|
||||
@@ -47,14 +54,16 @@ When you get a container update notification or notice a service is down, you ca
|
||||
- Deploying new containers — manage existing only, not create new ones
|
||||
- Natural language understanding — simple keyword matching sufficient, Claude API adds complexity
|
||||
- Proactive monitoring/notifications — bot is reactive (you ask, it answers)
|
||||
- Resource queries — "what's using the most memory?" deferred to future version
|
||||
- Offline mode — real-time Docker API access is core to functionality
|
||||
- Ring buffer / persistent debug logging — n8n static data is execution-scoped, not workflow-scoped
|
||||
|
||||
## Current State
|
||||
|
||||
**Shipped:** v1.1 (2026-02-04)
|
||||
**Shipped:** v1.2 (2026-02-08)
|
||||
**Tech stack:** n8n workflow + Telegram Bot API + Docker socket proxy
|
||||
**Files:** n8n-workflow.json (~8,500 lines), README.md
|
||||
**Architecture:** tecnativa/docker-socket-proxy filters Docker API access
|
||||
**Architecture:** 1 main workflow (166 nodes) + 7 sub-workflows (121 nodes) = 287 total nodes
|
||||
**Files:** 8 workflow JSON files (10,987 LOC), README.md (264 lines), DEPLOY-SUBWORKFLOWS.md (725 lines)
|
||||
**Sub-workflows:** Update, Actions, Logs, Batch UI, Status, Confirmation, Matching
|
||||
|
||||
## Context
|
||||
|
||||
@@ -70,7 +79,13 @@ When you get a container update notification or notice a service is down, you ca
|
||||
- Matching: Keyword/substring with exact-match priority
|
||||
- Auth: Single user via Telegram ID
|
||||
- Logs: Configurable line count, default 50, max 1000
|
||||
- Callback data: 64-byte Telegram limit (affects batch/selection features)
|
||||
- Callback data: Bitmap encoding overcomes 64-byte Telegram limit
|
||||
- n8n static data: Execution-scoped only (no persistent cross-execution state)
|
||||
|
||||
**Known tech debt:**
|
||||
- 3 orphan nodes in main workflow (legacy dead code, unreachable)
|
||||
- Legacy batch parsers retained alongside bitmap parsers (graceful migration)
|
||||
- Phase 10.2 logging features descoped (n8n platform limitation)
|
||||
|
||||
## Key Decisions
|
||||
|
||||
@@ -92,18 +107,12 @@ When you get a container update notification or notice a service is down, you ca
|
||||
| Batch stop requires confirmation | Fuzzy matching risk for destructive operations | ✓ Good |
|
||||
| Two-phase batch execution | Callbacks have names but no IDs - need lookup | ✓ Good |
|
||||
| Update all filters to :latest | Performance optimization - full check would be slow | ✓ Good |
|
||||
|
||||
## Current Milestone: v1.2 Modularization & Polish
|
||||
|
||||
**Goal:** Modularize workflow for maintainability, add "update all" functionality, fix callback limits, and polish remaining issues.
|
||||
|
||||
**Target features:**
|
||||
- Workflow modularization into sub-workflows
|
||||
- "Update all" command (text and inline keyboard)
|
||||
- Callback data limit fix (batch selection, long names)
|
||||
- Unraid badge sync (UNR-01)
|
||||
- Environment audit (ENV-01, ENV-02)
|
||||
- Documentation overhaul (proxy architecture)
|
||||
| 7 domain sub-workflows | Clean boundaries: Update, Actions, Logs, Batch UI, Status, Confirmation, Matching | ✓ Good |
|
||||
| Bitmap-encoded batch callbacks | Base36 BigInt supports 50+ containers in 64-byte limit | ✓ Good |
|
||||
| Action-based sub-workflow routing | Sub-workflow returns action field, main routes to Telegram handlers | ✓ Good |
|
||||
| Correlation IDs without persistent logging | Timestamp+random string traces requests; ring buffer non-viable on n8n | ✓ Good |
|
||||
| Infrastructure container exclusion | Exclude n8n and socket-proxy from "update all" to prevent self-destruction | ✓ Good |
|
||||
| Document Unraid badge as limitation | Unraid API integration adds complexity for cosmetic issue | ✓ Good |
|
||||
|
||||
---
|
||||
*Last updated: 2026-02-04 after v1.1 milestone*
|
||||
*Last updated: 2026-02-08 after v1.2 milestone*
|
||||
|
||||
Reference in New Issue
Block a user