Release v2.0
What's Changed
New Features
- Add release notes auto-generation workflow (#86) (c7f774b)
- Revert "Add caching to improve job processing performance" (1b0da7c)
- Add caching to improve job processing performance (e239ac9)
- feat: Enhance CountryFlag helper to handle null and empty country codes (ee7d203)
- feat: Add symlink creation for public access to generated sitemap (f4c6ea9)
- Refactor sitemap generation command to prevent path traversal vulnerability and improve code readability. Add tests to ensure correct sitemap creation and validate filename security. (25d1485)
- feat: Add Google Indexing API integration for SEO optimization (#83) (d05fc19)
- feat: Implement dynamic search autocomplete with API rate limiting (#82) (0a12f6e)
- Add global notification component to app layout (0b593fc)
- Add MCP configuration for Laravel Boost (9a28cac)
- Add Livewire component for job bookmarking (7e0beb4)
- Refactor CountryFlag helper with caching and additional methods (a4387b0)
- Add GitHub Actions workflow for opencode PR review and remove Sentry workflow (84c5ad7)
- Add factories and tests for JobListing and JobApplyOption (265fe25)
- Add Analytics Dashboard access to User model (61ab329)
- Add method to allow analytics dashboard access (15a879a)
- Add migration for request analytics database table (a453cd3)
- Add analytics dashboard views for Request Analytics (3ed28a9)
- Add daily pruning for RequestAnalytics model (32943e5)
- Add Laravel Request Analytics package (a613898)
- feat: schedule daily sitemap generation command to automate XML sitemap updates for improved SEO (4d5f58c)
- feat: create GenerateSitemap command to automate XML sitemap generation for improved SEO (6771185)
- feat: add sitemap.xml for improved SEO and search engine indexing (6e8c59b)
- feat: add job preferences page and integrate into navigation menus (4f84db4)
- feat: implement profile editing modals for user information, social links, and work experience (82b03f1)
- feat: eager load category relationship in job filter query (3e8bfe1)
- feat: add unique slug constraint to job listings with index management (4378ecf)
- Add EDITOR role to Role enum and admin access gate (5786d26)
- Add Batchable trait to ProcessPackagesCommand (7208356)
- Add content formatter package processing schedule (c5f1ea1)
- Add command to process pending and failed packages (4e457b4)
- Add apply link support for content formatter (0aa8428)
- Add apply_link to Package model fillable attributes (10c5d59)
- Add apply_link column to packages table (aeb1633)
- Add optional application link field to job creation form (b96792d)
- Add country code and contact details handling in job extraction (30b0717)
- Add Job Listing relationship to Package model (26c2a98)
- Add logging and improve job formatting process (61031c7)
- Add content processing dashboard widgets (caab782)
- Add DeepSeek API key to .env.example (341a872)
- Add content formatter routes and view (ef91422)
- Add FormatContentJob for parsing job postings (9ead61f)
- Add Package model for content formatting workflow (a7f5464)
- Add packages migration and content formatter controller (5b08cf7)
- Add content formatter service provider (f4ffc7f)
- Add content formatter configuration file (5027434)
- Add job_id to JobListing model fillable attributes (2fce435)
- Add debug step to deploy workflow for SERVER_IP variable (3ea5125)
- Add old authentication views for password confirmation, password reset, login, registration, and forgot password (00ff550)
- add missing breeze component (4c19cf0)
- test: add feature tests for job caching and cache invalidation (47dbb38)
- test: add unit tests for RedisCache helper methods (315cea4)
- feat: implement RedisCache helper for managing cache keys with pattern support (5a13142)
- feat: update last_login_at on user login to track user activity (d92a2d0)
- feat: add last_login_at column to users table for tracking user activity (4aaff70)
- feat: add event listener for user login to enhance metrics tracking (7ec058a)
- feat: implement meta tag generation for various pages to enhance SEO (f44d619)
- feat: enhance job filtering by prioritizing user country and improving query structure (a03fc60)
- Fix Laravel Breeze components and add Pest testing (3d7fbe3)
- feat: update deployment workflow for PHP version and improve error handling (5ece99b)
- feat: add deployment workflow and exclude list for GitHub Actions (93201cd)
- feat: enhance Redis connection handling and error logging in PrometheusServiceProvider (bb7a8cd)
- feat: schedule CollectMetricsJob in bootstrap (aad41ef)
- feat: add CollectMetricsJob for background processing (3c212d9)
- feat: schedule metrics collection commands (6f44d91)
- feat: update metrics route to use MetricsController (c35e0d7)
- feat: register metrics event listeners in AppServiceProvider (6041f81)
- feat: add MetricsEventListener for automatic event tracking (949fb05)
- feat: add MetricsController for Prometheus endpoint (66ada89)
- feat: add database and queue metrics to PrometheusServiceProvider (bd1222c)
- feat: add CollectMetricsCommand for scheduled metrics (0099ef9)
- feat: add MetricsService with business metrics collection (a153bb5)
- feat(metrics): enhance PrometheusMiddleware with node-level metrics collection (5f652cd)
- feat(metrics): add bucket boundaries to histogram metrics in PrometheusMiddleware (de9e9a7)
- feat(metrics): add histogram metrics to PrometheusMiddleware for HTTP request duration tracking (a8ef059)
- feat(metrics): refactor PrometheusMiddleware to initialize metrics in a dedicated method (57dd5ce)
- feat(metrics): enhance PrometheusMiddleware with detailed memory usage metrics (089936f)
- feat(metrics): add memory usage gauge to PrometheusMiddleware (98ba8e3)
- feat(metrics): enhance PrometheusMiddleware with duration and active requests gauges (aff0006)
- feat(metrics): add PrometheusMiddleware for HTTP request metrics collection (f4be262)
- feat(Caching): enhance country-aware job caching and fallback mechanisms (5ae1d96)
- feat(DetectsUserCountry): add trait for user country detection and caching (3ac1fa3)
- feat(CountryIndicator, Cache): enhance user country handling and caching (f83cf78)
- feat(HomePage, Job): implement country-aware caching and user country detection (43f00c3)
- feat(Caches): add country-aware caching for job listings, latest jobs, and most viewed jobs (49908a9)
- feat(JobDTO, JobListing): add latitude and longitude fields for job listings (21dba02)
- feat(metrics): add prometheus service provider for metrics collection (82c6fab)
- feat(metrics): return user and job counts in metrics endpoint (57b028d)
- feat(metrics): add prometheus metrics endpoint (8bd90c7)
- build: add prometheus client and update dependencies (5d490b2)
- feat(JobPageCache): implement pagination with random job selection (84b1cee)
- build: add flowframe/laravel-trend package dependency (c1d2043)
- feat(widgets): add jobs added chart with time period filters (6393d8b)
- refactor(api): remove rate limit check and add updated_at timestamp (5dda351)
- feat(widgets): add api request stats overview widget (8dcdf18)
- feat(job-filter): add job count persistence and visibility tracking (46ce597)
- feat(scheduler): enable job notifications and model pruning (094f318)
- feat(api): improve api key rate limit reset logic (26f04f5)
- feat(api): add rate limit reset check for job API keys (6ce1f46)
- refactor(ApiKey): add rate_limit_reset to fillable fields (563deb0)
- feat(apply-job): add support for multiple application options (4b7e67e)
- feat(job): add apply options relationship and handling (f6bd94c)
- feat: add JobApplyOption model, DTO and migration (b99afbc)
- feat(StoreJobs): add jobId check before creating job listing (15f11a1)
- feat(job): add jobId field to JobDTO and migration (b72ab96)
- docs: add project rules documentation for Geezap (900634a)
- feat(email-template): improve weekly digest email layout and compatibility (ad65faa)
- feat(notification): add email frequency check for job notifications (2dba57f)
- feat(notifications): implement region-based job filtering for notifications (57cd4ae)
- feat(notifications): enhance job notification logic with user preferences (ae71770)
- feat(header): add preferences link to auth dropdown menu (c531e1e)
- feat: remove guest preferences feature (c15c633)
- feat(profile): redesign preferences page with improved layout and search (3cc93b3)
- refactor(mail): update failover mailers order and add brevo (728e682)
- feat(profile): add dynamic show more/less functionality to preferences (251536a)
- feat(user-preferences): add emails_per_frequency field to user preferences (db7fb35)
- feat(profile): redesign preferences layout with 3-column grid (0987700)
- feat(menu): add job preferences link for guest users (664c01f)
- feat(job preferences): add job preferences for guests and authenticated users (2da1ab4)
- feat(job-recommendations): add caching layer for job recommendations (f1c9f8a)
- feat(preferences): add user and guest preferences management (a8fe610)
- feat(console): add command to set default user preferences (191aec8)
- feat(models): add user and guest preference models with migrations (e622e79)
- feat(search): add salary fields and publisher to searchable attributes (bf0d2e8)
- feat(homepage): replace hardcoded country list with dynamic top countries (9f891a5)
- feat(models): add country flag emoji support (87012d9)
- feat(api): track last request time for API keys (ee9ae9e)
- feat(ApiKeyResource): set default value for api_name select (e5913e5)
- feat(JobListing): add is_remote boolean cast for job listings (3480db1)
- feat(search): add is_remote field to searchable attributes (aa06f40)
- Add a backup database config (d59a263)
- add
digestqueue to horizon (cc87af4) - feat(homepage): add country filter and enhance search UI (59dabc0)
- feat(cache): add CountriesCache to manage country data caching (3055af2)
- feat(search): add search functionality to JobListing model (2f677c5)
Bug Fixes
- fix: optimize related jobs query performance with hash-based randomization (#81) (c58568a)
- Fix Sitemap Generation to Use
having()Instead ofwhere()(7fbe4c0) - fix slow DB queries and N+1s across job pages and StoreJobs (#80) (f8d9a75)
- Fix N+1 query in JobListingCache by eager loading applyOptions relationship (7bff5c5)
- fix: update deployment script to exclude development dependencies for optimized performance (e00778c)
- fix: remove unnecessary ownership change in deployment script and optimize application performance (dc5f8d5)
- fix: update deployment script to set ownership for storage and cache directories (bff0d2f)
- fix: n+1 problem for apply option (d859e13)
- Update dependencies and fix CSS styles in Filament components (122cf1e)
- Fix JSON formatting and set default remote status (2231265)
- fix:batch trait issue (94de800)
- fix:batchable namespace (56e1222)
- Fix admin access gate condition using Role enum (a481121)
- Fix SSH command to use deploy user in deploy workflow (7066010)
- Improve SERVER_IP debug output in deploy workflow (4426888)
- fix:loading effect possition during job filter (3fdd1b5)
- Revert "Fix cache invalidation issue for redis" (04ffdfd)
- fix:test cases (336d070)
- fix:test cases (d022577)
- fix: update PHPUnit configuration to use Redis for caching (e3c3d94)
- fix: replace Cache facade with RedisCache helper for job page and latest jobs cache invalidation (d2db647)
- fix: replace Cache facade with RedisCache helper for job filter and listing cache invalidation (6921372)
- fix: replace Cache facade with RedisCache helper in JobListingObserver and JobPageCache (e10cde6)
- fix: replace Cache facade with RedisCache helper for invalidating job recommendations (15103b6)
- fix: replace Cache facade with RedisCache helper for cache invalidation (9f27be4)
- Fix deployment workflow and update dependencies (58d1147)
- fix(config): change redis queue connection from default to queue (26da794)
- refactor(JobFilter): remove debug logging and unused method (8e1ab9f)
- fix(scheduler): update job schedule frequency and days (4815290)
- fix(schedule): update NotifyUserAboutNewJobs frequency to Thursdays and Saturdays (403a12b)
- fix(schedule): update DispatchJobCategories schedule to run on specific days (7e20603)
- fix: correct job application check query (683e985)
- fix(emails): update unsubscribe link to use correct route (f826300)
- fix: remove email frequency check for job notifications (ed79184)
- fix: correct column name in job recommendation query (a978225)
- fix(emails): handle null slug in weekly digest email (5c73083)
- fix(profile): remove 'never' email option and disable emails per period (c8af1af)
- fix(profile): correct email notifications checkbox name and value (2f310a5)
- Fix type in save-for-letter.blade.php: letter -> later (edae2cf)
- fix(profile): improve category selection handling in preferences (8940080)
- fix(views): display raw country value instead of country object (e35d350)
- fix: cast is_remote to bool in searchable array (354c7d5)
- fix:ai cover letter generation (36999c6)
- fix:route name not found (8ca5a82)
Improvements & Refactoring
- Simplify Job dispatch and refactor test cases (#85) (c583d3a)
- refactor: Simplify JobListingObserver by consolidating cache invalidation and streamlining methods (f4476bc)
- refactor: Optimize job processing in StoreJobs to handle large datasets without memory exhaustion (7c874e4)
- Remove UI elements and clean up job details page (dccfa1d)
- Refactor Job Details Page UI with Enhanced Design and Responsiveness (33219ce)
- Update deployment workflow to prevent asset build directory cleanup (8bb6298)
- Refactor GitHub Actions workflow for opencode (fa4e54f)
- Refactor Related Job Listings Cache retrieval logic (1489041)
- refactor: update latest jobs component to enhance user interaction and accessibility (5d9f905)
- refactor: update most viewed jobs component to improve accessibility and user interaction (1aeaef2)
- UI refactoring light theme support (#76) (3eb8e33)
- Refactor Livewire component refresh logic in job index view (d5038db)
- Refactor job handling logic to improve duplicate prevention (89357f1)
- refactor: streamline metrics collection by removing redundant methods and updating job application metrics source (bc5a41e)
- refactor: streamline metrics collection by removing redundant methods and updating job application metrics source (43af16e)
- refactor: remove command scheduling from console routes (29a9c92)
- refactor: dispatch job instead of direct execution in command (5c88b12)
- refactor: use collections in collectCpuMetrics method (0c33f6a)
- refactor(CountryAwareJobPageCache): simplify job fetching logic and improve cache invalidation (3803c0c)
- refactor(metrics): switch from APC to Redis storage and expose metrics in Prometheus format (c79806b)
- refactor(JobListing): replace Prunable with MassPrunable trait (c3f2a37)
- perf(Caches): optimize job page query by replacing inRandomOrder with selectRaw (a3e5cd4)
- perf(Caches): optimize related job listing cache query (c3beb4a)
- refactor(database): unify redis configuration to use common env vars (f90d13f)
- refactor(database): update redis queue config to use unified env vars (7857805)
- refactor(database): simplify redis configuration by removing unused options (d5a0640)
- refactor: reorganize imports and register Livewire component (a234310)
- refactor(config): change redis connections to use 'default' consistently (febabd9)
- refactor(schedule): change job dispatch frequency to every six hours (460a778)
- refactor: remove rate limit check from job API key query (52d38d5)
- refactor(ApiKeyResource): replace api_secret column with rate_limit_reset (0c64c7c)
- refactor(jobs): improve job dispatching and error handling (e84924e)
- perf(assets): optimize asset loading and analytics script (fb499ed)
- build: optimize vite build configuration (a6274cc)
- refactor(views): remove guest job preferences link from mobile menu (5d74357)
- refactor(views): remove guest job preferences link from desktop menu (cd3150f)
- refactor(preferences): rename job topics and regions fields for consistency (d8f08d6)
- refactor(social-login): improve social login buttons styling and remove facebook (b33a1c3)
- refactor(JobRecommendationService): simplify guest job recommendation query (a540712)
- refactor: remove hardcoded queue name from job constructor (78dd10e)
- refactor(mail): reorder failover mailers priority (f9b74af)
- Optimize browse job filter queries (b8f8646)
- refactor(MostViewedJobsCache): increase limit of most viewed jobs from 3 to 4 (34075b9)
- refactor(views): replace hardcoded job counts with dynamic queries (e36e245)
- refactor(JobFilter): optimize job query logic for better readability and maintainability (096fc61)
- perf(Caches): optimize memory usage in CountriesCache by selecting specific fields (02cb7e0)
- refactor(views): rename 'remote' to 'is_remote' for clarity and update option text (779a1ba)
- refactor(JobFilter): optimize search query handling for job listings (9ab5380)
Documentation
- Update README.md (429e8d1)
Maintenance
- Update text color for search suggestions (713a7ef)
- Update Job Detail SEO meta image logic (3365eef)
- Update GitHub Actions workflow for opencode (6b6156e)
- Update laravel-request-analytics package to version 1.3.0 and enhance date range filter functionality in analytics views (963f3a6)
- Update laravel-request-analytics package to version 1.2.0 in composer.lock (c5830f2)
- chore: update robots.txt to enhance crawling rules and disallow access to sensitive areas (df9b846)
- chore: update deployment workflow to include Node.js setup, npm dependency installation, and asset building (629c578)
- style: update contact page styles for improved accessibility and visual consistency (ec99b77)
- Update job category prompt instructions (d95d3cb)
- Update content formatter placeholder description text (0b64a08)
- Update Composer dependencies Update route path for content formatter store endpoint (ecb9693)
- Update composer.lock (3e654b7)
- Update FormatContentJob.php (9d8397a)
- Update deploy workflow to use environment variable for server IP (ce6e86d)
- Update deploy workflow and improve SSH setup (31f9f99)
- Update deployment workflow to use PHP 8.3 (c4ac9d5)
- chore(phpunit): update environment variables for testing configuration (93912ce)
- build: update laravel/framework dependency to ^12.0 (0d5c870)
- style(views): update apply job button styling for better visual appeal (8abd3c7)
Other Changes
- Disable Google indexing and simplify backup schedule (2617cec)
- Enhance Related Jobs section with modern, detailed card design (41e2106)
- Replace Ubuntu font with JetBrains Mono for system-wide font (e7aa9b3)
- Replace hardcoded bookmark buttons with Livewire component (de2ef70)
- Enhance deployment workflow in GitHub Actions (a3d730b)
- Enhance styling for body background and remove Preferences menu item from desktop and mobile menus (cf6cc43)
- reinstall request analytics (e1b6f0d)
- Remove laravel-request-analytics package and associated views and components from the project. (9816ae1)
- Rewrite social meta generation (#78) (cf56abf)
- style: enhance contact page layout and content for improved user engagement and accessibility (480f469)
- revert the breeze component for the first version compatibilty. (b3c8064)
- Remove verbose logging from FormatContentJob (1b14eea)
- Improve empty state styling for recent submissions (1be0dbe)
- cretae composer.json for content formatter (a5d5863)
- create a new package for facebook job post formating (78bf2c8)
- Use secrets.SERVER_IP instead of vars.SERVER_IP in deploy workflow (9972a90)
- Disable public key logging in SSH agent step (932292a)
- Implement database backup (#75) (2f02a1f)
- Simplify deployment workflow and switch to SSH-based deploy (0dc6f48)
- Comment out business metrics job in scheduler (77bba64)
- Comment out system metrics job from scheduler (9501870)
- Implement cover letter variation generation based on user feedback (92cac08)
- Enhance cover letter chat functionality with loading indicators (5e278b8)
- Enhance JobFilter component with error handling and initialization logic (d47201d)
- Implement AI-powered cover letter generator with professional template system (#74) (b799f55)
- AI response metrics for promethous will be implement later (54c92c1)
- AI response metrics for promethous will be implement later (cc3aa81)
- delete exisitng ai chat implementation (58a920d)
- perf(JobPageCache): reduce perPage items from 10 to 6 to improve performance (87752f9)
- build(cache): change default cache store from database to redis (f0bd1eb)
- perf(widgets): decrease polling interval for ApiRequestStats to 3s (d5858d6)
- perf(HomePageController): increase top countries limit from 5 to 10 (71cee2e)
- perf(Caches): increase job views cache ttl from 1 to 5 minutes (fc58e2b)
- chnage preference template and reorganize (b89d19a)
- formating prompt for cover letter generation (d3219ae)
- remove unwanted comment (9d3fb9d)
- enhance some prompt generation rule (0134031)
- modify google font loading (cf52888)
- remove unused comment (460afc3)
- Write command for database sync (e01da45)
- Remove exception event (c08c18f)
- Capture country only for homepage to reduce unwanted job dispatch (3207976)
- Remove unused rate limiter (fc5b799)
- Move country count to cache. It increase almost 2.5s loading time (d4f7362)
- Remove country listing and select specific field from job listing for most viewed job. It increase almost 6s of loading time (a509f79)
- style(views): enhance job categories section with improved UI and animations (7acbdc3)
- style(views): improve layout and styling of most-viewed-jobs component (48800a1)
- style(home/latestJobs): enhance UI with gradient backgrounds and hover effects (605e623)
Contributors
- @abul Hassan
- @md Abul Hassan
- @jahangirripon
Full Changelog: v1.4.0...v2.0