snipe/CHANGELOG.md
pyr0ball 2dda26a911
Some checks failed
CI / Frontend typecheck + tests (push) Waiting to run
CI / Python tests (push) Waiting to run
Mirror / mirror (push) Has been cancelled
Release / release (push) Has been cancelled
feat: infra/devops batch — CI/CD, installer, nginx docs, cf-orch agent (v0.3.0)
Closes #15, #22, #24, #25. Closes #1 and #27 (already shipped in 0.2.0).

## CI/CD (#22)
- .forgejo/workflows/ci.yml — Python lint (ruff) + pytest + Vue typecheck + vitest
  on every PR/push. Installs cf-core from GitHub mirror for the CI runner.
- .forgejo/workflows/release.yml — Docker build/push (api + web) to Forgejo registry
  on v* tags; git-cliff changelog; multi-arch amd64+arm64.
- .forgejo/workflows/mirror.yml — push to GitHub + Codeberg mirrors.

## Self-hosted installer (#25)
- install.sh rewritten to match CF installer pattern: coloured output, named
  functions, --docker / --bare-metal / --help flags, auto-detect Docker/conda/
  Python/Node/Chromium/Xvfb, license key prompting with format validation.

## Nginx docs (#24)
- docs/nginx-self-hosted.conf — sample nginx config: SPA fallback, SSE proxy
  (proxy_buffering off), long-term asset cache headers.
- docs/getting-started/installation.md — bare-metal install section with nginx
  setup, Chromium/Xvfb note, serve-ui.sh vs nginx trade-off.

## cf-orch agent (#15)
- compose.override.yml — cf-orch-agent sidecar service (profiles: [orch]).
  Starts only with docker compose --profile orch. Registers with coordinator at
  CF_ORCH_COORDINATOR_URL (default 10.1.10.71:7700).
- .env.example — CF_ORCH_URL / CF_ORCH_COORDINATOR_URL comments expanded.

## Docs
- mkdocs.yml + full docs/ tree (getting-started, reference, user-guide) staged
  from prior session work.

Bump version 0.2.0 → 0.3.0.
2026-04-14 06:19:25 -07:00

4.6 KiB

Changelog

All notable changes to snipe are documented here. Format follows Keep a Changelog. Versions follow Semantic Versioning.


[0.3.0] — 2026-04-14

Added

Infrastructure and DevOps

  • .forgejo/workflows/ci.yml — Python lint (ruff) + pytest + Vue typecheck + vitest on every PR/push to main. Installs circuitforge-core from GitHub mirror so the CI runner doesn't need the sibling directory.
  • .forgejo/workflows/release.yml — Docker build and push (api + web images) to Forgejo container registry on v* tags. Builds both images multi-arch (amd64 + arm64). Creates a Forgejo release with git-cliff changelog notes.
  • .forgejo/workflows/mirror.yml — Mirror push to GitHub and Codeberg on main/tags.
  • install.sh — Full rewrite following the CircuitForge installer pattern: colored output, --docker / --bare-metal / --help flags, auto-detection of Docker/conda/Python/Node/Chromium/Xvfb, license key prompting, structured named functions.
  • docs/nginx-self-hosted.conf — Sample nginx config for bare-metal self-hosted deployments (SPA fallback, SSE proxy settings, long-term asset caching).
  • docs/getting-started/installation.md — No-Docker install section: bare-metal instructions, nginx setup, Chromium/Xvfb note.
  • compose.override.ymlcf-orch-agent sidecar service for routing vision tasks to a cf-orch GPU coordinator (--profile orch opt-in). CF_ORCH_COORDINATOR_URL env var documented.
  • .env.exampleCF_ORCH_URL and CF_ORCH_COORDINATOR_URL comments expanded with self-hosted coordinator guidance.

Screenshots (post CSS fix)

  • Retook all docs screenshots (01-hero, 02-results, 03-steal-badge, hero) after the color-mix token fix so tints match the theme in both dark and light mode.

Closed

  • #1 SSE live score push — already fully implemented in 0.2.0; closed.
  • #22 Forgejo Actions CI/CD — shipped.
  • #24 nginx config for no-Docker self-hosting — shipped.
  • #25 Self-hosted installer script — shipped.
  • #15 cf-orch agent in compose stack — shipped.
  • #27 MCP server — already shipped in 0.2.0; closed.

[0.2.0] — 2026-04-12

Added

Trust signal UI — community feedback on seller trust scores (MIT component layer)

  • web/src/components/TrustFeedbackButtons.vue: "This score looks right / This score is wrong" button pair displayed below the trust badge on each listing card. Shows "Thanks, noted." on submission with no countdown or urgency.
  • web/src/composables/useTrustFeedback.ts: FeedbackState machine (idle | sending | confirmed | disputed). Fail-soft: any network error still transitions to confirmed state — the UI never surfaces signal pipeline failures.
  • Slotted into ListingCard.vue after the trust badge, inside .card__score-col.
  • WCAG (Web Content Accessibility Guidelines) 2.1 compliance: aria-live="polite" on confirmation message, aria-busy during send, keyboard-focusable buttons with focus-visible styles, prefers-reduced-motion guard on transitions.
  • Uses --trust-high / --trust-low theme CSS custom properties for color consistency.

Note: The backend signal endpoint (POST /api/community/signal) and seller signal store are gated on cf-orch community postgres landing. The UI degrades gracefully when the endpoint is absent.

Forgejo feedback FAB (floating action button)

  • FeedbackButton.vue: floating "Feedback" button in the corner of every view. Opens a two-step modal (type + description → attribution + confirm) that files a Forgejo issue against Circuit-Forge/snipe. Hidden when FORGEJO_API_TOKEN is unset or in demo mode.
  • GET /api/feedback/status — returns {"enabled": bool} so the button never flashes before checking.
  • POST /api/feedback — files the issue; returns issue_number and issue_url.

Live SSE score push (closes #1)

  • Background enrichment results pushed to the browser via Server-Sent Events as trust scores complete.

[0.1.0] — 2026-03-25

Added

Initial beta release of Snipe — eBay listing intelligence and trust scoring.

  • Listing search via eBay scraper (Kasada bypass with headed Chromium + Xvfb).
  • Trust score composite: feedback rate, negative feedback ratio, member age, zero-feedback penalty.
  • TrustScore dataclass with red flags, partial score flag, composite score (0-100).
  • Vue 3 SPA frontend: search view, listing card grid, listing detail view, blocklist management.
  • FastAPI backend: /api/search, /api/enrich, /api/blocklist.
  • Keyword filtering for search queries.
  • SQLite persistence via cf-core db module.