Commit Graph
100 Commits
Author SHA1 Message Date
matthias f1c61fd14e feat(canvas): separate mixer resize and crop semantics 2026-04-15 08:31:53 +02:00
matthias 61728f9e52 fix(canvas): prevent AbortSignal cloning in render worker 2026-04-11 11:23:02 +02:00
matthias f499aea691 feat(canvas): add mixer drag-resize and mixer->render bake 2026-04-11 10:03:41 +02:00
matthias ae2fa1d269 feat(canvas): improve collapsed sidebar scanability and branding 2026-04-11 08:49:05 +02:00
matthias 028fce35c2 feat(canvas): finalize mixer reconnect swap and related updates 2026-04-11 07:42:42 +02:00
matthias f3dcaf89f2 feat(canvas): replace sidebar fade with progressive blur 2026-04-11 07:25:27 +02:00
matthias 9732022461 feat(agent): add structured outputs and media archive support 2026-04-10 19:01:04 +02:00
matthias a1df097f9c feat(media): add Convex media archive with backfill and mixed-media library 2026-04-10 15:15:44 +02:00
matthias ddb2412349 feat(agent): localize generated agent workflow 2026-04-10 13:56:11 +02:00
matthias 66646bd62f fix(dashboard): stabilize cached snapshot references
Memoize cached dashboard snapshots so chart data stays referentially stable while live data loads. Add a regression test for cache-only parent rerenders to prevent the Recharts update loop when returning from canvas.
2026-04-10 13:56:00 +02:00
matthias 463830f178 feat(canvas): implement local node size pinning and reconciliation logic
- Added functions to handle local node size pins, ensuring that node sizes are preserved during reconciliation.
- Updated `reconcileCanvasFlowNodes` to incorporate size pinning logic.
- Enhanced tests to verify the correct behavior of size pinning in various scenarios.
- Updated related components to support new size pinning functionality.
2026-04-10 08:48:34 +02:00
matthias 26d008705f feat(agent): add execution-plan skeleton workflow 2026-04-09 21:11:21 +02:00
matthias 29c93eeb35 feat(agent): implement phase 2 runtime and inline clarification 2026-04-09 14:28:27 +02:00
matthias b08e448be0 feat(canvas): add persistent node favorites with toolbar star and glow 2026-04-09 14:12:43 +02:00
matthias e4d39a21fd Add medium gray drop shadow to nodes in light mode 2026-04-09 14:12:16 +02:00
matthias 6d0c7b1ff6 Implement agent node functionality in canvas, including connection policies and UI updates. Add support for agent node type in node catalog, templates, and connection validation. Update documentation to reflect new agent capabilities and ensure proper handling of input sources. Enhance adjustment preview to include crop node. Add tests for agent connection policies. 2026-04-09 10:06:53 +02:00
matthias 87d78e4c99 Merge branch 'perf-convex-graph-query' 2026-04-08 12:50:15 +02:00
matthias 90e36a5c15 perf(canvas): reduce Convex hot-path query load 2026-04-08 12:49:23 +02:00
matthias 96d9c895ad merge(feature/curious-star): integrate worktree changes into master 2026-04-08 08:14:20 +02:00
matthias 1bc0611ce3 fix(openrouter): use model-specific request modalities for image generation 2026-04-08 07:49:30 +02:00
matthias d145cebe75 feat(ai): enable all image models with server-side tier enforcement 2026-04-08 07:21:30 +02:00
matthias b5ade3fe73 feat(ai): add full image model catalog and tier filters 2026-04-08 07:21:30 +02:00
matthias 3c1698937e chore(lint): resolve react-hooks rule violations 2026-04-08 06:59:36 +02:00
matthias a8386742bf fix(canvas): harmonize prompt model defaults for edge insertions 2026-04-08 02:40:23 +02:00
matthias 91fdd6c143 feat(canvas): add tier-aware model selector to prompt node 2026-04-07 23:27:21 +02:00
matthias 39d435d58e feat(ai): enable all image models with server-side tier enforcement 2026-04-07 21:48:35 +02:00
matthias 3c161ac9a6 feat(ai): add full image model catalog and tier filters 2026-04-07 21:45:51 +02:00
matthias 2d89c0620f chore(convex): refresh generated api types 2026-04-07 09:22:46 +02:00
matthias 3554577349 Merge branch 'refactor/convex-ai-modularization' 2026-04-07 09:21:57 +02:00
matthias c10839b27e refactor(convex): modularize ai generation helpers and cleanup flows 2026-04-07 09:21:40 +02:00
matthias 2e8cb7fd85 feat(canvas, convex, lib): integrate AI video generation capabilities and enhance documentation
- Expanded the AI pipeline to support video generation, including the addition of `video-prompt` and `ai-video` node types.
- Updated connection policies to validate interactions between new video nodes and existing node types.
- Enhanced logging and error handling for video generation processes, including detailed polling strategies and response formats.
- Updated documentation to reflect new node types, their functionalities, and integration details within the canvas and backend systems.
- Ensured synchronization between client-side and backend model definitions for both image and video generation.
2026-04-07 09:20:57 +02:00
matthias ed08b976f9 feat(canvas): add video-prompt node and enhance video generation support
- Introduced a new node type "video-prompt" for AI video generation, including its integration into the canvas command palette and node template picker.
- Updated connection validation to allow connections from text nodes to video-prompt and from video-prompt to ai-video nodes.
- Enhanced error handling and messaging for video generation failures, including specific cases for provider issues.
- Added tests to validate new video-prompt functionality and connection policies.
- Updated localization files to include new labels and prompts for video-prompt and ai-video nodes.
2026-04-07 08:50:59 +02:00
matthias 456b910532 feat(docs): update LemonSpace manifest and PRD for v2.0 release
- Updated version from v1.5 to v2.0 in both the LemonSpace Manifest and PRD documents.
- Expanded Phase 1 scope to include video and asset nodes, and integrated non-destructive image editing capabilities.
- Enhanced node taxonomy to reflect 6 categories with 27 node types.
- Added details on offline sync features and optimistic updates in the documentation.
- Improved clarity and structure of the product vision and problem statement sections.
2026-04-06 22:27:21 +02:00
matthias 36e8b7d3db refactor(canvas): remove unused animation and optimize edge insertion timing
- Removed the unused CSS animation for edge insertion to streamline the codebase.
- Updated the edge insertion reflow duration from 1297ms to 997ms for improved performance.
- Refactored transition timing function for edge insertion to enhance animation smoothness.
- Cleaned up related test cases to reflect the changes in edge insertion logic.
2026-04-06 21:30:56 +02:00
matthias b7771764d8 feat(canvas): enhance edge insertion animations and update reflow duration
- Added a new CSS animation for edge insertion to improve visual feedback during node creation.
- Updated the edge insertion reflow duration from 997ms to 1297ms for smoother transitions.
- Refactored related components to support the new animation and ensure consistent behavior across the canvas.
- Enhanced tests to validate the new edge insertion features and animations.
2026-04-06 11:08:32 +02:00
matthias b47720a50b refactor(canvas): update edge insertion reflow duration and transition timing
- Reduced the edge insertion reflow duration from 1297ms to 997ms for improved performance.
- Changed the transition timing function to a cubic-bezier for smoother animations in the canvas.
2026-04-05 23:32:00 +02:00
matthias fa6a41f775 feat(canvas): implement edge insertion reflow and enhance connection validation
- Introduced a new CSS transition for edge insertion reflowing to improve visual feedback during node adjustments.
- Enhanced the connection validation logic to include options for optimistic edges, ensuring better handling of edge creation scenarios.
- Updated the canvas connection drop menu to support additional templates and improved edge insertion handling.
- Refactored edge insertion logic to accommodate local node position adjustments during reflow operations.
- Added tests for new edge insertion features and connection validation improvements.
2026-04-05 23:25:26 +02:00
matthias 7c34da45b4 feat(canvas): enhance edge insertion and local node data handling
- Added support for new edge insertion features, including default edge types and improved layout calculations.
- Introduced local node data persistence during flow reconciliation to ensure data integrity.
- Updated connection drop menu to handle edge insertions and node interactions more effectively.
- Enhanced testing for edge insert layout and local node data management.
2026-04-05 21:26:20 +02:00
matthias de37b63b2b feat(canvas): accelerate local previews and harden edge flows 2026-04-05 17:28:43 +02:00
matthias 451ab0b986 fix(image-pipeline): diagnose and stabilize webgl preview path 2026-04-05 11:28:42 +02:00
matthias 12cd75c836 refactor(canvas): integrate graph-based handling for image source resolution and pipeline steps 2026-04-04 10:28:20 +02:00
matthias 90d6fe55b1 feat(canvas): implement dropped connection resolution and enhance connection handling 2026-04-04 09:56:01 +02:00
matthias 12202ad337 fix(canvas): default render compares to preview mode 2026-04-04 08:06:35 +02:00
matthias 8f2c3192d8 fix(canvas): restore compare previews for render inputs 2026-04-04 07:53:36 +02:00
matthias 376291a193 fix(canvas): cover drop regressions and lint 2026-04-03 23:19:58 +02:00
matthias 1bf1fd4a1b refactor(canvas): extract drop handling hook 2026-04-03 23:12:30 +02:00
matthias c8597169a1 fix(canvas): align connection hook mutation types 2026-04-03 23:05:26 +02:00
matthias 58faf12d75 chore(test): remove unintended canvas hook coverage 2026-04-03 23:03:18 +02:00
matthias 59658cb8be refactor(canvas): extract connection handling hook 2026-04-03 22:59:47 +02:00
matthias 47cb167bd3 fix(canvas): use resolved ids for drag edge splits 2026-04-03 22:48:56 +02:00
matthias 81edfa6da7 fix(canvas): reject invalid edge splits before mutation 2026-04-03 22:38:20 +02:00
matthias 99cd1b5233 chore(test): remove unintended task 5 coverage 2026-04-03 22:21:40 +02:00
matthias dee10405d2 refactor(canvas): extract node interaction hook 2026-04-03 22:18:42 +02:00
matthias ffd7f389b8 test(canvas): cover flow resize lock
Add hook-level regression coverage proving useCanvasFlowReconciliation preserves local node state while the shared resize lock is active. The test harness now supports driving the resize ref the same way production interactions do.
2026-04-03 22:09:17 +02:00
matthias d7b0720474 test(vitest): discover flow reconciliation hook test
Add the planned Task 4 test path to the explicit canvas test include list so normal Vitest discovery runs components/canvas/__tests__/use-canvas-flow-reconciliation.test.ts without temporary config overrides.
2026-04-03 22:03:22 +02:00
matthias 9fb850f2a4 fix(canvas): align flow reconciliation hook with task plan
Rename the hook test to the planned path, revert the persistent Vitest config tweak, and narrow the hook inputs to reconciliation data plus shared refs. Keep verification working with a temporary test config instead of expanding the repo-level include list.
2026-04-03 22:01:18 +02:00
matthias d1c14c93e5 refactor(canvas): extract flow reconciliation hook
Move Convex-to-local node and edge reconciliation into a dedicated hook so canvas.tsx has a cleaner sync boundary during modularization. Add hook-level tests for optimistic edge carry and drag-lock behavior to preserve the existing UX.
2026-04-03 21:36:02 +02:00
matthias 5223d3d8d7 fix(canvas): refresh sync engine hook dependencies 2026-04-03 21:26:24 +02:00
matthias c060c57ad8 refactor(canvas): extract sync engine hook 2026-04-03 21:11:04 +02:00
matthias f2f22b66a7 test(canvas): expand reconciliation helper coverage 2026-04-03 20:51:21 +02:00
matthias 297816c5ca test(vitest): include canvas component tests 2026-04-03 20:45:22 +02:00
matthias 928fd81904 refactor(canvas): extract flow reconciliation helpers 2026-04-03 20:42:47 +02:00
matthias 16ad9e48f4 docs(canvas): remove extraction scratch note 2026-04-03 20:32:33 +02:00
matthias 859aad4438 docs(canvas): annotate modularization seams 2026-04-03 20:30:35 +02:00
matthias cdcd819a44 docs(canvas): add modularization strategy 2026-04-03 20:26:39 +02:00
matthias 4fad69a151 fix(canvas): ensure valid source and target node IDs when creating synthetic edges 2026-04-03 20:15:23 +02:00
matthias d7d715fd03 fix(convex): rename helper modules to valid convex paths 2026-04-03 19:59:50 +02:00
matthias 081bf13e04 feat(a11y): add live region feedback for auth and billing flows 2026-04-03 19:47:56 +02:00
matthias 8ed9adf6f8 chore(lint): resolve remaining warnings and ignore generated convex artifacts 2026-04-03 19:41:34 +02:00
matthias 0173d5c604 fix(canvas): avoid server persistence for download-only renders 2026-04-03 19:39:31 +02:00
matthias d320ff47b0 refactor(canvas): extract data and storage url orchestration from canvas 2026-04-03 19:31:05 +02:00
matthias fb005f3cce refactor(billing): derive subscription product credits from shared tier map 2026-04-03 19:25:03 +02:00
matthias 8639478a11 refactor(config): unify tier credit constants across frontend and backend 2026-04-03 19:20:28 +02:00
matthias 7e87a74df9 feat(canvas): move image pipeline rendering off main thread with worker fallback 2026-04-03 19:17:42 +02:00
matthias 7e1a77c38c refactor(canvas): debounce and extract local snapshot persistence 2026-04-03 19:10:07 +02:00
matthias 234da6f7d7 refactor(app): scope heavy providers to authenticated route layouts 2026-04-03 19:01:48 +02:00
matthias df2a6c1759 refactor(app): move auth gating and metadata to server-first patterns 2026-04-03 18:55:13 +02:00
matthias 9c8cd364b4 feat(a11y): improve keyboard and semantic controls in core UI 2026-04-03 18:54:04 +02:00
matthias 8dd1d1bb7c refactor(billing): centralize tier credits and align topup UI 2026-04-03 18:53:21 +02:00
matthias 609e4fca20 fix(canvas): separate download from upload side effects 2026-04-03 18:52:54 +02:00
matthias 68416ed9de test: add vitest baseline for critical payment and auth guards 2026-04-03 18:15:18 +02:00
matthias 2542748e82 fix(canvas): align optimistic edge id typing with queue payloads 2026-04-03 18:07:59 +02:00
matthias af3cb47247 fix(canvas): resolve hook rule violations in delete and image nodes 2026-04-03 18:05:02 +02:00
matthias c33e65b0f6 fix(tool-ui): remove render-time ref mutation in controllable state 2026-04-03 18:02:44 +02:00
matthias 16f24991a4 fix(dashboard): make recent transaction time formatting pure 2026-04-03 18:01:16 +02:00
matthias 67302da6ed fix(toast): remove invalid translation hook helper 2026-04-03 17:59:44 +02:00
matthias d151fbb5b7 fix(polar): make webhook credit flows idempotent 2026-04-03 17:56:15 +02:00
matthias 923a73dafe fix(convex): enforce node-canvas match in generateImage 2026-04-03 17:46:26 +02:00
matthias d3a4c4d335 fix(convex): validate every node in batch mutations 2026-04-03 17:42:47 +02:00
matthias c094f6c80b fix(billing): block direct public credit topups 2026-04-03 17:40:22 +02:00
matthias 3474297e69 Refactor user initialization and balance retrieval logic
- Updated the `InitUser` component to handle session state more effectively by incorporating a loading state.
- Removed the unused `useAuthQuery` hook and adjusted the balance initialization logic to only proceed when the session is confirmed.
- Enhanced the `getBalance` query with improved error handling and logging for better debugging.
- Modified the `initBalance` mutation to return an object indicating whether a new balance was created, improving clarity in the initialization process.
2026-04-03 15:47:34 +02:00
matthias 6cbdfdcb79 Merge branch 'codex/canvas-anpassung' 2026-04-03 14:52:56 +02:00
matthias 1fb8fd2863 Refactor canvas storage URL handling and integrate adjustment presets
- Introduced a new `CanvasPresetsProvider` to manage adjustment presets for nodes, enhancing state management and reducing reactivity.
- Updated storage URL resolution to utilize a mutation instead of a reactive query, improving performance and reducing unnecessary re-renders.
- Refactored adjustment nodes (color-adjust, curves, detail-adjust, light-adjust) to use the new preset context for fetching user presets.
- Improved overall canvas functionality by streamlining storage ID collection and URL resolution processes.
2026-04-03 14:52:34 +02:00
matthias 5bd5a638e1 Update canvas documentation for toolbar and sidebar layout 2026-04-03 14:51:31 +02:00
matthias 3aaad38e06 Enhance canvas sidebar and toolbar with improved UI and state management
- Integrated NextImage for logo display in the canvas sidebar, enhancing visual consistency.
- Updated canvas name handling in the toolbar to ensure proper display and accessibility.
- Refactored sidebar layout for better responsiveness and user experience.
- Improved state management for category collapsibility in the sidebar, allowing for a more intuitive navigation experience.
2026-04-03 13:51:41 +02:00
matthias 8703387617 Enhance canvas functionality with storage URL resolution and debugging improvements
- Added a fallback mechanism for resolving storage URLs in `canvas-helpers.ts`, improving reliability when URLs are not directly available.
- Introduced new utility functions in `canvas.tsx` for summarizing update and resize payloads, enhancing debugging capabilities during canvas operations.
- Updated `compare-node.tsx` to improve state management and rendering logic, allowing for better handling of incoming edges and display modes.
- Refactored `render-node.tsx` to streamline the rendering process and include detailed logging for debugging render operations.
- Updated `.gitignore` to exclude `.kilo` files, ensuring cleaner repository management.
2026-04-02 16:12:56 +02:00
matthias 43e3e0544a Add storage ID handling and optimize canvas storage URL retrieval
- Introduced `hasStorageId` function to check for valid storage IDs in canvas nodes.
- Updated `batchGetUrlsForCanvas` query to utilize helper functions for improved readability and maintainability.
- Implemented `assertCanvasOwner`, `listNodesForCanvas`, `collectStorageIds`, and `resolveStorageUrls` to streamline the process of fetching storage URLs associated with a canvas.
- Enhanced query logic to skip unnecessary database calls when no valid storage IDs are present.
2026-04-01 18:41:42 +02:00
matthias 75e5535a86 Enhance Providers component with time zone support
- Updated `RootLayout` to retrieve the user's time zone using `getTimeZone` from `next-intl/server`.
- Modified the `Providers` component to accept and pass the time zone prop to `NextIntlClientProvider`, improving localization capabilities.
2026-04-01 18:21:16 +02:00
matthias 79d9092d43 Implement internationalization support across components
- Integrated `next-intl` for toast messages and locale handling in various components, including `Providers`, `CanvasUserMenu`, and `CreditOverview`.
- Replaced hardcoded strings with translation keys to enhance localization capabilities.
- Updated `RootLayout` to dynamically set the language attribute based on the user's locale.
- Ensured consistent user feedback through localized toast messages in actions such as sign-out, canvas operations, and billing notifications.
2026-04-01 18:16:52 +02:00
matthias 6ce1d4a82e Update package dependencies and documentation for LemonSpace v1.5
- Added `next-intl` dependency to `package.json` for internationalization support.
- Updated `pnpm-lock.yaml` to reflect the new dependency and its version.
- Revised LemonSpace Manifest and PRD to version 1.5, including updates to authentication methods and new features for offline sync and canvas management.
2026-04-01 14:40:27 +02:00