You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .github/pull_request_template.md
+24-3Lines changed: 24 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -38,14 +38,35 @@ Detail the steps to test your changes. This helps reviewers verify your work.
38
38
-[ ]**Scope**: My changes are focused on the linked issue (one major feature/fix per PR).
39
39
-[ ]**Self-Review**: I have performed a thorough self-review of my code.
40
40
-[ ]**Testing**: New and/or updated tests have been added to cover my changes (if applicable).
41
+
-[ ]**Visual Snapshot** (UI changes only): If a user would notice this change at a glance (layout, theme tokens, brand elements, empty/error states), I've added or updated a `*.visual.tsx` snapshot in `webview-ui/`. See `webview-ui/AGENTS.md` → "When a UI change needs a snapshot".
41
42
-[ ]**Documentation Impact**: I have considered if my changes require documentation updates (see "Documentation Updates" section below).
42
43
-[ ]**Contribution Guidelines**: I have read and agree to the [Contributor Guidelines](/CONTRIBUTING.md).
43
44
44
-
### Screenshots / Videos
45
+
### Visual Snapshots
45
46
46
47
<!--
47
-
For UI changes, please provide before-and-after screenshots or a short video of the *actual results*.
48
-
This greatly helps in understanding the visual impact of your changes.
48
+
For UI changes to static rendered state, the primary artifact is a committed
49
+
Playwright CT snapshot (`*.visual.tsx` in `webview-ui/`) — that baseline
50
+
becomes durable regression coverage for the surface. See
51
+
`webview-ui/AGENTS.md` for what deserves a snapshot.
52
+
53
+
Before/after screenshots pasted here are welcome as a review aid but are not a
54
+
substitute for the committed baseline. If a snapshot is possible, prefer the
55
+
snapshot.
56
+
-->
57
+
58
+
### Videos (interaction / animation only)
59
+
60
+
<!--
61
+
Snapshots cannot capture motion or multi-step flows. Attach a short screen
62
+
recording here when reviewers need to see:
63
+
- A new interactive flow (dropdown, form, dialog progression)
64
+
- Animation, transition, or timing behavior
65
+
- A regression that only manifests during interaction
66
+
67
+
Videos are a review aid, not regression coverage. If the *result* of the
68
+
interaction has a distinct rendered state worth protecting, still commit a
69
+
`*.visual.tsx` snapshot of that end-state alongside the video.
Copy file name to clipboardExpand all lines: AGENTS.md
+12Lines changed: 12 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,6 +5,18 @@ This file provides guidance to agents when working with code in this repository.
5
5
- Settings View Pattern: When working on `SettingsView`, inputs must bind to the local `cachedState`, NOT the live `useExtensionState()`. The `cachedState` acts as a buffer for user edits, isolating them from the `ContextProxy` source-of-truth until the user explicitly clicks "Save". Wiring inputs directly to the live state causes race conditions.
6
6
- Changesets: Do NOT create `.changeset` files for each commit or code change. Changesets are managed separately by maintainers and should not be generated by agents during normal development.
7
7
8
+
## ESLint Suppressions
9
+
10
+
`src/eslint-suppressions.json` tracks per-file counts of suppressed lint rules. Suppression counts must never increase. When touching a file, prefer reducing its count when the fix is local and low-risk; avoid broad unrelated cleanup.
11
+
12
+
When writing new code:
13
+
14
+
- Fix lint violations in the new code rather than suppressing them.
15
+
- Avoid `as any`; use typed APIs directly (e.g. `RooCodeEventName.X` constants with typed `on()`/`listenerCount()`), or bracket notation (`obj["privateField"]`) to access private members. Prefer precise test doubles or `unknown` with a type guard over double assertions (`as unknown as T`); use double assertions only as a last resort, with a comment explaining why.
16
+
- Avoid floating promises; add `void`, `await`, or `.catch()` as appropriate.
17
+
- After editing a file, run `pnpm --dir src exec eslint --prune-suppressions --max-warnings=0 <relative-file>` and confirm the count for that file did not increase.
18
+
- If a suppression is truly unavoidable (e.g. `vi.spyOn(Cls.prototype as any, "privateMethod")` where no typed alternative exists), document why in a comment next to the cast.
19
+
8
20
## Test Placement Guidance
9
21
10
22
Prefer the narrowest test layer that proves the behavior. This follows standard test-pyramid guidance: keep most coverage in fast, focused tests; add integration tests for cross-module contracts; reserve end-to-end tests for full workflow confidence.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+27Lines changed: 27 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,32 @@
1
1
# Zoo Code Changelog
2
2
3
+
## [3.72.0]
4
+
5
+
### Minor Changes
6
+
7
+
- Add the Moonshot provider with live model discovery, streaming, model metadata, and a model picker (PR #857 by @grizmin)
8
+
- Add the Kimi Code provider with OAuth device-flow authentication (PR #945 by @taltas)
9
+
- Add Claude Opus 5 support across all providers (PR #1010 by @app/zoomote)
10
+
- Add Kimi K3 to the Moonshot and OpenCode Go providers (#932 by @navedmerchant, PR #996 by @app/zoomote)
11
+
- Add Gemini 3.6 Flash model support (PR #975 by @app/zoomote)
12
+
- Add MiniMax-M3 model support (#888 by @RayWinter0816, PR #946 by @app/zoomote)
13
+
- Add a safe way to abandon interrupted subtasks by severing stale parent-child links and surfacing delegation status (#559 by @edelauna, PR #935 by @edelauna)
14
+
- Add Dart support to codebase indexing (#940 by @WebMad, PR #941 by @WebMad)
15
+
- Fix codebase indexing for plain-text files (#931 by @tool-buddy, PR #938 by @WebMad)
16
+
- Enable image input for DeepSeek V4 models (#964 by @grizmin, PR #963 by @grizmin)
17
+
- Fix ChatGPT OAuth requests for GPT-5.6 Luna being rejected by the Codex backend (PR #889 by @taltas)
18
+
- Preserve `reasoning_content` for known reasoning model families when using LiteLLM (#891 by @daewoongoh, PR #899 by @daewoongoh)
19
+
- Fix task-history cache invalidation races by routing `invalidate()` and `invalidateAll()` through the task-history lock (#698 by @edelauna, PR #912 by @morgan-coded)
20
+
- Fix Settings mode changes by synchronizing the local `cachedState` editing buffer (#914 by @easonLiangWorldedtech, PR #925 by @easonLiangWorldedtech)
21
+
- Dismiss the welcome screen after successful Zoo Gateway sign-in (#961 by @JohnCanty, PR #962 by @JamesRobert20)
22
+
- Add `CompletePromptOptions` to the `completePrompt` API so callers can configure prompt completion (#615 by @edelauna, PR #901 by @easonLiangWorldedtech)
23
+
- Centralize provider identifiers into canonical shared types (#951 by @WebMad, PR #952 by @WebMad)
24
+
- Refactor provider categories to use canonical provider identifiers (PR #989 by @WebMad)
25
+
- Remove obsolete MCP server-creation translations (#895 by @edelauna, PR #943 by @WebMad)
26
+
- Add regression coverage for resuming interrupted subtasks (#566 by @myk1yt, PR #911 by @edelauna)
27
+
- Upload coverage reports as GitHub Actions artifacts to simplify CI debugging (PR #939 by @app/zoomote)
28
+
- Update `esbuild-wasm` to v0.28.1 (PR #829 by @app/renovate)
0 commit comments