Commit Graph

154 Commits

Author SHA1 Message Date
81edfa6da7 fix(canvas): reject invalid edge splits before mutation 2026-04-03 22:38:20 +02:00
99cd1b5233 chore(test): remove unintended task 5 coverage 2026-04-03 22:21:40 +02:00
dee10405d2 refactor(canvas): extract node interaction hook 2026-04-03 22:18:42 +02:00
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
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
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
5223d3d8d7 fix(canvas): refresh sync engine hook dependencies 2026-04-03 21:26:24 +02:00
c060c57ad8 refactor(canvas): extract sync engine hook 2026-04-03 21:11:04 +02:00
f2f22b66a7 test(canvas): expand reconciliation helper coverage 2026-04-03 20:51:21 +02:00
928fd81904 refactor(canvas): extract flow reconciliation helpers 2026-04-03 20:42:47 +02:00
16ad9e48f4 docs(canvas): remove extraction scratch note 2026-04-03 20:32:33 +02:00
859aad4438 docs(canvas): annotate modularization seams 2026-04-03 20:30:35 +02:00
4fad69a151 fix(canvas): ensure valid source and target node IDs when creating synthetic edges 2026-04-03 20:15:23 +02:00
081bf13e04 feat(a11y): add live region feedback for auth and billing flows 2026-04-03 19:47:56 +02:00
8ed9adf6f8 chore(lint): resolve remaining warnings and ignore generated convex artifacts 2026-04-03 19:41:34 +02:00
0173d5c604 fix(canvas): avoid server persistence for download-only renders 2026-04-03 19:39:31 +02:00
d320ff47b0 refactor(canvas): extract data and storage url orchestration from canvas 2026-04-03 19:31:05 +02:00
7e87a74df9 feat(canvas): move image pipeline rendering off main thread with worker fallback 2026-04-03 19:17:42 +02:00
7e1a77c38c refactor(canvas): debounce and extract local snapshot persistence 2026-04-03 19:10:07 +02:00
234da6f7d7 refactor(app): scope heavy providers to authenticated route layouts 2026-04-03 19:01:48 +02:00
9c8cd364b4 feat(a11y): improve keyboard and semantic controls in core UI 2026-04-03 18:54:04 +02:00
8dd1d1bb7c refactor(billing): centralize tier credits and align topup UI 2026-04-03 18:53:21 +02:00
609e4fca20 fix(canvas): separate download from upload side effects 2026-04-03 18:52:54 +02:00
2542748e82 fix(canvas): align optimistic edge id typing with queue payloads 2026-04-03 18:07:59 +02:00
af3cb47247 fix(canvas): resolve hook rule violations in delete and image nodes 2026-04-03 18:05:02 +02:00
16f24991a4 fix(dashboard): make recent transaction time formatting pure 2026-04-03 18:01:16 +02:00
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
6cbdfdcb79 Merge branch 'codex/canvas-anpassung' 2026-04-03 14:52:56 +02:00
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
5bd5a638e1 Update canvas documentation for toolbar and sidebar layout 2026-04-03 14:51:31 +02:00
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
ef98acd0de Enhance adjustment nodes with localized labels and improved state management
- Integrated localization for slider labels and prompts in color-adjust, curves, detail-adjust, and light-adjust nodes.
- Updated preset handling to include user-friendly prompts for saving presets.
- Improved state management for slider values and preset selections, enhancing user experience.
- Added reset actions to adjustment nodes for better control over user adjustments.
2026-04-02 23:56:45 +02:00
Matthias
b0a844d3a3 Refactor adjustment nodes to use ParameterSlider for enhanced UI and functionality
- Replaced SliderRow components with ParameterSlider in color-adjust, curves, detail-adjust, and light-adjust nodes for improved user interaction.
- Updated minimum width and height configurations for adjustment nodes to accommodate new slider designs.
- Enhanced node templates and default dimensions to reflect the changes in adjustment node sizes.
- Improved state management and data handling for slider values in adjustment nodes.
2026-04-02 23:29:48 +02:00
Matthias
f5f9753288 Enhance authentication flow with username support and social login placeholders
- Updated sign-in and sign-up pages to allow users to log in with either email or username.
- Added social login options for Google and Apple, currently implemented as placeholders.
- Improved error handling with localized messages for authentication failures.
- Refactored input fields and validation logic to enhance user experience and accessibility.
2026-04-02 23:10:40 +02:00
Matthias
9fa0b8452e Merge origin/master: combine compare URL pipeline with storage fallback
Made-with: Cursor
2026-04-02 22:29:11 +02:00
Matthias
519caefae2 Enhance canvas connection validation and image resolution handling
- Introduced new functions for validating canvas connections, ensuring proper source and target node types.
- Updated edge and node mutation logic to enforce connection policies and improve error handling.
- Enhanced image resolution handling by integrating a new image source resolution function for better URL retrieval.
- Refactored existing validation logic to streamline connection checks and improve maintainability.
2026-04-02 22:27:05 +02:00
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
3fa686d60d Implement fullscreen preview functionality and optimize storage URL handling
- Added fullscreen output capability for render nodes, allowing users to view images in a larger format.
- Introduced a dialog component for fullscreen image display, including a close button.
- Enhanced storage URL resolution with performance logging to identify slow queries and improve efficiency.
- Updated various queries and handlers to include performance metrics for better monitoring and debugging.
2026-04-02 12:28:36 +02:00
Matthias
f3c5c2d8f1 Enhance canvas functionality with new node types and validation
- Added support for new canvas node types: curves, color-adjust, light-adjust, detail-adjust, and render.
- Implemented validation for adjustment nodes to restrict incoming edges to one.
- Updated canvas connection validation to improve user feedback on invalid connections.
- Enhanced node creation and rendering logic to accommodate new node types and their properties.
- Refactored related components and utilities for better maintainability and performance.
2026-04-02 11:39:05 +02:00
Matthias
624beac6dc Enhance canvas components with improved error handling and aspect ratio normalization
- Added error name tracking in NodeErrorBoundary for better debugging.
- Introduced aspect ratio normalization in PromptNode to ensure valid values are used.
- Updated debounced state management in CanvasInner for improved performance.
- Enhanced SelectContent component to support optional portal rendering.
2026-04-02 08:26:06 +02:00
Matthias
3926940c5a Show upload progress and fix credit concurrency user scope
- Replace image upload POST with XHR progress tracking
- Keep upload state until Convex sync completes
- Pass owner userId through image generation to decrement concurrency correctly
2026-04-01 20:18:01 +02:00
Matthias
8988428fc9 Add fullscreen image preview and rich text editing capabilities
- Implemented fullscreen output functionality for AI image and image nodes, allowing users to view images in a larger format.
- Added a dialog component for displaying images in fullscreen mode, including a close button.
- Enhanced text nodes with a rich text editor, enabling quick formatting options such as bold, italic, headings, lists, and links.
- Updated base node wrapper to support toolbar actions for both image and text nodes, improving user interaction.
2026-04-01 20:03:53 +02:00
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
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
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
d34f965dbc Add dialog descriptions for project rename and delete confirmations
- Introduced `DialogDescription` components in `canvas-app-menu.tsx` and `canvas-card.tsx` to provide clearer context for users when renaming and deleting projects.
- Removed redundant paragraph elements in favor of the new dialog descriptions for a cleaner UI experience.
2026-04-01 12:19:13 +02:00
Matthias
34135d643e Add delete functionality to canvas card with confirmation dialog
- Implemented delete action for canvas cards, including a confirmation dialog.
- Updated `canvas-card.tsx` to support renaming and deleting canvases.
- Enhanced documentation in `CLAUDE.md` to reflect new features and mutations.
- Added success and error toast messages for delete actions.
2026-04-01 12:09:01 +02:00
Matthias
d117d6f80c refinded look of connections in light mode 2026-04-01 11:41:09 +02:00
Matthias
37a346a2b1 Fix spawn-delete race and keep node deletion locked until synced 2026-04-01 11:22:11 +02:00
Matthias
eb5ed06ced Enable offline edge split sync and stabilize local edge state 2026-04-01 11:04:40 +02:00