gramps
82beadf546
docs: prioritize Private Chat mode over encryption in B8
2026-07-13 16:27:34 -07:00
gramps
ba3df91db9
docs: add B8 encryption/PHI backlog item, update session work state
2026-07-13 16:24:45 -07:00
gramps
b5cc294ece
chore: remove rating thumbs up/down (no backend, privacy concern)
2026-07-13 16:19:37 -07:00
gramps
151e02fe40
fix: response copy icon stays emoji, uses execCopy helper
2026-07-13 16:14:12 -07:00
gramps
98b51c0775
fix: clipboard fallback for HTTP, response copy toast now works
2026-07-13 16:12:17 -07:00
gramps
ddcfd8a73f
fix: use data-content attr to avoid HTML injection in onclick
2026-07-13 16:11:00 -07:00
gramps
92e8608ac7
fix: capture this ref in user copy icon onclick
2026-07-13 16:10:30 -07:00
gramps
f07025a4e8
feat: toast notifications for all icon actions
...
- delete memory/preset/conversation/all/gallery/clear
- save/reset profile
- new chat, add preset, edit preset
- clear file selection
- rate up/down thumbs toasts
2026-07-13 16:08:32 -07:00
gramps
7105fe0d6d
fix: toast on save success/failure, skip toast on print
2026-07-13 16:05:56 -07:00
gramps
6a10674cdf
feat: slide-out toast notification on copy icon clicks
2026-07-13 16:05:32 -07:00
gramps
962003512f
fix: inline copy icon at end of user query text, not a toolbar
2026-07-13 16:04:24 -07:00
gramps
6c214e46f5
fix: WEB text uses input-bg dark blue var(--bg-tertiary)
2026-07-13 15:59:07 -07:00
gramps
51795cf072
fix: WEB text dark blue #0d2137 on orange for contrast
2026-07-13 15:58:04 -07:00
gramps
a9152b3060
fix: WEB text in blue, keep orange button background
2026-07-13 15:56:46 -07:00
gramps
b86c67dbe8
fix: match WEB button color to SEND button for better contrast
2026-07-13 15:55:46 -07:00
gramps
9ed2c27159
fix: restore magnifying glass icon on WEB button
2026-07-13 15:55:01 -07:00
gramps
a8d8822ab0
fix: WEB in all caps to match SEND button
2026-07-13 15:54:34 -07:00
gramps
4ee2a1613c
fix: remove emoji from search button, was breaking monospace typeface
2026-07-13 15:54:01 -07:00
gramps
7c751294c1
fix: update input placeholder to match Ctrl+Enter binding
2026-07-13 15:52:57 -07:00
gramps
ebb613b68c
docs: update work state in AGENTS.md
2026-07-13 15:50:51 -07:00
gramps
fbe02b1956
feat: add copy/toolbar to user messages
...
- msg-toolbar now rendered for all roles, not just assistant
- addCopyButtons and addMessageToolbar applied to any message with content
2026-07-13 15:49:52 -07:00
gramps
cb3c33aa57
fix: match search-btn height to send-btn, add 'web' label
...
- search-btn now uses same font/font-size/font-weight as send-btn
- label is 'web 🔍 ' so the purpose is obvious
2026-07-13 15:48:19 -07:00
gramps
934f85e178
fix: use Ctrl+Enter for web search, not Shift+Enter
...
Shift+Enter is the universal convention for inserting a newline.
Ctrl+Enter is the convention for alternate submit (Gmail, Slack, etc.).
2026-07-13 15:46:42 -07:00
gramps
2ecfd1663d
fix: reset cumulative token count on page refresh
...
- Remove localStorage persistence for cumulativeTokens (starts at 0 each load)
2026-07-13 15:42:47 -07:00
gramps
b8713a516b
fix: scroll-fighting, 401 errors, session timeout 90->3600s
...
- scrollToTop() now respects user scroll position (100px threshold)
- resetScrollLock() called on new messages
- SESSION_TIMEOUT_SECONDS 90 -> 3600 (1 hour) to prevent mid-use expiry
- wrap 10 unprotected authFetch calls in try/catch to kill unhandled rejections
2026-07-13 15:39:44 -07:00
gramps
e9700137df
docs: add Paired Programming subsection
2026-07-13 11:23:56 -07:00
gramps
8a18714886
fix wiki links to use actual wiki URLs
2026-07-13 11:15:53 -07:00
gramps
f9b7ad0379
docs: link FAQ from README
2026-07-13 11:15:14 -07:00
gramps
f44804307f
add readme banner image
2026-07-13 11:15:04 -07:00
gramps
5ab4183d58
docs: contrast query-routing vs layer-splitting in architecture section
2026-07-13 11:08:59 -07:00
gramps
aafc24ee27
bump to v0.18.0 — wiki docs, UX polish (waterfall, barcode, confidence badges, sprocket strips)
2026-07-13 10:49:33 -07:00
gramps
44c84bfc85
docs: bump README version to v0.17.26
2026-07-13 10:27:26 -07:00
gramps
d60a54780b
docs: clarify advantage — pool hardware, route by strength, each machine contributes what it does best
2026-07-13 10:25:14 -07:00
gramps
2ef8f91f4c
docs: expand justification — industry consensus assumes homogeneous clusters, cAIc targets the real-world heterogeneous case
2026-07-13 10:24:06 -07:00
gramps
409d07cc8b
docs: add Architecture CPU Coordinator + GPU Workers section to README
2026-07-13 10:23:09 -07:00
gramps
ea2dbee45d
v0.17.26: brighter sprocket strips using --bg-tertiary, 5px holes, 24px strips
2026-07-13 10:20:51 -07:00
gramps
8a677074ec
v0.17.25: timestamp format MON dd, YYYY HH:MM:SS.ss
2026-07-13 10:19:09 -07:00
gramps
3e7ed57db9
v0.17.24: fix sprocket holes — fill with --bg-primary instead of transparent so they show through to page
2026-07-13 10:17:49 -07:00
gramps
d8e8af0fb0
v0.17.23: TOK metric reformatted to #/% with context-pct color coding
2026-07-13 10:16:30 -07:00
gramps
bc25aaad80
v0.17.22: stop typing indicator animation on abort — greyed-out stopped state
2026-07-13 10:12:07 -07:00
gramps
4443c8064f
v0.17.21: dot-matrix sprocket holes on outer edges + paper grain background
2026-07-13 10:11:01 -07:00
gramps
8fdeca0e3c
v0.17.20: confidence % badge (replaces perplexity), color-coded 80-20 rule; cumulative token counter in topbar
2026-07-13 10:09:05 -07:00
gramps
0981017cde
docs: add B4 (RAG Corpus Management UI) to backlog in TASKS.md and current-wip.md
2026-07-13 10:03:57 -07:00
gramps
645d7e9d91
v0.17.19: fix token count badge — use client-side tokenCount instead of server completion_tokens; add tok badge to search responses
2026-07-13 09:59:11 -07:00
gramps
79b684e0cd
v0.17.18: barcode-style alternating pairs — each Q&A wrapped in .msg-pair with alternating tint + left border accent
2026-07-13 09:56:31 -07:00
gramps
b90b0a6d14
v0.17.17: timestamps on user messages, restore thumbs on AI (not web search), Shift+Enter triggers web search
2026-07-13 09:49:00 -07:00
gramps
4d337d9684
v0.17.16: remove thumbs from toolbar, user msg atop waterfall, enlarge topbar fonts
2026-07-13 09:45:06 -07:00
gramps
35cd48098a
v0.17.15: waterfall display — newest messages at top, prepend instead of append, scroll to top
2026-07-13 09:41:55 -07:00
gramps
bda4089120
v0.17.14: remove status dots from input area — served no purpose
2026-07-13 09:38:33 -07:00
gramps
79762f67f2
v0.17.13: left-align status dots, font 9px
2026-07-13 09:35:58 -07:00
gramps
3d515ed11f
v0.17.12: stack status dots vertically in input area
2026-07-13 09:34:44 -07:00
gramps
e1530499b7
v0.17.11: color-code DRC values (green/orange/red), add status dot labels, fix version prefix
2026-07-13 09:33:05 -07:00
gramps
a35d68b38e
v0.17.10: move CPU/MEM/GPU/VRAM stats to topbar center; status dots to input row left of paperclip
2026-07-13 09:29:21 -07:00
gramps
2d28cfe384
v0.17.9: use uploaded image as welcome screen background
2026-07-13 09:23:51 -07:00
gramps
ce4e796768
v0.17.8: show jcscreenie.png as welcome screen graphic instead of text
2026-07-13 09:20:14 -07:00
gramps
3294231e64
v0.17.7: lighten text colors for legibility across header, input, welcome screen
2026-07-13 09:18:36 -07:00
gramps
fc2f209008
v0.17.6: add orange search button right of SEND, shown only when SearXNG available
2026-07-13 09:16:34 -07:00
gramps
3601d31e03
v0.17.5: fix topbar legibility, remove llama icons/preset/search from input, implement toggleDrawer
2026-07-13 09:12:37 -07:00
gramps
19d099f17a
v0.17.4: remove redundant context thermometer; default to qwen2.5-7b-instruct
2026-07-13 09:01:08 -07:00
gramps
e7e6cd8af6
v0.17.3: remove toolbar opacity entirely — always visible
2026-07-13 08:29:08 -07:00
gramps
429d4df29f
docs: rewrite README intro to lead with heterogeneous GPU clustering as primary project thesis
2026-07-13 08:26:50 -07:00
gramps
cbe4a361bb
v0.17.2: auto-fact detection with conflict-alert flow
...
- auto_detect_facts() scans chat turns for factual content (IPs, paths,
services, config changes, hardware refs) using pattern matching
- check_fact_conflicts() cross-references detected facts against stored
FTS5 memories — when a contradiction exists (same topic, diff value)
the system surfaces a rag_update_suggestion in the done SSE payload
- Frontend shows a floating notification banner comparing old vs new
fact with Update/Dismiss buttons
- confirm_fact_update() replaces the memory + re-embeds/re-indexes
the Qdraft entry on user confirmation
- Silent auto-ingest (memories + Qdrant) when no conflict exists
- Frontend: msg-toolbar opacity 0→0.35 for visibility
2026-07-13 08:25:08 -07:00
gramps
dcb73945e0
v0.17.1: fix msg-toolbar visibility, add follow_redirects to SearXNG query
2026-07-13 08:15:57 -07:00
gramps
f16bef4671
tok: #/## % badge with context tracking, client-side token counting, remove triage dep
2026-07-13 08:07:26 -07:00
gramps
b6dadd95ec
fix: client-side token counting + move tok badge after ttr
2026-07-13 08:03:08 -07:00
gramps
6f95cc67bb
fix: replace triage import with LLAMA_SERVER_BASE for deployed compat
2026-07-13 07:59:38 -07:00
gramps
12a7d92f99
add TOK badge to response footer + arrow key history recall
2026-07-13 07:57:27 -07:00
gramps
35af444c88
fix: add /fim/completions route for Continue compatibility (no /v1 prefix)
2026-07-09 10:13:58 -07:00
gramps
2ec9584abe
feat: add /v1/fim/completions route with Qwen FIM token formatting for Continue
2026-07-09 10:09:18 -07:00
gramps
d0e1870438
fix: add /v1/completions route for Continue FIM compatibility
2026-07-09 10:01:21 -07:00
gramps
9bf04d921d
fix: route FIM passthrough to llama-server native /completion endpoint (supports suffix param)
2026-07-09 09:59:04 -07:00
gramps
fbacb1861d
docs: sync all docs through v0.17.0 — Roadmap N complete, cluster/AMQP fully documented
2026-07-09 09:15:08 -07:00
gramps
f0689ac12b
feat: Roadmap N — AMQP cluster nervous system complete
2026-07-09 09:09:22 -07:00
gramps
7c022dbc6d
docs: restore full Task 14 spec text in TASKS.md
2026-07-09 09:06:27 -07:00
gramps
7fc7f7679c
docs: mark Task 14 done, add cluster.py/amqp.py/test_model_swap.py to docs tables
2026-07-09 09:05:23 -07:00
gramps
9d1fd44d7f
Task 14: coordinator-side model swap flow
...
- request_model_swap() publishes cmd.swap_model on jc.admin, sets node status to swapping
- handle_model_ready() updates active_model from inventory, restores active status
- handle_model_failed() sets node status to error with failure detail
- select_node() made async with two-pass logic: find ready node or trigger swap
- inventory field stored in node records for swap target lookup
- Both handlers subscribed on jc.system via SUBSCRIBE_TABLE
2026-07-09 09:04:15 -07:00
gramps
fb0ff576d3
Tasks 12 + 13: worker node agent + Phi-4-mini query triage
...
Task 12 — node_agent/agent.py: standalone AMQP worker agent
config reader, model discovery, registration publisher,
ping/pong handler, model swap with systemctl + health poll
(14 tests)
Task 13 — triage.py: query classification + cluster node selection
classify_query() routes to Phi-4-mini at :8083
select_node() picks best worker by model affinity
get_inference_url() replaces hardcoded LLAMA_SERVER_BASE
cluster.py stores node ip for URL construction
(6 tests + 5 existing chat tests mocked for triage)
168 tests passing (+20 new)
2026-07-07 07:30:30 -07:00
gramps
90d2cf8326
Rename: jarvisChat → cAIc (product name)
...
- jarvisChat/JarvisChat/jarvischat → cAIc/cAIc/caic (branded/lower)
- JARVISCHAT_ env vars → CAIC_
- jc- script/config prefix → caic-
- jarvis_rag → caic_rag
- jarvischat.db / volumes → caic.db / caic_*
- AMQP vhost/user jarvischat → caic
- Syslog, loggers, docstrings all updated
- 47 files, zero stale references, 148 tests pass
2026-07-06 19:56:32 -07:00
gramps
94e1cdae11
docs(Task 12): replace heartbeat with ping/pong, add subsection markers
2026-07-06 19:29:48 -07:00
gramps
54cf152bd3
docs: mark Task 11 done in TASKS.md
2026-07-06 19:25:54 -07:00
gramps
899988c09b
docs: bump v0.13.0 → v0.14.0, document cluster protocol (Task 11)
2026-07-06 19:24:47 -07:00
gramps
78f7b79494
Task 11: cluster protocol — subscribe(), ping/pong health, 9 message types
...
- amqp.py: subscribe() creates exclusive queues bound to routing keys,
_rebind_subscriptions() recreates them after reconnect
- cluster.py: CLUSTER_NODES, CLUSTER_EVENTS (bounded 1000),
CLUSTER_COORDINATOR with auto-promotion, all 6 handlers
(register, deregister, pong, event, coordinator_query),
ping_node() with 5s timeout + auto-deregister on failure
- routers/cluster.py: GET /api/cluster
- Wired into app.py lifespan after amqp_connect()
- 13 tests covering all handlers, boundaries, and API shape
- No passive heartbeats — workers assumed present until ping
timeout at work-routing time
2026-07-06 19:22:31 -07:00
gramps
454fb3a380
docs: remove hb_query — worker presence is binary, passive heartbeats suffice
2026-07-06 19:13:30 -07:00
gramps
94c9c9d8c0
docs: final review fixes — count, ModelRecord alignment, event payload, subscribe re-binding
2026-07-06 19:12:02 -07:00
gramps
46adecfce0
docs: document data isolation rationale for two-channel split
2026-07-06 19:06:05 -07:00
gramps
bb40748d95
docs: fold model category back into cluster — two buckets only
2026-07-06 19:04:28 -07:00
gramps
75202735e1
docs: collapse event types to three categories (cluster/model/application)
2026-07-06 19:01:20 -07:00
gramps
f0819175f8
docs: simplify Task 11 — register/deregister drive status transitions; events are side effects
2026-07-06 18:59:33 -07:00
gramps
649f37e2b6
docs: expand Task 11 with full cluster protocol (7 message types, event log, coordinator auto-promotion)
2026-07-06 18:56:36 -07:00
gramps
8bbc836c3e
docs: remove snark from README
2026-07-06 09:00:03 -07:00
gramps
fcee454a32
docs: update README for v0.13.0 — RAG eviction, RabbitMQ, AMQP layer
2026-07-06 08:55:47 -07:00
gramps
975e7579cf
feat: Task 10 — AMQP connection layer with aio-pika
...
amqp.py: connect/disconnect/get_channel/publish with auto-reconnect
- Graceful degradation when aio-pika not installed
- Lazy secret file reader via config.get_amqp_url()
- Fire-and-forget publish (logs error, never raises)
- Connection errors caught and logged (non-fatal)
config.py: AMQP_RECONNECT_DELAY, exchanges, get_amqp_url() helper
app.py: connect in lifespan after assess_hardware, disconnect on shutdown
requirements.txt: aio-pika>=9.0.0
tests/test_amqp.py: 3 mocked tests (publish success, publish disconnected
no-raise, get_channel reconnect)
135 tests pass (132 existing + 3 new)
Fixes: AGENTS.md test/run commands (venv was incomplete)
2026-07-06 08:51:36 -07:00
gramps
659339cb1f
docs: document broker-mediated cluster architecture, coordinator vs worker node types
...
Developer-Architecture.md (§6):
- Broker-mediated design model as preferred architecture
- Coordinator vs Worker node type table with full service requirements
- Service distribution ASCII diagram
- Workers connect as AMQP clients only (no local broker needed)
- Contrasted with service-mesh alternative
docker.md (§9):
- New Worker Node Deployment Model section
- Worker requirements: llama-server binary + node_agent.py + aio-pika
- Explicit table of what workers do NOT run
- Architecture note: broker-mediated vs service-mesh
- Ref: AMQP-0-9-1 client-server protocol since 2006
2026-07-06 08:44:25 -07:00
gramps
d1676ea73a
docs: sync wiki with current architecture and roadmap
...
Developer-Architecture.md:
- Module layout table (eviction.py, amqp.py, routers/)
- External services table with ports + purposes
- Config discovery / env var mapping
- Chat pipeline includes upload_context injection + logprobs/perplexity
- RAG eviction engine design (score formula, hysteresis, pinned sources)
- AMQP cluster architecture overview (jc.admin / jc.system exchanges)
- SSE protocol reference
- Full test coverage table (132 tests across 18 files)
- Hardware self-assessment section
current-wip.md:
- Replace stale backlog with active Roadmap N table (Tasks 8-15)
- Add post-Roadmap-N backlog (B1-B3)
2026-07-06 08:21:44 -07:00
gramps
775ad5d06e
docs: mark Task 9 complete — RabbitMQ installed on ultron
2026-07-06 08:19:54 -07:00
gramps
2417659097
docs: mark Task 8 complete in TASKS.md
2026-07-06 08:10:59 -07:00
gramps
191ac2603f
docs: add docker.md — full Docker distribution architecture plan
...
Covers all six services (jarvisChat, SearXNG, Qdrant, RabbitMQ,
llama-server, Ollama) with images, ports, volumes, healthchecks,
env mapping, secrets management, setup wizard spec, and back-out
procedure. Includes pre-v1.0 gate checklist and open decisions.
Also add .env, secrets/, searxng/ to .gitignore (these are
generated by setup.sh and contain secrets).
2026-07-06 08:09:40 -07:00
gramps
1dcd79ef96
test: add maybe_evict all-pinned break test and stats admin check
...
- test_maybe_evict_all_pinned_breaks: above high water but only
pinned points → eviction breaks with 0 deleted, no EVICTION_LOG entry
- test_rag_stats_requires_admin: guest gets 403 on /api/rag/stats
2026-07-06 08:06:06 -07:00
gramps
cb7a6c5cb5
fix: address three gaps in Task 8 spec compliance
...
- get_rag_operational_stats() now returns at_risk_count,
pinned_count, avg_retrieval_count via scroll-based computation
- GET /api/rag/stats requires admin role (was guest-accessible)
- test_rag_stats_endpoint asserts full shape per spec
- Add test_rag_stats_requires_admin (guest → 403)
2026-07-06 08:05:14 -07:00
gramps
36e310e646
fix: add boot-time RAG eviction config validation
...
Log warnings during startup when high_water <= low_water,
batch <= 0, or max_vectors <= 0.
2026-07-06 08:02:41 -07:00