Skip to content

v0.3.0

Choose a tag to compare

@grumpy-miner grumpy-miner released this 24 Oct 22:31
· 332 commits to main since this release
b51b4a5

Third release, one day after v0.2.0: the work that makes a public demo safe to run, plus the accommodation and audit features that came out of the first week of hardening. Eleven commits, two migrations (head 0032), no breaking changes for self-hosters.

Highlights

  • Extra time on the quiz. A recruiter grants 1.5x or 2x per applicant from the integrity review page; the grant is frozen on the attempt like the limit it scales, re-issues carry it forward, and the export shows it. Accessibility first: a 15-second question measures reading speed unless someone can adjust it.
  • Who looked at which candidate. A read-access audit trail per applicant (views, CV downloads, exports) and a company-wide access log under Settings with filters and CSV export, for the Art. 30 and Art. 32 accountability story.
  • Difficulty calibration from real answers. The question bank now reports how each question actually performs against its difficulty rating, so the next curation pass is data, not opinion.
  • Demo workspace, ACME Ganek. scripts/dev_seed.sh builds a fictional company with four jobs, 17 applicants and 11 completed quizzes through the real service layer; --reset rebuilds it. Every name, address and link is fictional or points at Ganek's own properties.
  • Demo mode for a public demo (GANEK_DEMO_MODE=true). Apply keeps working end to end, but nothing a visitor types or uploads is kept: name, email and links are replaced before the write, the message is dropped, CV upload is refused and a sample PDF is attached, no email leaves the box. Password, two-factor, invites, user admin and Google sign-in answer 403 so the shared login keeps working for the next visitor. The frontend shows a banner, hides the CV field, hands the candidate the assessment link on screen, drops Google Jobs JSON-LD and sets noindex, and the login page offers one-click sign-in as the demo admin. A worker cron (GANEK_DEMO_RESET_SLUG) rebuilds the company nightly at 04:07 UTC.

Upgrade from v0.2.0

  • Migrations 0031 (quiz attempt time multiplier) and 0032 (access log) apply automatically on docker compose up. Back up first: scripts/backup.sh.
  • New optional environment variables, all documented in .env.example and off by default: GANEK_DEMO_PASSWORD, GANEK_DEMO_RESET_SLUG, GANEK_DEMO_MODE. Never set GANEK_DEMO_MODE on a real workspace.
  • Public apply now accepts a submission without cv_object_key and cv_filename at the schema level but still answers 422 "CV is required" outside demo mode; API clients see no change.

Run it

git clone https://github.com/Ganek-dev/ganek && cd ganek
docker compose up

Container images: ghcr.io/ganek-dev/ganek-backend:0.3.0 and ghcr.io/ganek-dev/ganek-frontend:0.3.0 (linux/amd64 and linux/arm64).

Docs: the quickstart and the self-hosting guide on ganek.dev; the compliance pack is in docs/compliance/. Hosted version: join the waitlist at ganek.io.

License: AGPL-3.0.