Commit Graph
99 Commits
Author SHA1 Message Date
google-labs-jules[bot] a452d79802 Refactor backup/restore to Service Layer and add comprehensive tests
- Create `BackupService` in `src/service/backup.ts` to encapsulate tar stream creation and restore logic (db connection, fs operations).
- Refactor `src/api/backup.ts` and `src/api/restore.ts` to use `BackupService`.
- Add unit tests for `BackupService` in `src/service/backup.test.ts`.
- Add API tests for backup and restore endpoints in `src/api/backup.test.ts` and `src/api/restore.test.ts`.
- Maintain existing functionality: uncompressed tar streaming, safe restore with rollback.
2026-02-15 05:30:33 +00:00
google-labs-jules[bot] a8f1ae7686 Add backup and restore system (tar only)
- Implement `GET /api/backup` to stream `data` directory as a tarball using `node-tar`.
- Implement `POST /api/restore` to accept and extract tarballs to the `data` directory.
- Update `BackupRestoreDialog` to accept `.tar` files and remove gzip references.
- Ensure safe restore with database connection management and rollback.
- Disabled Gzip compression as requested since assets are already compressed WebP files.
2026-02-15 05:22:01 +00:00
google-labs-jules[bot] 588a48e7f9 Add backup and restore system with gzip support
- Implement `GET /api/backup` to stream `data` directory as a gzipped tarball using `node-tar`.
- Implement `POST /api/restore` to accept and extract gzipped tarballs to the `data` directory, handling database disconnection/reconnection and rollbacks.
- Add `BackupRestoreDialog` UI component for downloading backups and uploading restore files.
- Integrate backup dialog trigger into the AppSidebar logo.
- Ensure type safety and add temporary integration tests for verification.
2026-02-15 05:16:03 +00:00
google-labs-jules[bot] 7381400d79 Add backup and restore functionality
- Add `GET /api/backup` endpoint to stream `data` directory as a tar file.
- Add `POST /api/restore` endpoint to handle tar file upload and restore.
- Implement `BackupRestoreDialog` in the UI for user interaction.
- Integrate backup/restore dialog into the sidebar via the logo.
- Ensure safe restore with rollback on failure and database connection management.
2026-02-15 05:07:36 +00:00
Yiling-J 92742b1272 Merge pull request #26 from Yiling-J/docs-update-readme-7271330270801183496
Update README
2026-02-15 12:08:40 +08:00
google-labs-jules[bot] 6952100ad6 docs: update README with project details, setup instructions, and key features 2026-02-15 04:03:45 +00:00
google-labs-jules[bot] a9c754a6bd docs: update README with project details and setup 2026-02-15 03:53:58 +00:00
Yiling-J 7de382a2c5 Merge pull request #25 from Yiling-J/docker-support-6109449474535310293
Add Docker support with multi-stage build and production serving
2026-02-15 11:41:35 +08:00
google-labs-jules[bot] 703badd7a2 feat: Add Dockerfile and production build support 2026-02-15 03:39:37 +00:00
Yiling-J 338558e990 Merge pull request #24 from Yiling-J/refactor-data-folder-10365341915644708364
Refactor data storage to `data/` folder and remove env files
2026-02-15 11:05:17 +08:00
google-labs-jules[bot] 8270715f5b Refactor data storage to data/ folder and remove env files
- Consolidate SQLite database and file storage into `data/` directory.
- Update `src/index.ts` to ensure `data` and `data/files` directories exist on startup.
- Update `src/db.ts` to use hardcoded `file:./data/data.db` path.
- Update `prisma.config.ts` to use absolute path to `data/data.db` for CLI compatibility.
- Update `.gitignore` to ignore `data/` directory entirely.
- Remove `.env.example` and `.env.test` as they are no longer needed.
- Fix TS2307 typecheck error by adding `*.webp` declaration to `src/env.d.ts`.
2026-02-15 03:02:24 +00:00
google-labs-jules[bot] bedf5670a8 Refactor data storage to data/ folder and remove env files
- Consolidate SQLite database and file storage into `data/` directory.
- Update `src/index.ts` to ensure `data` and `data/files` directories exist on startup.
- Update `src/db.ts` to use hardcoded `file:./data/data.db` path.
- Update `prisma.config.ts` to use absolute path to `data/data.db` for CLI compatibility.
- Update `.gitignore` to ignore `data/` directory entirely.
- Remove `.env.example` and `.env.test` as they are no longer needed.
2026-02-15 02:39:31 +00:00
yiling ji deb72c923f update env 2026-02-15 10:17:41 +08:00
yiling ji 233e289624 update ui 2026-02-15 10:04:20 +08:00
Yiling-J fd511c4af0 Merge pull request #23 from Yiling-J/infinite-scroll-9407279652325460799
Implement infinite scroll and pagination (limit 20)
2026-02-15 09:17:56 +08:00
google-labs-jules[bot] 261ba90ca4 feat: implement infinite scroll for all lists and set api limit to 20
- Added `useInfiniteScroll` hook using `react-intersection-observer`.
- Updated `PoseService` and `ExpressionService` to support pagination with mixed built-in and DB items.
- Updated `OutfitService` to support pagination.
- Updated `src/api/pose.ts`, `src/api/expression.ts`, `src/api/outfit.ts`, `src/api/character.ts` to accept `page`/`limit` (default limit 20).
- Refactored `Equipments`, `Characters`, `Poses`, `Expressions` pages to use infinite scroll.
- Refactored `CreateLookDialog` and `LoadOutfitDialog` to use infinite scroll.
- Updated `AGENTS.md` with new guidelines.
2026-02-14 15:18:02 +00:00
Yiling-J ea35643609 Merge pull request #22 from Yiling-J/redesign-create-look-dialog-13997618871008273386
Refine CreateLookDialog Layout
2026-02-14 16:53:46 +08:00
google-labs-jules[bot] 3e6ef3c7ab Refactor CreateLookDialog to use compact sidebar and 2-column grid
This change refines the `CreateLookDialog` layout to be more compact and user-friendly.

Key changes:
- Replaced the sidebar with a text-only vertical navigation bar (`w-32`) to maximize content space.
- Adjusted the equipment, pose, and expression grids to a fixed 2-column layout (`grid-cols-2`) for better item visibility and reduced density.
- Removed icons from sidebar buttons to streamline the interface.
- Updated `ScrollArea` components to correctly fill available height (`h-full`) to enable proper scrolling.
- Maintained the tabbed structure (Equipment, Pose, Expression, Instructions) and footer layout from the previous iteration.
2026-02-14 08:45:33 +00:00
google-labs-jules[bot] db22c3f271 Refactor CreateLookDialog to use compact sidebar and 2-column grid
This change refines the `CreateLookDialog` layout to be more compact and user-friendly.

Key changes:
- Replaced the sidebar with a text-only vertical navigation bar (`w-32`) to maximize content space.
- Adjusted the equipment grid to a fixed 2-column layout (`grid-cols-2`) for better item visibility and reduced density.
- Removed icons from sidebar buttons to streamline the interface.
- Maintained the tabbed structure (Equipment, Pose, Expression, Instructions) and footer layout from the previous iteration.
2026-02-14 08:26:08 +00:00
Yiling-J f5dbce1640 Merge pull request #21 from Yiling-J/feature-expression-customize-12480180928928972950
Add Expression Customization Feature
2026-02-14 15:13:34 +08:00
google-labs-jules[bot] aecad49192 feat: add expression customization
- Rename public/expressions files to expression_*.webp
- Add Expression model to Prisma schema
- Add expression field to Generation model
- Implement ExpressionService and API
- Update GenerationService to support expressions in AI prompt
- Add Expressions page and dialogs
- Update CreateLookDialog to include expression selector
- Add Expressions to sidebar and routing
2026-02-14 06:36:45 +00:00
yiling ji e3e38d2e9f add expressions 2026-02-14 13:49:07 +08:00
Yiling-J f323d9c69b Merge pull request #20 from Yiling-J/feature-custom-poses-12084446650630398805
Add custom poses support
2026-02-14 13:43:21 +08:00
google-labs-jules[bot] 6738e7f125 feat: add custom poses support
- Moved builtin poses to `public/poses`
- Added `Pose` model to schema and updated `Generation` model
- Created Pose Service and API
- Added Poses page to Frontend
- Updated CreateLookDialog to allow pose selection
- Updated Generation Service to handle pose instructions
- Added tests for Pose Service and Generation Service update
2026-02-14 04:51:24 +00:00
yiling ji 503b9ab6f3 add posegrid 2026-02-14 10:10:58 +08:00
Yiling-J 155744374d Merge pull request #19 from Yiling-J/refactor-equipment-single-select-and-fitting-room-header-13808441959024977531
feat: single select equipment category and updated fitting room header
2026-02-14 09:57:09 +08:00
yiling ji d6515e8c29 ui update 2026-02-13 21:27:20 +08:00
google-labs-jules[bot] a9dfa41083 feat: single select equipment category and updated fitting room header
- Refactored `Equipments` page to use single category selection.
- Updated `FittingRoom` page to use `PageHeader` component.
- Added `backButton` prop to `PageHeader` component to support navigation controls.
- Removed "Manage looks for" hint text from Fitting Room header.
2026-02-13 13:17:55 +00:00
Yiling-J 221dbea09f Merge pull request #18 from Yiling-J/extraction-grid-refactor-6576410645135316312
Refactor extraction to use grid-based splitting
2026-02-13 19:54:39 +08:00
google-labs-jules[bot] 50c0b0a943 Enhance extraction prompt for detail preservation
- Updated texture generation and refinement prompts to emphasize capturing and maintaining all details, materials, and patterns.
- Reverted analyze prompt to original state to avoid over-constraint.
2026-02-13 11:40:57 +00:00
google-labs-jules[bot] d18c4e771c Return texture sheet to client in extraction flow
- API: Emit 'texture_generated' event with sheet image and grid dimensions
- UI: Render generated texture sheet with grid overlay in ExtractorDialog
- Service: Expose getGridDimensions method publicly
2026-02-13 11:12:34 +00:00
google-labs-jules[bot] c887f6ebf0 Return texture sheet to client in extraction flow
- API: Emit 'texture_generated' event with sheet image and grid dimensions
- UI: Render generated texture sheet with grid overlay in ExtractorDialog
- Service: Expose getGridDimensions method publicly
2026-02-13 09:26:36 +00:00
google-labs-jules[bot] 2670930334 Refactor extraction to use grid-based splitting
- Removed AI-based bounding box detection
- Implemented deterministic grid calculation (1x3, 2x2, 2x3, 3x3)
- Updated extraction prompts to request specific grid layouts and white background
- Removed color assignment logic
- Updated ExtractedAsset interface
- Updated API to stream grid splitting status instead of detection status
- Updated tests to verify new logic and mock removal of color fields
- Removed "Detect Bounding Boxes" step from ExtractionFlowDesigner UI
2026-02-13 09:18:12 +00:00
google-labs-jules[bot] cfe624c5aa Refactor extraction to use grid-based splitting
- Removed AI-based bounding box detection
- Implemented deterministic grid calculation (1x3, 2x2, 2x3, 3x3)
- Updated extraction prompts to request specific grid layouts and white background
- Removed color assignment logic
- Updated ExtractedAsset interface
- Updated API to stream grid splitting status instead of detection status
- Updated tests to verify new logic and mock removal of color fields
2026-02-13 08:37:03 +00:00
Yiling-J 01cb28202d Merge pull request #17 from Yiling-J/feature-look-equipment-dialogs-7528901223240659226
feat: add clickable details dialogs for looks and equipment
2026-02-13 16:01:47 +08:00
google-labs-jules[bot] cf03f3e3d1 feat: switch details dialogs to top-down layout
- Updated `LookDetailsDialog` to use a top-down layout (image top, details bottom).
- Updated `EquipmentDetailsDialog` to use a top-down layout (image top, form bottom).
- Ensured images are contained and details are scrollable.
2026-02-13 07:58:03 +00:00
google-labs-jules[bot] f9407b0f27 feat: add clickable details dialogs for looks and equipment
- Added `LookDetailsDialog` to display full look image, prompt, and used equipment thumbnails.
- Updated `FittingRoom` page to open `LookDetailsDialog` on look click.
- Added `EquipmentDetailsDialog` to display full equipment image and allow editing name/description.
- Updated `Equipments` page to open `EquipmentDetailsDialog` on equipment click.
- Updated `GenerationService` to include equipment images in look details.
- Added `updateEquipment` to `EquipmentService` and `PATCH /equipments/:id` API endpoint.
- Added unit tests for equipment update functionality.
2026-02-13 07:52:30 +00:00
Yiling-J f592de52fd Merge pull request #16 from Yiling-J/feat-sticky-headers-and-settings-redesign-8421614059187835189
Make sticky headers transparent with separator
2026-02-13 12:23:28 +08:00
yiling ji 3b9b8daf2e update ui 2026-02-13 12:22:50 +08:00
google-labs-jules[bot] f9919107dd fix: make page header background opaque with background color 2026-02-13 03:05:05 +00:00
google-labs-jules[bot] 91303941c1 chore: remove verification files and update AGENTS.md 2026-02-13 02:50:30 +00:00
google-labs-jules[bot] 5192a4a9b4 fix: make page header background transparent and add separator 2026-02-13 02:47:26 +00:00
Yiling-J 63be1a890c Merge pull request #15 from Yiling-J/add-outfit-system-17834985661084869632
Add Outfit System
2026-02-13 10:21:33 +08:00
yiling ji ee1d5872a3 some style change 2026-02-11 23:13:42 +08:00
google-labs-jules[bot] a33545be6e feat: Add Outfit system and update docs
- Added `Outfit` model and migration.
- Implemented backend service and API for outfits.
- Added frontend support for outfits management (create, list, delete, load, save).
- Updated `AGENTS.md` with Prisma migration guidelines.
2026-02-11 09:20:40 +00:00
yiling ji d31e849e96 update agents.md 2026-02-11 16:07:43 +08:00
Yiling-J 6fe2f3c25e Merge pull request #14 from Yiling-J/update-character-list-ui-4219165027559735141
Update Character List UI
2026-02-10 23:02:19 +08:00
google-labs-jules[bot] d630c6cc59 style: update VibeCard image style
- Update `src/ui/components/VibeCard.tsx` to use `object-cover object-top` for the image, ensuring it fills the card area nicely.
2026-02-10 15:00:36 +00:00
google-labs-jules[bot] c51a29d0ca refactor: extract VibeCard component
- Create `src/ui/components/VibeCard.tsx` as a reusable component for the "vibe coded" card UI.
- Refactor `src/ui/pages/Characters.tsx` to use `VibeCard`.
- Refactor `src/ui/pages/Equipments.tsx` to use `VibeCard`.
2026-02-10 14:54:02 +00:00
google-labs-jules[bot] 9b7cc76cab feat: update character list UI with vibe coded design
- Update `CharacterService` to include generation counts (`_count.generations`) in the list response.
- Update `CharacterAPI` to map `_count.generations` to a flat `looksCount` field.
- Add new CSS classes (`clip-path-slant`, `clip-path-hex`, `scanline`, `font-display`) to `src/ui/index.css`.
- Revamp `src/ui/pages/Characters.tsx` to use the new card design with color bars, looks count, and improved visuals.
- Replaced "System // Operator_Select" with "System // Character_Select", "Select Operator" with "Characters", and "UNITS" with "COUNT".
- Remove `src/ui/CharacterListDemo.tsx`.
2026-02-10 14:15:10 +00:00