conductor-remote 1.30.3 → 1.30.4
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 +3 -1
- package/dist/assets/{index-B2SjHT-B.js → index-7eBQvvzX.js} +26 -26
- package/dist/index.html +1 -1
- package/dist/sw.js +1 -1
- package/dist-node/src/reads.js +27 -1
- package/package.json +1 -1
package/dist/index.html
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<title>Conductor Remote</title>
|
|
14
14
|
<!-- Runs before the module bundle so it can catch a stale shell that fails to boot. -->
|
|
15
15
|
<script src="/self-heal.js"></script>
|
|
16
|
-
<script type="module" crossorigin src="/assets/index-
|
|
16
|
+
<script type="module" crossorigin src="/assets/index-7eBQvvzX.js"></script>
|
|
17
17
|
<link rel="stylesheet" crossorigin href="/assets/index-8aCnDSQJ.css">
|
|
18
18
|
<link rel="manifest" href="/manifest.webmanifest"></head>
|
|
19
19
|
<body>
|
package/dist/sw.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
if(!self.define){let e,i={};const n=(n,s)=>(n=new URL(n+".js",s).href,i[n]||new Promise(i=>{if("document"in self){const e=document.createElement("script");e.src=n,e.onload=i,document.head.appendChild(e)}else e=n,importScripts(n),i()}).then(()=>{let e=i[n];if(!e)throw new Error(`Module ${n} didn’t register its module`);return e}));self.define=(s,r)=>{const o=e||("document"in self?document.currentScript.src:"")||location.href;if(i[o])return;let l={};const
|
|
1
|
+
if(!self.define){let e,i={};const n=(n,s)=>(n=new URL(n+".js",s).href,i[n]||new Promise(i=>{if("document"in self){const e=document.createElement("script");e.src=n,e.onload=i,document.head.appendChild(e)}else e=n,importScripts(n),i()}).then(()=>{let e=i[n];if(!e)throw new Error(`Module ${n} didn’t register its module`);return e}));self.define=(s,r)=>{const o=e||("document"in self?document.currentScript.src:"")||location.href;if(i[o])return;let l={};const t=e=>n(e,o),c={module:{uri:o},exports:l,require:t};i[o]=Promise.all(s.map(e=>c[e]||t(e))).then(e=>(r(...e),l))}}define(["./workbox-9c191d2f"],function(e){"use strict";self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.clientsClaim(),e.precacheAndRoute([{url:"self-heal.js",revision:"49bd63adb25a09341f8d2610e8bd3c76"},{url:"index.html",revision:"311f27093150abe5a46280667c0069e9"},{url:"assets/workbox-window.prod.es5-BBnX5xw4.js",revision:null},{url:"assets/index-8aCnDSQJ.css",revision:null},{url:"assets/index-7eBQvvzX.js",revision:null},{url:"apple-touch-icon.png",revision:"2b9301416b880d45d4bb655f2600d1f2"},{url:"icon-192.png",revision:"c5e01ac58768627e18ee7b8b6a9239ef"},{url:"icon-512.png",revision:"a40638c55e310312457a621c9a0002c8"},{url:"icon-maskable-512.png",revision:"a40638c55e310312457a621c9a0002c8"},{url:"icon.svg",revision:"c1aee186821798733dd477e69a0ef243"},{url:"manifest.webmanifest",revision:"cf88fbc5755108a7fe0616fa160a8a15"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("/index.html"),{denylist:[/^\/api\//]}))});
|
package/dist-node/src/reads.js
CHANGED
|
@@ -52,9 +52,33 @@ export class Reads {
|
|
|
52
52
|
this.db = db;
|
|
53
53
|
this.workspacesRoot = workspacesRoot;
|
|
54
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Unread chats, grouped by workspace. `workspaces.unread` is a **dead column** —
|
|
57
|
+
* Conductor still declares it (and its migration still says "when 1, the workspace
|
|
58
|
+
* should be marked visually as unread") but writes 0 on every row: 0 of 1691 are
|
|
59
|
+
* non-zero on this Mac, which is why the sidebar's bold/badge never once fired.
|
|
60
|
+
* The live flag is per session, and it *is* a flag — `unread_count` is only ever
|
|
61
|
+
* 0 or 1 — so what's worth counting is how many chats have news, not the column.
|
|
62
|
+
*/
|
|
63
|
+
unreadSessions() {
|
|
64
|
+
const rows = this.db.query(`SELECT workspace_id, id, updated_at
|
|
65
|
+
FROM sessions
|
|
66
|
+
WHERE COALESCE(unread_count, 0) > 0 AND COALESCE(is_hidden, 0) = 0`);
|
|
67
|
+
const byWorkspace = new Map();
|
|
68
|
+
for (const r of rows) {
|
|
69
|
+
if (!r.workspace_id)
|
|
70
|
+
continue;
|
|
71
|
+
const list = byWorkspace.get(r.workspace_id);
|
|
72
|
+
if (list)
|
|
73
|
+
list.push({ id: r.id, at: r.updated_at });
|
|
74
|
+
else
|
|
75
|
+
byWorkspace.set(r.workspace_id, [{ id: r.id, at: r.updated_at }]);
|
|
76
|
+
}
|
|
77
|
+
return byWorkspace;
|
|
78
|
+
}
|
|
55
79
|
listWorkspaces() {
|
|
56
80
|
const rows = this.db.query(`SELECT w.id, w.directory_name, w.workspace_name, w.branch, w.pr_title, w.derived_status, w.manual_status,
|
|
57
|
-
w.state, w.created_at, w.updated_at, w.
|
|
81
|
+
w.state, w.created_at, w.updated_at, w.pinned_at, w.active_session_id, w.intended_target_branch,
|
|
58
82
|
r.name AS repo_name, r.root_path AS repo_root, r.icon AS repo_icon,
|
|
59
83
|
r.remote_url AS remote_url, r.default_branch AS default_branch,
|
|
60
84
|
s.status AS session_status, s.title AS session_title, s.model AS model,
|
|
@@ -64,8 +88,10 @@ export class Reads {
|
|
|
64
88
|
LEFT JOIN sessions s ON s.id = w.active_session_id
|
|
65
89
|
WHERE w.state IN ('ready', 'setting_up')
|
|
66
90
|
ORDER BY (w.pinned_at IS NULL), w.updated_at DESC`);
|
|
91
|
+
const unread = this.unreadSessions();
|
|
67
92
|
return rows.map(r => ({
|
|
68
93
|
...r,
|
|
94
|
+
unread_sessions: unread.get(r.id) ?? [],
|
|
69
95
|
worktree: resolveWorktree(this.workspacesRoot, r.repo_name, r.directory_name, r.branch, r.repo_root),
|
|
70
96
|
baseBranch: r.intended_target_branch || r.default_branch || 'main',
|
|
71
97
|
icon: describeRepoIcon({ icon: r.repo_icon, repoRoot: r.repo_root, remoteUrl: r.remote_url })
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "conductor-remote",
|
|
3
|
-
"version": "1.30.
|
|
3
|
+
"version": "1.30.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"packageManager": "yarn@4.15.0",
|
|
6
6
|
"description": "Phone control panel for local Conductor agents. Reads ride SQLite + git; prompts ride Conductor's own dispatch path.",
|