Repository navigation
v0.3.39
FurtherRef changes
3c9db3e5cMerge upstream/main into main (upstream v0.3.34+4 -> v0.3.35+3)
This release syncs the fork to upstream HEAD a06fc2734, 22 commits past the previous fork release (v0.3.38, which landed on upstream 8b9caded7). The range covers all of v0.3.35 (19 commits) plus 3 commits past the v0.3.35 tag that are not yet part of a tagged upstream release. There is no standalone fork patch this cycle; the fork-specific work was six merge conflicts, none of which lost fork behavior.
Two of the conflicts were both sides independently adding an import to the same block — kept both in packages/core/api/client.ts (fork's OfficeConfig alongside upstream's CreateFeedbackResponse) and server/internal/storage/s3.go (fork's net/netip, needed by the fork-original SSRF-guarding publicEndpointHost, alongside upstream's net/url).
Three conflicts were upstream's MUL-3903 "Extract shared issue surfaces" rewrite (multica-ai#4774), which replaces the hand-rolled view-mode/filter/query plumbing in issues-page.tsx, my-issues-page.tsx, and project-detail.tsx with a shared <IssueSurface> component. The fork's only changes to those regions since the last sync were trivial reformats inside the code upstream deleted (confirmed via diff against merge-base before resolving), so all three conflicts took upstream's side outright. The same refactor also touched use-issue-actions.ts, where it routes issue updates through an optional surfaceActions context instead of calling updateIssue.mutate directly — folded that into the fork's runUpdate helper so the fork-original status-confirmation gate (requiresIssueStatusConfirmation, guarding destructive status changes) still runs first and then delegates to the surfaceActions-aware update.
The last conflict was upstream's "time out repo cache git commands" fix (101cc29e2), which converts two raw exec.Command(...).Run() calls in repocache/cache.go to the timeout-wrapped runGit() helper already used elsewhere in that function. The fork never touched those lines, so it took upstream's side.
New migration applied cleanly: 133_github_installation_multi_workspace.
Verified in CI (backend, frontend, both installers, changes-filter, plus Mobile Verify) and the full local suite — pnpm typecheck (forced, 7 packages), pnpm test (all packages, 1774/1774 in views), pnpm lint (0 errors), no reserved-slugs drift, go build/vet (clean), and go test -race ./... against a migrated database — every failure there is confined to pkg/agent spawning real agent CLIs absent in this sandbox (a known environmental gap), with every other package including internal/handler and internal/daemon green.
Upstream (unreleased, post-v0.3.35) changelog
3 commits on top of the v0.3.35 tag, not yet part of a tagged upstream release.
6b7014657test(rollup): serialise shared-singleton rollup tests across packages (MUL-3980) (multica-ai#4854)84a585336fix(desktop): restore correct filename in save dialog for attachment downloads (multica-ai#4296)a06fc2734fix(web): redirect legacy squads and usage routes (multica-ai#4833)
Upstream v0.3.35 changelog
88377c1b1fix(slack): recover attachment/blocks text for empty-Text chat messages (MUL-3931) (multica-ai#4805)5ed381a9dFix comment attachment URL resolution (multica-ai#4816)8b529efc0Fix recovered Antigravity transcript messages (multica-ai#4814)c3a33fff4fix(markdown): render inline data-URI images (MUL-3961) (multica-ai#4832)ade6b34e5MUL-3903: Extract shared issue surfaces (multica-ai#4774)ac75a0df7fix(attachments): align text preview whitelist (multica-ai#4834)078f2aa65fix(handler): keep runtime pending redis keys in one slotda624a883feat: add configurable S3 path-style addressing (multica-ai#4739)94778449efix(docker): derive web pnpm version from packageManager (multica-ai#4815)101cc29e2fix(daemon): time out repo cache git commands0c4c3ff03fix(cli): prevent daemon-managed CLI from silently using user tokens (MUL-3922)c328fdbcdfix(issues): wake parent squad leader on same-squad/shared-leader child-done (MUL-3969) (multica-ai#4843)c4b116ec3feat(views): expose add-label entry in create-issue dialog (multica-ai#4846)2e8578acbfix(chat): stop remounting the live timeline on every streamed task message (MUL-3960) (multica-ai#4845)c2903365afix(editor): keep the comment-box caret in the ordered list after switching issues (MUL-3973) (multica-ai#4813)03828015cfix(feedback): validate response and pass error kind (multica-ai#4633)2cf529781Revert "fix(editor): keep the comment-box caret in the ordered list after switching issues (MUL-3973) (multica-ai#4813)" (multica-ai#4851)e4994cd43fix(github): allow one installation to bind multiple workspaces (multica-ai#4855)4416313f8docs(changelog): add v0.3.35 entry for the 2026-07-02 release (MUL-3984) (multica-ai#4856)