HEX
Server: LiteSpeed
System: Linux houston.panomity.com 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64
User: nudepix (1011)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //tmp/bm_upload_cancel_reassure_patch.cjs
const fs = require('fs');
function replaceExact(file, from, to) {
  let s = fs.readFileSync(file, 'utf8');
  if (!s.includes(from)) throw new Error(`Missing expected text in ${file}: ${from.slice(0,180)}`);
  s = s.replace(from, to);
  fs.writeFileSync(file, s, 'utf8');
}
replaceExact('web/src/modules/photos/UploadPage.jsx',
`    pendingPickerRef.current = null;
    void trackEvent('upload_file_picker_cancel', {`,
`    pendingPickerRef.current = null;
    setMsg('Kein Foto gewählt · nichts wurde übertragen. Öffne die Galerie einfach erneut, wenn du bereit bist.');
    setUploadStep('Abgebrochen bleibt privat: kein Upload, keine Veröffentlichung, keine Anmeldung.');
    void trackEvent('upload_file_picker_cancel', {`);
for (const file of ['scripts/growth-smoke-check.mjs', 'scripts/growth-journey-smoke-check.mjs']) {
  let s = fs.readFileSync(file, 'utf8');
  if (!s.includes('Kein Foto gewählt · nichts wurde übertragen')) {
    s = s.replaceAll("'timeout_no_selection'", "'timeout_no_selection', 'Kein Foto gewählt · nichts wurde übertragen', 'Abgebrochen bleibt privat'");
  }
  fs.writeFileSync(file, s, 'utf8');
}