Repository navigation
fix(desktop): say a refused members read on the Person page, with Retry - #3644
Merged
Merged
Conversation
MemberDirectory now reads through useWorkspaceMembersRead and a new useFormerMembersRead, and hands its read state (reading, refused, retry) on beside the members. The Person page draws ErrorState with Retry in its placeholder head's place when either read was refused, instead of a placeholder that never resolves. Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
luke-agent Bot
added a commit
that referenced
this pull request
Oct 18, 2026
Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
…stants Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Follow-up PR A of the loading-states rollout. Context: the Loading states audit and the plan Fix Inbox loading state, "Loading states rollout". It picks up the issue Devin raised on #3626 and deferred here: if the members read or the former-members read was refused, the Person page head stayed a placeholder forever.
use-workspace-members.ts: both reads now go through one privateuseCountedRead. It re-reads when the count changes or on retry, and records whether the read was refused. A newuseFormerMembersReadreturns{ former, refused, retry }, matchinguseWorkspaceMembersRead(fix(desktop,host): say small panels are reading, or refused, rather than empty #3640).useWorkspaceMembersanduseFormerMembersare still thin wrappers, so the version history and ⌘K are unchanged.MemberDirectory: now reads through both…Readhooks. Its context exposesreading,refused, andretrybeside the members.retryonly re-asks a read that was refused, so the read that answered stays drawn. Callers that only read names are unchanged.ErrorStatewith Retry: "Their profile could not be read." ("Your…" on the reader's own page), worded like the page's other read failures. The toolbar title says "Profile" in place of its placeholder. A successful Retry shows the person.Other places
MemberDirectorynames people (scope item 3)None of these needed a change:
edit-ref.tsx), answers (inbox-pane.tsx), starters on Inbox rows and group headers (inbox-list.tsx), and the version history (its ownuseWorkspaceMembersanduseFormerMembers): with no members,personActornames the person by the name the wire carries, with a letter where their picture would be. That is exactly what they show while the read is still loading, and it makes no false claim. Someone is marked as having left only once the members read has answered.ownerIdalone (an older service) is drawn as "Someone" on Home rows and the task card until the members read answers, and a refused read leaves it that way. The @-mention picker also offers no people while the read is refused. Neither has room for an error and Retry, so it's not a small change. Leaving both for the tasks-view follow-up or later.Evidence
pnpm check:affectedpassed (exit 0).discarded-effectwas run alone underNODE_OPTIONS=--max-old-space-size=6144, a known sandbox heap limit.person-page.test.tshas two new tests, and both fail without the change:Invariants
./scripts/check.shgreen. (CI)LUKE_UPDATE_FIXTURESnot run, or diff explained line by line). (CI)AGENTS.md"Testing")astype assertion outside the allowlisted files. (CI via anti-slop)Effect.runPromise/runSync/runForkoutside the runtime edges and the shimstools/anti-slop/effect-edges.jsonrecords. (CI viaanti-slop/no-run-promise-outside-edges)setTimeout/setInterval/new Promise/AbortController/fs.watchoutside the filestools/anti-slop/effect-edges.jsonrecords. (CI viaanti-slop/no-raw-async-primitives)pnpm discarded-effect)person-page.test.ts)AGENTS.md's "The permanent adaptors" with the reason it stays.CLAUDE.md/AGENTS.mdsentence naming a changed part is edited; root pair stays byte-identical. (CI for pair existence; manual for wording)PRIVACY.mdunchanged, or the change is a product decision called out in the PR body.package.jsondeps match what the sources import by bare specifier;effectviacatalog:. (CI)@effect/platform-node,effect/sql) behind a barrel the renderer or a web function opens. (CI: existing renderernode:grep plus a new grep for those specifiers in renderer bundles)Notes
Made with Luke
Summary by cubic
Shows the Person page an error with Retry when reading the workspace's members or former members is refused, instead of leaving a never-resolving placeholder head.
Refactor
MemberDirectorynow exposesreading,refused, andretrybeside the members;retryonly re-asks a read that was refused.useWorkspaceMembersanduseFormerMembersnow share a singleuseCountedReadhook, and a newuseFormerMembersReadmatchesuseWorkspaceMembersRead.Written for commit fc10f05. Summary will update on new commits.