Repository navigation
feat: add a nightly topic map to the left rail - #75
Merged
Merged
Conversation
dimslaev
force-pushed
the
feat/rail-topic-map
branch
from
October 10, 2026 08:39
c415751 to
08aad66
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Left-rail panel: each recent article as a dot, grouped by meaning into labelled clusters. A nightly job on the box writes a static JSON file; the frontend fetches it directly, with no API call.
What changed
backend/pipeline/topic_map.py(python -m pipeline.topic_map)digest._vectorsas the fallback (imported, not copied). numpy only.Tag.name, fallback "other".os.replace, chmod 0644) toTOPIC_MAP_PATH. Logs one line: window, count, k.deploy/agentique-topicmap.service+.timer(06:10), Caddyfilehandle_path /data/*before the SPA fallback, deploy/README rows and box steps.frontend/src/components/Rails/panels/TopicMap.tsx, registered inLEFTwith meta "by meaning". It uses plainfetchthrough react-query with a 30 minstaleTime.SCORE_STANDOUTor above are signal-coloured.articleClickHandlers.role="img"and a summaryaria-label, there is an sr-only list of clusters, and each dot has a<title>.Where I departed from the plan, and why
RailPanelnow hides an open section whose body is empty, using one CSS:has()rule.RailPanelDefis unchanged. A collapsed panel stays visible because its body is empty only because it's collapsed. Expanding it with no usable file then hides it.MIN_GAP0.3). On local data the PCA alone put two or three clusters on top of each other, and their labels overlapped. The adjustment is still deterministic.ink-2(#1b1d14, from the design palette) is added as a token inindex.css.index.html).Verified
scripts/tests-start.sh, with Postgres 16 + pgvector set up locally because the pgvector image pull is blocked here): 547 passed, 1 failed. The failure istest_read_endpoints_are_public[/search?q=agents], which also fails on master in this sandbox because the embedding model download goes through a blocked proxy.test_topic_map.py(16 tests):MIN_POINTSty check app scriptsis clean.bun run buildpasses.tests/topic-map.spec.ts+articles.spec.ts: 5 passed, run with--project=chromium --no-deps. The auth setup needs mailcatcher, which can't run here, and these specs don't need a login.One-time box steps (manual)
sudo install -d -o agentique -g agentique -m 755 /var/lib/agentique/publicTOPIC_MAP_PATH=/var/lib/agentique/public/topic-map.jsonto/opt/agentique/.envsudo cp /opt/agentique/deploy/agentique-topicmap.{service,timer} /etc/systemd/system/ && sudo systemctl daemon-reload && sudo systemctl enable --now agentique-topicmap.timersudo cp /opt/agentique/deploy/Caddyfile /etc/caddy/Caddyfile && sudo systemctl reload caddysudo systemctl start agentique-topicmap, thenjournalctl -u agentique-topicmap -n 5andcurl -sI https://agentique.ch/data/topic-map.jsonUntil these are done the file returns a 404 and the panel stays hidden.
Merge note
Master had no new commits when I opened this. The who-wrote and stories sessions also edit
LEFT/RIGHTinpanels.tsx. If one merges first, the conflict is just the array entries. Keep both, with Topic map after Who wrote.🤖 Generated with Claude Code
https://claude.ai/code/session_01NQZAhjzHARib3J1DyZNQAs
Generated by Claude Code