https://gitlab.synchro.net/main/sbbs/-/commit/ee5c974d4d3a606579257d47
Added Files:
src/syncterm/sftp_degraded.c sftp_degraded.h sftp_queue_screen.c sftp_queue_screen.h
Modified Files:
src/syncterm/CMakeLists.txt GNUmakefile sftp_browser.c sftp_queue.c sftp_queue.h ssh.c term.c
Log Message:
SyncTERM: SFTP queue screen, per-BBS persistence, degraded mode
Queue persistence: each BBS's cache dir now holds sftp_queue.ini.
On connect, sftp_queue_attach_bbs() reloads any pending jobs; ACTIVE
rows come back as QUEUED so interrupted transfers restart cleanly.
Every state transition atomically rewrites the file.
Alt-Q opens the queue screen: live per-job progress (done/total %),
sorted ACTIVE first, then QUEUED then terminal rows. Del cancels
the highlighted job; Esc closes. Uses WIN_DYN + gen_ctr polling so
the view updates as workers tick but the bar only repaints on real
change.
Browser keys finalised around uifc's built-in letter-jump: Enter
downloads a file (and stays in the list), Ins uploads, Del cancels.
Directories descend on Enter as before.
Shell-dead degraded mode: if ssh_chan closes while the SFTP queue
still has work, ssh_input/output threads now leave conn_api.terminate
clear so sftp_send and the recv thread keep flowing. term.c's
disconnect branch runs sftp_degraded_run() first — a small overlay
that blocks until the queue drains or the user chooses "Hang up
now" / Esc. Queued-but-unfinished jobs are preserved on disk for
the next connection.
Co-Authored-By: Claude Opus 4.7 (1M context) <
[email protected]>
--- SBBSecho 3.37-Linux
* Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)