Skip to content

v7.0.43

Choose a tag to compare

@github-actions github-actions released this 16 Jul 18:03
45cf950

RedSalamander v7.0.43 Release Notes

Changes since v7.0.42.

RedSalamander v7.0.43 is a major reliability, security, and device-support release. It adds MTP/PTP access for phones and cameras, redesigns the File Operations popup, introduces version 2 themes and advanced theme authoring, and hardens file transfers, Compare Directories, search, accessibility, settings, plugins, and viewers.

v7.0.42 was published on June 20, 2026. v7.0.43 was published on July 16, 2026.

Highlights

  • Added an MTP/PTP file-system plugin for browsing and transferring files to and from compatible phones, cameras, media players, and other Windows Portable Devices.
  • Redesigned the File Operations popup with aggregate progress, queue controls, compact views, clearer status, better conflict details, and completed-task actions.
  • Added version 2 themes with reusable palettes, color references, derived colors, system colors, and stable dynamic color functions.
  • Added Dracula and Catppuccin Latte, Frappe, and Mocha themes, with their upstream license information.
  • Strengthened cross-file-system transfers against path traversal, invalid plugin output, partial moves, stale objects, and unsafe temporary-file handling.
  • Improved Compare Directories and search/index correctness, especially around cancellation, partial results, moves, conflicts, and unknown-size streams.
  • Hardened all major viewer plugins, plugin unloading, accessibility, text input, graphics-device recovery, settings recovery, and application shutdown.
  • Expanded deterministic tests, performance checks, ARM64 validation, and build/test diagnostics.

MTP/PTP Portable Devices

v7.0.43 adds FileSystemMtp.dll, a Windows Portable Devices plugin for MTP/PTP devices.

  • Browse connected phones, cameras, media players, and compatible device storage as RedSalamander file-system roots.
  • Create MTP connections through a dedicated Connection Manager device and storage picker without entering credentials or raw device identifiers.
  • Save stable device identity hints so a renamed device can still be recognized when Windows exposes a persistent identifier.
  • Use read-only profiles by default; explicitly enable writes only for an approved device or storage profile.
  • Read files as streams without downloading the entire file before the first byte is returned.
  • Create folders, upload files, delete items, rename items in the same parent, and use device-native copy/move where the device supports those operations.
  • Fall back to streamed download/upload for supported file copy and move operations when native device operations are unavailable.
  • Preserve duplicate sibling names through stable identity suffixes instead of exposing an ambiguous path.
  • Fail ambiguous unsuffixed mutations safely rather than selecting an arbitrary device object.
  • Stage writes until commit so abandoning an uncommitted writer does not create a final device object.
  • Replace existing files through a temporary sibling, verification, persistent-object identity check, and final rename instead of an unsafe direct overwrite.
  • Recover or quarantine interrupted overwrite journals after a crash without blindly deleting device objects.
  • Keep the original file when upload, verification, original deletion, or final rename fails where recovery is still possible.
  • Report partial move failures honestly when a destination was created but the source could not be deleted.
  • Serialize operations per device, reuse WPD sessions and path caches, and refresh stale size or object information when required.
  • Detect hung or disconnected devices with watchdogs, return promptly, request WPD cancellation, and defer plugin unload until blocked work exits.
  • Provide a Disconnect command that releases the plugin session without claiming to perform Windows hardware safe removal.
  • Include Czech, French, Japanese, and Slovak MTP resource satellites.

MTP v1 does not provide native directory watching, indexed search, alternate data streams, random writes, or guaranteed directory copy/move fallback. Device behavior and writable capabilities still depend on the hardware and its WPD implementation.

File Operations Popup

The File Operations popup received a substantial product and usability redesign.

  • Added a persistent global footer with aggregate progress, live task counts, throughput, ETA when available, and a details chevron.
  • Added Queue and Parallel controls for choosing how newly accepted tasks start.
  • Added Start now for an individual queued task without changing the global mode.
  • Added bulk Pause all and Resume all controls for started tasks.
  • Added a compact/expanded density setting and a footer-only mode that remembers the previous expanded window placement.
  • Added clearer per-task status stripes, glyphs, and chips for running, waiting, paused, conflict, partial, failed, canceled, and completed states.
  • Added compact task rows with determinate mini-progress only when a real byte or item denominator exists.
  • Automatically collapse newly completed cards while preserving explicit user expansion choices.
  • Group two or more retained completed tasks under a collapsible Completed (N) section with a group-level Clear command.
  • Added completed-task actions for opening the destination, revealing a completed item, inspecting failed items, showing logs, and exporting issues when applicable.
  • Excluded completed cards from live footer totals, taskbar progress, and need-attention counts even when those cards remain visible.
  • Made unknown totals correctly force indeterminate aggregate and taskbar progress instead of displaying misleading percentages.
  • Improved taskbar progress updates while the popup is hidden or minimized.
  • Improved speed and ETA handling for callback silence, extremely low rates, non-finite values, and very large values.
  • Improved bandwidth graphs with stable per-stream colors, fairer concurrent-stream attribution, and a current effective-bandwidth marker.
  • Added reduced-motion behavior for segmented controls, popup resizing, progress marquees, and graph animation.
  • Stacked source and destination conflict paths so long paths retain useful width.
  • Added size and local modified-time metadata to conflict rows when the provider can supply it without reading file contents.
  • Delayed local-file Overwrite until metadata confirms the destination is a replaceable file, and removed it for file-on-directory conflicts.
  • Improved minimum-width layout and localized-label fallback so footer controls remain usable without overlap.

Keyboard navigation and UI Automation for the hand-rendered File Operations popup are not complete in this release; this remains a documented accessibility follow-up.

File Operations and Cross-File-System Transfers

The file-operation engine and provider bridge received broad data-safety, security, and performance hardening.

  • Reject untrusted provider child names containing separators, escape components, control characters, reserved names, or other invalid destination components before composing local paths.
  • Prevent remote, archive, or plugin-provided names from escaping the selected destination root.
  • Validate plugin-reported read and write byte counts against the host-owned buffer before using them for memory access, progress, or integrity accounting.
  • Use less predictable temporary staging names and safer atomic finalization where the destination supports it.
  • Keep temporary staging and cleanup bounded and recoverable when a transfer fails.
  • Preserve first meaningful worker errors instead of replacing them with synthetic cancellation results.
  • Improve per-item conflict handling so one collision does not unnecessarily abort an entire directory merge.
  • Name the affected file in conflict reporting where that information is available.
  • Delete only source items proven to have been copied successfully during a move, reducing partial-move data-loss risk.
  • Reuse copy-time verification evidence and destination-only validation to avoid redundant full rereads after large cross-provider moves.
  • Improve unknown-size stream handling, including delivery of buffered tail bytes before end of file.
  • Pin cloud-object revisions during ranged reads and report revision mismatch instead of silently combining bytes from different object versions.
  • Improve S3 multipart upload overlap, Graph upload-session abort behavior, Curl end-of-stream handling, and 7z terminal decode/CRC reporting.
  • Apply the same fail-closed traversal policy to reparse-point files and directories.
  • Cap application-owned bridge and provider payload memory and reduce unnecessary metadata pre-scans.
  • Keep bandwidth throttling waits outside shared locks so concurrent work remains responsive.
  • Improve copy, move, delete, rename, and batch callback indexing across local, S3, Microsoft Drive, Google Drive, Curl-backed, 7z, dummy, and MTP providers.

Compare Directories

Compare Directories received a large correctness and data-safety pass.

  • Build and apply a real difference manifest for synchronization so identical items can be skipped instead of copied again.
  • Preserve per-file conflict decisions and allow unrelated items to continue where provider capabilities permit.
  • Improve retry behavior so already synchronized files do not produce repeated conflicts.
  • Improve sync copy/move safety for unknown-size streams and plugin-backed sources.
  • Correct relative-path normalization and edge cases involving roots, separators, case rules, trailing spaces, and dots.
  • Improve selection restore and invert behavior for non-file roots.
  • Keep compare options and pane state consistent when settings change.
  • Improve cache coherence, cancellation, worker completion, memory bounds, and stale-result handling.
  • Reject unsupported or invalid operations explicitly rather than hanging or reporting false success.

Search and Indexing

  • Make Intersect and Subtract result updates transactional so a canceled, failed, or stale search does not silently clear valid results.
  • Preserve usable partial results after cancellation.
  • Improve stale-result payload checks before applying worker results to the UI.
  • Keep result rows stable until requested move or delete operations actually succeed.
  • Improve indexed-search journal replay for renamed and moved folders.
  • Improve residual index correctness when files or directories change during an update.
  • Validate untrusted search-service protocol counts and lengths before allocation or use.
  • Isolate Debug and Release search-service state so one build configuration does not interfere with the other.
  • Improve invalid or unsafe regular-expression reporting instead of silently returning misleading results.
  • Refine Quick Search focus, matching, editing, and cancellation behavior.

Themes

v7.0.43 introduces required formatVersion: 2 theme files and a more expressive authored color model.

  • Define reusable values in a palette and map them to application semantic keys under colors.
  • Use references and transforms including ref, lighten, darken, alpha, blend, and contrast.
  • Use perceptual and accessibility-aware functions including perceptualTone, ensureContrast, and harmonize.
  • Use system and light/dark sources including systemAccent, systemColor, and tone.
  • Use stable runtime variation through seededRainbow and seededChoice on supported semantic keys.
  • Compile dynamic color programs when a theme is resolved so paint-time evaluation performs no parsing, allocation, locking, system query, callback, or I/O.
  • Keep Windows Contrast Themes authoritative over application and dynamic theme output.
  • Keep the last valid live theme when a hot reload contains an invalid expression, missing reference, cycle, invalid dynamic target, or unsupported version.
  • Preserve palette entries, references, and functions when duplicating, importing, exporting, previewing, or editing a theme instead of flattening them to literal colors.
  • Make Rainbow follow the current Windows light/dark preference while keeping item colors stable between paints.
  • Add Dracula and Catppuccin Latte, Frappe, and Mocha themes.
  • Migrate Forest Mist, Neon Tokyo, Paper & Ink, Retro Terminal, Solar Flare, and Ugly to the version 2 model.
  • Include exact upstream license texts and third-party notices for Dracula and Catppuccin.
  • Expand generated theme galleries and contrast checks across built-in and shipped themes.

Version 1 and missing-version standalone themes are rejected in v7.0.43. Preferences remains the normal place to select, duplicate, preview, import, and export themes; advanced palette and dependency authoring belongs to RedConfigure.

RedConfigure

  • Added an advanced Themes workbench for palette creation, rename, delete, duplication, import, reset, and dependency-aware editing.
  • Added reference rewriting, dependency and affected-token inspection, source/use/contrast metadata, recipes, and fixed-seed previews for dynamic functions.
  • Added before/after batch review and focused previews for dynamic and perceptual color functions.
  • Validate graphs and export paths before writing, preserve authored JSON5 structure, write atomically, and reparse exported files before reporting success.
  • Keep the previous valid preview when an edit introduces a reference cycle or another invalid graph.
  • Improve the localization review workflow, placeholder validation, owner/language selection, missing-translation reporting, and per-owner/culture export.
  • Improve startup, workspace discovery, binary-file handling, and error recovery in localization and theme workflows.
  • Expand Czech, Japanese, and Slovak RedConfigure resources. RedConfigure still does not ship a French satellite in this repository.

DxUi, Accessibility, and Text Input

  • Fix pointer-routing lifetime hazards when event handlers destroy or detach controls during dispatch.
  • Improve capture, hover, outside-click, wheel, menu, tree, grid, combo-box, and native text-input routing.
  • Build immutable accessibility snapshots on the UI thread so off-thread UI Automation providers do not walk live retained controls.
  • Improve UI Automation dispatch cancellation and teardown so destroyed windows do not leave long waits or stale callbacks.
  • Improve Narrator and accessibility behavior for grids, trees, menus, combo boxes, text fields, window hosts, and dynamically changing controls.
  • Improve text caret, selection, hit-testing, and geometry for emoji, surrogate pairs, CJK, tabs, right-to-left text, and bidirectional text.
  • Keep the Text Services Framework thread manager active for the UI-thread lifetime instead of deactivating it during normal focus or modal-window churn.
  • Improve Direct2D/DirectWrite device-loss recovery so windows rebuild resources after graphics resets instead of remaining stale or blank.
  • Improve high-contrast status signaling and reduced-motion behavior across shared controls.
  • Improve shared grid, rendering, layout, and accessibility test coverage.

Folder Views, Navigation, and Everyday UI

  • Reduce redundant FolderView layout and DirectWrite text-layout work on refresh, resize, selection, and scrolling paths.
  • Improve icon and thumbnail background enrichment, stale-result rejection, and teardown behavior.
  • Improve drag/drop and clipboard operation validation, including provider identity and data-integrity checks.
  • Improve incremental search, selection restoration, enumeration freshness, and error overlays.
  • Improve breadcrumb and full-path popup behavior around DPI, focus, case-only paths, and provider changes.
  • Improve status-bar, function-bar, shortcut-window, themed-input-frame, alert-overlay, splash-screen, and item-properties behavior.
  • Improve plugin and viewer selection when panes change provider or navigation state.

Viewers

All major viewer plugins received reliability, security, and lifetime improvements.

Image Viewer

  • Keep an owned pixel snapshot across the Save dialog so export cannot use an evicted decode-cache buffer.
  • Export through a sibling temporary file and atomically replace the destination only after a successful encode.
  • Initialize COM correctly on decode workers so WIC formats such as PNG, GIF, BMP, TIFF, and related metadata paths remain reliable.
  • Improve malformed image, TIFF, EXIF, orientation, allocation, cancellation, and close-path handling.

Web Viewer

  • Escape generated script payloads and add a Content Security Policy for generated JSON, JSONL, Markdown, and related HTML views.
  • Use deny-by-default navigation and private-origin handling for rendered or staged content.
  • Improve exact-read bounds, PDF staging cleanup, asynchronous loading, teardown, and module lifetime.
  • Fail closed when security hooks or settings required for protected rendering are unavailable.

Text Viewer

  • Improve text and hex-mode agreement for selection, searching, short reads, encoding conversion, and fallback behavior.
  • Improve geometry and measurement for tabs, variable-width text, CJK, Unicode, and streamed content.
  • Make keep-original and export paths use verified temporary output and atomic finalization.

Other Viewers

  • Improve ViewerVLC discovery and load libvlc.dll from validated explicit locations without changing the process-wide DLL directory.
  • Improve ViewerPE scheduling, malformed-input handling, resources, and terminal fallback behavior.
  • Improve ViewerSqlite cancellation, latest-request scheduling, blocked-provider close behavior, and result lifetime.
  • Improve ViewerSpace scan cancellation, path safety, final totals, and teardown.

Settings, External Actions, and Shutdown

  • Recover invalid settings sections independently where possible instead of discarding unrelated valid settings.
  • Preserve invalid inline theme source data for repair when it can be safely round-tripped.
  • Continue backing up an unsupported whole settings file as .bad.<UTC timestamp> before restoring defaults.
  • Keep the previous valid runtime settings when a hot reload fails.
  • Save pane paths, history, view state, menu state, and window placement through a non-modal session-end path during logoff, restart, or shutdown.
  • Require external-action executable paths to be explicit absolute drive, UNC, extended, or supported-macro paths after expansion.
  • Preserve relative or bare executable settings for repair but force them disabled instead of resolving them through PATH or the current working directory.
  • Improve file-action identifier handling, association reload, user-menu settings, and parameterized command dispatch.
  • Improve connection secret handling and cleanup, profile validation, credential prompts, and plugin-specific configuration.

Plugin and Process Security

  • Restrict default DLL searches in RedSalamander and RedLauncher to trusted system and application locations.
  • Launch packaged processes with the package directory as the working directory.
  • Centralize plugin module lifecycle handling across file-system and viewer managers.
  • Stop producers, clear callbacks, drain in-flight delivery, release instances, and defer unload until asynchronous plugin work reaches a quiet point.
  • Keep plugin modules mapped while callbacks, workers, WPD cancellation, viewer decode/export, WebView work, or other asynchronous code can still return through them.
  • Improve crash quarantine and suspect-plugin recovery without unloading code that may still be executing.
  • Strengthen plugin capability and byte-count contracts for third-party providers.

Third-party file-system plugins should be retested with v7.0.43. The host now enforces stricter path-component, byte-count, callback, capability, and unload contracts and fails invalid provider behavior rather than trusting it.

Performance and Responsiveness

  • Reduce redundant full-content verification reads for successful cross-provider moves while preserving deletion safety.
  • Overlap supported S3 multipart upload work and improve cloud transfer streaming.
  • Reduce unnecessary directory pre-scans and high-latency metadata calls.
  • Keep file-operation throttling and callback work from holding shared scheduler locks.
  • Bound transfer payload memory and improve cancellation responsiveness.
  • Reduce FolderView layout, text-layout, icon, and thumbnail work in measured hot paths.
  • Reduce idle taskbar and popup redraws while keeping hidden-window progress current.
  • Compile dynamic theme programs outside paint paths and validate resolver performance with deterministic scenarios.
  • Expand performance metrics for file operations, MTP, FolderView, themes, viewers, search, compare, and startup.

Localization and Documentation

  • Add localized MTP resources for Czech, French, Japanese, and Slovak.
  • Expand localized strings for viewers, file operations, themes, Batch Rename, plugin states, validation, and recovery paths.
  • Strengthen positional-placeholder validation so translated resource strings preserve arguments and formatting contracts.
  • Update the Themes guide for version 2 files, palettes, expressions, Rainbow behavior, RedConfigure authoring, shipped themes, and licensing.
  • Update Preferences, Settings File, User Guide, DxUi, Developer Guide, and localization documentation for the new contracts.
  • Add refreshed theme galleries for built-in, Rainbow light/dark, Dracula, Catppuccin, and migrated file themes.
  • Add the v7.0.42 historical release note to the repository.

Some newly introduced or advanced maintenance UI may still fall back to English in language packages with incomplete translations.

Build, Test, and Diagnostics

This release includes a large internal quality pass that supports the user-facing reliability changes above.

  • Add dedicated CrashHandling, SettingsSchema, localization, plugin-contract, viewer, DxUi, and performance coverage.
  • Expand deterministic selftests for file operations, Compare Directories, MTP, search, commands, preferences, settings, navigation, and plugin configuration.
  • Add hostile-provider and fault-injection scenarios for short reads, invalid byte counts, cleanup failures, partial moves, cancellation, stale results, and plugin teardown.
  • Improve flaky-test isolation, test inventory, sandbox cleanup, process streaming, sanitized environments, archived run evidence, and quarantine reporting.
  • Add stricter resource-localization, theme-distribution, plugin-deployment, shared-helper, and source-contract checks.
  • Expand ARM64 and packaging validation and improve vcpkg-install safety checks.
  • Improve performance-run display, archive management, test-plan selection, build output, and timeout diagnostics.
  • Improve RedSalamanderMonitor document handling and diagnostics collection.

Availability

The v7.0.43 release provides Windows packages for x64 and ARM64. MTP plugin binaries and their language satellites are included in the ZIP, MSIX, and MSI packaging definitions.

Notes for Users

  • MTP profiles are read-only by default. Enable writes only for a device and storage you trust, and remember that hardware capabilities vary.
  • Existing version 1 or unversioned theme files must be converted to formatVersion: 2 before v7.0.43 will load them.
  • Bare or relative external-action executable paths such as notepad.exe are preserved but disabled; configure an explicit absolute or supported-macro path.
  • Web Viewer security restrictions may intentionally block active content or navigation that older builds allowed.
  • Batch Rename still relies on preview and validation as its safety mechanism; automatic completed-operation undo is not introduced by this release.
  • The File Operations popup has improved mouse interaction and status signaling, but full keyboard/UI Automation support for that popup remains future work.

Sources Checked