peregrine/web/src/views
pyr0ball fa2569c7e4 feat(settings): License, Data, Privacy, Developer tabs — stores, views, endpoints
- useLicenseStore: load/activate/deactivate with tier badge and key input
- useDataStore: createBackup with file count and size display
- usePrivacyStore: BYOK panel logic (dismissal snapshot tracks new backends),
  telemetry toggle (self-hosted) and master-off/usage/content controls (cloud)
- Views: LicenseView (cloud/self-hosted split), LicenseSelfHosted,
  LicenseCloud, DataView, PrivacyView, DeveloperView
- dev-api.py: /api/settings/license, /activate, /deactivate;
  /api/settings/data/backup/create; /api/settings/privacy GET+PUT;
  /api/settings/developer GET, /tier PUT, /hf-token PUT+test, /wizard-reset,
  /export-classifier; _load_user_config/_save_user_config helpers; CONFIG_DIR
- TDD: 10/10 store tests passing (license×3, data×2, privacy×5)
2026-03-22 16:01:29 -07:00
..
settings feat(settings): License, Data, Privacy, Developer tabs — stores, views, endpoints 2026-03-22 16:01:29 -07:00
ApplyView.vue fix(apply): ensure loading resets on fetchJobs error and clear toast timer on unmount 2026-03-19 08:24:52 -07:00
ApplyWorkspaceView.vue fix(apply): check saveCoverLetter error; document cover-letter-generated in wrapper 2026-03-19 08:36:19 -07:00
DigestView.vue fix: add error feedback and keyboard accessibility to DigestView 2026-03-20 10:16:24 -07:00
HomeView.vue feat(vue-spa): Apply view — job picker list + cover letter workspace 2026-03-18 09:05:40 -07:00
InterviewPrepView.vue fix: contacts fetch error degrades partially, not full panel blank 2026-03-20 19:16:03 -07:00
InterviewsView.vue feat(survey): implement SurveyView with navigation wiring 2026-03-21 00:27:57 -07:00
JobReviewView.vue feat(vue-spa): JobReviewView card stack with swipe gestures 2026-03-17 22:30:33 -07:00
SettingsView.vue feat(web): Vue 3 SPA scaffold with avocet lessons applied 2026-03-17 21:24:00 -07:00
SurveyView.vue feat(survey): show job picker when navigating to /survey with no id 2026-03-21 00:49:55 -07:00