Skip to content

tibberous/LinSCP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pass175: ship-proof-bundle added; source port remains complete; final live SSH/SFTP + GUI proof can now be generated as one folder. pass173: ship-proof-audit added; source port remains complete; final proof gate now records live SSH/SFTP and GUI clean-install evidence paths. pass172: finish-line-audit added; source porting is finished; ship blockers are live SSH/SFTP proof and clean GUI install/connect smoke.

LinSCP

LinSCP is the Linux-native port target for classic two-pane file-transfer behavior. The current repo is intentionally code-first: old help/manual/pass-log documents were removed because user-facing help needs to be rewritten for the Linux application instead of copied forward.

Current runnable entry points

./linscp --version
./linscp --self-test
./linscp-gui

The root executable is the canonical CLI binary. ./linscp-gui is the current Tk two-pane Linux GUI.

Project / About metadata

  • Project: LinSCP
  • Author/maintainer: Trenton Tompkins trenttompkins@gmail.com
  • Purpose: Linux-native WinSCP-style two-pane transfer client.
  • Porting policy: preserve user-facing workflow, session, script, and protocol behavior while using Linux-native OpenSSH and curl backends instead of carrying unrelated Windows engine internals.
  • Porting attribution: Ported from WinSCP with Love by ChatGTP 5.5 Thinking.
  • Public homepage: https://trentontompkins.com; contact: trenttompkins@gmail.com.
  • Repository: https://github.com/tibberous/LinSCP.
  • License: MIT. LinSCP source files are project-owned work product.

CLI metadata:

./linscp project-info
./linscp about
./linscp --about
./linscp /?
./linscp --usage
./linscp man
./linscp -version

Current MVP features

  • Root Linux CLI executable.
  • Tk two-pane GUI with menubar, local/remote/transfer/view/tools menus, right-click context menus, and keyboard shortcuts.
  • SQLite saved-session/site store with sanitized URLs, rename/delete/export/import commands, and cleaned exported INI sections.
  • Layered SQLite+INI preferences store with setting-list, setting-get, setting-set, setting-delete, and a GUI Preferences dialog.
  • Layered SQLite+INI directory bookmarks with bookmark-save, bookmark-list, bookmark-open, bookmark-delete, plus GUI bookmark controls.
  • INI sync layer that preserves deliberately entered plaintext INI passwords while storing DB passwords only as Argon2id hashes.
  • Live OpenSSH SFTP listing/upload/download through the existing LinSCP protocol seam.
  • Live OpenSSH SCP upload/download through the existing LinSCP protocol seam.
  • Live FTP/FTPS listing/upload/download plus mkdir/delete/rename through native curl.
  • Live WebDAV listing/upload/download plus mkdir/delete/rename through native curl PROPFIND/MKCOL/DELETE/MOVE.
  • Live S3 listing/upload/download plus delete/mkdir-marker/rename through native curl --aws-sigv4.
  • Recursive upload/download, resume, preserve-times, overwrite/skip/fail policies, speed limits, and optional post-transfer checksum verification for SSH-backed single-file transfers.
  • Remote mkdir/delete/rename/chmod/properties/exec/edit, including recursive remote delete, recursive SFTP chmod, SSH-backed remote command calls, and remote-edit download-temp-editor-upload workflow.
  • Host-key fingerprint scan/trust helpers and known_hosts policy controls.
  • OpenSSH key tools: key-generate, key-info, and key-public wrap ssh-keygen for Linux-native identity creation, fingerprint inspection, and authorized_keys output. Connection testing is available through connection-test URL and session-test NAME, with dry-run and live backend probes for supported protocols. SSH terminal launching is available through remote-terminal URL and session-terminal NAME, with --terminal/LINSCP_TERMINAL support for common Linux terminal emulators.
  • GUI queue with run/cancel/retry/clear-finished, SQLite queue persistence/run controls, streamed subprocess output, progress column, transfer byte summaries, and optional Verify checksum mode.
  • SQLite-backed transfer queue with queue-add, queue-list, queue-run, queue-pause, queue-resume, queue-retry, queue-cancel, queue-delete, and queue-clear; queued rows preserve speed limit and verify-checksum intent.
  • Directory compare/synchronize planner: synchronize / sync compares a local folder with a remote listing, supports include/exclude/filemask filtering, can queue recursive folder upload/download transfers into SQLite, can immediately run the newly queued sync set with --run-queue, and can execute mirror deletes with --delete --run-queue (remote deletes for upload mirrors, safe local Trash moves for download mirrors).
  • Installed Linux DB configuration is stored in /etc/linscp/config.ini using SessionDatabase=/var/lib/linscp/linscp.sqlite3; the app auto-creates/upgrades its SQLite tables on startup/store access.
  • System doctor command (system-doctor / doctor) checks Fedora/OpenSSH/curl/SQLite/Argon2 dependencies, /etc/linscp configuration, active DB paths, parent write access, and schema creation.
  • Script-compatible automation MVP: script/script-file execute open, lcd, cd, ls, lls, put, get, mkdir, rm, mv, chmod, edit, call, close, and exit/bye through the same backend seams.
  • GUI saved-site controls for save/open/refresh/rename/delete/export, plus directory bookmark save/open/delete/refresh.
  • Local pane with mkdir/rename/delete-to-Trash/properties.
  • Windows PE icon preview for local executable files when Pillow is installed.
  • .lnk folder-shortcut navigation for safe existing local directories.
  • Desktop integration scaffolding: packaging/linscp.desktop, assets/icons/linscp.svg, make desktop-check, and make desktop-install.
  • Fedora RPM packaging scaffold: packaging/linscp.spec.in, scripts/build-rpm.sh, make rpm-check, make rpm-prep, and make rpm.
  • AppImage packaging scaffold: scripts/build-appimage.sh, make appimage-check, make appimage-prep, and make appimage; appimage-prep builds a portable AppDir even when appimagetool is not installed.
  • Vendored sandbox OpenSSH Debian packages under debs/.
  • Clang AST tooling under vendor/clang/.

Build and validation

make ast
make objects
make build-only
make check-core
python3 -m py_compile linscp-gui
./linscp store-init
./linscp system-doctor
./linscp --self-test

On stock Fedora:

make fedora-deps
make fedora-check
make system-config-print
# Optional installed-system initialization:
# make system-config-install

Optional GUI drag/drop dependency:

make gui-dnd-deps

Optional PE icon preview dependency:

make pe-icon-deps

User-local desktop integration:

make desktop-check
make desktop-install

# Fedora/RPM packaging scaffold:
make rpm-check
make rpm-prep
# On a Fedora builder with rpmbuild installed:
# make rpm

# AppImage portable bundle scaffold:
make appimage-check
make appimage-prep
# With appimagetool in PATH:
# make appimage

Native backend policy

Do not line-port bundled legacy Windows transport engine trees. Preserve the LinSCP-shaped session/protocol/file-operation seams and use Linux-native backends behind them: OpenSSH/libssh for SSH/SFTP/SCP style behavior and libcurl/curl for FTP/FTPS/WebDAV/S3 behavior.

What is still missing

  • Encrypted key-generation/passphrase UX is not wired yet; Pass 081 intentionally generates unencrypted OpenSSH keys by default to avoid leaking passphrases through command-line arguments.

  • Real S3 live-server proof with valid credentials/bucket.

  • True live byte-by-byte progress from backend processes; current progress is preflight byte accounting plus subprocess output.

  • True process-level pause is still implemented as cancel plus queued resume/retry; persisted SQLite queue items can now be paused, resumed, retried, and cancelled.

  • Full production preferences/site-manager parity beyond the current MVP surfaces; site import handles LinSCP INI plus common WinSCP INI host-field sections, but obscure WinSCP registry/export edge cases still need live samples.

  • Full script command parity for obscure/rare commands beyond the current MVP command set. Pass 089 now covers common script pwd, lpwd, stat, synchronize, option confirm, option transfer, and option reconnecttime behavior.

  • Protocol-native checksum/ETag verification for FTP/WebDAV/S3; current post-transfer compare is intentionally SSH-backed SFTP/SCP only.

  • Rewritten Linux help/manual content.

  • Live AppImage .AppImage build still needs appimagetool in PATH; make appimage-prep now creates the AppDir scaffold without it. Live RPM build still needs a Fedora/rpmbuild host.

  • Transfer speed limits: use --speed-limit KBPS on upload/download/script/queue paths; OpenSSH backends use -l, curl-backed backends use --limit-rate.

  • Synchronize masks: use --include "*.php;*.html", --exclude "*.bak;cache/", or WinSCP-style --filemask "*.php;*.html|*.bak;cache/" on synchronize/sync. The GUI has Include/Exclude fields beside the transfer options.

Pass 075 post-transfer checksum verification

LinSCP now has local and SSH-backed remote checksum commands, plus optional post-transfer checksum verification for SFTP/SCP single-file transfers:

./linscp checksum ./file.zip --algo sha256
./linscp remote-checksum sftp://user@example.com/var/www file.zip --algo sha256
./linscp session-checksum SiteName file.zip --algo sha256
./linscp upload sftp://user@example.com/var/www ./file.zip file.zip --verify-checksum --algo sha256
./linscp download sftp://user@example.com/var/www file.zip ./file.zip --verify-checksum --algo sha256

Remote checksums currently use the SSH command channel for SFTP/SCP sessions. --verify-checksum refuses recursive transfers and non-SSH protocols so LinSCP does not give a fake integrity guarantee. FTP/WebDAV/S3 checksum parity should be added later through protocol-specific metadata when available.

Pass 076 site import

LinSCP can now import saved-site INI files instead of only exporting them:

./linscp site-import ./winscp-or-linscp-sites.ini
./linscp session-import ./sites.ini --no-export
./linscp winscp-import ./WinSCP.ini

Supported import shapes include LinSCP exported [Session:Name] sections with Url=... and common WinSCP-style [Sessions\Name] sections with host fields such as HostName, UserName, Protocol, PortNumber, RemoteDirectory, and PublicKeyFile. Imported URLs are sanitized before SQLite storage; plaintext passwords are not copied into the DB.

Pass 078 remote edit

LinSCP now has a remote-edit workflow that downloads one remote file to a temporary local file, opens an editor, and uploads the file back only if it changed:

./linscp remote-edit sftp://user@example.com/var/www index.html --editor "code --wait"
./linscp session-edit MySite index.html --editor nano
./linscp remote-edit sftp://user@example.com/var/www index.html --dry-run --editor true

Editor selection order is --editor, LINSCP_EDITOR, VISUAL, EDITOR, then common Linux open/editor commands. The GUI exposes this as Remote → Edit Remote File and a remote-pane Edit button.

Pass 079 AppImage packaging scaffold

LinSCP can now prepare a portable AppImage directory layout without requiring AppImageKit to be installed:

make appimage-check
make appimage-prep
# If appimagetool is in PATH:
make appimage

make appimage-prep creates dist/appimage/LinSCP.AppDir with AppRun, the CLI, the GUI, the desktop file, icon, and packaged default config. make appimage calls appimagetool when available and otherwise exits honestly with a skipped-missing-appimagetool message.

Pass 080: atomic upload safety

LinSCP now supports --atomic-upload for single-file uploads on remote-rename-capable backends. The core uploads to a temporary remote path such as file.filepart, then renames it to the final target after a successful transfer. Use --atomic-suffix SUFFIX to customize the temporary suffix. This is intended to prevent half-written final files from appearing during failed uploads. SCP is intentionally excluded because SCP does not provide a clean remote rename step without falling back to a separate SSH command.

Pass 081 OpenSSH key tools

LinSCP now exposes Linux-native SSH key helpers instead of keeping the old placeholder key-generator behavior as the only visible surface:

./linscp key-generate ~/.ssh/linscp_ed25519 --type ed25519 --comment production
./linscp key-info ~/.ssh/linscp_ed25519
./linscp key-public ~/.ssh/linscp_ed25519

key-generate refuses to overwrite existing key material unless --force is supplied. Encrypted key generation is intentionally deferred until the UI can collect passphrases without putting secrets on argv. The Fedora dependency is still openssh-clients, which already provides ssh-keygen.

Pass 082 remote symlink support

Pass 082 adds SFTP/OpenSSH remote symlink creation. The new commands are remote-symlink URL TARGET LINKPATH and session-symlink NAME TARGET LINKPATH; dry-run mode records the same facade operation for tests, while live mode uses an OpenSSH sftp batch symlink TARGET LINKPATH command. The script runner now accepts ln -s TARGET LINKPATH and symlink TARGET LINKPATH, and the GUI exposes Create Symlink from the remote toolbar, Remote menu, and right-click context menu.

Pass 083 author/about/project metadata

Pass 083 audits and updates the visible project metadata surfaces: CLI about/project-info/author, GUI About text, config defaults, desktop/package metadata, and README project/about notes. The pass removes the old old placeholder URL and changelog email from the active packaging scaffold.

Pass 084 project author attribution

Pass 084 sets the visible project author to Trenton Tompkins trenttompkins@gmail.com, sets the project homepage to https://trentontompkins.com, and adds the requested attribution string: Ported from WinSCP with Love by ChatGTP 5.5 Thinking.

Pass 085 author/license/repository help metadata

Pass 085 adds the public repository URL https://github.com/tibberous/LinSCP, MIT project metadata, project author Trenton Tompkins <trenttompkins@gmail.com>, author URL https://trentontompkins.com, and attribution Ported from WinSCP with Love by ChatGTP 5.5 Thinking to the main C++ source comments, README files, CLI about/help/version/usage/man aliases, GUI About dialog, desktop metadata, and packaging metadata.

Pass 086 WinSCP-style CLI compatibility and MIT provenance cleanup

Pass 086 adds Linux-side compatibility for common WinSCP slash-style command lines while keeping LinSCP's native command set. The CLI now normalizes /script=FILE, /command "line", /log=FILE, /ini=FILE, and /privatekey=FILE before dispatching into the existing LinSCP script/config/log/key paths. This helps existing automation move over without rewriting every first pass script.

The pass also tightens the MIT project wording: LinSCP source files are project-owned work product.

Pass 089 script parity polish

Pass 089 expands the WinSCP-style script runner instead of adding another thin GUI surface. Scripts now understand pwd, lpwd, echo, help, stat/properties, and synchronize/sync. The synchronize script form maps WinSCP directions (remote, local, both) into LinSCP's upload/download/both synchronize backend and translates common single-dash WinSCP options such as -delete, -mirror, -preview, and -filemask=INCLUDE|EXCLUDE.

Pass 090 saved-site details and clone

Pass 090 adds session-info NAME / site-info NAME for saved-site inspection and site-clone OLD NEW / site-copy OLD NEW for duplicating saved sessions. The info command reports protocol, host, username, remote directory, identity file, source, password-storage mode, and whether a runtime URL came from preserved plaintext INI storage. Clone preserves the sanitized URL and existing DB Argon2 password hash without exposing secrets.

The script option command now records the common modes used by deployment scripts: option batch abort|continue|off, option confirm on|off, option transfer binary|ascii|automatic, and option reconnecttime SECONDS. Interactive confirmation still stays non-interactive in LinSCP; the values are surfaced honestly in script output so existing scripts are easier to migrate and debug.

Example:

./linscp script --dry-run \
  "option batch abort" \
  "option confirm off" \
  "option transfer binary" \
  "open sftp://demo@example.com/tmp" \
  "pwd" \
  "lpwd" \
  "stat README.remote.txt" \
  "synchronize remote . /tmp -preview -delete -filemask=*.ini|*.bak" \
  "close"

Connection testing

LinSCP can now test a raw URL or saved session before a transfer:

./linscp connection-test sftp://user@example.com/var/www --dry-run
./linscp remote-terminal sftp://user@example.com/var/www --terminal xterm --dry-run
./linscp session-test Production --dry-run
./linscp connection-test s3://bucket/path --s3-region us-east-1

The test reports the parsed protocol, backend, host, dependency command, dry-run state, and probe output. Live tests use directory listing for SFTP/FTP/WebDAV/S3 and an SSH pwd probe for SCP-style sessions. The GUI exposes Test URL and Test Saved buttons in the session panel.

Pass 091 saved-site search/filter

Pass 091 adds session-search QUERY / site-search QUERY for WinSCP-style saved-site manager filtering. The command scans saved-session name, protocol, host, username, remote directory, sanitized URL, and source metadata, then emits session-match= rows suitable for GUI population. The GUI now has a Search Sites box/button and menu entries so large saved-site lists can be narrowed without deleting or renaming sessions.

Pass 092 saved-site notes and tags

Pass 092 adds saved-site annotations using the existing SQLite + INI settings layer. session-note NAME [TEXT|--clear] / site-note stores or clears a note for a saved session. session-tags NAME [TAGS|--clear] / site-tags stores or clears comma-separated tags. session-info now displays notes/tags when present, and session-search now searches names, connection metadata, notes, and tags. The GUI adds Note and Tags buttons plus File/Tools menu entries for saved-site annotation.

Pass 093 saved-site groups/folders

Pass 093 adds saved-site grouping using the same SQLite + INI settings layer as notes and tags. session-group NAME [GROUP|--clear] / site-group / session-folder stores a group/folder path for a saved session. session-info displays the group when present, and session-search searches groups alongside names, URLs, notes, and tags. The GUI adds a Group button plus File/Tools menu entries for saved-site grouping.

Pass 094 saved-site pins/favorites

Pass 094 adds saved-site pin/favorite metadata through the existing SQLite + INI settings layer. session-pin NAME on|off|--clear / site-pin / session-favorite marks a saved session as pinned. session-list, session-info, and session-search now show/search pinned favorites, and the GUI adds a Pin/Favorite saved-session action.

Pass 095 saved-site recents/last-used

Pass 095 adds saved-session last-used tracking and recent-site listing. session-touch NAME [ACTION] marks a saved site as used, session-recent [LIMIT] lists the most recently used saved sites, and session-open, session-test, and session-terminal now update last-used metadata automatically. session-list, session-info, and session-search expose the last-used/action fields, and the GUI adds a Recent Sites control/menu path.

Pass 096: added saved-site history lookup with session-history NAME [LIMIT] / site-history, site-doctor, plus GUI History action.

Pass 099

  • Transfer queue portability: queue-export [PATH] and queue-import PATH [--clear] move SQLite-backed transfer queue rows through an INI file for backup, migration, and debugging.

Pass 100

Portable profile backup/restore milestone. Added profile-export [PATH] and profile-import PATH [--clear] so sessions, settings, bookmarks, and transfer queue entries can move together in one INI bundle. Plaintext passwords are intentionally not exported.

Pass 101: added profile-doctor PATH [--strict] / profile-validate to inspect portable profile backups before restore. It validates export metadata, declared-vs-actual counts, sessions, bookmarks, queue rows, and warns if plaintext password-looking fields or password-bearing URLs are present.

Pass 102: added profile-diff PATH [--strict] / profile-compare to preview portable profile restore impact against the current SQLite store. It reports adds, changes, same rows, and current-only rows for sessions, settings, bookmarks, and transfer queue items before import.

Pass 103: added profile-snapshot [PATH_OR_DIR] / profile-backup plus profile-import --backup-before / --backup-path PATH so users can create a safety snapshot before restoring a portable profile. GUI now has Snapshot Portable Profile and import can snapshot before clearing/replacing data.

Pass 104: added profile-import PATH --dry-run / --preview so a portable profile restore can run the profile doctor plus diff preview without writing sessions, settings, bookmarks, or queue rows. The GUI import flow can preview before committing, and the CLI reports clear/backup intent while keeping the database unchanged.

Pass 105: added portable profile category filters. profile-export and profile-import now support --only sessions,settings,bookmarks,queue, --without queue, plus --sessions-only, --settings-only, --bookmarks-only, and --queue-only so restores can target one profile area without touching the rest.

Pass 106: added transfer queue doctor validation. queue-doctor [ID|--all] [--strict] / transfer-queue-doctor checks queued upload/download rows before execution, including URL parsing, backend command availability, local source/download parent paths, identity/known-host/password handoff paths, speed limits, verify-checksum constraints, atomic-upload constraints, and S3 region hints. The GUI now exposes Queue Doctor from the queue toolbar, Transfer menu, and queue context menu.

Pass 107: added transfer queue summary reporting. queue-summary / queue-stats reports queue counts by state, direction, protocol, runnable rows, paused/cancelled/done/failed counts, recursive rows, checksum-verification rows, atomic-upload rows, speed-limited rows, and newest modified timestamp. The GUI exposes Queue Summary beside Queue Doctor.

Pass 108: added transfer queue prune/cleanup. queue-prune / queue-clean can preview or delete finished, failed, cancelled, skipped, or selected queue states, with optional --older-than-days N age filtering. The GUI exposes Prune Queue beside Queue Summary.

Pass 110: added queue-run preflight safety. queue-run ID --preflight and queue-run --all --doctor now run Queue Doctor first and abort before changing queue rows when validation fails. --strict makes warnings fail the preflight. The GUI exposes a Run Checked Queue action.

Pass 112 clean repo pass

Removed leftover unrelated-engine/reference-scope wording, removed the unnecessary terminal compatibility alias, added PROVENANCE.md, and confirmed no upstream reference trees are shipped in this repo. /winscp can stay as an external temporary reference tree only.

Pass 113: added in-place transfer queue editing. queue-edit ID|latest / queue-update can safely preview or update stored SQLite transfer queue rows without deleting/recreating them. Supported fields include URL, local/remote paths, direction, state, recursive/resume/preserve flags, conflict policy, identity/known-host/password handoff, S3 region/endpoint, speed limit, checksum verification, and atomic upload settings. The GUI exposes Edit Queue from the queue toolbar, Transfer menu, and queue context menu.

Pass 114: added queue requeue/reset support. queue-requeue ID|--all / queue-reset can preview or reset failed, cancelled, done, skipped, or paused SQLite transfer rows back to queued, queued-dry-run, or paused without recreating the rows. The GUI exposes Requeue Queue from the queue toolbar, Transfer menu, and queue context menu. Pass 115: added transfer queue import preview. queue-import PATH --dry-run / --preview parses the queue INI, reports planned imported rows, honors --clear as intent only, and does not write or delete SQLite rows. GUI Import Queue now offers a preview-first flow.

Pass 116: added transfer queue repair. queue-repair [ID|--all] [--dry-run|--strict] normalizes stored queue rows, fixes common imported/stale metadata such as empty state/conflict policy, cancelled/canceled spelling, negative speed limits, and missing atomic suffixes, while refusing rows with unsafe required-field or protocol/direction problems. GUI Repair Queue was added.

Pass 117: added transfer queue planning. queue-plan ID|latest|--all [--dry-run|--runnable-only] prints the exact LinSCP transfer argv and shell-style command that queue-run would execute, including stored dry-run, recursive, conflict, speed-limit, checksum, atomic, SSH, and S3 handoff options. GUI Plan Queue was added so queued transfers can be reviewed before launch. Pass 120: added filtered queue execution. queue-run --matching QUERY and queue-run-search QUERY run only runnable transfer-queue rows that match the same text fields used by queue-search, with optional --limit, --dry-run, and preflight doctor flags. GUI Run Matching Queue was added.

Pass 121: added duplicate queue cleanup. queue-dedupe / queue-deduplicate previews or removes duplicate SQLite transfer rows using the full stored transfer signature, with --dry-run, state filters, and --prefer priority|oldest|latest. GUI Dedupe Queue was added.

Pass 123: added bulk queue state filtering. queue-pause, queue-resume, queue-retry, and queue-cancel now accept --matching QUERY, --limit N, and --dry-run so operators can preview or apply state changes to only the matching transfer rows.

Pass 122: added selected queue export. queue-export-one ID|latest [PATH] / queue-export-selected writes one SQLite transfer queue row to a portable INI so a single transfer job can be shared, inspected, backed up, or re-imported without exporting the whole queue. GUI Export Selected Queue was added.

Pass 125: added priority-aware transfer queue run-order preview with queue-order / queue-run-order and fixed queue-run --all / --matching so it preserves SQLite priority order instead of resorting selected ids numerically. GUI Queue Order preview was added.

Pass 124: added transfer queue failure diagnostics and recovery planning. queue-failures [ID|latest|--all] [--limit N|--logs N] / queue-diagnostics reports failed queue rows, static likely-cause hints, matching recent DB log lines, and safe recovery commands for doctor, repair, plan, requeue, and checked rerun. GUI Queue Failure Diagnostics was added.

Pass 126: added real transfer queue reordering. SQLite transfer queue rows now have sort_order, queue-order and queue-run use priority DESC then sort order, and new commands include queue-move, queue-move-up, queue-move-down, queue-move-top, queue-move-bottom, plus --before / --after / --dry-run. GUI queue parsing now reads sort order, adds Move Up/Down/Top/Bottom buttons and menu entries, and supports internal drag-to-reorder for SQLite-backed queue rows. Queue export/import/profile paths preserve sort order.

Pass 127: added real WinSCP-inspired Generate URL and Find Files behavior. New CLI commands include generate-url, session-generate-url, local-find, and aliases. generate-url can emit safe URLs, optional username/password/host-key variants, Markdown links, and shell commands. local-find supports recursive local search, include/exclude masks, max results, max depth, file-only/directory-only modes, and uses the existing LinSCP/WinSCP-style file-mask engine. The cleaned porting reference was also consolidated by deleting remaining VCL form implementation files after preserving summaries.

Pass 128: added deeper WinSCP script compatibility. Scripts now understand ascii, binary, automatic, mput, mget, send, recv, rmdir, option include, option exclude, option synchdelete, option failonnomatch, option-state listing, and a safe keepuptodate preview mapping. The cleaned porting reference remains reference-only; code lives in /linscp.

Pass 167: added live-test-checklist / live-smoke-checklist to print or write a compact step-by-step Markdown checklist for dry-run and real live proof workflow.

Pass 169: added version-schema-audit/release-audit and bumped schema metadata to 169 so app version, schema version, and post-port status can be checked from one command.

Pass 177 ship proof certificate

Pass 177 adds ship-proof-certificate and GUI Proof Cert. It audits the generated ship proof bundle, live proof log, GUI smoke log, version/schema state, and source-port completion together. It reports certificate-state=certified only after the live and GUI proof logs exist and pass; otherwise it reports pending-proof or incomplete without faking release proof.

Pass 190: archive-root Makefile handoff

Pass 190 changes the distribution ZIP shape so Makefile is at the archive root. Extract into an empty folder and run make. There is no required cd linscp/linscp, and the first-run Makefile target checks/installs Fedora dependencies before building and launching.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors