Skip to content

Merging Cmder's development branch to master branch#2898

Draft
DRSDavidSoft wants to merge 275 commits into
masterfrom
development
Draft

Merging Cmder's development branch to master branch#2898
DRSDavidSoft wants to merge 275 commits into
masterfrom
development

Conversation

@DRSDavidSoft

@DRSDavidSoft DRSDavidSoft commented Nov 21, 2023

Copy link
Copy Markdown
Contributor

Summary

This PR merges the current development branch on top of master and brings in the accumulated Cmder work since the last sync.

The biggest themes in this branch are:

  • Windows Terminal support and related launcher/runtime updates
  • A refactor of the build/pack scripts around package profiles
  • Workflow/CI cleanup and consistency fixes
  • A batch of shell, launcher, and configuration improvements
  • Documentation and repo hygiene updates

What’s included

Windows Terminal support

This branch adds and refines support for launching Cmder in Windows Terminal, including:

  • new/default Windows Terminal settings
  • launcher updates in Cmder.bat and launcher/src/CmderLauncher.cpp
  • new helper scripts for Git Bash, Mintty, and profile generation
  • updates to shell integration files like vendor/cmder.sh, vendor/profile.ps1, and vendor/psmodules/Cmder.ps1
  • support files for Windows Terminal defaults in vendor/windows_terminal_default_settings.json

Build and packaging refactor

The build system has been modernized to use package profiles and shared helpers:

  • new scripts/package-profiles.json
  • new helper logic in scripts/utils.ps1
  • updated scripts/build.ps1, scripts/pack.ps1, and scripts/update.ps1
  • refreshed examples and documentation in scripts/README.md

This makes the packaging flow more structured and easier to extend.

Workflow and CI updates

The GitHub Actions workflows were cleaned up and aligned with the new scripts:

  • build workflow updates
  • tests workflow updates
  • CodeQL workflow updates
  • vendor workflow updates
  • summary formatting and artifact handling improvements

Cmder launcher and runtime improvements

This branch also includes a substantial update to the launcher and core runtime behavior:

  • launcher project and resource updates
  • CmderLauncher.cpp changes for the new launch flow
  • improvements to Cmder.bat
  • updates to vendor/init.bat, vendor/lib/lib_base.cmd, and vendor/lib/lib_path.cmd
  • shell startup and environment setup cleanup

Documentation and repo hygiene

A number of documentation and maintenance updates are included as well:

  • README.md and config/Readme.md adjustments
  • CHANGELOG.md updates
  • .gitignore and packignore additions
  • .git-blame-ignore-revs for cleaner blame history

Notes

This branch is mostly a consolidation of the Windows Terminal work, launcher/runtime improvements, and packaging refactors that have been developed on development.

Verification

The updated workflows were run successfully on development, including:

  • Build
  • Tests
  • CodeQL

Files touched

This merge includes changes across:

  • GitHub Actions workflows
  • build and pack scripts
  • launcher source
  • Cmder startup and shell integration scripts
  • Windows Terminal defaults and profile generation
  • documentation and changelog files

Keep the PowerShell common parameter at the end of command lines for consistent, readable invocations across workflows and docs. Requested by @DRSDavidSoft.
Restore the build summary artifact link and keep the slim package naming aligned with the open backlog discussion.
Bring back file-type emojis and code-formatted profile headings in the package summary while keeping the new profile-based artifact layout.
@DRSDavidSoft DRSDavidSoft changed the title Cmder development changes Merging Cmder's development branch to master branch Jun 14, 2026
Upload each package file separately again so the build summary can link to the individual artifact downloads, matching the previous behavior.
Comment thread launcher/src/strings.rc2
IDS_TITLE "Cmder Launcher"

IDS_SWITCHES L"Valid options:\n\n /c [CMDER User Root Path]\n /task [ConEmu Task Name]\n /icon [CMDER Icon Path]\n [/start [Start in Path] | [Start in Path]]\n /single\n /m\n /x [ConEmu extra arguments]\n\nor, either:\n /register [USER | ALL]\n /unregister [USER | ALL]"
IDS_SWITCHES L"Valid options:\n\n /c [CMDER User Root Path]\n /task [Windows Terminal Profile/ConEmu Task Name]\n /icon [CMDER Icon Path] - ConEmu ONLY!\n [/start [Start in Path] | [Start in Path]]\n /single - ConEmu ONLY!\n /m\n -- [ConEmu/Windows Terminal extra arguments]\n\nNote: '-- [...]' must be the last argument!\n\nor, either:\n /register [USER | ALL]\n /unregister [USER | ALL]"

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Need to adjust the help message to separate out the console-specific flags.

The current " - * ONLY!" message, while accurate, is less UX-friendly than could be, especially using the current TaskDialog design.

I need to work on it once development is merged into master.

Comment thread scripts/build.ps1
# Using this option will skip all downloads, if you only need to build launcher
[switch]$noVendor,

# Using this option will specify the emulator to use [none, all, conemu-maximus5, or windows-terminal]

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What I need to do next:

  1. Use the phrase "terminal emulator" instead of "emulator"
  2. Refer the user to the new packaging-profiles.json infrastructure

Comment thread scripts/build.ps1
)

# Get the scripts and Cmder root dirs we are building in.
# Get the scripts and cmder root dirs we are building in.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need to make the application's name lower case here, "Cmder" was just fine, and should be used everywhere as branding is capitalized

Comment thread scripts/build.ps1
else { $WinTermSettingsJson = "" }

# Kill ssh-agent.exe if it is running from the $env:cmder_root we are building
$cmder_folder = $cmder_root.toString()

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Investigate whether this could still be a cast to string without requiring to declaring a new $cmder_folder variable, in addition to $cmder_root, making below a one-liner again without actually breaking the build script like it used to.

If not, I think a more suitable name should be used for it.

A task for the AI to investigate.

@daxgames

daxgames commented Jun 15, 2026

Copy link
Copy Markdown
Member

See my last comment in #3090 (comment)

I edited it like 20 times so just want to make sure you see it in its final glory @DRSDavidSoft.

We should continue the discussion here since this pr is actually open.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants