-
fix(P1-security): Rate limiter fails CLOSED for auth/AI endpoints when Redis is down
-
fix(P1-security): Auth routes use refresh sessions, logout revokes, 15min access tokens
-
fix(P1-security): Reduce access token to 15min, add refresh session table, implement token revocation on logout
-
fix(P0): Add key_prefix and key_last4 to UserAPIKey model, settings route uses them"
-
fix(P0): Migration uses vector(768), remove direct port exposure in prod compose, add lockfile note
-
fix(P0): encryption.py uses settings.ENCRYPTION_KEY from config properly
-
fix(P0): Remove unused Field import from config, add ENCRYPTION_KEY to settings"
-
fix(P0): Fix semantic search to use 768 dims (nomic-embed-text) for local-first, document choice
-
fix: Separate ENCRYPTION_KEY from SECRET_KEY, add key_last4 to avoid decrypt on list
-
fix: LLM gateway with Pydantic schema validation per task + safe retry variable + user-key-aware routing
-
fix(critical): Alembic env.py uses settings.database_url_sync consistently
-
fix(critical): LLM gateway actually passes user API keys to litellm calls
-
fix(critical): database.py uses correct settings.database_url_async property
-
fix: Implement real salary parsing + fix normalize_salary stub"
-
fix: Clean main.py - uses centralized api_router, much simpler
-
fix: Router refactor - centralized api_router.py instead of 65 imports in main.py
-
fix: LLM gateway with JSON retry, all providers configured, structured validation
-
fix: Add cryptography to pyproject.toml for Fernet encryption
-
fix: Auth register with password validation, proper flush order, stronger Pydantic
-
fix(security): Enforce SECRET_KEY in prod, stronger password validation, fix config
-
fix(security): Settings API uses real encryption, never returns raw keys
-
fix(security): Real Fernet encryption for API keys, JWT secret enforcement, password validation
-
feat: 🕷️ SmartJobSearch - searches ALL sources with params, no URL needed
-
feat: 🕷️ Complete scraper rewrite - smart scraping with params OR urls, full data extraction
-
fix: Update Dockerfile to install fpdf2 + weasyprint deps, playwright setup
-
fix: Add fpdf2 to deps, register pdf_export + all remaining routes in main.py
-
fix: Wire up resume PDF download API endpoint using @react-pdf on server
-
fix: Add python-docx + pdfminer to pyproject.toml, add dotenv dep for alembic
-
feat: Add auto-discovery admin controls and user discovery page"
-
feat: Add autonomous job discovery - scrapes without user input from 20+ free sources
-
feat: Add scrape-any-url API endpoint + admin bulk discovery"
-
feat: Add RSS/Atom feed parser for job boards and Google Jobs RSS integration
-
feat: Add LLM-powered job extraction for pages that resist pattern matching
-
feat: Add universal web scraper - scrapes ANY career page with intelligent extraction
-
feat: Add job search coaching tips based on user behavior"
-
feat: Add job application A/B testing (track which resume versions get more responses)
-
feat: Add career path exploration AI tool
-
feat: Add job search journal for reflections and learnings
-
feat: Add AI elevator pitch generator
-
feat: Add job fit score calculator (multi-dimensional match)"
-
feat: Add job application tracker widget data for external embeds
-
feat: Add work style assessment and culture match scoring"
-
feat: Add job application deadline tracker and calendar integration
-
feat: Add interview question bank with crowdsourced data
-
feat: Add daily job digest with personalized AI summary
-
feat: Add company reviews and rating system"
-
feat: Add job market trends analysis endpoint
-
feat: Add AI resume keyword optimizer endpoint
-
feat: Add job sharing and collaborative lists
-
feat: Add job search preferences learning system