Bug fixes (filed as #125–#128):
- Wizard step 7 read data.titles instead of data.search.titles — user-entered
job titles and locations were silently dropped on every wizard run (#125)
- GET /api/settings/search returned "titles" key but store expected "job_titles" —
Settings → Search Prefs always showed empty even when data existed (#126)
- remote_only preference not persisted during wizard setup (#127)
- apply-to-profile didn't set default_resume_id in user.yaml, so future
Resume Profile saves never synced back to the library entry (#128)
Also:
- Wizard step headings corrected (off-by-one after Training step was inserted)
- Ollama host in wizard inference step now reads from saved wizard state
- Resume upload during wizard now creates a library entry and sets it as default
Docs:
- New: docs/user-guide/daily-workflow.md — end-to-end daily usage guide
- Updated: docs/user-guide/settings.md — rewritten for Vue SPA (was Streamlit)
- mkdocs.yml nav: Daily Workflow added as first User Guide entry
GUI help links:
- web/src/composables/useDocsUrl.ts — shared docs base URL composable
- Home: "Daily Workflow guide ↗" link in subtitle
- Job Review: "? Docs" link in title row
- Resume Library: "? Help" link in header
- Settings → Resume Profile: "? Help" link in page header
- Settings → Search Prefs: "? Help" link in page header
Replace git.circuitforge.io/circuitforge/peregrine with the correct
Forgejo URL (git.opensourcesolarpunk.com/Circuit-Forge/peregrine) in
Quick Start, License, and Contributing clone instructions.
Update feature matrix in docs/index.md to show BYOK‡ for AI features
(cover letter, company research, interview prep, survey assistant) with
a footnote explaining the free-with-own-backend model. Previously the
table showed these as Paid-only, which would mislead self-hosters.
Six new screenshots (dashboard, card-stack review with approve/reject tint,
apply workspace, interviews kanban) plus an animated GIF of the swipe-review
flow. Adds demo link above the fold.
- Rename setup.sh to install.sh (standardise with cf-orch installer pattern)
- Remove hardcoded dev-machine path from activate_git_hooks(); go straight
to .githooks/ core.hooksPath fallback — the absolute path was only valid
on the author's machine and surprised self-hosters
- Add capture_license_key(): optional CFG-XXXX-… prompt after setup_env(),
writes CF_LICENSE_KEY + HEIMDALL_URL into .env when a valid key is entered
- Fix next-steps port: read STREAMLIT_PORT from .env instead of hardcoding
8501 (Docker default is 8502; users who customise the port saw a wrong URL)
- Update .env.example: STREAMLIT_PORT=8502 (Docker default, not bare-metal 8501)
- Fix stale git clone URL in docs/getting-started/installation.md:
git.circuitforge.io → git.opensourcesolarpunk.com/Circuit-Forge/peregrine
- Update all setup.sh references across manage.sh, Makefile, CONTRIBUTING.md,
README.md, and docs/ to install.sh
Closes#71
docs/reference/tier-system.md:
- Rewritten tier table: free tier now described as "AI unlocks with BYOK"
- New BYOK section explaining the policy and rationale
- Feature gate table gains BYOK-unlocks? column
- API reference updated: can_use, tier_label, has_configured_llm with examples
- "Adding a new feature gate" guide updated to cover BYOK_UNLOCKABLE
demo/config/user.yaml:
- Reformatted by YAML linter; added dismissed_banners for demo UX