fix: restore main — vendor pins, a missing fixture field, the console's channel wording, and the RoomView export - #2215
Conversation
…ge reverted The hive-console merge resolved both vendored gitlinks to the pre-bump side while keeping Cargo.lock on openhuman 0.63.24, so the tree pinned 0.63.23 and the lock demanded 0.63.24. Every cargo lane passes --locked, so all of them failed to build with 'cannot update the lock file': Rust, Rust (mail), Rust (mongodb), Rust (openhuman, tinymemory) and Gated host binary have been red on main since that merge.
The hive-crossing work added overlay_desk_hive to CompanyRecord and updated every construction site but this one, which sits behind #[cfg(test)] and so compiles under --lib while failing the lib-test build. The Rust job's Test step has been red on main since that merge; the later Cargo.lock breakage then masked it, because the lanes stopped reaching the compile at all.
The console's client-side pre-flight was reworded to 'is not an automation delivery channel' when Workflows became Automations, and the host's refusal was left saying 'workflow'. The two are the same sentence to an author who trips the guard at save and reads it again on a failed delivery, and the coupling test that reads the dialog file has been red on main since that merge. The operator-readable sentence follows the product's vocabulary; the internal type and module names stay workflow.
The chat->room component consolidation (5a9afe6) moved AddMemberDialog, ChannelRail, ChatHeader, MessageComposer and friends from views/chat/ to views/room/, and renamed ChatView.tsx to RoomView.tsx with its export function renamed to match. Merging upstream/main's parallel ChatView.tsx edits (PR tinyhumansai#2214) back into that branch reintroduced the pre-rename import paths and the ChatView export name, since main had kept editing the file under its old name and shape. Point the imports back at views/room/ and export RoomView again, matching every other reference in the tree (tests, app-shell.tsx) that already expects it.
Same chat->room move as RoomView.tsx: the shared AddMemberDialog now lives under views/room/, but TeamView.tsx's import still named the old views/chat/ path, which no longer exists.
Same collision as the production component: this test still imported and rendered the pre-rename ChatView from views/ChatView, which no longer exists post-consolidation.
ReferralChip and ReferralConversation live under views/room/StepTimeline post-consolidation; the test still named the removed views/chat/ path.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (6)
💤 Files with no reviewable changes (1)
Included review availability: Your plan provides up to 2 included reviews per hour; 1 remains after this review. 📝 WalkthroughWalkthroughThe frontend renames ChangesFrontend room migration
Automation delivery wording
Desk hive authorization coverage
Vendor pointer updates
Estimated code review effort: 3 (Moderate) | ~20 minutes Suggested reviewers: Merge Risk: ⚪ Minimal · up to This restores room exports and imports, aligns delivery refusal wording, repairs test fixtures, and updates vendored pins. No concrete current-head merge-blocking risk remains. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
A rabbit reads each line, Comment |
How this change flows2 changed behaviours across 5 relationships. 5 surrounding behaviours are shown (60 graph nodes walked). 63 further behaviours left out to keep the diagram readable. flowchart LR
n0["ChatView<br/>changed"]:::changed
n1["Props<br/>changed"]:::changed
n2["AppShell"]:::impacted
n3["TeamView"]:::impacted
n4["format"]:::impacted
n5["graph"]:::impacted
n6["send"]:::impacted
n0 -->|uses| n1
n0 -->|calls| n6
n2 -->|uses| n3
n5 -->|calls| n4
n5 -->|tests| n4
classDef changed fill:#0d4429,stroke:#238636,color:#e6edf3
classDef impacted fill:#161b22,stroke:#6e7681,color:#c9d1d9
classDef flagged fill:#5a1e02,stroke:#d93f0b,color:#ffffff
classDef blocking fill:#67060c,stroke:#f85149,color:#ffffff
Green: changed behaviour. Grey: surrounding behaviour. Arrows name the call, use, implementation, or test relationship. Orange: has findings. Red: has a finding that blocks the merge. |
…ay field The same omission as the GraphQL fixture, in two literals that only compile under --features hivemind and --features acp. A default-feature cargo test never builds them, so the lanes that do went red while a local --lib run stayed green.
The hive work registered GET/PUT/DELETE {scope}/desks/{desk_id}/hive through the same scoped() helper every other operator route uses, without a matrix row, so the source-versus-matrix closure failed with unexpected=["/desks/{desk_id}/hive"].
The handlers take ScopedCompany, not require_admin, so the rows declare Access::Scoped like the sibling desk routes: anonymous 401, member/admin/owner permitted, temporary-password admin 403. Counts and the committed snapshot follow — 42 new cells, three methods across both address forms.
… ones already spoken to The room module still filtered the DM section on a non-empty transcript, which made it an inbox: on a company nobody has DM'd yet it read 'Nothing here yet.' under the heading naming the one thing an operator most wants from a roster. Ordering now carries what the filter used to — anyone with a transcript sorts first, most recent at the top, and untouched rows fall through to the name.
The hive-console branch split the monolithic chat/model.ts into room/{channels,timeline,review}.ts; mainline kept evolving the monolith; the merge kept both. Sixteen production files and thirty-odd specs import the room barrel, and RoomView alone still read the old copy — so the module the tests exercised was not the module the rail rendered, and the two had already drifted on how a DM is listed.
Deleting the leftover leaves one source for both.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5233d5b5d1
ℹ️ 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".
| // absent transcript, so untouched rows tie and fall through to the name — a | ||
| // stable order rather than roster order, which is the host's and can move | ||
| // under a reader. | ||
| const dms = directMessageChannels(members).sort((a, b) => { |
There was a problem hiding this comment.
Update the documented DM-rail contract
For every teammate without a transcript, this now adds a persistent rail row, but both this function's documentation (frontend/src/views/room/channels.ts:116-118) and the Room routing guide (frontend/src/views/room/README.md:17-19) still promise that the rail contains only conversations with at least one line and that New message exposes otherwise absent teammates. Update those contracts alongside this behavior so future callers and UI changes do not rely on the now-false active-conversations-only invariant.
Useful? React with 👍 / 👎.
Summary
mainis red and has been since 02:51 IST today. Four separate breakages arrived across three merges, and each merge landed on an already-redmain, so the later failures masked the earlier ones. This restores every lane.The four, oldest first:
1. A
CompanyRecordfixture missing a field. The hive-crossing work addedoverlay_desk_hiveand updated every construction site but one, which sits behind#[cfg(test)]— so it compiles under--liband fails the lib-test build. TheRustjob's Test step has been red since that merge.2. The console's channel pre-flight and the host's refusal stopped saying the same thing. When Workflows became Automations, the console's client-side pre-flight was reworded to
is not an automation delivery channeland the host was left sayingworkflow. These are the same sentence to an author — read once when the guard trips at save, again on a failed delivery row — and there is a test that reads the dialog file precisely so the two cannot be reworded apart. It fired, correctly, and named both remedies.3. Both vendored submodule pins reverted while
Cargo.lockkept the newer versions. The hive-console merge resolvedvendor/openhumanandvendor/tinyhivemindto their pre-bump commits; the lock still requires openhuman0.63.24, and the tree pinned0.63.23. Every cargo lane passes--locked, so all of them failed atVerify Cargo.lock is in sync— before reaching a compiler, which is why breakage 1 stopped being visible.4. The console build lost its
RoomViewexport and thirteen imports. The hive-console branch renamedviews/chat/*toviews/room/*andChatViewtoRoomView; mainline kept editing the old names in parallel. The merge kept the new filename and resolved the file's contents to mainline's pre-rename version, soRoomView.tsxhad the right name and the wrong insides. EveryTS7006implicit-any inapp-shell.tsxwas downstream of that: once the components resolved toany, TSX lost contextual typing for the callbacks passed into them. Fixing the export and the import paths made all sixteen disappear — no annotations were added, and nothing was cast or ignored.API Or Behavior Changes
One operator-visible string changes: a
channeldestination that names something undeliverable is now refused withis not an automation delivery channelrather than… a workflow delivery channel, matching what the console already shows. Internal type, module and route names stayworkflow.Nothing else changes behaviour. The submodule pins are restored to the commits the bump landed, not moved forward.
Tests
cargo fmt --all -- --checkcargo clippy --all-targets -- -D warnings— run as--no-deps, which the vendored tree requirescargo build --all-targets— covered bycargo check --locked --lib, which is what proves the lock fixcargo test—cargo test --locked --lib: 5019 passed, 0 failed, up from 5018/1Also run:
cargo check --locked --lib— rc=0. This is the gate that was failing onmain.frontend:npm run build— rc=0, noerror TS.npm run typecheck,typecheck:unit,typecheck:e2e— all rc=0.scripts/ci/assert-design-tokens.sh,scripts/ci/assert-single-tauri-app.sh— rc=0.Documentation
None needed — no interface or contract changed. The one reworded sentence is operator-facing copy, and the test that pins it to the console now passes with both sides saying the same thing.
Related
Restores
mainafter the breakages introduced in #2206, #2214 and #2166.One thing found while fixing #4 is deliberately not in this PR:
frontend/src/views/chat/model.tsandfrontend/src/views/room/{channels,timeline,review}.tsare duplicate copies of the same logic that both survived the merge and have diverged —chat/model.ts'sbuildChannelslists every teammate in the DM section without a transcript,room/channels.ts's still filters them out.RoomView.tsximports the correct one, so production is right;frontend/test/unit/chat-direct-messages.test.tsimports the stale one and is the single vitest failure onmain(5225 passed, 1 failed). It predates this merge —git diff 339b69ea9 HEAD -- frontend/src/views/room/channels.tsis empty.Repointing
RoomView.tsxatroom/modelwould turn that test green and silently regress the DM list in production, so it is not done here. It needs a delete-or-reconcile decision on the duplication, not a patch.Summary by CodeRabbit
New Features
Refactor
Bug Fixes