Gallery's 'Recently edited' sort uses editedAt but the timestamp is updated on every save — user with 50 designs can't tell which ones they've actually opened in the editor vs just saved once #263
Labels
No labels
blocked:commit-ready-failed
blocked:gate-fetch
blocked:gate-lint
blocked:gate-plan
blocked:gate-research
blocked:needs-attention
blocked:needs-decision
blocked:needs-human
blocked:no-changes
blocked:verify-failed
bug
deferred
feature-request
in-progress
needs-decompose
needs-triage
quickfix
security/medium
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/Kimi_Agent_Brother_10_Digitizing_App#263
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Finding
src/components/gallery/types.tsdefineseditedAt: numberon the Design type. The Gallery'srecently-editedsort uses this field.grep -n 'editedAt' src/components/gallery/saveDesign.ts— let me check what triggers an update.The
saveDesignToGalleryfunction updateseditedAton every save. The user editing a design in the editor, then saving, then making one more change and saving again — both saves updateeditedAt. The "recently edited" sort shows both as equally recent.But the user might want to know:
Currently, all three are conflated. The "Recently edited" sort puts the most-recently-saved at the top, regardless of whether the user actually changed anything.
grep -n 'viewedAt\|lastViewed' src/returns 0.Where
src/components/gallery/types.ts(haseditedAt, noviewedAt)src/pages/Gallery.tsx(useseditedAt)src/components/gallery/saveDesign.ts(updateseditedAt)grep -n 'viewedAt' src/returns 0Suggested fix shape
viewedAt: number | nullto the Design type:viewedAtwhen the user opens a design (workspace or editor):lastEditedPathAt: number | null— updated only when path geometry changesThe simpler version is just the viewedAt. The full version is the 3-way split (viewed / edited / saved).
Severity
Low. The user can read the date on each card. Power users with many designs notice.
Discovered by
Gap analysis (2026-10-02) of gallery sort semantics.
Related
newest,oldest) is the design'screatedAt; the "Edited" sort is theeditedAt; the "Viewed" sort is the newviewedAt.Mark referenced this issue2026-10-04 03:59:53 +00:00
Shipped in commit
6ddb350(feat(#263)).Design.viewedAtfield, stamped by Gallery on Workspace / Editor / Export bridge opens.recently-viewedsort mode with null-fallback toeditedAtso never-opened designs sort by import time.loadDesignsmigrates legacy rows (noviewedAt) tonullon read.persistedFilterswhitelist extended to include the new mode.Files:
src/components/gallery/types.ts,src/components/gallery/data.ts,src/components/gallery/saveDesign.ts,src/components/gallery/persistedFilters.ts,src/pages/Gallery.tsx, plus tests (src/pages/issue-263-viewedAt.test.tsxnew, 5 cases; existingdata.test.ts+issue-151.test.tsxupdated for new field/option).Verified locally:
npx tsc --noEmitclean,npm run lintclean,npm run buildclean, 1262 vitest tests pass. CI queued on the self-hosted runner (run #246) — will reconcile async.