Commit Graph
125 Commits
Author SHA1 Message Date
google-labs-jules[bot] 85e633d201 Docs: Revamp README with improved structure, correct tech stack, and restored logo
- Restored the centered logo `<div>` block at the top as requested.
- Replaced generic intro with "Why Forgery?", "Highlights", and "Core Concepts" sections derived from marketing copy.
- Corrected tech stack information (Bun, Hono, React, SQLite) to match the codebase.
- Replaced incorrect `curl` demos with a UI-focused "How It Works" workflow.
- Updated installation instructions to use `bun` commands.
- Added "Architecture Overview" to explain the modular pipeline.
2026-02-16 06:12:45 +00:00
google-labs-jules[bot] 017b4587f6 Docs: Revamp README with improved structure and correct tech stack
- Replaced generic intro with "Why Forgery?", "Highlights", and "Core Concepts" sections derived from marketing copy.
- Corrected tech stack information (Bun, Hono, React, SQLite) to match the codebase.
- Replaced incorrect `curl` demos with a UI-focused "How It Works" workflow.
- Updated installation instructions to use `bun` commands.
- Added "Architecture Overview" to explain the modular pipeline.
2026-02-16 06:07:57 +00:00
yiling ji db256185f5 update refine prompt 2026-02-16 13:43:59 +08:00
Yiling-J 78f8c84f03 Merge pull request #32 from Yiling-J/update-refine-prompt-17971344056863413798
Update refine prompt to remove border artifacts
2026-02-16 13:43:28 +08:00
google-labs-jules[bot] e75377ef3b Update refine prompt and add crop padding to remove border artifacts 2026-02-16 05:23:57 +00:00
google-labs-jules[bot] 46cc219b58 Update refine prompt and add crop padding to remove border artifacts 2026-02-16 05:17:49 +00:00
google-labs-jules[bot] 54a168bcb4 Update refine prompt and add crop padding to remove border artifacts 2026-02-16 04:53:20 +00:00
google-labs-jules[bot] be3fc30f33 Update refine prompt to remove border artifacts 2026-02-16 04:39:54 +00:00
Yiling-J 46eb0b2d61 Merge pull request #31 from Yiling-J/add-example-data-seeding-14730136673616286047
Add example data seeding on startup
2026-02-16 12:23:13 +08:00
google-labs-jules[bot] bb49929a63 feat: Add example data seeding on startup
- Implement `ExampleDataService` to export/import Characters, Equipments, Poses, Expressions, and Generations.
- Add `generate-example` script to `package.json` to generate example data from current DB.
- Add startup logic in `src/index.ts` to seed example data if system is uninitialized and no data exists.
- Store system initialization state in `Setting` table.
- Add comprehensive tests for `ExampleDataService` in `src/service/example-data.test.ts` mocking `Bun` file API and `node:fs`.
- Refactor `src/service/example-data.ts` to use `Bun.file` and `Bun.write` for file I/O, ensuring better compatibility with Bun's test runner.
2026-02-16 04:19:27 +00:00
google-labs-jules[bot] efc3b9b554 feat: Add example data seeding on startup
- Implement `ExampleDataService` to export/import Characters, Equipments, Poses, Expressions, and Generations.
- Add `generate-example` script to `package.json` to generate example data from current DB.
- Add startup logic in `src/index.ts` to seed example data if system is uninitialized and no data exists.
- Store system initialization state in `Setting` table.
- Add comprehensive tests for `ExampleDataService` in `src/service/example-data.test.ts` mocking filesystem and database operations.
- Refactor `src/service/example-data.ts` to use default `node:fs` import for better test compatibility.
2026-02-16 04:09:40 +00:00
google-labs-jules[bot] 8986dd6b81 feat: Add example data seeding on startup
- Implement `ExampleDataService` to export/import Characters, Equipments, Poses, Expressions, and Generations.
- Add `generate-example` script to `package.json` to generate example data from current DB.
- Add startup logic in `src/index.ts` to seed example data if system is uninitialized and no data exists.
- Store system initialization state in `Setting` table.
- Add comprehensive tests for `ExampleDataService` in `src/service/example-data.test.ts` mocking filesystem and database operations.
2026-02-16 03:44:57 +00:00
google-labs-jules[bot] b04a011c2b feat: Add example data seeding on startup
- Implement `ExampleDataService` to export/import Characters, Equipments, Poses, Expressions, and Generations.
- Add `generate-example` script to `package.json` to generate example data from current DB.
- Add startup logic in `src/index.ts` to seed example data if system is uninitialized and no data exists.
- Store system initialization state in `Setting` table.
- Add comprehensive tests for `ExampleDataService` in `src/service/example-data.test.ts` mocking filesystem and database operations.
2026-02-16 03:38:04 +00:00
google-labs-jules[bot] dcfb885a01 feat: Add example data seeding on startup
- Implement `ExampleDataService` to export/import Characters, Equipments, Poses, Expressions, and Generations.
- Add `generate-example` script to `package.json` to generate example data from current DB.
- Add startup logic in `src/index.ts` to seed example data if system is uninitialized and no data exists.
- Store system initialization state in `Setting` table.
- Add comprehensive tests for `ExampleDataService` in `src/service/example-data.test.ts` mocking filesystem and database operations.
2026-02-16 03:32:05 +00:00
Yiling-J 790ecf27a0 Merge pull request #30 from Yiling-J/feat-equipment-extraction-confirm-16289701959854915767
Add confirmation step to equipment extraction
2026-02-16 10:56:00 +08:00
google-labs-jules[bot] 45f7d0b2ef fix: allow deleting equipment
- Add `DELETE /api/equipments/:id` endpoint.
- Add `deleteEquipment` method to `EquipmentService` which also cleans up associated assets and generation references.
- Implement delete action in `Equipments` page UI.
- Pass `actions` prop to `VibeCard` to enable context menu.
2026-02-16 02:55:09 +00:00
google-labs-jules[bot] b2f6869563 feat: add confirmation step to equipment extraction
Split the equipment extraction process into two phases:
1. Analyze & Split: Generates texture sheet and crops assets.
2. Refine & Save: Allows user to select which assets to keep before refining and saving.

- Refactored `src/api/extract.ts` to expose `/analyze` and `/refine` endpoints.
- Updated `src/ui/components/ExtractorDialog.tsx` to handle the multi-step flow and selection UI.
- Added `CandidateAsset` type and updated `ExtractionStatus` in `src/ui/types.ts`.
2026-02-16 02:39:37 +00:00
Yiling-J d8cc081023 Merge pull request #29 from Yiling-J/delete-functionality-and-ui-tweaks-5663815655053873953
Implement cascading deletion and UI tweaks
2026-02-16 10:06:08 +08:00
yiling ji a611b68143 update vibe card style 2026-02-16 10:03:44 +08:00
google-labs-jules[bot] 8e22e3808c feat: implement deletion and ui tweaks
- Added `deleteFile` to `FileService` and `deleteAsset` to `AssetService` to support file deletion.
- Implemented cascading deletion in `CharacterService` (delete looks -> delete character image -> delete character).
- Updated `GenerationService`, `PoseService`, and `ExpressionService` to delete associated image assets upon deletion.
- Added `DELETE /api/generations/:id` endpoint.
- Created `DropdownMenu` and `DeleteConfirmDialog` UI components.
- Updated `VibeCard` to include an internal `DropdownMenu` driven by a new `actions` prop.
- Updated `Characters`, `Poses`, and `Expressions` pages to use the new `VibeCard` `actions` prop for deletion.
- Updated `FittingRoom` page to use the `DropdownMenu` and `DeleteConfirmDialog` for deleting looks.
- Updated `CreateLookDialog` to enforce single selection for equipment categories.
- Added necessary tests adjustments.
2026-02-16 01:58:45 +00:00
google-labs-jules[bot] 0373a8b43c feat: implement character/asset deletion and ui tweaks
- Added `deleteFile` to `FileService` and `deleteAsset` to `AssetService` to support file deletion.
- Implemented cascading deletion in `CharacterService` (delete looks -> delete character image -> delete character).
- Updated `GenerationService`, `PoseService`, and `ExpressionService` to delete associated image assets upon deletion.
- Added `DELETE /api/generations/:id` endpoint.
- Created `DropdownMenu` and `DeleteConfirmDialog` UI components.
- Updated `Characters`, `Poses`, `Expressions`, and `FittingRoom` pages to use the new delete UI (3-dot menu + confirmation).
- Updated `CreateLookDialog` to enforce single selection for equipment categories.
- Added necessary tests adjustments.
2026-02-16 01:41:32 +00:00
Yiling-J 0d1cd167ed Merge pull request #28 from Yiling-J/optimize-image-upload-11326080443017578345
Optimize Image Uploads
2026-02-15 22:15:32 +08:00
google-labs-jules[bot] a433927de7 Optimize image uploads to 2k webp 2026-02-15 14:10:07 +00:00
yiling ji 16b3ab2bc0 update pose images 2026-02-15 15:50:08 +08:00
Yiling-J b2640a59e8 Merge pull request #27 from Yiling-J/feature-backup-restore-6292895868242646111
Add Backup and Restore System
2026-02-15 15:38:37 +08:00
google-labs-jules[bot] b228376598 Refactor backup tests to mock fs and prevent CI race conditions
- Update `src/service/backup.test.ts` to fully mock `node:fs` methods (`existsSync`, `renameSync`, `mkdirSync`, `rmSync`).
- This prevents the test from interacting with the real file system, eliminating the `ENOENT` race condition error observed in CI pipelines.
- Ensures the test is idempotent and safely verifies the service logic without side effects.
- Verified all 49 tests pass locally.
2026-02-15 07:26:59 +00:00
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