Skip to content

Development#17

Merged
kenken64 merged 11 commits intomainfrom
development
Jan 28, 2026
Merged

Development#17
kenken64 merged 11 commits intomainfrom
development

Conversation

@kenken64
Copy link
Copy Markdown
Owner

No description provided.

kenken64 and others added 11 commits January 28, 2026 09:59
Images are now visually organized under date-based sections: Today,
Yesterday, This Week, This Month, and older month/year labels.
Supports both English and Chinese locales with timezone-aware grouping.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add custom collections to organize gallery images:
- Backend: collections + collection_images tables, CRUD API routes,
  collection filter on gallery endpoint
- Frontend: useCollections hook, CollectionPicker modal,
  CollectionManager modal, gallery page collection filter dropdown
- Integration in GalleryCard and ImageDetailModal action buttons
- en/zh translations for all collection strings

Improve registration error handling:
- Backend returns distinct error code for duplicate email
- Frontend maps backend errors to translated user-friendly messages
- Add diagnostic logging to register route and registerUser service

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Changed error check from includes("Password must be") to
startsWith("Password must") to also catch "Password must contain"
errors from the backend password strength validator.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Escape user prompts in the share page HTML to prevent stored XSS attacks.
Scope chat message localStorage key per user ID so different users on the
same browser no longer see each other's conversation history.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- GalleryPage: collection chips as horizontally scrollable row with
  touch momentum, hidden scrollbar, icon-only manage button on mobile,
  search stacks below on small screens
- CollectionPicker: bottom sheet on mobile, larger touch targets,
  drag handle, safe area padding
- CollectionManager: bottom sheet on mobile, stacked edit buttons,
  larger touch targets for rename/delete icons

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Input and button now stack vertically on small screens with full-width
button, and display inline on desktop.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Each component had its own useCollections instance so creating,
deleting, or modifying collections in the manager/picker did not
update the gallery filter chips. Now GalleryPage refreshes its
collections when CollectionManager closes, and when CollectionPicker
closes from either ImageDetailModal or GalleryCard.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The collection chip counters now refresh instantly when an image is
toggled in the picker, not only when the picker closes. Added onChange
callback to CollectionPicker that fires after each successful add,
remove, or new collection creation.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
… page

Adds global keyboard shortcuts (Ctrl+N new chat, ? help overlay),
gallery shortcuts (/ focus search, R refresh), and image modal
shortcuts (F favorite, D delete, C collection, E export). Includes
a dedicated Keyboard Shortcuts page accessible from Settings.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The useCallback hooks were placed after the conditional early return,
violating React's rules of hooks and causing a runtime error when
the gallery loaded the modal component.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Mark keyboard shortcuts, collections, and prompt enhancement AI
as completed. Expand generation history timeline description with
detailed concept explanation. Add three newly completed features
to the completed features list.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@kenken64 kenken64 merged commit 40ee15f into main Jan 28, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant