conductor-remote 1.121.0 → 1.121.2
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/dist/index.html
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<title>Conductor Remote</title>
|
|
26
26
|
<!-- Runs before the module bundle so it can catch a stale shell that fails to boot. -->
|
|
27
27
|
<script src="/self-heal.js"></script>
|
|
28
|
-
<script type="module" crossorigin src="/assets/index-
|
|
28
|
+
<script type="module" crossorigin src="/assets/index-B5YGtmBf.js"></script>
|
|
29
29
|
<link rel="stylesheet" crossorigin href="/assets/index-Brbciyfz.css">
|
|
30
30
|
<link rel="manifest" href="/manifest.webmanifest"></head>
|
|
31
31
|
<body>
|
package/dist/sw.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()}).then(()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e}));self.define=(n,r)=>{const l=e||("document"in self?document.currentScript.src:"")||location.href;if(s[l])return;let o={};const a=e=>i(e,l),t={module:{uri:l},exports:o,require:a};s[l]=Promise.all(n.map(e=>t[e]||a(e))).then(e=>(r(...e),o))}}define(["./workbox-dcde9eb3"],function(e){"use strict";importScripts("/push-sw.js"),self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.clientsClaim(),e.precacheAndRoute([{url:"self-heal.js",revision:"49bd63adb25a09341f8d2610e8bd3c76"},{url:"push-sw.js",revision:"4e0b714c0ea53e85c167e6d8f5b767aa"},{url:"index.html",revision:"
|
|
1
|
+
if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()}).then(()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e}));self.define=(n,r)=>{const l=e||("document"in self?document.currentScript.src:"")||location.href;if(s[l])return;let o={};const a=e=>i(e,l),t={module:{uri:l},exports:o,require:a};s[l]=Promise.all(n.map(e=>t[e]||a(e))).then(e=>(r(...e),o))}}define(["./workbox-dcde9eb3"],function(e){"use strict";importScripts("/push-sw.js"),self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.clientsClaim(),e.precacheAndRoute([{url:"self-heal.js",revision:"49bd63adb25a09341f8d2610e8bd3c76"},{url:"push-sw.js",revision:"4e0b714c0ea53e85c167e6d8f5b767aa"},{url:"index.html",revision:"f195586ebfca009ff1ab65a425f95b14"},{url:"assets/workbox-window.prod.es5-BBnX5xw4.js",revision:null},{url:"assets/pierre-shiki-wasm-C8ETeZem.js",revision:null},{url:"assets/pierre-light-480U9XYS.js",revision:null},{url:"assets/pierre-dark-CyvmCCZW.js",revision:null},{url:"assets/index-Brbciyfz.css",revision:null},{url:"assets/index-B5YGtmBf.js",revision:null},{url:"assets/PierrePatch-I9x7oqDg.js",revision:null},{url:"apple-touch-icon.png",revision:"1127bb396b4648add53dce3f22c92aee"},{url:"icon-192.png",revision:"c5e01ac58768627e18ee7b8b6a9239ef"},{url:"icon-512.png",revision:"a40638c55e310312457a621c9a0002c8"},{url:"icon-maskable-512.png",revision:"a9b0d962686287452216492cd2247499"},{url:"icon.svg",revision:"c1aee186821798733dd477e69a0ef243"},{url:"manifest.webmanifest",revision:"cf88fbc5755108a7fe0616fa160a8a15"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("/index.html"),{denylist:[/^\/api\//]})),e.registerRoute(({url:e})=>e.pathname.startsWith("/assets/diff-syntax/"),new e.CacheFirst({cacheName:"diff-syntax",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:31536e3})]}),"GET")});
|
|
@@ -97,35 +97,31 @@ on buttonsUnder(root, maxDepth)
|
|
|
97
97
|
return acc
|
|
98
98
|
end buttonsUnder
|
|
99
99
|
|
|
100
|
-
on
|
|
101
|
-
--
|
|
102
|
-
--
|
|
103
|
-
-- off the same web area. Stopping at the shallowest hit both avoids walking a
|
|
104
|
-
-- long transcript and keeps a similarly named control inside a message from
|
|
105
|
-
-- impersonating the workspace action.
|
|
106
|
-
set level to {root}
|
|
107
|
-
set depth to 0
|
|
100
|
+
on childButtonsNamed(root, wanted)
|
|
101
|
+
-- Filter in one Apple event. Reading every button's name separately makes
|
|
102
|
+
-- even a shallow miss depend on the size of the surrounding UI.
|
|
108
103
|
tell application "System Events" to tell process "Conductor"
|
|
109
|
-
|
|
110
|
-
set found to {}
|
|
111
|
-
set nextLevel to {}
|
|
112
|
-
repeat with entry in level
|
|
113
|
-
set node to contents of entry
|
|
114
|
-
try
|
|
115
|
-
repeat with candidate in (get UI elements of node whose role is "AXButton")
|
|
116
|
-
set controlEl to contents of candidate
|
|
117
|
-
if (my axName(controlEl)) is wanted then set end of found to controlEl
|
|
118
|
-
end repeat
|
|
119
|
-
set nextLevel to nextLevel & (get UI elements of node)
|
|
120
|
-
end try
|
|
121
|
-
end repeat
|
|
122
|
-
if (count of found) > 0 then return found
|
|
123
|
-
set level to nextLevel
|
|
124
|
-
set depth to depth + 1
|
|
125
|
-
end repeat
|
|
104
|
+
return get UI elements of root whose role is "AXButton" and name is wanted
|
|
126
105
|
end tell
|
|
127
|
-
|
|
128
|
-
|
|
106
|
+
end childButtonsNamed
|
|
107
|
+
|
|
108
|
+
on workspaceActionButtons(pane, wanted)
|
|
109
|
+
-- The header and git action bar belong to the asserted workspace pane: their
|
|
110
|
+
-- buttons are direct children or inside one group. Never search the whole web
|
|
111
|
+
-- area or recurse into those groups. On a missing Continue, the old ten-level
|
|
112
|
+
-- sweep reached 584 unrelated nodes at depth four and hit the 28s run ceiling.
|
|
113
|
+
-- This also keeps a Continue inside a transcript, composer or modal out of the
|
|
114
|
+
-- candidate set. Keep every match at the shallowest level so ambiguity refuses.
|
|
115
|
+
set found to my childButtonsNamed(pane, wanted)
|
|
116
|
+
if (count of found) > 0 then return found
|
|
117
|
+
repeat with entry in (my axKids(pane))
|
|
118
|
+
set node to contents of entry
|
|
119
|
+
if (my axRole(node)) is "AXGroup" and (my axName(node)) is not "composer" then
|
|
120
|
+
set found to found & (my childButtonsNamed(node, wanted))
|
|
121
|
+
end if
|
|
122
|
+
end repeat
|
|
123
|
+
return found
|
|
124
|
+
end workspaceActionButtons
|
|
129
125
|
|
|
130
126
|
on hasSiblingButtonNamed(controlEl, wanted)
|
|
131
127
|
-- The live merged action is the pair Continue + Archive. Requiring that pair
|
|
@@ -147,11 +143,22 @@ on continueWorkspaceOnNewBranch()
|
|
|
147
143
|
-- state that cannot be reproduced safely from the relay: it checks out a fresh
|
|
148
144
|
-- branch at the PR's target, updates the workspace row, keeps every chat, and
|
|
149
145
|
-- stages Branch continued.md in the selected chat. The relay never writes the
|
|
150
|
-
-- database;
|
|
146
|
+
-- database; the HTTP route watches `workspaces.branch` for the receipt.
|
|
151
147
|
set strips to my tabGroups()
|
|
152
148
|
if (count of strips) is 0 then error "couldn't find the chat pane to continue from"
|
|
153
|
-
|
|
154
|
-
set found to
|
|
149
|
+
set strip to item 1 of strips
|
|
150
|
+
set found to {}
|
|
151
|
+
-- Focusing a workspace starts its asynchronous PR refresh. Give the native
|
|
152
|
+
-- action time to appear, using only the bounded pane read on each attempt.
|
|
153
|
+
repeat with attempt from 1 to 8
|
|
154
|
+
my assertWorkspace(strip)
|
|
155
|
+
tell application "System Events" to tell process "Conductor"
|
|
156
|
+
set pane to value of attribute "AXParent" of strip
|
|
157
|
+
end tell
|
|
158
|
+
set found to my workspaceActionButtons(pane, "Continue")
|
|
159
|
+
if (count of found) > 0 then exit repeat
|
|
160
|
+
if attempt < 8 then delay 0.25
|
|
161
|
+
end repeat
|
|
155
162
|
if (count of found) is 0 then error "Conductor isn't offering Continue for this workspace - it appears after its pull request is merged and refreshed"
|
|
156
163
|
if (count of found) > 1 then error "more than one Continue button is visible - close any dialog and try again"
|
|
157
164
|
set continueEl to item 1 of found
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "conductor-remote",
|
|
3
|
-
"version": "1.121.
|
|
3
|
+
"version": "1.121.2",
|
|
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.",
|