Skip to content

feat(apollo-vertex): ai-chat file attachments — upload, paste images, preview [4/5]#631

Draft
petervachon wants to merge 3 commits intofeat/ai-chat-3-message-actionsfrom
feat/ai-chat-4-attachments
Draft

feat(apollo-vertex): ai-chat file attachments — upload, paste images, preview [4/5]#631
petervachon wants to merge 3 commits intofeat/ai-chat-3-message-actionsfrom
feat/ai-chat-4-attachments

Conversation

@petervachon
Copy link
Copy Markdown
Collaborator

What this does

Lets users attach files and images to their messages so they can ask the AI about something they're looking at, not just something they can describe.

  • File picker via the paperclip icon — supports multiple files of any type
  • Paste images directly into the input — screenshots from clipboard attach instantly without leaving the keyboard
  • Attachment chips shown above the textarea before sending: image files show a small thumbnail, documents show a file icon with name and size
  • Image lightbox — click a thumbnail chip to preview the image full-screen before sending; Escape or click outside to dismiss
  • Remove individual files before sending via the × on each chip
  • Files are passed through the onSubmit(files?) callback so the host app controls how they're uploaded or sent to the model

Test plan

  • Paperclip opens file picker; selected files appear as chips
  • Paste a screenshot — image chip with thumbnail appears
  • Click image chip thumbnail — lightbox opens; Escape closes it
  • × on a chip removes that file from the pending list
  • Submitting passes files array to onSubmit

🤖 Generated with Claude Code

@petervachon petervachon requested a review from a team as a code owner April 30, 2026 13:51
@petervachon petervachon requested review from VKravchuk and alincadariu and removed request for a team April 30, 2026 13:51
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 30, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (PT)
apollo-design 🟢 Ready Preview, Logs May 04, 2026, 07:39:13 AM
apollo-docs 🟢 Ready Preview, Logs May 04, 2026, 07:38:18 AM
apollo-landing 🟢 Ready Preview, Logs May 04, 2026, 07:36:40 AM
apollo-ui-react 🟢 Ready Preview, Logs May 04, 2026, 07:38:10 AM
apollo-vertex ❌ Failed: Building: Summary: /vercel/path0/.turbo/runs/3DGPRjpRnrFBjo4oRBgwGdyuRyM.json Building: Failed: ... N/A, Logs May 04, 2026, 07:37:15 AM

@github-actions
Copy link
Copy Markdown

Dependency License Review

  • 2104 package(s) scanned
  • ✅ No license issues found
  • ⚠️ 15 package(s) excluded (see details below)
License distribution
License Packages
MIT 1825
ISC 104
Apache-2.0 69
BSD-3-Clause 30
BSD-2-Clause 24
Copyright 2022, UiPath, all rights reserved 9
BlueOak-1.0.0 8
MPL-2.0 5
MIT OR Apache-2.0 3
MIT-0 3
Unknown 3
Unlicense 3
CC0-1.0 3
LGPL-3.0-or-later 2
(MIT OR Apache-2.0) 2
Python-2.0 1
CC-BY-4.0 1
(MPL-2.0 OR Apache-2.0) 1
BSD 1
Artistic-2.0 1
(WTFPL OR MIT) 1
(BSD-2-Clause OR MIT OR Apache-2.0) 1
CC-BY-3.0 1
0BSD 1
(MIT OR CC0-1.0) 1
MIT AND ISC 1
Excluded packages
Package Version License Reason
@img/sharp-libvips-linux-x64 1.2.4 LGPL-3.0-or-later LGPL pre-built binary, not linked
@img/sharp-libvips-linuxmusl-x64 1.2.4 LGPL-3.0-or-later LGPL pre-built binary, not linked
@uipath/apollo-angular-elements 5.86.3 Copyright 2022, UiPath, all rights reserved UiPath first-party package
@uipath/apollo-core 4.35.0, 4.35.1 Copyright 2022, UiPath, all rights reserved UiPath first-party package
@uipath/apollo-fonts 1.25.8 Copyright 2022, UiPath, all rights reserved UiPath first-party package
@uipath/apollo-icons 1.33.7 Copyright 2022, UiPath, all rights reserved UiPath first-party package
@uipath/apollo-mui5 2.31.26 Copyright 2022, UiPath, all rights reserved UiPath first-party package
@uipath/portal-shell 3.351.4 Copyright 2022, UiPath, all rights reserved UiPath first-party package
@uipath/portal-shell-react 3.149.36 Copyright 2022, UiPath, all rights reserved UiPath first-party package
@uipath/portal-shell-types 3.325.2 Copyright 2022, UiPath, all rights reserved UiPath first-party package
@uipath/portal-shell-util 1.112.0 Copyright 2022, UiPath, all rights reserved UiPath first-party package
@uipath/apollo-lab 25.12.0 Unknown UiPath first-party package
@uipath/telemetry-client-web 5.1.0 Unknown UiPath first-party package
khroma 2.1.0 Unknown MIT per GitHub repo, missing license field in package.json
hyperx 2.5.4 BSD BSD-2-Clause per LICENSE file, non-SPDX "BSD" in package.json

@petervachon petervachon force-pushed the feat/ai-chat-4-attachments branch 2 times, most recently from 30bd3d9 to 8012d26 Compare April 30, 2026 17:36
@petervachon petervachon force-pushed the feat/ai-chat-3-message-actions branch 2 times, most recently from 1cd03f4 to c39dd48 Compare May 1, 2026 13:11
@petervachon petervachon force-pushed the feat/ai-chat-4-attachments branch 2 times, most recently from 405b118 to ce7867d Compare May 1, 2026 13:22
@petervachon petervachon force-pushed the feat/ai-chat-3-message-actions branch 2 times, most recently from ccb80ab to cf9efc2 Compare May 1, 2026 13:42
@petervachon petervachon force-pushed the feat/ai-chat-4-attachments branch 2 times, most recently from 7e4b0e5 to 873677f Compare May 1, 2026 13:57
@petervachon petervachon force-pushed the feat/ai-chat-3-message-actions branch from cf9efc2 to b3871a0 Compare May 1, 2026 13:57
petervachon and others added 3 commits May 4, 2026 10:27
…code with copy button

- AiChatCodeBlock: highlight.js syntax highlighting (JS/TS/Python/Bash/JSON/CSS/SQL),
  github light + github-dark-dimmed themes, hover-reveal copy button with tooltip
- AiChatMarkdown: routes fenced code blocks to AiChatCodeBlock; updates inline code,
  links, blockquote, table, and image rendering to use ai-chat-* colour tokens;
  removes prose bubble wrapper for a cleaner reading width
- registry.json: registers AiChatCodeBlock, adds highlight.js dependency

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…/feedback/edit

- types.ts: AiChatConfig interface + MessageFeedbackType shared across components
- AiChatProvider: React context that distributes config (assistantName, action
  callbacks, isLoading, latestAssistantMessageId) to message components without
  prop drilling; uses display:contents wrapper to preserve h-full layout
- AiChatMessageActions: copy / thumbs up+down / regenerate / edit toolbar;
  latest assistant message keeps actions always-visible, older messages reveal
  on hover/focus for clean reading
- AiChatMessage: rewritten to use provider context; adds entrance animation
  (fade + 8px slide-up), styled user/assistant bubbles, inline edit mode
  (textarea swap, Save & re-run / Cancel, auto-scroll to centre)
- AiChat: wraps children with AiChatProvider; adds onFeedback, onRegenerate,
  onEditMessage, showMessageActions, showCopyButton props; computes
  latestAssistantMessageId for the provider
- AiChatAgentHubMode: removes assistantName from AiChatMessage (now in provider)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds file attachment support to the AI chat input:
- File picker via Paperclip dropdown ("Upload files")
- Clipboard paste for images → auto-added as chips
- Pending file chips with thumbnail preview and remove button
- Lightbox for full-size image preview (Escape to close)
- onSubmit(files?: File[]) signature threads through AiChat.onSendMessage
- registryDependencies updated: alert-dialog, dropdown-menu, tooltip

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@petervachon petervachon force-pushed the feat/ai-chat-4-attachments branch from 873677f to 2162d40 Compare May 4, 2026 14:34
@petervachon petervachon force-pushed the feat/ai-chat-3-message-actions branch from b3871a0 to fffc189 Compare May 4, 2026 14:34
@petervachon petervachon marked this pull request as draft May 4, 2026 14:38
@VKravchuk VKravchuk force-pushed the feat/ai-chat-3-message-actions branch from fffc189 to bed87cf Compare May 6, 2026 07:05
@pieman1313 pieman1313 force-pushed the feat/ai-chat-3-message-actions branch 13 times, most recently from 9f766ba to 87429af Compare May 11, 2026 14:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant