Skip to content

Stable Release 3

Choose a tag to compare

@shefben shefben released this 28 Feb 22:09
· 16 commits to main since this release

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