Improve type safety and code quality based on PR review comments:
- Convert PackButton.vue to TypeScript with proper type definitions
- Fix AbortSignal.reason comparison using strict equality instead of String()
- Extract magic number constant for API timeout in server configuration
These changes enhance type safety, improve code robustness, and increase
maintainability as suggested by automated code reviewers.
Implement cancel button for pack requests with improved user experience.
The button now shows "Cancel" on hover during processing and allows users
to abort ongoing requests. Also improved error messages for better clarity.
- Add cancel functionality to PackButton with hover state
- Implement request cancellation using AbortController
- Improve error messages for remote repository processing failures
- Update timeout handling and server configuration
- Add proper event handling to prevent form submission conflicts
- Add onAbort callback to distinguish timeouts from errors
- Implement errorType system to differentiate warnings from errors
- Update TryItResultErrorContent to show warning styling for timeouts
- Change timeout message to suggest using Include/Ignore Patterns
- Timeout now displays with yellow warning icon instead of red error
- Add oxlint as dev dependency and integrate into npm run lint
- Create oxlint configuration with warning levels for gradual adoption
- Add oxlint CI job to GitHub Actions
- Fix regex patterns flagged by oxlint:
- Remove unnecessary escape characters in file regex patterns
- Fix regex patterns in website validation and PHP test files
- Update lint script order: biome -> oxlint -> ts -> secretlint
oxlint provides 50-100x faster linting with 500+ rules from ESLint ecosystem.
Current warnings are configured as non-blocking to allow gradual improvement.
Apply Biome lint fix to use optional chaining instead of logical AND for safer navigation method access.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Remove title and text properties from shareData to share only the file content, providing a cleaner sharing experience for mobile apps.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Restore file sharing capability using Web Share API with File objects
- Implement proper feature detection with navigator.canShare
- Use appropriate MIME types for markdown, XML, and plain text files
- Generate descriptive filenames based on repository and format
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Rename canShareFiles to canShareText for accuracy
- Add console logging for failed share attempts
- Improve function naming to reflect text-only sharing capability
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Change from file sharing to text content sharing for better compatibility
- Simplify feature detection to check navigator.share existence only
- Improve button layout with flex-wrap and proper line break on mobile
- Update package.json lint scripts in client and server
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Test actual file sharing capability with dummy file in canShareFiles()
- Use format-specific MIME types (text/markdown, application/xml)
- Add fallback to text-only sharing when file sharing is not supported
- Enhance compatibility across different platforms and browsers
Addresses feedback from Gemini Code Assist and Copilot reviewers
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Restrict share button to mobile devices only using CSS media queries
- Add robust feature detection with canShareFiles() function
- Implement user feedback with "Shared\!" state and visual styling
- Improve API validation using navigator.canShare() before sharing
- Enhance error handling and code organization
- Rename shareWithApp to shareResult for better consistency
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>