Stable Release 3
Changelog since bet1.2
Session Restore (rewritten)
- Replaced the per-window GUID-based session system (session-*.db + .db.lock files) with a single coordinated
session.db file - New SessionCoordinator process-wide singleton manages all Explorer windows in one file
- Crash detection simplified to a single session.active marker instead of per-window lock files
- Eliminates the orphan adoption cascade that caused crashes when 10+ stale lock files accumulated from repeated
force-closes - Atomic writes with backup: writes to .tmp, copies to .bak, then atomic MoveFileEx
- Automatic migration from old per-window session files on first load
- Old session-.db, session-.db.lock, session-.db.tmp, session-.db.previous, and global-session.db files are
cleaned up after migration
Folder Backgrounds (rewritten)
- Rewrote the rendering system from API hooking (ExplorerBgTool-derived) to window subclassing on DirectUIHWND /
SHELLDLL_DefView - Added FillRect post-callback integration with ThemeHooks for flicker-free rendering
- New configurable position modes: bottom-right, top-left, top-right, bottom-left, center, stretch, zoom-fill, tile
- Configurable opacity (0-255)
Tab Strip / Groups
- Added vertical drop indicator labels when dragging tabs between groups
- Added inline label popup for editing group names directly on the tab strip
- Indicator rendering now tracks top/bottom coordinates and width for more precise placement
- Added reuseExistingWindow option to navigate in the current window instead of opening new ones
Navigation
- Added TryMatchImplicitNavigation to TabManager for detecting when Explorer navigates on its own (e.g.
double-clicking a folder) and matching it to the correct history entry instead of pushing a duplicate - Fixed forward button showing as disabled but still being clickable
- Fixed backward button looping between the last 2 folders instead of following actual history
- Fixed backward/forward buttons requiring double-click (now single-click)
BHO / Explorer Integration
- Added status bar subclassing with dark mode theming support
- Added Explorer frame window subclassing
- Added deferred breadcrumb toolbar update to avoid race conditions during navigation
Options Dialog
- Major expansion of the options dialog (518 lines added)
- Background position mode and opacity now configurable from the UI
Stability
- Fixed crash when closing Explorer windows
- Fixed crash when opening Explorer for the first time after a previous close
- Fixed crash caused by accumulated orphaned session lock files on startup
- Tons of stability fixes across the teardown path
Removed / Cleaned Up
- Removed all custom ribbon hook code (ExplorerRibbonHook, CustomRibbonTab.xml, ribbon images/docs)
- Removed DirectUI replacement hooks (DirectUIReplacementIntegration, CustomFileListView, ShellTabsListView,
ShellTabsTreeView) - Removed pane hooks (PaneHooks)
- Removed status bar custom draw timeout/retry machinery (replaced with proper subclass)
- Removed ~200 lines of orphan session token discovery/adoption code
- Removed deprecated docs (TODO.md, RIBBON_*.md, DIRECTUI_REPLACEMENT_ARCHITECTURE.md, docs/ folder)
- Removed old crash logs from the repo
Build / Repo
- Added MinHook source files directly to the repo (src/minihook/)
- Added install.bat and renamed registry file to ShellTabs_installer.reg
- Added screenshot images to images/
- Per-tab scroll position preservation across tab switches
- Session data now includes more robust crash-tolerant fields
README
- Complete rewrite covering all current features, architecture, build, install, and troubleshooting