Commit Graph

1022 Commits

Author SHA1 Message Date
Haitao Pan
c0063cbbbd chore: sync app version to 1.1.5 2026-06-28 18:48:48 +08:00
0225c34802 chore: update tested linux labels (#23)
Co-authored-by: Haitao Pan <haitao.pan@xworkmate.ai>
2026-06-28 15:54:29 +08:00
dd7a7fab5f Release/v1.1.5 (#25)
* ci: backport release/* source validation workflow to release/v1.1.5 (#21)

让现有 release/v1.1.5 分支自身包含门禁 workflow(pull_request_target 用 base 分支版本)。
详见 iac_modules/docs/tldr-github-branch-model.md

Co-authored-by: Haitao Pan <haitao.pan@xworkmate.ai>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

* fix: reveal artifact files without blocking (#24)

Co-authored-by: Haitao Pan <haitao.pan@xworkmate.ai>

---------

Co-authored-by: Haitao Pan <haitao.pan@xworkmate.ai>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 15:52:39 +08:00
91be1fed21 fix: reveal artifact files without blocking (#20)
Co-authored-by: Haitao Pan <haitao.pan@xworkmate.ai>
2026-06-28 15:19:11 +08:00
Haitao Pan
5793be1333 fix: reveal artifact files without blocking 2026-06-28 14:49:41 +08:00
2414d7eba0 ci: run desktop integration/patrol tests under xvfb (#22)
Headless Linux runners have no display, so 'flutter test integration_test'
fails to launch the GTK app ('The log reader stopped unexpectedly, or never
started'). Wrap integration/patrol layers in xvfb-run with a 24-bit screen
and install xvfb + mesa DRI driver for headless GL. macOS/local runs are
unaffected (no xvfb-run -> command runs directly).

Co-authored-by: Haitao Pan <haitao.pan@xworkmate.ai>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 14:46:00 +08:00
5909200fe3 ci: add release/* branch source validation workflow (#19)
release/* 仅接受 hotfix/* 或带 cherry-pick/backport 标签的 PR。
详见 iac_modules/docs/tldr-github-branch-model.md

Co-authored-by: Haitao Pan <haitao.pan@xworkmate.ai>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 12:12:10 +08:00
7f294ec866 Merge pull request #18 from ai-workspace-lab/release/v1.1.5
fix(artifacts): prioritize PDF deliverables in sidebar
2026-06-28 12:02:29 +08:00
56994b6c8f Merge pull request #17 from ai-workspace-lab/docs/gateway-turn-summary
docs(cases): add gateway turn acceptance summary
2026-06-28 11:30:03 +08:00
Haitao Pan
6f43a9270f docs(cases): add gateway turn acceptance summary 2026-06-28 11:29:28 +08:00
50bcf6d3d4 fix(artifacts): prioritize PDF deliverables in sidebar
Co-authored-by: Haitao Pan <haitao.pan@xworkmate.ai>
2026-06-28 11:27:41 +08:00
3a03aeaaf0 Merge pull request #15 from ai-workspace-lab/hotfix/pdf-sync-anomaly
fix(artifacts): prioritize PDF deliverables in sidebar
2026-06-28 10:56:15 +08:00
Haitao Pan
69da11d2e5 fix(artifacts): prioritize PDF deliverables in sidebar 2026-06-28 10:55:29 +08:00
Haitao Pan
dd7c15eed6 docs(runbooks): record gateway turn stability case 2026-06-27 12:44:40 +08:00
Haitao Pan
c882ccd8ce fix(gateway): keep polling undecorated running snapshots 2026-06-27 12:27:42 +08:00
Haitao Pan
e4218a80d6 fix(macos): close file selector type branch 2026-06-27 12:24:04 +08:00
Haitao Pan
414f902deb fix(prompt): simplify gateway workspace context to avoid conflicting paths (S5)
Every gateway turn's prompt prefix injected three near-duplicate absolute paths:
currentTaskWorkspace + localWorkspace + remoteWorkspaceHint. localWorkspace is the
App's LOCAL thread dir (~/.xworkmate/threads/...) which the gateway agent cannot
access, and remoteWorkspaceHint duplicates currentTaskWorkspace. The conflicting
paths leave the agent unsure where to work and can block conversation continuation.

For gateway turns the prompt now carries only currentTaskWorkspace (the plugin owns
the artifact scope); localWorkspace is kept only for non-gateway (local agent runs
there); remoteWorkspaceHint is dropped when equal to currentTaskWorkspace. sessionKey
is kept (short, not a path). UI is unaffected (chat bubble shows the raw user message;
the prompt-debug parser only special-cases Execution context / Preferred skills /
Attached files). Tests updated; assistant_execution_target_test green (74).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 12:15:27 +08:00
Haitao Pan
cfda503535 fix(artifacts): route signed downloads through active bridge 2026-06-27 12:15:17 +08:00
Haitao Pan
34ed59bf7f docs(cases/06): 4-layer chain full live evaluation — end-to-end PASS
Live-verified one gateway turn across all four layers against 8787 (bridge 188ca4b,
gateway 6 plugins): session.start → real plugin session.prepare mapping → chat.send
→ xworkmate.tasks.get returns status=completed, constraintSatisfied=True, and
summary.md (438B) actually landed in tasks/<sani(sessionKey)>/<runId>/ and is
retrievable via xworkmate.artifacts.export. All xworkmate.* gateway methods ✓.
T12 metrics all 0 (no resilience fallback needed). Supersedes the earlier
no_native_task_record observation, which was a derived symptom of the plugin not
being loaded (the S0 symlink root cause).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 12:08:13 +08:00
Haitao Pan
d897980a91 docs(gateway): map durable agent terminal recovery 2026-06-27 12:03:08 +08:00
Haitao Pan
fe7dcd1443 fix(macos): suppress file selector deprecation warning 2026-06-27 11:48:51 +08:00
Haitao Pan
f2e4dff02f docs(case06): reconcile TODO status + consolidated cross-repo stability backlog
- Flip stale §5 checkboxes (T1/T2/T3/T4/T6) to done with code anchors —
  they had lagged behind §2/§6 which already marked them merged.
- Add §9: authoritative full-chain status across all 4 repos' main
  (app/bridge/openclaw/playbooks HEADs), the completed stability closure,
  and the precise remaining backlog (S1 redo, S2 status ambiguity, T8b
  cross-restart persistence) with acceptance criteria + anti-regression
  recommendations.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 11:34:29 +08:00
Haitao Pan
9cd601ba82 docs(case06): close out acceptance log 2026-06-27 11:28:38 +08:00
Haitao Pan
d6ffef0b38 fix(gateway): harden OpenClaw polling and acceptance notes 2026-06-27 11:27:14 +08:00
Haitao Pan
980c7a042d docs(cases/06): mark S1 done — default expectedArtifactDirs (live-verified, bridge 0280893)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 06:34:32 +08:00
Haitao Pan
34a0fe2190 Merge: corrected 4-layer gateway-turn analysis + stable plugin install (docs/cases/06) 2026-06-27 06:19:53 +08:00
Haitao Pan
82ce8c98f7 docs(cases/06): S0 done — stable plugin install verified
Root cause of the plugin not loading was a symlink
~/.openclaw/extensions/openclaw-multi-session-plugins -> /tmp/... (ephemeral).
Replaced with a real dir, registered via `openclaw plugins install --force`,
restarted the gateway: now boots with "6 plugins ... openclaw-multi-session-plugins"
from the stable path, provenance warning gone, and xworkmate.session.prepare returns
the real plugin mapping (no bridge fallback). Survives restart.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 06:19:50 +08:00
Haitao Pan
3993f682be docs(cases/06): definitive 4-layer chain incl. multi-session plugin + live verification
Rewrites the timeline (§1) and topology (§2) as the correct FOUR-layer chain
App → bridge → openclaw-multi-session-plugins → OpenClaw gateway, and documents the
plugin's multi-session/multi-thread role: session mapping (appThreadKey⇄openclawSessionKey),
per-(session,run) artifactScope = tasks/<sanitize(sessionKey)>/<runId>, the strict
sessionKey/runId/artifactScope triplet validation, and the expectedArtifactDirs
workspace-root fallback scan.

Live-verified against 127.0.0.1:8787 (plugin loaded, commit 2333c3e):
- session.prepare returns a real mapping; chat.send returns runId; xworkmate.tasks.get
  is handled by the plugin but returns no_native_task_record with an empty task scope
  (chain reaches the plugin layer; the agent run produced no queryable task / no file —
  a layer-4 execution/landing issue).

Adds §7 stability improvements grounded in this live run:
- S0 install the plugin from a stable path (not /private/tmp) — the primary reliability fix.
- S1 expectedArtifactDirs was [] → the plugin's workspace-root fallback is inert; bridge
  should always pass default dirs (reports/, artifacts/).
- S2 no_native_task_record status ambiguity (running vs completed-without-artifact).
- S3 sessionKey/runId/artifactScope triplet consistency (don't pre-prefix agent:main:).
- S4 runtime observability across all four layers.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 23:18:04 +08:00
Haitao Pan
0dd8a05650 docs(cases/06): correct root cause — plugin not loaded, not protocol drift
Live verification disproved the earlier "xworkmate.* protocol namespace drift"
conclusion. The xworkmate.* gateway methods are REAL — registered at runtime by
the openclaw-multi-session-plugins plugin (index.ts registerGatewayMethod). The
actual failure: the running OpenClaw gateway did not load that plugin because its
source path was the ephemeral /private/tmp/openclaw-multi-session-plugins/... and
the gateway booted (09:21) ~9h before those files were populated (18:40), so it
started with 5 plugins (no multi-session) and every xworkmate.* returned
"unknown method". Restarting the gateway loads 6 plugins and the methods work
(errors shift to plugin-level param validation).

Changes:
- Add a corrected conclusion banner up top distinguishing the primary root cause
  (plugin load) from the T1-T9 robustness hardening.
- Replace the wrong "protocol drift / native alignment" section with the
  plugin-not-loaded root cause + evidence + the abandoned-branch note
  (fix/gateway-task-protocol-alignment must NOT be merged).
- Fix failure-row 10, T13 (runtime-state check now covers gateway plugin load),
  and the landing-order to put the plugin fix as step 0.
- Cross-reference openclaw-gateway-e2e-regression/ROOT_CAUSE_ANALYSIS.md (which
  was already correct about the 4-layer chain).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 23:08:01 +08:00
Haitao Pan
cf9cd8d680 docs(cases/06): record definitive root cause — xworkmate.* gateway protocol drift
Adds the 2026-06-26 decisive finding: the bridge forwards `xworkmate.*` method
names the OpenClaw 2026.6.2 gateway does not implement (it uses native
tasks.get/list/cancel and artifacts.list/get/download). Documents the corrected
end-to-end turn timeline with the three break points (tasks.get unknown method;
{taskId}-only param shape + taskId!=runId; artifacts.* drift blocking .md delivery),
the evidence (gateway source + schema + CHANGELOG), the implemented task-lifecycle
fix, and the precisely-specified remaining work (artifact-method alignment + test
fixture migration). Corrects the earlier (wrong) "push/pull mismatch" conclusion.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 20:38:33 +08:00
Haitao Pan
f67659b96b test: stabilize assistant gateway recovery cases 2026-06-26 20:01:31 +08:00
Haitao Pan
46d6729fec test: align gateway recovery expectations 2026-06-26 19:52:27 +08:00
Haitao Pan
4b1be99462 test: keep layered flutter tests aligned with repo 2026-06-26 19:39:14 +08:00
Haitao Pan
9d534aa10e ci: refresh app workflows for node 24 2026-06-26 19:27:30 +08:00
Haitao Pan
6c2e12a7e8 docs(cases): record local bridge runtime validation 2026-06-26 19:19:40 +08:00
Haitao Pan
016aa30704 docs(cases/06): mark T7/T8/T9 done with impl locations & design trade-offs
Records the durable per-session run-registry implementation (bridge branch
fix/gateway-durable-run-registry): T7 gateway-unconfirmed fallback, T8 terminal
result cache, T9 DeadlineAt interrupt — with the trade-offs (no gatewayruntime
pending-map rewrite; per-session in-memory store not yet cross-restart durable;
T9 only force-terminates when the gateway is unconfirmed) and the test names that
cover each.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 18:54:40 +08:00
Haitao Pan
e1940011b0 fix(gateway): harden OpenClaw task recovery tests 2026-06-26 18:30:34 +08:00
d07f507a7e Merge pull request #13 from ai-workspace-lab/fix/gateway-turn-stability-day1
fix(gateway): day-1 stability — stop infinite running & un-stoppable tasks
2026-06-26 17:56:36 +08:00
Haitao Pan
8c49197bf1 fix(gateway): day-1 stability — stop infinite "running" and un-stoppable tasks
Symptom: a gateway turn shows "任务运行中..." forever and 停止 has no effect,
even though the OpenClaw gateway has already finished (ACP_HTTP_CONNECTION_CLOSED).

- T3: add a hard deadline to the running-handle poll branch so the client no
  longer polls forever when tasks.get keeps returning "running". Budget is
  derived from taskLoadClass (10/30/60min, aligned with the bridge) + grace;
  on timeout the turn lands in a recoverable `interrupted` state
  (OPENCLAW_RUN_POLL_TIMEOUT) prompting the user to resend.
- T4: make 停止 locally authoritative — capture the association, mark the turn
  aborted immediately (clears pending, exits the poll loop), then fire
  tasks.cancel best-effort so a hung/failed cancel RPC can't block termination.
- T6: applyGatewayChatFailureInternal now authoritatively clears the pending
  flag (both raw + normalized key). Previously runOpenClawGatewayQueuedTurnInternal's
  finally never cleared it, leaving "error shown but still running".

Full cross-repo analysis + remaining TODO in docs/cases/06.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 10:48:45 +08:00
Haitao Pan
40d178b6f8 chore: update macOS deployment target to 14.0 and commit pending changes 2026-06-25 09:52:33 +08:00
Haitao Pan
c59b2d294f ci: move remote_contract to test gate between build and release
Reposition the remote provider contract check as a skippable test-stage
quality gate (needs: build, continue-on-error) so it can never block
build or release. release uses always() to wait without being gated.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 17:17:38 +08:00
Haitao Pan
42b82d7a97 chore: temporarily disable desktop ai workspace 2026-06-19 18:40:25 +08:00
Haitao Pan
95daa83a7a fix: support macos validation on bash 3 2026-06-18 17:27:05 +08:00
Haitao Pan
bf2dbe3807 fix: allow unsigned macos CI packaging 2026-06-18 17:16:13 +08:00
Haitao Pan
fea4895301 test: ignore transient cleanup races 2026-06-18 16:57:04 +08:00
Haitao Pan
61cb06c8ca fix: preserve primary bridge auth token 2026-06-18 10:01:19 +08:00
Haitao Pan
4f64998ef3 fix(settings): update account panel and assistant connection state 2026-06-17 21:01:56 +08:00
Haitao Pan
467fd8d3df feat: add explicit gateway task case hints for openclaw-gateway-e2e-regression 2026-06-17 16:00:54 +08:00
Haitao Pan
5627924f92 Merge release/v1.1.4 into main 2026-06-16 06:20:16 +08:00
Haitao Pan
7cd5555113 fix: prioritize managed bridge sync state 2026-06-16 06:20:13 +08:00