Skip to content

feat: Add 'Send me Feedback' home screen quick action#87

Open
justanotheratom wants to merge 449 commits intomainfrom
send-feedback
Open

feat: Add 'Send me Feedback' home screen quick action#87
justanotheratom wants to merge 449 commits intomainfrom
send-feedback

Conversation

@justanotheratom
Copy link
Collaborator

Summary

  • Adds iOS home screen quick action "Send me Feedback" that opens IngrediBot with a feedback-friendly greeting
  • Handles both cold launch (via scene connection options) and warm launch (via scene delegate notification)
  • Defers action until sign-in completes when triggered before authentication

Implementation Details

  • Static shortcut defined in Info.plist for reliable registration
  • SceneDelegate handles warm launch shortcuts via NotificationCenter
  • RootContainerView listens for shortcut notification and calls handleFeedbackShortcut()
  • IngrediBotChatView reads context directly from coordinator to fix SwiftUI timing issue
  • Custom greeting: "Hey there!" + "Would you like to give me some feedback to help improve your experience?"

Test plan

  • Cold launch: Kill app → long-press icon → tap "Send me Feedback" → IngrediBot opens with feedback greeting
  • Warm launch: App in background → trigger quick action → IngrediBot opens immediately
  • Auth pending: Trigger quick action before sign-in → waits → opens after sign-in

🤖 Generated with Claude Code

gunjanAtEightinity and others added 30 commits December 12, 2025 15:35
• Created ConfettiView component with colorful particle animation
• Implemented 60 confetti particles with rotation and horizontal spread
• Added celebration colors (green, gold, red, teal, mint, pink)
• Integrated confetti overlay in MeetYourAvatar view
• Animation triggers automatically when sheet appears
• Particles fall from top with rotation and fade out after 2 seconds
• Enhances user experience with celebratory feedback on avatar reveal
• Added setUpAvatarFor route to BottomSheetRoute enum
• Integrated SetUpAvatarFor view in PersistentBottomSheet navigation
• Added nextPressed callback to SetUpAvatarFor for navigation
• Updated HomeView to check family member count before navigation
• If family has more than one member, show SetUpAvatarFor first
• When Next is pressed in SetUpAvatarFor, navigate to YourCurrentAvatar
• Single member families go directly to YourCurrentAvatar
• Configured dynamic height for setUpAvatarFor bottom sheet
- Replace GreenCapsule buttons with white buttons with light gray borders
- Add Google and Apple logos on the left side of buttons
- Update button styling to match design specifications
- Maintain existing sign-in functionality
…eenOutlinedCapsule buttons

- Update WhosThisFor sheet: Replace gray and filled green buttons with GreenOutlinedCapsule for consistent styling
- Update WouldYouLikeToInvite sheet: Replace GreenCapsule buttons with GreenOutlinedCapsule matching design
- Enhance GreenOutlinedCapsule component: Add white background fill and make image parameter optional
- Apply green gradient to icons in GreenOutlinedCapsule to match text and border styling
- Both sheets now have consistent white buttons with green gradient borders and text
- Replace hardcoded placeholder family members with live data from FamilyStore
- Convert members from constant array to computed property that reads from familyStore.family
- Combine selfMember and otherMembers into single list for display
- Map FamilyMember to Member struct with proper id, name, image, and color conversion
- Handle empty family case gracefully
- Resolves issue where wrong family members were shown when household has more than one member
…avatar-flow

Feature/eig 618 create your avatar flow
… all the dependent flags to that.

update AuthController to derive the sign‑in provider from Supabase user.identities (with a safe fallback to appMetadata["provider"]), then wire signedInWithApple, signedInWithGoogle, signedInAsGuest, and currentSignInProviderDisplay to that single source of truth so the Settings screen always shows the correct provider.
…eCanvasView

- Add updateSectionCompletionStatus() method to check if sections have data in preferences
- Update completion status on view appear, preferences change, and section switch
- Make Preferences and PreferenceValue conform to Equatable for onChange support
- Fixes issue where only last section showed as completed when reopening view
- Add family/food-notes endpoint to SupabaseRequestBuilder
- Implement fetchFoodNotes and updateFoodNotes methods in WebService
- Add debounced auto-save when preferences change in EditableCanvasView
- Load existing food notes on view appear
- Handle version conflicts with automatic retry logic
- Convert between backend content format and preferences format
- Add loading state UI during initial data fetch
Replaced arrow-right asset images and updated references. Added new feedback and star rating image assets. Refactored UserFeedbackCard to include a selectable star rating UI and feedback image. Updated YourBarcodeScans to display dynamic scan count from UserPreferences and refresh on appear. Enhanced UserPreferences to track and refresh total scan count. Modified BarcodeDataCard to increment scan count only on successful product analysis. Improved ArrowSwipeShimmer opacity handling in BarcodeScanCameraControls.
Deleted an extraneous 'matching' line from the UserFeedbackCard view to clean up the code and prevent potential confusion.
…rcodescan-productdetails

Feature/eig 616 review UI barcodescan productdetails
- Updated sectionedChips() to handle both type-2 (subSteps) and type-3 (regions) step types
- Region chips were not displaying because the method only checked for subSteps
- Now properly maps region selections from backend data to SectionedChipModel format
- Updated version mismatch handling to use 409 Conflict instead of 400 Bad Request
- Removed complex error string parsing logic - now uses currentNote from error response
- Updated VersionMismatchError to include full currentNote object instead of just version numbers
- Improved null response handling for GET endpoint when no food notes exist
- Simplified error handling by using structured data from backend response
- Reduced code complexity by ~20 lines of parsing logic
- Update EditableCanvasView to detect family context and use .family flow type
- Replace hardcoded family members in FamilyCarouselView with dynamic data from FamilyStore
- Display first character of member names in colored circles matching HomeView design
- Ensure family carousel shows actual family members with their colors and names
- Replace GreenCircle Next button with GreenCapsule Done button in EditSectionBottomSheet
- Done button closes the sheet when pressed instead of navigating to next section
- Increase bottom padding to 100pt to prevent content from being hidden behind Done button
- Add allowTappingIncompleteSections parameter to CanvasTagBar for edit mode
- Enable tapping any section in EditableCanvasView regardless of completion status
- Remove unused handleNextSection function and onNext parameter
…asView

- Add new endpoint family_food_notes_all to SupabaseRequestBuilder
- Create FoodNotesAllResponse struct to handle member-specific food notes
- Add fetchFoodNotesAll() function to fetch food notes with member associations
- Update EditableCanvasView to use /family/food-notes/all endpoint instead of /family/food-notes
- Track member associations for each preference item (family-level vs member-specific)
- Merge family note and member notes into unified content structure
- Update EditableCanvasCard to display member images on chips via familyList parameter
- Show 'Everyone' image for family-level preferences, member names for member-specific preferences
- Pass itemMemberAssociations to EditableCanvasCard to enable member image display
- Track selected family member in FamilyStore so preferences know if editing Everyone or an individual
- Wire FamilyCarouselView taps to update FamilyStore.selectedMemberId and fetch member/family food notes with detailed logging
- Add member-specific endpoints (GET/PUT /family/members/:id/food-notes) to WebService with version-mismatch handling
- In EditableCanvasView, route PUTs to member endpoint when a member is selected, or family endpoint when Everyone is selected, with full terminal traces
- Keep chips selection in sync with backend content for each member
- Use a separate canvasPreferences store so scroll cards show union of family + all members
- Map chip member associations to FamilyMember by UUID instead of raw string ids
- Log missing member mappings to help debug avatar configuration
- Trigger a fresh /family/food-notes/all load after successful member/family updates so chip avatars stay in sync
- Track avatarTargetMemberId in FamilyStore when selecting a member in SetUpAvatarFor
- On MeetYourAvatar Assign, upload the generated memoji via WebService.uploadImage and persist imageFileHash on the target FamilyMember
- Add FamilyMemberAvatarView to HomeView to render member avatars from imageFileHash with name-initial fallback
- Update 'Your IngrediFam' row in HomeView to use the new avatar view instead of text prefixes
- When assigning a memoji in MeetYourAvatar, also persist memojiStore.backgroundColorHex to FamilyMember.color
- Add loadedHash tracking in HomeView.FamilyMemberAvatarView so avatar reloads whenever imageFileHash changes
- Clear cached avatar when imageFileHash is removed so fallback initials render correctly
- Add detailed logging around avatar loading and color updates for easier debugging
iAmVishal16 and others added 28 commits January 19, 2026 21:26
- Add FoodEmojiMapper utility to inject food emojis into summary text
  - Build emoji mapping from dynamicJsonData.json step options
  - Use regex to find food names and prepend matching emojis (e.g., "🥜 peanuts")
  - Add highlight markers for MultiColorText styling
- Create AISummaryCard component for UnifiedCanvasView editing mode
  - Shows "Summarized with AI" badge with gradient text and background
  - Text gradient: pink (#FB4889) → purple (#9A64D4) → blue (#0B77FF)
  - Background gradient: #FEF2F2 → #F9EDF9 → #EBF3FE
  - Displays full summary with emojis and styled text
- Update AllergySummaryCard to use MultiColorText for styled rendering
- Pass dynamicSteps to AllergySummaryCard from HomeView

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create ExclusionMultiColorText using UIKit's UITextView with exclusion paths
- Text now properly wraps around the bottom-right corner cutout
- Supports multi-color text with * delimiter markers
- Proper word wrapping (words stay together, don't break mid-word)
- Calculate container size and exclusion rect based on card geometry
- Add previews for empty state, with summary, and long text truncation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add isJoiningViaInviteCode flag to AppNavigationCoordinator
- Update invite code success flow to show MeetYourProfileView first
- User sees "Welcome to IngrediFam!" canvas with their profile
- Continue button then navigates to "All set to join your family!" screen

Flow: EnterInviteCode → MeetYourProfile → WelcomeToYourFamily

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
HomeView Improvements:
- Remove refresh button from Recent Scans header
- Auto-refresh Recent Scans after each scan completion
- Change background color to #FCFCFC
- Add bento card styling to "Your IngrediFam" card with proper padding
- Update greeting text styling and spacing
- Fix Recent Scans to automatically update when scan history changes

ScanCameraView Enhancements:
- Add haptic feedback when scan analysis completes (both barcode and photo modes)
- Wrap ProductDetailView in NavigationStack when presented from camera
- Ensure proper navigation bar visibility

ProductDetailView Updates:
- Limit product name to 2 lines maximum
- Add custom back button when presented from camera view
- Improve navigation experience from ScanCameraView

FullScreenImageViewer Improvements:
- Remove zoom reset button from top toolbar
- Add zoom in/out controls with percentage badge at bottom
- Position zoom controls above thumbnail strip
- Center percentage badge between zoom buttons

Code Refactoring:
- Create ViewExtensions.swift with reusable bottom tab bar helpers
- Refactor bottom gradient + TabBar overlay pattern into reusable components
- Update HomeView, UnifiedCanvasView, and EditableCanvasView to use new helpers
- Remove duplicate code (~60 lines) across three files

Preview Fixes:
- Fix ProfileCard preview crash (add FamilyStore environment)
- Fix YourBarcodeScans preview crash (add required environments)
- Fix HomeView preview crash (add ScanHistoryStore and MemojiStore)
…ements

Feature/food notes ux improvements
- TabBar: Add camera permission handling with alert
- AverageScansCard: Improve layout and spacing
- ListsTab: Add navigation tint and update header
- Various component styling and layout improvements
- Update Info.plist and app configuration
* feat: add Single Root NavigationStack foundation

- Create AppRoute.swift enum with all navigation routes
- Add navigationPath and navigation methods to AppState
- Wrap LoggedInRootView in single NavigationStack
- Add destinationView(for:) builder for AppRoute destinations
- Add pushNavigation case to ProductDetailPresentationSource
- Add pushNavigation case to CameraPresentationSource
- Add onChange handler to reset navigation on tab switch

This establishes the infrastructure for unified navigation
via appState.navigate(to:) enabling AI Bot navigation to
any screen and swipe-back gestures for push navigation.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat: complete Single Root NavigationStack refactor with UI improvements

- Convert all fullScreenCover usages to push navigation via appState.navigate()
- Fix navigation loop: ProductDetail "Add Image" now pops back instead of pushing new camera
- Add scroll-to-card when returning from ProductDetail via scrollToScanId in AppState
- Update navigation bar: #FCFCFC background globally, transparent for ScanCameraView
- Simplify FlashToggleButton: remove capsule background in scanner mode
- Use default back button with white color (.toolbarColorScheme(.dark)) for camera
- Fix HomeView IngrediFam card navigation to use appState.navigate(to: .manageFamily)
- Add navigation test commands to IngrediBotChatView (/scan, /family, /settings, etc.)

Files: TabBar, YourBarcodeScans, ListsTab, HomeView, ProductDetailView, ScanCameraView,
       LoggedInRootView, IngrediBotChatView, FlashToggleButton, IngrediCheckApp

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat: UI improvements, navigation fixes, and image viewer enhancements

## Navigation Fixes
- Fix "Add Photo" navigation from HomeView/Recent Scans to properly open camera
  - Added hasCameraInStack tracking to AppState
  - ScanCameraView sets flag on appear/disappear
  - ProductDetailView checks flag to decide push vs pop navigation
- Fix "What's your name?" sheet appearing again after self member already added
  - Added check for pendingSelfMember/family existence before showing

## Bottom Sheet Improvements
- Standardize title top padding to 24pt across all sheets
  - UpdateAvatarSheet, MeetYourProfileView, LetsMeetYourIngrediFamView
- Adjust fixed heights to compensate for padding changes
  - meetYourProfile: 389 → 397
  - updateAvatar: 500 → 492
- Add UpdateAvatarSheet for avatar selection/generation flow

## FullScreenImageViewer Enhancements
- Full screen image display with ignoresSafeArea for immersive zoom
- Material blur backgrounds for header and controls (iOS Camera style)
- Auto-hide header/thumbnails when zoomed (>1.2x scale)
- Zoom controls remain visible at all times
- Tap to toggle controls visibility
- Improved thumbnail strip with auto-scroll to selected

## Other Improvements
- Product feedback with optimistic updates and vote toggling
- ManageFamilyView custom swipe-to-delete with rounded UI
- Various UI polish and consistency updates

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat: UI improvements, AIBot enhancements, and card unification

- Unify card UI across RecentScanCard, ScanDataCard with consistent layout
- Add RecentScanCard with CardStyle (compact/full) for reuse in HomeView and Recent Scans
- Remove deprecated HomeRecentScanRow (replaced by RecentScanCard)
- Fix AIBot FAB visibility: hide in ScanCameraView, show in ProductDetailView
- Add isInScanCameraView tracking for reliable FAB visibility
- Enhance IngrediBotChatView with improved context handling
- Update ScanDataCard layout (name first, chevron bottom-right)
- Add FilterSegmentedControl for Recent Scans filtering
- Various UI polish and navigation fixes across sheets and views

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
- Update ScanDataCard to display images in priority order: local (pending) → user → inventory (reversed)
- Local images now show immediately with loader overlay until processed by API
- User images from API appear when status="processed", replacing local images by hash match
- Inventory images displayed in reversed order (last appears at front)
- Update localImages parameter type to include hash for duplicate prevention
- Add CombinedImageDisplayItem struct and combinedImagesStackView function
- Update ScanCameraView to pass full image tuple with hash to ScanDataCard

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace commands with new iOS skills structure (ios-deploy, ios-debug)
- Use devicectl --console for reliable iOS 18 NSLog capture (replaces idevicesyslog)
- Use script -F -q for real-time PTY output streaming

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add 4 new fields to capture approximate location info without location permissions:
- timezone: IANA timezone identifier (e.g., "Asia/Kolkata")
- localeRegion: ISO 3166-1 alpha-2 country code from device locale (e.g., "US")
- preferredLanguage: BCP 47 language tag (e.g., "en-US")
- storeCountry: App store country code from StoreKit (e.g., "USA")

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add Claude Code skills for App Store Connect workflows using the `asc` CLI:

- /asc-setup: Validate installation and authentication
- /asc-builds: List builds grouped by marketing version with TestFlight status
- /asc-reviews: Show App Store ratings and customer reviews
- /asc-testflight: Manage beta testers, groups, feedback, and crashes
- /asc-submit: Submit builds for App Store review
- /asc-sales: Download sales reports and analytics
- /asc-publish: Archive, build, and upload to App Store Connect

Key features:
- Builds auto-grouped by marketing version with external TestFlight status
- Ratings fetched from iTunes Lookup API
- Build numbers auto-determined from ASC (no project file changes needed)
- Shared asc-common.sh helper for config loading and validation
- Moved publish scripts to skills directory

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Enhance PersistentBottomSheet, RecentScanCard, and IngredientsAlertCard.
Refactor sheet system with new AddPreferencesForMemberSheet and
CaptureYourProductSheet, replacing WantToAddPreference. Update family
carousel, onboarding views, login sheet, and navigation coordinator.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Track per-image processing latency from upload to server confirmation
- Capture "Photo Scan Image Processed" event with latency_ms property
- Track memoji generation latency with "AI Memoji Generation" event
- Add PostHog MCP server config and SwiftUI expert skill plugin

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…condition (#82)

- Fix AllergySummaryCard not loading AI summary on fresh app launch by
  initializing FoodNotesStore eagerly in RootContainerView.init instead
  of lazily in .task (eliminates race condition with HomeView.task)
- Make FoodNotesStore non-optional across all consumer views
- Update ChatBot, HomeView, Canvas, Onboarding, and UI components
- Add ChatStore and ShimmerModifier utilities

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
…ght (#83)

Instrument the entire onboarding flow with distinct PostHog events so each
step appears as a separate node in the Paths Sankey diagram. Events cover
early branching (existing/new user, invite codes), family setup, all 10
dynamic preference steps, IngrediBot chat engagement, and three completion
sources. Gated by canvas route to prevent false events when chat/preferences
are accessed from Home.

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
…ovements

Tutorial Video Feature:
- Add TutorialVideoManager for downloading/caching tutorial video from Supabase
- Replace video placeholder in SeeHowScanningWorksCanvasView with looping player
- Add fullscreen video playback support
- Pre-download tutorial video in background after guest login

Capture Guide Slideshow:
- Redesign CaptureYourProductSheet as auto-advancing 5-slide carousel
- Add new v2 image assets (front/back/nutrition/ingredients product photos)
- Show step-by-step capture instructions with animated transitions

Product Details:
- Add empty state UI when product not found in database
- Show "Product Not Found" message with capture photos button

Chat Improvements:
- Fix ScrollView auto-scroll to latest message using bottom anchor
- Add scroll triggers for typing indicator and message visibility

Onboarding Fixes:
- Fix state reset when navigating to/from avatar generation flow
- Reset name/selection state on fresh member addition

UI Polish:
- Adjust ScanCameraView layout and padding
- Update PersistentBottomSheet height for scanning help state
- Simplify SeeHowScanningWorksSheet layout

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Display and preserve misc notes from IngrediBot
- Fix: clear misc notes on load failure + use explicit food_notes context
- Refactor: rename screenOverride to contextKeyOverride for clarity
- Fix: display misc notes from member-level storage
- Move misc notes card to top when non-empty
…/Manage Family

When adding a new family member from Home or Manage Family views with avatar
generation, the app now correctly navigates to the "Would you like to invite?"
screen instead of going back to "Add More Members".

- Modified handleAssignAvatar to return new member info (UUID, name) when created
- Updated navigation in .meetYourAvatar case to check for new member and route
  to .wouldYouLikeToInvite when on home screen

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…ission

- Remove extra quotation marks from AllergySummaryCard and AISummaryCard summary text
- Add NSPhotoLibraryUsageDescription to Info.plist for photo library access
- Remove shimmer animation from AskIngrediBotButton
- Update build configuration settings

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…loader

- Block background interaction for wouldYouLikeToInvite and addPreferencesForMember sheets
- Fix sign-in loader in WelcomeBack to occupy full sheet height

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix "IngrediPoiints" → "IngrediPoints" typo (3 occurrences)
- Fix double punctuation: ".." → "." and "!!" → "!"
- Fix lowercase "would" → "Would" after period
- Fix "foodnote" → "food notes" terminology (2 occurrences)
- Fix "watch out for" → "needs to avoid" (family-friendly)
- Remove extra space before "!" in welcome messages (4 occurrences)
- Fix capitalization "Help me Improve" → "Help me improve"
- Update invite code error message for friendlier tone

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
fix: Improve micro-copy for spelling, punctuation, and consistency
Adds iOS home screen quick action that opens IngrediBot with a
feedback-friendly greeting. Handles both cold launch (via
pendingShortcutItem) and warm launch (via notification) scenarios,
deferring the action until sign-in completes when needed.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add static shortcut definition in Info.plist for reliable registration
- Add SceneDelegate to handle warm launch shortcuts via notification
- Fix SwiftUI timing issue by reading context directly from coordinator
- Add feedback-specific greeting: "Would you like to give me some feedback?"

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8fad9080e4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +69 to +78
// MARK: - Production Flow
private struct ProductionFlowView: View {
var body: some View {
Splash {
Image("SplashScreen")
.resizable()
.scaledToFill()
} content: {
MainView()
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Route production flow through shortcut-aware container

In production (Config.usePreviewFlow == false), ProductionFlowView routes to MainView() instead of RootContainerView, but the quick-action handling (the ShowFeedbackFromShortcut notification and cold-launch pendingShortcutItem consumption) only exists in RootContainerView. This means the new “Send me Feedback” shortcut will be ignored for real users unless the preview flow is enabled. Consider moving the shortcut handling to a view used in production (e.g., MainView/LoggedInRootView) or routing production through RootContainerView.

Useful? React with 👍 / 👎.

- Make feedback_id optional in FeedbackContext DTO
- Update ChatContextBuilder to support feedback context without feedbackId
- Send FeedbackContext (with nil feedback_id) for general feedback quick action

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants