* Add startup.jobs extractor support
* Harden startup.jobs extractor inputs
* Wire startupjobs into Docker and CI
* Tighten startupjobs review follow-ups
* fix: publish ghcr during release workflow
* feat: add startupjobs max jobs configuration and update related tests
* Deduplicate string cleanup helpers and not-found responses
* Enforce aliased imports for infra and shared modules
* Enforce @client/@server aliases for deep relative imports
* Deduplicate visa sponsor and location filter definitions
* Use shared city filter export in extractor location checks
* feat(shared): add glassdoor to job source model
* feat(jobspy): support glassdoor site in scraper and discovery
* feat(pipeline): include glassdoor in source selection and API schema
* feat(ui): add glassdoor toggle to jobspy settings and run estimates
* test/docs: cover glassdoor jobspy integration end-to-end
* fix(jobspy): make glassdoor always-on without settings toggle
* fix(jobspy): fallback glassdoor when location is country-level
* refactor(jobspy): drop direct pandas usage in wrapper
* feat(pipeline): gate glassdoor by supported countries
* fix(jobspy): restore pandas output and keep glassdoor disable copy
* fix(jobspy): map country-level glassdoor searches to city fallbacks
* feat(ui): require glassdoor city for country-level runs
* feat(types): add jobspyIsRemote to TypeScript type definitions
- Add jobspyIsRemote boolean fields to AppSettings interface
- Follow three-field pattern: value, default, override
- Update test fixture with default values (false)
* feat(validation): add jobspyIsRemote validation schema
Add Zod validation schema for jobspyIsRemote boolean setting to ensure type safety in the settings API endpoint.
* feat(db): add jobspyIsRemote to database repository setting keys
* feat(api): add jobspyIsRemote storage to settings API route
* feat(service): add jobspyIsRemote to settings service with environment variable support
* feat(jobspy): add isRemote parameter to JobSpy service interface
* feat(pipeline): pass isRemote setting to JobSpy service
* feat(python): add is_remote parameter to JobSpy scraper script
* feat(ui): add Remote Jobs checkbox to JobSpy settings
* feat(ui): add Remote badge to job display
- Display Remote badge when job.isRemote === true
- Position badge next to Source badge in JobHeader
- Use Badge component with outline variant
- Badge does not display when isRemote is false or null
* docs(env): add JOBSPY_IS_REMOTE environment variable documentation
- Added JobSpy section to .env.example with JOBSPY_IS_REMOTE variable
- Documents remote-only job filtering option with default value of 0 (disabled)
- Follows existing .env.example format with clear section headers and descriptions
* test(remote-jobs): verify end-to-end functionality with comprehensive feedback loops