- [x] Add language-specific chunkers with AST parsing (Go, Python, TypeScript)
- [x] Implement chunking manager to dispatch files to appropriate chunkers
- [x] Integrate code chunks into vector sync for semantic search
- [x] Add tree-sitter dependency for Python/TypeScript parsing
- [x] Reorder struct fields for consistency across codebase
- [x] Rename error variables to follow Go conventions (err → unmarshalErr, etc.)
- [x] Add code chunk metadata to vector documents (language, symbol name, line ranges)
- [x] Update worker service to initialize chunking pipeline with all three languages
* Resolves issue #13
- Switched model to bge-small-en-v1.5
- Added lazy re-embedding
- Added model version tracking per vector
- Added conversion of vectors to the new model
* Add lfs support to the workflow.
* Implements importance scoring with decay + voting #6
* Resolves issue #5 by marking observations as superseeded and scheduled for deletion
* Implement pattern detection #7
* Improve injections and observations accuracy
- Session start: Recent observations for project context (recency-based)
- User prompt: Semantically relevant observations (similarity-based with threshold)
* Added two stage retrieval with bi and cross encoder #8
* Implement query expansion and reformulation #9
* Knowledge graph and relationships ( resolves#4 )
- File Overlap Detection: Detects relationships when observations modify/read the same files
- Concept Overlap Detection: Detects relationships based on shared semantic concepts
- Type Progression Detection: Infers relationships from natural observation type progressions (e.g., discovery → bugfix = "fixes")
- Temporal Proximity Detection: Detects relationships between observations in the same session within 5 minutes
- Narrative Mention Detection: Detects explicit relationship language in narratives (e.g., "fixes", "depends on", "supersedes")
* Add visualisation of the relations to the dashboard.
* fixup! Add visualisation of the relations to the dashboard.
* Update documentation with new settings and screenshots.
Fix 1: HTTP Server timeouts (service.go)
- Added IdleTimeout: 120s - closes idle keep-alive connections
- Added ReadTimeout: 30s - prevents hung connections waiting for request data
Fix 2: SSE dead client cleanup (broadcaster.go) - This was the real leak
- Bug: When Write() failed on a disconnected client, it just logged and continued - the dead client stayed in the clients map forever
- Effect: Dead clients accumulated and every Broadcast() call would try (and fail) to write to them
- Fix: Now tracks failed writes and removes dead clients from the map
The SSE bug was likely the main cause. Every time a browser tab closed or connection dropped, the client stayed registered. On each broadcast (processing status updates happen frequently), it would try to write to dead connections, fail, but never clean up.
1. Version mismatch restart loop (pkg/hooks/worker.go):
- Added versionsCompatible() and extractBaseVersion() functions
- Hooks no longer restart worker when base versions match (e.g., v0.3.5-dirty ≈ v0.3.5-2-gca711a8-dirty)
2. Auto-update detection (internal/update/update.go):
- isNewerVersion() now extracts base version before comparing
- No longer always reports updates for dirty/dev builds
3. Non-blocking ChromaDB sync (internal/worker/handlers.go):
- SyncUserPrompt now runs in a goroutine with 10-second timeout
- /api/sessions/init responds immediately without waiting for ChromaDB