- Make header layout stack vertically on mobile with flex-col, horizontal on desktop with sm:flex-row
- Make action buttons full-width on mobile, auto-width on desktop
- Reverse button order on mobile (customize first, then select/deselect) using flex-col-reverse
- Make collapse/expand button full-width on mobile
- Add "All" translation key to both English and Turkish locales
- Remove experienceLevel from UserProfile, RecommendationRequest, and PackagePreset types
- Remove experience level validation and handling from GET/POST endpoints
- Disable localStorage persistence in useRecommendationProfile hook (session-only storage)
- Disable automatic onboarding modal on first visit
- Set recommendations section to expanded by default
- Add empty state card for recommendations with wizard button
- Add translations
- Format Windows winget package IDs for better display (e.g., "Microsoft.VisualStudioCode" → "Visual Studio Code")
- Extract last segment from dotted package names and convert CamelCase to spaced format
- Add title attribute to package names for full name on hover
- Update README with optional icon addition step in contribution guide
- Document Simple Icons integration process for new package submissions
- Add package icons
- Integrate Simple Icons via CDN with SVG mask technique for theme-aware icons
- Add icon mapping for 150+ packages across all categories (development, design, multimedia, system tools, gaming, productivity, education)
- Implement fallback to default PackageIcon when icon unavailable or fails to load
- Add icon error handling with hidden img element to detect load failures
- Update RecommendationCard and RecommendationListItem to display
- Replace hook-based state management with direct prop-based state derivation
- Implement getEffectiveOS and isProfileComplete as inline functions using profile prop
- Remove effectiveProfile intermediate variable and use profile prop directly
- Update all references from effectiveProfile to profile throughout component
- Simplify component dependencies by removing hook coupling
- Add bilingual README with English/Turkish language switcher
- Create detailed package contribution guidelines with platform-specific naming conventions
- Add validation script for verifying package presets against database
- Include best practices and example PR format for contributors
- Add tsx dependency for running TypeScript validation scripts
- Document validation workflow with manual and automated verification options
- Add validation for categories and experienceLevel in GET endpoint
- Fix type safety: remove 'any' types, use proper Platform type
- Fix hardcoded translations in Header component
- Refactor platform loading to use centralized platform list
- Remove duplicate getPackageManagerForOS logic
- Improve architectural consistency and DRY principles
Resolves Gemini Code Assist review comments
- Fix N+1 query problem in preset package fetching
* Search with limit 5 to find best matches
* Case-insensitive package name matching
* Fallback to most popular when no exact match
- Improve category filtering accuracy
* Update category mapping to match database schema
* Remove duplicate packages in category fetching
* Better distribution across categories
- Add version control for localStorage profile
* Support future schema migrations
* Auto-migrate old profiles to new version
* Persist version in localStorage
- Enhance error handling
* Specific error messages for 400/500/404 responses
* Network error detection
* User-friendly error messages in UI
- Fix OS detection fallback
* Default to ubuntu when detection returns unknown
* Prevent empty OS selection in onboarding
- Add better API validation
* Explicit limit range validation (1-50)
* Clear error messages for invalid inputs
- Updated string quotes from single to double in useRecommendationProfile.ts, client.ts, recommendationService.ts, and recommendations.ts for consistency.
- Enhanced error handling and logging in API client and recommendation service.
- Improved code structure and formatting for better readability and maintainability.
- Ensured consistent use of semicolons and spacing throughout the codebase.
- Added CRYPTOMUS_ENABLED environment variable to control payment service availability
- Created status endpoint to check service availability from frontend
- Updated Header to conditionally show support button based on service status
- Added support for 16 cryptocurrencies including Bitcoin, Ethereum, Monero, and popular stablecoins
- Removed email field from payment form as notifications are configured in merchant settings
- Organized crypto options by category (popular, stablecoins, other) for better UX
- Updated signature algorithm to match Cryptomus API requirements (MD5(base64(JSON) + API_KEY))
- Removed unnecessary key sorting that was incompatible with Cryptomus specification
- Simplified payment flow to redirect immediately to payment URL instead of showing intermediate success state
- Implemented automatic pruning of stale packages across all platform sync endpoints (Arch, AUR, Debian, Ubuntu, Fedora, Homebrew, Winget)
- Added `last_seen_at` tracking to mark packages as seen during sync runs and identify inactive packages
- Introduced `PRUNE_GRACE_DAYS` and `PRUNE_HARD_DELETE_DAYS` environment variables for configurable soft-delete and hard-delete thresholds
- Extended database schema and models to include 'aur' as a valid repository type alongside 'official' and 'third-party'
- Added repository filter UI in package browser for Arch platform to distinguish between official and AUR packages
- Enhanced init-db script with migration system to track and apply schema changes automatically
- Removed type and repository filters from non-Debian/Ubuntu platforms (Arch, Fedora, macOS, Windows)
- Conditionally render type filter UI only for Debian/Ubuntu platforms
- Set type and repository to null in package fetchers for platforms that don't support these classifications