Commit Graph

235 Commits

Author SHA1 Message Date
gramps 056ebc399f v1.0.0: Docker containerization, docs, version bump
- config.py: VERSION → v1.0.0, DEFAULT_MODEL from CAIC_DEFAULT_MODEL env,
  HW_STATE_PATH from CAIC_HW_STATE_PATH env
- README.md: Docker install section (recommended), updated file structure,
  added What's New in v1.0.0, requirements note for Docker
- ai.md: Docker run path, work state updated, version to v1.0.0,
  external services table with Docker service names
- CLAUDE.md: Docker quick start, fixed dependencies note
- docker.md: checked off completed items in §10 checklist, updated §11
  file list with actual paths and status
- TASKS.md: struck through B3 [DONE]
2026-07-19 16:40:02 -07:00
gramps 55b9a2236d setup.sh: auto-download default model (Qwen2.5-7B Q4_K_M)
- Checks disk space before downloading
- Sets LLAMA_MODEL and CAIC_DEFAULT_MODEL in .env
- Prefers hf CLI, falls back to wget/curl
- Skippable prompt, manual fallback instructions
2026-07-19 16:30:01 -07:00
gramps 413f850e41 Make DEFAULT_MODEL env-var configurable (CAIC_DEFAULT_MODEL) 2026-07-19 16:28:19 -07:00
gramps 8fd6c99ccc Add Docker containerization stack
- Dockerfile: multi-stage Python 3.13-slim, healthcheck, uvicorn CMD
- docker-compose.yml: full stack (cAIc, SearXNG, Qdrant, RabbitMQ,
  llama-server, Ollama) with healthchecks, volumes, secrets
- .dockerignore: exclude venv, tests, .git, models, secrets
- .env.example: all variables documented with generation hints
- scripts/setup.sh: first-run scaffolding (generates .env, secrets,
  SearXNG config, directories)
- searxng-settings.yml.dist: SearXNG config template
- models/README.txt: instructions for placing .gguf files
- config.py: add HW_STATE_PATH env var (CAIC_HW_STATE_PATH)
- hardware.py: read state path from config instead of hardcoded CWD
- requirements.txt: add missing psutil and jinja2
2026-07-19 16:25:57 -07:00
gramps 54cca366a4 v0.22.1: dockerize defaults, harden error handling, fix test discovery
- config.py: defaults to localhost/localhost, AMQP to rabbitmq, secret
  path to /run/secrets, RAG_MAX_VECTORS from env
- rag.py: EMBED_URL default to localhost
- app.py: syslog handler wrapped in try/except
- routers/completions.py: db.close() in try/finally
- db.py: PRAGMA journal_mode = WAL
- amqp.py: subscription append before try for reconnect safety
- tests/conftest.py: add project root to sys.path for test discovery
2026-07-19 16:16:40 -07:00
gramps 666a237a8b docs: update Work State in ai.md with current session progress 2026-07-19 16:00:24 -07:00
gramps a99345edb6 chore: replace deprecated asyncio.ensure_future with create_task, add inline comments to db.py 2026-07-19 15:58:34 -07:00
gramps 2685a73897 fix: update README section text for consistency 2026-07-19 15:38:59 -07:00
gramps f5d020e39a feat: add uninstall/teardown scripts + uninstall section in README 2026-07-19 15:38:28 -07:00
gramps 6946619bc5 TASKS.md: mark B1, B2, B4 as done, B3 remains open 2026-07-14 15:40:55 -07:00
gramps 8202684df9 Restore deleted B4 spec text in TASKS.md 2026-07-14 15:39:23 -07:00
gramps 2a2de59344 TASKS.md: strike through completed B4 backlog entry 2026-07-14 15:37:37 -07:00
gramps c4a2bde8c1 Update TASKS.md with session 2026-07-14 entry 2026-07-14 15:35:21 -07:00
gramps 34cd87b810 Update work state docs for RAG bugfixes + topbar redesign 2026-07-14 15:33:59 -07:00
gramps b0554e69ec Move query bar back above chat, stats stays at bottom 2026-07-14 15:31:44 -07:00
gramps bb063204f0 Center stats bar 2026-07-14 15:31:18 -07:00
gramps 2609e4bd73 Topbar cleanup: move stats to bottom bar, toggles to hamburger menu, palette next to version, mobile-responsive 2026-07-14 15:30:10 -07:00
gramps 02d1b0432c Fix RAG admin: vectors_count->points_count, remove unindexed order_by, make RAG_COLLECTION env-configurable 2026-07-14 15:18:05 -07:00
gramps 0b4810ce31 RAG admin: clearer search label + hint explaining semantic vector search vs browse 2026-07-14 15:14:20 -07:00
gramps 13a00e544e RAG admin: better empty-state message for empty corpus vs no search match 2026-07-14 15:12:55 -07:00
gramps 065dc39c61 README: move architecture/docs content before changelog, keep all What's New entries sequential 2026-07-14 15:09:30 -07:00
gramps fe70314e83 Color theme system: 6 schemes with palette dropdown
- Palette icon in topbar-right opens dropdown: IBM Blue, Green Ln,
  Dark, Light, Amber, Trippin
- All CSS vars swapped dynamically via JS; persists in localStorage
- No CSS :root changes needed — existing variable architecture absorbs it
2026-07-14 15:03:15 -07:00
gramps 61f5a88673 B4 RAG Corpus Management UI + AGENTS.md → ai.md rename
- Backend: GET/DELETE/PATCH /api/rag/point/{id}, GET /api/rag/points
  (paginated, semantic search, source filter, sort)
- Frontend: admin-only RAG modal with stats bar, search, paginated table,
  per-row edit (re-embed) and delete, bulk flush with double confirm
- 14 new tests, 214 total passing
- AGENTS.md → ai.md (tool-agnostic), CLAUDE.md now references ai.md
- Bump v0.21.0 → v0.22.0
2026-07-14 14:57:57 -07:00
gramps 990b7c860d close B1 (context loss — test passed), deprecate B2 (Ctrl+Enter search), update backlog 2026-07-14 14:46:52 -07:00
gramps 7acea605ac v0.21.0 — perplexity persistence, env-overridable config, scroll/DOM fixes, single-node docs 2026-07-14 14:39:30 -07:00
gramps 3f64bed485 make QDRANT_URL, EMBED_URL, AMQP_SECRET_PATH env-overridable; document single-node/WSL deployment 2026-07-14 14:33:54 -07:00
gramps e584e4983c fix: capture appendMessage return value for correct assistant pairing 2026-07-14 14:24:02 -07:00
gramps 5c66a12b0f remove _userScrolledAway guard from oldes mode; keep rAF scroll 2026-07-14 14:21:29 -07:00
gramps 8ec4dae062 fix scroll: rAF for layout-safe scrollHeight, direction-aware _userScrolledAway 2026-07-14 14:17:57 -07:00
gramps 7d50d07249 persist perplexity per assistant message; display on loaded convos 2026-07-14 14:13:24 -07:00
gramps 65baeba1f1 scrollbar left of spool holes, widened to 10px 2026-07-14 14:03:47 -07:00
gramps 40495548e5 fix: chat-container z-index above .main::after barcode strip that hid scrollbar 2026-07-14 14:01:24 -07:00
gramps d79d8827c6 fix: scrollbar uses accent-dim blue thumb, visible on dark bg 2026-07-14 13:58:21 -07:00
gramps 01e2489846 fix: visible scrollbar (8px, track visible, Firefox compat) 2026-07-14 13:55:53 -07:00
gramps 3fccb0f2e7 rename NEW/OLD -> ↓SORT / ↑SORT for sort direction indicator 2026-07-14 13:49:20 -07:00
gramps af2f8fa90f fix: wider confidence scale + 80/15 thresholds (green/orange/red) 2026-07-14 13:47:19 -07:00
gramps 1f571f6284 fix: toggleDirection now reorders existing messages in DOM 2026-07-14 13:43:01 -07:00
gramps fbd734ccd4 fix: privacy badge reads PRIVACY ON / PRIVACY OFF (not bare PRIVACY) 2026-07-14 13:36:56 -07:00
gramps 8e800b57d1 fix: rename PRIVATE->PRIVACY, implement info popup overlay for privacy mode 2026-07-14 13:36:01 -07:00
gramps ac58531e8b fix: private badge initial text shows PRIVATE OFF (matches default state) 2026-07-14 13:32:25 -07:00
gramps c879c67e4c fix: always show WEB search button (enable/disable instead of hide/show) 2026-07-14 13:30:34 -07:00
gramps 30deb0db64 v0.20.0: at-rest encryption (AES-256-GCM) for all query-derived text
- crypto.py: AES-256-GCM encrypt/decrypt + ensure_key()
- Key auto-generated on first boot, stored as heartbeat_interval_ms in settings
- All 12 storage paths wired (SQLite + Qdrant)
- memory.py: FTS5 search replaced with Python-side matching
- 200/200 tests pass
2026-07-14 13:22:32 -07:00
gramps f6b01ec9ac B8: Private Chat mode + WireGuard docs + README data safety section (v0.19.3) 2026-07-14 08:52:32 -07:00
gramps 4f16a9c078 B6: waterfall direction toggle (v0.19.2)
NEW/OLD button toggles between newest-first and oldest-first ordering.
scrollToTop() replaced by scrollToLatest() which checks direction.
appendMessage() uses prepend/append based on direction.
Preference persisted in localStorage.
2026-07-14 08:19:26 -07:00
gramps b3746949a9 B5: default model auto-pull on first start (v0.19.1)
model_pull.py: ensure_model() checks llama-server availability at
startup, falls back to Ollama pull API if model not found.
Integrated into app.py lifespan after assess_hardware().
11 tests cover all paths: available/unreachable/pull success/fail.
2026-07-14 08:16:08 -07:00
gramps 790c81457a B7: Apple Silicon worker support (v0.19.0)
gpu.py: darwin branch via system_profiler SPDisplaysDataType for GPU
model/VRAM on macOS, falls back to rocm-smi on Linux.
hardware.py: _get_vram_darwin() parses system_profiler output.
node_agent/agent.py: get_load() reports VRAM on darwin via
system_profiler.
tests: 5 new gpu tests (linux/darwin/absent), 3 new hardware tests
(darwin assessment + VRAM parsing).
2026-07-14 08:09:41 -07:00
gramps feaa2830da fix: auto-derive model shorthand from any model name following qwen2.5:7B:i convention 2026-07-13 16:40:58 -07:00
gramps 7ef220e579 feat: brand response avatar as cAIc instead of AI 2026-07-13 16:35:59 -07:00
gramps 868ef411ba feat: show model label in response header via MODEL_LABELS map 2026-07-13 16:35:40 -07:00
gramps 8853a3761e docs: add in-transit TLS note to B8 2026-07-13 16:28:58 -07:00