Promote main → release (conflict-resolved) - #5256
Conversation
…eature (tinyhumansai#5049) (tinyhumansai#5061) Co-authored-by: Steven Enamakel <31011319+senamakel@users.noreply.github.com>
…nscript (ChatThreadView) (tinyhumansai#5097)
…ansai#5091) Co-authored-by: Cursor <cursoragent@cursor.com>
…ai#4786) Co-authored-by: Sami Rusani <14844597+samrusani@users.noreply.github.com>
…inyhumansai#4772) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: binyangzhu000-sudo <224954946+binyangzhu000-sudo@users.noreply.github.com> Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
…nsai#5103) Co-authored-by: Sami Rusani <14844597+samrusani@users.noreply.github.com>
…ting/http-server gates (tinyhumansai#5048) (tinyhumansai#5068)
…4929) (tinyhumansai#4998) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Steven Enamakel <31011319+senamakel@users.noreply.github.com> Co-authored-by: Cyrus Gray <144336577+graycyrus@users.noreply.github.com> Co-authored-by: oxoxDev <164490987+oxoxDev@users.noreply.github.com> Co-authored-by: YellowSnnowmann <167776381+YellowSnnowmann@users.noreply.github.com> Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai> Co-authored-by: CodeGhost21 <164498022+CodeGhost21@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: sanil-23 <sanil@tinyhumans.ai> Co-authored-by: M3gA-Mind <elvin@mahadao.com> Co-authored-by: oxoxDev <oxoxdev@users.noreply.github.com>
Co-authored-by: Sami Rusani <14844597+samrusani@users.noreply.github.com> Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
…roval prompt (tinyhumansai#5094) Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
…d profiling optimizations (tinyhumansai#5107)
…completes epic tinyhumansai#4795 (tinyhumansai#5029) Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
…thoring, fail runs cleanly (B45) (tinyhumansai#5212)
…inyhumansai#3884) (tinyhumansai#5178) Co-authored-by: M3gA-Mind <elvin@tinyhumans.ai>
…oup, and backend client (tinyhumansai#5229)
…inyhumansai#5220) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ain copy of tinyhumansai#5251) (tinyhumansai#5252) Co-authored-by: M3gA-Mind <elvin@mahadao.com>
Resolves the conflicts that failed the automated "Promote main to release" workflow (run 30405225559). Brings 111 commits from main into release while preserving release's 5 own commits (the v0.63.6/7/8 cuts and the AppImage userns hotfix tinyhumansai#5251). Version manifests (Cargo.toml x2, app/package.json, tauri.conf.json) Took release's higher 0.63.8 over main's 0.63.5. In all four the version line was the only conflicted hunk; main's dependency and content edits auto-merged cleanly. Cargo.toml - duplicate dependency key Main migrated tinyhumans-sdk from a git dependency to the vendored vendor/tinyhumans-sdk submodule; release predates that migration. The merge kept both declarations under [dependencies], which is a duplicate key that Cargo cannot parse. Dropped release's stale git line and kept main's vendored path dep, matching .gitmodules and the staged submodule pointer. Cargo.lock, app/src-tauri/Cargo.lock Per-hunk, mirroring the manifests: version to 0.63.8, and the tinyhumans-sdk `source = "git+..."` hunks to main (a path dependency has no source line). Not regenerated, per the no-local-build constraint; both files parse clean with no residual 0.63.5 or sdk-git-source references. CI validates. src/embed/mod.rs (add/add) The two sides are identical except for two doc-comment lines. Release's doctest imports `openhuman::`, main's `openhuman_core::`; [lib] name is openhuman_core on both sides, so release's would fail to compile. Took main's. src/api/rest.rs Union: both hunks are additions from main, the parse_api_response_value envelope normalizer and its call site, which belong together. src/openhuman/inference/local/service/lm_studio.rs Took main's import list. Release additionally imports LmStudioChatCompletion{Request,Response} / LmStudioChatMessage / model_ids, which main removed along with the code using them. Those types exist only on release, and the merged copy of local/lm_studio.rs is main's, so a union would reference types absent from the tree. AGENTS.md Took main's SDK-boundary section, which supersedes release's and documents the vendored submodule. Carried forward the two normative rules main's rewrite dropped (no direct reqwest for TinyHumans JSON APIs or duplicated SDK wire types; no admin/webhook APIs across the SDK boundary) so the promotion does not delete a documented prohibition. vendor/tinyagents Set to main's 3781540. The pointers genuinely diverged: main's carries 10+ commits release lacks, including provider/embedding API changes the promoted core compiles against. Release-only commit be30296 "fix(todos): serialize board deletion" is therefore not reachable from this pointer and needs a follow-up bump; the other release-only commit has an equivalent already on main.
|
Too many files changed for review. ( Bypass the limit by tagging |
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1d4f92914d
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| // (gated by the attempt guard above) is the single place `sending` is | ||
| // cleared — clearing it here too would race that settle and could clear | ||
| // a NEWER turn's `sending` if the user re-sent immediately after Stop. | ||
| void flowsBuildCancel(threadId) |
There was a problem hiding this comment.
Pass a request id to builder cancellation
When the user clicks Stop and immediately starts another Workflow Copilot turn on the same thread, this fire-and-forget cancel can arrive after the newer turn has registered; because no requestId is passed, the server takes the unscoped None path and cancels whatever turn is currently registered. The backend and flowsBuildCancel already support scoped cancellation specifically to avoid stale Stop clicks killing superseding requests, so the hook needs to mint/retain the build request id and pass it to both buildWorkflow and flowsBuildCancel.
Useful? React with 👍 / 👎.
| match client | ||
| .post(&url) | ||
| .header("X-Sentry-Auth", &auth) | ||
| .body(body) | ||
| .send() |
There was a problem hiding this comment.
Honor the Sentry shutdown timeout
With a configured Sentry DSN and an unresponsive network/proxy, this blocking .send() has no request timeout; during shutdown the transport calls flush(timeout) and Drop joins the worker thread, but a worker stuck in this POST may never reach the queued flush/shutdown task. That can hang CLI or desktop process exit indefinitely instead of respecting Sentry's shutdown timeout, so the custom client should set a bounded timeout/connect timeout or avoid an unbounded join on the sender thread.
Useful? React with 👍 / 👎.
| cargo tree --locked --manifest-path "$manifest" --target "$target" \ | ||
| --invert "reqwest@$version" 2>/dev/null || true | ||
| )" | ||
| if printf '%s\n' "$owners" | grep -Eq '^sentry v'; then |
There was a problem hiding this comment.
Match cargo-tree owners below the root
I checked cargo tree --invert output: the queried package is printed as the root and its owners are child lines prefixed with tree glyphs (for example └── sentry v...), so this ^sentry v grep never matches the Sentry owner it is meant to forbid. In the Tauri world that means a future Sentry-owned reqwest 0.13 or native-TLS/OpenSSL edge can pass the new TLS policy gate; use --prefix none for the inverted tree too, or match the package name after the tree prefix.
Useful? React with 👍 / 👎.
| - 'vendor/motosan-ai-oauth/**' | ||
| - 'vendor/tinychannels' |
There was a problem hiding this comment.
Watch tinyhumans-sdk submodule changes
This commit adds vendor/tinyhumans-sdk as the path dependency for backend routes, but the CI Lite Rust filters only add vendor/motosan-ai-oauth/** and vendor/tinychannels. A later PR that only bumps the SDK gitlink will not set rust-core/rust-core-full, so route or error-classification changes can skip the cargo checks and changed-line coverage even though this vendored SDK is now the source of truth for backend routes. Add the exact gitlink path to both Rust filters.
AGENTS.md reference: AGENTS.md:L180-L185
Useful? React with 👍 / 👎.
Resolves the merge conflicts that failed the automated Promote main to release workflow (run 30405225559).
Brings 111 commits from
mainintorelease, while preserving all 5 commitsreleaseowns (thev0.63.6/v0.63.7/v0.63.8cuts and the AppImage userns hotfix #5251).Merge base was
2219d4207(chore(release): v0.63.3).mainwas 111 ahead / 5 behind.How each conflict was resolved
Version manifests — release's
0.63.8(higher), main's content keptCargo.toml,app/src-tauri/Cargo.toml,app/package.json,app/src-tauri/tauri.conf.jsonRelease had just cut
0.63.8; main was on0.63.5. Took0.63.8. In all four files the version line was the only conflicted hunk — main's dependency and content edits auto-merged cleanly. Verified by diffing each merged file against main's side: version is the sole delta.Cargo.toml— duplicate dependency key introduced by the mergeThis one was not a pick-a-side; the naive merge produced a broken file.
Main migrated
tinyhumans-sdkfrom a git dependency to the vendoredvendor/tinyhumans-sdksubmodule (ca47efe, with a.gitmodulesentry). Release predates that migration and still declarestinyhumans-sdk = { git = ... }. The merge kept both, under the same[dependencies]table.Verified this was a real break rather than a style question — parsing the un-deduped file gives:
Cargo would have failed on every build. Dropped release's stale git line, kept main's vendored path dep. This is consistent with the staged submodule pointer and
.gitmodules, both of which come from main.Lockfiles — per-hunk, mirroring the manifests
Cargo.lock(2 hunks),app/src-tauri/Cargo.lock(3 hunks)0.63.8, matching the manifeststinyhumans-sdksource = "git+…"/reqwest 0.12.28hunks → main's (a path dependency has nosourceline, and main's single-versionreqwestnaming is correct once the git dep is gone)Not regenerated — the task forbids local cargo builds. Both files parse clean, contain zero residual
0.63.5references and zero sdk-git-source references, and theopenhumanpackage entry reads0.63.8. CI is the validator here; ifcargowants to rewrite either lockfile the follow-up is a mechanical regeneration commit.src/embed/mod.rs(add/add) — main's sideThe two sides are byte-identical except two doc-comment lines: release's doctest imports
openhuman::embed::Core, main's importsopenhuman_core::embed::Core.[lib] name = "openhuman_core"on both sides, so release's path would fail theno_rundoctest compile. There is no additive content to union here — only a same-line correctness difference — so main's is taken.src/api/rest.rs— union (both hunks are main's additions)Two hunks, both pure additions from main:
parse_api_response_valuehelper, which normalizes the backend envelope while preserving/auth/me's historical{success,user}shapeOk(value) => return parse_api_response_value(value)They are one change and must land together. Release contributed nothing new in either hunk. Verified post-resolution that the function is both defined (L231) and called (L526).
src/openhuman/inference/local/service/lm_studio.rs— main's import listRelease additionally imports
LmStudioChatCompletionRequest,LmStudioChatCompletionResponse,LmStudioChatMessageandmodel_ids.A union would not compile. Those types exist only on release (defined in
src/openhuman/inference/local/lm_studio.rs); the merged copy of that file is main's, so they are absent from the tree entirely. They are also referenced 0 times in the merged file body — main deleted the types and the code using them in the same change. Took main's import list, which matches exactly what the merged body uses.AGENTS.md— main's section, plus release's rules carried forwardBoth sides rewrite the same "backend SDK boundary" section. Main's is the newer, more detailed version documenting the vendored-submodule setup, consistent with the
Cargo.tomlresolution above, so it supersedes release's.However main's rewrite drops a rule release states explicitly and main does not state anywhere (checked): no direct
reqwestcalls for TinyHumans JSON APIs, no duplicated SDK wire types. Rather than let a promotion silently delete a documented prohibition, I took main's section and appended that rule together with the admin/webhook prohibition as a short "Hard rules" block.vendor/tinyagents— main's3781540ff76d76:3781540— 10+ commits release lacks (provider/embedding work: caller-supplied http clients, local embedding dimension discovery, authenticated-ollama credential handling)b6a4120— 2 commits main lacks:be30296 fix(todos): serialize board deletionandb6a4120 docs(todos): describe raw board lifecycleSet to main's, because main is the promotion source and the promoted core code compiles against main's tinyagents API surface; reverting to release's older pointer would very likely break the build.
Main already contains an equivalent of the docs commit.
be30296 fix(todos): serialize board deletionis genuinely release-only and is not reachable from this pointer. OpenHuman does use that API (src/openhuman/tinyagents/todos.rs), so this wants a follow-up: merge the two tinyagents lines upstream and bump the submodule. Flagging rather than silently choosing.Release commits preserved — verified
220e1a041v0.63.80.63.8across all 4 manifests + both lockfiles42cdf77e7AppImage userns hotfix (#5251)14f5fd593v0.63.79c1e2e657v0.63.6a40fbb79dPromote main → release (#5242)Other submodules audited — all now at main's pointers.
vendor/tinycortexdiffered between branches but release's equals the merge base, so main's wins with nothing lost.Validation
app/package.jsonandapp/src-tauri/tauri.conf.jsonparse as valid JSON, both at0.63.8.Cargo.tomlandapp/src-tauri/Cargo.tomlparse as valid TOML, both at0.63.8— this is what catches the duplicate-key issue above.Notes for the merger
releasefirst,mainsecond, as a promotion should be.vendor/tinyagentsto a commit that also containsbe30296.