Development requirements for all five applications.
- Each is a standalone x64 executable with its entry point and application tests.
- Use the shared inline imaging headers and dependent libraries directly for image loading and manipulation. Keep UI, resources, settings, worker scheduling and final file publication in the application. See libiw-plan.md.
- Debug executables end in
d; binaries, settings and logs all live inexe\. - Keep version resources in each application's directory:
ImageWalker.rcfor 1.0,Ver.handImageWalker.rcfor 2.x, andapp.rcfor 3.0. UseImageWalker 1.0and1.0.0.0in 1.0's version resource and test the product name against its application title. Follow architecture-2x.md for 2.x labels. - Settings use an ini file named after the executable. There is no runtime registration and no feature gating.
- All five applications write an executable-specific latest-run log. A second
instance, finding that log held by the first, writes
<exe>-<pid>.logbeside it rather than truncating it. ImageWalker 3.0 writes timestamped UTF-8 diagnostics to that file as well as the debugger and an attached console; inability to open either log is reported. - Image and pixel scratch uses owned containers such as
IW::CBuffer. Fixed stack buffers remain only for small bounded Win32 strings, and in the crash reporter, which runs after a fault and must not allocate. - Background work is an owned work item, and worker code does not send blocking
messages to the UI thread. ImageWalker 3.0 joins its work queues at exit, so
an item that loops over several things polls
platform::exit_token()between them; otherwise a closed app runs on until the batch ends. - A worker-completion payload posted to the UI thread carries ownership, and the
poster reclaims it when the post fails — see
CMainFrame::SignalImageLoadCompleteandSignalSearchingFolder. - Every resource script embeds a local manifest, and the application icon is the lowest-numbered icon resource.
- The four WTL applications use the shared
iw_flagssettings. ImageWalker 3.0 keeps its stricter compiler configuration insrc30/CMakeLists.txt. - All five applications embed the compiled help and open it from an unmarked
copy that
include/core/help_file.hwrites to the user's temporary folder, never from beside the executable: HTML Help shows blank pages for a.chmextracted from a downloaded zip or opened from a network share. ImageWalker 3.0 has its own topic set and opens it through the native HTML Help API, not the WTL helper.
Apply the following safety rules to reviewed batch work in ImageWalker 3.0: Convert, Rename and Sync. Copy, Move and Edit saves run to completion instead. See workflows-3.0.md for usage.
- A plan is immutable once analysed. A change to a source, destination, format or collision policy bumps the generation and discards it.
- A completion carrying a stale generation is dropped, never merged into a newer plan.
- Cancel is partial completion, never rollback. Every row keeps an outcome.
- No plan writes two sources to one destination, and a destination that appears between Review and Run is never silently overwritten.
- A configured external tool is launched only from an executable path discovered on disk, never from text in the configuration file.
- File-task Undo secures originals before destructive writes and records only successful mutations. It never authorizes later external changes by refreshing an untouched path's fingerprint. Recovery copies are not automatically evicted.