Commit Graph
55 Commits
Author SHA1 Message Date
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
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
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
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 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
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] 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
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 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] 5192a4a9b4 fix: make page header background transparent and add separator 2026-02-13 02:47:26 +00: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
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
google-labs-jules[bot] 3d4caeb971 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.
- Remove `src/ui/CharacterListDemo.tsx`.
2026-02-10 13:22:35 +00:00
yiling ji f825e4db02 add character list demo page 2026-02-10 20:30:18 +08:00
google-labs-jules[bot] 272c06c585 feat: add user prompt to generation
- Update `Generation` model to include `userPrompt`.
- Update `GenerationService` to accept and use `userPrompt` in AI prompt.
- Update `Generation` API to accept `userPrompt`.
- Update `CreateLookDialog` to include an input for `userPrompt`.
- Add tests for `userPrompt` functionality.
- Install `dotenv` for prisma migrations.
2026-02-10 02:34:01 +00:00
google-labs-jules[bot] de31b29404 Rename "Outfit" to "Look" in Fitting Room
Renames the terminology in the Fitting Room feature from "Outfit" to "Look" to better align with future feature plans (where "Outfit" will refer to equipment combinations).

Changes include:
- Renaming `CreateOutfitDialog.tsx` to `CreateLookDialog.tsx`.
- Updating the route from `/characters/:id/outfits` to `/characters/:id/looks`.
- Updating all UI text and internal variable names in the affected components.
- Updating navigation in `Characters.tsx`.
2026-02-10 01:54:28 +00:00
google-labs-jules[bot] aba5b72659 Fix sticky header and add generation model selector to settings 2026-02-10 01:23:23 +00:00
google-labs-jules[bot] 4f0977c33e Refactor GenerationService to use UnifiedAIService.generateImage with OpenAI Responses API support 2026-02-10 01:07:28 +00:00
yiling ji 4778f919bc prettier 2026-02-09 23:40:01 +08:00
yiling ji 92bd366f0b fix lint 2026-02-09 23:12:10 +08:00
yiling ji c40a841a9a fix prisma 2026-02-09 23:08:52 +08:00
google-labs-jules[bot] d260dbb198 feat: Add AI provider settings and update UI layout
- Add `Setting` model to Prisma schema for storing API keys and model configs.
- Implement `SettingService` and API for managing application settings.
- Refactor `src/service/ai.ts` to `UnifiedAIService` supporting dynamic OpenAI and Google provider selection.
- Add Settings page (`src/ui/pages/Settings.tsx`) to configure providers and default models.
- Update `AppSidebar` to include Settings, use text-under-icon style, and decrease sidebar width to 4.5rem.
- Update `Layout` to move "Forgery" title to header and add GitHub link.
- Add unit tests for `SettingService` and `UnifiedAIService`, mocking database interactions to resolve test environment issues.
- Fix API URL path for settings in frontend client.
2026-02-09 14:58:16 +00:00
google-labs-jules[bot] ee4ab2d9d1 feat: Add AI provider settings and update UI layout
- Add `Setting` model to Prisma schema for storing API keys and model configs.
- Implement `SettingService` and API for managing application settings.
- Refactor `src/service/ai.ts` to `UnifiedAIService` supporting dynamic OpenAI and Google provider selection.
- Add Settings page (`src/ui/pages/Settings.tsx`) to configure providers and default models.
- Update `AppSidebar` to include Settings, use text-under-icon style, and increase icon size.
- Update `Layout` to move "Forgery" title to header and add GitHub link.
- Add unit tests for `SettingService` and `UnifiedAIService`.
2026-02-09 14:28:31 +00:00
google-labs-jules[bot] f052e1bf8f feat: add character creation and fitting room ui
- Implemented `Character Creation` flow with dialog and image upload.
- Implemented `Fitting Room` page with split view (Character Preview / Generations).
- Implemented `Create Outfit` dialog with equipment filtering and selection.
- Added `POST /api/generations` to handle outfit generation.
- Updated `AIService` to support complex prompt structure with interleaved text and images.
- Updated `CharacterService` to support fetching single character.
- Added frontend routes and components.
- Added relevant tests.
- Fixed lint issues and updated UI sizing to 150px.
2026-02-09 08:56:04 +00:00
google-labs-jules[bot] cc024a0aea feat: add character creation and fitting room ui
- Implemented `Character Creation` flow with dialog and image upload.
- Implemented `Fitting Room` page with split view (Character Preview / Generations).
- Implemented `Create Outfit` dialog with equipment filtering and selection.
- Added `POST /api/generations` to handle outfit generation.
- Updated `AIService` to support complex prompt structure with interleaved text and images.
- Updated `CharacterService` to support fetching single character.
- Added frontend routes and components.
- Added relevant tests.
2026-02-09 00:10:59 +00:00
yiling ji 6d43ce96d5 fix lint 2026-02-08 23:01:23 +08:00
yiling ji 5ebad7befe update shadcn 2026-02-08 22:51:06 +08:00
google-labs-jules[bot] 7f837ead71 feat: add sidebar, characters page, and equipments page with filter
- Add `react-router-dom` for client-side routing.
- Add `shadcn` components: `Sidebar`, `Dialog`, `Button`, `ScrollArea`, `Avatar`, `Badge`, `Card`, `Sheet`, `Tooltip`, `Separator`, `Input`, `Label`.
- Implement `AppSidebar` with navigation to Characters and Equipments.
- Implement `Characters` page displaying character avatars.
- Implement `Equipments` page with:
  - Horizontal scrollable category filter (multi-select).
  - Equipment grid layout.
  - "Extract Equipment" button opening a `Dialog` (refactored from `Extractor` component, maintaining original UI design).
  - Added support for pasting images directly into the Extractor Dialog.
- Update `Equipment` API and Service to support filtering by multiple categories.
- Add database index to `Equipment` table on `[category, subCategory]`.
- Refactor `App.tsx` and `Layout.tsx` to use the new routing and sidebar structure.
- Remove legacy `Stash` and `Extractor` components.
2026-02-08 14:39:35 +00:00
google-labs-jules[bot] 6991642f69 feat: add sidebar, characters page, and equipments page with filter
- Add `react-router-dom` for client-side routing.
- Add `shadcn` components: `Sidebar`, `Dialog`, `Button`, `ScrollArea`, `Avatar`, `Badge`, `Card`, `Sheet`, `Tooltip`, `Separator`, `Input`, `Label`.
- Implement `AppSidebar` with navigation to Characters and Equipments.
- Implement `Characters` page displaying character avatars.
- Implement `Equipments` page with:
  - Horizontal scrollable category filter (multi-select).
  - Equipment grid layout.
  - "Extract Equipment" button opening a `Dialog` (refactored from `Extractor` component but maintaining original UI design).
- Update `Equipment` API and Service to support filtering by multiple categories.
- Add database index to `Equipment` table on `[category, subCategory]`.
- Refactor `App.tsx` and `Layout.tsx` to use the new routing and sidebar structure.
- Remove legacy `Stash` and `Extractor` components.
2026-02-08 14:00:47 +00:00
google-labs-jules[bot] bc3102a660 feat: add sidebar, characters page, and equipments page with filter
- Add `react-router-dom` for client-side routing.
- Add `shadcn` components: `Sidebar`, `Dialog`, `Button`, `ScrollArea`, `Avatar`, `Badge`, `Card`, `Sheet`, `Tooltip`, `Separator`, `Input`, `Label`.
- Implement `AppSidebar` with navigation to Characters and Equipments.
- Implement `Characters` page displaying character avatars.
- Implement `Equipments` page with:
  - Horizontal scrollable category filter (multi-select).
  - Equipment grid layout.
  - "Extract Equipment" button opening a `Dialog` (refactored from `Extractor` component).
- Update `Equipment` API and Service to support filtering by multiple categories.
- Add database index to `Equipment` table on `[category, subCategory]`.
- Refactor `App.tsx` and `Layout.tsx` to use the new routing and sidebar structure.
- Remove legacy `Stash` and `Extractor` components.
2026-02-08 12:26:17 +00:00
google-labs-jules[bot] 44291666e7 feat: replace Category table with string fields in Equipment
- Removed Category table from schema.prisma
- Updated Equipment table to use string `category` and `subCategory`
- Created `src/lib/categories.ts` with hardcoded categories
- Updated `ExtractionService` to use hardcoded categories and "Others" fallback
- Updated `Extract` API to stream `asset_refined` events
- Updated Frontend to handle new data structure and SSE events
- Updated tests to reflect changes
2026-02-08 09:10:22 +00:00
Yiling-J b60c7448f5 Merge pull request #6 from Yiling-J/fix-extraction-test-mocks-3801222500713040204
Fix test pollution by removing unused global mocks in extraction service
2026-02-08 13:23:38 +08:00
yiling ji 772971ab95 fix gemini schema 2026-02-08 13:22:39 +08:00
google-labs-jules[bot] f903873f16 Remove unused global mocks from extraction service tests
- Removed unused `mock.module` calls for `file`, `category`, `asset`, and `equipment` services in `src/service/extraction.test.ts`.
- These mocks were causing global pollution and interfering with `src/service/file.test.ts`, causing it to fail.
- Verified that `extraction.test.ts` and `file.test.ts` now pass independently and together.
2026-02-08 05:19:33 +00:00
yiling ji 35c91ec17a change idle timeout 2026-02-08 12:57:39 +08:00
yiling ji dd7afeeb71 update 2026-02-08 12:56:04 +08:00
google-labs-jules[bot] ed54192f4a refactor: Convert service methods from static to instance methods
- Refactored `AssetService`, `CategoryService`, `CharacterService`, `EquipmentService`, `FileService`, `ExtractionService`, `GenerationService` to use instance methods.
- Exported singleton instances for each service.
- Updated all API routes to use the exported service instances.
- Updated all tests to use and mock service instances.
- Updated `AGENTS.md` to reflect the new service layer pattern.
- Verified changes with lint, format, typecheck, and test.
2026-02-08 04:13:21 +00:00
google-labs-jules[bot] 36d917eadd Refactor Hono API routes for typed RPC client & lint fixes 2026-02-08 03:05:02 +00:00
yiling ji 51252249eb fix format 2026-02-08 10:32:56 +08:00
google-labs-jules[bot] c944cff76b Fix lint/typecheck/test issues and refactor UI types
- Add `.env` to `.gitignore` and create `.env.example`.
- Install `@modelcontextprotocol/sdk` to fix type errors.
- Fix linting issues (unused vars, error handling) in `src/api/extract.ts` and `src/service/ai.ts`.
- Fix typecheck errors in `src/service/file.ts` (Buffer types) and `src/service/ai.ts` (GenAI types).
- Update `tsconfig.json` to use React JSX and skip lib checks.
- Fix tests in `src/service/asset.test.ts` (mocking `Bun.write`) and `src/api/equipment.test.ts`.
- Refactor `src/ui/components/Stash.tsx` and `src/ui/components/Extractor.tsx` to infer types from Hono client.
- Simplify `src/ui/types.ts` by removing redundant types.
2026-02-08 01:58:12 +00:00