Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ The highlights below cover repository work from **March through September 2026**

### Plugins and network

- **PictView** decodes and encodes through [WIC](https://learn.microsoft.com/en-us/windows/win32/wic/-wic-about-windows-imaging-codec). The closed-source `pvw32cnv.dll` engine and `salpvenv.exe` envelope are gone. WIC covers mainstream formats plus OS codecs (HEIF, WebP, AVIF, camera RAW), but not the long tail of legacy formats the original engine handled.
- **Reorganize** previews a folder reorganization in a `reorg:` panel and applies the reviewed moves through the host operation script. Plans are UTF-8 `.reorgplan` files. The plug-in does not copy files or delete them permanently.
- **FTP/FTPS** uses Windows SChannel (no bundled TLS DLLs). Transfers are transactional and resumable, certificate exceptions are stored more safely, and passive FTPS data-channel TLS plus expired-exception compaction crashes were fixed.
- FTP downloads keep an existing local file intact while receiving data into a unique sibling `.salftp-*.part` file. The matching `.meta` file records ownership and verified resume checkpoints. A move deletes its remote source only after local validation, flush, metadata, publication, and checked completion succeed. Cancellation or failure can leave these private files for a later retry; keep them together. Resume requires a matching remote version and unchanged local evidence. Legacy, corrupted, named-stream, reparse-point, or ambiguous publication states require manual inspection; a `.previous` sibling retains the old destination when publication cleanup cannot finish. Restart never replays remote deletion.
- Bundled engines were upgraded: [7-Zip 26.02](src/plugins/7zip/doc/upgrade-26.02.md), zlib, SQLite (with defined recovery behavior), bzip2, and cmark-gfm.
Expand Down
4 changes: 3 additions & 1 deletion architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -382,11 +382,13 @@ Loading (`CPluginData::InitDLL`, `src/plugins_loading.cpp:2142`) follows this pr

1. Resolve the module path and load the DLL.
2. Obtain `SalamanderPluginEntry`, `SalamanderPluginGetReqVer`, and optional SDK-version exports.
3. Reject incompatible required versions (the current SDK constant is version 103).
3. Reject incompatible required versions (the current SDK constant is version 105).
4. Create the host-side `CSalamanderPluginEntry` gateway and call the plug-in entry point.
5. Obtain `CPluginInterfaceAbstract`, query capability subinterfaces, load configuration, and invoke `Connect`.
6. Register menus, file masks, archive formats, viewer associations, filesystem names, thumbnails, and icons through `CSalamanderConnectAbstract`.

SDK 105 appends `ExecuteOperationSteps`, `EnumApplicationPathReferences`, and `GetApplicationDataDirectory` on `CSalamanderGeneralAbstract`. The Reorganize plug-in (`src/plugins/reorganize`) plans moves in a `reorg:` panel and asks the host to run the compiled steps through the existing durable operation script. The host does not copy or permanently delete for those steps. A step script keeps the plug-in loaded until `Finished` is delivered on the main thread.

`CPluginInterfaceAbstract` (`src/plugins/shared/spl_base.h:469`) is the root contract. Capability flags and getters expose optional archive, viewer, menu-extension, filesystem, and thumbnail-loader interfaces. Common callbacks cover configuration, lifecycle events, history clearing, password-manager events, and path changes.

The two largest capability families are:
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1,340 changes: 1,340 additions & 0 deletions preview-spec.md

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions src/operation_journal.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ const char* OpcodeName(COperationCode opcode)
case ocMoveDir: return "move-dir";
case ocDeleteDir: return "delete-dir";
case ocDeleteDirLink: return "delete-dir-link";
case ocCopyDirTime: return "copy-dir-time";
default: return NULL;
}
}
Expand Down
Loading
Loading