Conversation
Flatten the card structure so schedule info and metadata sit below the header row instead of nested inside a flex child. Shrink action buttons to fixed 32px squares, add flex-wrap to metadata, and add whitespace-pre-wrap + min-w-0 to the error message for proper text wrapping on narrow screens. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add a monthly calendar grid that visualizes when scheduled jobs run. Users toggle between list and calendar views via a segmented control. Each day shows color-coded dots (blue=once, teal=daily, violet=weekly, red=error, faded=disabled) and clicking a day opens a popover with job details. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Popover now flips above the cell when there isn't enough room below, preventing it from overlapping the legend row - Legend items use whitespace-nowrap and shrink-0 dots to prevent text truncation - Legend renders at z-51 so the popover never obscures it - Added missing error/disabled translation keys (EN + ZH) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Show a badge next to the month label (e.g. "5 jobs") when the displayed month has scheduled generations - Add small dot indicators on the prev/next navigation buttons when adjacent months contain scheduled jobs - Helper `countJobsInMonth` efficiently checks daily, weekly, and one-time jobs against a given year/month - Added scheduledSingular/scheduledPlural translation keys (EN + ZH) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The day-detail popover (position:fixed) was covering the legend row below the grid. Relocated the legend between the header and the grid so the popover can never obscure it. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add multi-select mode to the Gallery page with bulk delete (up to 50), bulk export as ZIP with format conversion (up to 20), and bulk share via a public gallery page with OG meta tags. Includes floating action bar, inline delete confirmation, select-all toggle, and Escape to exit. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
generateShareId() uses randomBytes(8) which is statistically safe, but the UNIQUE constraint on share_id could cause an unhandled error on collision. Adds a 5-attempt retry loop with existence check. Also wraps the gallery record + image inserts in a db.transaction() so concurrent requests cannot leave orphaned partial records. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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.
No description provided.