diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 55f617a..43f3e6b 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -13,7 +13,7 @@ Plans: - [x] 01-01-PLAN.md — Space+rooms infrastructure (store helpers, handle_invite rewrite, room_router) - [x] 01-02-PLAN.md — Chat command handlers (!new, !archive, !rename) Space-aware -- [ ] 01-03-PLAN.md — Reaction removal + !yes/!no confirmation + settings dashboard +- [x] 01-03-PLAN.md — Reaction removal + !yes/!no confirmation + settings dashboard - [ ] 01-04-PLAN.md — Test suite (fix 4 broken + 12 new MAT-01..MAT-12) **Deliverables:** diff --git a/.planning/STATE.md b/.planning/STATE.md index 32f5b57..60d5d21 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -3,12 +3,12 @@ gsd_state_version: 1.0 milestone: v1.0 milestone_name: — Production-ready surfaces status: in_progress -last_updated: "2026-04-02T19:52:40.867Z" +last_updated: "2026-04-02T19:57:34.111Z" progress: total_phases: 3 completed_phases: 0 total_plans: 4 - completed_plans: 2 + completed_plans: 3 --- # State @@ -18,7 +18,7 @@ progress: See: .planning/PROJECT.md (updated 2026-04-02) **Core value:** Пользователь ведёт диалог с Lambda через любой мессенджер без изменения ядра -**Current focus:** Phase 01 — matrix-qa-polish (next: 01-03) +**Current focus:** Phase 01 — matrix-qa-polish (next: 01-04) ## Current Phase @@ -31,6 +31,8 @@ See: .planning/PROJECT.md (updated 2026-04-02) - Неизвестные Matrix rooms больше не auto-register в роутере; используется явный fallback `unregistered:{room_id}` с warning-логом (2026-04-02) - [Phase 01]: Use ChatContext.surface_ref as the Matrix room identifier for !rename updates. - [Phase 01]: Keep !archive limited to core archive state in Phase 1; Space child removal remains deferred. +- [Phase 01]: Matrix OutgoingUI no longer emits reactions; confirmation state is persisted and resumed via `!yes` / `!no`. +- [Phase 01]: `!settings` now renders a dashboard snapshot instead of advertising mutable subcommands. ## Blockers @@ -40,9 +42,11 @@ See: .planning/PROJECT.md (updated 2026-04-02) | Phase | Plan | Duration | Tasks | Files | Recorded | | --- | --- | --- | --- | --- | --- | +| 01 | 01 | 1 min | 3 | 3 | 2026-04-02T19:50:50Z | | 01 | 02 | 1 min | 2 | 2 | 2026-04-02 | +| 01 | 03 | 3 min | 2 | 5 | 2026-04-02T19:57:34Z | ## Session -- Last session: 2026-04-02T19:52:40Z -- Stopped at: Completed 01-02-PLAN.md +- Last session: 2026-04-02T19:57:34Z +- Stopped at: Completed 01-03-PLAN.md diff --git a/.planning/phases/01-matrix-qa-polish/01-03-SUMMARY.md b/.planning/phases/01-matrix-qa-polish/01-03-SUMMARY.md new file mode 100644 index 0000000..e7a9301 --- /dev/null +++ b/.planning/phases/01-matrix-qa-polish/01-03-SUMMARY.md @@ -0,0 +1,99 @@ +--- +phase: 01-matrix-qa-polish +plan: 03 +subsystem: matrix +tags: [matrix, confirmations, settings, text-ui] +requires: + - phase: 01-matrix-qa-polish + provides: Space-aware Matrix store and handler wiring from plans 01-01 and 01-02 +provides: + - Text-only Matrix confirmation flow via `!yes` and `!no` + - Pending confirmation persistence on `OutgoingUI` send + - Read-only Matrix `!settings` dashboard +affects: [matrix-adapter, matrix-tests, confirmation-flow] +tech-stack: + added: [] + patterns: [Matrix confirmation state stored per room, read-only settings dashboard rendering] +key-files: + created: [.planning/phases/01-matrix-qa-polish/01-03-SUMMARY.md] + modified: + - adapter/matrix/bot.py + - adapter/matrix/reactions.py + - adapter/matrix/handlers/confirm.py + - adapter/matrix/handlers/settings.py + - adapter/matrix/handlers/__init__.py +key-decisions: + - "Matrix OutgoingUI no longer emits reactions; confirmation state is persisted and resumed via `!yes` / `!no`." + - "`!settings` now renders a dashboard snapshot instead of advertising mutable subcommands." +patterns-established: + - "Matrix adapter keeps transport UX text-based when callback events are unavailable or unreliable." + - "Confirmation handlers are registered as closures when adapter state access is required." +requirements-completed: [] +duration: 3 min +completed: 2026-04-02 +--- + +# Phase 01 Plan 03: Reaction Removal Summary + +**Matrix confirmation prompts now render as plain text, persist pending state per room, and resolve through `!yes` / `!no` alongside a read-only settings dashboard.** + +## Performance + +- **Duration:** 3 min +- **Started:** 2026-04-02T19:53:30Z +- **Completed:** 2026-04-02T19:56:30Z +- **Tasks:** 2 +- **Files modified:** 5 + +## Accomplishments + +- Removed Matrix reaction event handling and reaction emission from the adapter send path. +- Stored pending confirmation metadata when `OutgoingUI` sends buttons, then resolved it through `!yes` / `!no`. +- Replaced the `!settings` command menu with a read-only dashboard showing skills, soul, safety, and active chats. + +## Task Commits + +Each task was committed atomically: + +1. **Task 1: Remove reactions from bot.py, update send_outgoing for !yes/!no** - `8a6a33a` (feat) +2. **Task 2: Update reactions.py text builders + confirm.py handlers + settings.py dashboard** - `01610ef` (feat) + +## Files Created/Modified + +- `adapter/matrix/bot.py` - Removed reaction callbacks and switched `OutgoingUI` delivery to text plus pending confirmation storage. +- `adapter/matrix/reactions.py` - Updated helper text to `!skill` and `!yes` / `!no`, removed reaction send helpers. +- `adapter/matrix/handlers/confirm.py` - Added closure-based confirm and cancel handlers backed by pending confirmation state. +- `adapter/matrix/handlers/settings.py` - Replaced the command list response with a read-only dashboard summary. +- `adapter/matrix/handlers/__init__.py` - Registered confirm and cancel handlers through store-aware factories. + +## Decisions Made + +- Removed Matrix reaction UX completely from adapter send and receive paths to match the phase requirement for command-driven confirmations. +- Kept confirmation state in the Matrix adapter store keyed by room so `!yes` and `!no` can work without protocol changes. +- Left the deeper settings subcommands in place, but made `!settings` itself a read-only overview as required by D-12. + +## Deviations from Plan + +None - plan executed exactly as written. + +## Issues Encountered + +None. + +## User Setup Required + +None - no external service configuration required. + +## Next Phase Readiness + +Plan `01-04` can now focus on Matrix test updates against the text-only confirmation and dashboard behavior. + +## Self-Check: PASSED + +- Found `.planning/phases/01-matrix-qa-polish/01-03-SUMMARY.md` +- Found commit `8a6a33a` +- Found commit `01610ef` + +--- +*Phase: 01-matrix-qa-polish* +*Completed: 2026-04-02*