Changes
1,376 commits from through .
SaaS: 764; Desktop: 299; Node: 244; Proto: 69
This generated snapshot covers
SaaS: 764; Desktop: 299; Node: 244; Proto: 69
This generated snapshot covers
saas, desktop, node, and proto.— 4 commits
-
SaaS
3d6df7esaas: cache node workspace activity -
Desktop
0680322ui: sort workspaces by activity -
Node
8315c31node: maintain workspace activity timestamps -
Proto
350e6a4proto: add workspace activity timestamp
— 6 commits
-
Desktop
4a0dc1efix: keep session answers in view -
Desktop
686e2acui: label observation directives -
SaaS
a8385eaextraction: support visual PDF data -
Desktop
cc905c3ui: add on-demand extracted data viewer -
Node
3c1fd99node: expose file event ID -
Proto
5fde3c9proto: expose file event ID
— 12 commits
-
Desktop
78d95e9fix: refine session export print flow -
Desktop
d06e3b1fix: preserve decomposed turns in export -
SaaS
9264165extraction: remove macOS-specific examples -
Desktop
d2beac0ui: remove macOS node option -
Proto
5f6bc85proto: carry first-turn session name -
SaaS
7850e54feat: add first-turn workspace naming -
Node
09de2a0feat: add first-turn workspace naming -
Desktop
52fad65docs: update node commands -
Desktop
505a82ffeat: show account plan details -
SaaS
33e8052feat: expose account plan details -
Desktop
5af3507fix: scroll sessions to latest turn -
Desktop
78f3d41ui: add session text context menu
— 3 commits
-
Desktop
2902ed0ui: add WinBox window controls -
SaaS
de78c66docs: keep default responses concise -
Desktop
2bb4fd2fix: initialize sessions and avoid duplicate workspace fetch
— 18 commits
-
Desktop
54867aefix: display workspace name citation label -
Node
1398750fix: label workspace name citations -
Desktop
627ac43ui: color workspace settings headings by type -
Desktop
e2b0c69desktop: restore window and session state -
SaaS
b9576a2saas: route session view state -
Node
2339676node: persist session view state -
Proto
e56712cproto: persist session view state -
SaaS
189f1beapi: expose profile fact sources -
Desktop
1411ecafix: separate profile and learned facts -
Node
73c4850fix: preserve learned profile facts -
Proto
7902588proto: add profile fact source metadata -
Desktop
45fa0d3ui: update settings and workspace resource panels -
Proto
7369296proto: align answerer observation records -
SaaS
8fbdf42refactor: align observation inspector role -
Node
96485e2refactor: align observation inspector relay -
SaaS
5fb8c4cRestore comprehensive opencode configuration with project context and working guidance -
SaaS
e4907eeFix opencode.json configuration with proper schema -
SaaS
94ecdafAdd project overview and opencode configuration
— 1 commit
-
SaaS
cf6ee6edocs: handover H200 — feed failure diagnosis and process hardening
— 35 commits
-
SaaS
e80998bdocs: handover H199 — disable feed workspace creation, C481 parked -
Desktop
c03fdc9fix: disable Feed option in new workspace modal -
Desktop
733e9bdfix: allow external images in CSP and throttle feed API calls -
Desktop
e7af151fix: bump service worker cache key to force new bundle install -
Desktop
009f0d7fix: feed card shows excerpt, image fallback, dedup discuss sessions -
Node
2eb0cf8fix: strip markdown fences from feed story generation response -
Node
96df6f8fix: stronger C481 prompt requiring 2-3 paragraph excerpts -
Desktop
bc5f9e0fix: feed card click, favicon fallback, back-to-feed button -
Desktop
32a9f90fix: feed index is a dedicated news portal page -
Desktop
0187b78feat: C481 story card rendering + source attribution + discuss seed -
SaaS
d2cc70ffeat: C481 pass source_urls through feed index JSON handler -
Node
0d9b6effeat: C481 LLM story generation in feed agent -
Node
54477a7gen: regenerate for C481 FeedItem.source_urls -
SaaS
7c2b224gen: regenerate for C481 FeedItem.source_urls -
Proto
357a8f2proto: C481 add source_urls to FeedItem -
SaaS
cc72774docs: H198 feed fixes + C481 contract; archive H197 -
Desktop
890b1a6fix: deploy script copies sw.js (C481) -
Node
bed878ffeat: LLM curation pass in feed agent — relevance check + cross-domain story grouping via varen/classifier -
Desktop
37a332cfix: remove vestigial content_type filter — was dropping all feed items -
Desktop
37bb947fix: accept web content_type in feed index, bump sw cache to dated version -
Desktop
4c6e162fix: feed workspace always opens on index page — no session auto-loaded ever, conversations only via discuss button -
Desktop
6348e38fix: feed blue dot and index view — show unseen for feed ws, defer clear until feed loads, skip auto-resume for feed ws -
SaaS
3f76712docs: archive H196, promote H197 (C480 phase 2 executed) -
SaaS
1a6dd39saas: C480 phase 2 — observer, dynamic cache, onConnect sync, universal injection union -
Node
3018851node: C480 observation relay handlers + payload scope/model_id/directive -
SaaS
b499d8asaas: regen proto for C480 observation RPCs -
Node
eb964dbnode: regen proto for C480 observation RPCs -
Proto
e0e6b60proto: C480 add ListObservationPrompts + RecordObservations RPCs and ObservationEntry message -
SaaS
4576774docs: archive H195, promote H196 (C480 phase 1 executed) -
SaaS
1de6549feat: C480 phase 1 — model catalog + universal observation guidance injection -
SaaS
4483290docs: archive H194, promote H195 (C480 conversation observations design) -
SaaS
a70836adocs: archive H193, promote H194 to current handover, update pointer -
Desktop
1cf6be8feat: C479 desktop feed index rendering + retention preset -
Node
ce7c125feat: C479 node-side GetFeedIndex gRPC handler -
SaaS
f61d038feat: C479 feed index proxy + reload-check auto-detect outdated nodes
— 8 commits
-
SaaS
a70cfbdgen: C479 regenerated services.pb.go — GetFeedIndex RPC -
Node
127410dgen: C479 regenerated services.pb.go — GetFeedIndex RPC -
Proto
1418a58proto: C479 add GetFeedIndex RPC + FeedHeading message -
Node
0839734feed: C479 align search client with SaaS /api/search response shape -
Node
3ce8ab1feed: C479 node-owned ambient index — real search, grouping, retention -
SaaS
831ac64gen: C479 regenerated workspace.pb.go — feed config fields -
Proto
8bf0048proto: C479 feed config — retain_items + expunge_cycles, drop vestigial fields -
SaaS
a446d23docs: H193 — feed workspace broken, needs redesign; archive H192
— 16 commits
-
Desktop
90122f2refactor: feed workspaces use WorkspaceWindow, card grid replaces empty thread; FeedWindow deleted -
Desktop
d14b49ffix: add current date to feed query for recency, remove misleading discovered_at timestamp -
Desktop
ff0a790fix: load persisted web_results on mount, pass SessionID for feed inference -
SaaS
71c5bfefix: force Nature=web for feed, feed-specific prompt, raised search caps -
Desktop
00fb9eafix: suppress answer text in feed index, cards only from webResults -
Desktop
7fc1df1fix: use Query not question in inference POST, move header buttons to header strip -
Node
506bd21feat: FeedConfig lifetime_seconds in workspace manifest -
SaaS
8b413eegen: regenerate from proto — FeedConfig lifetime_seconds -
Desktop
2c82ef0feat: FeedWindow rewrite — inference prompt via SSE, card grid, discuss panel, session drawer -
Proto
0194dbdfeat(proto): add lifetime_seconds to FeedConfig -
Desktop
13e7ed8fix: remove dangling references to removed sessions state in FeedWindow -
SaaS
5da4d8efix: use plain struct for feed_config JSON deserialization, proto3 camelCase vs snake_case mismatch -
Desktop
2a72a5dfix: FeedWindow uses refresh response items directly, removes broken session-loading path -
SaaS
682071efix: return feed items in refresh response for direct desktop rendering -
Node
a04503dfix: pass feed items through RefreshFeedResponse to desktop; populate items in FeedAgent -
Proto
3988354fix(proto): add items field to RefreshFeedResponse for direct desktop rendering
— 9 commits
-
SaaS
f1b0cc8docs: H192 — feed workspace type + card-based rendering (C478) -
Node
c791bf8feat: feed agent, supervisor, RefreshFeed gRPC handler, workspace FeedConfig plumbing -
SaaS
9249ae0feat: feed workspace SaaS plumbing — creation, listing, refresh proxy, dispatcher -
Desktop
e9f38befeat: FeedWindow component, feed creation UI, space-type routing to FeedWindow -
Desktop
5e78997feat: feed card components, remove dead renderers, back-port cards to conversation rendering -
Node
df86eb0gen: regenerate from proto — FeedConfig, FeedItem, RefreshFeed -
SaaS
cc90619gen: regenerate from proto — FeedConfig, FeedItem, RefreshFeed -
Proto
7b60c5afeat(proto): add feed workspace type — FeedConfig, FeedItem, RefreshFeed RPC -
SaaS
265105bdocs: H191 — mobile conversation interface discussion, deferred; D001 design doc
— 7 commits
-
SaaS
128b24ddocs: H190 — web results persistence + hub buffer + tenant compose fix -
Node
df3480efix: add pull_policy:always to tenant compose so varen-upgrade recreates containers on image digest change -
SaaS
a6976d3fix: increase hub send buffer 64→256 to reduce understanding event drops -
Desktop
566cddcfeat: reload web results from session and collapse non-current turns -
Node
8ae5691feat: persist web results in .web_results JSONL and return via GetSession -
SaaS
58b7297feat: persist web results through proto, dispatch, node store and GetSession -
Proto
3208913feat(proto): add WebResult message and web_results fields to AnswerRecord and SessionMessage
— 1 commit
-
SaaS
55a5c38feat: ephemeral web RAG with BM25 ranking (C477)
— 2 commits
-
SaaS
75a6397docs: H189 — note deploy-robustness fix and JWT rotation follow-up -
SaaS
a916b81fix: make deploy no longer overwrites saas.env with example template
— 23 commits
-
SaaS
19d615ddocs: H189 handover — advisor expansion + classifier cache_control; archive H188 -
SaaS
ec4e38dfeat: add software_engineer, data_analyst, academic, translator advisors + cache_control on classifier path -
SaaS
9a84468docs: H188 handover — workspace header merge + gRPC msgsize fix; archive H187 -
Node
bd4e031fix(node): raise relay client gRPC max message size to 32MB -
SaaS
4dde4e0fix(saas): raise gRPC max message size to 32MB on NodeService server -
Desktop
a3c71b4fix(desktop): merge live workspace status into workspace headers -
Desktop
21f0631fix(desktop): add session delete to in-workspace session drawer -
SaaS
a006c03docs: H187 handover — regressions + nav + analysis-session fixes; archive H186 -
Desktop
4b42461fix(desktop): filter realtime annotation events by session -
Node
ce5549ffix(node): init ambient insight clock on first observation -
Desktop
173fa5efeat(desktop): clickable node rows; consolidate workspace info on Workspaces tab -
SaaS
2667b9bfix(saas): unblock new-node registration + workspace creation -
SaaS
13895e9docs: H186 analysis pipeline live + first-person/TZ/LiteLLM fixes; archive H185 -
SaaS
59be29ffeat(saas): auto-detect TZ in node installers (linux + windows) -
Node
fd101cffix(node): add zoneinfo to distroless image + TZ env var in tenant compose for local-time display -
Node
7218ebdfix(node): first-person voice for ambient analysis outputs -
SaaS
caada84docs: H185 C476 desktop analyse UI deployed-unverified; archive H184 -
Desktop
970909bfeat(desktop): Analyse button, facet-grouped panel, unseen-content indicator (C476) -
SaaS
6f6ca9adocs: H184 C475 saas analysis proxy + unseen flag; archive H183 -
SaaS
606754ffeat(saas): analysis proxy handler + has_unseen_content flag (C475) -
SaaS
9e7d2f8docs: H183 C474 analysis pipeline refactor; archive H182 -
Node
86e9982feat(node): refactor analysis pipeline — new session per run, source-count gate, drop insight chunk (C474) -
Proto
3e26514feat(proto): add RunAnalysis RPC for manual analysis trigger (C474)
— 43 commits
-
Desktop
2c87c8bfeat(desktop): rename fast/deep check to 3-state Reflection cycle toggle -
SaaS
7c3ea4fdocs: H182 C472 ephemeral removal; archive H181 -
Desktop
432c099feat(desktop): remove ephemeral badge, Keep button, and keepWorkspace API (C472) -
SaaS
492b223feat(saas): remove ephemeral concept + KeepWorkspace + SweepEphemeral (C472) -
Node
5374c3dfeat(node): remove ephemeral concept + KeepWorkspace RPC (C472) -
Proto
5d61b42feat(proto): remove ephemeral fields + KeepWorkspace RPC (C472) -
SaaS
5cd0038docs: H181 C471 git vestigial removal; archive H180 -
SaaS
6b69c84feat(saas): remove vestigial git subsystem (C471) -
Node
194313afeat(node): remove vestigial git subsystem (C471) -
SaaS
25fbcb6gen: regenerate after git subsystem removal (C471) -
Node
e9cb276gen: regenerate after git subsystem removal (C471) -
Proto
3a3bbe5feat(proto): remove vestigial git subsystem (C471) -
SaaS
a46523cdocs: H180 validator history threading; archive H179 -
SaaS
0e1e5dffeat(validator): thread conversation history into judge/reflect so anaphoric turns resolve against prior context -
SaaS
8b14980docs: H179 workspace title gate + session-name feeds placeholder; archive H178 -
Node
b07e2defeat(intelligence): gate workspace/session titles on word count; feed session title into workspace name placeholder -
SaaS
7248b6adocs: H178 C470/C473 bookkeeping closeout; archive H177 -
Node
6cff825feat: regenerate proto (drop UpdateFileSidecarRequest) -
SaaS
9a24e52feat: regenerate proto (drop UpdateFileSidecarRequest) -
Proto
8c36badfeat: remove UpdateFileSidecarRequest proto message (C473 verified stable) -
SaaS
7dd0cc5docs: H177 record live HTML stripper verification (3 chunks, <1m) -
SaaS
f0525e6docs: H177 HTML stripper before extraction batching; archive H176 -
SaaS
d4a16defeat: strip HTML to readable text before extraction batching -
SaaS
e2c4516docs: H176 citation labels and popout links fixed; archive H175 -
Desktop
f5890fcfeat: add download link for file sources in source popout -
Node
f3d5445fix: set BaseSourceID on extraction events so FetchSource matches; carry file_name in Qdrant payload -
SaaS
8694d0dfeat: pass file_name through source-content endpoint for popout download link -
Proto
14b2961feat: add file_name field to FetchSourceResponse for source popout download link -
Node
7dd5c4afix(file-agent): decouple source label from on-disk path; use URL as original_name for fetches -
Desktop
1f094a6feat(C470): desktop assets consolidation — single Assets tab, drop ephemeral/extraction_json, add original_name/source_kind -
Desktop
9eb3569fix(sourcePopout): render plain text for non-URL sources instead of dead href placeholder -
Node
cb2cea3fix(file-agent): emit original_name as source label instead of content-addressed hash path -
SaaS
f4e004adocs: H175 C473 verified live; archive H174 -
SaaS
dbb4b27docs: H174 C473 shipped; archive H173 -
Node
5cff659feat: C473 — file-agent uniform IsBinary emit; supervisor extractAndEmbed via SaaS ExtractContent proxy; delete sidecarHasEventID gate and UpdateFileSidecar Go method -
SaaS
f85087dfeat: C473 — add ExtractContent gRPC handler; delete triggerAssetExtraction/AssetExtractor/UseAssetExtractor; delete UpdateFileSidecar from dispatcher -
Proto
62ea7d5feat: add ExtractContent RPC to NodeService; remove UpdateFileSidecar from TaskService (C473) -
SaaS
3380229docs: H173 C473 unified extraction contract; archive H172 -
SaaS
8aad4b7docs: H172 orchestrator prompt hardening; archive H171 -
SaaS
49ad046docs: H171 asset storage consolidation design and contracts; archive H170 -
SaaS
db1af04docs: H170 intent diversion restyle, streaming race, file deletion removal, source_id fix; archive H169 -
Node
c53ef42fix: FetchURL and CheckURL return EventID as SourceID, not filename — matches Qdrant source_id -
Desktop
0f65c1erefactor: source popout reads chunks from qdrant only; drop sidecar extraction lookup
— 68 commits
-
Node
61435abfix: show indexed status for text files with IndexedAt set but no extraction record -
Desktop
9bcbe67refactor: remove file delete, bulk delete, and tidy UI -
SaaS
a3c6ad1refactor: remove DeleteFile and TidyEphemeral routes, handlers, dispatcher methods, mocks -
Node
97482d4refactor: remove file deletion and tidy-ephemeral paths; remove file agent deletion detection -
Proto
1049be3refactor: remove DeleteFile and TidyEphemeral RPCs and request messages -
Node
367ec8bfix: log supervisor emit dedup/ok/fail so ingest pipeline is observable -
SaaS
51887fafeat: add tech_support advisor for consumer electronics troubleshooting -
Desktop
5715979fix: guard streamingOidRef clear so aborted turn cleanup does not clobber a newer turn -
Node
64ef8aafix: exclude .meta.json sidecars from file agent scan; log watch_paths on start -
SaaS
ac1f130fix: log validator verdicts on every fast-check run -
Desktop
16d4304fix: restyle intent divergence warning as ws-info-panel under thread -
SaaS
c64e14adocs: H169 validator prompts, research tab, source popout, watch_paths; archive H168 -
Node
1f45d9cfix: inject default watch_paths for file agents at start time -
Desktop
44ea1f9fix: add Research tab to workspace toolbar; resilient source-viewer popout -
SaaS
001b8fefix: validator prompts judge answer coverage, not user message quality -
SaaS
fe855f2docs: H168 export ux, unified info panels, popouts as tabs; archive H167 -
Desktop
471f71ffix: open popout windows as new browser tabs without sizing features -
Desktop
8dbeac2feat: unified info panels for understanding, reflection, and web results — colored left bar, full-title toggle, icons (lightbulb/leaf/globe) -
Desktop
bc7d9f5fix: drop export info message from printed copy -
Desktop
17d3f4afix: export button no longer auto-triggers print dialog -
Desktop
2c45c9cfeat: rename Print toolbar button to Export -
Desktop
4d39fa8feat: print session — notebook-pen marker instead of Q on user messages -
Desktop
6b638a8feat: print session — Q marker with vertical bar on questions -
Desktop
0552c07fix: print session — use varen font, UL for sources, div turns to avoid page breaks -
SaaS
c547a08docs: H167 web search redesign, print session, textarea auto-grow; archive H166 -
Desktop
6d02710fix: drop flex:1 from textarea — was overriding auto-grow height -
Desktop
1aececefix: textarea auto-grow via onInput handler — direct DOM mutation -
Desktop
bd960c4fix: textarea auto-grow — useLayoutEffect instead of useEffect+rAF -
Desktop
d506bdffix: textarea auto-grow — defer height set to rAF for accurate scrollHeight -
Node
7db62fafix: resolve session names in seed-chunk path (H165 gap) -
SaaS
f577efefix: resolve session names in seed-chunk path; restrict fetch_url to user-named URLs -
Desktop
a7f73e2fix: card click opens page directly — no separate link needed -
SaaS
f3622c4chore: drop HEAD-check count from understanding message -
Desktop
84aab9bstyle: portrait web cards, card is click target, drop HEAD from msg -
SaaS
e5f12e7feat: HEAD-check web results before surfacing; enforce model silence on searches -
SaaS
12567d9fix: carry web results through HandleBrowserRequestStream -
Desktop
aa80becfeat: web card layout — snippet, url, ingest; opened highlight -
SaaS
e53e825feat: web_search becomes async query-suggestion tool -
Node
60a1f16refactor: drop dead node-side web search scaffolding (AC427) -
SaaS
ed35692refactor: drop dead node-side web search scaffolding (AC427) -
Desktop
5336f12feat: web results panel with add-to-research cards -
SaaS
76bf588feat: surface web-search hits as user-reviewable candidates, not model context -
Desktop
1f75413fix: textarea auto-grow via useEffect, render markdown in print output -
Desktop
76d832efeat: auto-grow chat textarea, add print-session toolbar button -
SaaS
6e130b7docs: H166 retire edit-question, trash→collapse, turn bar height; archive H165 -
Desktop
085b51cfeat: retire edit-question pencil, repurpose trash as UI-only fold/collapse, reduce turn bar height -
SaaS
9894f18docs: H165 add badge work, confirm (2) live, drop false node-reload alarm (1h timer not broken) -
Desktop
30c0cd5fix: corpus citation links use accent color and no underline, matching web links -
Desktop
68f5bb8feat: colored pill citation badges per source type, number-only for unknown types -
Desktop
752fd23feat: compact 3-letter citation source badges (doc/eml/web/mem/ses/src) folding number + type -
SaaS
4aa0975docs: H165 fix source_id parser bug for ws_ prefixed workspace IDs -
Node
5557547fix: parse session source_id with regex so ws_ prefix workspace IDs resolve to session titles -
SaaS
2d398d9docs: H165 resolve session citation labels at read time, retro-fits existing turns -
Node
80db886feat: resolve session citation labels at read time so renamed sessions stay current -
SaaS
deafdaddocs: H165 note H164 node reload mechanism failed, requires investigation -
SaaS
f4c53badocs: H165 citation format, session name, reload rail -
Desktop
3568ffcfix: truncate citation labels to single line; restore citation rail on reload for multi-question turns -
Node
2ba7579feat: surface session title instead of UUID in session-chunk citations -
SaaS
e35941edocs: update H164 with follow-up commits and decisions -
SaaS
4fde580fix: fall back to cron when systemd is unavailable -
Desktop
6b6b8aefix: atomic desktop deploy with no asset gap -
Desktop
23f5b62fix: clean stale ui assets on deploy -
SaaS
70435c3fix: watcher timer to 1h default, clean stale ui assets on deploy, warn on missing systemd -
SaaS
137425bdocs: handover H164 — external node reload + desktop force reload -
Desktop
22d2cbffeat: poll desktop version + force reload on upgrade; clickable node reload button -
SaaS
7b6c0defeat: external docker node reload + forced desktop browser reload on upgrade -
SaaS
bac3333docs: handover H163 — close C319 typecheck seam -
Desktop
5550109fix: align TurnNode.validatorResult typing as nullable (C319)
— 27 commits
-
SaaS
94a5b3edocs: drop tracked H160 after archival to AH160 -
SaaS
de74128docs: handover H162 for C467 complete -
Desktop
81c086afeat: add Research tab and folder-aware sidecar paths for C467 -
SaaS
63e98c4feat: add fetch_url retrieval tool and CheckURL-first flow for C467 -
Node
5f68eb4feat: add CheckURL and passthrough FetchURL with async ingest for C467 -
Proto
8af5376feat: add CheckURL RPC and FetchURLResponse for C467 URL ingest -
SaaS
0b66ac8docs: handover H161 for C467 URL ingest and Research tab -
SaaS
3730c73docs(h160): note reflection title toggle -
Desktop
3b2745cfix(desktop): make reflection title the toggle instead of the leaf icon -
SaaS
f2cc4c9docs(h160): note tri-state validation indicator in understanding -
SaaS
bbb90cafeat(router): tri-state validation indicator in understanding panel -
SaaS
aff249adocs(h160): note followup phrase fix and open indicators -
SaaS
35f3183fix(validator): phrase reflection followups as user-typed turns -
SaaS
d49ce8ddocs(h160): quick-check reflection panel with session toggles -
Desktop
fa1d5c6feat: add reflection panel, fast/deep toggles and sage palette -
SaaS
b492061feat: add fast/deep validation toggles and quick-check-only output -
SaaS
0f298cedocs(h159): note desktop streaming scroll threshold hotfix -
Desktop
472da4afix: use relative auto-scroll threshold to avoid chrome defeating the 32px gate -
SaaS
15c0a67docs: handover h159 - reasoning effort, validator gate, truth prompt; archive h158 -
SaaS
1e15149feat: classifier-driven reasoning effort, Haiku validator gate, truth-advocate prompt -
SaaS
8337303docs: handover h158 - desktop streaming scroll fix and h157 archive -
Desktop
18503a3fix: respect manual scroll-up during streaming by checking live distance -
SaaS
2b809c4docs: update h157 with retrieval-loop citation fix -
SaaS
60e4faafix: preserve conversation citation prompt when retrieval loop is enabled -
SaaS
ab04439docs: update h157 with revised recency and citation fixes -
Desktop
e448b44fix: remove desktop touch on workspace open; rely on saas-side updates -
SaaS
d61e04efix: bump workspace last_active_at on inference and keep; stronger conversation citations
— 6 commits
-
SaaS
d638426docs: archive h156, write h157 desktop-saas polish bundle -
Desktop
c68a7f8feat: workspace recency sort, streaming scroll controls, sticky home node -
SaaS
afcb0b3feat: workspace last_active_at tracking, touch endpoint, stronger conversation citation prompt -
SaaS
499073adocs: record h155 saas commit ace4fda in archived handover -
SaaS
75ed3ccdocs: close h155, archive h154/h155, write h156 planning handover -
SaaS
ace4fdafix: tune grpc keepalive, log jwt and sse errors for login-boot diagnostics
— 1 commit
-
SaaS
463a78dfix: citation [n] references in conversations, ledger →, navigator session sort
— 14 commits
-
SaaS
dc4b654docs: H153 updated with live verification results, hybrid is now default-on -
Node
4c74110feat: enable hybrid search default, wire into intent deriver -
Node
9cf1c4afeat: eval-harness hard corpus targeting dense's exact-term weakness -
Node
37d625bfix: eval-harness dense search uses named-vector struct form (C466) -
SaaS
e01c46bdocs: H153 handover for C466 hybrid retrieval fix, archive H152 -
Node
d5da5fefix: hybrid retrieval via named dense+sparse vectors with RRF (C466) -
SaaS
fda04b2docs: update H152 with dense baseline result and C465 hybrid bug -
SaaS
3619dd7docs: add H152 handover for eval harness in node image; archive H151 -
Node
6923bcafeat(node): ship standalone eval harness inside docker image -
SaaS
e6a9976docs: H151 — citations and hybrid retrieval; archive H150 -
Node
0e1e23efeat: hybrid retrieval with Qdrant full-text index and RRF fusion (C465) -
Node
274257efeat: retrieval eval harness with labelled corpus (C464) -
SaaS
946cdcefeat: enable citation registry for conversation mode (C463) -
SaaS
39e9089docs: H150 — retrieval enhancement planning; archive H149
— 3 commits
-
SaaS
89fcabcdocs: H149 — node dispatch timeout diagnostics; archive H148 -
Node
dbe89ccfix: add dispatch channel guards and panic recovery in task loop -
SaaS
dec37edfix: add gRPC keepalive and dispatch diagnostics for node timeout investigation
— 13 commits
-
SaaS
3c7834ddocs: H148 — navigator text wrap fix; archive H147 -
Desktop
cebad94fix: nest badge and node indicator inside name span in navigator -
Desktop
9fdc6d8fix: revert single-line text truncation, restore multiline wrapping in navigator -
SaaS
580c9cddocs: H147 — navigator fluid width and recency grouping; archive H146 -
Desktop
878f60efeat: fluid navigator width, recency grouping, single-line workspace rows -
SaaS
557116ddocs: H146 — node understanding entries and version sync; archive H145 -
Desktop
e3e25f9fix(desktop): disambiguate node version labels (Registered/Running) -
Node
3075cc0feat: stream context assembly timing to SaaS as understanding entry -
SaaS
9c9e8d6feat: forward node thinking updates as understanding entries; persist version on re-registration and heartbeat -
Desktop
cb87cd1fix(desktop): null-safe chunk iteration in sourcePopout (H145) -
SaaS
ce1b2fbfix(saas): nil-safe chunks in source content response (H145) -
SaaS
6131ee5docs: H144 — TLS/mTLS fixes; archive H143 -
SaaS
3b63131fix(tls): add WG IP SAN and ClientAuth to server cert; persist CA via files
— 27 commits
-
SaaS
0c9cc86fix: add VPN IP SAN to node certificates for mTLS verification -
SaaS
f68ca92docs: H143 — audit §4 anomaly cleanup; archive H142 -
SaaS
ec68676fix(db): add IF NOT EXISTS to 026_audit_log migration indexes -
SaaS
017e9a7fix(search): clarify error messages when both search backends fail -
SaaS
18e36fcdocs: H142 — C458-C461 dispatch; archive H141 -
Desktop
97f8250fix(desktop): sanitize HTML in writePopout with DOMPurify (C461) -
SaaS
5bbc446feat(saas): admin JWT auth for payment endpoint with audit_log (C460); regenerate proto stubs (C458, C459) -
Node
8fc72a5chore(node): regenerate proto stubs with auth and sensitivity options (C458, C459) -
Proto
baa7361feat(proto): add auth annotations to all RPCs and sensitivity marking to RegistrationAck (C458, C459) -
SaaS
49d205edocs: H141 deployed state -
SaaS
e95fe93docs: H141 handover, archive H140 (C454–C457) -
Node
693c34efix(node): C455 propagate sidecar write errors, C456 cancel restart goroutines on shutdown, C457 return error instead of log.Fatalf in run() -
SaaS
21d1784fix(saas): remove deprecated ?token= WebSocket auth fallback (C454) -
Desktop
429f592fix(desktop): remove deprecated JWT query-string WebSocket fallback (C454) -
SaaS
ee32fe1docs: H140 handover, archive H139 (C449–C453) -
SaaS
0fd9485fix: propagate ensureSubscription errors, switch billing to decimal arithmetic (C452, C453) -
SaaS
43729b8fix: UNIQUE constraints on vpn_ip + node_index, retry on race (C451) -
Node
3126ec9feat: TLS_CA_CERT env var for secure registration verification (C450) -
Node
27a95cffeat: gRPC mTLS client+server, CA cert chain read from RegistrationAck (C449) -
SaaS
0e074f7feat: gRPC mTLS — CA-backed cert signing, TLS on NodeService and dispatcher (C449) -
Proto
748222bproto: add ca_cert_pem field to RegistrationAck (C449) -
Desktop
1112949fix(desktop): add Content-Security-Policy meta tag (C446) -
SaaS
eaadbc9docs: H139 handover — fresh-eyes audit and hardening sprint -
Desktop
312b6eafix(desktop): escape workspace name in WinBox title (C445) -
Node
f9c1cd0fix(node): restrict session and upload file permissions to 0600/0700 (C445) -
SaaS
f7058b2fix(saas): suspended license gate and per-user WebSocket limit (C445) -
SaaS
75a3f40fix(saas): fail-safe credit check with advisory lock serialization (C444)
— 30 commits
-
Node
1b6690ffeat(node): dual-key JWT validation for secret rotation (C443) -
SaaS
592742ffix(saas): dual-key JWT validation, env split, rotate secrets (C443) -
SaaS
f61aa3afix(saas): split secrets from config, add saas.env.example (C443) -
SaaS
f1cf2f6docs: H138 handover — dispatch C441 and C442 -
SaaS
e8c2d45fix(saas): clarify search gateway SearXNG best-effort handling (C442) -
SaaS
4d7a824docs(saas): correct deriveKey IKM comment in display cache crypto (C441) -
SaaS
bddc352docs: H137 handover — audit reconciliation + deploy discipline -
SaaS
dd4481echore: archive H136 handover -
SaaS
245409cstyle(saas): fix indentation after removing content key (C438) -
SaaS
953ed83fix(saas): drop redundant content key from web_search tool result (C438) -
SaaS
7f3c98edocs(saas): reconcile 2026-06-17 audit findings with current source (C437) -
Desktop
fe98967docs(desktop): remove dead Websearch help text (C437) -
SaaS
7844c0cdocs: H136 handover — C436 deploy catch-up + archive H135 -
SaaS
15b4e6edocs: H135 handover — C435 deployed, deploy step to be included in contracts -
SaaS
1ba6c73chore(proto): regenerate Go bindings and fix stale router test after C435 dead-surface cleanup -
Node
b2343f5chore(proto): regenerate Go bindings after C435 dead-surface cleanup -
Proto
75cfc57chore(proto): remove dead web-search, workspace-stats, PushReplies and TriggerIntentDerive surface (C435) -
SaaS
afa1287docs: H134 handover; archive H132 and H133; update pointer -
Node
775f664fix(node): eliminate lock-copy vet warning and guard nil supervisor (C434) -
SaaS
76fb94afix(tests): repair router refCorpus calls and integration mock drift (C434) -
Desktop
e74b701fix(desktop): C433 security sweep -
Desktop
cc7361ffeat(desktop): send /updates token via Sec-WebSocket-Protocol (C432) -
SaaS
c91a171feat(saas): harden /updates WebSocket — token-in-protocol, origin validation, timeouts (C432) -
Desktop
2e4a6c6fix(desktop): add auth to image thumbnails and remove stale Websearch UI (C431) -
Node
1ae584cfeat(node): restore minimal FetchURL pipeline with rate limits and tests (C431) -
Node
24816a1fix(node): C430 harden file paths and websocket server -
SaaS
f840230feat(saas): C429 authenticate NodeService and attach JWT in dispatcher -
Node
e2fad78feat(node): C429 authenticate TaskService and attach JWT in lifecycle -
Proto
96a246dfeat(proto): C429 add metadata_node_id and jwt_secret to internal gRPC planes -
SaaS
8f63de8docs: H133 full-source audit; C429-C431 authored; update handover pointer
— 16 commits
-
SaaS
37933f1docs: H132 — web search cleanup (C427 remove ambient+passive, C428 in-loop web_search rebuild); archive H131 -
SaaS
042b9e2C428: rebuild web search as synchronous in-loop retrieval tool -
Node
65af024C427: remove orphaned internal/research package and stale webfetch comment -
SaaS
68d2106WIP: auto-checkpoint on session end 20260616-232513 -
Node
e8a8583WIP: auto-checkpoint on session end 20260616-232513 -
SaaS
575d617docs: remove DESIGN-ambient-web (retracted) -
SaaS
311517edocs: DESIGN-ambient-web — corpus growth, in-answer web, idle gate -
SaaS
ef11991docs: H131 — citation reload persistence (C424), raw-over-derived grounding (C425), cite-only-referenced (C426); archive H130 -
SaaS
b2ee72bC426: cite only referenced sources -
SaaS
e28abdcC425: carry chunk kind into context, group by nature RAW→DERIVED→WEB, and add citation precedence guidance -
Node
8997ba7C425: carry chunk kind through RAGChunk, taskloop wire, relay hit, and pb mapping -
Proto
933c22cC425: add kind field to ScopedSearchResult -
Node
518a1e3C424: persist citation quotes across session reload (node disk) -
SaaS
1bf4270C424: persist citation quotes across session reload (saas JSON + cleanup) -
SaaS
6373224docs: H130 — popout full_text body (C421/C422/C423); canonical-over-derived grounding + web-search gate root causes; archive H129 -
Desktop
406b256C423: fix popout sidecar fetch to the files-list route (C422 follow-up)
— 19 commits
-
Desktop
2498b1dC422: source popout shows file_summary + emitted quote + full_text body (from sidecar) -
SaaS
c5e13acC421: privacy-safe quote-pipeline diagnostics in resolveQuotes -
SaaS
48aff9ddocs: H129 — citation popout original-file link + location line + quote spans; archive H128 -
Desktop
6edc1beC420: model-grounded quote spans in Lens source-viewer popout -
Node
c301b13C420: model-grounded quote spans in Lens source-viewer popout -
SaaS
5ccc5d2C420: model-grounded quote spans in Lens source-viewer popout -
Proto
42d9dffC420 — add CitationQuote message to proto -
Desktop
7db911eC419: add source-location line to popout (source.ts + sourcePopout.ts) -
SaaS
7dd743cC419: forward part_id and content_type in source-content JSON API -
Node
ee005afC419: surface part_id and content_type from Qdrant in FetchSource -
Proto
e1e7173C419: add part_id and content_type to FetchSourceResponse -
Desktop
bb48ca2C418: source popout clickable original-file link; drop chunk count -
SaaS
a083092docs: H128 — sales-site three-modes reframe + waitlist page; archive H127 -
SaaS
36d7d1bdocs: H127 — citation popout browser-window rework; stale-SaaS root cause; archive H126 -
Desktop
a4ba874C414: source viewer as browser window with generic Save/Print/Copy toolbar -
Desktop
ba1816cWIP: auto-checkpoint on session end 20260615-080709 -
Node
52658ccfix: pass positive scroll limit in FetchSource (C413) -
Desktop
da624a2C412: Restore clobbered desktop app stylesheet (C410 regression) -
SaaS
73f16ffdocs: H126 — clickable Lens citations arc (C409/C410/C411); archive H125
— 10 commits
-
Desktop
b62291bfix(desktop): move openSourceViewer declaration before handleSelectWorkspace to resolve TDZ error -
Desktop
35af473C410 — clickable corpus citations → source-viewer popout -
SaaS
78041f4C410 — clickable corpus citations → source-viewer popout -
Node
2238720C409 — node: propagate chunk indices through RAG chunks, wire, relay, and persistence -
SaaS
6f28244C409 — add unit tests for citation registry chunk accumulation -
Desktop
f893b51C409 — desktop: add chunks field to Citation type (data model only, no UI) -
SaaS
7fd3c2cC409 — saas: citation chunk provenance framework (refCorpus, wire, dispatcher, JSON) -
SaaS
6a1a965C409 — node: propagate chunk indices through RAG chunks, wire, relay, and persistence -
Proto
5615fa7C409 — add chunks field to Citation message -
SaaS
0a1c661docs: H125 — C408 cosmetic (profile Update button + citation gutter); archive H124
— 19 commits
-
Desktop
eecb442C408: profile Update button under textarea; reserve citation gutter only when rail present -
SaaS
fbf1d93docs: H124 — profile-consolidation arc executed + verified (C406, C407); archive H123 -
SaaS
570300aC407: Regen proto to remove PersonalSettings*; fix stale GetPersonalSettings doc-comments -
Node
1b69fb8C407: Remove deprecated PersonalProfile fields and dead PersonalSettings RPC -
Proto
81a9c74C407: Remove PersonalSettings messages and orphaned GetPersonalSettings/SetPersonalSettings RPCs -
Node
5cba68dC406 fix: remove stale WithPersonalStore chain call (build fix) -
SaaS
c60fb77C406: drop orphaned PersonalNotes wire field, update stale comments -
Node
982ed83C406: tear down dead ContextNotes store, repoint node-scoped remember to origin=profile, collapse C404 dup -
Desktop
58cb3ebC405: send browser tz/locale hints, render dismissible profile suggestions -
SaaS
b54876aC405: thread tz/locale hints + return suggestions through ProcessProfileStatement -
Node
c5ca851C405: structured {facts,suggestions} output + tz/locale hints in ProcessProfileStatement -
Proto
7586ea4C405: ProcessProfileStatement gains tz/locale hints + suggestions -
Desktop
520a13eC404: send browser client_timezone on inference requests -
SaaS
cee5f08C404: thread client_timezone, render always-inject profile+environment block, exempt from Lens gate -
Node
aa2df46C404: load origin=profile facts + stamp live datetime into context package -
Proto
5143cb4C404: add InferenceTask.client_timezone -
Node
ed0e097WIP: auto-checkpoint on session end 20260613-013807 -
SaaS
61b66fedocs: H123 — profile consolidation decisions A–E + DESIGN facts-only revision; archive H122 -
SaaS
3aa808edocs: H122 — conversational link/claim verification (discussion); archive H121
— 7 commits
-
SaaS
a2affa4docs: DESIGN — user profile consolidation (open decisions) -
SaaS
f391afddocs: H121 — Document Lens domain research; archive H120 -
SaaS
dfc25f0docs: H120 — navigator + citation UI fixes (C400 dedup+scroll, C401 wide-screen widths, C402 Lens badge); archive H119 -
Desktop
5df3060C402: recolor Lens badge to #528ae3 with 30% tinted background -
Desktop
25c37b8C401: widen navigator + citation rail on wide screens -
Node
14310eaC400: group corpus index by source, not source_id -
Desktop
cb89943C400: cap Indexed sources list at ~10 rows with scrollbar
— 21 commits
-
SaaS
49ba22cdocs: H119 — citation source-type label (C398 wire+rail, C399 reload+container fix); archive H118 -
Desktop
2270ca1C399: move container-type to .ws-turn so answer-row container queries apply -
SaaS
caf5c30C399: carry source_type through the session-reload citation path -
Desktop
a3253d6C398: citation rail \u2014 source-type label, basename, height-capped scroll -
Node
3b3e411C398: persist + relay Citation.source_type -
SaaS
1fa4306C398: thread Citation.source_type through router + dispatch -
Proto
3e50352C398: add source_type to Citation -
SaaS
345ed7fdocs: H118 — citation UI tidy (C396 dot-rail removed, C397 per-turn rail + Sources tab dropped); archive H117 -
Desktop
6a0300aC397: per-turn citation rail beside the answer; remove Sources tab -
Desktop
aaf84cbC396: remove FlowChartPanel dot-rail (precursor to per-turn citation rail) -
SaaS
acbd8e1docs: H117 — node persistent-data root-ownership investigation (parked); archive H116 -
SaaS
4599e21docs: H116 — Lens workspace-clobber fix (C394 space_type + C395 ephemeral, node-sourced); archive H115 -
SaaS
b5bc57dC395: ephemeral node-sourced + keep-flip propagation — node image 6.260611.135414 -
Node
b53343aC395: ephemeral node-sourced + keep-flip propagation -
Proto
275d434C395: add ephemeral field to workspace proto + KeepWorkspace RPC -
Node
a560480C394: workspace space_type becomes node-sourced -
SaaS
c2066a1C394: workspace space_type becomes node-sourced -
Proto
399f411C394: add space_type to WorkspaceProvisionRequest and WorkspaceInfo -
SaaS
e99a56fdocs: H115 — Tier-1 Lens verification close-out (C390/C391 verified, C392 fixed via C393); archive H114 -
Node
3bf6b83C393 — remove duplicate citation-write block in RecordAnswer -
SaaS
31a1e69C393 — send Citations on main enriched-completion path (C392 omission)
— 13 commits
-
SaaS
60e78beC392: wire citation persistence through saas read/write paths -
Node
f862d34C392: add citation persistence plumbing (mirror understanding pattern) -
Node
989435fWIP: auto-checkpoint on session end 20260610-171546 -
Proto
6984a76WIP: auto-checkpoint on session end 20260610-165351 -
Desktop
c0184d9C391: Desktop Lens Sources panel — consume done-event citations -
Desktop
2cae4c8WIP: auto-checkpoint on session end 20260610-163853 -
SaaS
8dca02cC390: space-type-aware retrieval-loop MaxRounds for Lens -
SaaS
56e94f8docs: H114 — Lens live-verify (C387/C388) + refusal hardening (C389); archive H113 -
SaaS
37b158cC389: harden Lens grounding refusal — forbid general-knowledge asides after off-corpus refusal -
SaaS
e8e8292docs: H113 — Lens Foundation (C387) + Core attribution (C388); archive H112 -
SaaS
313910dC388: Lens corpus-first core — source labels, anchoring grounding prompt, structured citations -
SaaS
5c08f66C387: plumb authoritative space_type to InferenceTask (Lens foundation) -
SaaS
fa64138docs: H112 — Lens made live (C386) + corpus-first/attributed Lens design; archive H111
— 8 commits
-
Desktop
9a63674C386: enable Lens workspace type in New Workspace modal -
SaaS
7c532f0docs: H111 — Uploads tab DnD/paste/multi-select (C385); archive H110 -
Desktop
1250b52C385 — Uploads tab: drag-drop, paste, multi-select (shared upload helper) -
SaaS
3fa4b51docs: H110 — park cards renderer (C384); C383 gemini revert closed; archive H109 -
Desktop
8e0c8ecC384: park cards renderer — disable cards branch in renderAnswer -
SaaS
bd72e99C384: park cards renderer — disable quiz/procedural content-signal mappings -
SaaS
ca39d17docs: H109 — advisor-keyed model routing + classifier resync (C381); archive H108 -
SaaS
bcb5f76C381: advisor-keyed model routing + classifier prompt resync
— 28 commits
-
SaaS
fe3a7e5docs: H108 — ambient question-card accept splices Q+A into the turn (C380); archive H107 -
Desktop
038d2d5C380: question card accept — splice Q+A into user turn -
SaaS
e7d8513docs: H107 — observation system built end-to-end (C377/C378/C379); archive H106 -
Desktop
3e2f5c4C379: surface inferred observations in node Profile tab -
Node
6753353C378: store observations in _node and surface via ListFacts -
Node
7e0c1fcC377: regenerate gen/ for ObservationRecord proto addition -
SaaS
99670b4C377: observe tool produce path — add observeTool, parseObservationToolCalls, wire TaskResult/Observations through router/dispatcher to AnswerRecord -
Proto
076c9afC377: add ObservationRecord message and AnswerRecord.observations field -
SaaS
57e2791docs: H106 — C375 verified complete + C376 (badge repalette + understanding card restyle); archive H105 -
Desktop
cab88daC376 fix: conversation badge background = font color at 30% opacity -
Desktop
fa1d307C376: Navigator conversation badge repalette + understanding block restyle to match annotation cards -
Desktop
d8bf6e1C375 — desktop: corpus API client, Knowledge tab source list + points gate, remove dead warmth -
SaaS
e6083a7C375 — saas: add corpus HTTP endpoint, remove dead warmth -
Node
34dc977C375 — node: write URL into web-page source payload for corpus index -
Node
90660efWIP: auto-checkpoint on session end 20260608-174917 -
SaaS
1a50dc3docs: H105 — Knowledge-tab tidy (C375 dispatched: corpus source list + points gate, warmth removed); archive H104 -
SaaS
76473a7docs: H104 — Websearch/Uploads alignment (C373 web-as-file ingest, C374 Get-URL); archive H103 -
Desktop
f855772C374 — manual web-page ingest: add URL grab UI to Websearch tab -
SaaS
53f8843C374 — manual web-page ingest: add FetchURL dispatcher, HTTP handler and route -
Node
dc39746C374 — manual web-page ingest: wire FetchSink to coordinator, implement FetchURL handler -
Proto
595c490C374 — add FetchURL RPC to TaskService for manual web-page ingest -
Node
289ae7cC373: web pages ingested as files -
Desktop
d83e268C373: web pages ingested as files -
SaaS
efd76f1docs: H103 — workspace-modes Conversation milestone (C370/C371/C372); archive H102 -
Desktop
a80aa95C372-fix — Fix nav workspace name wrapping + bump SW cache -
Desktop
d5fcd6cC372-fix — increase .nav-item-name specificity for multi-line wrap -
Desktop
9441491C372 — Desktop: workspace-modes UI polish (nav row, header strip, badge palette, button) -
Desktop
1ff54d9C371: workspace-modes UI — flat nav, creation modal, in-window sessions + space-type
— 16 commits
-
SaaS
381e9d7C370: add space_type column, validate/derive in create, return in list, live push on keep -
SaaS
0f9e84fdocs: workspace-modes §12 — Conversation milestone locked decisions (C370/C371) -
SaaS
ffa0fc1docs: H102 — retrieval-loop timeout + extraction-starvation fix; loop live; archive H101 -
SaaS
3cf76d0fix(litellm): bound extraction fan-out (C369) -
SaaS
6a7b46cfix(router): per-round + MaxRounds-derived ceiling for retrieval loop (C368) -
SaaS
6188686C366: close contract as Blocked — extraction starvation blocker -
SaaS
580714eC366: raise extraction timeout to 300s floor / 60×sizeMB -
SaaS
fa6710aC366: raise extraction timeout — 90s→120s min, 6×→15× sizeMB -
SaaS
cced24eC366: fix extraction timeout — use transport-only client in extractCall -
SaaS
5b03a90docs: correct H101 — C366 landed via auto-checkpoint during session, not left uncommitted -
SaaS
359f518docs: H101 — workspace-modes design spine (Conversation/Lens/Outcomes) -
SaaS
3b273ddWIP: auto-checkpoint on session end 20260607-090239 -
SaaS
d00df93WIP: auto-checkpoint on session end 20260607-081129 -
SaaS
5e9c6b6WIP: auto-checkpoint on session end 20260607-075858 -
SaaS
4a05460WIP: auto-checkpoint on session end 20260607-073520 -
SaaS
d298e9bWIP: auto-checkpoint on session end 20260607-072242
— 5 commits
-
SaaS
fe11c53C367: unify retrieval loop — single call when no retrieval needed -
SaaS
f65b917docs: handover H100 — C363 verified; C366+C367 written; archive H099 -
Node
7be3f42feat(node): CorpusIndex corpus-enumeration RPC (C363) -
Node
b1ecbecWIP: auto-checkpoint on session end 20260606-101610 -
Proto
e57f65cfeat(proto): CorpusIndex RPC (C363)
— 4 commits
-
SaaS
46e22e0docs(saas): split retrieval-loop §8 — C363 node CorpusIndex, C366 saas flip -
SaaS
45d46cbdocs: handover H099 — C362 bounded retrieval loop verified; archive H098 -
SaaS
6653d7ffeat(saas): C362 bounded retrieval loop — tool-result plumbing, flag default off -
SaaS
c823987WIP: auto-checkpoint on session end 20260604-074411
— 1 commit
-
SaaS
22fb23cdocs: handover H098 — git binary cleanup (C364/C365); archive H097
— 12 commits
-
SaaS
bc1ee58chore(saas): stop tracking compiled varen-saas binary (C364) -
Node
d471587feat(node): ScopedSearch + FetchSource retrieval RPCs (C361) -
Proto
f034e4ffeat(proto): ScopedSearch + FetchSource RPCs (C361) -
SaaS
ec120f3docs: handover H097 — agentic retrieval loop design + C361 (Pending); archive H096 -
SaaS
68088b2docs: Active design — agentic retrieval loop (seed+expand), staging C361→C363 -
SaaS
36c9b23docs: H096 — C360 live-verified (txt ingest fixed on fresh node) -
SaaS
32805e5docs: update H096 — C360 executed (chunk token-budget fix, Deployed-Unverified) -
Node
7c852b6feat(node): bound embedding chunks to model input window (C360) -
SaaS
f832734docs: handover H096 — C359 executed + live-verified (embedding prefixes + retrieval floor) -
Node
f6a7a7bfeat(node): nomic embed task prefixes + retrieval-gate recalibration (C359) -
SaaS
5732222docs: handover H095 — embedding retrieval root cause + C359 nomic-prefix fix (Pending) -
SaaS
c5ec9a5chore: archive prior handover + completed contracts
— 23 commits
-
SaaS
7d7e403docs: handover H094 — C358 ambient card surface complete (arc Deployed-Unverified) -
Desktop
7ec4b0cfeat(desktop): four-category selectable ambient card surface (C358) -
SaaS
dd47dc8feat(saas): AppendTurn endpoint (C357) -
Node
3d2f50bfeat(node): AppendTurn splice RPC (C357) -
Proto
3c7bb3efeat(proto): AppendTurn RPC (C357) -
Node
4cbb154feat(node): unified four-category ambient pass (C356) -
SaaS
56d0c2bchore: archive prior handover + completed contracts -
SaaS
9a8371bdocs: handover H093 — ambient four-category redesign (C356/C357 authored Pending) -
SaaS
61b3afbchore: archive prior handover + completed contracts -
SaaS
6b6bac1docs: handover H092 — C355 cross-desktop sync close-out (C355 Complete; C354 verified) -
SaaS
2c86a40chore: archive prior handover (re-apply; dropped by C355 reset) -
SaaS
148a096feat(saas): push node_refresh on workspace create/delete (C355) -
SaaS
eac5503docs: handover H091 — cross-desktop session/workspace sync (C354 Complete; C355 Pending) -
Desktop
ba8d73bWIP: auto-checkpoint on session end 20260601-160429 -
Node
99e1ad0WIP: auto-checkpoint on session end 20260601-160429 -
SaaS
db49551chore: archive prior handover + completed contracts -
SaaS
a62dc4ddocs: handover H090 — observability trio verified (C351 Complete; C350/C352/C353 verified live) -
SaaS
9cd5614docs: handover H089 — node observability trio (C351–C353); archive H088 -
Node
e3c6fcafeat(node): expose Qdrant dashboard on 127.0.0.1:6333 (C353) -
Desktop
1018495feat(desktop): live node status in Debug tab + Knowledge vector count (C352) -
SaaS
161e9c9feat(saas): /api/nodes/{node}/status via GetNodeStatus dispatch (C351) -
Node
54a21c6feat(node): GetNodeStatus RPC handler + Qdrant Health; remove dead statusapi (C351) -
Proto
8fe3bfffeat(proto): GetNodeStatus RPC + NodeStatusResponse (C351)
— 9 commits
-
SaaS
180cddedocs: handover H088 — workspace names fixed (C349, C350); archive H087 -
Node
2588bddfix(node): persist derived workspace name to manifest so reconnect sync keeps it (C350) -
Node
0e3c144fix(node): accept UUID session files in ambient resolveSessionID (C349) -
SaaS
b7dbe36docs: handover H087 — node dispatch timeout investigation (C347, C348); archive H086 -
Node
b229dd8fix(node): bound context assembly to dispatch deadline — fast error instead of hang (C348) -
Node
ffce30bfix(node): route dispatch results/thinking by task ID — kill activeStream cross-delivery race (C347) -
SaaS
5a159aadocs: handover H086 — /updates WebSocket liveness (C346); archive H085 -
Desktop
1a92e63feat(desktop): /updates watchdog reconnect + token-decoupled socket; saas: label (C346) -
SaaS
823fb45feat(saas): WebSocket keepalive + dead-conn reaping on /updates hub (C346)
— 18 commits
-
SaaS
ec5a72cdocs: handover H085 — remove legacy desktop rename UI (C345); archive H084 -
Desktop
cb03dc3feat(desktop): remove legacy workspace-rename UI — ambient cycle owns the name (C345) -
SaaS
1d67c00docs: handover H084 — per-turn intent-derive cut (C344); archive H083 -
Node
319afeffeat(node): remove per-turn intent push + dead relay deriver plumbing (C344) -
SaaS
4c89032feat(saas): remove per-turn TriggerIntentDerive — ambient owns intent now (C344) -
SaaS
cc830abdocs: handover H083 — Stage 2 ambient intent design + C343 (node); archive H082 -
Node
19a19f7feat(node): ambient intent rederive + observed-flag scheduler (C343) -
SaaS
e9c077adocs: handover H082 — chat window event-channel singleton fix (C342); archive H081 -
Desktop
b98906ffix(desktop): event channel as module singleton — chat window crashed across WinBox roots (C342) -
Desktop
a13feeffeat(desktop): live workspace_rename — update navigator + open window title (C341) -
Node
8a13d7cfeat(node): bootstrap intent on every turn while placeholder (drop first-turn gate) (C341) -
SaaS
30f4a60feat(saas): placeholder-gated intent update + live workspace_rename push; drop raw-query seed (C341) -
SaaS
faddf2edocs: handover H081 — Stage 3 event channel built+live (C339/C340); C341 written; archive H080 -
Desktop
0140c4afeat(desktop): single shared /updates event channel; consumers ride envelope (C339) -
Node
685d032feat(node): general EventPusher → /api/node/events; annotation rides envelope (C339) -
SaaS
c7d8deafeat(saas): typed event envelope + /api/node/events; migrate node_refresh/understanding/annotation (C339) -
SaaS
6f9dd15docs: handover H080 — workspace naming architecture + staged design; archive H079 -
SaaS
a94cdb4docs: handover H079 — C330 verified, C319 held, archive sweep
— 14 commits
-
SaaS
c8905dcdocs: handover H078 — C337 extracted-text chunking fix deployed -
SaaS
8aa5f4ffix: strengthen image prompt full_text requirement (C337) -
Node
8d7f868fix: route extracted body events through slidingWindow (C337) -
SaaS
e6adfdechore: handover H077 — C336 mime-image fix shipped -
Node
23e6f12fix: pass source MIME to extraction ingest events (C336) -
SaaS
64293b8docs: H076 handover — C333+C334+C335 shipped; archive H075 -
Desktop
f703fb6fix: remove unsupported Office extensions from desktop upload allowlist (C335) -
SaaS
8cfa73cfix: prepend analyst results to history so reasoner sees attachments (C334) -
Node
c5cd10dfix: deterministic eventID from file mtime+size prevents Qdrant duplication on re-extract/re-tag (C333) -
SaaS
ef792f8docs: H075 handover — C331+C332 shipped; archive H074 -
Node
769ff58fix: C332 per-dispatch result channel + Qdrant cleanup on file delete -
Node
d4fcc80fix: C332 per-dispatch result channel + Qdrant cleanup on file delete -
SaaS
56ab11aFix relay task cross-delivery and Qdrant orphans on file deletion -
SaaS
d86be14fix: C331 reject empty answer when node stream ends without complete
— 33 commits
-
SaaS
4b08568fix: C329 remove old concurrent reaper + dispatcher cache health-check -
SaaS
1b5af5adocs: H074 handover — C328 shipped; archive H073 -
SaaS
00390e4fix: C328 heartbeat NotFound propagation + empty workspace guard -
Node
da482c9fix: C328 relay disconnect cleanup (nil conn even on Close error) -
SaaS
c7543b1docs: H073 handover — C326+C327 shipped, search-storm direct-fix, interaction-surface audit; archive H072 -
Node
0b267b3fix: search agent no longer auto-fires on Start (direct fix, no contract) -
Node
8e416d8feat: node heartbeat self-heal on 10 consecutive failures (C326) -
SaaS
44bb521fix: nodepoller onConnect re-arms when ListWorkspaces fails (C327) -
SaaS
a8c61a8docs: H072 handover — C322 + C320 shipped, C325 migration-023 hotfix; archive H071 -
SaaS
f3cf447fix: make migration 023 idempotent (C325, saas down → restored) -
Node
db03382feat: log filter plumbing + ingest path (C320) -
SaaS
2c84635feat: log classifier filter plumbing (C320) -
Node
7ae5bb9fix: clean Qdrant on workspace delete + surface file origin in Knowledge tab (C322) -
SaaS
59b9d03docs: H071 handover — saas-is-cache redo shipped (C324); archive H070 -
Desktop
f3ea913revert: orphan workspace UI block (C324, supersedes C323) -
Node
3079052feat: remove WorkspaceClaimer + claimWorkspaces (C324) -
SaaS
1c947fafeat: saas-is-cache node lifecycle (C324) -
SaaS
20c7f6cdocs: H070 handover — foundation attempts + saas-is-cache pivot; archive H069 -
Desktop
381701dfeat: surface orphan workspaces in navigator with delete-only affordance (C323) -
SaaS
9c4da29fix: scope nodes prune to empty rows + log silent re-registration fall-through (C321) -
SaaS
5b22de1docs: H069 handover — hybrid-search design + foundation issues; archive H068 -
Node
8c1835efeat: merge classifier filters into Qdrant must clauses (C318) -
SaaS
5ce4914feat: classifier filter intent + dispatch plumbing (C318) -
Proto
bb40274feat: FilterClause + InferenceTask.filters (C318) -
SaaS
b85c633docs: H068 handover — ingest bug fixes (C315/C316/C317); archive H067 -
SaaS
fdb1b60fix: route text uploads through extraction path (C317) -
Desktop
53e6a78fix: surface upload error detail + trim Office formats from picker (C316) -
SaaS
a744d8afix: pdfcpu nil-conf panic + clearer 415 message (C316) -
SaaS
32b0712fix: pdfcpu config-dir disable + drop Office upload support (C315) -
SaaS
dc8f9b6docs: H067 handover — multi-part ingest redesign (C312/C313/C314); archive H066 -
Desktop
ac9785ffeat: per-part extraction rendering and schema rename (C314) -
Node
42f8999feat: multi-part sidecar + identity + body Qdrant ingest (C313) -
SaaS
33daaf4feat: batched multi-part extraction with full_text and renamed schema (C312)
— 3 commits
-
SaaS
e60d8badocs: H066 handover — C308 deploy + UI tidy + image-prompt split; archive H065 -
SaaS
b3e4dabfeat: image-specific extractor prompt with MIME routing (C311) -
Desktop
5ba4babfeat: extracted-data as single inline list (C310)
— 42 commits
-
SaaS
7b8cbe0docs: H065 handover — extraction shape redesign (C306/C307/C308); archive H064 -
Desktop
115cb74feat: collapse fields + facts into unified extracted-data table (C308) -
Node
aa4eb94feat: extraction record mirrors new flat attribute shape (C308) -
SaaS
e7c9bebfeat: flat document_attributes + line_items extraction shape (C308) -
SaaS
408797efeat: reorder extractor prompt + log finish_reason + parse-error diagnostics (C307) -
Desktop
945504efeat: render extraction_notes + always-show fields block (C306) -
SaaS
ecf525cfeat: extraction_notes diagnostic + drop response_format + empty-result handling (C306) -
SaaS
584c68adocs: H064 handover — file ingest dispatch (C302/C303/C305); archive H063 -
SaaS
9e0efe1fix: force JSON response_format + defensive fence-strip in Extract (C305) -
Desktop
91876dffeat: render content_type, extraction_status, fields in file detail (C303) -
SaaS
1a4c07afeat: content_type catalogue + extraction record reshape + 32 MB cap + scaled timeout (C303) -
Node
e4bb700feat: accept extraction.Record shape with status + fields (C303) -
SaaS
f742163fix: plumb userID through multimodal Extract + Analyse (C302) -
SaaS
0eed02bdocs: H063 handover — file ingest content_type design; archive H062 -
SaaS
dfe2bd6docs: H062 handover — flatten workspace toolbar (C300 + C301); archive H061 -
Desktop
14ff6e2fix: hide Resources heading in flattened workspace toolbar (C301) -
Desktop
b95e689feat: flatten workspace toolbar — hoist Knowledge/Downloads/Uploads/Websearch (C300) -
SaaS
782f0d0docs: H061 handover — verify C297-C299; surface extraction defect + C300 -
SaaS
37ef055docs: H060 handover — dead-mechanism cleanup; archive H059 -
Desktop
d62e4defeat: delete orphan proto/varen bindings + FilesPanel + bufbuild dep (C299) -
Node
d0a8f25feat: remove SendArtifact client + handler + tests (C298) -
SaaS
b68659afeat: remove SendArtifact handler and S6 ArtifactCache subsystem (C298) -
Proto
df253d1feat: delete SendArtifact RPC and Artifact message (C298) -
SaaS
72cd5a2feat: remove note_topic_signal tool and TopicSignal plumbing (C297) -
SaaS
231c5b9docs: H059 handover — remove Templates from desktop UI; archive H058 -
Desktop
473cdadfeat: remove Templates tab from desktop UI (C296) -
SaaS
cbf1be5docs: H058 handover — per-node Settings window; archive H057 + H056-era contracts -
Desktop
b3aa08ffeat: tinted workspace cards + clickable sessions in node settings -
Desktop
bb31ac8feat: Workspaces / Sessions tab in node settings; drop in-workspace Sessions tab -
SaaS
e8a1eabfeat: saas POST /api/workspaces/{workspace}/keep — flip ephemeral T→F -
Desktop
9f40f90feat: add Workspaces / Sessions tab to node settings (placeholder) -
Desktop
8045b0dfeat: per-node Profile tab no longer requires a workspace -
SaaS
be1d383feat: saas /api/facts + /api/profile/process accept node_id routing -
Desktop
b493ad3feat: move 'Search engine' nav entry into node settings Search Engine tab -
Desktop
02f20aafeat: node settings window — Profile/Templates/Search Engine/Debug tabs -
Desktop
f1ffb2afeat: per-node settings cog button on expanded node row -
SaaS
2a9954edocs: H057 handover — deploy H056 + navigator UX refresh; archive H056 -
Desktop
d8944fefeat: rename navigator "Settings" button to "About / Help" -
Desktop
54c1af3feat: navigator — actions at top of each section, with consistent-width icons -
Desktop
f5c458ffeat: move "Upgrade available" inside expanded node, above "+ New workspace" -
Desktop
e7fcf08feat: replace node "↑" upgrade badge with "Upgrade available" text below row -
Desktop
717b509feat: navigator — visible "+ New workspace" / "+ New session" actions
— 53 commits
-
SaaS
a9abadfdocs: H056 handover — trainwreck recovery; archive H055; skeletonize 00_HANDOVER -
SaaS
34f8411chore: delete dead HandleFileRequest / FetchFile chain (C295) -
Node
4e63bebchore: delete dead RequestArtifact client + handler (C295) -
Proto
d19c437feat: delete RequestArtifact RPC + Artifact{Request,Response} (C295) -
Node
bf681ecchore: delete search.NewAgent + noopProvider dead code (C294) -
Desktop
e54932dchore: untrack desktop/dist_old/ and gitignore it (C293) -
Node
ebaaa30test: restore green test suite — testConfig WG creds, NewContextAssembler signature, stub VPNIP, delete dead tests -
SaaS
6e351e6test: restore green test suite — Classify framingBias, Completer mock, NewContextAssembler signature, delete dead tests -
Node
f595188fix: webfetch.Fetcher reads bgClient via getter (F5 Option B) -
Node
4385d60fix: loud-fail nil handlers and unknown origins in relay TaskService (F2) -
Desktop
47c87e5feat: remove transfer-approval scaffolding (F1 Option A) -
Node
fe16ccbfeat: remove transfer-approval scaffolding + proto regen (F1 Option A) -
SaaS
834d553feat: remove transfer-approval handler + proto regen (F1 Option A) -
Proto
37f22a0feat: delete transfer-approval scaffolding (Option A) -
SaaS
ab16948chore: also remove DOC-50.txt (companion to the deleted DOC-* corpus) -
SaaS
e9ffc3dchore: prune saas/docs/ to current handover only -
SaaS
8c59d3dchore: archive prior handover + completed contracts -
SaaS
b546630docs: 00_HANDOVER pointer → H055 -
SaaS
888a993docs: H055 handover — C288 manifest.yaml deprecation drafted (unvalidated); session drifted from UI ask to data-model cleanup -
SaaS
7b6d1a1chore: archive prior handover + completed contracts -
SaaS
890637edocs: H054 handover — C287 Settings window with About + Add Node tabs -
Desktop
5e7a518feat: Settings window with About + Add Node tabs; collapse bottom-actions row to Settings | Sign out (C287) -
SaaS
37a27afchore: archive prior handover + completed contracts -
SaaS
ce8b65edocs: H053 handover — C285 typecheck fix, C286 empty-thread copy, C284 favicon -
SaaS
1b64d1edocs: BRANDING.md — record favicon spec (C284) -
Desktop
54aeb67feat: add amber-V favicon to desktop SPA (C284) -
Desktop
2a9f0a7fix: generic empty-thread placeholder, drop workspace.intent interpolation (C286) -
Desktop
2ff91c7fix: WorkspaceWindow workspace.name → workspace.intent (C285) -
SaaS
a5451d1chore: archive prior handover + completed contracts (delete half) -
SaaS
dbd049bchore: archive prior handover + completed contracts -
SaaS
799cd9adocs: H052 handover — branding SVG removal + wordmark adoption (C283); C284/C285 drafted -
SaaS
1736192docs: add BRANDING.md — canonical wordmark + per-site palette audit (C283) -
Desktop
26be195fix: replace SVG logo with VAREN wordmark; drop varen-logo.svg (C283) -
SaaS
b291052chore: archive prior handover + completed contracts -
SaaS
a2e78acdocs: H051 session handover — install hardening + ephemeral PATCH fix -
SaaS
810ea67fix: stop clearing workspace.ephemeral on intent PATCH (C279) -
SaaS
389c2b9fix: always rewrite .env on install; tolerant .env source in varen-upgrade (C282) -
Desktop
e9e5fa7fix: quote nasEnv template literal (C281, C278 follow-up) -
Desktop
b363585fix: quote NAS .env block and limit node-name input to 24 chars (C278) -
SaaS
d79be16fix: quote .env values and clamp NODE_NAME to 24 chars (C278) -
SaaS
be643b7docs: H050 — C276/C277 slug URL end-to-end + ephemeral-flag regression -
Desktop
c14c027fix: wait for nodes to load before resolving pendingSearch (C277) -
Desktop
ea280bffix: search engine install URL uses node slug, not raw id (C276) -
SaaS
239f4f9docs: H049 — append late-session workspace-orphan diagnosis and recovery plan -
SaaS
018771echore: archive 38 handover files as AH* (C275) -
SaaS
e53a144docs: H049 — C274 complete, node slug stable external identifier -
Desktop
6c143bbfeat: resolve URL ?node= against node slug (C274) -
SaaS
0ea38cafeat: per-user node slug for stable external identifiers (C274) -
SaaS
3de8cc1WIP: auto-checkpoint on session end 20260525-080120 -
SaaS
a3eec43docs: H048 — workspace sync cascade; C270-C273 executed, C274 pending -
SaaS
e1105c4fix: nodepoller workspace upsert (name→intent) + aggressive timeout reaper (C273) -
Node
e574433feat: claim workspaces from offline predecessor nodes on startup (C272) -
SaaS
41ee833feat: workspace claim endpoint + offline node reaper (C272)
— 19 commits
-
Desktop
4c76d03feat: profile tab cleanup, knowledge tab display fields, ephemeral sweep fix (C271) -
Node
1bb3d06feat: propagate first session title to workspace label (C270) -
SaaS
fe08b84docs: H047 — workspace naming redesign, C270+C271 pending -
SaaS
d340caddocs: H046 — C269 complete, migration hotfix, next: migration state tracking + C270 -
SaaS
32e5f4ffix: idempotent migration 021, fix Makefile env owner — hotfix post-C269 -
SaaS
5d671a6WIP: auto-checkpoint on session end 20260524-130844 -
Desktop
8cc4056feat: navigator cosmetic UX — dot red when stale, workspace naming, modal search/sweep (C269) -
SaaS
219986afeat: drop 'New' from workspace default intent (C269) -
SaaS
3369b45docs: H045 — C268 complete, C269 pending -
Desktop
1057faffeat: navigator [+] button, shift+click configure, search engine install, URL entrypoint (C268) -
SaaS
85f5313docs: H044 — C267 complete, C268 pending -
Desktop
ecf82c1feat: workspace name → intent, auto-placeholder on create, ResourcesPanel sync (C267) -
SaaS
60b8027feat: rename workspace name → intent, auto-seed from first query (C267) -
SaaS
4cc468fdocs: H043 — C266 complete, C267–C268 pending -
Desktop
6d94825feat: ephemeral workspace flag + sweep UI (C266) -
SaaS
32fdc15feat: ephemeral workspaces — DB column, creation default, sweep API (C266) -
SaaS
a792aa5docs: H042 — C265 executed with bug, C266–C268 pending -
Desktop
393791cfeat: swap RendererStub to CardsRenderer + ArticleRenderer (C265) -
SaaS
a80f45edocs: H041 — quick chat + workspace intent designed, C265–C268 written
— 14 commits
-
SaaS
64555b9docs: H040 — renderer pipeline verified, C264 complete -
Desktop
be558a6feat: renderer stubs for C262/C263 pipeline verification (C264) -
SaaS
4131e5bdocs: H039 — C263 complete, renderer pipeline deployed -
Desktop
d226381feat: Cards + Article renderers, sticky toggle, remove framing/mode selectors (C263) -
SaaS
180d7a3docs: H038 — C262 complete, C263 pending -
SaaS
86fe65bfeat: classifier content_signal → AnswerFormat + DesktopRenderer pipeline (C262) -
SaaS
6e6583cdocs: H037 — classifier-driven rendering; C262+C263 written -
SaaS
44ebbbfdocs: H036 — framing architecture fix; C261 complete -
SaaS
f8ad729feat: framing four-field architecture — ClassifierBias, AnswerBias, AnswerFormat, DesktopRenderer (C261) -
SaaS
792fd31docs: H035 — framing OutputFormat fix; C258/C259 complete -
SaaS
9d2c0aafix: framing OutputFormat replaces advisor format contract (C258) -
SaaS
972b326docs: H034 — note framing pipeline investigation needed -
SaaS
34287bbdocs: handover — H034 complete; deploy all (C257) -
SaaS
7d512e2docs: handover — H033 complete; C256 framing system execution
— 40 commits
-
Desktop
33c5eeefeat: replace pinnedAdvisors with Framing selector; delete modes.ts (C256) -
SaaS
bd1f4bdfeat: introduce FramingDef; replace pin/tools with 7-framing system (C256) -
SaaS
6766006docs: handover — H032 complete; C256 framing system design -
SaaS
810c5afdocs: handover — H031 complete; docs factual claim checking -
SaaS
fa18558docs: handover — H030 complete; C255 desktop Docs/Help nav -
Desktop
1f3c9d9feat: replace Help button with Docs link; Help placeholder for C256 (C255) -
SaaS
12fa40edocs: handover — H029 complete; C254 docs.varen.au live -
SaaS
fe826b2docs: handover — H028 complete; C254 docs site + C255 desktop nav written -
SaaS
1fad151docs: handover — H027 complete; C252 LiteLLM deploy + C253 text-native ingest -
Node
8b8756dfeat: embed text-native files on upload (C253) -
SaaS
7879704docs: handover — H026 complete; ambient research + insight status review -
SaaS
5c3a0c9docs: handover — H025 complete; C251 profile routing fix -
Desktop
4b48482fix: pass workspace_id in profile API calls (C251) -
SaaS
444e921fix: route profile API calls via workspace node (C251) -
SaaS
b3fecf7docs: handover — H024 complete; C249 profile tab + C250 intent derivation -
Desktop
876be4efeat: profile tab reorder + single save (C249) -
Node
d9608f8feat: workspace intent from session summaries + recent Qdrant (C250) -
SaaS
4dd22addocs: handover — H023 complete; C246-C248 verified -
SaaS
eb735e4docs: handover — H022 complete; C246-C248 title sync -
Desktop
b455148feat: sync navigator session preview via custom event (C248) -
SaaS
78f13e8docs: handover — H021 complete; C246 rename + C247 title fix -
Desktop
d49755bfix: WinBox title includes session description; rename updates title correctly (C247) -
SaaS
d09d232docs: handover — H020 complete; C246 workspace rename and dynamic title -
Desktop
babed28feat: workspace rename in navigator and dynamic document.title (C246) -
SaaS
a58e652docs: handover — H019 complete; C245 Add Node side-by-side layout -
Desktop
f957e54feat: side-by-side script/manual layout on Add Node management sections (C245) -
SaaS
89d8c1cdocs: handover — H018 complete; C244 publish version+sha256 files -
Node
2fb3641feat: write version and sha256 files on docker-publish (C244) -
SaaS
27c3160docs: handover — H017 complete; C243 node outdated indicator -
Desktop
69d6a67feat: show update badge on node rows when version behind latest (C243) -
SaaS
e7fe95edocs: handover — H016 complete; C242 varen-upgrade self-sufficient -
SaaS
2222a13feat: varen-upgrade re-runs full installer from .env (C242) -
SaaS
d1e0dd5docs: handover — H015 complete; C241 idempotent node installer -
SaaS
d7ce3e3feat: idempotent node installer — re-run updates helpers in-place (C241) -
SaaS
2ccbfe5docs: handover — H014 complete; C240 node-disconnect fix -
SaaS
04d8913fix: mark node offline on WG disconnect instead of deleting (C240) -
SaaS
dd85f69docs: handover — H013 complete; C239 Add Node management UI expansion -
Desktop
2272f8afeat: expand Add Node management sections with per-operation scripts (C239) -
SaaS
7e2f7e6feat: add varen-uninstall helper to node installer scripts (C239) -
SaaS
232936afeat: REINSTALL_HELPERS mode for node installer scripts (C238)
— 16 commits
-
SaaS
3f2452fdocs: handover — H012 complete; C237 shopping link fix -
SaaS
dd56b25fix: include URL in search result context sent to model (C237) -
SaaS
02237fbfix: pass full query to inference task for single-question turns (C236) -
SaaS
c8b8ed3C234: create H011 handover; restructure 00_HANDOVER to pointer + archive -
SaaS
a25ccf7C235: add Status lines to all DOC files — stale/active/implemented classifications -
SaaS
cced0ccdocs: handover — session 10 complete; C226-C232 table added, stale watchdog refs cleaned -
SaaS
2754c3cdocs: handover — C232 complete; watchdog fully deprecated, /downloads/ cleaned -
Node
3cfeb36chore: remove watchdog source and Makefile targets; repurpose deploy as build-linux (C232) -
Node
a2a89b9WIP: auto-checkpoint on session end 20260521-072910 -
SaaS
5c1e96ddocs: handover — clean up stale setup.sh reference; update install procedure for Docker -
SaaS
d20473bdocs: handover — C231 complete; webfetch OLLAMA_URL wired, Knowledge facts now populate -
Node
b39fc0cfix: wire OLLAMA_URL into webfetch embedder via SetOllamaURL (C231) -
SaaS
4b09ccadocs: handover — C229+C230 complete; nodes deleted from DB on disconnect -
SaaS
64c28dffix: delete node record on disconnect instead of marking offline (C230) -
SaaS
09f1561fix: filter disconnected nodes from /api/nodes — offline nodes disappear from Navigator (C229) -
SaaS
57b2403docs: handover — C228 complete; caddy cache-control, warnings cleared, fmt applied
— 51 commits
-
SaaS
0446cf7docs: handover — C227 complete; node_id persist fix, dead-node reaping, startup log clarity -
SaaS
060ef4bfix: nodeState respects online=false — nodes deregister immediately in Navigator (C227) -
Node
88dd4a2fix: persist node_id from RegistrationAck into cfg; add name to startup log (C227) -
SaaS
9970e53docs: handover — C226 complete; docker-stack merged to master across node, saas, desktop -
Desktop
feac304Merge docker-stack: Docker stack initiative (C219–C225) (C226) -
SaaS
9f17fcaMerge docker-stack: Docker stack initiative (C206–C225) + legacy script removal (C226) -
SaaS
43156f1chore: remove legacy watchdog installer scripts (C226) -
Node
f79cb07Merge docker-stack: Docker stack initiative (C206–C225) + gitignore fix (C226) -
Node
a3c1981chore: untrack varen-node build artifact; add to .gitignore (C226) -
SaaS
afcd609docs: handover — docker-stack initiative complete; remaining work scoped -
SaaS
d677437docs: handover — C225 popout window replaces @media print -
Desktop
c3dedc4feat: Add Node uses popout window for print (replaces @media print) (C225) -
SaaS
0cad654docs: handover — C224 fixes print offset + per-platform uninstall -
Desktop
d69ad32fix: print uses full page width; add Uninstall per platform (C224) -
SaaS
fd16e14docs: handover — C223 fixes print + button styling -
Desktop
e31f173fix: Add Node primary buttons + correct print scope (C223) -
SaaS
c6428a4docs: handover — C222 fixes openAddNode scope bug -
Desktop
94631f5fix: pass openAddNode to Navigator as onOpenAddNode prop (C222) -
SaaS
223a8c5docs: handover — C221 complete; docker-stack initiative ready for final validation -
Desktop
2a3dd90feat: Add Node page (WinBox window, three platforms, printable) (C221) -
SaaS
13234fbdocs: handover — C220 complete; env-var install + helpers live -
Desktop
6a0a03afeat: AddNodeModal produces env-var install commands (C220) -
SaaS
2961ac6feat: env-var install pattern + helper scripts (C220) -
SaaS
a491574docs: handover — C219 complete; docker-stack initiative ready for testing -
Desktop
8ecb8e3feat: Add Node modal — collects license + node name, generates install command (C219) -
SaaS
4e0ae0edocs: handover — C218 complete; both OS install scripts live -
SaaS
7ffd0fffeat: Windows PowerShell Docker-stack install script (C218) -
SaaS
d218f8adocs: handover — C217 complete; Linux install path testable -
SaaS
0238dc3feat: Linux Docker-stack install script (C217) -
SaaS
803c359docs: handover — log empty node_id + name-in-startup-log follow-ups -
SaaS
572ed3fdocs: handover — log Caddy /downloads cache follow-up -
SaaS
7ec1333docs: handover — C216 complete; NODE_NAME now reaches container -
Node
671f83dfix: compose passes NODE_NAME through to varen-node (C216) -
SaaS
dacd49edocs: handover — C215 complete; NODE_NAME env supported -
Node
7011095feat: separate node display name from profile name; NODE_NAME env (C215) -
SaaS
0537beadocs: handover — C214 complete; multi-arch fix for amd64 tenants -
Node
8abda4bfeat: multi-arch image build (linux/amd64+arm64) via buildx (C214) -
SaaS
794822ddocs: handover — C213 complete; tenant compose live-served -
Node
c56e0bbfeat: tenant compose template — registry image + model pre-pull init (C213) -
SaaS
4fe41bfdocs: handover — C212 complete; self-hosted registry live -
Node
45935b9feat: add docker-publish target for self-hosted registry (C212) -
SaaS
64c2c7cdocs: handover — C211 complete; caddy now a managed component -
SaaS
aabc15ddocs: handover — session 9 (node positioning); C210 complete; three deployment tiers established -
Node
29037f4refactor: remove Qdrant Docker management — QDRANT_URL now required (C207) -
SaaS
578b189docs: handover — session 9 (node positioning); C210 complete; three deployment tiers established -
SaaS
09507fedocs: handover — C206 complete; Opus review notes captured -
Node
b011976feat: add Docker Compose stack — Dockerfile, compose, .env.example (C206) -
Node
36019a8WIP: auto-checkpoint on session end 20260520-084419 -
SaaS
e02fae4docs: handover — session 9 continued; Docker stack initiative, C206-C207 written -
SaaS
7095492docs: handover — session 9 end; C204 dispatched and complete -
SaaS
aa9e192feat: expand advisor library — 18 advisors + weather tool (C204)
— 62 commits
-
SaaS
2c0b785docs: handover — session 8 end; advisor expansion contracted (C204 pending), varen.au marketing site live (C205) -
SaaS
0d97feadocs: handover — session 7 end; installer operational, domain renamed to varen.tech -
Node
6800f6dchore: rename domain varen.maltby.id.au → varen.tech (C203) -
SaaS
9fbd185chore: rename domain varen.maltby.id.au → varen.tech (C203) -
SaaS
df44c78docs: handover — session 6 end; installer operational, known issues deferred -
SaaS
b674150fix: start Docker and Ollama before watchdog in WSL (C202) -
SaaS
63e5fc9feat: Windows autostart + background launch; skip blocking prompts in WSL (C201) -
SaaS
1aaccacfix: silent dep auto-install, Docker WSL via apt, Ollama zstd (C200) -
SaaS
9f05beefix: skip Ubuntu user setup, run installer as root (C199) -
SaaS
b0b66d6fix: ps1 end-to-end novice flow — no dead-end, plain language (C198) -
SaaS
9129c95fix: ASCII art (pure ASCII), ps1 window-close fix (C197) -
SaaS
9b1c8a8fix: installer banner (new Varen art) and WSL crash fix (C196) -
SaaS
59e6dc3docs: handover — session 5 end; installer still broken, flagged for next session -
SaaS
b0badd8docs: handover — C195 complete; WSL bootstrap + full dep auto-install -
SaaS
f76ec67feat: PS1 WSL bootstrapper; install.sh auto-installs all deps (C195) -
SaaS
391391bdocs: handover — C194 complete; all installers fixed and deployed -
SaaS
0771085fix: installer tty prompts, banner, deps check, install/uninstall menu (C194) -
SaaS
9302f17fix: reopen stdin from /dev/tty so prompts work under curl | sh (C191) -
SaaS
17d2382fix: uninstall removes bin/ only — preserve workspace data (C191) -
SaaS
1ead698docs: handover — C191 complete; all three contracts deployed -
SaaS
b147b90feat: add end-user install.sh and install.ps1 installers (C191) -
SaaS
8f21b90docs: handover — C192 + C193 complete and deployed -
Desktop
3f36265feat: toolbar tabs left; remove Understanding tab (C192) -
SaaS
5958643docs: handover — C192 reverted; C193 deployed -
Desktop
d3f424fRevert "feat: nav tabs left + FlowChart left; remove Understanding (C192)" -
SaaS
bf28472docs: handover — C192+C193 deployed; C191 pending -
Desktop
c0e0852feat: nav tabs left + FlowChart left; remove Understanding (C192) -
Node
6e3a059fix: session summary prompt → short title phrase (C193) -
SaaS
cff72e4docs: handover — session end; C186–C190 deployed; open follow-ups recorded -
Node
ade357arefactor(node): thread context.Context through QdrantClient interface (C190) -
SaaS
1f67d5esecurity: remove legacy /api/files/ handler — dead code, auth gap (C189) -
Desktop
5982d77feat(desktop): source URL + referrer links in file properties panel (C188) -
Node
9ecc4e4feat(node): write facts to research sidecar after extraction (C188) -
Desktop
c7dac6efix(desktop): resources panel tab-row scrollbar + reorder tabs (C187) -
Desktop
c860529fix(desktop): sanitise marked output with DOMPurify (C186 — XSS [High]) -
SaaS
9fab61fdocs: handover — session end; C178–C185 deployed; open follow-ups recorded -
SaaS
4766d88docs: update handover — C178–C185 complete; DOC-52 nav tree design session -
SaaS
06bfd07docs: add DOC-52 navigation tree design brief -
Desktop
c8c82f2feat: send attachment names with turn for inline vision analysis (C185) -
Node
4d754d3feat: UpdateAnalystSidecar handler (C185) -
Node
50d98ebchore: regenerate proto gen for C185 -
SaaS
8e6e29cfeat: analyst call in inference handler; UpdateAnalystSidecar dispatcher (C185) -
SaaS
f033492chore: regenerate proto gen for C185 -
Proto
688a287feat: attachment_names on turn; UpdateAnalystSidecar RPC (C185) -
SaaS
294c31efeat: ephemeral query param on file upload endpoint (C184) -
Desktop
6270eb1feat: paste and drag-and-drop ephemeral file upload in chat input (C184) -
Desktop
2d91feefeat: resources panel two-column redesign with properties panel, tags, multiselect (C183) -
SaaS
de98e39feat: PatchFileSidecar + TidyEphemeral endpoints; extended FileEntry via dispatcher (C182) -
Node
78d794cfeat: extend ListFiles with full sidecar data; add PatchFileSidecar + TidyEphemeral handlers (C182) -
SaaS
b64f584chore: regenerate proto gen for C182 -
Node
08e4046chore: regenerate proto gen for C182 -
Proto
9388753feat: extend FileEntry; add PatchFileSidecar + TidyEphemeral RPCs (C182) -
SaaS
1b35772fix: Extract method endpoint path /chat/completions → /v1/chat/completions (C181) -
SaaS
169d14dfeat: multimodal Extract on litellm.Client; async extraction pipeline on upload (C181) -
SaaS
9f8278dchore: regenerate proto gen for C181 -
Node
12ff203feat: UpdateFileSidecar handler + ephemeral flag in UploadFile (C181) -
Node
f74707bchore: regenerate proto gen for C181 -
Proto
10d119cfeat: UpdateFileSidecar RPC; ephemeral field on UploadFileRequest (C181) -
Node
9a68985feat: extend sidecar schema; fix MIME-based binary detection; generate ref_id on upload (C180) -
Desktop
b76aeebfeat: restrict file input to accepted upload formats (C179) -
SaaS
d9c1489feat: file upload format allowlist — reject unknown extensions (C179) -
SaaS
3bcaeb0docs: handover — session end; C178–C185 file handling contracts written (design session)
— 30 commits
-
SaaS
edb021bdocs: handover — session end; C166/C167/C176/C177 executed -
Desktop
9e92d73fix: remove obsolete Settings section from help panel (C177) -
Desktop
a446199fix: help panel style — ws-tab-btn TOC, strip bespoke typography CSS (C176) -
SaaS
dd742f8docs: security review report (C166) -
SaaS
366657afix: security review findings (C166) -
Desktop
0c8cd16feat: Help panel — comprehensive user guide in navigator (C167) -
SaaS
0efcad5docs: handover — session end; C160–C175 executed, C166/C167 pending -
SaaS
5ca9195feat: inference markup 4% + track saas.env in source tree + deploy copy (C175) -
Desktop
e8fb86afix: knowledge tab jump links styled as origin badges -
Desktop
313a1aafix: resources drawer — tab scrollbar, one-line facts, jump link contrast -
SaaS
5629d51feat: always trigger intent derivation after every successful inference turn (C173) -
Desktop
c4fc661fix: use apiFetch for workspace intent fetch in WorkspaceWindow (C171) -
SaaS
3064082feat: GET /api/workspaces/{workspace}/intent — derived intent endpoint (C171) -
SaaS
386003bfeat: intent divergence check in classifier + divergence_warning SSE event -
Desktop
54d1f39feat: intent divergence warning panel integrated into classification -
Node
b2628b6feat: session summary — LLM description replaces last-message preview -
Node
e9ab887feat: dedup memory (stated) facts — newer replaces semantically similar older -
Desktop
7bdd45efix: knowledge tab scrollbar — ws-facts-list flex+overflow, ws-drawer-generic flex in resources -
Desktop
803a0a2feat: knowledge tab grouped by origin with jump links -
Node
47f8c10feat: profile reprocess clears and replaces existing facts, broadens extraction -
Desktop
ded85f6feat: immediate 401 logout via apiFetch + visibilitychange ping on tab resume -
Desktop
01fa674feat: mute billing nav block + auto-refresh account balance on turn and poll -
SaaS
0c3b916docs: handover — session end; C160–C169 contracts written -
SaaS
274baa3docs: handover — session end; C160–C164, C166–C169 contracts written -
SaaS
02f81dadocs: handover — session end; C160–C164, C166–C167 contracts written -
SaaS
c7d81cfdocs: handover — session end; C152–C159 complete (billing infrastructure) -
SaaS
f8fd371feat: store remote_model in usage_events (migration 019) -
SaaS
a228c09fix: carry UserID into enriched InferenceTask for billing attribution -
SaaS
6deaaf3refactor: route all LiteLLM calls through shared client — remove classifier raw HTTP client -
SaaS
8244dd1fix: pass userID through classifier to LiteLLM user field for billing attribution
— 33 commits
-
SaaS
6f53b9dfix: litellm callback uses end_user and top-level token fields (StandardLoggingPayload) -
SaaS
a4b86e2feat: varen-admin billing commands, version, saas.env config (C158) -
Desktop
dafa81efeat: live account balance and ledger data in nav and account window (C157) -
SaaS
ef6adfefeat: account balance, ledger, and payment recording endpoints (C156) -
SaaS
f420b52feat: subscription auto-charge and credit access gate (C155) -
SaaS
a047fd6feat: daily FX rate pull from Frankfurter API (C154) -
Desktop
5426bb9fix: account window sizes to canvas, responds to nav resize -
Desktop
908fca7fix: account window uses ws-window chrome; nav-account uses design tokens -
SaaS
67dabf7feat: billing infrastructure — migrations, LiteLLM user field, usage callback (C153) -
Desktop
e48fd15feat: account nav block and static ledger window (C152) -
SaaS
88c95b2docs: handover — session end; C142-C151 complete; session map noted for future -
SaaS
e89255bdocs: handover — C151 complete (profile statement Qdrant-backed, localStorage removed) -
Desktop
0064c66feat(desktop): load profile statement from _node Qdrant; remove localStorage (C151) -
Node
3d996d2feat(node): store profile statement as slot=profile_statement in _node Qdrant (C151) -
SaaS
c91743adocs: handover — session end; C142-C150 complete (profile system functional) -
Desktop
cc944effix(desktop): persist profile statement in localStorage (C150) -
SaaS
dc4a064docs: handover — C149 complete (fix profile origin in listNodeFacts) -
Node
23be1d1fix(node): add origin=profile to node-level ListFacts/UpdateFact/DeleteFact (C149) -
SaaS
1538035docs: handover — session end; C142-C148 complete -
Desktop
6f752fafix(desktop): Profile tab layout/CSS + workspace rename propagation (C148) -
SaaS
8b059d7feat(saas): PATCH /api/workspaces/{ws}/name — update name in DB (C148) -
SaaS
797ee70docs: handover — session end; C146+C147 complete (profile statement API + Profile tab redesign) -
Desktop
8e8b2b9feat(desktop): Profile tab redesign + workspace creation flow — C147 -
SaaS
c2e8058feat(saas): add /api/profile/process endpoint (C146) -
Node
c30dcdcfeat(node): remove NodeAboutMeSlots; add ProcessProfileStatement (C146) -
Node
d5e9613chore(node): regen proto for ProcessProfileStatement (C146) -
SaaS
b5fa071chore(saas): regen proto for ProcessProfileStatement (C146) -
Proto
80b00a5feat(proto): add ProcessProfileStatement RPC (C146) -
SaaS
ce2d8dbdocs: handover — session end; C142-C145 complete (Resources/Knowledge/Profile restructure) -
Desktop
2e989fcfeat(desktop): Resources/Knowledge/Profile restructure — C145 -
Desktop
de4c8b6feat(desktop): remove Research drawer + JSONL endpoint dependency (C144) -
SaaS
929cabbfeat(saas): remove /research endpoint and ListResearchArtifacts (C144) -
Node
c921660feat(node): enrich sidecar title/excerpt/query; remove research JSONL (C144)
— 35 commits
-
SaaS
647c561docs: handover — session end; DOC-24 Phase 3 complete (C142+C143), Files drawer deployed-unverified -
Desktop
161333afeat(desktop): Files drawer — folder tabs, list, delete, upload (DOC-24 Phase 3 — C143) -
SaaS
eb06c7cfeat(saas): Files API — NodeDispatcher + HTTP endpoints (DOC-24 Phase 3 — C142) -
Node
a3cbca3feat(node): Files API handlers — list, delete, upload, serve (DOC-24 Phase 3 — C142) -
Node
7262350chore(node): regen proto for DOC-24 Phase 3 Files API (C142) -
SaaS
e6bcd04chore(saas): regen proto for DOC-24 Phase 3 Files API (C142) -
Proto
ac8eb46feat(proto): add Files API messages + RPCs (DOC-24 Phase 3 — C142) -
SaaS
0f3b0bbdocs: handover — session end; ambient search confirmed working, C141 complete -
Node
34d0dbcfix(node): lower T1 search warmth gate to 0.2 (C141) -
SaaS
0ce2c4ddocs: handover — session end; DOC-24 pipeline unblocked, next: Phase 3 files drawer -
SaaS
43d8acbdocs: handover — C138+C139+C140 complete (DOC-24 unblock + ambient search redesign) -
Node
8dfdc8bfeat(node): ambient search per-pass query generation (C140) -
Node
3ebb604refactor(node): Qdrant-only intent — remove intent.yaml (C139) -
Node
d0a5c2dfix(node): default saasSearchEndpoint to saasHTTPEndpoint (C138) -
SaaS
2594e81docs: handover — session end; two DOC-24 blockers recorded (search endpoint + intent) -
SaaS
757e8e1docs: handover — C136+C137 complete (diagnostic logging + search agent in Daily template) -
Node
9ebb9cefeat(node): add search agent to Daily template + boot migration (C137) -
SaaS
6078dd8docs: handover — C135+C136 complete (supervisor wiring + diagnostic logging) -
Node
42f6c25chore(node): diagnostic logging for search→fetch pipeline (C136) -
SaaS
0878ea8docs: handover — C134+C135 complete (defaultOrigins fix + supervisor→FetchSink wiring) -
Node
17aa239fix(node): wire supervisor.Emit → researchSink for search agent events (C135) -
Node
c8252d8fix(node): add research to defaultOrigins so Facts tab surfaces extracted facts (C134) -
SaaS
4ab0beedocs: handover — C133 complete (DOC-24 Phase 2 — extraction pipeline) -
Node
533e149feat(node): DOC-24 Phase 2 — LLM extraction pipeline for webfetch (C133) -
SaaS
133366bdocs: handover — C132 complete (DOC-24 Phase 1b — webfetch disk persistence) -
Node
e1ae035feat(node): DOC-24 Phase 1b — webfetch disk persistence to files/Research/ (C132) -
SaaS
a91236edocs: handover — C131 complete (fix node deploy sidecar ownership) -
Node
abcb75bchore(node): chmod a+rw deploy sidecars so non-root deploys can overwrite (C131) -
SaaS
491031bdocs: handover — C130 complete (DOC-24 Phase 1a — workspace files/ layout) -
Node
886c9dbfeat(node): DOC-24 Phase 1a — workspace files/ folder layout (C130) -
SaaS
9fe704bdocs: handover — C128 + C129 complete (C124 deployed; C122/C123/C124 verified) -
SaaS
9180e9dfix(saas): handleDeleteFact — add ErrFactReadOnly → 403 (C122 omission, C129) -
SaaS
b298dbbdocs: handover — C125 + C126 + C127 complete (saas WIP cleanup + root cause fix) -
Node
81e94fcchore(node): gitignore bin/; stop tracking bin/varen-node and bin/varen-watchdog-linux-amd64 -
SaaS
0845eaachore(saas): gitignore bin/; stop tracking bin/varen-saas
— 31 commits
-
SaaS
89ad70ffeat(saas): GET/PATCH/DELETE /api/facts (node-level) — DOC-23 Phase E (C124) -
Node
b66e01cfeat(node): _node collection + about_me + context_note (read/write + dual-write) — DOC-23 Phase E (C124) -
SaaS
9f59806docs: handover — C121/C121a/C122/C123 Complete; C124 Pending -
Desktop
d54ec48feat(desktop): render profile + derived facts in panel — DOC-23 Phase C+D (C123) -
Node
e0c7651feat(node): workspace profile+derived seeded into Qdrant; dual-write on rename/intent — DOC-23 Phase C+D (C123) -
SaaS
3676001feat(saas): pass slot through ListFacts; correct DOC-23 §4 for derived-intent slot — Phase C+D (C123) -
Proto
5293c53feat(proto): add slot + scope on Fact, slot filter on ListFacts — DOC-23 Phase C+D (C123) -
Desktop
2b88571feat(desktop): inline edit + delete on Facts panel — DOC-23 Phase B (C122) -
SaaS
564ee67feat(saas): PATCH/DELETE /api/workspaces/{ws}/facts — DOC-23 Phase B (C122) -
Node
b585ce5feat(node): UpdateFact + DeleteFact + per-origin policy — DOC-23 Phase B (C122) -
Proto
8a0d506feat(proto): add UpdateFact + DeleteFact RPCs — DOC-23 Phase B (C122) -
Node
53bc4e0fix(node): persist chunk text in payload["content"] — C121a remediation -
Desktop
dfa5682feat(desktop): minimal Facts panel — DOC-23 Phase A (C121) -
Node
711f3a5feat(node): ListFacts RPC + Qdrant scroll — DOC-23 Phase A (C121) -
SaaS
bb003dafeat(saas): GET /api/workspaces/{ws}/facts — DOC-23 Phase A read (C121) -
Proto
91c6d6efeat(proto): add ListFacts RPC for DOC-23 Phase A (C121) -
SaaS
e5ebf04docs: handover — C119 + C120 complete; DOC-23 v2 locked, DOC-24 created -
SaaS
975ed84docs: add DOC-24 — files architecture (proposed) -
SaaS
327bf95docs: rewrite DOC-23 v2 — unified facts architecture (locked) -
SaaS
65dba1cdocs: handover — DOC-23 review complete; C119 + C120 pending -
SaaS
b14adf8docs: handover — 2026-05-15 late evening (C115 verified, webfetch design gap + DOC-23 captures) -
SaaS
2eaae48docs: handover — 2026-05-15 evening session (C114–C118 all complete) -
SaaS
c914c37docs: add DOC-23 — unified facts architecture (proposed) -
Node
4e24a2dfeat(node): persist remember tags in Qdrant payload (C116) -
SaaS
6de0f67feat(saas): force_web_search tool + remember tags (C116) -
Proto
b9beefefeat(proto): add tags field to MemoryRecord (C116) -
Desktop
3acd6bafix(research): hide date for records with non-positive fetched_at (C115) -
Node
3a977d5fix(research): set OccurredAt/IngestedAt on SaaS-relayed search hits (C115) -
Desktop
877e5cafeat(desktop): handle 200/token response from auth/ping (C114) -
SaaS
847b350feat(saas): refresh-on-ping sliding access-token expiry (C114) -
SaaS
d12df7cdocs: handover — 2026-05-15 contracting session (C114, C115, C116, C117)
— 6 commits
-
SaaS
8edf0b5docs: handover — C112 + C113 complete (2026-05-14 morning) -
Desktop
34591d4feat(desktop): auth keepalive bounces to login on failure (C113) -
SaaS
59f30e8feat(saas): /api/auth/ping endpoint for desktop keepalive (C113) -
Desktop
3f93084fix(desktop): align version string with C96 single-token format (C112) -
SaaS
1b55beedocs: handover — refresh contracts repo HEAD reference (f44d848) -
SaaS
55b2720docs: handover — C112 + C113 pending; document C114 + C115 for future
— 30 commits
-
SaaS
3b63afddocs: handover update — C106 complete, C105 on hold (2026-05-13 evening) -
Node
c7caf7erefactor(node): delete clipboard/syslog/telegram agent packages (C106) -
Node
5268ee3WIP: auto-checkpoint on session end 20260513-212549 -
SaaS
05c368cdocs: handover update — C104 complete (2026-05-13 evening) -
Node
189a45ffeat(node): analytical agent + meta-prompt + insights.yaml (C104) -
SaaS
7610552docs: handover update — C100-C103, C108-C111 complete (2026-05-13 evening) -
SaaS
cb4172ffix(saas): /api/version reads node sidecars per request (C111) -
Node
32fcf73feat(node): TriggerIntentDerive handler + search agent warmth gate (C103) -
SaaS
887fce3feat(saas): note_topic_signal tool + intent-derive dispatch + provisioning template (C103) -
Proto
53e27e1feat(proto): add TriggerIntentDerive RPC to TaskService (C103) -
Node
4da1c81feat(node): StorePersonalNote handler + ContextNotes context injection (C102) -
SaaS
192f0d3feat(saas): remember tool scope field + node-fact routing (C102) -
Proto
2936974feat(proto): add StorePersonalNote RPC to TaskService (C102) -
Proto
f0be89efeat(proto): AnnotationRecord + GetAnnotations/UpdateAnnotation RPCs (C101) -
Desktop
437ca20feat(desktop): AnnotationBreak component + session annotation rendering (C101) -
SaaS
da6516efeat(saas): annotation push/get/update endpoints + hub delivery (C101) -
Node
40cd276feat(node): AnnotationRecord type + JSONL helpers (C101) -
SaaS
6784885fix(saas): lift http.Server WriteTimeout 60s → 300s for SSE inference (C110) -
Desktop
a8de849fix(desktop): trunk-level edit produces a revision sibling, not a new turn (C109) -
SaaS
f695019fix(litellm): ctx-aware Stream + diagnostic logging (C108) -
SaaS
d140ea1docs: edit-resend bug investigation handover (pre-C108/C109) -
Node
3785667feat(node): BackgroundInferenceClient + IntentDeriver relay wiring (C100) -
SaaS
4713ba2feat(saas): POST /api/inference/background endpoint for node ambient inference (C100) -
SaaS
9451841docs: handover — C107 complete + verified; edit-resend bug logged -
Desktop
9eb042aC107: drop json+summarise pickers; rename skill→pinnedAdvisor -
SaaS
d565dc8C107: collapse skills into advisors; pinned-primary routing -
SaaS
58ef989docs: handover — C100-C106 contracts written; update next actions -
SaaS
7830096docs: handover — C99 complete; C100 is next -
SaaS
7f64f2adocs: design consolidation — warming stages, annotations, file agent, N19, single-manifest principle (C99) -
SaaS
da23ad0docs: handover — design session 2026-05-13; C99 pending
— 23 commits
-
SaaS
bfbd1a8docs: handover — C98 complete; setup.sh one-liner installer -
SaaS
1b78dcafeat(saas): add setup.sh one-liner installer for varen-watchdog (C98) -
SaaS
6b7037cdocs: handover — C95+C96+C14+C97 complete; watchdog supervisor + version scheme + prod hostname; session close -
SaaS
180838bfeat(saas): PUBLIC_HOSTNAME env var threads through CreateRemote; drop dev hostname (C97) -
Node
413b52ffix(node): watchdog falls back to Caddy-fronted base URL (no :9000); add publish-watchdog target (C97) -
Node
f3e4bb0feat(node): varen-watchdog supervisor — download, run, monitor, SHA-verified update via SIGTERM (C14) -
Desktop
15d7a8cfeat(desktop): About modal renders single-token node version (C96) -
SaaS
0761f79feat(saas): publish node_sha256 in /api/version; single-token version scheme (C96) -
Node
fd1d659build(node): version 6.YYMMDD.HHMMSS; deploy writes .version + .sha256 sidecars (C96) -
Node
5310aedfix(node): fail-fast on Qdrant readiness timeout; pin qdrant:v1.17.1 (C95) -
SaaS
1882680docs: handover — C94 complete; session close -
Desktop
4947ea8feat(desktop): workspace click opens window; nav sessions are direct links (C94) -
SaaS
28e7057docs: handover — C91/C92/C93 complete; session close -
Node
74088ecfix(webfetch): reduce chunk target to 200 words; cap embed input at 1500 chars (C93) -
SaaS
4658e92docs: handover — C92 complete and deployed; C91 confirmed working -
SaaS
60e597cfix(router): use classifier SearchContext as SearXNG query; fall back to q.Text (C92) -
SaaS
1302eb5docs: handover — C91 deployed; functional verification pending -
Node
b94a18eWIP: auto-checkpoint on session end 20260512-004826 -
SaaS
4714952docs: handover — C91 complete; on-demand web search pipeline live; C14 only pending -
Node
5c17e6ffeat(node): receive forwarded SaaS search results via RecordAnswer, store via FetchSink; remove LowConfidence on-demand search gate (C91) -
SaaS
bfddec5feat(router): on-demand web search pipeline — concurrent SearXNG, merge into ContextPackage, forward via RecordAnswer (C91) -
Proto
3e8c10cfeat(proto): add WebSearchResult message and AnswerRecord.web_search_results (C91) -
SaaS
ef24d70docs: handover — C91 contract written; on-demand web search pipeline design confirmed
— 34 commits
-
SaaS
1c9775fdocs: handover — C90 reverted; correct web search design documented; next actions updated -
SaaS
6c50aa1Revert "feat(router): wire web search into inference path for nature=web questions (C90)" -
SaaS
d438608docs: handover — C90 complete; switching focus to memory creation gap -
SaaS
6a988e2feat(router): wire web search into inference path for nature=web questions (C90) -
SaaS
981b7ebdocs: handover — session complete; web search wiring flagged as next priority -
SaaS
a44dc71docs: handover — C89 complete; remember tool sequencing fix deployed -
SaaS
d1101cdfix(saas): instruct remember tool to fire after full response, not mid-stream (C89) -
SaaS
4b89c2ddocs: handover — note skill-selection-not-persisted gap surfaced in C88 testing -
SaaS
431bc22docs: handover — C88 complete; node-retrieval gap documented as follow-on -
SaaS
1179f24feat(saas): wire original input + prior sub-answers into multi-question context (C88) -
SaaS
a1cb807docs: handover — C87 complete; shopping and wordcraft skills deployed -
Desktop
daf43cffeat(desktop): expose shopping and wordcraft in skill selector (C87) -
SaaS
5eea123feat(saas): add shopping and wordcraft skills to daily mode (C87) -
SaaS
2550784docs: update handover — C86 complete (saas:8bff023, desktop:529d873) -
Desktop
529d873refactor(desktop): rename C76 layer Tool→Skill, Persona→Mode (C86) -
SaaS
8bff023refactor(saas): rename C76 layer Persona→Mode, Tool→Skill (C86) -
SaaS
f7880b6docs: handover — C86/C87 contracts written; Mode/Skill rename + roadmap -
SaaS
199e994docs: handover — C83/C84/C85 complete; node re-downloaded; decomposed reload verified -
Desktop
d8413ccfix(desktop): dedupe aggregated understanding on decomposed-turn reload (C85) -
Desktop
fb46e72fix(desktop): decomposed-turn reload — group sub-questions by OID structure (C84) -
Desktop
fa9c6cafix(desktop): correct WinBox class name in updateBounds 'wb-max' → 'max' (C83) -
SaaS
74a863fdocs: handover — C82 complete; all contracts verified; node re-download is #1 next action -
Desktop
4dbbd16fix(desktop): window resize on nav/browser change; answer bubble full-width (C82) -
SaaS
7cc03dbdocs: handover — C81 verified; regression 1 resolved; node re-download is #1 next action -
SaaS
8ed89e4docs: handover — C81 complete; understanding GetSession chain fixed; node re-download is #1 action -
SaaS
ffd3773fix(saas): wire understanding through GetSession chain (C81) -
SaaS
18b0d21docs: handover — C80 complete; regression 2 deployed-unverified; node re-download is #1 next action -
Desktop
3151e8cfeat(desktop): send op=continue|edit on RecordInput; trunk no longer forks (C80) -
SaaS
531ba0dfeat(saas): forward InputOp on RecordInput; sub-questions use OP_EDIT (C80) -
Node
0e8115ffeat(node): (turn,rev) pair OID allocator with continue/edit op (C80) -
Proto
4815bc0proto: add InputOp enum and InputRecord.op field (C80) -
SaaS
a2c6185docs: handover — C79 landed; C80 written and pending; regression 2 root cause confirmed -
SaaS
720c2bbdocs(saas): DOC-22 — formalise (turn,rev) pair OID model and attribute arc (C79) -
SaaS
ab78edadocs: backup infrastructure fix — git safe.directory for root cron
— 35 commits
-
SaaS
d08a9b8docs: handover — C68-C78 batch landed; two regressions noted for next session -
Desktop
7065ebefeat(desktop): send persona='daily' and tool from selector; align tool list with saas registry (C76) -
SaaS
de14a94feat(saas): add persona+tool resolution; daily persona with default/summarise/json tools (C76) -
Desktop
f92b34dfeat(desktop): FlowChart viewport indicator + click-to-scroll navigation (C77) -
Desktop
e4c81a8feat(desktop): render sub-OID children as segments of their parent turn (C75) -
SaaS
c4e801ffeat(saas): allocate sub-OIDs per sub-question; record answers per sub-OID (C74) -
Node
66ed7e7feat(node): plumb turn_type through RecordInput; persist on .input JSONL (C78) -
Proto
6711f61proto: add turn_type field to InputRecord (C78 precursor for C74) -
SaaS
45a1b9efix(saas): drop unused insufficientContextWire type and field; rely on JSON unmarshal tolerance for transitional node payloads (C73) -
Desktop
9f620d1refactor(desktop): remove dead InsufficientContext UI branch; rely on understanding panel for empty/error signals (C73) -
SaaS
d90e433feat(saas): emit informational empty-result and error-result understanding entries; remove dead InsufficientContext field (C73) -
Node
1030152feat(node): emit ContextResultStatus on context-package response (C73) -
Proto
bf41487proto: add ContextResultStatus to distinguish empty vs error retrieval outcomes (C73) -
SaaS
79e4c6brefactor(saas): drop "### question" headings from finalAnswer composition (C72) -
Desktop
f716550feat(desktop): restore persisted understanding entries on session reload (C71) -
SaaS
39b7759feat(saas): buffer understanding entries per request and forward in RecordAnswer (C70) -
Node
9c8ca6ffeat(node): persist understanding entries per session; return in GetSession (C70) -
Proto
83130f3proto: add UnderstandingEntry; carry on AnswerRecord and SessionMessage (C70) -
SaaS
d10dc7cfix(saas): make RecordAnswer synchronous; log failures; add history-count diagnostic (C69) -
Desktop
eaf427erefactor(desktop): remove dead understanding_status listener branch and subQuestions stream field (C68) -
SaaS
2573c6crefactor(saas): remove dead OfferMode field and done.sub_questions; rename understanding_status doc references (C68) -
SaaS
41e1d2edocs: handover — tool-only retry restored, node ID churn and history gap documented -
SaaS
cf61617fix(saas): restore tool-only retry in litellm Stream (C62 assumption was wrong) -
SaaS
4d8564edocs: handover — saas and desktop deployed (C62–C66 active) -
SaaS
dab1d73docs: handover — C62–C66 complete, pipeline audit queue cleared -
Desktop
dd609ddrefactor(desktop): remove unused assignedOid from StreamResult (C66) -
SaaS
eb1cd33refactor(saas): remove unused AssignedOID from BrowserResponse and done event (C66) -
Desktop
f44a564feat(desktop): render decomposed question bubbles for multi-question turns (C64) -
SaaS
6767bf1feat(saas): emit sub_question SSE events for multi-question turns (C64) -
SaaS
63380c5refactor(saas): remove ConversationHistory from contextPackageWire and buildEnrichedQuery (C63) -
Node
abf886erefactor(node): remove decomposer interface, ConversationHistory wire field, taskloop recordUserTurn (C63) -
SaaS
f542be5refactor(saas): remove dead UserID fallback in HandleBrowserRequestStream (C65) -
SaaS
7ebfbd2refactor(saas): remove tool-only retry dead code from litellm Stream (C62) -
SaaS
6133e3fdocs: handover — add C65, C66 (F2, F7 contracted) -
SaaS
d2d6785docs: handover — pipeline audit complete, C62–C64 written
— 8 commits
-
SaaS
05a930fdocs: handover — session close (C61 verified, streaming fixed) -
SaaS
aec63bddocs: handover — C61 verified in production (streaming fixed) -
SaaS
1b866f0docs: handover — C61 complete (remember tool prompt fix) -
SaaS
78bc3affix(saas): tighten remember tool description to require text reply (C61) -
SaaS
3714279docs: handover — C59 + C60 complete (node re-registration fix, delete logging) -
SaaS
e13364cfix(saas): prune stale offline node duplicates on new registration (C60) -
Node
63c970ffix(node): send persisted NodeId in Register call to enable re-registration (C60) -
Node
f1ba47ffix(node): log DeleteWorkspace outcome (C59)
— 32 commits
-
SaaS
c208bc6docs: handover — C58 complete (workspace delete calls node) -
SaaS
ad1004dfix(saas): DeleteWorkspace calls node to remove workspace directory (C58) -
SaaS
0cde279docs: handover — C57 + node static binary fix (session close) -
SaaS
548729cdocs: handover — node static binary fix (2d6c0a4) -
Node
ff23fa1fix(node): CGO_ENABLED=0 for portable static binary -
SaaS
0eb64eddocs: handover — C57 complete (deployed-unverified) -
Desktop
724cd5cfeat(desktop): node_refresh hub event drives navigator updates (C57) -
SaaS
926c05erefactor(saas): WG poller drives node state transitions (C57) -
SaaS
bbca949docs: handover — workspace/VPN state machine designed (C57 pending) -
SaaS
9bbf026docs: handover — C54/C55/C56 complete; OID audit follow-ups fully landed -
SaaS
f931208docs: DOC-22 — OIDs may appear in node-content admin endpoints (C56-5) -
SaaS
394862ffeat(saas): SSE token frames carry oid when assigned (C56-4) -
SaaS
1fb1dd4refactor(saas): remove dead InsufficientContext early return (C56-3) -
Desktop
cb3843dfix(desktop): clear varen-active-path-<sid> on session delete (C56-2) -
Node
e093919fix(node): DeleteSession removes .tree and drops session counters (C56-1) -
Node
d25545afix(node): NextBranch keyed by parent OID; prime from on-disk branches (C55) -
SaaS
cfbfa60feat(saas): forward assigned OID through RecordAnswer (C54) -
Node
3cf2434feat(node): RecordAnswer accepts oid; legacy fallback retained (C54) -
Proto
22115c0feat(proto): add oid field to AnswerRecord (C54) -
SaaS
bcfc252docs: handover — C54/C55/C56 drafted, added to Pending list -
SaaS
befde57docs: handover — OID cross-component audit; refresh session persistence section -
SaaS
a7a0b54docs: split handover into Current State + HISTORY to reduce session startup cost -
SaaS
eebd4ffdocs: handover — C53 complete (session pipeline root causes) -
Desktop
2c23adafix(desktop): session delete throws on 404; mount retries fetchSessions; auto-resume on session arrival (C53) -
Node
c9898a4fix(node): remove additional models log at startup (C53) -
SaaS
c644169fix(saas): Deregister marks node offline instead of deleting row (C53) -
SaaS
c5ff305docs: handover — C50/C51/C52 complete (Qdrant Q&A embed, loadSession errors, OID branch fix) -
Node
2ceed12fix(node): branch OID resolves sibling of edited turn not child of its parent (C52) -
Desktop
f51a5e5fix(desktop): send editingOid as parent_oid for branch inference (C52) -
Desktop
64614edfix(desktop): catch loadSession fetch errors so UI stays usable on node failure (C51) -
Node
7608fbbWIP: auto-checkpoint on session end 20260508-083427 -
SaaS
ddb4449docs: handover — C50/C51/C52 contracted (expansion_exhausted root cause, loadSession error handling, OID edit-branch fix)
— 33 commits
-
SaaS
8f2a976docs: handover — C45–C49 complete (bug fix run, FlowChart, Understanding collapse) -
Desktop
ff758e1fix(desktop): horizontal variant rows in FlowChart; Understanding auto-collapses on completion (C49) -
SaaS
3b70603fix(saas): classifier preserves user phrasing; InsufficientContext falls back to direct inference (C48) -
SaaS
36789fbfix(saas): add JSON tags to InsufficientContextInfo (C47) -
Desktop
0f09049fix(desktop): remove workspaces from useEffect deps to stop polling loop (C46) -
Desktop
2d49c79fix(desktop): pass parentOid in handleSend inference body (C45) -
SaaS
3d99199docs: handover — C40–C44 complete (OID tree model, branch creation, SSE OID routing) -
Desktop
b058c91feat(desktop): branch creation on edit, SSE OID routing, flow chart navigation (C44) -
SaaS
8df7b7dfeat(saas): turn_start SSE, RecordInput before inference, active-path + delete-turn endpoints (C44) -
Node
a40c0d0feat(node): branch OID assignment in RecordInput, SetActivePath, DeleteTurn (C44) -
Proto
fe4d1c2feat(proto): parent_oid on InputRecord; InputRecordResponse; SetActivePath + DeleteTurn RPCs (C44) -
Desktop
44c52c9feat(desktop): OID-based turn tree model + flow chart panel; remove variant nav (C43) -
SaaS
7d3b8c1feat(saas): surface turn OIDs in session JSON response (C42) -
Node
e57e119feat(node): surface turn OIDs through TaskService.GetSession (C42) -
Proto
3390d97feat(proto): add oid/parent_oid/turn_type to SessionMessage (C42) -
Node
047dd11feat(node): OID storage in session files; counters + tree sidecar; subtree delete (C41) -
SaaS
9caaf69docs: add DOC-22 — Node MIB / OID addressing scheme (C40) -
SaaS
b34f93adocs: handover — backup infrastructure fixed (2026-05-07) -
SaaS
cf81ef0docs: handover — C40–C44 contracted, conversation tree (OID model) design captured -
SaaS
4f9ee0edocs: handover — session close 2026-05-07 (C37, C38, C39; search pipeline complete) -
SaaS
5280f4ddocs: update handover — C37–C39 complete; search pipeline fully wired -
Node
5ed4b04feat(node): web fetcher — event-driven URL fetch, extract, embed, Qdrant research index (C39) -
SaaS
1aca1fcdocs: update handover — C38 complete (node search providers wired) -
Node
d11970bfeat(node): WebSearcher + N8 provider — call SaaS search gateway over VPN (C38) -
SaaS
2631011docs: update handover — C37 complete (search gateway, SearXNG, 0.0.0.0 bind) -
SaaS
2f323cbfeat(saas): search gateway — SearXNG + Brave API endpoint for node queries (C37) -
SaaS
0d12cdcdocs: update handover — contracts repo commit for C37/C38/C39 resolved -
SaaS
a037d75docs: handover — session close 2026-05-07 (C37, C38, C39 contracts; search architecture) -
SaaS
22f8db6docs: handover — session close 2026-05-07 (C35, C36; flag turn variant model) -
Desktop
86675e6feat(desktop): delete turn/session/workspace; pencil/trash icons; consolidate turn controls into understanding bar (C36) -
SaaS
fb2e970feat(saas): add DELETE /api/workspaces/{workspace}/sessions/{session} endpoint (C36) -
SaaS
cdaa5fadocs: handover — session close 2026-05-07 (C35) -
SaaS
3124871feat(saas): wire memories through AnswerRecord to node Qdrant storage (C35)
— 33 commits
-
SaaS
f86c49cdocs: handover — session close 2026-05-06 evening (C32/C33/C34) -
SaaS
97cbcadfeat(saas): push memory extraction events to understanding strip (C34) -
SaaS
769f1b0docs: handover — C33 streaming inference -
Desktop
b92055cfeat(desktop): consume SSE inference stream, render tokens incrementally (C33) -
SaaS
9d0a8f1feat(saas): SSE streaming inference end-to-end (C33) -
SaaS
27a0b94docs: handover — C32 Qdrant per-workspace collection invariant -
Node
15ba875fix(node): Qdrant per-workspace collection invariant — list-based existence check + startup migration (C32) -
SaaS
bbdbed4docs: update handover — session close 2026-05-06 afternoon -
Node
98d1a9dfix(node): check collection exists before searching — avoid Qdrant TCP crash -
Node
82a3731fix(node): Qdrant readiness wait + graceful 404 on empty collections -
SaaS
aac01aafeat(saas): detailed understanding events with elapsed timing -
SaaS
9784438fix(saas): replace undefined 'compound question rule' with explicit instructions -
SaaS
0e41e93docs: update handover — C26 complete; node dispatch gRPC channel fixed -
SaaS
43c440ffix(saas): revert dispatchTimeout to 30s — node dispatch channel fixed -
Node
c58b1a0fix(node): wire SendTaskResult through DispatchTask stream — not NodeService -
SaaS
ec3a981docs: update handover — C28 complete -
SaaS
f60c33ffix(saas): add general advisor to classifier — catch-all for out-of-domain questions -
SaaS
cae3172docs: update handover — C25 complete; Bugs B/C/D resolved -
Desktop
99a43bcfeat(desktop): session history in inference POST; markdown rendering; memories display -
SaaS
c9e1e78feat(saas): propagate Memories through BrowserResponse to desktop -
SaaS
ddb1a05docs: update handover — C27 complete; understanding events wired from SaaS fallback path -
Desktop
f7134e6fix(desktop): add auth token to /updates WebSocket; keep understanding strip open if entries arrived -
SaaS
138b91dfeat(saas): wire hub to /updates endpoint and push understanding events from classifier -
SaaS
5aa76dddocs: update handover — C23/C24 complete; four post-C24 inference UX bugs documented; C25/C26/C27 queued -
SaaS
a7b9e6bfix: handle tool-only LiteLLM responses; fix classifier backtick parsing; reduce dispatch timeout -
SaaS
b991a57feat: wire orchestrator, classifier, and advisor routing into SaaS inference path -
SaaS
bf504c2docs: update handover — session close, C22 complete, C23 pending, batch passthrough confirmed -
Desktop
1fd7d7bfix: WinBox resize on viewport change and nav toggle; close workspace windows on node disconnect -
SaaS
1bff5eedocs: update handover — LiteLLM batch passthrough confirmed, proxy_config requirement noted -
SaaS
d4229f3docs: correct batch pipeline — LiteLLM mandatory for billing and content isolation -
SaaS
787b574docs: update handover — batch processing architecture boundary -
SaaS
87758b3docs: update handover — content mode system design concept expanded -
SaaS
d822ee5docs: update handover — C22 session notes, two desktop bugs, instructional popout concept
— 6 commits
-
SaaS
ca414bedocs: update handover — C21 complete, node redeployed 260505.142801 -
Desktop
1d4c431fix: variant persistence via localStorage; fix stale closure in handleEditSend -
SaaS
4213c16docs: update handover — C20 complete, inline chat edit and variant navigation -
Desktop
a3d2109fix: restore fixed input, edit-to-bottom-bar, lucide icons, stop button -
SaaS
37c3301docs: update handover — C20 complete, node local inference vestigial, node redeployed 260505.142801 -
Node
35a0ed1fix: remove local model startup requirement — only nomic-embed-text is required
— 54 commits
-
SaaS
7372fabdocs: update handover — C18 complete, inline chat edit and variant navigation -
Desktop
472377afeat: inline chat input, edit-last-turn, variant navigation, per-turn understanding -
SaaS
5c141eddocs: update handover — session close, C15-C17 complete, workspace sync fixed -
SaaS
11fb93ffix: replace 15s sleep with retry-backoff in workspace sync; adopt WorkspaceSyncer interface -
SaaS
747507efix: wire Provisioner so node workspaces sync to DB; show workspaces regardless of node state -
Desktop
d36e635fix: use varen-logo.svg on login page; remove About and Sign out icons -
SaaS
41988b2docs: update handover — session close, C11-C13 complete, C14 ready -
SaaS
6e5ee29docs: update handover — C13 complete, C14 pending -
Desktop
36c8353feat: About modal shows available-for-download node version from API -
SaaS
98a5b89feat: read node version file, expose via /api/version -
Node
5f05e50feat: write version file to downloads dir on deploy -
SaaS
9ed4d9edocs: update handover — C12 complete, node version fix and arch in About -
Desktop
3c842c9fix: parse arch from node version string in About modal -
Node
f41d243fix: correct nodeVersion ldflags target, add arch to version string -
SaaS
533d86cfix: quote ldflags -X value to handle spaces in version string -
SaaS
96f6ef5fix: move saasVersion declaration after import block -
SaaS
4d6e056docs: update handover — C11 complete, version display and About modal -
Desktop
61810b7feat: version under brand, About modal with component versions -
Node
8b24427fix: remove v prefix from version string, use 2-digit year -
SaaS
3498db3feat: add saasVersion variable, /api/version endpoint, fix version format -
SaaS
0f85b10docs: update handover — C10 complete, workspace window UX fixes -
Desktop
22c544bfix: remove minimize button, open windows maximized, fix focus stealing on text selection -
SaaS
8e918b7docs: update handover — session close, process deviation noted -
SaaS
5c92daedocs: update handover — daily ops session, LiteLLM config corrected -
SaaS
cfa24c1docs: update handover — C09 complete, section model and derived-fields rule -
Desktop
a21b7effeat: mutually exclusive workspace sections — Chat, Sessions, Files, Research, Profile, Understanding -
SaaS
5e7e0c3docs: update handover — C08 complete, desktop deploy permission added -
Desktop
77dde3bfeat: redesign workspace toolbar — tool selector, context panel, understanding panel -
SaaS
fa59081docs: update handover — C08 written, tool/adviser architecture clarified, understanding drawer deferred -
SaaS
bc9c06cdocs: update handover — session close, desktop UX gaps noted -
SaaS
d227a0edocs: update handover — C07 complete, navigator restructured to node-centric tree -
Desktop
b7e19b6fix: restructure navigator to node-centric tree -
SaaS
0245ec2docs: update handover — C06 complete, navigator logo and CSS fixed -
Desktop
957faa9fix: navigator logo deploy and CSS class mismatches -
SaaS
e7e9962docs: update handover — node binary redeployed, session close -
SaaS
5cef52ddocs: update handover — C05 complete, node relay and WebSocket restored -
Node
ca9bbcefeat: restore N17 relay and N18 WebSocket implementations -
SaaS
f6ab153docs: update handover — C04 complete, system audit confirmed working -
Node
72115f0fix: update proto target to delegate to central repo -
SaaS
0a94279fix: update proto target to delegate to central repo; update stale deploy docs -
SaaS
309b52adocs: update handover — C03 complete, all foundation contracts done -
SaaS
a909ed2docs: update handover — new repo structure complete, C02a deployed, C03 partial -
Node
8664274fix: add deploy target to node Makefile (restored from recovery-era Makefile) -
SaaS
2c23880fix: restore missing cmd/ directory from C01 migration (rsync omission) -
Node
a14c054feat: regenerate proto bindings from central proto repo -
SaaS
cc4fd3cfeat: regenerate proto bindings from central proto repo -
Proto
91c4c01feat: add NodeService and TaskService definitions to services.proto; add missing message types -
SaaS
f37e52afix: add MemoryRecord/HistoryEntry types to router, add nhooyr.io/websocket dependency -
Node
8dfc261fix: complete mid-refactor WIP — remove duplicate types files, add missing constructors and mock stub -
SaaS
0f713d0fix: remove broken proto symlink from monorepo migration -
Desktop
6413cd8init: desktop source from varen-desktop-src 99f5394 -
Node
1784349init: node source from varen-desktop-src 99f5394 -
SaaS
9c029aainit: saas source from varen-desktop-src 99f5394 -
Proto
758147ainit: proto definitions from varen-desktop-src 99f5394 (task.proto removed)