symbiot 0.62.1 → 0.63.0
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 +4 -0
- package/README.md +1 -1
- package/desktop.mjs +9 -15
- package/icon.ico +0 -0
- package/icon.svg +1 -33
- package/icons/icon-ferro-small.svg +1 -0
- package/icons/icon-ferro.svg +1 -0
- package/icons/icon-glass-small.svg +1 -0
- package/icons/icon-glass.svg +1 -0
- package/icons/icon-pearl-small.svg +1 -0
- package/icons/icon-pearl.svg +1 -0
- package/package.json +7 -6
- package/server.mjs +1 -1
- package/ui.mjs +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
What each Symbiot release brought, newest first. When Approve bumps the version, it writes that release here from the tasks it approved, worded as release notes by your connected AI (or in the tasks' own words without one). The app shows the releases newer than yours under "What's new" when it offers an update, and once more after you update.
|
|
4
4
|
|
|
5
|
+
## 0.63.0
|
|
6
|
+
|
|
7
|
+
- **The Android app is built again.** 0.62.1's release went out without its APK: a link to a build folder on this computer had been committed by mistake, so GitHub's build couldn't make the folder. It's gone, and the ignore rule now covers a link as well as a folder. 0.63.0 carries 0.62.1's phone fix (setup going to **Your computer**).
|
|
8
|
+
- **Symbiot's new mark.** The app's own orb, lit the way Home lights it, with an S inside in the two colours Symbiot already speaks in: the silver of agents at work above, the amber of "needs you" below. It's everywhere: the app-menu, Start-menu and dock icon (in each look: Ferrofluid's black chrome, Glass's clear droplet, Pearl's mirror), the window and tab icon (a simpler drawing at small sizes), the app's header (the old green dot is gone), setup, the Windows, Mac and Linux installers (the Mac one inside Apple's icon grid), the tray and the Mac menu bar, the Android app and its notifications, and symbiot.co.za, which now has a sharing image for links.
|
|
5
9
|
## 0.62.1
|
|
6
10
|
|
|
7
11
|
- **A phone that had Symbiot before goes to "Your computer" first.** Installing the new app over an older one kept the old app's setup, already started at "Meet Symbiot", so the phone went on to "Your AI" and asked to install Claude Code, and never offered to pair with your computer. An unfinished setup on a phone that isn't paired now opens on **Your computer** (scan the QR your computer shows, or type its address and code), once; "No computer" carries on as before. Checked on the Android emulator: 0.59.0, then 0.62.0 over it (the problem), then this over that (fixed).
|
package/README.md
CHANGED
|
@@ -248,7 +248,7 @@ are inside it (the same builds Termux installs), and it shows Symbiot full scree
|
|
|
248
248
|
with its own icon.
|
|
249
249
|
|
|
250
250
|
- **Install:** on your phone, download `symbiot-aarch64.apk` from the
|
|
251
|
-
[latest release](https://github.com/
|
|
251
|
+
[latest release](https://github.com/GAWdessey/symbiot/releases/latest)
|
|
252
252
|
(or copy `symbiot-<version>-aarch64.apk` over from a computer that built it)
|
|
253
253
|
and open it (allow your browser or file manager to install apps). Android may warn that the
|
|
254
254
|
app was built for an older version of Android. That's on purpose: it's what lets
|
package/desktop.mjs
CHANGED
|
@@ -160,21 +160,15 @@ function autostartContent(node, script, platform = OS, path = process.env.PATH |
|
|
|
160
160
|
// new Node, a moved install), so it never points at something gone.
|
|
161
161
|
const launcherFile = (home = homedir()) => join(home, ".local", "share", "applications", "symbiot.desktop");
|
|
162
162
|
const launcherIcon = (home = homedir()) => join(home, ".local", "share", "icons", "hicolor", "scalable", "apps", "symbiot.svg");
|
|
163
|
-
|
|
164
|
-
//
|
|
165
|
-
//
|
|
166
|
-
//
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
const base = readFileSync(ICON_SRC, "utf8"), c = LOOK_COLOURS[look];
|
|
173
|
-
if (!c) return base;
|
|
174
|
-
return base.replace('stop-color="#1B1D22"', `stop-color="${c.bg[0]}"`).replace('stop-color="#08090B"', `stop-color="${c.bg[1]}"`)
|
|
175
|
-
.replace('stop-color="#3A3D44"', `stop-color="${c.orb[0]}"`).replace('stop-color="#121317"', `stop-color="${c.orb[1]}"`).replace('stop-color="#030304"', `stop-color="${c.orb[2]}"`)
|
|
176
|
-
.replace('stop-color="#B0466E" stop-opacity="0.55"', `stop-color="${c.rim}" stop-opacity="0.45"`)
|
|
177
|
-
.replace(/stop-color="#F2A541" stop-opacity="0\.16"/, `stop-color="${c.glow}" stop-opacity="0.18"`);
|
|
163
|
+
// Symbiot's mark in each look (icons/): the Home orb as that look draws it (Ferrofluid's
|
|
164
|
+
// black chrome, Glass's clear droplet, Pearl's mirror), with the S inside in the app's two
|
|
165
|
+
// signal colours: the silver of agents at work, the amber of "needs you". small: the
|
|
166
|
+
// drawing for 16-24 px (a browser tab, the header), with no reflections and a heavier S.
|
|
167
|
+
// The app menu's icon and the window's follow the look you pick (setLauncherLook).
|
|
168
|
+
const ICONS = fileURLToPath(new URL("./icons/", import.meta.url));
|
|
169
|
+
function iconSvg(look = "ferro", { small = false } = {}) {
|
|
170
|
+
const l = ["ferro", "glass", "pearl"].includes(look) ? look : "ferro";
|
|
171
|
+
return readFileSync(join(ICONS, `icon-${l}${small ? "-small" : ""}.svg`), "utf8");
|
|
178
172
|
}
|
|
179
173
|
// The look changed: the app menu's icon follows, if the app menu has Symbiot.
|
|
180
174
|
function setLauncherLook(look, home = homedir()) {
|
package/icon.ico
CHANGED
|
Binary file
|
package/icon.svg
CHANGED
|
@@ -1,33 +1 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" width="256" height="256">
|
|
2
|
-
<title>Symbiot</title>
|
|
3
|
-
<defs>
|
|
4
|
-
<radialGradient id="bg" cx="50%" cy="42%" r="70%">
|
|
5
|
-
<stop offset="0" stop-color="#1B1D22"/>
|
|
6
|
-
<stop offset="1" stop-color="#08090B"/>
|
|
7
|
-
</radialGradient>
|
|
8
|
-
<radialGradient id="orb" cx="40%" cy="34%" r="66%">
|
|
9
|
-
<stop offset="0" stop-color="#3A3D44"/>
|
|
10
|
-
<stop offset="0.45" stop-color="#121317"/>
|
|
11
|
-
<stop offset="1" stop-color="#030304"/>
|
|
12
|
-
</radialGradient>
|
|
13
|
-
<radialGradient id="rim" cx="50%" cy="50%" r="50%">
|
|
14
|
-
<stop offset="0.86" stop-color="#000" stop-opacity="0"/>
|
|
15
|
-
<stop offset="0.97" stop-color="#B0466E" stop-opacity="0.55"/>
|
|
16
|
-
<stop offset="1" stop-color="#F2A541" stop-opacity="0"/>
|
|
17
|
-
</radialGradient>
|
|
18
|
-
<radialGradient id="glow" cx="50%" cy="56%" r="50%">
|
|
19
|
-
<stop offset="0.55" stop-color="#F2A541" stop-opacity="0.16"/>
|
|
20
|
-
<stop offset="1" stop-color="#F2A541" stop-opacity="0"/>
|
|
21
|
-
</radialGradient>
|
|
22
|
-
<linearGradient id="shine" x1="0" y1="0" x2="0" y2="1">
|
|
23
|
-
<stop offset="0" stop-color="#FFFFFF" stop-opacity="0.85"/>
|
|
24
|
-
<stop offset="1" stop-color="#FFFFFF" stop-opacity="0"/>
|
|
25
|
-
</linearGradient>
|
|
26
|
-
</defs>
|
|
27
|
-
<rect width="256" height="256" rx="58" fill="url(#bg)"/>
|
|
28
|
-
<circle cx="128" cy="136" r="96" fill="url(#glow)"/>
|
|
29
|
-
<circle cx="128" cy="128" r="78" fill="url(#orb)"/>
|
|
30
|
-
<circle cx="128" cy="128" r="78" fill="url(#rim)"/>
|
|
31
|
-
<ellipse cx="102" cy="92" rx="30" ry="17" transform="rotate(-28 102 92)" fill="url(#shine)"/>
|
|
32
|
-
<ellipse cx="160" cy="176" rx="22" ry="5" transform="rotate(-30 160 176)" fill="#FFFFFF" opacity="0.12"/>
|
|
33
|
-
</svg>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" width="256" height="256"><title>Symbiot</title><defs><radialGradient id="sg" cx="50%" cy="22%" r="85%"><stop offset="0" stop-color="#131416"/><stop offset="1" stop-color="#08090A"/></radialGradient><clipPath id="sc"><circle cx="128" cy="128" r="84"/></clipPath><filter id="sb2" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="2.2"/></filter><filter id="sb6" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="6"/></filter><filter id="sb12" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="12"/></filter><radialGradient id="sfr" cx="50%" cy="50%" r="50%"><stop offset="0.55" stop-color="#2A2C31" stop-opacity="0"/><stop offset="0.9" stop-color="#2A2C31" stop-opacity="0.55"/><stop offset="1" stop-color="#6A6E76" stop-opacity="0.9"/></radialGradient><linearGradient id="sir" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#7FE3FF"/><stop offset="0.35" stop-color="#C58AF9"/><stop offset="0.7" stop-color="#F29E38"/><stop offset="1" stop-color="#7FE3FF"/></linearGradient><linearGradient id="st" gradientUnits="userSpaceOnUse" x1="100" y1="72" x2="156" y2="128"><stop offset="0" stop-color="#FFFFFF"/><stop offset="0.45" stop-color="#C9CFD9"/><stop offset="1" stop-color="#6F7887"/></linearGradient><linearGradient id="sa" gradientUnits="userSpaceOnUse" x1="100" y1="128" x2="156" y2="184"><stop offset="0" stop-color="#FFF4E2"/><stop offset="0.45" stop-color="#F2A541"/><stop offset="1" stop-color="#7A4A10"/></linearGradient></defs><rect width="256" height="256" rx="58" fill="url(#sg)"/><ellipse cx="128" cy="206.12" rx="65.52" ry="11.760000000000002" fill="#000000" opacity="0.55" filter="url(#sb6)"/><circle cx="128" cy="128" r="84" fill="#030303"/><circle cx="128" cy="128" r="84" fill="url(#sfr)"/><g clip-path="url(#sc)"><path d="M 153.17 87.73 A 28 28 0 1 0 115.73 125.17" fill="none" stroke="#FFFFFF" stroke-opacity="0.35" stroke-width="23" stroke-linecap="round" filter="url(#sb6)"/><path d="M 102.83 168.27 A 28 28 0 1 0 140.27 130.83" fill="none" stroke="#F2A541" stroke-opacity="0.55" stroke-width="23" stroke-linecap="round" filter="url(#sb6)"/><path d="M 153.17 87.73 A 28 28 0 1 0 115.73 125.17" fill="none" stroke="url(#st)" stroke-width="15" stroke-linecap="round"/><path d="M 102.83 168.27 A 28 28 0 1 0 140.27 130.83" fill="none" stroke="url(#sa)" stroke-width="15" stroke-linecap="round"/></g><g clip-path="url(#sc)"><rect x="62" y="58" width="50" height="24" rx="10" transform="rotate(-24 87 70)" fill="#FFFCF7" opacity="0.85" filter="url(#sb2)"/><rect x="192" y="88" width="8" height="70" rx="4" fill="#D9E6FF" opacity="0.45" filter="url(#sb2)"/><ellipse cx="128" cy="206" rx="52.08" ry="9" fill="#998066" opacity="0.35" filter="url(#sb2)"/></g><circle cx="128" cy="128" r="82.8" fill="none" stroke="url(#sir)" stroke-opacity="0.38" stroke-width="2.4"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" width="256" height="256"><title>Symbiot</title><defs><radialGradient id="sg" cx="50%" cy="22%" r="85%"><stop offset="0" stop-color="#131416"/><stop offset="1" stop-color="#08090A"/></radialGradient><clipPath id="sc"><circle cx="128" cy="128" r="96"/></clipPath><filter id="sb2" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="2.2"/></filter><filter id="sb6" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="6"/></filter><filter id="sb12" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="12"/></filter><radialGradient id="sfr" cx="50%" cy="50%" r="50%"><stop offset="0.55" stop-color="#2A2C31" stop-opacity="0"/><stop offset="0.9" stop-color="#2A2C31" stop-opacity="0.55"/><stop offset="1" stop-color="#6A6E76" stop-opacity="0.9"/></radialGradient><linearGradient id="sir" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#7FE3FF"/><stop offset="0.35" stop-color="#C58AF9"/><stop offset="0.7" stop-color="#F29E38"/><stop offset="1" stop-color="#7FE3FF"/></linearGradient><linearGradient id="st" gradientUnits="userSpaceOnUse" x1="97" y1="66" x2="159" y2="128"><stop offset="0" stop-color="#FFFFFF"/><stop offset="0.45" stop-color="#C9CFD9"/><stop offset="1" stop-color="#6F7887"/></linearGradient><linearGradient id="sa" gradientUnits="userSpaceOnUse" x1="97" y1="128" x2="159" y2="190"><stop offset="0" stop-color="#FFF4E2"/><stop offset="0.45" stop-color="#F2A541"/><stop offset="1" stop-color="#7A4A10"/></linearGradient></defs><rect width="256" height="256" rx="58" fill="url(#sg)"/><ellipse cx="128" cy="217.28" rx="74.88" ry="13.440000000000001" fill="#000000" opacity="0.55" filter="url(#sb6)"/><circle cx="128" cy="128" r="96" fill="#030303"/><circle cx="128" cy="128" r="96" fill="url(#sfr)"/><g clip-path="url(#sc)"><path d="M 155.86 83.41 A 31 31 0 1 0 114.41 124.86" fill="none" stroke="#FFFFFF" stroke-opacity="0.35" stroke-width="30" stroke-linecap="round" filter="url(#sb6)"/><path d="M 100.14 172.59 A 31 31 0 1 0 141.59 131.14" fill="none" stroke="#F2A541" stroke-opacity="0.55" stroke-width="30" stroke-linecap="round" filter="url(#sb6)"/><path d="M 155.86 83.41 A 31 31 0 1 0 114.41 124.86" fill="none" stroke="url(#st)" stroke-width="22" stroke-linecap="round"/><path d="M 100.14 172.59 A 31 31 0 1 0 141.59 131.14" fill="none" stroke="url(#sa)" stroke-width="22" stroke-linecap="round"/></g><circle cx="128" cy="128" r="94" fill="none" stroke="#6A6E76" stroke-width="4"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" width="256" height="256"><title>Symbiot</title><defs><radialGradient id="sg" cx="50%" cy="22%" r="85%"><stop offset="0" stop-color="#131416"/><stop offset="1" stop-color="#08090A"/></radialGradient><clipPath id="sc"><circle cx="128" cy="128" r="84"/></clipPath><filter id="sb2" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="2.2"/></filter><filter id="sb6" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="6"/></filter><filter id="sb12" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="12"/></filter><radialGradient id="sfr" cx="50%" cy="50%" r="50%"><stop offset="0.55" stop-color="#2A2C31" stop-opacity="0"/><stop offset="0.9" stop-color="#2A2C31" stop-opacity="0.55"/><stop offset="1" stop-color="#6A6E76" stop-opacity="0.9"/></radialGradient><linearGradient id="sir" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#7FE3FF"/><stop offset="0.35" stop-color="#C58AF9"/><stop offset="0.7" stop-color="#F29E38"/><stop offset="1" stop-color="#7FE3FF"/></linearGradient><linearGradient id="st" gradientUnits="userSpaceOnUse" x1="100" y1="72" x2="156" y2="128"><stop offset="0" stop-color="#FFFFFF"/><stop offset="0.45" stop-color="#C9CFD9"/><stop offset="1" stop-color="#6F7887"/></linearGradient><linearGradient id="sa" gradientUnits="userSpaceOnUse" x1="100" y1="128" x2="156" y2="184"><stop offset="0" stop-color="#FFF4E2"/><stop offset="0.45" stop-color="#F2A541"/><stop offset="1" stop-color="#7A4A10"/></linearGradient></defs><rect width="256" height="256" rx="58" fill="url(#sg)"/><ellipse cx="128" cy="206.12" rx="65.52" ry="11.760000000000002" fill="#000000" opacity="0.55" filter="url(#sb6)"/><circle cx="128" cy="128" r="84" fill="#030303"/><circle cx="128" cy="128" r="84" fill="url(#sfr)"/><g clip-path="url(#sc)"><path d="M 153.17 87.73 A 28 28 0 1 0 115.73 125.17" fill="none" stroke="#FFFFFF" stroke-opacity="0.35" stroke-width="23" stroke-linecap="round" filter="url(#sb6)"/><path d="M 102.83 168.27 A 28 28 0 1 0 140.27 130.83" fill="none" stroke="#F2A541" stroke-opacity="0.55" stroke-width="23" stroke-linecap="round" filter="url(#sb6)"/><path d="M 153.17 87.73 A 28 28 0 1 0 115.73 125.17" fill="none" stroke="url(#st)" stroke-width="15" stroke-linecap="round"/><path d="M 102.83 168.27 A 28 28 0 1 0 140.27 130.83" fill="none" stroke="url(#sa)" stroke-width="15" stroke-linecap="round"/></g><g clip-path="url(#sc)"><rect x="62" y="58" width="50" height="24" rx="10" transform="rotate(-24 87 70)" fill="#FFFCF7" opacity="0.85" filter="url(#sb2)"/><rect x="192" y="88" width="8" height="70" rx="4" fill="#D9E6FF" opacity="0.45" filter="url(#sb2)"/><ellipse cx="128" cy="206" rx="52.08" ry="9" fill="#998066" opacity="0.35" filter="url(#sb2)"/></g><circle cx="128" cy="128" r="82.8" fill="none" stroke="url(#sir)" stroke-opacity="0.38" stroke-width="2.4"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" width="256" height="256"><title>Symbiot</title><defs><radialGradient id="sg" cx="50%" cy="50%" r="75%"><stop offset="0" stop-color="#EEF0F2"/><stop offset="1" stop-color="#E1E4E8"/></radialGradient><filter id="ssoft" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="22"/></filter><clipPath id="stc"><rect width="256" height="256" rx="58"/></clipPath><clipPath id="sc"><circle cx="128" cy="128" r="96"/></clipPath><filter id="sb2" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="2.2"/></filter><filter id="sb6" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="6"/></filter><filter id="sb12" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="12"/></filter><radialGradient id="sgl" cx="45%" cy="40%" r="60%"><stop offset="0" stop-color="#FBFEFF" stop-opacity="0.35"/><stop offset="0.75" stop-color="#FBFEFF" stop-opacity="0.2"/><stop offset="1" stop-color="#FFFFFF" stop-opacity="0.85"/></radialGradient><linearGradient id="st" gradientUnits="userSpaceOnUse" x1="97" y1="66" x2="159" y2="128"><stop offset="0" stop-color="#3B4656"/><stop offset="0.45" stop-color="#3B4656"/><stop offset="1" stop-color="#151A21"/></linearGradient><linearGradient id="sa" gradientUnits="userSpaceOnUse" x1="97" y1="128" x2="159" y2="190"><stop offset="0" stop-color="#FFF4E2"/><stop offset="0.45" stop-color="#F2A541"/><stop offset="1" stop-color="#7A4A10"/></linearGradient></defs><rect width="256" height="256" rx="58" fill="url(#sg)"/><g clip-path="url(#stc)" filter="url(#ssoft)" opacity="0.85"><circle cx="58" cy="70" r="62" fill="#8FC9CC"/><circle cx="206" cy="58" r="58" fill="#FAC999"/><circle cx="134" cy="214" r="64" fill="#B8C2ED"/></g><ellipse cx="128" cy="217.28" rx="74.88" ry="13.440000000000001" fill="#21211F" opacity="0.16" filter="url(#sb6)"/><g clip-path="url(#sc)"><circle cx="128" cy="128" r="96" fill="#EEF1F4"/><g filter="url(#sb12)" opacity="0.9"><circle cx="168" cy="170" r="44" fill="#8FC9CC"/><circle cx="84" cy="162" r="40" fill="#FAC999"/><circle cx="134" cy="80" r="44" fill="#B8C2ED"/></g><circle cx="128" cy="128" r="96" fill="url(#sgl)"/></g><circle cx="128" cy="128" r="95.25" fill="none" stroke="#FFFFFF" stroke-opacity="0.9" stroke-width="1.5"/><g clip-path="url(#sc)"><path d="M 100.14 172.59 A 31 31 0 1 0 141.59 131.14" fill="none" stroke="#F2A541" stroke-opacity="0.45" stroke-width="30" stroke-linecap="round" filter="url(#sb6)"/><path d="M 155.86 83.41 A 31 31 0 1 0 114.41 124.86" fill="none" stroke="url(#st)" stroke-width="22" stroke-linecap="round"/><path d="M 100.14 172.59 A 31 31 0 1 0 141.59 131.14" fill="none" stroke="url(#sa)" stroke-width="22" stroke-linecap="round"/></g><circle cx="128" cy="128" r="94" fill="none" stroke="#5C616B" stroke-opacity="0.45" stroke-width="4"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" width="256" height="256"><title>Symbiot</title><defs><radialGradient id="sg" cx="50%" cy="50%" r="75%"><stop offset="0" stop-color="#EEF0F2"/><stop offset="1" stop-color="#E1E4E8"/></radialGradient><filter id="ssoft" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="22"/></filter><clipPath id="stc"><rect width="256" height="256" rx="58"/></clipPath><clipPath id="sc"><circle cx="128" cy="128" r="84"/></clipPath><filter id="sb2" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="2.2"/></filter><filter id="sb6" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="6"/></filter><filter id="sb12" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="12"/></filter><radialGradient id="sgl" cx="45%" cy="40%" r="60%"><stop offset="0" stop-color="#FBFEFF" stop-opacity="0.35"/><stop offset="0.75" stop-color="#FBFEFF" stop-opacity="0.2"/><stop offset="1" stop-color="#FFFFFF" stop-opacity="0.85"/></radialGradient><linearGradient id="st" gradientUnits="userSpaceOnUse" x1="100" y1="72" x2="156" y2="128"><stop offset="0" stop-color="#3B4656"/><stop offset="0.45" stop-color="#3B4656"/><stop offset="1" stop-color="#151A21"/></linearGradient><linearGradient id="sa" gradientUnits="userSpaceOnUse" x1="100" y1="128" x2="156" y2="184"><stop offset="0" stop-color="#FFF4E2"/><stop offset="0.45" stop-color="#F2A541"/><stop offset="1" stop-color="#7A4A10"/></linearGradient></defs><rect width="256" height="256" rx="58" fill="url(#sg)"/><g clip-path="url(#stc)" filter="url(#ssoft)" opacity="0.85"><circle cx="58" cy="70" r="62" fill="#8FC9CC"/><circle cx="206" cy="58" r="58" fill="#FAC999"/><circle cx="134" cy="214" r="64" fill="#B8C2ED"/></g><ellipse cx="128" cy="206.12" rx="65.52" ry="11.760000000000002" fill="#21211F" opacity="0.16" filter="url(#sb6)"/><g clip-path="url(#sc)"><circle cx="128" cy="128" r="84" fill="#EEF1F4"/><g filter="url(#sb12)" opacity="0.9"><circle cx="168" cy="170" r="44" fill="#8FC9CC"/><circle cx="84" cy="162" r="40" fill="#FAC999"/><circle cx="134" cy="80" r="44" fill="#B8C2ED"/></g><circle cx="128" cy="128" r="84" fill="url(#sgl)"/></g><circle cx="128" cy="128" r="83.25" fill="none" stroke="#FFFFFF" stroke-opacity="0.9" stroke-width="1.5"/><g clip-path="url(#sc)"><path d="M 102.83 168.27 A 28 28 0 1 0 140.27 130.83" fill="none" stroke="#F2A541" stroke-opacity="0.45" stroke-width="23" stroke-linecap="round" filter="url(#sb6)"/><path d="M 153.17 87.73 A 28 28 0 1 0 115.73 125.17" fill="none" stroke="url(#st)" stroke-width="15" stroke-linecap="round"/><path d="M 102.83 168.27 A 28 28 0 1 0 140.27 130.83" fill="none" stroke="url(#sa)" stroke-width="15" stroke-linecap="round"/></g><g clip-path="url(#sc)"><circle cx="90" cy="82" r="7" fill="#FFFFFF" opacity="0.95" filter="url(#sb2)"/><ellipse cx="162" cy="172" rx="22" ry="10" transform="rotate(-35 162 172)" fill="#FFF7EB" opacity="0.45" filter="url(#sb6)"/></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" width="256" height="256"><title>Symbiot</title><defs><radialGradient id="sg" cx="50%" cy="35%" r="85%"><stop offset="0" stop-color="#EDECEA"/><stop offset="1" stop-color="#E2E0DC"/></radialGradient><clipPath id="sc"><circle cx="128" cy="128" r="96"/></clipPath><filter id="sb2" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="2.2"/></filter><filter id="sb6" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="6"/></filter><filter id="sb12" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="12"/></filter><linearGradient id="senv" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#F5F6F7"/><stop offset="0.7" stop-color="#E2E3E6"/><stop offset="1" stop-color="#B9B6B0"/></linearGradient><radialGradient id="spe" cx="50%" cy="50%" r="50%"><stop offset="0.6" stop-color="#FFFFFF" stop-opacity="0"/><stop offset="1" stop-color="#FFFFFF" stop-opacity="0.55"/></radialGradient><linearGradient id="st" gradientUnits="userSpaceOnUse" x1="97" y1="66" x2="159" y2="128"><stop offset="0" stop-color="#3B4656"/><stop offset="0.45" stop-color="#3B4656"/><stop offset="1" stop-color="#151A21"/></linearGradient><linearGradient id="sa" gradientUnits="userSpaceOnUse" x1="97" y1="128" x2="159" y2="190"><stop offset="0" stop-color="#FFF4E2"/><stop offset="0.45" stop-color="#F2A541"/><stop offset="1" stop-color="#7A4A10"/></linearGradient></defs><rect width="256" height="256" rx="58" fill="url(#sg)"/><ellipse cx="128" cy="217.28" rx="74.88" ry="13.440000000000001" fill="#21211F" opacity="0.16" filter="url(#sb6)"/><circle cx="128" cy="128" r="96" fill="url(#senv)"/><circle cx="128" cy="128" r="96" fill="url(#spe)"/><g clip-path="url(#sc)"><path d="M 100.14 172.59 A 31 31 0 1 0 141.59 131.14" fill="none" stroke="#F2A541" stroke-opacity="0.45" stroke-width="30" stroke-linecap="round" filter="url(#sb6)"/><path d="M 155.86 83.41 A 31 31 0 1 0 114.41 124.86" fill="none" stroke="url(#st)" stroke-width="22" stroke-linecap="round"/><path d="M 100.14 172.59 A 31 31 0 1 0 141.59 131.14" fill="none" stroke="url(#sa)" stroke-width="22" stroke-linecap="round"/></g><circle cx="128" cy="128" r="94" fill="none" stroke="#5C616B" stroke-opacity="0.45" stroke-width="4"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" width="256" height="256"><title>Symbiot</title><defs><radialGradient id="sg" cx="50%" cy="35%" r="85%"><stop offset="0" stop-color="#EDECEA"/><stop offset="1" stop-color="#E2E0DC"/></radialGradient><clipPath id="sc"><circle cx="128" cy="128" r="84"/></clipPath><filter id="sb2" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="2.2"/></filter><filter id="sb6" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="6"/></filter><filter id="sb12" filterUnits="userSpaceOnUse" x="0" y="0" width="256" height="256"><feGaussianBlur stdDeviation="12"/></filter><linearGradient id="senv" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#F5F6F7"/><stop offset="0.62" stop-color="#E6E7E9"/><stop offset="0.86" stop-color="#A3A7AE"/><stop offset="0.93" stop-color="#6E737C"/><stop offset="1" stop-color="#9E9991"/></linearGradient><radialGradient id="spe" cx="50%" cy="50%" r="50%"><stop offset="0.6" stop-color="#FFFFFF" stop-opacity="0"/><stop offset="1" stop-color="#FFFFFF" stop-opacity="0.55"/></radialGradient><linearGradient id="st" gradientUnits="userSpaceOnUse" x1="100" y1="72" x2="156" y2="128"><stop offset="0" stop-color="#3B4656"/><stop offset="0.45" stop-color="#3B4656"/><stop offset="1" stop-color="#151A21"/></linearGradient><linearGradient id="sa" gradientUnits="userSpaceOnUse" x1="100" y1="128" x2="156" y2="184"><stop offset="0" stop-color="#FFF4E2"/><stop offset="0.45" stop-color="#F2A541"/><stop offset="1" stop-color="#7A4A10"/></linearGradient></defs><rect width="256" height="256" rx="58" fill="url(#sg)"/><ellipse cx="128" cy="206.12" rx="65.52" ry="11.760000000000002" fill="#21211F" opacity="0.16" filter="url(#sb6)"/><circle cx="128" cy="128" r="84" fill="url(#senv)"/><circle cx="128" cy="128" r="84" fill="url(#spe)"/><g clip-path="url(#sc)"><path d="M 102.83 168.27 A 28 28 0 1 0 140.27 130.83" fill="none" stroke="#F2A541" stroke-opacity="0.45" stroke-width="23" stroke-linecap="round" filter="url(#sb6)"/><path d="M 153.17 87.73 A 28 28 0 1 0 115.73 125.17" fill="none" stroke="url(#st)" stroke-width="15" stroke-linecap="round"/><path d="M 102.83 168.27 A 28 28 0 1 0 140.27 130.83" fill="none" stroke="url(#sa)" stroke-width="15" stroke-linecap="round"/></g><g clip-path="url(#sc)"><rect x="64" y="64" width="52" height="26" rx="11" transform="rotate(-22 90 77)" fill="#FFFFFF" opacity="0.75" filter="url(#sb2)"/><rect x="188" y="92" width="9" height="62" rx="4.5" fill="#FFFFFF" opacity="0.5" filter="url(#sb2)"/></g></svg>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "symbiot",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.63.0",
|
|
4
4
|
"description": "Your week, written from your real work. Reads your local git and writes it up with the AI of your choice \u2014 Claude, OpenAI, Gemini, or a local model.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -57,7 +57,8 @@
|
|
|
57
57
|
"lang.mjs",
|
|
58
58
|
"browser.html",
|
|
59
59
|
"qr.mjs",
|
|
60
|
-
"mdns.mjs"
|
|
60
|
+
"mdns.mjs",
|
|
61
|
+
"icons"
|
|
61
62
|
],
|
|
62
63
|
"engines": {
|
|
63
64
|
"node": ">=18"
|
|
@@ -76,15 +77,15 @@
|
|
|
76
77
|
"developer-tools",
|
|
77
78
|
"cli"
|
|
78
79
|
],
|
|
79
|
-
"author": "Garth White <
|
|
80
|
+
"author": "Garth White <garthwhite507@gmail.com>",
|
|
80
81
|
"license": "Elastic-2.0",
|
|
81
82
|
"repository": {
|
|
82
83
|
"type": "git",
|
|
83
|
-
"url": "git+https://github.com/
|
|
84
|
+
"url": "git+https://github.com/GAWdessey/symbiot.git"
|
|
84
85
|
},
|
|
85
|
-
"homepage": "https://github.com/
|
|
86
|
+
"homepage": "https://github.com/GAWdessey/symbiot#readme",
|
|
86
87
|
"bugs": {
|
|
87
|
-
"url": "https://github.com/
|
|
88
|
+
"url": "https://github.com/GAWdessey/symbiot/issues"
|
|
88
89
|
},
|
|
89
90
|
"dependencies": {
|
|
90
91
|
"@anthropic-ai/sdk": "^0.128.0"
|
package/server.mjs
CHANGED
|
@@ -259,7 +259,7 @@ async function startApp({ bin, since = 7, all = false, c = PLAIN_COLOURS } = {})
|
|
|
259
259
|
// the app's typeface ships in the package (fonts/), so it's there offline
|
|
260
260
|
// the window's own icon (its taskbar entry), the same orb as the app menu's
|
|
261
261
|
if (req.method === "GET" && (u.pathname === "/favicon.svg" || u.pathname === "/favicon.ico")) {
|
|
262
|
-
try { const b = iconSvg(u.searchParams.get("look") || loadConfig().look || "ferro"); res.writeHead(200, { "content-type": "image/svg+xml", "cache-control": "no-cache" }); res.end(b); }
|
|
262
|
+
try { const b = iconSvg(u.searchParams.get("look") || loadConfig().look || "ferro", { small: u.searchParams.get("small") === "1" }); res.writeHead(200, { "content-type": "image/svg+xml", "cache-control": "no-cache" }); res.end(b); }
|
|
263
263
|
catch { res.writeHead(404); res.end(); }
|
|
264
264
|
return;
|
|
265
265
|
}
|
package/ui.mjs
CHANGED
|
@@ -392,6 +392,7 @@ body.lq-light .thinking{background-image:linear-gradient(90deg,#4A5565 0%,#0F172
|
|
|
392
392
|
body{background:var(--ink);color:var(--text);font-family:var(--sans);font-size:14px;display:flex;flex-direction:column}
|
|
393
393
|
header{padding:16px 18px 10px;display:flex;align-items:center;gap:10px}
|
|
394
394
|
.dot{width:10px;height:10px;border-radius:50%;background:var(--green);box-shadow:0 0 12px var(--green)}
|
|
395
|
+
header .dot{width:22px;height:22px;border-radius:6px;background:center/contain no-repeat url('/favicon.svg?small=1');box-shadow:none}
|
|
395
396
|
.brand{font-weight:700;color:var(--bone);font-size:16px}
|
|
396
397
|
.status{margin-left:auto;font-size:12px;color:var(--faint);text-align:right;max-width:52%}
|
|
397
398
|
.tabs{display:flex;gap:6px;padding:0 14px;border-bottom:1px solid var(--line)}
|
|
@@ -1093,7 +1094,7 @@ body.lq-light .btip .bta button:not(.quiet){background:#151A21;color:#FFFFFF}
|
|
|
1093
1094
|
<div id="updatebar" class="updatebar"></div>
|
|
1094
1095
|
<div id="appbar" class="updatebar"></div>
|
|
1095
1096
|
<div id="whatsnew" class="whatsnew"></div>
|
|
1096
|
-
<header><span class="dot"></span><span class="brand">Symbiot</span><span class="ver" id="ver"></span><span id="lqlook" role="radiogroup" aria-label="Look"><button type="button" role="radio" data-look="glass" aria-checked="false">Glass</button><button type="button" role="radio" data-look="ferro" aria-checked="true">Ferrofluid</button><button type="button" role="radio" data-look="pearl" aria-checked="false">Pearl</button></span><span class="status" id="status">...</span></header>
|
|
1097
|
+
<header><span class="dot" role="img" aria-label="Symbiot"></span><span class="brand">Symbiot</span><span class="ver" id="ver"></span><span id="lqlook" role="radiogroup" aria-label="Look"><button type="button" role="radio" data-look="glass" aria-checked="false">Glass</button><button type="button" role="radio" data-look="ferro" aria-checked="true">Ferrofluid</button><button type="button" role="radio" data-look="pearl" aria-checked="false">Pearl</button></span><span class="status" id="status">...</span></header>
|
|
1097
1098
|
<div class="tabs">
|
|
1098
1099
|
<button class="tab active" data-tab="map">Map</button>
|
|
1099
1100
|
<button class="tab" data-tab="board" id="boardtab">Dashboard</button>
|
|
@@ -3652,7 +3653,7 @@ b.querySelectorAll('[data-link]').forEach(function(x){x.addEventListener('click'
|
|
|
3652
3653
|
b.querySelectorAll('[data-check]').forEach(function(x){x.addEventListener('click',function(){x.disabled=true;api('/api/links/check',{id:x.getAttribute('data-check')}).then(function(){onbLoad();});});});
|
|
3653
3654
|
b.querySelectorAll('[data-skip]').forEach(function(x){x.addEventListener('click',function(){api('/api/onboarding/set',{skip:x.getAttribute('data-skip')}).then(function(r){ONB=r;onbRender();});});});
|
|
3654
3655
|
b.querySelectorAll('[data-unskip]').forEach(function(x){x.addEventListener('click',function(){api('/api/onboarding/set',{unskip:x.getAttribute('data-unskip')}).then(function(r){ONB=r;onbRender();});});});}
|
|
3655
|
-
function lqIcon(l){var k=document.querySelector('link[rel=icon]');if(k)k.setAttribute('href','
|
|
3656
|
+
function lqIcon(l){var q='/favicon.svg?look='+encodeURIComponent(l||'ferro'),k=document.querySelector('link[rel=icon]');if(k)k.setAttribute('href',q+'&small=1');var d=document.querySelector('header .dot');if(d)d.style.backgroundImage="url('"+q+"&small=1')";document.querySelectorAll('img.onborb').forEach(function(im){im.src=q;});}
|
|
3656
3657
|
function lqInit(){var bd=document.body;if(!bd||!bd.classList)return;lqIcon(lqLookGet());lqTheme();try{i18nStart();}catch(e){}bd.classList.add('lq-liquid');
|
|
3657
3658
|
['(prefers-color-scheme: light)','(prefers-contrast: more)','(forced-colors: active)','(prefers-reduced-transparency: reduce)','(prefers-reduced-motion: reduce)'].forEach(function(q){try{var mq=window.matchMedia&&window.matchMedia(q);if(mq&&mq.addEventListener)mq.addEventListener('change',lqTheme);else if(mq&&mq.addListener)mq.addListener(lqTheme);}catch(e){}});
|
|
3658
3659
|
if(document.addEventListener){document.addEventListener('contextmenu',function(ev){var b=document.body,t=ev&&ev.target;if(!b||!b.classList||!b.classList.contains('lq-liquid'))return;if(t&&t.closest&&t.closest('input,textarea,select,[contenteditable]'))return;var sel=window.getSelection?String(window.getSelection()):'';if(sel)return;ev.preventDefault();lqBack();});
|