Add turbo mode

This commit is contained in:
Jack Kingsman
2026-01-08 20:22:39 -08:00
parent b9fd96ac46
commit 541d66020b
6 changed files with 555 additions and 538 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -4,7 +4,7 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>RemoteTerm for MeshCore</title>
<script type="module" crossorigin src="/assets/index-Buy_tNL1.js"></script>
<script type="module" crossorigin src="/assets/index-B4aoszDr.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-C3_XTTUI.css">
</head>
<body>
+4 -4
View File
@@ -17,7 +17,7 @@
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"lucide-react": "^0.562.0",
"meshcore-hashtag-cracker": "^1.3.1",
"meshcore-hashtag-cracker": "^1.4.0",
"nosleep.js": "^0.12.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
@@ -2439,9 +2439,9 @@
}
},
"node_modules/meshcore-hashtag-cracker": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/meshcore-hashtag-cracker/-/meshcore-hashtag-cracker-1.3.1.tgz",
"integrity": "sha512-0isl0fdb+WA+baBT1uCOnsfpgcO4I8+7n4DWMyzgM/QjXrcMss/scKCUwik4PshKx+uzWxIpsvIRSmGmZooznA==",
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/meshcore-hashtag-cracker/-/meshcore-hashtag-cracker-1.4.0.tgz",
"integrity": "sha512-CfDFueRIz6bHHdBT4yQSSrGS6JEKKn+yiw5tIHfW2tTP7LhNRo084OlURXhLk+30PVPGNNUBA2M4ZnxLZe55MQ==",
"license": "MIT",
"dependencies": {
"@michaelhart/meshcore-decoder": "^0.2.7",
+1 -1
View File
@@ -20,7 +20,7 @@
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"lucide-react": "^0.562.0",
"meshcore-hashtag-cracker": "^1.3.1",
"meshcore-hashtag-cracker": "^1.4.0",
"nosleep.js": "^0.12.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
+17
View File
@@ -33,6 +33,7 @@ export function CrackerPanel({ packets, channels, onChannelCreate, onRunningChan
const [maxLength, setMaxLength] = useState(6);
const [retryFailedAtNextLength, setRetryFailedAtNextLength] = useState(false);
const [decryptHistorical, setDecryptHistorical] = useState(true);
const [turboMode, setTurboMode] = useState(false);
const [progress, setProgress] = useState<ProgressReport | null>(null);
const [queue, setQueue] = useState<Map<number, QueueItem>>(new Map());
const [crackedRooms, setCrackedRooms] = useState<CrackedRoom[]>([]);
@@ -49,6 +50,7 @@ export function CrackerPanel({ packets, channels, onChannelCreate, onRunningChan
const retryFailedRef = useRef(false);
const maxLengthRef = useRef(6);
const decryptHistoricalRef = useRef(true);
const turboModeRef = useRef(false);
const undecryptedIdsRef = useRef<Set<number>>(new Set());
// Initialize cracker and NoSleep
@@ -136,6 +138,10 @@ export function CrackerPanel({ packets, channels, onChannelCreate, onRunningChan
decryptHistoricalRef.current = decryptHistorical;
}, [decryptHistorical]);
useEffect(() => {
turboModeRef.current = turboMode;
}, [turboMode]);
// Keep undecrypted IDs ref in sync - used to skip packets already decrypted by other means
useEffect(() => {
undecryptedIdsRef.current = new Set(undecryptedGroupText.map(p => p.id));
@@ -221,6 +227,7 @@ export function CrackerPanel({ packets, channels, onChannelCreate, onRunningChan
maxLength: targetLength,
useTimestampFilter: true,
useUtf8Filter: true,
...(turboModeRef.current && { gpuDispatchMs: 10000 }),
},
(prog) => {
setProgress(prog);
@@ -394,6 +401,16 @@ export function CrackerPanel({ packets, channels, onChannelCreate, onRunningChan
: '(messages stream in as decrypted)'}
</span>
)}
<label className="flex items-center gap-2 text-sm text-muted-foreground cursor-pointer">
<input
type="checkbox"
checked={turboMode}
onChange={(e) => setTurboMode(e.target.checked)}
className="rounded"
/>
Turbo mode (experimental)
</label>
</div>
{/* Status */}