github luiscuellar31/openscp v1.0.0

latest releases: v1.2.0, v1.1.0
one month ago

The Foundation Update (v1.0.0)

This release establishes a stronger foundation for reliable, cross-platform file transfers, with safer remote operations, smoother workflows, and more robust packaging for macOS and Linux.

Highlights

  • transfers: improve large queues and parallel controls (b859b3a)
  • protocols: add safe protocol-neutral remote operations (d83787e)
  • sites: add initial paths search and duplication (98514e2)
  • app: add asynchronous remote workflows and one-way sync (46170eb)
  • navigation: move scoped favorites to panel toolbars (523d439)
  • i18n: clarify safe SCP transfer modes (3d8928b)
  • security: harden secrets and local file handling (35fc497)
  • platform: harden releases and compatibility (f5e60c1)
  • ui: add favorites manager and Tango states (7d39291)
  • navigation: add clickable path fields (6d66323)
  • ui: add Site Manager empty state (174ccf2)
  • ui: add progressive disclosure to connection dialog (1deb99c)
  • ui: add native upload source picker (1f2c851)
  • accessibility: improve keyboard navigation and focus (3302f4f)
  • ui: auto-hide file panel scrollbars (94542c9)
  • ui: add compact structured credits dialog (ca93e58)
  • ui: streamline transfer queue experience (1c27449)
  • settings: unify layout and staging controls (c4fc3bb)
  • settings: refine responsive section layout (470a652)
  • i18n: add German locale and translations (f071b73)
  • release: carry install guidance with the artifacts (db5067a)
  • demo: add an offline build seeded with sample data (8a903de)
Download and install

Verify downloads

Verify the download first. SHA256SUMS.txt is attached to this release:

shasum -a 256 -c SHA256SUMS.txt --ignore-missing  # macOS
sha256sum -c SHA256SUMS.txt --ignore-missing      # Linux

macOS

Download OpenSCP-1.0.0-arm64-UNSIGNED.dmg on Apple Silicon or OpenSCP-1.0.0-x86_64-UNSIGNED.dmg on Intel, open it, and drag OpenSCP onto Applications.

OpenSCP is not signed with an Apple Developer ID, so macOS blocks the first launch and reports that it cannot check the app for malicious software. To allow it, open System Settings → Privacy & Security, scroll down to the Security section, click Open Anyway next to the message about OpenSCP, and confirm. On macOS 12 and 13 the same setting lives in System Preferences → Security & Privacy → General. The DMG ships these steps as README.txt.

Linux

AppImage, which runs on most distributions:

chmod +x OpenSCP-1.0.0-x86_64.AppImage
./OpenSCP-1.0.0-x86_64.AppImage

Flatpak bundle:

flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user ./OpenSCP-x86_64.flatpak
flatpak run io.github.luiscuellar31.openscp

Replace x86_64 with aarch64 on ARM64 machines.

Full changelog

Fixes

  • ui: guard remote model index access (569c3cc)
  • security: skip SSH host key checks for non-SSH protocols (49b7b99)
  • macos: harden local builds and app bundles (5d34029)
  • ui: rename compare action to sync (e870adf)
  • core: harden remote input and atomic transfers (bdfa319)
  • ui: prevent destructive operations and credential leaks (89f74b7)
  • test: avoid inspecting moved-from secure strings (022aa0c)
  • ci: run SFTP and SCP integration on dev (cd31ccd)
  • ci: avoid holding service log pipe open (a7e801d)
  • ci: validate protocol daemon readiness after launch (e995db0)
  • ci: keep privileged launch logs shellcheck-safe (6470541)
  • ci: secure vsftpd integration configs (8f766a5)
  • build: pass Linux strict quality gates (1e2d060)
  • quality: repair macOS clang-tidy environment (6acf2b9)
  • transfer: propagate late dependency failures (17da848)
  • curl: restore real protocol transfer semantics (464bbc3)
  • ci: scope tsan suppressions to qt boundaries (5043c26)
  • linux: initialize libsecret schema portably (1c8faa2)
  • snap: declare C++ compiler dependency (769d0cb)
  • macos: refresh cached local dependencies (8ef3736)
  • linux: isolate AppImage build cache (6bd424b)
  • transfers: scope download open state to task lifecycle (c195f06)
  • ui: unify path actions and keyboard focus (7cd9f7e)
  • transfers: finish move batches on terminal outcomes (0384eeb)
  • ci: restore Linux baseline compatibility (1669a55)
  • ui: preserve file panel split proportions (f89c82c)
  • core: bound untrusted remote listings (e316687)
  • packaging: harden macOS runtime bundle (4ea21c7)
  • core: enforce secure curl transport policy (88b642a)
  • ui: preserve focus after closing dialogs (838e34f)
  • ui: animate transfer queue window lifecycle (691f181)
  • tests: initialize omitted scenario message field (07c7395)
  • i18n: polish Spanish translation coherence (97bb9b1)
  • i18n: polish French typography and terminology (3899330)
  • i18n: polish Portuguese translation coherence (894692c)
  • settings: align label-less rows with the field axis (a28a284)
  • settings: paint switched pages at their settled size (9a872e8)
  • ci: run the settings key gate without ripgrep (38831fa)
  • ui: hold the connection dialog height contract on short screens (fc3d4ae)
  • core: hand local file handles straight to their owner (e62e93c)
  • ui: correct the dialog height against the real window frame (bd5c99b)
  • settings: keep each store with the application that opens it (0523c98)
  • release: stabilize artifact toolchains (e5cb383)
  • release: install XCB cursor dependency (01937f4)

Performance

  • ui: make model and transfer updates incremental (d1d4a7a)

Refactors

  • settings: make QSettings bindings declarative (213d493)
  • ui: extract shared utilities, remote walker, and saved sites persistence (7596d0a)
  • curl: add shared backend helper module (c50b9d9)
  • curl: reuse shared helpers in FTP and WebDAV clients (7232131)
  • transfer: split scheduler and worker into explicit pipeline (0b920d6)
  • transfer: centralize task state transitions in TransferManager (20d8b22)
  • core/libssh2: extract Libssh2SftpClient detail modules (da2d4ba)
  • core/libssh2: wire detail modules in Libssh2SftpClient (c7fa939)
  • ui: split connection/disconnection flow and consolidate TOFU handling (0e9cc66)
  • ui: unify local and remote operation flows with shared helpers (5e96ce9)
  • ui: split remote drag staging into explicit phases (b463051)
  • ui: centralize queue selected handlers with task id index (890f73b)
  • transfer: extract queue helpers and simplify task actions (b57fa67)
  • main-window: simplify file operation flows and shared helpers (24de8fb)
  • ui: normalize naming and settings access across dialogs (3e7e69a)
  • ui: reduce LOC in MainWindow and SettingsDialog (3662ab2)
  • transfers: standardize taskId naming across queue and manager (30145c0)
  • ui: rename id/ok bindings to explicit siteId, bindingKey, and isStored (98d146c)
  • ui: improve variable naming for readability and auditability (4fe3dd9)
  • ui: normalize MainWindow member naming (4a5eaf5)
  • transfers: add persistent workers and durable batches (2a2cce2)
  • core: split remote types and share backend helpers (05d4c0e)
  • ui: extract application controllers and services (823a3b0)
  • macos: split packaging helpers by responsibility (6a69bf7)
  • curl: centralize session state and remote paths (fbc9aa8)
  • ui: extract connection coordinators (9bb4ab7)
  • curl: centralize transfer execution (3c0bf8d)
  • settings: centralize application keys (347b13b)
  • ui: extract connection status coordination (07f269b)
  • curl: centralize transfer file lifecycle (4502ba9)
  • transfer: simplify queue state management (fc73b48)
  • ui: reuse protocol-neutral file operation flows (46be200)
  • core: remove legacy protocol capability aliases (f14811d)
  • libssh: replace implementation include fragments (72081ae)
  • tooling: organize build and release commands (4b99c0b)
  • about: embed third-party license information (842ca6b)
  • remove unused APIs and Qt signal paths (02b0e21)
  • core: remove redundant curl forwarding helpers (8c650cb)
  • ui: remove dead state and redundant helpers (3d46495)
  • core: deduplicate libssh2 auth and path guards (dc9fd4a)
  • ui: consolidate repeated traversal and dialog logic (03b928f)
  • internalize private path helpers (3aa652a)
  • ui: centralize remote entry validation (77500a7)
  • tests: share integration test support (2c91568)
  • tests: centralize Qt polling helpers (77aaee0)
  • tests: deduplicate repeated assertions (3449ab0)
  • tests: reuse transfer setup helpers (c6c6cf6)
  • ui: organize sources by responsibility (a7dcc8b)
  • core: organize backends and test support (09309ef)
  • persistence: drop pre-1.0 compatibility (7aa1be4)
  • settings: centralize default staging path (03d34e0)
  • tests: consolidate shared suite helpers (ce637f7)
  • assets: reorganize application icons (8f6caea)
  • assets: rename favorites action icon (c417c49)

Documentation

  • core,ui: improve inline comments and normalize to English (482a7ce)
  • transfers: document configurable parallel transfers (a43b50e)
  • document OpenSCP 1.0 features and workflows (af83490)
  • update favorites and sync guidance (9adaa76)
  • document refactored architecture and verification (2c602e0)
  • document architecture and quality conventions (bc0140a)
  • consolidate project and contributor guidance (cfd3127)
  • readme: show history and settings screenshots (fb58365)
  • readme: restore project context and roadmap (ab6f05e)
  • readme: clarify project identity and roadmap (ed8cfa1)
  • architecture: clarify component ownership and boundaries (9a1451d)
  • development: clarify contributor and platform guidance (bd62236)
  • security: clarify private vulnerability reporting (3c85bab)
  • architecture: replace dependency diagram with layer table (ccd1e61)
  • navigation: document paths and shortcuts (ff0ad41)
  • architecture: document source ownership (bac6222)
  • remove pre-1.0 compatibility wording (bc6eaa9)
  • document build without optional backends (30e6d7b)
  • readme: update branding and screenshots (12c5458)

Maintenance

  • release: bump version references to 1.0.0 (9fe9b0f)
  • scripts: add bump_version helper for synced version updates (139fc0c)
  • add Codeberg mirror workflow (12e6ad8)
  • fix Codeberg mirror fetch on checked-out branch (455714a)
  • add dependabot for github actions (acfae32)
  • harden Codeberg mirror workflow with SSH and access checks (6b4ec72)
  • add retry logic for Codeberg mirror pushes (02f9950)
  • clean trailing blank lines (fdf13a4)
  • transfers: cover batch queues and parallel workers (a036628)
  • app: cover remote workflows and protocol helpers (10cece9)
  • i18n: update translations for OpenSCP 1.0 (161b5e1)
  • protocols: run real FTP FTPS and WebDAV services (95dabb9)
  • security: cover hostile inputs and partial files (15dc283)
  • security: harden release and disclosure workflows (664aab1)
  • ui: cover extracted services and build all test targets (8e46b32)
  • quality: add static analysis and formatting gates (6567d57)
  • i18n: refresh translations after refactor (d97ac94)
  • apply repository-wide clang-format (3a83507)
  • quality: enforce C++ quality gates (954de56)
  • consolidate test infrastructure and registration (071e18b)
  • i18n: refresh translations for connection coordinators (7038d44)
  • validate backup29ago before integration (81611d2)
  • ci: expose failed workflow diagnostics (923407c)
  • ci: expose integration test diagnostics (03e9e46)
  • ci: preserve protocol setup failure details (62d6152)
  • ci: identify protocol service smoke failures (dc2399a)
  • ci: isolate protocol daemon launch failures (e9d9fc5)
  • ci: report vsftpd launch errors (37638c5)
  • limit protocol validation to dev (f5183e4)
  • auto-register harness test cases (04c6ae6)
  • quality: enforce source organization conventions (de44df1)
  • harden and diagnose GitHub workflows (1fa25dc)
  • surface baseline compiler diagnostics (1fa1eaa)
  • isolate libsecret system diagnostics (889cca4)
  • core: remove unused legacy logging header (3101ce2)
  • packaging: include Qt LGPL compliance guidance (a7c05d1)
  • packaging: align application identity and metadata (8b354a9)
  • i18n: refresh translations for UI changes (3293fa5)
  • ui: exercise production navigation targets (7f72e24)
  • i18n: refresh translations after UI cleanup (5c84fe1)
  • ui: remove unused Qt includes (245d5ec)
  • ui: remove remaining unused Qt includes (28b4874)
  • tests: remove unused standard includes (63e816a)
  • ui: cover dialog presentation regressions (4a18f33)
  • ui: support headless dialog lifecycle checks (c718598)
  • gate builds with FTP and WebDAV disabled (2713375)
  • apply clang-format to settings dialog and tests (241aaeb)
  • ui: sample the closing transition before pumping events (57ac1e0)
  • ui: sample the reject transition before pumping events (eb592ad)

Full comparison: v0.9.0...v1.0.0

Don't miss a new openscp release

NewReleases is sending notifications on new releases.