Gallery's EmptyState only knows 2 reasons ('empty', 'search') — favorites-only, folder-with-no-designs, and filtered-by-folder-with-no-matches all show the same generic 'No designs yet' / 'No results found' #224
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#224
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/EmptyState.tsx:5declaresreason: 'empty' | 'search'. The component renders the icon, headline, and body based on the two cases.But there are at least 4 empty states the user can hit:
No designs in the gallery at all —
reason: 'empty'. The current message: "No designs yet. Upload a PES, DST, PNG, JPG, SVG, or BMP to get started."Search returns no results —
reason: 'search'. The current message: "No results found. Try a different search term."Favorites filter active and no favorites — currently shows
reason: 'empty'(per the parent Gallery's logic at line 887:reason={searchQuery ? 'search' : 'empty'}). The user sees "No designs yet. Upload a PES…" which is wrong: they have designs, they just haven't favorited any.Folder selected that has no designs — currently shows
reason: 'empty'. The user has designs, just none in this folder. The "Upload" button is misleading (it would create a new design not in this folder).Filter+search returns no results — same as #2, but the search query alone might not be the cause.
A user opening the Gallery for the first time AND a user who's filtered to favorites with none get the same message. The messages are not actionable in context.
Where
src/components/gallery/EmptyState.tsx(2 reasons)src/pages/Gallery.tsx:887(reason={searchQuery ? 'search' : 'empty'})grep -n 'favoritesOnly.*empty\|favorites-empty' src/components/gallery/returns 0Suggested fix shape
Expand the
reasontype to cover the cases:The Gallery computes the reason based on the filter stack:
Each reason gets its own copy:
'empty': "No designs yet. Upload a PES, DST, PNG, JPG, SVG, or BMP to get started." (current)'search': "No results for 'X'. Try a different search term or clear the search." (current)'favorites': "No favorites yet. Click the heart on any design to add it here. Showing all designs instead." + a button to toggle offfavoritesOnly.'folder': "This folder is empty. Drag a design here or use the Upload button." (Upload now correctly targets this folder viafolderId).Severity
Low. The user can figure out the state from the filter chips and the empty state icon. The generic message is a small papercut.
Discovered by
Gap analysis (2026-10-02) of gallery empty states.
Related
FolderNav) already shows the folder name; the empty state should respect it.Closed by commit
ce1399fonmain. EmptyState now distinguishes 4 reasons (empty/search/favorites/folder) with actionable CTAs per case:empty: "No designs yet" + Upload Design (unchanged).search: "No results found" + new Clear search CTA.favorites: "No favorites yet" + Show all designs CTA toggles the favorites quick-filter off (no upload CTA -- uploading doesn't favor anything).folder:"<name>" is empty+ Upload to folder CTA, with the folder name threaded through.Gallery computes the reason from the filter stack (search > favorites > folder > empty). The Favorites folder AND the favorites-only quick-filter both map to
favorites. 10 new tests inEmptyState.test.tsx; full suite 1118 passed, lint + build clean.