Compare commits

...
Author SHA1 Message Date
brother7 dd8fbb3538 docs: finalize AI design session freeze promotion
Electron E2E / Electron E2E (macos-latest) (push) Has been cancelled
Electron E2E / Electron E2E (ubuntu-latest) (push) Has been cancelled
Electron E2E / Electron E2E (windows-latest) (push) Has been cancelled
2026-08-19 00:44:34 +08:00
brother7 803e3d8173 docs: finalize integration verification 2026-08-19 00:36:32 +08:00
brother7 d2c9a225e8 docs: record AI design session freeze integration 2026-08-19 00:36:09 +08:00
brother7 64785910aa merge: integrate AI design session freeze fix 2026-08-19 00:32:17 +08:00
brother7 3a6d3888e8 fix: prevent duplicate AI design stream reconnects 2026-08-19 00:31:04 +08:00
5 changed files with 99 additions and 1 deletions

No files matched your search

@@ -4,6 +4,7 @@ This file is the integrated default-branch snapshot. Feature tasks record progre
## Integrated Through
- `6478591` / `3a6d388`: AI Canvas task-stream reconciliation now reuses an in-flight `connecting` Conversation stream instead of opening a duplicate; rapid Conversation-switching regression coverage is present. Canonical `main` promotion is pending release of the occupied main worktree, and real slow-handshake Electron smoke remains pending.
- `ce897f1` / `6504073`: AI Programming now isolates prompt lifecycle, loading and errors by OpenCode Session. Main serializes only runtime/configuration acceptance, verifies project Agent content against an owned fresh runtime generation before execution, and returns typed terminal pending responses without automatically restarting, reloading or disposing the shared runtime. A run that receives no explicit busy/assistant/terminal acknowledgement within 10 seconds ends only that Session and is never replayed automatically. The application-side isolation is verified; real bundled OpenCode/provider two-Session execution concurrency is not claimed.
- Project-cover source commit `145a6ce571d646325092d1e722282babea503954` from feature task `20260817-project-cover-upload-a6a98e56`, integrated by task `20260813-sync-push-main-9c2f71`. First submission now requires a bounded PNG/JPEG/WebP cover, shows preview/file/reselect feedback, and sends metadata plus cover through Main-owned `POST /api/projects/with-cover`; conflicts stop before version upload and existing draft/published projects remain version-only. The matching Works Square server source is `407c883` (local merge `0cedfc4`). No client package, production deployment, or real-account smoke occurred.
- `3b37ac3` / `55e61b7`: macOS Robot hotspot discovery performs one bounded worker-thread rescan after an empty or SSID-redacted CoreWLAN result; persistent SSID redaction maps to the existing permission error instead of a misleading empty-device state, while firmware and the open `Xiaozhi-*` contract remain unchanged.
@@ -0,0 +1,43 @@
# Task: Finalize AI design session freeze promotion
## Identity
- Task ID: 20260819-finalize-session-freeze-9d4a
- Mode: Integration
- Branch: main
- Worktree: D:\Datas\OthersProjects\makelore
- Base commit: 803e3d81739ae856d2a3a77496e4b71af8a06842
- Owner: codex-root
- Status: Ready for integration
## Scope
- Finalize the user-authorized promotion of the reviewed AI Design rapid Conversation-switching fix, already present at canonical `main` `803e3d8`.
- Record the completed promotion and its canonical verification without changing product behavior or rewriting existing history.
## Intent And Constraints
- Operate in an exclusively owned Integration Gate worktree with the integration lock.
- Keep the source feature task and prior integration task records read-only; this task records only the final promotion evidence.
- Leave `main` clean and ahead of `origin/main` by the intended local integration commits; publishing remains a separate release action.
## Outcome
- `main` was fast-forwarded from `31332f6` to `803e3d8` after explicit user authorization to take over the clean worktree. No existing commit was reset, overwritten, or conflicted.
## Verification
- `check_project_docs.py --target .` passed before promotion.
- `git merge-base --is-ancestor 31332f6 803e3d8` passed and `git merge --ff-only 803e3d8` completed successfully.
- Canonical `main`: `tests/unit/image-workspace-store.test.ts` 31/31; `tests/unit/image-canvas-page.test.tsx` plus `tests/unit/works-square-design-workspace.test.ts` 79/79; scoped ESLint; TypeScript `--noEmit` all passed.
- Existing React `act(...)` warnings appeared in the adjacent Canvas test and did not fail the suite.
- Final task-aware documentation drift, `git diff --check`, and clean-worktree checks will run after this record is committed.
## Follow-ups
- Run the real logged-in Electron slow-handshake Conversation-switching smoke from the source task; local tests do not claim production gateway behavior.
- Publish local `main` commits through the normal repository review/release process when desired.
## Promotion Candidates
- None. The reviewed fix is now present on canonical `main` and restores the existing stream-lifecycle invariant.
@@ -0,0 +1,40 @@
# Task: Integrate AI design session freeze fix
## Identity
- Task ID: 20260819-integrate-session-freeze-7c4e
- Mode: Integration
- Branch: codex/20260819-integrate-session-freeze-7c4e-integrate-session-freeze
- Worktree: D:\mk-merge-session-freeze-4c2e
- Base commit: 31332f6d766bd3733e6fbb9c07688765368c2fa0
- Owner: codex
- Status: Ready for integration
## Scope
- Integrate the reviewed client fix from feature task `20260819-makelore-session-freeze-7c4e` (`3a6d388`) into the client `main` base `31332f6`.
- Preserve the peer task `20260818-video-duration-server-config-7b4e` and its occupied canonical worktree; do not rewrite `main` or any unrelated source.
## Intent And Constraints
- Merge only the reviewed feature commit with a non-fast-forward integration commit; no reset, force update, stash, or destructive cleanup.
- Keep the feature task record immutable and record integration evidence only in this integration task and the canonical `current-state.md`.
- Leave the integration branch ready for promotion once the canonical `main` worktree is released by its owner.
## Outcome
- Created merge commit `6478591` (`merge: integrate AI design session freeze fix`) with no conflicts. The final integration snapshot keeps the `connecting`-stream reconciliation fix in `src/stores/image-workspace.ts` and its regression test in `tests/unit/image-workspace-store.test.ts`; the source task record remains owned by the feature branch and is not promoted into the canonical tree.
## Verification
- Source worktree verification recorded by the feature task passed: focused store tests 31/31, adjacent Canvas/workspace tests 78/78, scoped ESLint, TypeScript `--noEmit`, `git diff --check`, documentation drift, and independent Sol review PASS.
- Integration worktree rerun passed: store tests 31/31, adjacent Canvas/workspace tests 79/79, scoped ESLint, TypeScript `--noEmit`, `check_project_docs.py`, task-aware `check_doc_drift.py`, and `git diff --check`. The adjacent test suite emitted only its pre-existing React `act(...)` warnings.
## Follow-ups
- Canonical client `main` remains owned by `20260818-video-duration-server-config-7b4e`; after that task releases the worktree, promote `6478591` to `main` and rerun the focused verification on the canonical checkout.
- Perform a real Electron smoke with a deliberately slow event-stream handshake to cover the production timing boundary; this remains a follow-up from the feature task.
## Promotion Candidates
- `6478591` / `3a6d388`: update `current-state.md` under `Integrated Through` when the merge commit is promoted to canonical `main`.
+1 -1
View File
@@ -1026,7 +1026,7 @@ export const useImageWorkspaceStore = create<ImageWorkspaceState>((set, get) =>
const conversationId = get().activeConversationId;
const shouldReconcile = reconcileTaskStateOnNextConnect;
reconcileTaskStateOnNextConnect = false;
if (shouldReconcile && get().taskStreamState !== 'connected') {
if (shouldReconcile && get().taskStreamState === 'degraded') {
closeTaskEventSource();
}
if (workspaceId && conversationId) startTaskStream(workspaceId, conversationId);
+14
View File
@@ -385,6 +385,20 @@ describe('AI design task event store', () => {
.toEqual(['继续优化海报', '已完成最新方向整理。']);
});
it('keeps the in-flight stream connection when reconciliation is requested', async () => {
const pendingSource = deferred<EventSource>();
openImageWorkspaceTaskEventsMock.mockReturnValue(pendingSource.promise);
await useImageWorkspaceStore.getState().load();
expect(useImageWorkspaceStore.getState().taskStreamState).toBe('connecting');
expect(openImageWorkspaceTaskEventsMock).toHaveBeenCalledOnce();
useImageWorkspaceStore.getState().markTaskStreamNeedsReconciliation();
useImageWorkspaceStore.getState().connectTaskStream();
expect(openImageWorkspaceTaskEventsMock).toHaveBeenCalledOnce();
});
it('recovers a committed generation task when the Agent Run fails afterward', async () => {
const source = new MockEventSource();
openImageWorkspaceTaskEventsMock.mockResolvedValue(source as unknown as EventSource);