All notable changes to tasplanning.report are documented here. Format follows Keep a Changelog — versioning is Semantic Versioning.
/ask moved to FastAPI BackgroundTasks — no longer blocks the response_log_ask() helper, removing duplicated insert logic between GET and POST handlers@app.on_event("startup")num_ctx, num_predict, temperature) now configurable via env vars OLLAMA_NUM_CTX, OLLAMA_NUM_PREDICT, OLLAMA_TEMPERATUREask_logs.ts, ask_logs.normalized, and feedback.ts — improves dashboard query performance as the DB growscontext_only mode on /ask returns RAG context and a pre-built prompt so the browser can call an external LLM directly (Anthropic, OpenAI, xAI Grok, local Ollama)byok-settings.php — provider and API key management UI; keys stored in localStorage only, never sent to the server_bootstrap.php — shared PHP bootstrap for common config/auth helpersdesign-tokens.css — extracted CSS custom properties into a standalone shared token filelimiter.py — extracted slowapi rate limiter into its own module to avoid circular imports between app.py and telemetry.pytelemetry.py refactored as a standalone FastAPI APIRouter — browser-side events (page_view, byok_call, error) logged to events table/feedback endpoint — stores thumbs-up/down ratings with query, answer, model, scope, and cited sources/councils endpoint — returns sorted list of indexed council names from Qdrant payloadstate_plus_local, state_only, local_only, anyinclude_ncc, include_standards params)section_id parameter on /ask — triggers section-specific output format guides for planning report generationDEMO_REQUIRE_TOKEN / DEMO_TOKEN env vars for API gating during early accessslowapi: 20/min on /ask, 60/min on /feedback and /telemetrydashboard.php — internal query monitoring dashboard with IP-based access controlCLAUDE.md — full project context document for AI-assisted developmentapp.py fully rewritten: RAG pipeline, prompt structure, Qdrant filter builders, admin endpoints, and telemetry all consolidatedCORS_ORIGINS env var; wildcard fallback uses tasplanning.report subdomain regexollama_chat(): keep_alive=-1 enforced as top-level JSON key (not inside options) to prevent model unloading between requestsnum_ctx fixed at 6144 to avoid KV cache resize on every request.htaccess rewrite rulessite-report.php — Google Maps key loaded via /gmaps-key.php proxy instead of inlinebyok-settings.php, faq.php, dashboard.php updated to use design-tokens.cssgenerate_planning_report.php — CORS origin validation tightenedapp(1).py and telemetry(1).py — legacy duplicate files removedplanning_docs collection; chunks keyed by corpus, council, source_file, pagepublic/local_state-planning-scheme.php — two-panel chat assistant UI (sidebar + thread)site-report.php — property lookup with Google Maps PlaceAutocomplete and LIST/ArcGIS integrationindex.php — landing page with demo modal and waitlist formfaq.php, privacy.php, terms.php — supporting pageswaitlist.php — PHPMailer-backed waitlist signup endpointgmaps-key.php — Google Maps API key proxy (validates HTTP_HOST before serving key)/js/api-status.js — shared live API health indicator polling /readyztelemetry.db) with ask_logs, feedback, events tablesTPR_IP_SECRET)qdrant, backend, web, sqliteweb, composer servicesRTX 4070 Super) with llama3.1:8b-instruct-q4_K_M and nomic-embed-text