4.9 KiB
JarvisChat Current WiP Backlog
Last updated: 2026-04-27 Owner: Gramps + Copilot Scope: issues, bugs, security exposures, and feature enhancements.
Total identified items: 26
Priority Definitions
- P0: Critical risk or data-loss/security exposure; do first.
- P1: High impact reliability/correctness work.
- P2: Important feature/UX improvements.
- P3: Nice-to-have polish.
Top 10 (Urgency Order)
- [P0][DONE] Add authentication/authorization for all write and admin endpoints.
- [P0][DONE] Add CSRF/origin protection for browser-initiated state-changing requests.
- [P0][DONE] Block unsafe URL schemes in rendered search-result links (e.g., javascript:).
- [P0][DONE] Add rate limiting and request body size limits for chat/search/profile APIs.
- [P1][DONE] Restrict settings updates to an allowlist of valid keys.
- [P1] Add pagination + hard caps on list endpoints (memories, conversations, message history).
- [P1][DONE] Stop returning raw exception text to clients; use safe error envelopes.
- [P1][DONE] Add automated tests for chat streaming, auto-search trigger, and memory command paths.
- [P2][DONE] Implement skills/tool-call framework (MCP-style) with per-skill enable controls.
- [P2] Implement heartbeat/check-in pipeline with scheduler + summary endpoint.
Item 1 Executive Summary (Scope + Security)
-
Status: Complete. Guest/admin capability split implemented with admin-only write enforcement, origin checks on state-changing requests, audit logging, and endpoint capability tests.
-
Decision: JarvisChat is local-first by design. Primary mode is same-host Ollama; optional mode allows RFC1918 LAN endpoints only.
-
Constraint: Public Internet AI endpoints are out of scope unless explicitly enabled in a future advanced mode.
-
Risk: Even on LAN, unauthenticated write/admin endpoints permit unauthorized data tampering and deletion.
-
Requirement: Add mandatory admin authentication for all POST/PUT/DELETE routes and destructive actions.
-
Authentication shape (scope-locked): two capability tiers only: guest (chat-only) and admin (4-digit PIN unlock).
-
Scope guardrail: Avoid full RBAC. Keep capability split minimal: conversational chat for guest, advanced/destructive actions for admin.
-
Definition of done:
- Auth required on all state-changing endpoints.
- Destructive actions require admin authorization.
- Endpoint configuration rejects non-local/non-RFC1918 AI backends by default.
- Strong rate limiting + lockout controls in place for PIN attempts.
- Security events logged for failed and successful admin actions.
Full Backlog (Sorted by Priority)
P0 Critical
- Add auth for write/admin endpoints (
POST/PUT/DELETEroutes, mass delete, profile/settings changes). - Add CSRF or strict origin checks for browser session protection.
- Validate/sanitize outbound href URLs before rendering in HTML (allow http/https only).
- Add per-IP rate limiting on
/api/chat,/api/search,/api/profile,/api/settings. - Enforce request size limits (message/profile text and JSON body) to prevent memory abuse.
P1 High
- Add settings key allowlist in
/api/settingsto prevent arbitrary key injection. - Add pagination (
limit,offset) with enforced maximums for list APIs. - Add DB indexes and query hygiene for scalability (
messages.conversation_id, timestamps). - Replace raw exception leakage to clients with generic safe error messages + server-side logs.
- Add request/response timeout and retry policy consistency across external calls.
- Add endpoint-level audit logging for destructive operations.
- Add unit/integration tests for: remember/forget parsing, refusal detection, search fallback, SSE done/error shape.
- Add conversation title sanitization and length constraints.
- Ensure default preset semantics are correct (currently all seeded presets are marked default).
P2 Important Features
- Skills system: load markdown skill files with YAML frontmatter from skills directory.
- Skills registry API: list/enable/disable skills and expose active skills to UI.
- Inject active skill instructions into system prompt with bounded token budget.
- Tool execution guardrails: allowlist, confirmation mode, and execution logs.
- Heartbeat scheduler (cron/systemd timer) for daily check-ins.
- Heartbeat endpoint for generated briefings and anomaly summaries.
- Model info UI panel (description, updated date, best-use purpose).
- Default model selection improvements and persistence validation.
- Hidden model list support (exclude models from dropdown).
- Model update action from UI (trigger controlled model pull).
P3 Nice to Have
- Conversation search/filter and export tooling.
- Keyboard shortcuts, retry button, and source-link polish.
Maintenance Rules
- Keep this file as the single source of truth.
- Update item priority/status whenever work starts or completes.
- Mirror the Top 10 summary in README and keep counts aligned.