Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,18 @@ All notable changes to this project will be documented in this file.

- _No unreleased changes._

## [0.25.6]

### Added
- **Task Cancellation Controls:** Introduced cancel buttons on running task cards and inside the task log panel, wiring the renderer, preload bridge, and Electron main process together so operators can gracefully abort automation that is hanging.

### Changed
- **Update Indicator UX:** Simplified the header's update indicator to an icon-only badge with an explanatory tooltip so the availability signal stays visible without crowding the navigation area.

### Fixed
- **Auto-Update Reliability:** Validated downloaded installers against the filenames published on GitHub, tightened the Windows artifact naming conventions (including the IA32 build), restricted releases to the expected setup executables, and expanded structured logging to make diagnosing updater issues easier.
- **Release Packaging Workflow:** Reworked the release GitHub Action to bundle the documentation directory required by the updater and to keep Windows asset filenames aligned with the publishing rules introduced in this release.

## [0.25.5]

### Changed
Expand Down
5 changes: 3 additions & 2 deletions FUNCTIONAL_MANUAL.md
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ When you run a task or choose to view logs, a panel will appear at the bottom of
- **Tab Management:** Each tab has its own close button. When the last tab is closed, the entire panel will hide itself.
- **Resizing:** Click and drag the top border of the panel to resize it to your desired height.
- **Content:** Logs are timestamped and color-coded for readability. The view auto-scrolls to the latest output.
- **Cancel Running Tasks:** Each active task tab exposes a **Cancel Task** button that signals the Electron main process to terminate the underlying child process, allowing you to stop a runaway script without closing the application.
- **Closing:** You can close the entire panel at once by clicking the 'X' icon in the top-right of the panel.

## 5. Global Settings View
Expand Down Expand Up @@ -203,6 +204,6 @@ For advanced users, the settings view includes a **"JSON Config"** tab. This sec
- **Export Settings:** Click the "Export Settings" button to save your current configuration into a compressed `.zip` archive. This is useful for creating backups or sharing your setup.
- **Import Settings:** Click the "Import Settings" button. You can select a `.zip` archive (created via the export feature) or a raw `.json` file to restore a configuration. This will overwrite your current settings and restart the application.

### Documentation Status for 0.25.5
### Documentation Status for 0.25.6

- Conducted a full functional review of the UI flows described in this manual, the README, the Technical Manual, and the keyboard shortcut specification. Everything continues to match the live application for version `0.25.5`. No functional wording changes were needed beyond documenting this verification.
- Documented the new task cancellation control in the log panel and verified the remaining functional guidance, along with the README, Technical Manual, and keyboard shortcut specification, for version `0.25.6`.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ This application provides a simple, powerful dashboard to manage and automate th
- Find your repository card on the dashboard.
- Click a task button or use the task selection menu to run your task. If the working copy is dirty, the safety modal will appear with options to stash, ignore selected files, force the pull, or cancel.
- The resizable log panel will automatically appear at the bottom, showing the progress of your script.
- If a step hangs or needs to stop, use the **Cancel Task** button in the log panel (or on the repository card) to terminate the running process safely.

## Release Preparation Checklist

Expand All @@ -73,10 +74,9 @@ Follow this checklist when preparing a new minor or patch release:
**Release Type** selector to the intended state (Full Release for GA builds, Draft or Pre-release as needed). Paste the freshly
written changelog entry into the release body so the GitHub notes exactly match the repository history, then publish.

### Documentation Status for 0.25.5
### Documentation Status for 0.25.6

- Re-ran the documentation audit across `README.md`, `FUNCTIONAL_MANUAL.md`, `TECHNICAL_MANUAL.md`, and `docs/keyboard-shortcut-editor.md` for this release.
No workflow or UI updates were required; this note records that the documentation remains accurate for version `0.25.5`.
- Updated the task execution guidance to document the new cancellation controls and revalidated the rest of this README, the manuals, and the keyboard shortcut reference for version `0.25.6`.

---
_For developer information, including how to run this project in development mode or build it from source, please see the **Technical Manual** tab in the Info Hub._
23 changes: 12 additions & 11 deletions TECHNICAL_MANUAL.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ The application uses a custom frameless window to achieve a modern, VSCode-like
- Handles native OS interactions (dialogs, file system access).
- Listens for and responds to IPC (Inter-Process Communication) events. This includes:
- **Project Intelligence:** Handles `get-project-info` and `get-project-suggestions` by analyzing the file system of a repository to detect technologies like Node.js, Python, Go, Rust, Java/Maven, .NET, Delphi, and Lazarus.
- **Task Execution:** Executes shell commands for task steps. The `run-task-step` handler now contains logic to interpret and execute the new, ecosystem-specific step types (e.g., `PYTHON_INSTALL_DEPS`). It also handles setting environment variables for tasks.
- **Task Execution:** Executes shell commands for task steps. The `run-task-step` handler now contains logic to interpret and execute the new, ecosystem-specific step types (e.g., `PYTHON_INSTALL_DEPS`). It also handles setting environment variables for tasks and tracks each spawned child process in the `runningProcesses` map so the `cancel-task` IPC requests from the renderer can terminate long-running work safely.
- **Task Log Archiving:** Upon starting a task, it creates a timestamped log file in the user-configured directory. It then streams all `stdout` and `stderr` from the task's execution to this file, in addition to the live view in the UI.
- **VCS Commands:** Executes real Git/SVN commands for advanced features like checking status, fetching commit history (now for SVN as well), and managing branches.
- **Executable Path Management:** Handles IPC calls for file pickers, auto-detection, and testing of user-configured executable paths.
Expand Down Expand Up @@ -96,23 +96,24 @@ Use this process when shipping a new minor update or bugfix:
5. **Build Installers:** Run `npm run pack`. The command produces platform installers in the `release/` directory. Perform a quick smoke test of the generated artifacts before distribution.
6. **Publish on GitHub:** Draft a new release on GitHub, attach the installers from the `release/` folder, verify the tag/version details, and explicitly set the **Release Type** selector to match your intent (Full Release for GA builds or Draft/Pre-release when staging). Paste the current changelog entry into the notes so the GitHub release matches the repository history, then publish.

### Documentation Status for 0.25.5
### Documentation Status for 0.25.6

- Reconfirmed that all technical guidance in this manual, the Functional Manual, the README, and the keyboard shortcut specification still aligns with the current codebase and UI for version `0.25.5`; no content corrections were necessary beyond this recorded audit.
- Captured the task cancellation lifecycle in the main process responsibilities, refreshed the auto-update notes, and revalidated the remaining technical guidance, along with the Functional Manual, README, and keyboard shortcut reference, for version `0.25.6`.
## 7. Automatic Updates

The application is configured to automatically check for updates on startup using the `electron-updater` library.

- **Update Source:** It checks for new releases published on the project's GitHub Releases page. The behavior is controlled by the "Check for Pre-Releases" setting.
- **Process:**
1. On startup, the Main Process (`electron/main.ts`) reads the user's settings to determine whether to allow pre-releases.
2. The `autoUpdater` is configured accordingly and checks for updates.
3. It sends IPC messages (`update-status-change`) to the Renderer Process to display toast notifications for events like 'checking' and 'downloading'.
4. When the `update-downloaded` event is received, the Renderer Process (`App.tsx`) sets a state variable to display the `UpdateBanner` component.
5. When the user clicks the "Restart & Install" button on the banner, the Renderer calls `window.electronAPI.restartAndInstallUpdate()`.
6. This triggers an IPC event (`restart-and-install-update`) which causes the Main Process to call `autoUpdater.quitAndInstall()`, which handles the update process reliably.
1. On startup, the Main Process (`electron/main.ts`) reads the user's settings to determine whether to allow pre-releases and prepares authenticated GitHub API headers when a PAT is available.
2. The `autoUpdater` is configured accordingly and checks for updates while also caching the list of assets published for each version.
3. As downloads complete, the main process validates the installer filename against the GitHub release assets (including platform-specific suffixes like `ia32` vs. `x64`). Failed validations are logged with structured context and prevent installation.
4. Throughout the lifecycle it emits `update-status-change` IPC messages so the renderer can surface toast notifications and the condensed update icon in the header.
5. When the `update-downloaded` event is received, the Renderer Process (`App.tsx`) sets a state variable to display the `UpdateBanner` component.
6. When the user clicks the "Restart & Install" button on the banner, the Renderer calls `window.electronAPI.restartAndInstallUpdate()`.
7. This triggers an IPC event (`restart-and-install-update`) which causes the Main Process to call `autoUpdater.quitAndInstall()`, which handles the update process reliably.
- **Publishing a New Version:** To publish a new release, a developer with repository access must:
1. Ensure the `version` in `package.json` is incremented.
2. Create a `GH_TOKEN` (GitHub Personal Access Token) with `repo` scopes and make it available as an environment variable.
3. Run the command `npm run publish`. This will build the application, create installers, and upload them to a new draft release on GitHub.
4. Navigate to the GitHub release, add release notes, and publish it.
3. Run the command `npm run publish`. This will build the application, create installers (limited to the `ia32` and `x64` Windows `.exe` files, plus the existing macOS/Linux targets), and upload them to a new draft release on GitHub alongside the bundled documentation directory expected by the auto-updater.
4. Navigate to the GitHub release, add release notes, confirm the asset list matches the validated filenames, and publish it.
4 changes: 2 additions & 2 deletions docs/keyboard-shortcut-editor.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,6 @@ The catalog defines the canonical list of actions and their defaults.
## Future Hooks
- The structure supports hooking into a runtime shortcut registry (e.g., via a dedicated context) by indexing `settings.keyboardShortcuts.bindings`. Any consumer can reuse `shortcutKey` and the catalog to register listeners or show active shortcut hints. The state object is already versioned (`version: 1`) to accommodate future schema migrations.【F:keyboardShortcuts.ts†L285-L313】【F:types.ts†L23-L49】

## Documentation Status for 0.25.5
- Re-validated that the shortcut editor architecture, UI flows, and persistence notes above still reflect the current implementation for version `0.25.5`. No technical adjustments were required beyond recording this confirmation for the release audit trail.
## Documentation Status for 0.25.6
- Re-validated that the shortcut editor architecture, UI flows, and persistence notes above still reflect the current implementation for version `0.25.6`. No technical adjustments were required beyond recording this confirmation for the release audit trail.

4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "git-automation-dashboard",
"version": "0.25.5",
"version": "0.25.6",
"description": "A dashboard to manage and automate the workflow for a set of Git repositories.",
"main": "dist/main.js",
"author": "Tim Sinaeve <tim.sinaeve@gmail.com>",
Expand Down