Skip to content

Sally v1.0.14#58

Merged
0xeb merged 1 commit into
mainfrom
release/v1.0.14
May 12, 2026
Merged

Sally v1.0.14#58
0xeb merged 1 commit into
mainfrom
release/v1.0.14

Conversation

@0xeb

@0xeb 0xeb commented May 12, 2026

Copy link
Copy Markdown
Owner

Sally v1.0.14

Unicode path preservation across the file manager, plus Find dialog dark-mode polish.

What's new

Unicode paths

  • Panel state and persistence: wide path everywhere, REG_SZ Unicode persistence, wide directory history, wide snooper auto-refresh, Unicode-aware main window class.
  • F5 copy/move from a Unicode source folder (e.g. C:\Temp\zz中文) no longer fails with (123) The filename, directory name, or volume label syntax is incorrect. The leaf is preserved end-to-end through CFileData::NameWBuildScriptFileop.SourceNameWCreateFileW.
  • F4 edit and Alt+F3 external view of files in Unicode folders no longer fail with (267) The directory name is invalid. Routed through ::CreateProcessW with wide command line and working directory.
  • Find dialog "Look in" seeds the Unicode form from the panel's wide cache; edited paths are honored whether the Unicode control activates or not.

Find dialog chrome

  • Dark-mode polish: borders recovered, combo edit rims skinned, theme recursion prevented, advanced controls polished, separators toned down.

Review-fix follow-ups

  • regedt plugin builds clean on x86 again (WINAPI calling-convention fix).
  • SalSplitWindowsPathW no longer scribbles past std::wstring capacity; wide mask is converted to ANSI for the path buffer.
  • CStaticText::AlpDX realloc on both ANSI and wide setters (DBCS-safe).
  • SalParsePathW preserves the split point for existing-file targets.
  • HDROP paste honors pastePath from the shell-extension folder Paste.
  • AskCannotMove/AskCannotMoveErr arg ordering corrected to match the dialog handler.

Verification

  • sally Debug x64 builds clean.
  • plugin_regedt Release x86 builds clean (cmake -A Win32 --target plugin_regedt).
  • 466 gtest cases pass across 12 suites: gtest_panel_path_policy (38), gtest_pathservice (7), gtest_widepath (74), gtest_salwidepath (42), gtest_find_dialog_seed (12), gtest_panel_path_persistence (18), gtest_pathutils (58), gtest_path_identity_policy (4), gtest_splitpath (16), gtest_cpathbuffer_winapi (32), gtest_fsutil_wide (138), gtest_salgetfullname (27).

End-to-end smoke (manual, on a Unicode folder like C:\Temp\SalLongPathTest\zz中文):

  • Navigate in/out of the folder. Title bar and panel path render correctly.
  • F5 copy a Korean-named file (e.g. 한글_Korea_22a_9.txt) to an ASCII destination — completes without error 123.
  • F4 on the same file — Notepad opens with the file contents.
  • Alt+F3 on the same file — external viewer opens.
  • F3 (internal viewer) on the same file — opens.
  • Find dialog from the folder — zz中文 renders in Look-in; edited search target is honored.

Issues addressed

Notes

  • Internal VERSINFO_SALAMANDER_* constants are unchanged (consistent with prior 13 releases — version comes from the git tag).
  • Squashed from local sally w (commits 7d601024, becd6150, fe69fabc); the granular history is preserved locally at tag work-audit-trail.

Unicode path preservation through file ops, F-key launchers, and Find dialog,
plus Find dialog dark-mode polish and the review-comment fixes that followed.

Unicode path preservation
- Panel paths held as wide; REG_SZ Unicode persistence.
- Directory history with wide twins (deferred flush, decoupled serializer).
- Snooper wide variants via FindFirstChangeNotificationW.
- Main window registered Unicode-aware; worker source paths rebound.
- F5 copy/move: CFileData::NameW allocation broadened, BuildScriptFile
  lossy-leaf fallback hardened, pathW refreshed after ANSI path split,
  SourceNameWExplicit / TargetNameWExplicit COperation flags so
  PopulateWidePathsFromAnsi and ReanchorWideSourcePaths preserve
  explicitly-set wide names.
- F4 edit and Alt+F3 view routed through ::CreateProcessW with wide
  cmdLine + cwd; \$(FullPath)/\$(Name)/\$(Path) recovered via post-hoc
  lossy→wide substring substitution (both with- and without-trailing-
  backslash flavors of \$(Path)). Process/thread handles registered
  via HANDLES_ADD so the matching HANDLES(CloseHandle) finds them.
- Find dialog Unicode support: open-as-Unicode dialog, wide seed for
  "Look in", wide-aware combo subclass, post-Transfer override message.
  LookInTextW is authoritative only while the Unicode edit control is
  enabled — invariant enforced at read site, write site, and the
  constructor seed moved to the override handler.

Find dialog dark-mode polish
- Recover Find dialog borders / clean up borders.
- Skin Find combo edit rims; prevent Find combo theme recursion.
- Polish Find advanced controls; tone down Find separators.

Review-comment fixes rolled into the flatten
- regedt plugin x86 C2695: WINAPI + virtual...override on
  GetCurrentPathW to match the new CPluginFSInterfaceAbstract virtual.
- SalSplitWindowsPathW given a dedicated SAL_MAX_LONG_PATH wide buffer;
  wide mask re-converted via WideToAnsi into the ANSI path buffer past
  the null (mask no longer reads stale pre-splitter bytes; DBCS-safe).
- AlpDX wide-capacity tracking via CStaticText::AlpDXAllocated; both
  SetText (ANSI) and SetTextW realloc on demand (DBCS-safe).
- SalParsePathW preserves the split point: boundaryOff = end - buffer
  (correct for both existing-file break and new-dir loop).
- HDROP paste honors pastePath when set by the shell-extension
  context-menu Paste (previously pasted into the panel root).
- AskCannotMove ANSI args repacked to (fileName, destPath, errorText)
  matching the dialog handler and the wide sibling; AskCannotMoveErr
  wrapper updated to pass args in signature order.

Verification: sally Debug x64 builds clean; plugin_regedt Release x86
builds clean (-A Win32); 466 gtest cases pass across 12 suites.

Closes #56.
@0xeb 0xeb merged commit 5261689 into main May 12, 2026
6 checks passed
@0xeb 0xeb deleted the release/v1.0.14 branch May 12, 2026 06:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Unicode folder can't be opened

1 participant