sessiongraph 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -11
- package/dist/assets/{index-8ZjQU4Q7.js → index-Bn0u7W0k.js} +1 -1
- package/dist/assets/index-C9rv5Uuu.js +163 -0
- package/dist/assets/{index-DCPujd4X.css → index-To7WPdy6.css} +1 -1
- package/dist/assets/scene-DHluV79M.js +49 -0
- package/dist/index.html +2 -2
- package/dist/sources/LICENSE-APACHE-2.0.txt +201 -0
- package/dist/sources/LICENSE-MIT.txt +22 -0
- package/dist/sources/NOTICE.txt +17 -0
- package/dist/sources/cline.svg +1 -0
- package/dist/sources/continue.svg +2 -0
- package/dist/sources/copilot.svg +1 -0
- package/dist/sources/gemini.svg +1 -0
- package/dist/sources/kilo.svg +1 -0
- package/dist/sources/pi.svg +1 -0
- package/dist/sources/qwen.svg +1 -0
- package/dist/sources/roo.svg +1 -0
- package/dist-server/server.mjs +5 -5
- package/docs/guide.md +12 -11
- package/docs/v1.0.1.md +25 -0
- package/package.json +7 -7
- package/dist/assets/index-BiBqLNvd.js +0 -166
- package/dist/assets/scene-CjvdEe_z.js +0 -49
package/dist/sources/NOTICE.txt
CHANGED
|
@@ -2,3 +2,20 @@ Claude, OpenAI, and OpenCode SVG paths are from Simple Icons (CC0-1.0).
|
|
|
2
2
|
Claude and OpenCode: https://github.com/simple-icons/simple-icons/tree/develop/icons
|
|
3
3
|
OpenAI: https://github.com/simple-icons/simple-icons/blob/11.15.0/icons/openai.svg
|
|
4
4
|
Brand names and marks belong to their respective owners. SessionGraph is independent.
|
|
5
|
+
|
|
6
|
+
Gemini CLI, Qwen, GitHub Copilot, Cline, Roo Code, and Kilo Code SVG paths:
|
|
7
|
+
Lobe Icons, MIT License, Copyright (c) 2023 LobeHub.
|
|
8
|
+
https://github.com/lobehub/lobe-icons/tree/8b7bbc433d38437fa2b0cca58ae896917162b812/packages/static-svg/icons
|
|
9
|
+
Files: geminicli.svg, qwen.svg, githubcopilot.svg, cline.svg, roocode.svg, kilocode.svg.
|
|
10
|
+
Adapted for monochrome CSS masks; path geometry is unchanged.
|
|
11
|
+
See LICENSE-MIT.txt.
|
|
12
|
+
|
|
13
|
+
Pi mark: https://pi.dev/logo-auto.svg
|
|
14
|
+
https://github.com/earendil-works/pi/tree/35dfa757378bd7a8570670e99c2687bdd1039a06
|
|
15
|
+
MIT License, Copyright (c) 2025 Mario Zechner.
|
|
16
|
+
Adapted with monochrome fill and a cropped viewBox. See LICENSE-MIT.txt.
|
|
17
|
+
|
|
18
|
+
Continue mark: docs/logo/dark.svg
|
|
19
|
+
https://github.com/continuedev/continue/tree/5522c6f44ca0ac3528b37244818fbfa39b5af470
|
|
20
|
+
Apache License 2.0, Copyright 2023 Continue Dev, Inc.
|
|
21
|
+
Adapted with monochrome fill and responsive dimensions. See LICENSE-APACHE-2.0.txt.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd"><path d="M17.035 3.991c2.75 0 4.98 2.24 4.98 5.003v1.667l1.45 2.896a1.01 1.01 0 01-.002.909l-1.448 2.864v1.668c0 2.762-2.23 5.002-4.98 5.002H7.074c-2.751 0-4.98-2.24-4.98-5.002V17.33l-1.48-2.855a1.01 1.01 0 01-.003-.927l1.482-2.887V8.994c0-2.763 2.23-5.003 4.98-5.003h9.962zM8.265 9.6a2.274 2.274 0 00-2.274 2.274v4.042a2.274 2.274 0 004.547 0v-4.042A2.274 2.274 0 008.265 9.6zm7.326 0a2.274 2.274 0 00-2.274 2.274v4.042a2.274 2.274 0 104.548 0v-4.042A2.274 2.274 0 0015.59 9.6z"/><path d="M12.054 5.558a2.779 2.779 0 100-5.558 2.779 2.779 0 000 5.558z"/></svg>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<!-- Adapted from Continue's docs/logo/dark.svg: monochrome fill and responsive dimensions. Apache-2.0; see LICENSE-APACHE-2.0.txt. -->
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 26 24" fill="currentColor"><path d="M20.5286 3.26811L19.1512 5.65694L22.6328 11.6849C22.6582 11.7306 22.6735 11.7866 22.6735 11.8374C22.6735 11.8882 22.6582 11.9441 22.6328 11.9899L19.1512 18.0229L20.5286 20.4117L25.4791 11.8374L20.5286 3.26303V3.26811ZM18.6176 5.3469L19.995 2.95807H17.2402L15.8628 5.3469H18.6227H18.6176ZM15.8577 5.96697L19.075 11.5324H21.8298L18.6176 5.96697H15.8577ZM18.6176 17.7179L21.8298 12.1474H19.075L15.8577 17.7179H18.6176ZM15.8577 18.338L17.2351 20.7167H19.9899L18.6125 18.338H15.8526H15.8577ZM6.52098 21.3063C6.46507 21.3063 6.41424 21.291 6.3685 21.2656C6.32276 21.2402 6.28209 21.1995 6.25668 21.1538L2.77002 15.1207H0.0152482L4.9657 23.69H14.8615L13.4841 21.3063H6.52606H6.52098ZM14.0178 20.9962L15.3952 23.38L16.7726 20.9911L15.3952 18.6023L14.0178 20.9911V20.9962ZM14.8615 18.2974H8.43712L7.05973 20.6862H13.4841L14.8615 18.2974ZM7.89836 17.9924L4.68108 12.4219L3.30369 14.8107L6.52098 20.3812L7.89836 17.9924ZM0.0101654 14.5007H2.76494L4.14232 12.1118H1.39263L0.0101654 14.5007ZM6.24143 2.5413C6.26685 2.49556 6.30751 2.4549 6.35325 2.42948C6.399 2.40407 6.4549 2.38882 6.50573 2.38882H13.474L14.8514 0H4.95045L0 8.57435H2.75477L6.23127 2.54638L6.24143 2.5413ZM4.14232 11.5782L2.76494 9.18934H0.0101654L1.38755 11.5782H4.14232ZM6.51081 3.31386L3.29861 8.8793L4.67599 11.2681L7.8882 5.70268L6.51081 3.31386ZM13.4791 3.00382H7.04448L8.42187 5.39264H14.8564L13.4791 3.00382ZM15.3952 5.0826L16.7675 2.69886L15.3952 0.310038L14.0178 2.69378L15.3952 5.0826Z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd"><path d="M19.245 5.364c1.322 1.36 1.877 3.216 2.11 5.817.622 0 1.2.135 1.592.654l.73.964c.21.278.323.61.323.955v2.62c0 .339-.173.669-.453.868C20.239 19.602 16.157 21.5 12 21.5c-4.6 0-9.205-2.583-11.547-4.258-.28-.2-.452-.53-.453-.868v-2.62c0-.345.113-.679.321-.956l.73-.963c.392-.517.974-.654 1.593-.654l.029-.297c.25-2.446.81-4.213 2.082-5.52 2.461-2.54 5.71-2.851 7.146-2.864h.198c1.436.013 4.685.323 7.146 2.864zm-7.244 4.328c-.284 0-.613.016-.962.05-.123.447-.305.85-.57 1.108-1.05 1.023-2.316 1.18-2.994 1.18-.638 0-1.306-.13-1.851-.464-.516.165-1.012.403-1.044.996a65.882 65.882 0 00-.063 2.884l-.002.48c-.002.563-.005 1.126-.013 1.69.002.326.204.63.51.765 2.482 1.102 4.83 1.657 6.99 1.657 2.156 0 4.504-.555 6.985-1.657a.854.854 0 00.51-.766c.03-1.682.006-3.372-.076-5.053-.031-.596-.528-.83-1.046-.996-.546.333-1.212.464-1.85.464-.677 0-1.942-.157-2.993-1.18-.266-.258-.447-.661-.57-1.108-.32-.032-.64-.049-.96-.05zm-2.525 4.013c.539 0 .976.426.976.95v1.753c0 .525-.437.95-.976.95a.964.964 0 01-.976-.95v-1.752c0-.525.437-.951.976-.951zm5 0c.539 0 .976.426.976.95v1.753c0 .525-.437.95-.976.95a.964.964 0 01-.976-.95v-1.752c0-.525.437-.951.976-.951zM7.635 5.087c-1.05.102-1.935.438-2.385.906-.975 1.037-.765 3.668-.21 4.224.405.394 1.17.657 1.995.657h.09c.649-.013 1.785-.176 2.73-1.11.435-.41.705-1.433.675-2.47-.03-.834-.27-1.52-.63-1.813-.39-.336-1.275-.482-2.265-.394zm6.465.394c-.36.292-.6.98-.63 1.813-.03 1.037.24 2.06.675 2.47.968.957 2.136 1.104 2.776 1.11h.044c.825 0 1.59-.263 1.995-.657.555-.556.765-3.187-.21-4.224-.45-.468-1.335-.804-2.385-.906-.99-.088-1.875.058-2.265.394zM12 7.615c-.24 0-.525.015-.84.044.03.16.045.336.06.526l-.001.159a2.94 2.94 0 01-.014.25c.225-.022.425-.027.612-.028h.366c.187 0 .387.006.612.028-.015-.146-.015-.277-.015-.409.015-.19.03-.365.06-.526a9.29 9.29 0 00-.84-.044z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd"><path d="M16.793 10.358v3.867L7.236 18.82v-2.8l7.751-3.728-7.75-3.728V5.763l9.556 4.595z"/><path d="M19.608 0A4.392 4.392 0 0124 4.392v15.216A4.392 4.392 0 0119.608 24H4.392A4.392 4.392 0 010 19.608V4.392A4.392 4.392 0 014.392 0h15.216zM4.26 1.444A2.816 2.816 0 001.444 4.26v15.48a2.816 2.816 0 002.816 2.816h15.48a2.816 2.816 0 002.816-2.816V4.26a2.816 2.816 0 00-2.816-2.816H4.26z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd"><path d="M0 0v24h24V0H0zm22.222 22.222H1.778V1.778h20.444v20.444zm-7.555-4.964h2.222v1.778h-2.794L12.89 17.83v-2.794h1.778v2.222zm4 0h-1.778v-2.222h-2.222v-1.778h2.793l1.207 1.207v2.793zm-7.556-2.591H9.333v-1.778h1.778v1.778zm-5.778-1.778h1.778v4h4v1.778H6.54L5.333 17.46V12.89zm13.334-3.556v1.778h-5.778V9.333h1.987V7.111h-1.987V5.333h2.558l1.206 1.207v2.793h2.014zm-11.556-2h2.222l1.778 1.778v2H9.333v-2H7.111v2H5.333V5.333h1.778v2zm4 0H9.333v-2h1.778v2z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="165.29 165.29 469.43 469.43" fill="currentColor"><path d="M165.29 165.29H517.36V400H400V282.65H165.29Z"/><path d="M165.29 282.65H282.65V400H400V517.36H282.65V634.72H165.29Z"/><path d="M517.36 400H634.72V634.72H517.36Z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd"><path d="M19.713 2.825h-5.907c0-.251-.066-.503-.196-.728L12.819.728A1.46 1.46 0 0 0 11.559 0h-1.58c-.52 0-1 .275-1.26.728l-2.42 4.19a1.45 1.45 0 0 0 0 1.453l.791 1.37c.26.448.74.727 1.26.727h11.36c.52 0 1-.275 1.26-.728l.79-1.37a1.45 1.45 0 0 0 0-1.451l-.79-1.37a1.46 1.46 0 0 0-1.26-.728zM.195 9.905l2.951 5.115a1.46 1.46 0 0 0-.531.531l-.791 1.37a1.45 1.45 0 0 0 0 1.452l.79 1.37c.26.448.74.727 1.26.727h4.84c.52 0 1-.275 1.26-.728l.79-1.37a1.45 1.45 0 0 0 0-1.451L5.086 7.083a1.46 1.46 0 0 0-1.26-.728h-1.58c-.52 0-1 .276-1.26.728l-.79 1.37a1.45 1.45 0 0 0 0 1.452m15.888 13.367 2.951-5.115c.217.125.469.196.728.196h1.582c.52 0 1-.275 1.26-.728l.79-1.37a1.45 1.45 0 0 0 0-1.451l-2.42-4.191a1.46 1.46 0 0 0-1.259-.728h-1.582c-.52 0-1 .276-1.259.728l-5.678 9.838a1.45 1.45 0 0 0 0 1.452l.79 1.37c.26.448.74.727 1.26.727h1.582c.52 0 1-.275 1.26-.728z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M20.113 5.5l-.442 1.557a.157.157 0 01-.196.106l-7.414-2.157a.16.16 0 00-.143.028l-7.342 5.74a.159.159 0 01-.074.032l-4.37.656a.154.154 0 00-.132.162l.02.245c.005.078.071.14.152.141l5.074.128.058.002 3.75-1.953a.16.16 0 01.164.01l2.657 1.847a.152.152 0 01.066.125l-.023 2.45c0 .032.01.063.028.089l3.737 5.227c.03.04.077.065.129.065h1.182a.153.153 0 00.14-.224l-2.664-4.919a.15.15 0 01.005-.152l1.389-2.169a.156.156 0 01.062-.055l4.965-2.456a.16.16 0 01.158.01l1.418.921a.16.16 0 00.087.026h1.289c.125 0 .2-.136.13-.237l-3.578-5.29c-.074-.109-.246-.082-.282.044z"/></svg>
|
package/dist-server/server.mjs
CHANGED
|
@@ -31802,15 +31802,15 @@ var EventReadError = class extends Error {
|
|
|
31802
31802
|
}
|
|
31803
31803
|
status;
|
|
31804
31804
|
};
|
|
31805
|
-
var filters = { all: "1", messages: "kind='message'", tools: "kind IN ('tool_call','tool_result')", events: "kind NOT IN ('message','tool_call','tool_result')", untimed: "time IS NULL" };
|
|
31805
|
+
var filters = { all: "1", messages: "kind='message' AND role IN ('user','assistant')", tools: "kind IN ('tool_call','tool_result')", events: "kind NOT IN ('message','tool_call','tool_result')", untimed: "time IS NULL" };
|
|
31806
31806
|
function coverage(db2, session) {
|
|
31807
31807
|
const row = db2.prepare("SELECT * FROM timeline_coverage WHERE session_id=?").get(session.id);
|
|
31808
31808
|
return { revision: String(row?.revision || "pending"), partial: Boolean(row?.partial) || session.coverage?.history !== "complete", note: [row?.note, session.coverage?.note].filter(Boolean).join(" ") || void 0 };
|
|
31809
31809
|
}
|
|
31810
31810
|
function readEventMarkers(db2, session) {
|
|
31811
31811
|
const end = Math.max(session.created, session.activity?.lastMessageAt || session.created);
|
|
31812
|
-
const totals = db2.prepare(
|
|
31813
|
-
const rows = db2.prepare(`SELECT ${summaryColumns} FROM timeline_items WHERE session_id=? AND time>=? AND time<=? ORDER BY time DESC,ordinal DESC LIMIT 2000`).all(session.id, session.created, end);
|
|
31812
|
+
const totals = db2.prepare(`SELECT count(*) AS total, count(*) FILTER (WHERE time IS NULL) AS untimed, count(*) FILTER (WHERE time<? OR time>?) AS outside FROM timeline_items WHERE session_id=? AND (${filters.messages})`).get(session.created, end, session.id);
|
|
31813
|
+
const rows = db2.prepare(`SELECT ${summaryColumns} FROM timeline_items WHERE session_id=? AND (${filters.messages}) AND time>=? AND time<=? ORDER BY time DESC,ordinal DESC LIMIT 2000`).all(session.id, session.created, end);
|
|
31814
31814
|
return { sessionID: session.id, ...coverage(db2, session), items: rows.reverse().map(eventSummary), total: Number(totals.total), untimed: Number(totals.untimed), outsideLifetime: Number(totals.outside), limited: Number(totals.total) - Number(totals.untimed) - Number(totals.outside) > rows.length };
|
|
31815
31815
|
}
|
|
31816
31816
|
function readEvents(db2, session, options = {}) {
|
|
@@ -31909,11 +31909,11 @@ var DEFAULT_VIEW_STATE = Object.freeze({
|
|
|
31909
31909
|
sourceID: "",
|
|
31910
31910
|
projectID: "",
|
|
31911
31911
|
directory: "",
|
|
31912
|
-
days:
|
|
31912
|
+
days: 0,
|
|
31913
31913
|
fromDate: "",
|
|
31914
31914
|
toDate: "",
|
|
31915
31915
|
includeChildren: true,
|
|
31916
|
-
includeArchived:
|
|
31916
|
+
includeArchived: false
|
|
31917
31917
|
});
|
|
31918
31918
|
var validDate = (value) => typeof value === "string" && /^\d{4}-\d{2}-\d{2}$/.test(value) && Number.isFinite(Date.parse(value)) && new Date(value).toISOString().slice(0, 10) === value;
|
|
31919
31919
|
function normalizeViewState(value) {
|
package/docs/guide.md
CHANGED
|
@@ -62,9 +62,9 @@ pnpm start
|
|
|
62
62
|
|
|
63
63
|
## Import and update
|
|
64
64
|
|
|
65
|
-
On first launch, choose the apps to import. Change that selection in **Settings → Sources** or **Manage sources** next to the source filter, then click **Import selected sources** / **Import updates**. **Refresh sessions** imports updates from your selected sources.
|
|
65
|
+
On first launch, choose the apps to import. Change that selection in **Settings → Sources** or **Manage sources** next to the source filter, then click **Import selected sources** / **Import updates**. The compact options show each app's icon, detection status, and saved count; hover for source details. **Refresh sessions** imports updates from your selected sources.
|
|
66
66
|
|
|
67
|
-
**Auto-import sessions** is on by default in **Settings → Sources**. It checks previously selected sources on startup, when returning to the app, and every minute while the app is visible. Checks pause while hidden or a dialog is open, share a 30-second cooldown with recent imports, and never overlap an active import. Unchanged libraries do not rebuild the graph
|
|
67
|
+
**Auto-import sessions** is on by default in **Settings → Sources**. It checks previously selected sources on startup, when returning to the app, and every minute while the app is visible. Checks pause while hidden or a dialog is open, share a 30-second cooldown with recent imports, and never overlap an active import. Unchanged libraries do not rebuild the graph. Both manual and automatic refresh preserve your camera, zoom, playback, and selection. Existing layout positions stay stable as new history arrives; **Fit view (F)** recalculates the overview when you want to reframe it. Automatic imports do not select new sources for you.
|
|
68
68
|
|
|
69
69
|
The auto-import choice is saved in the local SQLite library, so it survives desktop restarts and is shared by browser and desktop instances using that library. Turning it off stops future automatic checks; an import already running can finish. Manual Refresh remains available. There is no background service after the app closes. OpenCode's local service must still be running to import its new history.
|
|
70
70
|
|
|
@@ -140,15 +140,16 @@ Desktop update checks and downloads contact GitHub without session content; npm
|
|
|
140
140
|
## Explore
|
|
141
141
|
|
|
142
142
|
- Full-viewport, antialiased Three.js map with floating, draggable, dismissible cards. **H** hides/restores cards; **F** fits the view.
|
|
143
|
-
- Source badges distinguish harnesses in the list, inspector, tooltips, and search. Filter by source, project, directory/worktree, date,
|
|
144
|
-
-
|
|
145
|
-
-
|
|
146
|
-
-
|
|
147
|
-
-
|
|
143
|
+
- Source badges distinguish harnesses in the list, inspector, tooltips, and search. Filter by source, project, directory/worktree, date, or children. The default window is **All time**; archived sessions are hidden unless enabled in **Settings → Interface → Show archived sessions**. Previously saved choices remain honored.
|
|
144
|
+
- Selecting a session dims surrounding nodes, halos, and trails. Click or tap empty map space to clear selection and restore the full map brightness without moving the camera. Drags and right-clicks keep the selection; **Settings → Graphics → Focus dimming** controls the dimming effect.
|
|
145
|
+
- Time runs left to right. Each session orb appears at creation, travels with the playback frontier, and leaves its trail behind. It rests at the latest saved message timestamp. Missing message timestamps leave the orb at creation; metadata update times are not substituted. Directory colors group sessions; only distinct fork and child edges represent ancestry. Date filters use session creation; the list and histogram follow session endpoints.
|
|
146
|
+
- Click a session to center its orb and recent message trail together in the map area between your panels. Message dots match the session color; small, dim icons distinguish user and assistant messages. Icons are collision-culled and bounded to 64; all plotted dots remain interactive. The latest message uses the session sphere instead of an overlapping dot and remains readable in the explorer. Markers load lazily, capped at the latest 2,000 timed conversation messages within the lifetime, plus a selected older message. Counts disclose untimed and out-of-lifetime messages.
|
|
147
|
+
- Hover a marker to preview its message. Click to focus that marker and open message details below the session card, keeping the map interactive. **Previous / Next** and **← / → / ↑ / ↓** step through user and assistant messages and focus their recorded positions. Untimed messages remain readable without inventing a map location. Escape closes message details first; arrow keys on session cards or the map navigate sessions when message details are closed. Form controls and panel-drag handles retain their own arrow-key behavior.
|
|
148
|
+
- **Browse messages** opens 60-message pages of the conversation. Details include message text, recorded time, and source provenance. Tool calls, reasoning, and other detailed events are excluded from the dots and message browser. Underlying imported history and file evidence remain saved. Source order is preserved even without timestamps. Nearby markers can overlap; step through them with the navigation controls.
|
|
148
149
|
- Older libraries migrate to schema v4 using their existing saved messages. Reconstructed events are labeled partial; **Refresh sessions** enriches them with structured source events. The explorer asks you to reload if an import changes its snapshot while browsing.
|
|
149
150
|
- Click a session for changed-file satellites and source evidence. File details load in 120-message batches; the map displays at most 80 files. Evidence describes historical edits, not today's Git diff.
|
|
150
151
|
- **Play** follows newly appearing clusters with a half-turn around the graph and a closing pullback (30 seconds at 1×). Dragging, zooming, scrubbing, fitting, or opening a dialog pauses playback. 2D pans without orbiting; reduced motion keeps the camera still.
|
|
151
|
-
- The timeline's calendar offers a styled range picker with presets, month/year navigation, typed ISO dates, and keyboard navigation. Date boundaries are inclusive in your local timezone. Select menus share keyboard/typeahead behavior and styling across filters, settings, search,
|
|
152
|
+
- The timeline's calendar offers a styled range picker with presets, month/year navigation, typed ISO dates, and keyboard navigation. Date boundaries are inclusive in your local timezone. Select menus share keyboard/typeahead behavior and styling across filters, settings, search, and the launcher.
|
|
152
153
|
- **Open session** lets you choose one of eight CLI destinations and a working directory. See cross-harness continuation below.
|
|
153
154
|
- Unknown model/cost/token fields stay unknown. Session selection is encoded in a local permalink.
|
|
154
155
|
|
|
@@ -156,10 +157,10 @@ Desktop update checks and downloads contact GitHub without session content; npm
|
|
|
156
157
|
|
|
157
158
|
Open **Settings** using the gear button. Changes apply live and persist on this device:
|
|
158
159
|
|
|
159
|
-
- **Interface:** 2D/3D, system/on/off motion, list density, panel transparency, and reset panel positions.
|
|
160
|
+
- **Interface:** 2D/3D, system/on/off motion, list density, archived-session visibility, panel transparency, and reset panel positions.
|
|
160
161
|
- **Sound:** procedural interaction tones, volume, chime preview, and mute. Only control interactions produce sound; there is no ambient audio. The speaker button mutes feedback quickly; no audio is downloaded.
|
|
161
162
|
- **Graphics:** performance/balanced/high rendering, glow, node size, stars, labels, and focus dimming.
|
|
162
|
-
- **Trails & playback:** all/selected/hidden lifetime trails, brightness, decorative flow and speed, relationship links,
|
|
163
|
+
- **Trails & playback:** all/selected/hidden lifetime trails, brightness, decorative flow and speed, relationship links, message dots, and 0.25×–3× playback. Flow respects reduced motion and never changes message timestamps or saved trail endpoints.
|
|
163
164
|
|
|
164
165
|
**Restore defaults** resets these preferences; they are saved in the local library, with an appearance cache in browser/WebView local storage.
|
|
165
166
|
|
|
@@ -207,7 +208,7 @@ src/imports.ts Onboarding and source management
|
|
|
207
208
|
src/search/ Worker search and SQLite checkpoint bridge
|
|
208
209
|
src/layout.ts, scene.ts Source-agnostic graph and cinematic visualization
|
|
209
210
|
src/timeline.ts Shared message/tool/event envelope and presentation types
|
|
210
|
-
src/event-explorer.ts Lazy
|
|
211
|
+
src/event-explorer.ts Lazy user/assistant message browsing and details
|
|
211
212
|
src/event-hover.ts Bounded, cancellable message previews on marker hover
|
|
212
213
|
src/preferences.ts Validated, versioned local appearance/audio settings
|
|
213
214
|
src/settings.ts, audio.ts Settings dialog and offline procedural audio lifecycle
|
package/docs/v1.0.1.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# SessionGraph v1.0.1
|
|
2
|
+
|
|
3
|
+
**Explore & visualize all your LLM sessions**
|
|
4
|
+
|
|
5
|
+
- **Moving orbs:** sessions appear at creation and travel with time, leaving their trails behind before resting at the latest saved message.
|
|
6
|
+
- **Cleaner conversations:** message dots match their session orb. The message browser shows user and assistant messages with simple Previous / Next navigation.
|
|
7
|
+
- **Better defaults:** start with **All time** and archived sessions hidden. **Settings → Interface → Show archived sessions** brings them back; saved choices remain honored.
|
|
8
|
+
- **Keep your place:** manual and automatic refresh preserve camera position, zoom, and session/message selection. Added history keeps existing layout positions and directory colors stable. **Fit view (F)** explicitly reframes the map.
|
|
9
|
+
- **Twelve recognizable sources:** locally bundled icons throughout the app, with compact source options showing detection status and saved counts. All twelve fit in the desktop picker without searching.
|
|
10
|
+
- **Clearer focus:** stronger dimming for surrounding nodes, halos, and trails. Click or tap empty map space to deselect; panning and orbiting keep your selection.
|
|
11
|
+
- **Smoother demo:** a new 60 FPS video with gentle zoom, orbit, timeline playback, message exploration, conversation search, and the compact source picker. All demo sessions are synthetic.
|
|
12
|
+
|
|
13
|
+
## Update
|
|
14
|
+
|
|
15
|
+
Use the desktop **Update** pill to download and verify the update, then choose **Restart** when ready. Native downloads are available for macOS Apple Silicon/Intel, Windows x64, and Linux x64/ARM64.
|
|
16
|
+
|
|
17
|
+
With Node.js 24+:
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
npx sessiongraph@1.0.1
|
|
21
|
+
# Browser edition:
|
|
22
|
+
npx sessiongraph@1.0.1 --browser
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
[Watch the 60 FPS demo](https://github.com/arvindell/sessiongraph/releases/download/v1.0.1/sessiongraph-demo.mp4) · [Privacy](https://github.com/arvindell/sessiongraph/blob/v1.0.1/PRIVACY.md) · [MIT license](https://github.com/arvindell/sessiongraph/blob/v1.0.1/LICENSE)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sessiongraph",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -25,11 +25,11 @@
|
|
|
25
25
|
"README.md"
|
|
26
26
|
],
|
|
27
27
|
"optionalDependencies": {
|
|
28
|
-
"sessiongraph-app-darwin-arm64": "1.0.
|
|
29
|
-
"sessiongraph-app-darwin-x64": "1.0.
|
|
30
|
-
"sessiongraph-app-linux-arm64": "1.0.
|
|
31
|
-
"sessiongraph-app-linux-x64": "1.0.
|
|
32
|
-
"sessiongraph-app-win32-x64": "1.0.
|
|
28
|
+
"sessiongraph-app-darwin-arm64": "1.0.1",
|
|
29
|
+
"sessiongraph-app-darwin-x64": "1.0.1",
|
|
30
|
+
"sessiongraph-app-linux-arm64": "1.0.1",
|
|
31
|
+
"sessiongraph-app-linux-x64": "1.0.1",
|
|
32
|
+
"sessiongraph-app-win32-x64": "1.0.1"
|
|
33
33
|
},
|
|
34
34
|
"type": "module",
|
|
35
35
|
"engines": {
|
|
@@ -70,5 +70,5 @@
|
|
|
70
70
|
"vite": "^7.2.0"
|
|
71
71
|
},
|
|
72
72
|
"packageManager": "pnpm@11.10.0",
|
|
73
|
-
"sessionGraphCommit": "
|
|
73
|
+
"sessionGraphCommit": "bce4ddd536316e63c4e7ed5bb8e87281e1712cd0"
|
|
74
74
|
}
|