Commit Graph

74 Commits

Author SHA1 Message Date
Alem Tuzlak 89d39d639b fix: address code review findings — error handling, codemod correctness, deprecation versions
- Restore console.error as safety net in processFiles catch blocks (errors no longer
  silently vanish when onUploadFailed callback is not provided)
- Add try/catch to useBlobUrl atob() — gracefully handles malformed base64 instead of
  crashing the component tree
- Fix DocumentLightboxContent: use blobUrl instead of undefined src variable
- Add .catch() to View Transition API transition.finished promise
- Codemod: preserve actual imageUploadsEnabled value (false, dynamic expressions)
  instead of hardcoding true — adds 3 new test cases (18 total)
- Replace all placeholder @deprecated versions (v1.x.0) with @since 1.56.0
- Add missing @since to ImageRenderer, ImageRendererProps, AIMessage.image tags
2026-04-06 14:55:08 +02:00
Alem Tuzlak 18c7a6001d feat: multimodal attachments — UI polish, deprecations, docs, codemod
Attachment queue & previews:
- Image lightbox with View Transition API morph animation
- Video lightbox with native controls and play button overlay
- Document lightbox (PDF via blob URL, text inline, info card fallback)
- Drop zone overlay with upload icon
- Filename preservation via InputContent metadata
- Proper video thumbnail sizing and play/pause indicator
- Fix attachment queue positioning (max-w-3xl constraint)
- Padding between X button and content for audio/document cards
- Document filenames wrap instead of truncating

Attachments config:
- onUploadFailed callback for validation/upload errors (file-too-large, invalid-type, upload-failed)
- onUpload accepts sync or async returns
- AttachmentUploadResult discriminated union with explicit interfaces
- Metadata field on Attachment and onUpload return type

AG-UI version bump:
- Bump @ag-ui/client, @ag-ui/core, @ag-ui/encoder, @ag-ui/proto to 0.0.51
- Remove process.env Vite workaround (fixed upstream in 0.0.51)

Deprecation lifecycle:
- @deprecated JSDoc on all legacy image upload APIs
- ImageRenderer, ImageRendererProps, ImageUpload type, imageUploadsEnabled prop,
  inputFileAccept prop, ImageRenderer prop, AIMessage.image, ImageData
- Codemod at codemods/migrate-attachments.ts (15 tests)
- Migration guide updated with codemod instructions and new type shapes

Docs:
- New guide: docs/(root)/multimodal-attachments.mdx
- Updated migration guide with onUpload return type, metadata, codemod section
- Cross-links from prebuilt-components and migration guide
- Label change: "Add photos or files" → "Add attachments"

Tests:
- CopilotChat.attachments.test.tsx — 5 tests for onUploadFailed
- migrate-attachments codemod — 15 tests
2026-04-06 14:55:06 +02:00
Alem Tuzlak f6c15cdbfe refactor(shared): move attachment utilities to shared package 2026-04-06 14:54:42 +02:00
Alem Tuzlak 7c774e9eb6 refactor(shared): move attachment types to shared package 2026-04-06 14:54:41 +02:00
Alem Tuzlak 152d1ade96 style: format code with oxfmt 2026-04-06 14:54:40 +02:00
Alem Tuzlak 928c385516 fix(react-ui): add baseline error logging, thumbnail diagnostics, rejected file feedback, mimeType fallback 2026-04-06 14:54:39 +02:00
Alem Tuzlak 2c546e44b5 test(react-ui): add tests for attachment utility functions 2026-04-06 14:54:37 +02:00
Alem Tuzlak e683f9386c fix(react-ui): address code review findings — stale closures, error handling, type safety
- Fix stale closure in paste handler by using processFilesRef pattern
- Wrap processFiles calls in try/catch across paste, file upload, and drop handlers
- Add early return for empty/falsy accept string in matchesAcceptFilter
- Block send while attachments are still uploading
- Add id field to Attachment interface, replace _id hack with randomUUID()
- Add 10s timeout to generateVideoThumbnail to prevent infinite hanging
- Show placeholder div for uploading attachments instead of rendering incomplete source
- Include filename context in upload error messages
2026-04-06 14:54:36 +02:00
Alem Tuzlak 1d62da913d chore: add deprecation annotations and suppressable runtime warnings 2026-04-06 14:54:34 +02:00
Alem Tuzlak fc1cfa09d9 feat(react-ui): add attachments config, upload flow, drag-and-drop, and deprecation bridge 2026-04-06 14:54:33 +02:00
Alem Tuzlak ff236cfbe6 feat(react-ui): add AttachmentRenderer and update UserMessage for multimodal content 2026-04-06 14:54:32 +02:00
Alem Tuzlak c472f452f6 feat(react-ui): add AttachmentQueue component and styles 2026-04-06 14:54:31 +02:00
Alem Tuzlak 8bdb24ea87 feat(react-ui): add attachment types and utility functions 2026-04-06 14:54:30 +02:00
Tyler Slaton 596b5cd1b5 Merge branch 'main' into fix/261-sidebar-full-height 2026-04-02 09:27:32 -07:00
Alem Tuzlak 79ce60c580 chore: migrate from eslint+prettier to oxlint+oxfmt
Replace eslint and prettier with oxlint and oxfmt for faster linting
and formatting across the monorepo. Remove all eslint and prettier
configs, dependencies, and related packages. Add .oxlintrc.json and
.oxfmtrc.json for the new tooling. Update CI workflows and lefthook
hooks accordingly. Reformat codebase with oxfmt.

https://claude.ai/code/session_01GMkSf29p78HuMR1mbXn8He
2026-04-02 16:39:05 +02:00
alex mitre 818e4e767b fix(sidebar): allow full-height children inside CopilotSidebar 2026-04-01 08:28:13 -07:00
Tyler Slaton 96885b5959 refactor: consolidate V1/V2 packages into flat @copilotkit/* structure
Flatten all packages from packages/v1/* and packages/v2/* into packages/* —
every package now lives directly under the @copilotkit/ scope with no v1/v2
subdirectories.

- Move all v1 packages (react-core, react-ui, runtime, shared, etc.) from
  packages/v1/* to packages/*
- Absorb v2 react code into packages/react-core/src/v2/ (exported via /v2 subpath)
- Absorb v2 agent code into packages/runtime/src/agent/ (exported via /v2 subpath)
- Move v2 packages (core, angular, demo-agents, etc.) to packages/*
- Replace all @copilotkitnext/* imports with @copilotkit/* equivalents
- Keep @copilotkitnext/angular as the sole exception (angular remains on next)
- Update CI workflows, renovate config, release scripts for flat structure
- No public API surface changes — all exports fields are preserved

Co-authored-by: Alem Tuzlak <t.zlak@hotmail.com>
Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
2026-03-28 16:45:10 -07:00
Atai Barkai 5f3727dde8 move to CopilotKit subdirectory
.
2023-08-22 23:09:55 -07:00
Atai Barkai 4010c99c7e split react-textarea into react-ui component 2023-08-22 22:50:57 -07:00
Atai Barkai 0c5e0512a5 minor copilot cosmetic change 2023-07-15 03:39:21 -07:00
Atai Barkai 40af06bb6b minor copilot optimizations 2023-07-15 03:26:17 -07:00
Atai Barkai 4e245a5a10 wip copilot integration 2023-07-14 17:04:28 -07:00
Atai Barkai 44c559061c move tooltip provider inside copilot sidebar ui provider 2023-07-14 06:28:12 -07:00
Atai Barkai 03164e91c7 v0.2 turbo refactor 2023-07-13 16:08:04 -07:00