Releases: abra-code/OMC
OMC version 4.4.2
Python Support
- Fix non-universal binary components in OMCPythonApplet.app embedded Python distribution
- Precompile Python scripts: On app launch, precompile all .py files in Resources/Scripts/ for embedded Python distributions
Bug Fixes
- Command lookup precision: Fixed command lookup logic - when no command ID provided, match by name (first command, not last); don't fall back on explicit ID lookup failure
Installation
- OnMyCommandCM.plugin quarantine: Remove potentially problematic quarantine bit when installing the contextual menu plugin
Documentation
- Bundle "Documents" with distribution
- "Building OMC Applets" guide: Comprehensive guide for creating OMC applets, moved to Documentation/ directory
OMC version 4.4.1
Bug Fixes:
- Fixed crash related to WAIT_FOR_TASK_COMPLETION - Resolved a recent regression where async popen executions were incorrectly treated as synchronous, causing crashes with overrelease. Detected with Address Sanitizer testing.
- Fixed missing custom environment variables in ENVIRONMENT_VARIABLES - Corrected a regression introduced by recent refactoring that caused custom environment variables to not be properly set.
- Fixed missing OMC_NIB_TABLE_N_COLUMN_M_ALL_ROWS functionality - Revived a long-standing regression where getting values from all rows in a table view was broken (likely when adding WebKit view DOM element parts support). This feature allows exporting table data using special environment variable patterns.
Distribution:
- Added README with brief use and installation instructions
- added scripts for building applets
- added script to install the contextual menu plugin for Abracode Shortcuts.app
- OMCPythonApplet.app now embeds Python 3.14.3 built with the latest https://github.com/abra-code/Python-Embedding scripts and includes uPip module for installing universal fat binary modules
Infrastructure:
- Added Address Sanitizer (ASAN) testing to catch memory issues earlier
- Added unit tests for ENVIRONMENT_VARIABLES functionality
- Added "Browser.omc” bundle for testing table view in a nib-based dialog
OMC version 4.4
Functional changes:
- In the absence of command id for exe_script_file execution, the OMC engine was looking for "main.sh" in the Content/Resources/Scripts/. Now it looks first for
<CommandName>.main.shfirst and then fall back to main.sh if not found, where<CommandName>is the non-dynamicNAMEvalue in command description. - Pre-scan OMC_XXX env variables in ENVIRONMENT_VARIABLES. Placing them in ENVIRONMENT_VARIABLES triggers the same functionality as if the special word or env variable was found in the script body itself.
- propagate the parent context info to subcommand context check to prevent early failures
- Nav dialog settings in command description like: CHOOSE_OBJECT_DIALOG, CHOOSE_FILE_DIALOG, CHOOSE_FOLDER_DIALOG, SAVE_AS_DIALOG or INPUT_DIALOG now imply export of OMC_DLG_CHOOSE_OBJECT_PATH, OMC_DLG_CHOOSE_FILE_PATH, OMC_DLG_CHOOSE_FOLDER_PATH, OMC_DLG_SAVE_AS_PATH and OMC_DLG_INPUT_TEXT even if command description in the plist does not refer to it (but the separate script files may)
- Set OMC env variables in WebKit view as window.omc_env. JavaScript code in WebKit can access the variables at runtime with code like:
const myAppPath = window.omc_env.OMC_APP_BUNDLE_PATH; - Fix app icon problem for end notification dialog
- Add support for bundling relocatable Python runtime in applet bundle. New applet with Python is added to distribution: OMCPythonApplet.app. Apple stopped shipping Python in macOS so this allows us to create self-contained Python applets without the need to install Python on deployment machine.
- Added scripts to aid in applet development: build_applet.sh, thin_distribution.sh, codesign_applet.sh
- Re-implemented omc_popen() with posix_spawn() - this is an internal change to the core process forking function at the co=re of OMC to remove use of deprecated API, which may misbehave in the future macOS releases.
- Improve logic to show nav dialogs on missing file context. Commands expecting a file or directory context - and are executed without files - were not getting nav dialog prompt to select file(s)/dir(s) unless OMC_OBJ_PATH was added explicitly to ENVIRONMENT_VARIABLES in command description. With this change the command description with ACTIVATION_MODE=act_file, act_folder, act_file_or_folder and related does not need to have OMC_OBJ_PATH in env vars to trigger nav dialog on missing file context.
- Other internal changes and unit testing
OMC version 4.3.1
Changed the timeout for Apple Events from default 60 secs to 5 secs to mitigate an issue encountered in macOS 26 Finder.
OMC version 4.3
OMC 4.3 - a major refresh of the engine with a lot of code maintenance, bug fixes and features.
More detailed documentation forthcoming - along with general overhaul of command description and applet building guide.
The focus continues on building applets, with support for system services.
Standalone OMCService.service is also available but offers no advantage over an equivalent app.
An example app built with OMC 4.3 and also providing a system service is Xattr:
https://github.com/abra-code/XattrApp
Abracode.framework is no longer installed in /Libraries but is embedded in each applet, service and OnMyCommandCM.plugin. The framework is small enough by today's standards and embedding offers advantage of applets being self-contained and not requiring an installation.
OMC version 4.2.1
Bugfix release:
- indeterminate progress bar animation fix
- fix location of "jsc" compiler on macOS 10.15 and 11
OMC version 4.2.0
Universal release with native support for Apple Silicon (arm64) Macs.
A couple of minor fixes and internal cleanup
Note:
[the following information should end up in a manual or in some helper script for applet developers]
macOS GateKeeper will not let you launch OMCApplet.app because of this:
https://developer.apple.com/library/archive/technotes/tn2206/_index.html#//apple_ref/doc/uid/DTS40007919-CH1-TNTAG207
OMCApplet.app uses @rpath to look for Abracode.framework in this order:
- Applet bundle "Frameworks" directory
- "Frameworks" dir next to the Applet.app [useful in organization deployment, this is the offending @rpath]
- /Library/Frameworks
You can inspect the load commands with:
otool -l OMC_4.2.0_12-1-20/Products/Applications/OMCApplet.app/Contents/MacOS/OMCApplet
If you build an applet for local deployment all you need to do is to re-codesign after you add some useful scripts to the applet like this:
codesign --sign "-" --verbose=4 --deep --force ~/Downloads/MyApplet.app
No other changes should be necessary. Note that "-" signing identity is good only for local deployment and will not work on other machines.
If you would like to distribute your applet, you should embed Abracode.framework in the applet itself in MyApplet.app/Contents/Frameworks/Abracode.framework and remove the offending dyld load command with install_name_tool like this:
install_name_tool -delete_rpath "@loader_path/../../../Frameworks" ~/Downloads/MyApplet.app/Contents/MacOS/OMCApplet
and inspect the load command is gone with:
otool -l ~/Downloads/MyApplet.app/Contents/MacOS/OMCApplet
Then the applet needs to be code signed and notarized for distribution.
For more information refer to:
https://developer.apple.com/library/archive/documentation/Security/Conceptual/CodeSigningGuide/Procedures/Procedures.html
OMC version 4.1.1
Bugfix release:
- fixed a problem with getting control values from modal dialogs
OMC version 4.1
Added support for OMCWebKitView
A couple of bug fixes
OMC version 4.0.1
Minor update with a couple of changes:
- fixed an problem with unprocessed pending events and notifications before executing next command
- added OMCGridView based on NSGridView for nib dialogs