- Change align prop from 'center' to 'start' in MetricCardThreeMenuContainer
- This aligns the dropdown to the left/start edge instead of center
- Addresses BUS-1655: Top align three dot dropdown menu on dashboard cards
Co-Authored-By: nate@buster.so <nate@buster.so>
- Updated sharing request types to use SharePermissionsUpdateRequest for clarity across collections, dashboards, and metrics.
- Enhanced asset icon mapping to include additional asset types for better UI representation.
- Improved error handling in the MetricDataTruncatedWarning component to provide user feedback during download failures.
- Introduced a new API method to download metric files.
- Updated MetricDataTruncatedWarning component to include a download button for large datasets.
- Passed metricId as a prop to MetricDataTruncatedWarning for download functionality.
- Improved user experience by providing feedback during the download process.
- Updated type definitions for better clarity and type safety in metric file download and export tasks.
- Enhanced error handling in the metric files API to utilize HTTPException for more consistent error responses.
- Added environment variable validation in export tasks to ensure necessary credentials are present before execution.
- Improved type assertions for content in metric export queries to ensure proper handling of JSONB data.
- Updated type imports in `cancel-chat.ts` from `CoreMessage` to `ModelMessage` and adjusted related function signatures for consistency.
- Modified the structure of tool result messages to use `ToolResultPart` instead of the deprecated types.
- Deleted the `AIMenu.tsx` and `ai-kit.tsx` files to remove unused components, streamlining the codebase.
- These changes enhance the clarity and maintainability of the chat cancellation functionality while cleaning up the project structure.
- Add conditional check for isDirty before adding event listeners
- Ensure cleanup always runs to prevent memory leaks
- Address greptile-apps[bot] feedback about breaking intended behavior
- Maintain original logic where listeners are only active when there are unsaved changes
Co-Authored-By: nate@buster.so <nate@buster.so>
- Fix PreventNavigation event listener accumulation by changing useEffect dependency from [isDirty] to [handleClick, handlePopState, handleBeforeUnload]
- Improve RoutePrefetcher cleanup by adding proper load event listener cleanup
- Simplify Chart tooltip cleanup to use direct DOM removal instead of complex cloning
- Enhance canvas cleanup in getTextWidth with try/finally pattern
- Add canvas cleanup in DotPattern useEffect return function
These fixes prevent memory leaks during page navigation loops by ensuring proper cleanup of event listeners, timers, observers, and DOM elements.
Co-Authored-By: nate@buster.so <nate@buster.so>