Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 27 additions & 1 deletion docs/open-collection-gap-analysis/AGENT_PROGRESS.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Status values: `Unclaimed`, `Claimed`, `In Progress`, `Review Ready`, `Blocked`,

| Role | Owner | Scope | Since | Current Focus |
| --- | --- | --- | --- | --- |
| Supervisor | Codex | Sanity-check completed tracks, run build/test/package/install verification, preserve GitButler branch hygiene, and append progress reports. | 2026-06-14 22:31 NZT | OC-160 complete after gRPC demo server startup, diagnostics, live smoke, package, and install verification. |
| Supervisor | Codex | Sanity-check completed tracks, run build/test/package/install verification, preserve GitButler branch hygiene, and append progress reports. | 2026-06-14 22:31 NZT | OC-170 complete after request action first-click reliability, full regression, package, and install verification. |

## Test Coverage Rules

Expand Down Expand Up @@ -74,6 +74,7 @@ Use full branch names for stacking existing branches with `but move <child-branc
| OC-140 | First-class WebSocket lifecycle UX | Done | Codex | `feature/oc-140-websocket-lifecycle-ux` (g0 after restack), stacked on `supervisor/add-websocket-lifecycle-task`; implementation commit `ec0f014`; supervisor/user follow-up commits `d2b93d4`, `1c918d5`, `401a82e`, `3bfc234`, and `b3ff548` | Satisfied by `test/webSocketSupport.test.ts` plus shared command, CodeLens, Copilot, editor, validation, round-trip, and demo regressions: persistent WebSocket sessions now expose connect/disconnect lifecycle operations through one fixed-width stateful editor button plus a separate send-message flow; retain session state and message history; surface editor controls/history, bottom status bar management, command palette/tree/CodeLens actions, and `missio_websocket_session`; route live send-tool WebSocket execution to lifecycle diagnostics; disconnect on editor/session cleanup; prefer freshly posted WebSocket lifecycle requests over stale debounced YAML; extract send-message payloads from the same resolved lifecycle request; keep Send styled as the primary request action; hide the HTTP-style response placeholder/body pane so WebSocket history fills the response area; show millisecond-precision history timestamps; and add local connect-only, repeated-send, and server-push fixtures. | `npm run compile` passed; `npx vitest run test/webSocketSupport.test.ts test/protocolLayoutStability.test.ts` passed 2 files/35 tests; `node scripts/validate-collection.js examples/demo-api` passed 47/47 files; live local WebSocket lifecycle smoke returned `LIVE_WS_LIFECYCLE_SMOKE ok`; `npm test` passed 25 files/465 tests; `npm run build` passed. | 2026-06-15 14:32 NZT | OC-140 complete. WebSocket lifecycle sessions are file-path scoped for editor/command flows, persist for that request until disconnect/close/editor disposal, and are intentionally not shared across separate request files. Preserve unrelated PDF.js media churn IDs `qp`/`ko`. |
| OC-150 | Runtime assertion variables and WebSocket runtime results UX | Done | Codex | feature/oc-150-runtime-assertion-variables, stacked on supervisor/add-runtime-assertion-variable-task; implementation commit `55dd694`; completion ledger commit `940a696`; acceptance rework commit `a2e63b4`; WebSocket runtime-tab follow-up commit `0cfc7f8`; lifecycle restyle follow-up commit `608eb19`; no-fill send follow-up commit `3e6cee0`; no-fill cancel follow-up commit `7f021ca` | Satisfied by `test/runtimeAuthoringUx.test.ts` for shared variable-aware assertion expression/value/description inputs and dynamic row overlays; `test/runtimeExecutionService.test.ts` for assertion expression/value/description interpolation, after-response script-produced assertion variables avoiding preflight prompts, deterministic unresolved assertion diagnostics, disabled assertions, and HTTP/GraphQL/WebSocket/gRPC runtime parity; `test/unresolvedVars.test.ts` for preserving request/auth preflight while deferring runtime assertion placeholders to runtime diagnostics; `test/webSocketSupport.test.ts` for WebSocket messages/history inside the existing response tab container plus visible runtime assertion/test/action results, theme-coloured no-fill lifecycle controls, blue no-fill Send controls, and red no-fill Cancel controls; `test/protocolLayoutStability.test.ts` for no HTTP response placeholder flash, no duplicate WebSocket response panel, Runtime tab visibility before WebSocket runtime results exist, and non-WebSocket response layout reset after WebSocket. | Rework verification passed: `npm run compile`; `npx vitest run test/runtimeAuthoringUx.test.ts test/runtimeExecutionService.test.ts test/unresolvedVars.test.ts test/webSocketSupport.test.ts test/protocolLayoutStability.test.ts test/responseProvider.test.ts test/sendRequestTool.test.ts` passed 7 files/91 tests; `node scripts/validate-collection.js examples/demo-api` passed 47/47 files; `npm test` passed 25 files/476 tests; `npm run build` passed. Follow-up verification passed: `npx vitest run test/protocolLayoutStability.test.ts test/webSocketSupport.test.ts` passed 2 files/40 tests; `npm run compile` passed; OC-150 matrix passed 7 files/92 tests; `node scripts/validate-collection.js examples/demo-api` passed 47/47 files; `npm run build` passed. Lifecycle restyle verification passed: `npx vitest run test/webSocketSupport.test.ts` passed 26 tests; `npm run compile` passed; `npx vitest run test/protocolLayoutStability.test.ts test/webSocketSupport.test.ts` passed 2 files/40 tests; `npm run build` passed. Send follow-up verification passed: `npx vitest run test/webSocketSupport.test.ts test/protocolLayoutStability.test.ts` passed 2 files/40 tests; `npm run compile` passed; `npm run build` passed. Cancel follow-up verification passed: `npx vitest run test/webSocketSupport.test.ts test/protocolLayoutStability.test.ts` passed 2 files/40 tests; `npm run compile` passed; `npm run build` passed. Supervisor install pass also packaged `C:\Users\chris\AppData\Local\Temp\missio-0.8.0-oc150-rework.vsix` and installed `missio.missio@0.8.0`. | 2026-06-15 16:43 NZT | OC-150 accepted after WebSocket runtime-tab, lifecycle style, send-button style, and cancel-button style follow-ups; no remaining OC-150 action. |
| OC-160 | gRPC demo server reliability | Done | Codex | `feature/oc-160-grpc-demo-server-reliability` (h0), parent of `feature/oc-170-request-action-first-click`; implementation commits `839c15d` and supervisor rework commit `96b5040` | Satisfied by `test/grpcSupport.test.ts` and demo fixture docs: reproduced the failing closed-port behavior through Missio execution when only `node examples/demo-api/server.js` is running; documented that gRPC requires the separate deterministic fixture `node examples/demo-api/grpc-server.js`; preserved demo guidance only in request-scoped README/server-log/folder/request docs; removed Missio-demo-specific hints from generic gRPC transport errors; kept raw gRPC diagnostics generic with status code, status name, details/message; and added automated live fixture smoke coverage for unary, metadata/defaults, server-streaming, client-streaming, bidirectional-streaming, deterministic error streaming, and runtime lifecycle demos using an isolated port override so tests do not depend on `localhost:50051` being closed. | Reproduction showed port `127.0.0.1:50051` closed before and after starting only `examples/demo-api/server.js`; the pre-fix Missio execution error was `UNAVAILABLE`/`ECONNREFUSED` without demo guidance. Rework verification passed: source search found no `localDemoFixtureHint`, `Missio gRPC demo fixture`, `x-missio-error-hint`, or generic hint plumbing in gRPC/request-execution/tool paths; focused OC-160 reliability tests passed 3 tests; `npx vitest run test/grpcSupport.test.ts` passed 22 tests; `node scripts/validate-collection.js examples/demo-api` passed 47/47 files; `npm run compile`; `npm test` passed 25 files/490 tests; `npm run build`; `npm run install:local` packaged `C:\Users\chris\AppData\Local\Temp\missio-0.8.0-local.vsix` and installed `missio.missio@0.8.0`. | 2026-06-15 18:03 NZT | OC-160 rework complete. Generic gRPC errors no longer mention the Missio demo fixture; demo start guidance remains in demo docs/logs/request descriptions. |
| OC-170 | Request action first-click reliability | Done | Codex | `feature/oc-170-request-action-first-click` (g0), stacked on `feature/oc-160-grpc-demo-server-reliability`; implementation commit `ad70f83`; completion ledger committed on the branch | Satisfied by `test/protocolLayoutStability.test.ts` and shared command/CodeLens/protocol suites: deterministic webview startup tests reproduce the focus-swallowed click class by dispatching first mouse-down activation without relying on a later click; first pointer and keyboard activations now fire exactly once for HTTP Send, GraphQL Send, gRPC Send, WebSocket Connect/Disconnect/Send Message, editor toolbar, command, and CodeLens routes; hydration/invalid YAML keep actions disabled with accessible state; mousedown+click sequences do not double-send; and first GraphQL activation posts the latest edited model. | `npx vitest run test/protocolLayoutStability.test.ts` passed 24 tests; `npx vitest run test/webSocketSupport.test.ts` passed 26 tests; focused matrix `npx vitest run test/protocolLayoutStability.test.ts test/webSocketSupport.test.ts test/requestTypeUx.test.ts test/graphqlSupport.test.ts test/grpcSupport.test.ts test/sendRequestTool.test.ts test/oc070SurfacePolish.test.ts test/openCollectionFoundation.test.ts` passed 8 files/115 tests; `npm run compile` passed; `npm test` passed 25 files/489 tests; `npm run build` passed; `npm run install:local` packaged `C:\Users\chris\AppData\Local\Temp\missio-0.8.0-local.vsix` and installed `missio.missio@0.8.0`. | 2026-06-15 17:25 NZT | OC-170 complete; no OC-170-owned changes remain uncommitted after the implementation and ledger closeout commits. |

## Dependency Map

Expand All @@ -96,6 +97,7 @@ Use full branch names for stacking existing branches with `but move <child-branc
| OC-140 | OC-020 WebSocket client/executor, OC-070 CodeLens/Copilot patterns, OC-080 WebSocket runtime lifecycle, OC-100 WebSocket editor identity, OC-130 request editor startup/layout if shared UI changes overlap | First-class WebSocket session lifecycle management |
| OC-150 | OC-040 runtime engine, OC-080 protocol runtime lifecycle, OC-110 runtime authoring UX, OC-130 layout stability, OC-140 WebSocket lifecycle UX | Runtime assertion variable parity, WebSocket runtime result discoverability, and WebSocket lifecycle button contrast |
| OC-160 | OC-030 gRPC unary/protobuf support, OC-080 gRPC runtime lifecycle, OC-090 gRPC streaming, local demo fixture conventions | Reliable user-facing gRPC demo startup and live verification |
| OC-170 | OC-100 request type UX, OC-130 protocol first paint/layout stability, OC-140 WebSocket lifecycle UX, shared request editor action wiring | Reliable first-click request actions after opening any protocol editor |

## Shared Decisions

Expand All @@ -109,6 +111,23 @@ Record cross-cutting decisions here so parallel agents do not rediscover them.

## Task Logs

### OC-170 Request Action First-Click Reliability

- 2026-06-15 17:14 NZT - Codex: Claimed OC-170 and recorded the coverage plan before implementation.
GitButler: created `feature/oc-170-request-action-first-click`; `but status -fv` showed existing OC-160 implementation committed on `feature/oc-160-grpc-demo-server-reliability` plus an unassigned ledger change that includes OC-160/OC-170 planning and must be split carefully at commit time.
Coverage: reproduce or concretely rule out the ignored first click after opening HTTP, GraphQL, WebSocket, and gRPC editors; add deterministic request webview startup/action-click tests for first pointer and keyboard activations; cover HTTP Send, GraphQL Send, gRPC Send, WebSocket Connect/Disconnect/Send Message, toolbar controls, CodeLens, command palette, hydration transitions, slow-ready disabled state, duplicate-listener prevention, latest editor model posting, accessibility labels/states, protocol-layout stability, and shared regressions; run focused protocol editor/command/CodeLens suites, compile, full test, build, package, and local install verification.
Changed: `docs/open-collection-gap-analysis/AGENT_PROGRESS.md`.
Verified: `but status -fv`, OC-170 task page, OC-100/OC-130/OC-140 context, and current ledger reviewed; implementation tests not run yet.
Next: inspect request panel host/webview startup and existing protocol tests, then reproduce the first-click action path with failing or ruling-out tests before patching implementation.

- 2026-06-15 17:25 NZT - Codex: Completed OC-170 request action first-click reliability.
GitButler: stacked `feature/oc-170-request-action-first-click` on `feature/oc-160-grpc-demo-server-reliability`; committed implementation/tests as `ad70f83` (`Fix request action first-click reliability`). `but status -fv` repeatedly warned `Could not find uncommitted file CLI id 'rols' in IdMap`, so owned implementation/test hunks from `but diff` (`q1,l1,m1,n1,o1,p1,i1,j1,k1,w1`) were committed directly; after `ad70f83`, only `AGENT_PROGRESS.md` remained unassigned for this ledger closeout.
Reproduced: the suspected first-focus activation loss is covered by JSDOM tests that dispatch first `mousedown` activation without a subsequent `click`; the old direct `click`-only primary action wiring would not fire on that path.
Fixed: primary request actions now start disabled/`aria-disabled` while hydrating or invalid, flip ready only after `requestLoaded` completes, use a shared first-activation binder for mousedown/click/Enter/Space, suppress the follow-up click after a handled mouse-down, and keep WebSocket connect/disconnect/send-message readiness in the same state machine.
Changed: `src/panels/requestPanel.ts`, `src/webview/requestPanel.ts`, `test/protocolLayoutStability.test.ts`, `test/webSocketSupport.test.ts`, and this ledger.
Verified: `npx vitest run test/protocolLayoutStability.test.ts` passed 24 tests; `npx vitest run test/webSocketSupport.test.ts` passed 26 tests; focused matrix `npx vitest run test/protocolLayoutStability.test.ts test/webSocketSupport.test.ts test/requestTypeUx.test.ts test/graphqlSupport.test.ts test/grpcSupport.test.ts test/sendRequestTool.test.ts test/oc070SurfacePolish.test.ts test/openCollectionFoundation.test.ts` passed 8 files/115 tests; `npm run compile` passed; `npm test` passed 25 files/489 tests; `npm run build` passed; `npm run install:local` packaged `C:\Users\chris\AppData\Local\Temp\missio-0.8.0-local.vsix` and installed `missio.missio@0.8.0`.
Next: OC-170 is complete and committed on `feature/oc-170-request-action-first-click`; no further action.

### OC-160 gRPC Demo Server Reliability

- 2026-06-15 17:01 NZT - Codex: Claimed OC-160 and recorded the coverage plan before implementation.
Expand Down Expand Up @@ -137,6 +156,13 @@ Record cross-cutting decisions here so parallel agents do not rediscover them.

### Supervisor Reports

- 2026-06-15 17:07 NZT - Codex Supervisor: Added OC-170 as a focused follow-up for request action first-click reliability after user reported Send/Connect-style buttons often require two clicks immediately after opening a request.
GitButler: planning branch `supervisor/add-request-action-first-click-task`, stacked on `supervisor/add-grpc-demo-server-reliability-task`; existing OC-160 unassigned changes in `AGENT_PROGRESS.md`, `src/services/grpcClient.ts`, and `test/grpcSupport.test.ts` are parallel work and must be preserved.
Coverage: OC-170 requires reproducing or ruling out the swallowed first click; auditing request editor startup, hydration, focus, event delegation, disabled/enabled state, and `postMessage` routing; automated first-click tests for HTTP, GraphQL, WebSocket, and gRPC primary actions; keyboard/accessibility coverage; shared protocol layout/command/CodeLens regressions; build, package, and local install verification.
Changed: `docs/open-collection-gap-analysis/tasks/17-request-action-first-click.md`, `docs/open-collection-gap-analysis/AGENT_GOAL_PROMPTS.md`, `docs/open-collection-gap-analysis/README.md`, and this ledger.
Verified: docs-only planning change; `rg "OC-170|first-click|request-action-first-click" docs/open-collection-gap-analysis` should confirm the task, prompt, task board, dependency map, and log references before commit.
Next: launch OC-170 after or alongside OC-160 with explicit coordination around `src/panels/requestPanel.ts`, `src/webview/requestPanel.ts`, `src/webview/requestPanel.css`, `src/commands/requestCommands.ts`, and protocol action tests.

- 2026-06-15 16:54 NZT - Codex Supervisor: Added OC-160 as a focused follow-up for gRPC demo server reliability after user reported all gRPC demo requests failing, likely because no local fixture is listening on `localhost:50051`.
GitButler: planning branch `supervisor/add-grpc-demo-server-reliability-task`; `but status -fv` was clean before the docs update.
Coverage: OC-160 requires reproducing the failure, aligning demo start commands/endpoints/proto paths, adding fixture-start smoke tests for gRPC demo requests, covering missing-fixture diagnostics, running demo collection validation, shared gRPC/runtime/tool/response/schema regressions, build, package, and local install.
Expand Down
4 changes: 2 additions & 2 deletions src/panels/requestPanel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -984,8 +984,8 @@ window.missioPdfJsReady = import('${pdfJsUri}')
<div class="url-input" id="url" contenteditable="true" spellcheck="false" data-placeholder="Loading request..."></div>
</div>
<button class="btn btn-toggle" id="varToggleBtn" title="Toggle resolved variables">{{}}</button>
<button class="btn btn-primary" id="sendBtn">Send</button>
<button class="btn btn-primary ws-lifecycle-btn ws-send-btn" id="wsSendBtn" style="display:none;" title="Send WebSocket message">Send</button>
<button class="btn btn-primary" id="sendBtn" type="button" disabled aria-disabled="true" title="Request editor is loading">Send</button>
<button class="btn btn-primary ws-lifecycle-btn ws-send-btn" id="wsSendBtn" type="button" style="display:none;" disabled aria-disabled="true" title="Request editor is loading">Send</button>
</div>

<div class="main-content">
Expand Down
Loading
Loading