8e36863a49
feat: Interview prep Q&A, cf-orch hardware profile, a11y fixes, dark theme
...
CI / Backend (Python) (push) Failing after 2m15s
CI / Frontend (Vue) (push) Failing after 21s
Mirror / mirror (push) Failing after 9s
Backend
- dev-api.py: Q&A suggest endpoint, Log Contact, cf-orch node detection in wizard
hardware step, canonical search_profiles format (profiles:[...]), connections
settings endpoints, Resume Library endpoints
- db_migrate.py: migrations 002/003/004 — ATS columns, resume review, final
resume struct
- discover.py: _normalize_profiles() for legacy wizard YAML format compat
- resume_optimizer.py: section-by-section resume parsing + scoring
- task_runner.py: Q&A and contact-log task types
- company_research.py: accessibility brief column wiring
- generate_cover_letter.py: restore _candidate module-level binding
Frontend
- InterviewPrepView.vue: Q&A chat tab, Log Contact form, MarkdownView rendering
- InterviewCard.vue: new reusable card component for interviews kanban
- InterviewsView.vue: rejected analytics section with stage breakdown chips
- ResumeProfileView.vue: sync with new resume store shape
- SearchPrefsView.vue: cf-orch toggle, profile format migration
- SystemSettingsView.vue: connections settings wiring
- ConnectionsSettingsView.vue: new view for integration connections
- MarkdownView.vue: new component for safe markdown rendering
- ApplyWorkspace.vue: a11y — h1→h2 demotion, aria-expanded on Q&A toggle,
confirmation dialog on Reject action (#98 #99 #100 )
- peregrine.css: explicit [data-theme="dark"] token block for light-OS users (#101 ),
:focus-visible outline (#97 )
- wizard.css: cf-orch hardware step styles
- WizardHardwareStep.vue: cf-orch node display, profile selection with orch option
- WizardLayout.vue: hardware step wiring
Infra
- compose.yml / compose.cloud.yml: cf-orch agent sidecar, llm.cloud.yaml mount
- Dockerfile.cfcore: cf-core editable install in image build
- HANDOFF-xanderland.md: Podman/systemd setup guide for beta tester
- podman-standalone.sh: standalone Podman run script
Tests
- test_dev_api_settings.py: remove stale worktree path bootstrap (credential_store
now in main repo); fix job_boards fixture to use non-empty list
- test_wizard_api.py: update profiles assertion to superset check (cf-orch added);
update step6 assertion to canonical profiles[].titles format
2026-04-14 17:01:18 -07:00
3458122537
fix: rename setup.sh → install.sh; four installer gaps from #71
...
CI / test (push) Failing after 21s
- 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
2026-04-05 23:33:51 -07:00
64554dbef1
feat( #43 ): numbered SQL migration runner (Rails-style)
...
CI / test (push) Failing after 19s
- migrations/001_baseline.sql: full schema baseline (all tables/cols)
- scripts/db_migrate.py: apply sorted *.sql files, track in schema_migrations
- Wired into FastAPI startup and Streamlit app.py startup
- Replaces ad-hoc digest_queue CREATE in _startup()
- 6 tests covering apply, idempotency, partial apply, failure rollback
- docs/developer-guide/contributing.md: migration authoring guide
2026-04-04 22:17:42 -07:00
ae6021ceeb
feat(web): Vue 3 SPA scaffold with avocet lessons applied
...
Sets up web/ Vue 3 SPA skeleton for issue #8 , synthesizing all 15 gotchas
from avocet's Vue port testbed. Key fixes baked in before any component work:
- App.vue root uses .app-root class (not id="app") — gotcha #1
- overflow-x: clip on html (not hidden) — gotcha #3
- UnoCSS presetAttributify with prefixedOnly: true — gotcha #4
- peregrine.css alias map for theme variable names — gotcha #5
- useHaptics guards navigator.vibrate — gotcha #9
- Pinia setup store pattern documented — gotcha #10
- test-setup.ts stubs matchMedia, vibrate, ResizeObserver — gotcha #12
- min-height: 100dvh throughout — gotcha #13
Includes:
- All 7 Peregrine views as stubs (ready to port from Streamlit)
- AppNav with all routes
- useApi (fetch + SSE), useMotion, useHaptics, useEasterEgg composables
- Konami hacker mode easter egg + confetti + cursor trail
- docs/vue-spa-migration.md: full migration guide + implementation order
- Build verified clean (0 errors)
- .gitleaks.toml: allowlist web/package-lock.json (sha512 integrity hashes)
2026-03-17 21:24:00 -07:00
22696b4e50
docs: add Jobgether non-headless Playwright scraper to backlog
...
Xvfb-based Playwright can bypass Cloudflare Turnstile on jobgether.com.
Live inspection confirmed selectors; deferred pending Xvfb integration.
2026-03-15 11:59:48 -07:00
208e28b728
docs: update backlog with LinkedIn import follow-up items
2026-03-13 11:24:55 -07:00
8602107cc1
docs: add cloud architecture + cloud-deployment.md
...
architecture.md: updated Docker Compose table (3 compose files), database
layer (Postgres platform + SQLite-per-user), cloud session middleware,
telemetry system, and cloud design decisions.
cloud-deployment.md (new): full operational runbook — env vars, data root
layout, GDPR deletion, platform DB queries, telemetry, backup/restore,
Caddy routing, demo instance, and onboarding a new app to the cloud.
2026-03-09 23:02:29 -07:00
af0ea560b7
chore: move internal plans to circuitforge-plans repo
...
All docs/plans/ files migrated to pyr0ball/circuitforge-plans.
Keeping docs/ for future user-facing documentation.
2026-03-07 15:38:47 -08:00
f1194cacc9
docs: update tier-system reference with BYOK policy + demo user.yaml
...
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
2026-03-02 13:22:10 -08:00
41aef225cd
feat: Podman support — auto-detect COMPOSE, CDI GPU override, podman-compose in setup.sh
2026-02-25 15:36:36 -08:00
11d4f9a8b6
docs: mark cover letter refinement complete in backlog + changelog
2026-02-25 14:44:50 -08:00
1d61683c5b
docs: finalise Circuit Forge product suite naming + product brief
2026-02-25 14:16:56 -08:00
f5dd49666c
docs: backlog — Circuit Forge product expansion (heinous tasks platform)
2026-02-25 14:02:07 -08:00
f45dae202b
chore: mkdocs deps, CHANGELOG, remove dead Resume Editor page, backlog gap items
2026-02-25 13:51:13 -08:00
8cb636dabe
docs: mkdocs wiki — installation, user guide, developer guide, reference
...
Adds a full MkDocs documentation site under docs/ with Material theme.
Getting Started: installation walkthrough, 7-step first-run wizard guide,
Docker Compose profile reference with GPU memory guidance and preflight.py
description.
User Guide: job discovery (search profiles, custom boards, enrichment),
job review (sorting, match scores, batch actions), apply workspace (cover
letter gen, PDF export, mark applied), interviews (kanban stages, company
research auto-trigger, survey assistant), email sync (IMAP, Gmail App
Password, classification labels, stage auto-updates), integrations (all 13
drivers with tier requirements), settings (every tab documented).
Developer Guide: contributing (dev env setup, code style, branch naming, PR
checklist), architecture (ASCII layer diagram, design decisions), adding
scrapers (full scrape() interface, registration, search profile config,
test patterns), adding integrations (IntegrationBase full interface, auto-
discovery, tier gating, test patterns), testing (patterns, fixtures, what
not to test).
Reference: tier system (full FEATURES table, can_use/tier_label API, dev
override, adding gates), LLM router (backend types, complete() signature,
fallback chains, vision routing, __auto__ resolution, adding backends),
config files (every file with field-level docs and gitignore status).
Also adds CONTRIBUTING.md at repo root pointing to the docs site.
2026-02-25 12:05:49 -08:00
60fe2005e9
docs: backlog — Ultra tier managed applications concept
2026-02-25 11:40:55 -08:00
fb5a858ee7
docs: backlog — cover letter iterative refinement feedback loop
2026-02-25 08:30:24 -08:00
f7b12a9f98
docs: backlog — Podman support + FastAPI migration path
2026-02-25 08:22:24 -08:00
1c39af564d
chore: add backlog.md + gitignore config/.backup-* dirs
2026-02-24 20:54:12 -08:00