Skip to content

V1.1.0 final updates#354

Open
hummbugg wants to merge 48 commits into
tjackenpacken:masterfrom
hummbugg:v1.1.0-final-updates
Open

V1.1.0 final updates#354
hummbugg wants to merge 48 commits into
tjackenpacken:masterfrom
hummbugg:v1.1.0-final-updates

Conversation

@hummbugg

@hummbugg hummbugg commented May 10, 2026

Copy link
Copy Markdown

This pull request prepares the v1.1.0-unofficial release and consolidates all improvements made since v1.0.2-unofficial.

This release focuses on usability improvements, stability fixes, shortcut/icon compatibility enhancements, update/versioning improvements, taskbar identity corrections, and major documentation updates.

Core Improvements

  • Enforced single-instance application behavior using a named mutex
  • Improved modal dialog behavior for the New Group editor
  • Added ESC-to-cancel support
  • Renamed Exit button to Cancel for standard dialog behavior
  • Eliminated dialog flicker/reopen behavior during modal close

Shortcut & Icon Improvements

  • Fixed .lnk shortcut launching reliability using UseShellExecute
  • Added hover tooltips for shortcut icons
  • Fixed custom .ico group icon loading
  • Added indexed .lnk icon extraction support using ExtractIconEx
  • Fixed incorrect shortcut icons for applications such as TechSmith Camtasia
  • Improved compatibility with applications using indexed icon resource files

User Experience Enhancements

  • Remember last-used folder for:
    • Select Group Icon dialog
    • Create New Shortcut dialog
  • Locked form/dialog sizes to prevent non-responsive layout distortion
  • Added original author attribution link to the UI

Versioning & Update System

  • Updated GitHub release/version checks to use the hummbugg fork
  • Implemented normalized version display logic between EXE version and GitHub release tags
  • Replaced color-based update indicators with hyperlink-based update notification behavior
  • Latest version becomes clickable only when an update is available

Taskbar / Identity Fixes

  • Updated AppUserModelID values from tjackenpacken namespace to hummbugg namespace
  • Corrected taskbar icon/grouping behavior caused by stale Windows AppUserModelID caching
  • Ensured maintained fork identity is reflected consistently across app and taskbar groups

Build & Stability Improvements

  • Corrected x64 Release configuration inconsistencies
  • Disabled Prefer 32-bit to resolve Release-only icon/dialog problems
  • Ensured Debug and Release builds behave consistently

Documentation

  • Updated README.md with:
    • Maintained fork information
    • Release links
    • Updated screenshots
    • Embedded demo video thumbnail/link
    • Windows unblock instructions
    • Runtime requirement documentation
    • Original author attribution
  • Added README.txt for binary ZIP distribution
  • Added support guidance for downloaded ZIP security blocking
  • Added .NET Framework runtime guidance

Media

  • Added updated screenshots hosted directly in the repository
  • Added YouTube demo video documentation and thumbnail integration

Distribution

  • Prepared portable ZIP release package for v1.1.0-unofficial distribution

This PR represents the finalized v1.1.0-unofficial release candidate branch for the maintained hummbugg fork of Taskbar Groups.

hummbugg added 30 commits May 4, 2026 16:13
Set UseShellExecute to true for launching shortcuts.
This is required for launching .lnk and shell-based apps (e.g., Office, UWP); fixes shortcuts not opening.
Enable UseShellExecute for ProcessStartInfo in OpenFile
Added a tooltip feature to display the shortcut/app name when hovering over the icon, enhancing user experience by distinguishing identical icons.
Add tooltip for shortcut icon hover display
Fix handling of custom .ico files in Select Group Icon dialog

Previously, .ico files were processed using Icon.ExtractAssociatedIcon(), which often returns the Windows file-type icon instead of the actual icon contents. In some cases (especially with modern PNG-based .ico files), this also caused runtime exceptions when loading the icon.

This change updates the .ico handling to use Bitmap(file) instead,
which correctly loads both traditional and PNG-compressed ICO formats.

Behavior preserved:
- .exe files still use ExtractAssociatedIcon() to load embedded app icons
- Standard image formats (.png, .jpg, etc.) continue to load via Image.FromFile()

This fix ensures that user-selected custom icon files display correctly in the group icon preview and are saved properly for use in taskbar groups.
Fix handling of custom .ico files in Select Group Icon dialog

Previously, .ico files were processed using Icon.ExtractAssociatedIcon(), which often returns the Windows file-type icon instead of the actual icon contents. In some cases (especially with modern PNG-based .ico files), this also caused runtime exceptions when loading the icon.

This change updates the .ico handling to use Bitmap(file) instead, which correctly loads both traditional and PNG-compressed ICO formats.

Behavior preserved:
- .exe files still use ExtractAssociatedIcon() to load embedded app icons
- Standard image formats (.png, .jpg, etc.) continue to load via Image.FromFile()

This fix ensures that user-selected custom icon files display correctly in the group icon preview and are saved properly for use in taskbar groups.
Added functionality to prevent multiple instances of the main TaskbarGroups application and to restore the existing window if already running.
Changed the cmdAddGroup_Click method to open the New Group form as a modal dialog, preventing multiple instances.
Add single-instance enforcement and fix New Group dialog instancing

Changes:
- Prevent multiple instances of the main TaskbarGroups application from running
- When a second instance is launched, the existing instance is restored and brought to the foreground
- Convert the "New Group" dialog to a modal window to prevent multiple hidden dialogs from being created

Details:
- Implemented a named mutex in Main() to enforce a single running instance of the main application
- Preserved all existing startup logic, including MainPath initialization and directory setup
- Added Win32 calls (ShowWindowAsync and SetForegroundWindow) to restore and focus the existing window
- Updated the "Add Taskbar Group" button to use ShowDialog(), ensuring only one dialog instance is active at a time

Impact:
- Eliminates confusion during testing caused by hidden or duplicate instances
- Prevents multiple "New Group" dialogs from stacking invisibly
- Improves overall application stability and user experience

Notes:
- Single-instance logic is applied only to the main configuration window (frmClient)
- Taskbar drawer/group windows (frmMain) are unaffected and continue to allow multiple instances as intended
Implemented single-instance enforcement for the application to prevent multiple TaskbarGroups processes from running simultaneously.

- Added a named mutex in Main() to ensure only one instance of the application can run at a time
- If a second instance is launched, it exits immediately instead of creating duplicate windows
- Existing running instance is brought to the foreground instead of spawning a new one
- Preserved all original Main() logic and structure, only adding the mutex functionality

This resolves issues where:
- Multiple instances could run unnoticed
- Testing new builds was confusing when an older instance was still running
- Users could accidentally open multiple copies of the application

This change improves stability and aligns with expected Windows application behavior.
…layout fixes

Major enhancements to the main application form (frmClient) focusing on usability, version handling, and UI stability.

Version System Improvements:
- Replaced color-based update indicator with cleaner hyperlink-based approach
- Added GitHub version retrieval using hummbugg fork instead of original repo
- Implemented normalized version display:
  - Current Version now mirrors GitHub suffix (e.g., -unofficial) for visual consistency
  - Latest Version displays exactly as published on GitHub
- Added logic to compare numeric versions only, ignoring suffixes
- Displays Latest Version as a clickable hyperlink only when an update is available
- Opens GitHub releases page when update link is clicked

UI Enhancements:
- Added "Original Author: tjackenpacken" attribution link to left panel
- Improved layout by dynamically resizing pnlVersionInfo to accommodate new elements
- Locked main window size (FixedSingle, Maximize disabled) to prevent layout distortion

Behavior Improvements:
- Converted "Add Taskbar Group" workflow to modal dialog usage
- Ensures only one New Group dialog can be open at a time

Code Cleanup:
- Removed previous color-based update logic (red/green indicators)
- Removed obsolete version parsing and comparison methods
- Consolidated version handling into new structured helper methods

Result:
- Cleaner and more intuitive update indication (clickable link instead of color guessing)
- Proper attribution to original author
- Improved UI consistency and stability
- Better user experience overall
Significant improvements to the New Group (frmGroup) dialog focusing on usability, correctness, and user experience.

Dialog Behavior Fixes:
- Converted New Group dialog to proper modal behavior
- Replaced legacy Hide/Dispose/Reload logic with standard Close() for modal dialogs
- Eliminated UI flicker where both main form and dialog briefly disappeared on cancel
- Added ESC key support to close the dialog using standard Windows behavior
- Set Cancel button behavior via this.CancelButton for native dialog handling

Usability Improvements:
- Renamed "Exit" button to "Cancel" to better reflect dialog intent
- Ensures consistent and expected modal dialog interaction

File Dialog Enhancements:
- Implemented persistent folder tracking for "Select Group Icon" dialog:
  - Remembers last-used directory across sessions
  - Falls back to Pictures folder if no saved path exists
- Implemented persistent folder tracking for "Create New Shortcut" dialog:
  - Replaces hardcoded Start Menu path
  - Remembers last-used directory for user convenience
- Stores both paths in config directory for persistence

Technical Improvements:
- Resolved namespace conflict between IWshRuntimeLibrary.File and System.IO.File by fully qualifying System.IO.File usage
- Added safe error handling for file read/write operations
- Ensured no impact to existing shortcut/icon logic

Result:
- Much smoother and more predictable dialog behavior
- Eliminates repetitive navigation when selecting icons or shortcuts
- Aligns dialog behavior with standard Windows UX expectations
- Improves overall user workflow efficiency
Minor UI updates to the New Group dialog (frmGroup) to align with improved modal behavior and usability changes.

Changes:
- Updated button text from "Exit" to "Cancel" to better reflect standard modal dialog behavior
- Ensured dialog properties align with modal usage (FixedDialog style, no maximize/minimize)
- Supports ESC-to-cancel workflow introduced in frmGroup.cs

These changes complement the behavioral updates in frmGroup.cs and provide a more intuitive and standard Windows user experience.

Result:
- Clearer user intent (Cancel vs Exit)
- Consistent modal dialog appearance and behavior
- Improved overall UX polish
Improvements to shortcut handling and user interaction within the shortcut user control (ucShortcut).

Shortcut Execution Fix:
- Enabled ProcessStartInfo.UseShellExecute = true
- Ensures proper launching of .lnk shortcuts and associated applications
- Resolves issues where shortcuts would fail to open or behave inconsistently

Tooltip Enhancement:
- Added hover tooltip support for shortcut icons
- Displays the full shortcut path or name when hovering over a shortcut
- Uses IWshRuntimeLibrary to resolve .lnk metadata where applicable

User Experience Improvements:
- Makes shortcut identification easier when icons are ambiguous
- Provides additional context without cluttering the UI

Result:
- Reliable shortcut launching behavior
- Improved usability and discoverability for shortcut items
- More intuitive interaction with grouped shortcuts
…nstance workflow

Enhancements to frmMain to ensure consistent behavior with the new single-instance model and improved process handling.

Changes:
- Ensured frmMain works correctly when launched via command-line arguments from taskbar group shortcuts
- Verified compatibility with AppUserModelID usage so grouped shortcuts do not stack with the main application
- Aligned behavior with single-instance enforcement implemented in client.cs

Stability Improvements:
- Prevents unintended duplicate launcher windows when invoked from existing processes
- Maintains proper positioning behavior using cursor location passed from Main()

Result:
- Reliable behavior when launching taskbar group menus
- Correct grouping/separation of taskbar items
- Improved consistency between main app and shortcut launcher processes
Updated assembly version to 1.1.0.0 to reflect a new feature release.

- Incremented version from previous 1.0.x to 1.1.0.0
- Aligns with GitHub release tag v1.1.0-unofficial
- Supports new version comparison and update detection logic in frmClient
- Ensures correct Current Version display within the application

This version bump corresponds to a minor release including:
- UI improvements
- dialog behavior fixes
- version/update system enhancements
- usability and stability improvements

Result:
- Accurate version reporting in the application
- Proper comparison with GitHub releases
- Consistent versioning between code and release artifacts
…d compatibility.

Updated project configuration to improve Release build reliability and compatibility.

Changes:
- Disabled "Prefer 32-bit" to ensure consistent behavior across Debug and Release builds
- Aligned platform target to x64 for both Debug and Release configurations
- Enabled optimization for Release builds

Bug Fix:
- Resolved issue where Release build failed to properly display or load .lnk icons
- Ensured behavior matches Debug build (previous inconsistency between builds eliminated)

Result:
- Stable and consistent behavior between Debug and Release builds
- Proper shortcut icon handling in Release builds
- Improved compatibility with Windows API Code Pack and shell interactions

This change is critical for distributing a reliable executable to end users.
…zation logic

Implemented single-instance enforcement in the application entry point (client.cs) while preserving all existing initialization logic.

Changes:
- Added a named mutex in Main() to ensure only one instance of TaskbarGroups can run at a time
- If a second instance is launched, it exits immediately instead of starting a duplicate process
- Existing instance is brought to the foreground when possible

Important:
- All original Main() logic was preserved, including:
  - Cursor position capture
  - MainPath initialization
  - Directory creation (JITComp, config, Shortcuts)
  - Elevation retry logic
  - Argument handling for frmMain vs frmClient
- No existing functionality was removed or altered, only extended

Problem Solved:
- Prevents multiple hidden instances from running simultaneously
- Eliminates confusion during testing when older instances remain active
- Ensures newly launched builds behave predictably

Result:
- Application behaves as a proper single-instance Windows application
- Improved reliability and user experience
Update screenshots for README documentation
Updated image paths in README.md to remove 'images/' prefix.
Read this file to get a quick start with download and installation.
Fixed shortcut icon extraction for .lnk files whose IconLocation contains an indexed icon resource.

Problem:
- Some applications such as TechSmith Camtasia store shortcut icons in resource files using an explicit icon index (example: CamtasiaIcons.exe,1)
- Previous logic ignored the icon index and always extracted the default icon
- This caused incorrect generic icons to appear in the Create New Shortcut dialog and cached shortcut icons

Changes:
- Added Win32 ExtractIconEx support
- Added indexed icon extraction helper
- Updated handleLnkExt() to parse and honor IconLocation indices
- Added fallback behavior if indexed extraction fails

Result:
- Camtasia shortcuts now display the correct icon
- Existing shortcuts such as Microsoft Excel continue working correctly
- More compatible with applications using indexed icon resources
Updated the application entry point for the maintained hummbugg fork.

Changes:
- Added single-instance enforcement using a named mutex
- Preserved existing Main() initialization logic
- Restores/brings the existing instance forward when a second launch is attempted
- Updated AppUserModelID values from tjackenpacken to hummbugg
- Ensures the main app and taskbar group windows use the maintained fork identity

Result:
- Prevents duplicate hidden app instances
- Fixes taskbar identity/icon behavior tied to AppUserModelID
- Improves testing reliability and user experience
Updated generated taskbar group shortcuts to use the hummbugg AppUserModelID namespace.

Changes:
- Replaced tjackenpacken taskbar group AppUserModelID with hummbugg namespace
- Keeps generated taskbar group shortcuts aligned with the maintained fork identity

Result:
- Fixes taskbar icon/grouping behavior
- Prevents Windows from reusing stale cached taskbar identity data from the original project
- Keeps generated shortcuts consistent with the updated application identity
… fixes

Enhanced the main application form for the v1.1.0-unofficial release.

Changes:
- Added original author attribution link
- Updated GitHub release/version links to use the hummbugg fork
- Added normalized version display logic
- Added update-available hyperlink behavior
- Removed color-based update indicators
- Locked the main form size to prevent non-responsive layout distortion
- Updated Add Taskbar Group behavior to launch the group editor as a modal dialog

Result:
- Clearer fork attribution
- Cleaner update behavior with clickable release link only when needed
- More stable layout and improved user experience
…handling

Improved the New Group dialog with modal behavior, persistent folder memory, and better shortcut icon compatibility.

Changes:
- Converted dialog behavior to standard modal usage
- Added ESC-to-cancel support
- Replaced legacy Hide/Dispose/Reload cancel behavior with Close()
- Remember last-used folder for Select Group Icon dialog
- Remember last-used folder for Create New Shortcut dialog
- Fixed custom .ico group icon loading using Bitmap
- Added indexed .lnk icon extraction using ExtractIconEx
- Fixes shortcuts whose IconLocation includes an icon index, such as TechSmith Camtasia

Result:
- Eliminates dialog flicker on cancel
- Prevents repeated folder navigation
- Correctly displays indexed shortcut icons
- Improves compatibility with applications using icon resource files
Updated launcher behavior to remain compatible with the maintained hummbugg fork identity and single-instance workflow.

Changes:
- Ensures taskbar group launcher behavior remains compatible with updated AppUserModelID handling
- Preserves command-line argument based launcher behavior
- Maintains separate taskbar identity for group menu windows

Result:
- Keeps taskbar group menu windows separate from the main app
- Maintains proper taskbar grouping behavior
- Supports the updated application identity model
Updated New Group dialog UI text and properties to better match modal dialog behavior.

Changes:
- Renamed Exit button to Cancel
- Adjusted dialog properties for fixed-size modal behavior where applicable

Result:
- Dialog wording better matches expected Windows behavior
- Prevents misleading Exit terminology
- Improves overall dialog polish
hummbugg added 18 commits May 10, 2026 12:51
Improved shortcut user control behavior.

Changes:
- Enabled UseShellExecute for launching shortcuts and shell-associated items
- Added hover tooltip support for shortcut icons
- Helps identify shortcuts when multiple applications share the same or similar icons

Result:
- .lnk shortcuts launch correctly
- Users can distinguish shortcut entries more easily
- Improves shortcut usability without changing core workflow
Added runtime requirement for .NET Framework and installation link.
Added runtime requirement for .NET Framework 4.7.2 and updated installation instructions.
Set ShowIcon and ShowInTaskbar to false to prevent the app being scene in the taskbar when a taskbar group is clicked. The client still shows its icons.
Thumbnail for Demo Video
Added a demo video section with a thumbnail link to YouTube.
Fixed relative path to thumbnail.
Added demo video section and updated usage tips.
Updated runtime library text
Clarified runtime requirements for Taskbar Groups.
Removed redundant section header for runtime requirements.
Added instructions for unblocking ZIP files and using PowerShell.
Updated README to include new version details and usage instructions.
Added developer information, supported OS and Visual Studio versions, and project dependencies.
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.

1 participant