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
We need a focused review of recent upstream anomalyco/opencode changes and decide which upstream PRs are worth selectively backporting into PawWork. The issue header originally said v1.14.17 through v1.14.22, but the actual PawWork sync baseline is v1.14.20 commit 3175a3c618, landed through issue #92 and PR #155. The current review window is v1.14.20..upstream/dev, 88 commits, with upstream dev at a4bd88ab97 on 2026-04-24.
Use GitHub issue/PR history and git log as the source of truth for prior upstream work. Local upstream sync docs are obsolete and should not be treated as current guidance. In particular, do not use docs/upstream-sync.md or docs/upstream_sync.md as source material.
What do you do today?
Today the upstream delta is checked manually from release notes, PRs, and tree diffs. This works for a quick scan, but it is easy to mix already absorbed fixes, small safe backports, large schema migrations, UI fork changes, TUI-only work, and upstream history rewrite artifacts. Upstream also rewrote dev history in this window, so do not rely only on a PR's GitHub mergeCommit.oid for ancestor checks or cherry-pick planning. Verify by PR number and current file content.
What would a good result look like?
A good result is a short implementation plan that ranks upstream PRs by PawWork value and integration risk, then opens small backport PRs only for the selected items. Each backport should keep one reversible intent, avoid PawWork frontend fork churn, and include focused verification for the touched surface.
Recommended execution shape after independent review:
Treat the Effect Schema migration as one coherent slice, starting from PawWork's post-PR refactor: sync opencode config schemas #102 tree rather than old v1.4.11 assumptions. Include the schema chain only if the slice compiles as a unit and updates PawWork-owned packages/opencode/src/tool/trash.ts plus packages/opencode/test/tool/trash.test.ts to the new tool framework. Keep PawWork tool description text files on the local side.
Allow disjoint small PRs to run before or alongside the schema slice when their touched files do not overlap. Good parallel candidates: anomalyco/opencode#19054, #24001 plus #24016, and #23791.
Put schema-adjacent small PRs after the slice unless the implementer proves the conflicts are cheaper the other way. These include #24063, #23797, #23770, and #23870.
Initial high-value candidates to re-check and likely backport:
anomalyco/opencode#19054: bare repo and worktree project cache fix. PawWork currently uses git rev-parse --git-common-dir, but still lacks the upstream core.bare handling and can write the cache under the wrong .git path for bare repositories. This is now ACCEPT rather than conditional.
anomalyco/opencode#24001 and #24016: respect project .npmrc for npm install and version lookup paths. PawWork's packages/opencode/src/npm/index.ts and packages/opencode/src/installation/index.ts currently have no .npmrc handling. Combine as one reversible npmrc PR.
anomalyco/opencode#23791: Bun 1.3.13 bump. PawWork is still on bun@1.3.11. Keep this as a discrete dependency PR, and do not import upstream packages/ui/src story changes.
anomalyco/opencode#23696: Kimi variant filtering. PawWork's ProviderTransform.variants(...) still runs after loading model data and PawWork overlays. Current code only filters k2p5 and only enables Anthropic Kimi thinking for k2p5, kimi-k2.5, or kimi-k2p5; upstream broadens this to k2p and kimi-k2.. Current snapshot includes kimi-for-coding with Anthropic k2p6, so this is user-visible. ACCEPT.
anomalyco/opencode#23735: Mistral Small reasoning variants. Current PawWork transform still returns no variants for all Mistral models, while current snapshot includes mistral-small-latest and mistral-small-2603 with reasoning enabled. Upstream adds the high reasoning effort variant for those models. ACCEPT.
anomalyco/opencode#23925: Codex model filtering logic. This does not go through ProviderTransform.variants; it affects Codex OAuth model filtering. Current PawWork allowlist keeps specific models and deletes the rest, while current snapshot already includes gpt-5.5. Upstream keeps future gpt > 5.4 models instead of filtering them out. ACCEPT.
anomalyco/opencode#24063: OpenAI Responses stream server_error should become retryable. PawWork's provider error path currently does not include this retry case. Likely high value, but it touches provider/session tests and should be checked against the schema slice.
anomalyco/opencode#23797: preserve UTF-8 BOM in write, edit, apply_patch, patch, and format round trips. Useful for Windows and existing user files, but it touches edit paths and overlaps with tool framework changes.
anomalyco/opencode#23770: configurable tool output truncation limits. Useful for advanced workflows where default output limits are too small or too large, but it touches config and tool plumbing.
anomalyco/opencode#23870: improved session compaction. Potentially valuable for long PawWork sessions, but higher risk because it touches core session behavior and message DTOs.
Large slice to plan separately:
Effect Schema migration chain: #23716, #23740, #23749, #23744, #23745, #23747, #23752, #23753, #23754, #23756, #23757, #23763, #23764, #24005, #24019, #24027, #24029, #24040, #24056, #23244, #24024, and #24054. The largest PawWork-specific risk is #23244, because PawWork's trash.ts is a local tool and must move from the old zod-based Tool.define shape to the new Effect Schema tool framework.
Resolved verification notes for the large slice:
PR refactor: sync opencode config schemas #102 partially seeded the schema base, but none of the checked commits is a full no-op. Keep #23716, #23740 plus #23749, #23744, #23753, and #23754 in the slice. Implement them against PawWork's post-PR refactor: sync opencode config schemas #102 tree rather than mechanically replaying upstream. Specific partial overlaps: PR refactor: sync opencode config schemas #102 already introduced a Schema.Struct based config shape and zod(...) walker usage, but upstream #23716 makes Config.Info itself the canonical Effect Schema with Info.zod; PR refactor: sync opencode config schemas #102 still leaves ConfigPermission.Info as a zod transform using ZodPreprocess, while #23740 moves it to Schema.decodeTo; PR refactor: sync opencode config schemas #102 did not migrate MessageV2.Format; provider and other schema leaves still hand-roll .zod in PawWork and should take #23753 plus #23754.
#23244 concrete local migration: change packages/opencode/src/tool/trash.ts from import z from "zod" and import { Tool } from "./tool" to import { Effect, Schema } from "effect" and import * as Tool from "./tool"; export Parameters = Schema.Struct({ path: Schema.String.annotate({ description: "The file or directory path to move to the system Trash" }) }); change execute params from z.infer<typeof Parameters> to Schema.Schema.Type<typeof Parameters>. packages/opencode/test/tool/trash.test.ts should mostly keep its current shape because Tool.InferParameters<typeof TrashTool> and info.init() still exist under the new framework.
#23244 does not move built-in tool descriptions into code. Upstream migrated tools still import ./write.txt style descriptions, so PawWork-owned packages/opencode/src/tool/*.txt files should stay on the local version during the slice.
Candidates that need more focused verification before final disposition:
anomalyco/opencode#23822: platform-specific Bun install flags. Upstream changes a reusable .github/actions/setup-bun/action.yml that PawWork does not have. Treat as DEFER unless PawWork release build logs show the same cross-platform install problem.
anomalyco/opencode#23806: avoid relaunching without installing updates. PawWork PR fix: harden updater stale pending handling #178 already moved install ownership into the Electron updater controller and skips install when no ready update exists. Do not direct-backport app-side API changes; only spec a tiny PawWork patch if a concrete relaunch-without-install gap remains.
Candidates to skip based on current evidence:
anomalyco/opencode#23808: Windows cross-spawn stderr race test. PawWork already has the same Effect.all(..., { concurrency: 2 }) fix in packages/opencode/test/effect/cross-spawn-spawner.test.ts.
anomalyco/opencode#23913: beta PR typecheck all packages. PawWork has no script/beta.ts, and .github/workflows/ci.yml already runs bun turbo typecheck on pull requests.
anomalyco/opencode#23652: log session SDK errors. This only touches upstream packages/app/src/context/global-sync.tsx, which is a PawWork frontend fork surface. PawWork PR fix: add session loop diagnostics #204 is a separate session diagnostics change, not the same patch.
TUI-only fixes, Linux desktop and Nix packaging updates, governance files, docs site and Zen console changes, and upstream app UI changes should be skipped by default unless a later PawWork issue gives a concrete product reason.
Which audience does this matter to most?
Both
Extra context
Checked on 2026-04-24. Upstream v1.14.20 tag is 3175a3c618, upstream v1.14.22 tag is 596145a71d, and upstream dev was a4bd88ab97. For prior PawWork upstream intake, start from GitHub issue #27, issue #92, PR #102, PR #140, PR #155, PR #178, PR #204, and current dev git history rather than local docs.
What task are you trying to do?
We need a focused review of recent upstream
anomalyco/opencodechanges and decide which upstream PRs are worth selectively backporting into PawWork. The issue header originally saidv1.14.17throughv1.14.22, but the actual PawWork sync baseline isv1.14.20commit3175a3c618, landed through issue #92 and PR #155. The current review window isv1.14.20..upstream/dev, 88 commits, with upstreamdevata4bd88ab97on 2026-04-24.Use GitHub issue/PR history and
git logas the source of truth for prior upstream work. Local upstream sync docs are obsolete and should not be treated as current guidance. In particular, do not usedocs/upstream-sync.mdordocs/upstream_sync.mdas source material.What do you do today?
Today the upstream delta is checked manually from release notes, PRs, and tree diffs. This works for a quick scan, but it is easy to mix already absorbed fixes, small safe backports, large schema migrations, UI fork changes, TUI-only work, and upstream history rewrite artifacts. Upstream also rewrote
devhistory in this window, so do not rely only on a PR's GitHubmergeCommit.oidfor ancestor checks or cherry-pick planning. Verify by PR number and current file content.What would a good result look like?
A good result is a short implementation plan that ranks upstream PRs by PawWork value and integration risk, then opens small backport PRs only for the selected items. Each backport should keep one reversible intent, avoid PawWork frontend fork churn, and include focused verification for the touched surface.
Recommended execution shape after independent review:
v1.4.11assumptions. Include the schema chain only if the slice compiles as a unit and updates PawWork-ownedpackages/opencode/src/tool/trash.tspluspackages/opencode/test/tool/trash.test.tsto the new tool framework. Keep PawWork tool description text files on the local side.anomalyco/opencode#19054,#24001plus#24016, and#23791.#24063,#23797,#23770, and#23870.Initial high-value candidates to re-check and likely backport:
anomalyco/opencode#19054: bare repo and worktree project cache fix. PawWork currently usesgit rev-parse --git-common-dir, but still lacks the upstreamcore.barehandling and can write the cache under the wrong.gitpath for bare repositories. This is now ACCEPT rather than conditional.anomalyco/opencode#24001and#24016: respect project.npmrcfor npm install and version lookup paths. PawWork'spackages/opencode/src/npm/index.tsandpackages/opencode/src/installation/index.tscurrently have no.npmrchandling. Combine as one reversible npmrc PR.anomalyco/opencode#23791: Bun 1.3.13 bump. PawWork is still onbun@1.3.11. Keep this as a discrete dependency PR, and do not import upstreampackages/ui/srcstory changes.anomalyco/opencode#23696: Kimi variant filtering. PawWork'sProviderTransform.variants(...)still runs after loading model data and PawWork overlays. Current code only filtersk2p5and only enables Anthropic Kimi thinking fork2p5,kimi-k2.5, orkimi-k2p5; upstream broadens this tok2pandkimi-k2.. Current snapshot includeskimi-for-codingwith Anthropick2p6, so this is user-visible. ACCEPT.anomalyco/opencode#23735: Mistral Small reasoning variants. Current PawWork transform still returns no variants for all Mistral models, while current snapshot includesmistral-small-latestandmistral-small-2603with reasoning enabled. Upstream adds thehighreasoning effort variant for those models. ACCEPT.anomalyco/opencode#23925: Codex model filtering logic. This does not go throughProviderTransform.variants; it affects Codex OAuth model filtering. Current PawWork allowlist keeps specific models and deletes the rest, while current snapshot already includesgpt-5.5. Upstream keeps futuregpt > 5.4models instead of filtering them out. ACCEPT.anomalyco/opencode#24063: OpenAI Responses streamserver_errorshould become retryable. PawWork's provider error path currently does not include this retry case. Likely high value, but it touches provider/session tests and should be checked against the schema slice.anomalyco/opencode#23797: preserve UTF-8 BOM inwrite,edit,apply_patch, patch, and format round trips. Useful for Windows and existing user files, but it touches edit paths and overlaps with tool framework changes.anomalyco/opencode#23770: configurable tool output truncation limits. Useful for advanced workflows where default output limits are too small or too large, but it touches config and tool plumbing.anomalyco/opencode#23870: improved session compaction. Potentially valuable for long PawWork sessions, but higher risk because it touches core session behavior and message DTOs.Large slice to plan separately:
#23716,#23740,#23749,#23744,#23745,#23747,#23752,#23753,#23754,#23756,#23757,#23763,#23764,#24005,#24019,#24027,#24029,#24040,#24056,#23244,#24024, and#24054. The largest PawWork-specific risk is#23244, because PawWork'strash.tsis a local tool and must move from the old zod-basedTool.defineshape to the new Effect Schema tool framework.Resolved verification notes for the large slice:
#23716,#23740plus#23749,#23744,#23753, and#23754in the slice. Implement them against PawWork's post-PR refactor: sync opencode config schemas #102 tree rather than mechanically replaying upstream. Specific partial overlaps: PR refactor: sync opencode config schemas #102 already introduced aSchema.Structbased config shape andzod(...)walker usage, but upstream#23716makesConfig.Infoitself the canonical Effect Schema withInfo.zod; PR refactor: sync opencode config schemas #102 still leavesConfigPermission.Infoas a zod transform usingZodPreprocess, while#23740moves it toSchema.decodeTo; PR refactor: sync opencode config schemas #102 did not migrateMessageV2.Format; provider and other schema leaves still hand-roll.zodin PawWork and should take#23753plus#23754.#23244concrete local migration: changepackages/opencode/src/tool/trash.tsfromimport z from "zod"andimport { Tool } from "./tool"toimport { Effect, Schema } from "effect"andimport * as Tool from "./tool"; exportParameters = Schema.Struct({ path: Schema.String.annotate({ description: "The file or directory path to move to the system Trash" }) }); changeexecuteparams fromz.infer<typeof Parameters>toSchema.Schema.Type<typeof Parameters>.packages/opencode/test/tool/trash.test.tsshould mostly keep its current shape becauseTool.InferParameters<typeof TrashTool>andinfo.init()still exist under the new framework.#23244does not move built-in tool descriptions into code. Upstream migrated tools still import./write.txtstyle descriptions, so PawWork-ownedpackages/opencode/src/tool/*.txtfiles should stay on the local version during the slice.Candidates that need more focused verification before final disposition:
anomalyco/opencode#23822: platform-specific Bun install flags. Upstream changes a reusable.github/actions/setup-bun/action.ymlthat PawWork does not have. Treat as DEFER unless PawWork release build logs show the same cross-platform install problem.anomalyco/opencode#23806: avoid relaunching without installing updates. PawWork PR fix: harden updater stale pending handling #178 already moved install ownership into the Electron updater controller and skips install when no ready update exists. Do not direct-backport app-side API changes; only spec a tiny PawWork patch if a concrete relaunch-without-install gap remains.Candidates to skip based on current evidence:
anomalyco/opencode#23808: Windows cross-spawn stderr race test. PawWork already has the sameEffect.all(..., { concurrency: 2 })fix inpackages/opencode/test/effect/cross-spawn-spawner.test.ts.anomalyco/opencode#23913: beta PR typecheck all packages. PawWork has noscript/beta.ts, and.github/workflows/ci.ymlalready runsbun turbo typecheckon pull requests.anomalyco/opencode#23652: log session SDK errors. This only touches upstreampackages/app/src/context/global-sync.tsx, which is a PawWork frontend fork surface. PawWork PR fix: add session loop diagnostics #204 is a separate session diagnostics change, not the same patch.Which audience does this matter to most?
Both
Extra context
Checked on 2026-04-24. Upstream
v1.14.20tag is3175a3c618, upstreamv1.14.22tag is596145a71d, and upstreamdevwasa4bd88ab97. For prior PawWork upstream intake, start from GitHub issue #27, issue #92, PR #102, PR #140, PR #155, PR #178, PR #204, and currentdevgit history rather than local docs.