Commit Graph

93 Commits

Author SHA1 Message Date
Lucas Berger 1869cab358 fix(10-07): add timestamp to logs refresh to prevent message not modified error
- Format Inline Logs Result now adds timestamp to message
- Shows 'Updated: HH:MM:SS' at bottom of logs display
- Ensures Telegram API always accepts refresh (content always different)
2026-02-04 16:00:30 -05:00
Lucas Berger 77c3d6543d fix(10-07): add fuzzy matching to logs and fix chatId reference
- Send Logs Response now uses Prepare Text Logs Input for chatId
- Container logs sub-workflow uses .includes() for fuzzy matching
- Multiple match handling added with helpful error message
2026-02-04 16:00:07 -05:00
Lucas Berger 28f4c59d3f fix(10-07): fix batch action data chain reference
- Prepare Batch Action Input now uses Build Progress Message reference
- Fixes 'Cannot read properties of undefined' error for batch actions
- Data chain: Build Progress Message -> Edit Progress Message -> Prepare Batch Action Input
2026-02-04 15:59:33 -05:00
Lucas Berger 63a0019ccf fix(10-07): fix batch update data chain reference
- Prepare Batch Update Input now uses Build Progress Message reference
- Fixes 'Cannot read properties of undefined' error
- Data chain: Build Progress Message -> Edit Progress Message -> Prepare Batch Update Input
2026-02-04 15:59:05 -05:00
Lucas Berger 9d38bf9f51 fix(10-07): remove text update race condition
- Remove parallel Send Text Update Started connection
- Text updates now only send result via sub-workflow
- Fixes duplicate message issue (Updating... + already up to date)
2026-02-04 15:58:47 -05:00
Lucas Berger 57ca18f4d4 refactor(10-06): remove old batch inline path and modernize callbacks
- Update Build Batch Keyboard to use bexec: format instead of legacy JSON
- Update Build Suggestion Keyboard to use action: format instead of legacy JSON
- Remove 7 nodes from old batch inline execution path:
  - Build Batch Commands
  - Prepare Batch Execution
  - Execute Batch Action
  - Parse Batch Result
  - Format Batch Result
  - Send Batch Result
  - Answer Batch Query

Node count: 199 -> 192 (-7 nodes)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 15:07:05 -05:00
Lucas Berger 9799de9418 fix(10-06): deploy logs sub-workflow and wire to main
- Deploy Container Logs sub-workflow to n8n (ID: oE7aO2GhbksXDEIw)
- Replace TODO_DEPLOY_LOGS_WORKFLOW with actual workflow ID
- Update n8n-container-logs.json with deployed ID
- Redeploy all workflows to n8n

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 15:04:14 -05:00
Lucas Berger 1d420bd7dd fix(10-06): update logs sub-workflow placeholder
- Replace PLACEHOLDER_LOGS_ID with TODO_DEPLOY_LOGS_WORKFLOW
- Applies to Execute Text Logs and Execute Inline Logs nodes
- Clear marker indicates n8n-container-logs.json deployment required
- User must replace TODO with actual workflow ID after n8n import
2026-02-04 14:53:13 -05:00
Lucas Berger 807583dfff fix(10-06): fix batch actions routing to use sub-workflow
- Add exclusion condition to Route Callback rule 4 (isBatch)
- Rule now requires isBatch=true AND isBatchExec!=true
- Ensures batch execution callbacks route to Handle Batch Exec (output 17)
- Prevents bypass to old Build Batch Commands inline path (output 4)
2026-02-04 14:52:44 -05:00
Lucas Berger 6471dcecd6 feat(10-05): extract logs flow to Container Logs sub-workflow
Created n8n-container-logs.json:
- Execute Workflow Trigger entry point
- Parse and validate input (containerId/Name, lineCount, chatId, messageId)
- Query Docker to find container by name if needed
- Execute docker logs command
- Format output for Telegram (HTML escape, truncate, add header)
- Return success/message/containerName/lineCount

Updated main workflow:
- Add Prepare Text Logs Input (text command path)
- Add Execute Text Logs sub-workflow node
- Add Prepare Inline Logs Input (inline keyboard path)
- Add Execute Inline Logs sub-workflow node
- Add Format Inline Logs Result (adds keyboard)
- Remove 14 obsolete inline logs nodes
- Node count: 208 -> 199 (-9)

Sub-workflow has placeholder ID - will be updated after n8n import in Task 4.
2026-02-04 13:56:51 -05:00
Lucas Berger 89e459f96c feat(10-05): wire batch actions to Container Actions sub-workflow
- Add Prepare Batch Action Input node to format sub-workflow input
- Add Execute Batch Action Sub-workflow node calling Container Actions
- Add Handle Batch Action Result Sub node to process results
- Remove 7 obsolete inline action nodes:
  * Build Batch Action Command
  * Execute Batch Container Action
  * Check Batch Action Result
  * Needs Action Call
  * Execute Batch Action 2
  * Parse Batch Action 2
  * Handle Action Result
- Node count: 212 -> 208 (-4 net)

This eliminates duplicate action execution logic between single and batch paths.
2026-02-04 13:54:51 -05:00
Lucas Berger e4a7098e0d feat(10-05): wire batch update to Container Update sub-workflow
- Add Prepare Batch Update Input node to format sub-workflow input
- Add Execute Batch Update node calling Container Update sub-workflow
- Add Handle Batch Update Result node to process results
- Connect update path (output 0) in Route Batch Loop Action
- Node count: 209 -> 212 (+3)

This completes the batch update integration with the modular sub-workflow,
eliminating the need for duplicate update logic in the main workflow.
2026-02-04 13:54:18 -05:00
Lucas Berger 5337e17f21 fix(10): use resource locator format for Execute Workflow nodes
n8n typeVersion 1.2 requires workflowId as resource locator object:
  { "__rl": true, "mode": "list", "value": "<id>" }
not a plain string. This was causing "workflow not found" errors.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 13:33:51 -05:00
Lucas Berger fd31902a82 fix(10-03): update container actions workflow ID
Recreated Container Actions sub-workflow via API to fix
"workflow not found" error. New ID: fYSZS5PkH0VSEaT5

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 13:28:03 -05:00
Lucas Berger 40a05fe390 fix(10-02): hardcode sub-workflow IDs for self-hosted n8n
Self-hosted n8n doesn't support environment variables.
Replace $env references with actual workflow IDs:
- CONTAINER_UPDATE_WORKFLOW_ID → 7AvTzLtKXM2hZTio92_mC
- CONTAINER_ACTIONS_WORKFLOW_ID → xRRDIk19Gq57WECjtSy_j

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 13:20:00 -05:00
Lucas Berger d07932f69f feat(10-03): wire main workflow to use container-actions sub-workflow
- Added 9 nodes for sub-workflow integration
- Text path: Check Match Count -> Prepare Text Action Input -> Execute Container Action
- Inline path: Get Container For Action -> Prepare Inline Action Input -> Execute Inline Action
- Confirmed stop: Get Container For Stop -> Prepare Confirmed Stop Input -> Execute Confirmed Stop Action
- Confirmation dialogs remain in main workflow (stop, batch stop)
- Uses CONTAINER_ACTIONS_WORKFLOW_ID env var for sub-workflow reference
2026-02-04 13:10:14 -05:00
Lucas Berger d0b03b7159 feat(10-02): wire main workflow to use container-update sub-workflow
- Removed 54 duplicate update nodes from text and callback paths
- Added Execute Sub-workflow nodes for both update entry points
- Text path: Check Update Match Count -> Prepare Text Update Input -> Execute Text Update
- Callback path: Route Confirm Action -> Prepare Callback Update Input -> Execute Callback Update
- Workflow reduced from 246 to 200 nodes (-19%)
- Line count reduced from ~8485 to 7209 (-15%)

DEBT-03 (duplicated update flow) resolved - update logic now in one place
2026-02-04 13:08:37 -05:00
Lucas Berger f3bdd88c75 chore(10-01): remove 2 orphan nodes from workflow
Cleaned up orphan nodes before modularization:
- Removed "Answer Batch Exec" (httpRequest at [1340, 900])
- Removed "Batch Loop" (splitInBatches at [3100, -500])

Both nodes had no incoming connections and were vestigial
from earlier batch operation development that was replaced.

Node count: 248 -> 246
Deployed and verified working via n8n API.
2026-02-04 13:02:58 -05:00
Lucas Berger 5565334d94 fix(09-04): restore missing update route in Keyword Router
- Added missing connection for "update" rule (index 6)
- This shifted "logs" to correct index 7
- Both text-based update and logs commands now work

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 10:47:41 -05:00
Lucas Berger 7ee722418c fix(09-04): show Back to List for inline keyboard batch stop
- Add :kb marker to inline keyboard stop confirmation callback
- Parse Callback Data detects :kb and sets fromKeyboard: true
- Prepare Batch Stop Exec passes fromKeyboard through to batch state
- Summary now correctly shows Back to List for keyboard flows only

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 10:41:55 -05:00
Lucas Berger 850a507684 fix(09-04): hide Back to List button for text command batches
- Track fromKeyboard in batch state (true for callbacks, false for text)
- Pass fromKeyboard through entire batch loop chain
- Build Batch Summary only includes Back to List when fromKeyboard=true
- Send Batch Summary uses conditional reply_markup from input

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 10:33:46 -05:00
Lucas Berger 893a37e9c9 chore(09-04): defer batch Update to Phase 9.1
- Remove Update button from batch select (not implemented)
- Document in STATE.md: batch update needs sub-workflow modularization
- Batch Start and Stop work; Update requires complex 5-step sequence

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 10:24:08 -05:00
Lucas Berger 5a0d73cb98 fix(09-04): fix Delete Batch Select Message chatId reference
Reference Prepare Immediate Batch Exec directly for chatId/messageId
instead of $json which is the Telegram response from previous node.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 10:18:55 -05:00
Lucas Berger 36345b0de8 fix(09-04): fix batch Start from inline keyboard
Prepare Batch Exec now references Prepare Immediate Batch Exec directly
instead of relying on $json which gets overwritten by Delete Batch
Select Message. Also handles both 'action' and 'batchAction' field names.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 10:17:36 -05:00
Lucas Berger 20ec40336e fix(09-04): fix Clear button in batch select
- Add batchPage to Handle Batch Clear output
- Update Rebuild Batch Select Keyboard to also check Handle Batch Clear
  as data source

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 10:14:45 -05:00
Lucas Berger 660b969f6e feat(09-04): add Start button to batch select action row
Now shows Start, Stop, and Update buttons when containers are selected.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 10:13:36 -05:00
Lucas Berger ee4205d61d fix(09-04): show all containers in batch select (including stopped)
Changed Fetch Containers For Batch Mode and Fetch Containers For Toggle
Update to use all=true instead of all=false, so stopped containers
appear in the batch select list for batch start operations.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 10:12:12 -05:00
Lucas Berger ec9e0a07a4 fix(09-04): preserve selection when navigating batch select pages
- Add batch:nav callback type for page navigation with selection
- Parse batch:nav in Parse Callback Data
- Add route for isBatchNav in Route Callback switch
- Add Prepare Batch Nav node to format data for rebuild
- Update Rebuild Batch Select Keyboard to use batch:nav for navigation
- Now Previous/Next buttons preserve selected containers

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 10:02:31 -05:00
Lucas Berger 5ab66de4c2 fix(09-04): fix batch cancel routing and pagination after toggle
- Don't set isCancel:true for batch:cancel (was routing to wrong handler)
- Add page to batch:toggle callback format: batch:toggle:{page}:{selected}:{name}
- Parse page in Parse Callback Data for toggle callbacks
- Pass page through Handle Batch Toggle
- Add pagination to Rebuild Batch Select Keyboard (6 per page)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 09:57:57 -05:00
Lucas Berger 713fdaa00d feat(09-04): add pagination to batch select menu
- Parse Callback Data now handles batch:mode:{page} format
- Build Batch Select Keyboard uses 6 containers per page
- Added Previous/Next navigation buttons
- Shows "Showing X-Y of Z" count when paginated

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 09:52:36 -05:00
Lucas Berger 3192eb3ea0 fix(09-04): batch cancel returns to container list instead of deleting message
- Replace Delete Batch Cancel Message with Prepare Batch Cancel Return code node
- Connect Prepare Batch Cancel Return to Get Containers For List
- Update Build Paginated List to accept data from multiple sources
- Cancel now shows the container list instead of deleting the menu

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 09:51:18 -05:00
Lucas Berger ddbae3c54e fix(09-04): replace splitInBatches with manual loop for batch execution
- Route Batch Loop Action now references Build Progress Message node
- Build Batch Action Command references Build Progress Message node
- Prepare Batch Loop outputs single item with currentIndex for manual loop
- Prepare Next Iteration increments currentIndex and sets next container
- Is Batch Complete loops back to Build Progress Message instead of Batch Loop
- Bypasses problematic splitInBatches node that wasn't processing items

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 09:46:18 -05:00
Lucas Berger 7d6e683f87 feat(09-03): add update all and inline multi-select for batch operations
Task 1: Update All Command
- Detects 'update all' or 'updateall' in Keyword Router
- Fetches all containers and filters to :latest tag containers
- Shows confirmation with count and list (up to 10 displayed)
- On confirm: passes to batch execution infrastructure
- Shows 'All containers are up to date!' if no :latest containers
- 30-second timeout on confirmation

Task 2: Inline Multi-Select
- Added batch:mode callback to enter selection mode
- batch:toggle:{csv}:{name} for toggling container selection
- batch:exec:{action}:{csv} for executing batch actions
- batch:clear and batch:cancel for selection management
- Checkmarks show selected containers in keyboard
- Action buttons appear when selection exists
- Callback size limit enforced (max ~8 containers)
- Stop action requires confirmation (per existing batch flow)
- Update/start/restart execute immediately

Integration:
- Both flows connect to existing batch execution from 09-02
- Reuses batch loop and progress display infrastructure
2026-02-04 08:17:04 -05:00
Lucas Berger b704a6cff2 feat(09-02): add batch summary with failure emphasis
- Add Is Batch Complete IF node to check loop termination
- Add Build Batch Summary code node with failure-first format
- Add Send Batch Summary HTTP node with Back to List button
- Connect Is Batch Complete true output to summary flow
- Connect Is Batch Complete false output back to Batch Loop
- Summary shows failures with reasons prominently
- Warnings shown in detail (<=3) or summary (>3)
- Success count shown last
2026-02-03 21:33:28 -05:00
Lucas Berger fd4c614afd feat(09-02): add per-container progress updates and action execution
- Add Build Progress Message node for per-container status display
- Add Edit Progress Message to update Telegram with current progress
- Add Route Batch Loop Action switch for action-specific execution
- Add Build Batch Action Command with container lookup support
- Add Execute Batch Container Action with error handling
- Add Check Batch Action Result for lookup vs direct action
- Add Needs Action Call IF node for two-phase execution
- Add Execute Batch Action 2 for follow-up action calls
- Add Parse Batch Action 2 for result handling
- Add Handle Action Result to aggregate success/failure counts
- Add Prepare Next Iteration for loop continuation
- Add Prepare Batch Stop Exec for confirmed stop callbacks
- Add Prepare Batch Exec for bexec callbacks
- Connect Check Batch Stop Expired to execution flow
- Connect Answer Batch Exec to execution flow
2026-02-03 21:32:03 -05:00
Lucas Berger 62f50cb502 feat(09-02): add loop over items for sequential batch execution
- Add Initialize Batch State code node to prepare batch data
- Add Send Batch Start Message to show initial progress
- Add Prepare Batch Loop to format containers for iteration
- Add Batch Loop (splitInBatches) for sequential processing
- Connect Route Batch Action outputs (update/start/restart) to batch flow
2026-02-03 21:28:33 -05:00
Lucas Berger feea06c4c3 feat(09-01): wire batch routing and add batch stop confirmation
- Add "Route Batch Action" switch node (update/start/restart/stop)
- Add "Build Batch Stop Confirmation" code node with confirm/cancel keyboard
- Add "Send Batch Stop Confirmation" HTTP node
- Update Parse Callback Data to handle bstop: and bexec: prefixes
- Add Route Callback outputs for batch stop confirm/cancel/exec
- Add callback handler nodes for batch operations:
  - Answer Batch Stop Confirm with 30-second timeout check
  - Answer Batch Stop Cancel with message deletion
  - Answer Batch Exec for batch execution callbacks
- Add Check Batch Stop Expired with expiry message flow

Routing behavior:
- update/start/restart: route immediately to batch execution (Plan 02)
- stop: requires confirmation due to fuzzy matching risk
- Confirmation callback format: bstop:confirm:{names}:{timestamp}
- Cancel callback: bstop:cancel
2026-02-03 21:22:19 -05:00
Lucas Berger f02f98406c feat(09-01): add container matching with exact-match priority
- Add "Match Batch Containers" code node with exact-match-first algorithm
- Add "Needs Disambiguation" IF node to route ambiguous matches
- Add "Build Disambiguation Message" code node with inline keyboard
- Add "Send Disambiguation" HTTP node to display options
- Add "Has Not Found" IF node to handle missing containers
- Add "Build Not Found Message" code node with partial match confirmation
- Add "Send Not Found Message" HTTP node

Matching algorithm:
1. Exact match first: 'plex' matches 'plex' even if 'jellyplex' exists
2. Single fuzzy match: treated as found
3. Multiple fuzzy matches: triggers disambiguation with keyboard options
4. No matches: reported as not found with option to proceed with found containers
2026-02-03 21:19:01 -05:00
Lucas Berger 9e7ff2ab08 feat(09-01): add batch command detection and parsing
- Add "Detect Batch Command" code node to parse multi-container commands
- Add "Is Batch Command" IF node to route batch vs single container
- Add "Route Single Action" switch to route single commands to appropriate flow
- Add "Get Containers for Batch" node for Docker API container list
- Modify Keyword Router to route restart/start/stop/update through batch detection
- Single container commands route to existing Parse Action/Update Command flows
- Batch commands (2+ containers) route to new batch processing flow

Batch detection logic:
- Pattern: {action} {name1} {name2} ... where action is update/start/stop/restart
- Single container = not batch (existing flow)
- Two or more containers = batch (new flow)
2026-02-03 21:16:41 -05:00
Lucas Berger d1da276aa4 fix(08): resolve n8n deployment issues and clean up orphan nodes
Bug fixes:
- Fix array handling in Code nodes ($input.all() vs $input.item.json)
  - Build Logs Action Command
  - Build Confirmed Stop Command
  - Build Immediate Action Command
  - Find Container For Update
- Add timestamp to logs refresh to avoid "message not modified" error
- Add :latest tag protection to callback update flow
- Add image cleanup after callback updates

Cleanup:
- Remove orphan nodes: Parse and Match, Format Response, Send Docker Response
- Rename duplicate "Inspect New Image" to "Inspect New Image (Text)"
- Restore Compare Digests to fix text update command flow
- Add callback image cleanup nodes (Build Callback Remove Image, Callback Remove Old Image)

Both text commands and inline keyboard buttons now work correctly.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 20:31:20 -05:00
Lucas Berger 1331ee1331 wip(08): paused at verification checkpoint - workflow fixes in progress 2026-02-03 17:04:12 -05:00
Lucas Berger 127f176056 feat(08-03): enhance update progress with explicit button removal
- Update progress message uses upward arrow icon for update
- Add "This may take a few minutes" notice
- Explicitly pass empty inline_keyboard to remove buttons
- Prevents accidental duplicate action triggers during update

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 16:34:53 -05:00
Lucas Berger 3e11dea2ed feat(08-03): simplify completion messages to back-only button
- Update Format Immediate Result for start/restart actions
- Update Format Confirmed Stop Result for stop action
- Update Format Update Complete for update action
- Update Format No Update Needed for already-up-to-date case
- Success shows only "Back to Containers" button
- Errors show "Try Again" + "Back to Containers" buttons
- Removes action buttons from completion state per UX spec

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 16:34:10 -05:00
Lucas Berger ab7ce88792 feat(08-02): add confirmation flow for dangerous actions
- Update Parse Callback Data to handle confirm: and cancel: callbacks
- Add isConfirm and isCancelConfirm outputs to Route Callback switch
- Add 30-second timeout check for confirmations (timestamp in callback_data)
- Wire confirmed stop action to container stop flow with result display
- Wire confirmed update action to full update flow (pull, recreate, start)
- Handle cancel by returning to container submenu
- Show expired message when confirmation times out
- Progress indicator during update: "Updating..."

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 16:28:33 -05:00
Lucas Berger d1584197f8 feat(08-02): route action callbacks to container operations
- Add Answer Action Callback node to answer query immediately
- Add Route Action Type switch with start/restart/stop/update/logs outputs
- Wire start/restart to immediate action flow (Get Container, Build Command, Execute, Format Result)
- Wire logs to logs action flow with 30-line display
- Wire stop/update to confirmation dialog builders with 30s timeout
- All action results update message in-place with editMessageText

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 16:24:21 -05:00
Lucas Berger 393d368dec feat(08-01): handle list pagination callbacks
- Add Answer List Callback HTTP node (prevents loading indicator)
- Add Prepare List Fetch code node
- Add Get Containers For List HTTP Request node
- Add Build Paginated List code node (reuses keyboard logic)
- Add Edit Container List HTTP node (editMessageText for in-place updates)
- Wire Route Callback list output to pagination flow
- All page transitions use message edits (no new messages)
2026-02-03 16:18:50 -05:00
Lucas Berger 01482827fb feat(08-01): add container submenu with action buttons
- Update Parse Callback Data to recognize select:, list:, action:, noop formats
- Add Route Callback outputs: select, list, action, noop
- Add Answer Select Callback HTTP node (prevents loading indicator)
- Add Prepare Container Fetch code node
- Add Get Single Container HTTP Request node
- Add Build Container Submenu code node with state-based action buttons
- Add Send Container Submenu HTTP node (editMessageText for in-place updates)
- Add Answer Noop Callback for page indicator button
- Wire complete select flow: Route -> Answer -> Fetch -> Submenu -> Send
2026-02-03 16:17:38 -05:00
Lucas Berger f8d616e26d feat(08-01): add container list inline keyboard
- Add Build Container List Keyboard code node
- Add Send Container List HTTP Request node
- Add Check Single Container IF node for direct access routing
- Add Build Container Submenu Direct for /status <name> flow
- Add Send Container Submenu Direct HTTP Request
- Wire Keyword Router status -> Docker List -> Build Keyboard flow
- Running containers shown first with green icon
- Pagination support for >6 containers
2026-02-03 16:15:29 -05:00
Lucas Berger b02819434f fix(07-02): remove duplicate timeout on image pull
- Image pull had --max-time 600 --max-time 5 (second wins = 5s timeout)
- Removed duplicate, keeping 600s for large image pulls
- Added WEB-01 requirement for webhook fix in Phase 10
- Created 07-02-SUMMARY.md and 07-VERIFICATION.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 11:11:39 -05:00
Lucas Berger 5471feec25 fix(07-02): correct Telegram credential name and ID
- Change credential name from "Telegram API" to "Telegram account"
- Update credential ID from placeholder to actual n8n ID (I0xTTiASl7C1NZhJ)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 09:18:13 -05:00