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
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,20 @@ All notable changes to this project will be documented in this file.

- _No unreleased changes._

## [0.25.8]

### Changed
- **Repository Card Stability:** Smoothed out repository refreshes so cards keep a consistent height while statuses update, eliminating layout jumps when new data arrives.
- **Debug Log Ergonomics:** Rebuilt the debug log panel with proper text selection, Shift/Ctrl multi-select, and copy-formatting controls so incident responders can capture exactly the log lines they need.
- **Auto-Update Messaging:** Trimmed the "update failed" toast copy to a concise summary that links to the debug log when upstream errors include unusually large payloads.

### Fixed
- **GitHub Auto-Update Fallbacks:** Patched the `electron-updater` GitHub provider to retry via the REST API (with authenticated request headers and structured logging) whenever the legacy HTML endpoint returns 406 responses. This closes the loop on update checks that previously stalled during GitHub API hardening.
- **Windows Clone Execution:** Stopped spawning the Setup & Clone process through a Windows shell so Git/SVN executables with spaces in their path run reliably, while still logging the exact command for troubleshooting.

### Documentation
- Documented the repository card layout stabilization, debug log selection tooling, auto-update hardening, and Setup & Clone reliability fixes for maintainers preparing the 0.25.8 release.

## [0.25.7]

### Changed
Expand Down
18 changes: 15 additions & 3 deletions FUNCTIONAL_MANUAL.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,12 +64,14 @@ Each card gives you an at-a-glance overview of a repository:
- **Build Health:** The status of the last build (`Healthy`, `Failing`, `Unknown`).
- **Last Updated:** The timestamp of the last automation, neatly aligned on the right.
- **Latest Release (Git only):** If a GitHub PAT is configured in settings, this shows the version tag of the latest GitHub release and its status (e.g., `Published`, `Draft`, `Pre-release`).
- **Stable Layout:** Repository cards keep a steady height while they refresh, so buttons no longer jump or resize as new status data streams in.

### Card Actions

Each card has a set of action buttons at the bottom:

- **Setup & Clone / Clone Repo:** When the local working copy is missing, the card automatically surfaces guided buttons. **Setup & Clone** opens a folder picker so you can select where to place the checkout, then immediately kicks off the clone/checkout. If a path is already stored but empty, a single **Clone Repo** button runs the clone directly. Progress for both flows streams into the log panel.
- On Windows, Setup & Clone now launches Git or SVN directly (instead of routing through `cmd.exe`), so executable paths containing spaces run without failing mid-clone.
- **Task Buttons:** Any task marked with "Show on dashboard" will appear as its own button for one-click execution.
- **Pinned Launch Buttons:** Launch configurations flagged to "Show on dashboard" appear alongside task buttons with a lightning icon for one-click app launches.
- **More Tasks (Play Icon):** If there are more tasks available, this button opens a modal to select any of the repository's tasks to run.
Expand Down Expand Up @@ -169,6 +171,15 @@ When you run a task or choose to view logs, a panel will appear at the bottom of
- **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.

### Debug Log Panel

The status bar includes a **bug icon** that opens the Debug Log Panel. This view captures structured logs from both the renderer and the Electron main process, making triage far easier during incidents.

- **Selection & Copying:** Click entries to select them, use `Shift` for ranges, or `Ctrl/Cmd` to multi-select individual lines. A new copy button exports the selection with optional timestamp/level/data fields, preserving on-screen ordering.
- **Search & Filter:** Continue filtering by log level or keyword—highlighted matches respect the new selection flow, so you can refine the list before copying.
- **Accessibility:** Keyboard navigation mirrors the mouse interactions, and the panel respects native text selection so you can drag to copy snippets directly.
- **Export:** The existing "Download Logs" action still emits a structured file, complementing the richer clipboard workflow.

## 5. Global Settings View

Click the **cog icon** in the menu bar to access global settings.
Expand All @@ -178,7 +189,8 @@ Click the **cog icon** in the menu bar to access global settings.
- **Icon Set:** Select from the available icon sets to customize the application's iconography. Feather is the default for a clean and consistent look.
- **GUI Scale:** Adjust the overall size of the application from 50% to 200% for better readability.
- **Behavior:**
- **GitHub Personal Access Token:** A secure field to store your GitHub Personal Access Token (PAT). This token is required for features that interact with the GitHub API, such as fetching release information. A copy button is provided for convenience. A link is provided to help you create a token with the necessary permissions. For full functionality, including managing draft releases, create a fine-grained token with "Read & write" access to repository "Contents".
- **GitHub Personal Access Token:** A secure field to store your GitHub Personal Access Token (PAT). This token is required for features that interact with the GitHub API, such as fetching release information. A copy button is provided for convenience. A link is provided to help you create a token with the necessary permissions. For full functionality, including managing draft releases, create a fine-grained token with "Read & write" access to repository "Contents".
- The auto-updater now reuses this PAT for REST API fallback requests when GitHub's HTML release feed returns HTTP 406, so providing the token keeps update checks flowing.
- **Open Web Links In:** Choose whether to open web links in your system's default browser, or force them to open in Chrome or Firefox.
- **Enable Notifications:** Toggle on/off the toast notifications.
- **Enable Simulation Mode:** This is a critical safety feature.
Expand All @@ -204,6 +216,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.7
### Documentation Status for 0.25.8

- Re-reviewed the functional guidance and confirmed it, together with the README, Technical Manual, and keyboard shortcut specification, remains accurate for version `0.25.7`.
- Captured the debug log selection workflow, repository card layout stabilization, Windows Setup & Clone reliability, and GitHub updater fallback behavior introduced in version `0.25.8`.
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ This application provides a simple, powerful dashboard to manage and automate th
- **Centralized Dashboard:** View the status, branch, and build health of all your repositories in one place.
- **Customizable Dashboard Categories:** Organize your repositories into collapsible sections with **dual-theme (light/dark) color styling**, a library of predefined themes, full drag-and-drop support (for both repositories and categories), and alternative up/down reorder buttons.
- **Multi-VCS Support:** Manage both Git and Subversion (SVN) repositories seamlessly.
- **Guided Repository Setup:** Built-in **Setup & Clone** and **Clone Repo** actions help you create or repair local working copies directly from each repository card, streaming progress into the integrated log panel.
- **Guided Repository Setup:** Built-in **Setup & Clone** and **Clone Repo** actions help you create or repair local working copies directly from each repository card, streaming progress into the integrated log panel. On Windows the clone flow now launches Git/SVN executables directly (instead of through a shell), so paths containing spaces no longer break the automation.
- **Repository-Specific Tasks:** Create custom, multi-step automation scripts (e.g., pull/update, install, build) for each repository.
- **Project Intelligence:** Automatically detects project types (Node.js, Python, Go, Rust, Java/Maven, .NET, Delphi, Lazarus, Docker) and provides one-click buttons to generate common, pre-configured tasks.
- **Advanced Task Steps:** A rich library of specific, pre-built steps for different ecosystems—including Go, Rust, Java/Maven, and .NET—**now organized into logical categories in the UI for easy discovery**, simplifies creating complex workflows.
Expand All @@ -25,8 +25,8 @@ This application provides a simple, powerful dashboard to manage and automate th
- **Commit History:** View the commit history for any Git or SVN repository, with **a stable, non-flickering UI**, search, and load-on-demand.
- **Tabbed & Integrated Log Panel:** Monitor the output of every command in a detailed, resizable, and tabbed log panel that integrates smoothly into the main view.
- **Automatic Task Log Archiving:** The full console output for every task run is automatically saved to a timestamped log file in a configurable directory for historical reference.
- **Advanced Debugging:** A powerful debug console with log filtering and a save-to-file feature (now including logs from the main process) for in-depth troubleshooting.
- **Reliable Auto-Updates:** Get notified with a clear banner when a new version is ready and install it with a single click.
- **Advanced Debugging:** A powerful debug console with log filtering, multi-select & copy tooling, and a save-to-file feature (now including logs from the main process) for in-depth troubleshooting.
- **Reliable Auto-Updates:** Get notified with a clear banner when a new version is ready and install it with a single click. When GitHub's HTML release feed returns HTTP 406 responses, the updater automatically retries against the REST API using your configured PAT so checks keep working.
- **Easy Configuration:** Add new repositories and configure them through a simple, unified form.
- **Persistent UI State:** The application remembers your dashboard layout, including the collapsed state of categories, between sessions.
- **Persistent & Safe Configuration:** All your settings and repository configurations are stored safely in a persistent location, ensuring they are never lost during application updates.
Expand Down Expand Up @@ -74,9 +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.7
### Documentation Status for 0.25.8

- Re-validated the task execution guidance and confirmed the remainder of this README, the manuals, and the keyboard shortcut reference still reflect the current experience for version `0.25.7`.
- Documented the debug log selection workflow, repository card layout stabilization, auto-update REST fallback, and Windows Setup & Clone reliability improvements delivered in version `0.25.8`.

---
_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._
22 changes: 12 additions & 10 deletions TECHNICAL_MANUAL.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,9 @@ The application uses a custom frameless window to achieve a modern, VSCode-like
- **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.
- **External Links:** Handles requests from the renderer to open web links in the user-specified browser.
- **GitHub API:** Fetches release information for a repository using a user-provided Personal Access Token.
- **Settings I/O:** Manages the import and export of settings files using the `jszip` library.
- **GitHub API:** Fetches release information for a repository using a user-provided Personal Access Token.
- **Auto-Update Fallbacks:** Installs a GitHub provider patch that retries via the REST API with authenticated headers when the legacy HTML endpoint returns HTTP 406 responses, and emits structured diagnostics for release engineering.
- **Settings I/O:** Manages the import and export of settings files using the `jszip` library.

### Renderer Process

Expand Down Expand Up @@ -96,22 +97,23 @@ 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.7
### Documentation Status for 0.25.8

- Reconfirmed the main process responsibilities, auto-update notes, and cross-referenced manuals remain technically accurate for version `0.25.7`.
- Recorded the GitHub updater REST fallback patch, debug log tooling upgrades, and related documentation cross-links required for version `0.25.8`.
## 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 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.
2. The application now patches `electron-updater`'s GitHub provider so the initial lookup runs against the REST API. If that request fails to return a tag, the legacy HTML scraping path is attempted, and any 406 responses automatically trigger a REST retry with structured telemetry.
3. The `autoUpdater` is configured accordingly and checks for updates while also caching the list of assets published for each version.
4. 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.
5. 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. Error toasts now summarize long GitHub responses and nudge engineers toward the debug log for full context.
6. When the `update-downloaded` event is received, the Renderer Process (`App.tsx`) sets a state variable to display the `UpdateBanner` component.
7. When the user clicks the "Restart & Install" button on the banner, the Renderer calls `window.electronAPI.restartAndInstallUpdate()`.
8. 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.
Expand Down
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.7
- Re-validated that the shortcut editor architecture, UI flows, and persistence notes above still reflect the current implementation for version `0.25.7`. No technical adjustments were required beyond recording this confirmation for the release audit trail.
## Documentation Status for 0.25.8
- Re-validated that the shortcut editor architecture, UI flows, and persistence notes above still reflect the current implementation for version `0.25.8`. 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.7",
"version": "0.25.8",
"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