Repository navigation
fix(desktop): draw the person page's waits as skeletons, never a false Someone or empty line - #3626
Merged
Merged
Conversation
…e Someone or empty line 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. |
Contributor
|
Screenshots, desktop profile, dark scheme, rendered from the jsdom suite with the renderer stylesheet. Loading: the members, the Inbox, and the automations are all still being read: a placeholder head and toolbar title, then Inbox and Automations placeholder sections. No ring, no "Someone", no empty line. Loaded: unchanged. |
Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
14 tasks done
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.


PR 3 of 9 in the loading-states rollout (Loading states audit, plan Fix Inbox loading state, "Loading states rollout"): the Person page (
desktop/person-page.tsx).Summary
InboxListSkeletonas it is (left unmodified, since PR 2 owns its row-count prop). Automations get a localRowsSkeletonbuilt from@luke/ui'sListRow/Skeleton/SkeletonRegion: a tile, a name, and trigger text, with no time.AutomationRowis unchanged.MemberDirectoryanswered. Until the members and former-members reads have answered, it now shows a placeholder head (a 48px circle, a name line, a caption line) and a placeholder toolbar title. Only settled reads can now say Not found.tasks.listRead. While the list is unread and nothing of theirs is listed yet, a placeholder tasks section stands in its place. A list read that failed says "Their tasks could not be read." with Retry (onRetryList), the same way Home does, so it doesn't pass for an empty page either.Evidence
pnpm check:affectedpassed, apart from two known sandbox quirks, each rerun alone and green:discarded-effectwith a larger heap, andapp-menu.test.tsafter fetching Electron's binary.person-page.test.tshas 4 new tests and 1 updated. All 5 fail with theperson-page.tsxchange stashed: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). The test's held reads usenew Promise, as the suite's existinginboxHeldalready does.pnpm discarded-effect)person-page.test.ts(23 → 27).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
useWorkspaceMembers/useFormerMembersswallow a refused read and stayundefined. If either read is refused, a person nothing else names keeps the placeholder head instead of the old false "Someone · Not in this workspace". Giving the member directory a failed state, so the head could offer Retry, would touchmember-directory.tsxanduse-workspace-members.ts, so it is left as a follow-up.Made with Luke
Summary by cubic
Replaces the person page's loading waits with skeleton placeholders and stops the page from falsely naming someone as not in the workspace or declaring it empty while reads are pending.
Written for commit f9faf1e. Summary will update on new commits.