Every change, newest first β hash, date, type, files, lines added/removed. π = a removal/cleanup. Click a hash to view the full diff on GitHub.
| When | Type | Change | Files | Lines | Hash |
|---|
| 2026-06-26 18:32 | FEAT | feat(verify): button-wiring regression gate β every handler checked on every verify | 2 | +24 β3 | 84fac74 |
| 2026-06-26 18:25 | FIX | π fix(dead-code) + feat(qa): remove orphaned Welcome-back banner; embed Button Matrix in dashboard | 4 | +28 β45 | 377499a |
| 2026-06-26 18:21 | FEAT | feat(qa): Button Traceability Matrix β every handler by flow/screen, PASS/FAIL | 3 | +4467 β0 | b044127 |
| 2026-06-26 18:10 | FEAT | feat(qa): self-service restore script + Backups & Restore dashboard section | 2 | +133 β0 | 5376d74 |
| 2026-06-26 18:01 | CHORE | chore(qa): screen reachability inventory analyzer | 2 | +115 β3 | d032681 |
| 2026-06-26 17:34 | CHORE | chore(exchange): change By role tab icon πΌ β π·οΈ | 1 | +1 β1 | d3ed08b |
| 2026-06-26 17:19 | FEAT | feat(exchange): collapse the Filters & Job Orders tab by clicking it again | 1 | +5 β3 | 51bfaca |
| 2026-06-26 17:09 | FEAT | feat(exchange): 'Filters & Job Orders' tab β move limit-order panel under it | 1 | +10 β7 | 172139a |
| 2026-06-26 16:54 | FEAT | feat(exchange): single continuous header row β nav buttons follow Place a Limit Order | 1 | +12 β18 | 93e9785 |
| 2026-06-26 16:49 | FEAT | feat(exchange): limit-order toggle into top row; split actions left / nav right | 1 | +12 β12 | 5bc32ea |
| 2026-06-26 16:35 | FIX | π fix(exchange): card flip crash β remove dead _tdStatus call in _tdDeepBackHTML | 1 | +0 β1 | 5461ff2 |
| 2026-06-26 16:29 | FEAT | feat(exchange): rΓ©sumΓ© button to top row + collapse filters into a Place a Limit Order accordion | 1 | +25 β23 | ae090ad |
| 2026-06-26 16:21 | FEAT | feat(exchange): compress filter panel β stacked actions left, filters right | 1 | +23 β17 | 9a9efdd |
| 2026-06-26 16:09 | FEAT | π feat(exchange): remove the 'Skills the market wants' gap-picker section | 1 | +0 β1 | 74dfca2 |
| 2026-06-26 16:07 | FEAT | feat(exchange): consolidate rΓ©sumΓ© controls into the limit-order row | 1 | +2 β12 | e52f2dd |
| 2026-06-26 13:26 | FEAT | feat(gmail): parity with Yahoo β branded splash + redesigned connect wizard | 1 | +28 β10 | a418a74 |
| 2026-06-26 13:11 | FEAT | feat(scoring): augment thin jobs to ~20 reqs + direct/fuzzy match weighting | 2 | +35 β9 | 2f07d8e |
| 2026-06-26 13:06 | FEAT | feat(scoring): cap match at 90 (no false security) + richer JD skill derivation | 2 | +11 β10 | b6cc0a0 |
| 2026-06-26 12:49 | FEAT | feat(yahoo): step-1 safety line β sign into the account you want scanned | 1 | +1 β1 | 997cdee |
| 2026-06-26 12:47 | FIX | fix(yahoo): app-passwords deep-link 404 β point to Account Security root | 1 | +2 β2 | 9dd9afa |
| 2026-06-26 12:23 | FEAT | feat(roles): add Consultant option across all industries | 1 | +8 β8 | bab50b4 |
| 2026-06-26 12:22 | FEAT | feat(scoring): cap match score at 97 β never 100% (no false certainty) | 2 | +6 β4 | bde3638 |
| 2026-06-26 12:18 | FEAT | feat(splash): enrich live ticker with city + date β 'β‘ Role Β· City Β· Jun 12' | 1 | +13 β4 | 1dacd6f |
| 2026-06-26 12:17 | FEAT | feat(splash): Stop button β halt deep-match, show top results scored so far | 1 | +15 β0 | dea7cd0 |
| 2026-06-26 12:15 | FEAT | feat(splash): explain the scan β 30 days, roles/salaries/cities, filterable list | 1 | +5 β1 | 7646fe0 |
| 2026-06-26 12:13 | FEAT | feat(inbox): collapsible rΓ©sumΓ© skills panel on scan results (hidden by default) | 1 | +22 β0 | f6834e8 |
| 2026-06-26 12:11 | FEAT | feat(inbox-filters): Role dropdown on scan results (extracted from job positions) | 1 | +11 β3 | 507d3de |
| 2026-06-26 12:10 | FEAT | feat(scoring): deterministic fit-for-purpose match score (weighted coverage) | 2 | +42 β3 | 2ceb97d |
| 2026-06-26 12:04 | FEAT | feat(scorecard): rΓ©sumΓ© skills universe FIRST, then JD-derived category match | 1 | +31 β32 | 74b392d |
| 2026-06-26 11:58 | FIX | fix(scorecard): fuzzy skill matching for rΓ©sumΓ© universe β substring match not exact | 1 | +9 β5 | 8153008 |
| 2026-06-26 11:50 | FEAT | feat(scorecard): rΓ©sumΓ© skills universe β matched vs bonus chips + full skills analysis | 1 | +30 β3 | 9aa478c |
| 2026-06-26 11:44 | FEAT | feat(splash): animated scanner β live counter, job ticker, gradient progress bar | 1 | +62 β21 | a293e76 |
| 2026-06-26 10:55 | FEAT | feat(splash): live job analysis counter β 'Analyzing job X of N β Y remaining' | 1 | +3 β2 | a9a078f |
| 2026-06-26 10:47 | FEAT | feat(scorecard): inferred-match banner when no real JD available | 1 | +2 β1 | f1925a4 |
| 2026-06-26 10:46 | FIX | fix(deep-match): /api/jd/generate β blind JD generation before deep match | 2 | +34 β3 | 6dd5172 |
| 2026-06-26 10:43 | FIX | fix(deep-match): use same two-step flow as Quick Match for inbox jobs | 1 | +14 β3 | c6fc59f |
| 2026-06-26 10:42 | FIX | fix(deep-match): stop inferred requirements from anchoring on the rΓ©sumΓ© | 1 | +1 β1 | 56f9e63 |
| 2026-06-26 10:32 | FEAT | feat(inbox): back button + salary/city filters + richer deep match | 2 | +39 β3 | 75d3cf3 |
| 2026-06-26 10:15 | FIX | fix(scoring): runMatching preserves deep match score β stops lightweight scoreJob from overwriting it | 1 | +1 β1 | c6344fa |
| 2026-06-26 10:13 | FEAT | feat(exchange): card flip runs deep gap analysis β full categorized breakdown on back face | 1 | +69 β5 | 3850d31 |
| 2026-06-26 10:11 | FEAT | feat(exchange): tdGrab runs deep gap analysis before showing scorecard | 1 | +11 β16 | d4585fa |
| 2026-06-26 10:09 | FEAT | feat(scoring): deep gap analysis IS the score β runs in background for all inbox jobs | 1 | +13 β4 | 9dde835 |
| 2026-06-26 10:07 | FEAT | feat(inbox): deep match on-demand for inbox scan jobs β full gap scorecard from View Match | 2 | +17 β7 | 7d22256 |
| 2026-06-26 09:55 | FIX | π fix: remove coverage column, rΓ©sumΓ© confirm gate, Yahoo multi-folder scan, source labels | 1 | +44 β31 | 97c760c |
| 2026-06-26 09:30 | FIX | fix: resume gate inline upload, multi-folder Yahoo scan, source-aware fallback message | 3 | +120 β84 | a73774a |
| 2026-06-26 08:49 | FEAT | feat(yahoo): upload a rΓ©sumΓ© from the ALL JOBS header β score in place | 1 | +26 β1 | f9ffd5a |
| 2026-06-26 08:45 | FIX | fix(yahoo): time-budget the scan (no more board fallback) + honest no-rΓ©sumΓ© buckets | 2 | +62 β8 | c3abc99 |
| 2026-06-26 08:14 | FEAT | feat(yahoo): connect wizard + honest scoring + source/email/filter transparency | 1 | +143 β38 | ed3862a |
| 2026-06-26 07:17 | FIX | fix(yahoo): parameterized scan caps + capture sender domain (fixes 'only 2 jobs') | 1 | +6 β0 | 0867b76 |
| 2026-06-26 07:11 | FIX | fix(yahoo): parameterize the scan caps (per-request, safe defaults) β fixes 'only 2 jobs' | 3 | +26 β9 | 8dd15b0 |
| 2026-06-26 00:57 | FEAT | feat(yahoo): Yahoo scan = exact replica of the Gmail scan (as agreed) | 1 | +121 β5 | 5bfcc78 |
| 2026-06-26 00:45 | CHORE | π revert(yahoo): restore the WORKING exchange scan β delete my broken Gmail-clone | 1 | +7 β99 | 2ab29f4 |
| 2026-06-26 00:36 | FIX | π fix(yahoo): surface the real /yahoo/fetch error + land inbox scan on the Exchange | 2 | +20 β57 | e95fcd1 |
| 2026-06-26 00:03 | FIX | fix(yahoo+gmail): inbox scan feeds BOTH the individual matches AND the Job Exchange | 1 | +31 β0 | 423c798 |
| 2026-06-25 23:54 | FEAT | feat(yahoo): Yahoo scan = full twin of Gmail (standalone, exchange never forced) | 2 | +181 β7 | 7580438 |
| 2026-06-25 23:38 | CHORE | π refactor(yahoo): delete dead old-scanner code (KISS cleanup) | 1 | +3 β138 | 24744f2 |
| 2026-06-25 21:47 | FEAT | feat(yahoo): friction-reducers β one-click clipboard paste + email prefill | 1 | +25 β1 | a79b5ec |
| 2026-06-25 21:29 | CHORE | refactor(yahoo): unify to ONE connect flow (KISS) | 1 | +8 β1 | 6eb3230 |
| 2026-06-25 21:23 | FEAT | feat(yahoo): guided app-password onboarding for new users | 2 | +27 β5 | 0dde3a1 |
| 2026-06-25 21:19 | CHORE | docs(test): update Auth + Jobs scripts for the ghost-gate fix & Gmail read-only | 2 | +9 β8 | c5b9e5f |
| 2026-06-25 21:15 | FEAT | π feat(gmail): switch to read-only scope (gmail.readonly) β drop auto-filters | 1 | +11 β3 | 9fe7439 |
| 2026-06-25 21:10 | FIX | fix(auth): kill the ghost 'Welcome back' gate / first-registration lockout | 3 | +79 β7 | 08bc285 |
| 2026-06-25 20:46 | FEAT | feat(interview): 1 free question per agent (CoachΒ·SMEΒ·Trainer), then paywall | 1 | +57 β37 | 096901e |
| 2026-06-25 20:31 | FIX | fix(security): gate /subscription/reset-usage β auth + subscribers only | 2 | +12 β5 | b8878b9 |
| 2026-06-25 20:26 | FIX | fix(security): rate-limit /ava/chat (50/15min per IP) β anon hardening complete | 2 | +7 β3 | 8956a52 |
| 2026-06-25 20:24 | FIX | fix(security): gate /resume/docx download (post-signup) β 9/10 anon-hardened | 2 | +4 β4 | d370434 |
| 2026-06-25 20:21 | FIX | fix(security): Tier-2 β gate Customize download + Interview questions | 2 | +7 β8 | de6dbed |
| 2026-06-25 20:17 | CHORE | π docs(test): make the Test scripts tab pristine β the Master Test Pack only | 1 | +3 β245 | 745b223 |
| 2026-06-25 20:12 | CHORE | docs(test): complete Pilot Test Pack (7 flows) + wire into dashboard | 8 | +285 β1 | 41a117b |
| 2026-06-25 20:04 | CHORE | docs(test): Pilot Test Pack β standard + cover + Payments exemplar | 2 | +133 β0 | 918eb9f |
| 2026-06-25 19:51 | FEAT | feat(security+qa): Tier-2 interview gating + auth-attach wrapper + dashboard Payments section | 4 | +87 β6 | a77ca4a |
| 2026-06-25 19:40 | FIX | fix(security): activate-subscription requires auth + activates only the authed user (Tier 1) | 3 | +12 β15 | 20d1d5a |
| 2026-06-25 19:29 | CHORE | test(paywall): anonymous bypass probe β hits paid endpoints with no token | 1 | +58 β0 | 86314f9 |
| 2026-06-25 19:25 | CHORE | test(paywall): pay-flow verified for all 4 features (5/5 each) | 1 | +5 β2 | c2ff64b |
| 2026-06-25 19:21 | FEAT | feat(qa): put the Health Sentinel + π QA Sidekick on the /v2 landing too | 3 | +202 β2 | 9a8fe1d |
| 2026-06-25 18:45 | CHORE | test(paywall): pay-flow check (paywall β upgrade β unlock) + docs | 2 | +99 β1 | 4f1550c |
| 2026-06-25 18:24 | CHORE | test(paywall): gate-check suite for all 4 features + docs | 2 | +130 β0 | 26d6392 |
| 2026-06-25 00:00 | CHORE | docs: session handoff β landing+exchange redesign, demo script, paywall restoration | 1 | +83 β0 | bb92408 |
| 2026-06-24 23:50 | FIX | fix(/v2 auth): email signup/login no longer bounces to the 'Welcome back' re-auth lock | 2 | +7 β2 | 3703e6c |
| 2026-06-24 23:35 | FIX | fix(paywall): /cycle/create respects an explicit 0 free-run limit (was '|| 1' β forced 1) | 1 | +1 β1 | 56020b6 |