All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Project license updated to GNU Affero General Public License v3.0 (AGPL-3.0-only); root, UI, and page
package.jsonlicense fields now reflect AGPL. - Replaced root
LICENSEwith the official AGPLv3 text andCopyright (C) 2026 João Luiz de Castro. - Added license sections to README.md (English) and README.pt-br.md (Portuguese).
- Added AGPL copyright headers to ShellForge entry points and core runtime sources (Electron main/preload/renderer, docs site entry, action-runner, utils, and command library).
action-runner.batnow runscd /d "%~dp0"before invoking Node, so CLI aliases work from any terminal working directory (matching Run Now spawn behavior).
- First packaged app launch sets User
SHELLFORGE_USER_DATAto%APPDATA%/ShellForge/shellforge-data/when not already defined, aligning CLI with the desktop app. - CLI user-data resolution falls back to the AppData path for packaged installs when the runtime install dir has no config, even before
config.jsonexists.
- CLI custom actions now resolve user data from
%APPDATA%/ShellForge/shellforge-data/whenSHELLFORGE_USER_DATAis not set, fixing profile aliases such aslancar-horason packaged installs.
- Packaged app Run Now for custom actions failed with "path not found" because action-runner was spawned with user-data as the working directory; spawn now uses the action-runner install directory while config still loads from AppData.
- Hardened
action-runner.batto resolveshellforge-node.cmdto a fully qualified path before execution (CLI reliability from arbitrary working directories). - Packaged user-data path now stores config, scheduled tasks, and browser profiles under
%APPDATA%/ShellForge/shellforge-data/instead of%APPDATA%/shellforge-ui/. - Scheduled Tasks tab now warns and disables ON/OFF toggles when ShellForge is not running as Administrator; toggle/save sync failures due to missing elevation are surfaced instead of failing silently.
- Scheduled task names are restricted to ASCII letters, numbers, spaces, hyphens, and underscores; invalid names show row/modal validation errors, toggles are disabled, and enable failures surface explicit registration errors instead of silently staying off.
- Docs site mobile layout: sticky header with menu drawer, no page-level horizontal scroll, compact content blocks, and js-pretty-icons sun/moon theme toggle.
- Electron
appIdand Windows App User Model ID updated toapp.shellforge.
- Adjusting Release Windows action and removing Create Tag and Release action.
- ShellForge desktop manager for custom actions, scheduled tasks, and predefined commands.
- Visual custom action editor with flow graph, scoped block navigation, step details panel, and validation banners.
- Run-action modal with argument inputs inferred from the action schema.
- Scheduled task editor with command builder, trigger-time picker, weekday selection, and search.
- Predefined commands tab with category filters and enable/disable toggles.
- Theme support (light/dark) with persisted preference.
- Application menu (File / View / Help) with keyboard shortcuts for creating custom actions and scheduled tasks.
- Locale support (English and Portuguese) for menu labels, app UI copy, and delete confirmation modals.
- Shared
formatMessagehelper for i18n template interpolation (e.g.{itemName}in titles). - Profile health banner when PowerShell profile setup needs attention.
- Windows NSIS installer build pipeline and GitHub Actions release workflow for desktop builds.
- Restructured action runner with modular step handlers and expanded test coverage.
- Browser automation steps: navigate, click, type, wait for page state, set web storage, for-each element, and close browser.
- Control-flow steps: forEach, if/else, try/catch, and wait.
- Integration steps: API request, shell command, write file, invoke action, set variable, and get arguments.
- Context interpolation for step fields using
{{context.*}}and{{env.*}}templates. - Shared PowerShell command library for predefined command integration tests.
- New Unix-parity CLI commands: head, tail, watch, which, mkdirp, open, pbcopy, pbpaste, realpath, uuid, and git-root.
- New Windows utility CLI commands: kill-port, as-admin, and hidden.
- New shell lifecycle CLI commands: reload-env and profile.
- Documentation site deploy workflow and test workflows with coverage gates.
- README updates for desktop install, command layout, and the documentation site.
- API Request step support for HEAD and OPTIONS HTTP methods in the editor and runtime.
- ForEach step support for context-backed lists via
{{context.path}}or{{env.VAR}}templates. - Shared delete confirmation modal for custom actions and scheduled tasks.
- Footer and in-app http(s) links open in the system default browser instead of a new Electron window.
- Expanded UI test suite with coverage gate for renderer and shared modules.
- Dedicated tests for the delete confirmation hook, modal component, and context variable inference edge cases.
- Expanded
scheduledTaskCommandtest coverage included in the UI coverage gate. - ESLint configuration for root and UI packages.
- Moved the legacy action runner into
commands/action-runner/; profile aliases now point atcommands/{name}/launchers. - Split custom action constants into focused modules for easier maintenance.
- Decomposed the action editor into lifecycle, validation, flow graph/scope hooks, and shared editor context.
- Wired application menu "New …" actions to the active tab through AppCommandBridge.
- Reordered API Request method dropdown so common verbs appear first and HEAD/OPTIONS appear last.
- Hid the API Request body field for GET, HEAD, and OPTIONS methods.
- Replaced scheduled task delete
window.confirmwith the in-app confirmation modal. - Delete confirmation modal resolves copy from i18n via a
variantprop (customAction/scheduledTask) instead of hardcoded English strings in each tab. - Delete confirmation modal uses neutral
button-ghoststyling for Cancel and destructivebutton-redstyling for Delete. - Delete failures surface inside the confirmation modal via an in-modal error banner, wired from tab-level error state.
- Locale push events use the shared
IPC_CHANNELS.localeChangedconstant across main process, preload, and tests. - UI coverage exclusions narrowed:
scheduledTaskCommand.ts,contextVarInference.ts, anduseDeleteConfirmModal.tsare no longer excluded from the coverage gate.
- Custom Actions tab import paths for AppCommandBridge and i18n.
- JsonFieldEditor now persists bare interpolation templates (for example
{{context.userIds}}) when JSON parsing fails. - ForEach now throws a clear error when an interpolated list is not an array after resolution.
- Delete confirmation modal ignores rapid double-clicks while a delete request is in flight (ref-based synchronous guard in
useDeleteConfirmModal).
- Adjusting invalid characters issue in release tag flow
- Adjusting the release tag release notes message
- Updating the github actions to use the latest github recommendations
- Creating a new github action to validate the PR required fields.
- Enhancing github action to include the release notes in the release.
- Implementing a more visual scheduler.
- Implemented command "reinitialize", that reinitializes your powershell.
-
Implemented shell command "login", that logs in a site.
-
Implemented shell command "touch" to be window's equivalent to Unix's touch command.