spi-agent-gui 0.1.1 → 0.1.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/CHANGELOG.md +13 -0
- package/dist/spi.cjs +17 -11
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
- macOS Apple Silicon/Intel candidates remain separate from public Linux releases. Developer ID signing and notarization are not configured.
|
|
6
|
+
|
|
7
|
+
## 0.1.2
|
|
8
|
+
|
|
9
|
+
- Linux x64/arm64 release containing the actual new editable buffer UI (not only Pi's native queue-count status).
|
|
10
|
+
- User-resizable persisted sidebar split, active directory/recent session highlighting and display-only home-path abbreviation.
|
|
11
|
+
- Main-process editable/cancellable outbox with fixed composer overlay, images, follow-up tail appends / newest-steer head insertion, Stop pause/resume and single-use submission/revision protection.
|
|
12
|
+
- Replace sPi permission modes/rule editor with a session-local YOLO checkbox: on automatically replies Allow once to compatible Pi tool approvals; off delegates to Pi without another sPi prompt. Legacy sPi permission files are preserved but no longer applied. Generic dialogs/direct blocks and Stop/close guards remain effective.
|
|
13
|
+
- Secondary processes exit before readiness; owning-window app quit uses the same confirmation/cleanup controller. Runtime sanitization preserves native helper modes and safe relative framework links.
|
|
14
|
+
- Published 0.1.0/0.1.1 assets remain unchanged. This public release is Linux-only; macOS/Windows public distribution remains deferred.
|
|
15
|
+
|
|
3
16
|
## 0.1.1
|
|
4
17
|
|
|
5
18
|
- Original female-spy silhouette icon for the application window, favicon and platform packages.
|
package/dist/spi.cjs
CHANGED
|
@@ -11,7 +11,7 @@ var __commonJS = (cb, mod) => function __require() {
|
|
|
11
11
|
var define_SPI_RELEASE_default;
|
|
12
12
|
var init_define_SPI_RELEASE = __esm({
|
|
13
13
|
"<define:__SPI_RELEASE__>"() {
|
|
14
|
-
define_SPI_RELEASE_default = { version: "0.1.
|
|
14
|
+
define_SPI_RELEASE_default = { version: "0.1.2", repository: "DiamondGo/spi", packageName: "spi-agent-gui" };
|
|
15
15
|
}
|
|
16
16
|
});
|
|
17
17
|
|
|
@@ -4682,7 +4682,7 @@ var require_package = __commonJS({
|
|
|
4682
4682
|
"package.json"(exports2, module2) {
|
|
4683
4683
|
module2.exports = {
|
|
4684
4684
|
name: "spi",
|
|
4685
|
-
version: "0.1.
|
|
4685
|
+
version: "0.1.2",
|
|
4686
4686
|
description: "sPi - Simple Pi Agent GUI",
|
|
4687
4687
|
private: true,
|
|
4688
4688
|
license: "UNLICENSED",
|
|
@@ -4697,6 +4697,7 @@ var require_package = __commonJS({
|
|
|
4697
4697
|
build: "electron-vite build",
|
|
4698
4698
|
"build:icons": "node scripts/icons.cjs",
|
|
4699
4699
|
"test:icons": "node scripts/icons.test.cjs",
|
|
4700
|
+
"test:native-build": "node scripts/native-build.test.cjs && node scripts/macos-integrity.test.cjs",
|
|
4700
4701
|
start: "electron-vite preview",
|
|
4701
4702
|
dist: "node scripts/build-portable.cjs",
|
|
4702
4703
|
"dist:linux": "node scripts/build-portable.cjs",
|
|
@@ -4714,8 +4715,12 @@ var require_package = __commonJS({
|
|
|
4714
4715
|
"test:terminal-smoke": "electron-vite build && node scripts/with-display.cjs scripts/smoke.cjs --terminal",
|
|
4715
4716
|
"test:settings": "node scripts/settings.test.cjs",
|
|
4716
4717
|
"test:settings-smoke": "electron-vite build && node scripts/with-display.cjs scripts/smoke.cjs --settings",
|
|
4717
|
-
"test:
|
|
4718
|
-
"test:
|
|
4718
|
+
"test:yolo": "node scripts/yolo.test.cjs && node scripts/session-bridge.test.cjs",
|
|
4719
|
+
"test:extension-ui": "node scripts/extension-ui.test.cjs",
|
|
4720
|
+
"test:workspace-ui": "node scripts/workspace-ui.test.cjs",
|
|
4721
|
+
"test:workspace-ui-smoke": "electron-vite build && node scripts/with-display.cjs scripts/smoke.cjs --workspace-ui",
|
|
4722
|
+
"test:extension-ui-smoke": "electron-vite build && node scripts/with-display.cjs scripts/smoke.cjs --extension-ui",
|
|
4723
|
+
"test:yolo-smoke": "electron-vite build && node scripts/with-display.cjs scripts/smoke.cjs --yolo",
|
|
4719
4724
|
"test:smoke": "electron-vite build && node scripts/with-display.cjs scripts/smoke.cjs",
|
|
4720
4725
|
"test:advanced": "electron-vite build && node scripts/with-display.cjs scripts/smoke.cjs --advanced"
|
|
4721
4726
|
},
|
|
@@ -4782,7 +4787,7 @@ function version(v) {
|
|
|
4782
4787
|
}
|
|
4783
4788
|
function target() {
|
|
4784
4789
|
const t = process.platform + "-" + process.arch;
|
|
4785
|
-
if (!["linux-x64", "linux-arm64", "win32-x64", "darwin-arm64"].includes(t)) fail("Unsupported platform: " + t);
|
|
4790
|
+
if (!["linux-x64", "linux-arm64", "win32-x64", "darwin-arm64", "darwin-x64"].includes(t)) fail("Unsupported platform: " + t);
|
|
4786
4791
|
if (process.platform === "linux" && !process.report.getReport().header.glibcVersionRuntime) fail("Linux requires glibc; musl is not supported");
|
|
4787
4792
|
return t;
|
|
4788
4793
|
}
|
|
@@ -4847,6 +4852,10 @@ function validateEntries(entries) {
|
|
|
4847
4852
|
}
|
|
4848
4853
|
}
|
|
4849
4854
|
}
|
|
4855
|
+
function checkExtractedLinks(entries, dest) {
|
|
4856
|
+
const base = fs.realpathSync(dest) + path.sep;
|
|
4857
|
+
for (const e of entries) if (e.link && !fs.realpathSync(path.join(dest, e.name)).startsWith(base)) fail("Extracted link escapes destination");
|
|
4858
|
+
}
|
|
4850
4859
|
async function extractTar(file, dest) {
|
|
4851
4860
|
const entries = [];
|
|
4852
4861
|
await tar.t({ file, onReadEntry: (e) => entries.push({ name: e.path, size: e.size, type: { File: "file", Directory: "directory", SymbolicLink: "symlink", Link: "hardlink" }[e.type] || "unsupported", link: e.linkpath }) });
|
|
@@ -4856,10 +4865,7 @@ async function extractTar(file, dest) {
|
|
|
4856
4865
|
const f = path.join(dest, e.name);
|
|
4857
4866
|
fs.chmodSync(f, fs.statSync(f).mode & 511);
|
|
4858
4867
|
}
|
|
4859
|
-
|
|
4860
|
-
const resolved = fs.realpathSync(path.join(dest, e.name));
|
|
4861
|
-
if (!resolved.startsWith(path.resolve(dest) + path.sep)) fail("Extracted link escapes destination");
|
|
4862
|
-
}
|
|
4868
|
+
checkExtractedLinks(entries, dest);
|
|
4863
4869
|
}
|
|
4864
4870
|
async function zipEntries(file) {
|
|
4865
4871
|
return new Promise((resolve, reject) => yauzl.open(file, { lazyEntries: true, strictFileNames: true, validateEntrySizes: true }, (error, zip) => {
|
|
@@ -4931,7 +4937,7 @@ async function extractZip(file, dest) {
|
|
|
4931
4937
|
fs.mkdirSync(path.dirname(out), { recursive: true });
|
|
4932
4938
|
fs.symlinkSync(e.link, out);
|
|
4933
4939
|
}
|
|
4934
|
-
|
|
4940
|
+
checkExtractedLinks(entries, dest);
|
|
4935
4941
|
}
|
|
4936
4942
|
function trustedURL(value) {
|
|
4937
4943
|
const u = new URL(value);
|
|
@@ -5029,7 +5035,7 @@ function readCurrent(root) {
|
|
|
5029
5035
|
if (readJSON(path.join(root, ".spi-owned.json")).owner !== OWNER) fail("Not an sPi install");
|
|
5030
5036
|
const current = readJSON(path.join(root, "current.json"));
|
|
5031
5037
|
version(current.version);
|
|
5032
|
-
if (!["linux-x64", "linux-arm64", "win32-x64", "darwin-arm64"].includes(current.target)) fail("Invalid install target");
|
|
5038
|
+
if (!["linux-x64", "linux-arm64", "win32-x64", "darwin-arm64", "darwin-x64"].includes(current.target)) fail("Invalid install target");
|
|
5033
5039
|
if (current.directory !== "releases/" + current.version + "/" + current.target) fail("Invalid install record");
|
|
5034
5040
|
safeName(current.entry);
|
|
5035
5041
|
safeName(current.permissionExtension);
|