From cbf246207dabf1476c4dde78b89e484ec68b003b Mon Sep 17 00:00:00 2001 From: "courtmanr@gmail.com" Date: Wed, 30 Apr 2025 19:53:47 +0100 Subject: [PATCH 01/15] feat: allow manual triggering of release workflow --- .github/workflows/release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4e42dc307..fcccd6379 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,6 +4,7 @@ on: push: tags: - 'v*.*.*' # Trigger on version tags like v1.0.0, v1.2.3, etc. + workflow_dispatch: permissions: contents: write # Needed to create releases From a9463ddde0d3a3aa3209f71d8e9c290d75a9c87a Mon Sep 17 00:00:00 2001 From: "courtmanr@gmail.com" Date: Wed, 30 Apr 2025 20:15:37 +0100 Subject: [PATCH 02/15] fix: prevent vertical scrollbar artifact on tabs nav --- src/public/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/public/index.html b/src/public/index.html index 08da7db20..e64db5e88 100644 --- a/src/public/index.html +++ b/src/public/index.html @@ -86,7 +86,7 @@ -
+
From e953b6c6b1955bc9a81ead0a99d643e7eff4f87c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 30 Apr 2025 19:18:12 +0000 Subject: [PATCH 03/15] chore: Bump version to v3.3.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f6879bb97..e2cdc52c5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pulse", - "version": "3.3.0", + "version": "3.3.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pulse", - "version": "3.3.0", + "version": "3.3.1", "license": "MIT", "dependencies": { "axios": "^1.9.0", diff --git a/package.json b/package.json index 821917c34..424121250 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pulse", - "version": "3.3.0", + "version": "3.3.1", "description": "A lightweight monitoring application for Proxmox VE.", "main": "server/index.js", "scripts": { From 752e439d62abba5ad135ef7f6c766452391c1142 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 30 Apr 2025 19:21:04 +0000 Subject: [PATCH 04/15] chore: Bump version to v3.3.2 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index e2cdc52c5..71f5f21c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pulse", - "version": "3.3.1", + "version": "3.3.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pulse", - "version": "3.3.1", + "version": "3.3.2", "license": "MIT", "dependencies": { "axios": "^1.9.0", diff --git a/package.json b/package.json index 424121250..837342d68 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pulse", - "version": "3.3.1", + "version": "3.3.2", "description": "A lightweight monitoring application for Proxmox VE.", "main": "server/index.js", "scripts": { From f2721b72d0bad856d079325f56f789d74342c505 Mon Sep 17 00:00:00 2001 From: "courtmanr@gmail.com" Date: Wed, 30 Apr 2025 20:27:11 +0100 Subject: [PATCH 05/15] feat: require version and changelog for prepare release workflow Adds changelog for v3.3.0. --- .github/workflows/prepare-release.yml | 26 +++++++++++++------------- changelog-v3.3.0.md | 13 +++++++++++++ 2 files changed, 26 insertions(+), 13 deletions(-) create mode 100644 changelog-v3.3.0.md diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml index 0fbd3465e..855685d3f 100644 --- a/.github/workflows/prepare-release.yml +++ b/.github/workflows/prepare-release.yml @@ -3,15 +3,14 @@ name: Prepare Release on: workflow_dispatch: inputs: - version_type: - description: 'Version type (patch, minor, major)' + version_number: + description: 'Exact version tag to create (e.g., v1.2.3)' required: true - default: 'patch' - type: choice - options: - - patch - - minor - - major + type: string + changelog_path: + description: 'Path to the changelog file for this release' + required: true + type: string jobs: prepare: @@ -43,11 +42,12 @@ jobs: - name: Bump version and capture new version id: version_bump run: | - # Run npm version, which updates package.json and package-lock.json - # The output of npm version is the new version number (e.g., v3.2.3) - NEW_VERSION=$(npm version ${{ github.event.inputs.version_type }} --no-git-tag-version) - echo "New version tag: $NEW_VERSION" - # Set the new version as an output for later steps + # Run npm version with the exact version number provided as input + # This updates package.json and package-lock.json + # The output should be the same version number (e.g., v1.2.3) + NEW_VERSION=$(npm version ${{ github.event.inputs.version_number }} --no-git-tag-version --allow-same-version) # Use exact version_number, allow same version avoids error if already set + echo "Specified version tag: $NEW_VERSION" + # Set the specified version as an output for later steps echo "new_version_tag=$NEW_VERSION" >> "$GITHUB_OUTPUT" diff --git a/changelog-v3.3.0.md b/changelog-v3.3.0.md new file mode 100644 index 000000000..ad8ac6416 --- /dev/null +++ b/changelog-v3.3.0.md @@ -0,0 +1,13 @@ +# Changelog - v3.3.0 + +This release introduces responsive layout improvements, manual release triggering, and fixes issues with PBS stats and UI rendering. + +## ✨ Features + +* **Responsive Layout:** Improved layout adjustments for the header, navigation tabs, and dashboard filters on different screen sizes. ([Commit](https://github.com/rcourtman/Pulse/commit/<>)) +* **Manual Workflow Trigger:** The 'Prepare Release' GitHub Actions workflow can now be triggered manually with specific inputs. ([Commit](https://github.com/rcourtman/Pulse/commit/<>)) + +## 🐛 Bug Fixes + +* **PBS Stats:** Correctly populate summary statistics in the `processPbsTasks` function. ([Commit](https://github.com/rcourtman/Pulse/commit/<>)) +* **UI:** Prevent a vertical scrollbar artifact from appearing unnecessarily on the tabs navigation bar. ([Commit](https://github.com/rcourtman/Pulse/commit/<>)) \ No newline at end of file From 1d0c43f10dff27a3d4be363d00d70865403204c1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 30 Apr 2025 19:27:39 +0000 Subject: [PATCH 06/15] chore: Bump version to v3.3.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 71f5f21c7..f6879bb97 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pulse", - "version": "3.3.2", + "version": "3.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pulse", - "version": "3.3.2", + "version": "3.3.0", "license": "MIT", "dependencies": { "axios": "^1.9.0", diff --git a/package.json b/package.json index 837342d68..821917c34 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pulse", - "version": "3.3.2", + "version": "3.3.0", "description": "A lightweight monitoring application for Proxmox VE.", "main": "server/index.js", "scripts": { From b25d0215034fefd6656b82fbf502fefd201af13c Mon Sep 17 00:00:00 2001 From: "courtmanr@gmail.com" Date: Wed, 30 Apr 2025 20:30:29 +0100 Subject: [PATCH 07/15] refactor(workflow): delete remote tag before pushing in prepare release --- .github/workflows/prepare-release.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml index 855685d3f..78625f9a4 100644 --- a/.github/workflows/prepare-release.yml +++ b/.github/workflows/prepare-release.yml @@ -62,5 +62,8 @@ jobs: - name: Create Git Tag run: git tag ${{ steps.version_bump.outputs.new_version_tag }} + - name: Delete Remote Tag if Exists (Ignore Errors) + run: git push --delete origin ${{ steps.version_bump.outputs.new_version_tag }} || true + - name: Push Git Tag run: git push origin ${{ steps.version_bump.outputs.new_version_tag }} \ No newline at end of file From 4710aabea302c18efff5ad80c714199b2ccace92 Mon Sep 17 00:00:00 2001 From: "courtmanr@gmail.com" Date: Wed, 30 Apr 2025 20:34:57 +0100 Subject: [PATCH 08/15] feat(workflow): require tag input for manual release creation --- .github/workflows/release.yml | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fcccd6379..d1b00f747 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,6 +5,11 @@ on: tags: - 'v*.*.*' # Trigger on version tags like v1.0.0, v1.2.3, etc. workflow_dispatch: + inputs: + tag_name: # Added input for manual trigger + description: 'Tag to create the release for (e.g., v1.2.3)' + required: true + type: string permissions: contents: write # Needed to create releases @@ -14,10 +19,19 @@ jobs: name: Create GitHub Release runs-on: ubuntu-latest steps: + - name: Determine Ref to Checkout + id: determine_ref + run: | + if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then + echo "ref=${{ github.event.inputs.tag_name }}" >> "$GITHUB_OUTPUT" + else + echo "ref=${{ github.ref }}" >> "$GITHUB_OUTPUT" + fi + - name: Checkout code uses: actions/checkout@v4 with: - ref: ${{ github.ref }} # Explicitly checkout the triggering tag/ref + ref: ${{ steps.determine_ref.outputs.ref }} # Use determined ref (tag or branch) - name: Set up Node.js uses: actions/setup-node@v4 @@ -51,7 +65,7 @@ jobs: platforms: linux/amd64,linux/arm64 # Add other platforms if needed push: true tags: | - rcourtman/pulse:${{ github.ref_name }} + rcourtman/pulse:${{ github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name || github.ref_name }} rcourtman/pulse:latest # --- End Docker Steps --- @@ -60,6 +74,8 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Provided by GitHub Actions with: + # Use input tag for dispatch, otherwise default (inferred from github.ref) + tag_name: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name || '' }} draft: true # Create the release as a draft initially # Optionally, you can generate release notes automatically: # generate_release_notes: true From 3b4aac45a24432a15943281e7f4341c8f3ef4799 Mon Sep 17 00:00:00 2001 From: "courtmanr@gmail.com" Date: Wed, 30 Apr 2025 20:36:40 +0100 Subject: [PATCH 09/15] feat(workflow): use conventional changelog file for release body --- .github/workflows/release.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d1b00f747..db1f1138b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -76,6 +76,8 @@ jobs: with: # Use input tag for dispatch, otherwise default (inferred from github.ref) tag_name: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name || '' }} + # Dynamically set the path to the changelog file based on the tag + body_path: changelog-${{ github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name || github.ref_name }}.md draft: true # Create the release as a draft initially # Optionally, you can generate release notes automatically: # generate_release_notes: true From 763c7ede4c9a7fb01c35e245e29dfbde346980bf Mon Sep 17 00:00:00 2001 From: "courtmanr@gmail.com" Date: Wed, 30 Apr 2025 20:42:35 +0100 Subject: [PATCH 10/15] refactor(release): split into Prepare PR and Create Release workflows Prepare PR workflow creates PR with version bump and changelog. Create Release workflow triggers on tag push, builds, and creates release with generated notes. --- .github/workflows/prepare-release-pr.yml | 81 +++ .github/workflows/prepare-release.yml | 69 --- .github/workflows/release.yml | 43 +- package-lock.json | 685 +++++++++++++++++++++++ package.json | 1 + 5 files changed, 778 insertions(+), 101 deletions(-) create mode 100644 .github/workflows/prepare-release-pr.yml delete mode 100644 .github/workflows/prepare-release.yml diff --git a/.github/workflows/prepare-release-pr.yml b/.github/workflows/prepare-release-pr.yml new file mode 100644 index 000000000..b59c319a2 --- /dev/null +++ b/.github/workflows/prepare-release-pr.yml @@ -0,0 +1,81 @@ +name: Prepare Release PR + +on: + workflow_dispatch: + inputs: + version_type: + description: 'Version type (patch, minor, major)' + required: true + default: 'patch' + type: choice + options: + - patch + - minor + - major + +jobs: + prepare: + name: Prepare Release PR + runs-on: ubuntu-latest + permissions: + contents: write # Needed to push commits/branch and create PR + pull-requests: write # Needed to create PR + + steps: + - name: Checkout main branch + uses: actions/checkout@v4 + with: + ref: main # Ensure we are on the main branch + fetch-depth: 0 # Fetch all history for changelog generation + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '20.x' + cache: 'npm' + + - name: Clean install dependencies + # Install includes conventional-changelog-cli now + run: rm -rf node_modules && npm ci + + - name: Configure Git User + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + + - name: Bump version and capture new version + id: version_bump + run: | + # Run npm version, which updates package.json and package-lock.json + # The output of npm version is the new version number (e.g., v3.2.3) + NEW_VERSION=$(npm version ${{ github.event.inputs.version_type }} --no-git-tag-version) + echo "New version tag: $NEW_VERSION" + # Set the new version as an output for later steps + echo "new_version_tag=$NEW_VERSION" >> "$GITHUB_OUTPUT" + echo "new_version_branch=release/$NEW_VERSION" >> "$GITHUB_OUTPUT" + + - name: Generate Changelog + run: npx conventional-changelog -p angular -i CHANGELOG.md -s -r 0 + + - name: Create and Checkout Release Branch + run: | + git checkout -b ${{ steps.version_bump.outputs.new_version_branch }} + + - name: Commit version bump and changelog + run: | + git add package.json package-lock.json CHANGELOG.md + git commit -m "chore: Prepare release ${{ steps.version_bump.outputs.new_version_tag }}" + + - name: Push Release Branch + run: git push origin ${{ steps.version_bump.outputs.new_version_branch }} + + - name: Create Pull Request + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh pr create \ + --title "Prepare Release ${{ steps.version_bump.outputs.new_version_tag }}" \ + --body "This PR includes the version bump and updated changelog for release ${{ steps.version_bump.outputs.new_version_tag }}. Please review." \ + --base main \ + --head ${{ steps.version_bump.outputs.new_version_branch }} \ + --label "release" # Optional: Add a label if it exists \ No newline at end of file diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml deleted file mode 100644 index 78625f9a4..000000000 --- a/.github/workflows/prepare-release.yml +++ /dev/null @@ -1,69 +0,0 @@ -name: Prepare Release - -on: - workflow_dispatch: - inputs: - version_number: - description: 'Exact version tag to create (e.g., v1.2.3)' - required: true - type: string - changelog_path: - description: 'Path to the changelog file for this release' - required: true - type: string - -jobs: - prepare: - name: Prepare Release Version - runs-on: ubuntu-latest - permissions: - contents: write # Needed to push commits and tags - - steps: - - name: Checkout main branch - uses: actions/checkout@v4 - with: - ref: main # Ensure we are on the main branch - - - name: Set up Node.js - uses: actions/setup-node@v4 - with: - node-version: '20.x' - cache: 'npm' # Cache npm dependencies - - - name: Clean install dependencies - run: rm -rf node_modules && npm ci - - - name: Configure Git User - run: | - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - - - name: Bump version and capture new version - id: version_bump - run: | - # Run npm version with the exact version number provided as input - # This updates package.json and package-lock.json - # The output should be the same version number (e.g., v1.2.3) - NEW_VERSION=$(npm version ${{ github.event.inputs.version_number }} --no-git-tag-version --allow-same-version) # Use exact version_number, allow same version avoids error if already set - echo "Specified version tag: $NEW_VERSION" - # Set the specified version as an output for later steps - echo "new_version_tag=$NEW_VERSION" >> "$GITHUB_OUTPUT" - - - - name: Commit version bump - run: | - git add package.json package-lock.json - git commit -m "chore: Bump version to ${{ steps.version_bump.outputs.new_version_tag }}" - - - name: Push commit to main - run: git push origin main - - - name: Create Git Tag - run: git tag ${{ steps.version_bump.outputs.new_version_tag }} - - - name: Delete Remote Tag if Exists (Ignore Errors) - run: git push --delete origin ${{ steps.version_bump.outputs.new_version_tag }} || true - - - name: Push Git Tag - run: git push origin ${{ steps.version_bump.outputs.new_version_tag }} \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index db1f1138b..c21d06b90 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,35 +3,21 @@ name: Create Release on: push: tags: - - 'v*.*.*' # Trigger on version tags like v1.0.0, v1.2.3, etc. - workflow_dispatch: - inputs: - tag_name: # Added input for manual trigger - description: 'Tag to create the release for (e.g., v1.2.3)' - required: true - type: string + - 'v*.*.*' # Trigger ONLY on version tags like v1.0.0, v1.2.3, etc. permissions: - contents: write # Needed to create releases + contents: write # Needed to create releases and write release notes jobs: release: name: Create GitHub Release runs-on: ubuntu-latest steps: - - name: Determine Ref to Checkout - id: determine_ref - run: | - if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then - echo "ref=${{ github.event.inputs.tag_name }}" >> "$GITHUB_OUTPUT" - else - echo "ref=${{ github.ref }}" >> "$GITHUB_OUTPUT" - fi - - name: Checkout code uses: actions/checkout@v4 with: - ref: ${{ steps.determine_ref.outputs.ref }} # Use determined ref (tag or branch) + ref: ${{ github.ref }} # Checkout the specific tag that triggered the run + fetch-depth: 0 # Fetch history for release notes generation - name: Set up Node.js uses: actions/setup-node@v4 @@ -65,22 +51,15 @@ jobs: platforms: linux/amd64,linux/arm64 # Add other platforms if needed push: true tags: | - rcourtman/pulse:${{ github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name || github.ref_name }} + rcourtman/pulse:${{ github.ref_name }} # Use tag name from push event rcourtman/pulse:latest # --- End Docker Steps --- - name: Create GitHub Release - uses: softprops/action-gh-release@v2 # Popular action for creating releases env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Provided by GitHub Actions - with: - # Use input tag for dispatch, otherwise default (inferred from github.ref) - tag_name: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name || '' }} - # Dynamically set the path to the changelog file based on the tag - body_path: changelog-${{ github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name || github.ref_name }}.md - draft: true # Create the release as a draft initially - # Optionally, you can generate release notes automatically: - # generate_release_notes: true - # Assets can be uploaded later if needed, e.g.: - # files: | - # ./release-*.zip \ No newline at end of file + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh release create ${{ github.ref_name }} \ + --title "Release ${{ github.ref_name }}" \ + --generate-notes \ + --draft # Keep as draft initially \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index f6879bb97..96bf187fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ }, "devDependencies": { "autoprefixer": "^10.4.21", + "conventional-changelog-cli": "^5.0.0", "dotenv": "^16.5.0", "jest": "^29.7.0", "postcss": "^8.5.3", @@ -544,6 +545,55 @@ "dev": true, "license": "MIT" }, + "node_modules/@conventional-changelog/git-client": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@conventional-changelog/git-client/-/git-client-1.0.1.tgz", + "integrity": "sha512-PJEqBwAleffCMETaVm/fUgHldzBE35JFk3/9LL6NUA5EXa3qednu+UT6M7E5iBu3zIQZCULYIiZ90fBYHt6xUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/semver": "^7.5.5", + "semver": "^7.5.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "conventional-commits-filter": "^5.0.0", + "conventional-commits-parser": "^6.0.0" + }, + "peerDependenciesMeta": { + "conventional-commits-filter": { + "optional": true + }, + "conventional-commits-parser": { + "optional": true + } + } + }, + "node_modules/@conventional-changelog/git-client/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@hutson/parse-repository-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-5.0.0.tgz", + "integrity": "sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -1194,6 +1244,20 @@ "undici-types": "~6.21.0" } }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", @@ -1218,6 +1282,13 @@ "dev": true, "license": "MIT" }, + "node_modules/add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", + "dev": true, + "license": "MIT" + }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -1300,6 +1371,13 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true, + "license": "MIT" + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -1869,6 +1947,17 @@ "node": ">= 6" } }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1901,6 +1990,237 @@ "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" } }, + "node_modules/conventional-changelog": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-6.0.0.tgz", + "integrity": "sha512-tuUH8H/19VjtD9Ig7l6TQRh+Z0Yt0NZ6w/cCkkyzUbGQTnUEmKfGtkC9gGfVgCfOL1Rzno5NgNF4KY8vR+Jo3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "conventional-changelog-angular": "^8.0.0", + "conventional-changelog-atom": "^5.0.0", + "conventional-changelog-codemirror": "^5.0.0", + "conventional-changelog-conventionalcommits": "^8.0.0", + "conventional-changelog-core": "^8.0.0", + "conventional-changelog-ember": "^5.0.0", + "conventional-changelog-eslint": "^6.0.0", + "conventional-changelog-express": "^5.0.0", + "conventional-changelog-jquery": "^6.0.0", + "conventional-changelog-jshint": "^5.0.0", + "conventional-changelog-preset-loader": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/conventional-changelog-angular": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz", + "integrity": "sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/conventional-changelog-atom": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-5.0.0.tgz", + "integrity": "sha512-WfzCaAvSCFPkznnLgLnfacRAzjgqjLUjvf3MftfsJzQdDICqkOOpcMtdJF3wTerxSpv2IAAjX8doM3Vozqle3g==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=18" + } + }, + "node_modules/conventional-changelog-cli": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-5.0.0.tgz", + "integrity": "sha512-9Y8fucJe18/6ef6ZlyIlT2YQUbczvoQZZuYmDLaGvcSBP+M6h+LAvf7ON7waRxKJemcCII8Yqu5/8HEfskTxJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "add-stream": "^1.0.0", + "conventional-changelog": "^6.0.0", + "meow": "^13.0.0", + "tempfile": "^5.0.0" + }, + "bin": { + "conventional-changelog": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/conventional-changelog-codemirror": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-5.0.0.tgz", + "integrity": "sha512-8gsBDI5Y3vrKUCxN6Ue8xr6occZ5nsDEc4C7jO/EovFGozx8uttCAyfhRrvoUAWi2WMm3OmYs+0mPJU7kQdYWQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=18" + } + }, + "node_modules/conventional-changelog-conventionalcommits": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-8.0.0.tgz", + "integrity": "sha512-eOvlTO6OcySPyyyk8pKz2dP4jjElYunj9hn9/s0OB+gapTO8zwS9UQWrZ1pmF2hFs3vw1xhonOLGcGjy/zgsuA==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/conventional-changelog-core": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-8.0.0.tgz", + "integrity": "sha512-EATUx5y9xewpEe10UEGNpbSHRC6cVZgO+hXQjofMqpy+gFIrcGvH3Fl6yk2VFKh7m+ffenup2N7SZJYpyD9evw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@hutson/parse-repository-url": "^5.0.0", + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^8.0.0", + "conventional-commits-parser": "^6.0.0", + "git-raw-commits": "^5.0.0", + "git-semver-tags": "^8.0.0", + "hosted-git-info": "^7.0.0", + "normalize-package-data": "^6.0.0", + "read-package-up": "^11.0.0", + "read-pkg": "^9.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/conventional-changelog-ember": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-5.0.0.tgz", + "integrity": "sha512-RPflVfm5s4cSO33GH/Ey26oxhiC67akcxSKL8CLRT3kQX2W3dbE19sSOM56iFqUJYEwv9mD9r6k79weWe1urfg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=18" + } + }, + "node_modules/conventional-changelog-eslint": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-6.0.0.tgz", + "integrity": "sha512-eiUyULWjzq+ybPjXwU6NNRflApDWlPEQEHvI8UAItYW/h22RKkMnOAtfCZxMmrcMO1OKUWtcf2MxKYMWe9zJuw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=18" + } + }, + "node_modules/conventional-changelog-express": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-5.0.0.tgz", + "integrity": "sha512-D8Q6WctPkQpvr2HNCCmwU5GkX22BVHM0r4EW8vN0230TSyS/d6VQJDAxGb84lbg0dFjpO22MwmsikKL++Oo/oQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=18" + } + }, + "node_modules/conventional-changelog-jquery": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-6.0.0.tgz", + "integrity": "sha512-2kxmVakyehgyrho2ZHBi90v4AHswkGzHuTaoH40bmeNqUt20yEkDOSpw8HlPBfvEQBwGtbE+5HpRwzj6ac2UfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=18" + } + }, + "node_modules/conventional-changelog-jshint": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-5.0.0.tgz", + "integrity": "sha512-gGNphSb/opc76n2eWaO6ma4/Wqu3tpa2w7i9WYqI6Cs2fncDSI2/ihOfMvXveeTTeld0oFvwMVNV+IYQIk3F3g==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/conventional-changelog-preset-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-5.0.0.tgz", + "integrity": "sha512-SetDSntXLk8Jh1NOAl1Gu5uLiCNSYenB5tm0YVeZKePRIgDW9lQImromTwLa3c/Gae298tsgOM+/CYT9XAl0NA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/conventional-changelog-writer": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.0.1.tgz", + "integrity": "sha512-hlqcy3xHred2gyYg/zXSMXraY2mjAYYo0msUCpK+BGyaVJMFCKWVXPIHiaacGO2GGp13kvHWXFhYmxT4QQqW3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "conventional-commits-filter": "^5.0.0", + "handlebars": "^4.7.7", + "meow": "^13.0.0", + "semver": "^7.5.2" + }, + "bin": { + "conventional-changelog-writer": "dist/cli/index.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/conventional-changelog-writer/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-filter": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz", + "integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/conventional-commits-parser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.1.0.tgz", + "integrity": "sha512-5nxDo7TwKB5InYBl4ZC//1g9GRwB/F3TXOGR9hgUjMGfvSP4Vu5NkpNro2+1+TIEy1vwxApl5ircECr2ri5JIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "meow": "^13.0.0" + }, + "bin": { + "conventional-commits-parser": "dist/cli/index.js" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -2044,6 +2364,19 @@ "dev": true, "license": "MIT" }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/dotenv": { "version": "16.5.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", @@ -2334,6 +2667,19 @@ "node": ">=8" } }, + "node_modules/find-up-simple": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", + "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/follow-redirects": { "version": "1.15.9", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", @@ -2510,6 +2856,40 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/git-raw-commits": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-5.0.0.tgz", + "integrity": "sha512-I2ZXrXeOc0KrCvC7swqtIFXFN+rbjnC7b2T943tvemIOVNl+XP8YnA9UVwqFhzzLClnSA60KR/qEjLpXzs73Qg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@conventional-changelog/git-client": "^1.0.0", + "meow": "^13.0.0" + }, + "bin": { + "git-raw-commits": "src/cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/git-semver-tags": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-8.0.0.tgz", + "integrity": "sha512-N7YRIklvPH3wYWAR2vysaqGLPRcpwQ0GKdlqTiVN5w1UmCdaeY3K8s6DMKRCh54DDdzyt/OAB6C8jgVtb7Y2Fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@conventional-changelog/git-client": "^1.0.0", + "meow": "^13.0.0" + }, + "bin": { + "git-semver-tags": "src/cli.js" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -2573,6 +2953,28 @@ "dev": true, "license": "ISC" }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2621,6 +3023,19 @@ "node": ">= 0.4" } }, + "node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -2668,6 +3083,19 @@ "node": ">=0.8.19" } }, + "node_modules/index-to-position": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.1.0.tgz", + "integrity": "sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -2775,6 +3203,16 @@ "node": ">=0.12.0" } }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-retry-allowed": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz", @@ -3770,6 +4208,19 @@ "node": ">= 0.4" } }, + "node_modules/meow": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -3848,6 +4299,16 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", @@ -3903,6 +4364,13 @@ "dev": true, "license": "MIT" }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -3917,6 +4385,34 @@ "dev": true, "license": "MIT" }, + "node_modules/normalize-package-data": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -4437,6 +4933,88 @@ "pify": "^2.3.0" } }, + "node_modules/read-package-up": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz", + "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up-simple": "^1.0.0", + "read-pkg": "^9.0.0", + "type-fest": "^4.6.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-package-up/node_modules/type-fest": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.40.1.tgz", + "integrity": "sha512-9YvLNnORDpI+vghLU/Nf+zSv0kL47KbVJ1o3sKgoTefl6i+zebxbiDQWoe/oWWqPhIgQdRZRT1KA9sCPL810SA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", + "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.3", + "normalize-package-data": "^6.0.0", + "parse-json": "^8.0.0", + "type-fest": "^4.6.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/parse-json": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", + "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "index-to-position": "^1.1.0", + "type-fest": "^4.39.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.40.1.tgz", + "integrity": "sha512-9YvLNnORDpI+vghLU/Nf+zSv0kL47KbVJ1o3sKgoTefl6i+zebxbiDQWoe/oWWqPhIgQdRZRT1KA9sCPL810SA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -4663,6 +5241,42 @@ "source-map": "^0.6.0" } }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.21", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", + "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", + "dev": true, + "license": "CC0-1.0" + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -4946,6 +5560,32 @@ "node": ">=14.0.0" } }, + "node_modules/temp-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/tempfile": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-5.0.0.tgz", + "integrity": "sha512-bX655WZI/F7EoTDw9JvQURqAXiPHi8o8+yFxPF2lWYyz1aHnmMRuXWqL6YB6GmeO0o4DIYWHLgGNi/X64T+X4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "temp-dir": "^3.0.0" + }, + "engines": { + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -5095,6 +5735,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", @@ -5102,6 +5756,19 @@ "dev": true, "license": "MIT" }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/update-browserslist-db": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", @@ -5155,6 +5822,17 @@ "node": ">=10.12.0" } }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -5181,6 +5859,13 @@ "node": ">= 8" } }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT" + }, "node_modules/wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", diff --git a/package.json b/package.json index 821917c34..20deeb2d4 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "_comment_tailwind_v3_reason": "Using Tailwind CSS v3 (3.4.4) due to build inconsistencies observed with v4 (specifically 4.1.4). v4 resulted in incorrectly purged CSS files when built within certain Linux environments (e.g., Proxmox LXC - Debian 12 x86_64), failing to detect dynamically added classes. v3.4.4 builds correctly.", "devDependencies": { "autoprefixer": "^10.4.21", + "conventional-changelog-cli": "^5.0.0", "dotenv": "^16.5.0", "jest": "^29.7.0", "postcss": "^8.5.3", From 39afe7dcc1356b55f0b7e26cc2a5b9a9e538f1f8 Mon Sep 17 00:00:00 2001 From: "courtmanr@gmail.com" Date: Wed, 30 Apr 2025 20:47:27 +0100 Subject: [PATCH 11/15] fix(workflow): remove non-existent label from prepare release PR creation --- .github/workflows/prepare-release-pr.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/prepare-release-pr.yml b/.github/workflows/prepare-release-pr.yml index b59c319a2..4d43a68c0 100644 --- a/.github/workflows/prepare-release-pr.yml +++ b/.github/workflows/prepare-release-pr.yml @@ -77,5 +77,4 @@ jobs: --title "Prepare Release ${{ steps.version_bump.outputs.new_version_tag }}" \ --body "This PR includes the version bump and updated changelog for release ${{ steps.version_bump.outputs.new_version_tag }}. Please review." \ --base main \ - --head ${{ steps.version_bump.outputs.new_version_branch }} \ - --label "release" # Optional: Add a label if it exists \ No newline at end of file + --head ${{ steps.version_bump.outputs.new_version_branch }} \ No newline at end of file From e19b83e6cfe30e627deefa96aa875ebca008a369 Mon Sep 17 00:00:00 2001 From: "courtmanr@gmail.com" Date: Wed, 30 Apr 2025 22:47:56 +0100 Subject: [PATCH 12/15] fix: reset version to v3.2.2 Corrects package.json and package-lock.json before attempting v3.3.0 release. --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 96bf187fd..95e8d0564 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pulse", - "version": "3.3.0", + "version": "3.2.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pulse", - "version": "3.3.0", + "version": "3.2.2", "license": "MIT", "dependencies": { "axios": "^1.9.0", diff --git a/package.json b/package.json index 20deeb2d4..98b0cec56 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pulse", - "version": "3.3.0", + "version": "3.2.2", "description": "A lightweight monitoring application for Proxmox VE.", "main": "server/index.js", "scripts": { From 35bb7c535b6487eebf6dde26d2dea74bfa69955a Mon Sep 17 00:00:00 2001 From: "courtmanr@gmail.com" Date: Wed, 30 Apr 2025 22:36:56 +0100 Subject: [PATCH 13/15] fix(workflow): remove comment from docker tag in release workflow --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c21d06b90..bd6063818 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -51,7 +51,7 @@ jobs: platforms: linux/amd64,linux/arm64 # Add other platforms if needed push: true tags: | - rcourtman/pulse:${{ github.ref_name }} # Use tag name from push event + rcourtman/pulse:${{ github.ref_name }} rcourtman/pulse:latest # --- End Docker Steps --- From e3ca53305d00b69751b61d0abafbe85428190237 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 30 Apr 2025 22:49:38 +0100 Subject: [PATCH 14/15] chore: Prepare release v3.3.0 (#69) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 544 ++++++++++++++++++++++++++++++++++++++++++++++ package-lock.json | 4 +- package.json | 2 +- 3 files changed, 547 insertions(+), 3 deletions(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..f48ad0ceb --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,544 @@ +# [3.3.0](https://github.com/rcourtman/Pulse/compare/v3.3.2...v3.3.0) (2025-04-30) + + +### Bug Fixes + +* reset version to v3.2.2 ([ec4c026](https://github.com/rcourtman/Pulse/commit/ec4c026f7fff0e2b3456e34c39f275125a4a8806)) +* **workflow:** remove comment from docker tag in release workflow ([99bf2f0](https://github.com/rcourtman/Pulse/commit/99bf2f0ea5e28d96fb4c8804b48f8b479b64caa6)) +* **workflow:** remove non-existent label from prepare release PR creation ([16ef359](https://github.com/rcourtman/Pulse/commit/16ef3597008d80faa1ba6cf528d9a22e0a253c18)) + + +### Features + +* require version and changelog for prepare release workflow ([eb77696](https://github.com/rcourtman/Pulse/commit/eb77696250449d1f7cafb2044957c63ec26edb43)) +* **workflow:** require tag input for manual release creation ([8247865](https://github.com/rcourtman/Pulse/commit/8247865675d482654bb2e1b38f559198d29dd2b1)) +* **workflow:** use conventional changelog file for release body ([00effc3](https://github.com/rcourtman/Pulse/commit/00effc301f545cb25d1ba81ea6ba30af74b70521)) + + + +## [3.3.2](https://github.com/rcourtman/Pulse/compare/v3.2.2...v3.3.2) (2025-04-30) + + +### Bug Fixes + +* **pbs:** Populate summary stats in processPbsTasks ([f827742](https://github.com/rcourtman/Pulse/commit/f827742fc1a19b9220b881f6e938297465cb2c67)) +* prevent vertical scrollbar artifact on tabs nav ([79f705d](https://github.com/rcourtman/Pulse/commit/79f705db95d3d4a62276cacf878b0e72659d5790)) + + +### Features + +* allow manual triggering of release workflow ([dcbdfde](https://github.com/rcourtman/Pulse/commit/dcbdfdee2c6495d748d712becd7f98f02749df69)) +* Responsive layout improvements for header, tabs, and filters ([7073886](https://github.com/rcourtman/Pulse/commit/7073886d74648e468088f9a7d7b6f0730cfe2883)) + + + +## [3.2.2](https://github.com/rcourtman/Pulse/compare/v3.2.1...v3.2.2) (2025-04-30) + + +### Bug Fixes + +* Add missing axios dependency ([cc0b800](https://github.com/rcourtman/Pulse/commit/cc0b8008fb1bfb29e4e0569d2dfeed6cef03677a)) +* Add missing axios-retry dependency ([205e993](https://github.com/rcourtman/Pulse/commit/205e993bb8e3790df8d1e75246439bd028868d36)) +* Correct assertions in config.test.js case 1 ([73f1c59](https://github.com/rcourtman/Pulse/commit/73f1c59f05abceb9f9d6047cc4515c567adaa9c8)) +* Correct function name in config.test.js ([d26135c](https://github.com/rcourtman/Pulse/commit/d26135c0f5272090dfcb272dbf0e9404a0143a0f)) +* Correct intentionally broken test case ([44aa0d7](https://github.com/rcourtman/Pulse/commit/44aa0d7e0cfd9834793eba43def785637f732bf2)) +* Correct invalid tags in release workflow ([7d71f33](https://github.com/rcourtman/Pulse/commit/7d71f33b05ba3db60037b4abd73fb64dc1c66e21)) +* **pbs:** Add missing worker types for verification tasks (fixes [#61](https://github.com/rcourtman/Pulse/issues/61)) ([3a1adfa](https://github.com/rcourtman/Pulse/commit/3a1adfa39cb47bc70f139142c12e3654e575e0c0)) +* Re-center header logo on wider screens ([2177c45](https://github.com/rcourtman/Pulse/commit/2177c452f759417713f3a63bde36deb36866ba0f)) +* Revert broken test, remove CI debug steps ([856622b](https://github.com/rcourtman/Pulse/commit/856622b24882cf6b578938bee4dbb768115b386c)) + + +### Features + +* Add test improvements and CI workflow ([3e037b3](https://github.com/rcourtman/Pulse/commit/3e037b33d67d0ecb0027ed4e61aac36478d1e637)) +* Sync all local changes including UI and server updates ([cc482d3](https://github.com/rcourtman/Pulse/commit/cc482d36eb0d374aa4abb67036e3fb380570d630)) + + +### Reverts + +* Revert "chore: Bump version to v3.2.3" ([33adf44](https://github.com/rcourtman/Pulse/commit/33adf447739dfef0f7dab0673934bb3a152de4b1)) + + + +## [3.2.1](https://github.com/rcourtman/Pulse/compare/v3.2.0...v3.2.1) (2025-04-29) + + +### Bug Fixes + +* Correct case statement syntax in install script ([62de6db](https://github.com/rcourtman/Pulse/commit/62de6db2afcbcc68e07b7164b698d34dbbd2dc51)) +* Correct print_info function definition syntax ([3f07d4b](https://github.com/rcourtman/Pulse/commit/3f07d4b119a0b44f87436068c152535562e13649)) +* Correct print_success function definition syntax ([cde72b4](https://github.com/rcourtman/Pulse/commit/cde72b47088aa8cb5cfaadab945014af805b6e18)) +* Correct print_warning function definition syntax ([b867c31](https://github.com/rcourtman/Pulse/commit/b867c31aa8c34c973bfc39ca3382477907d39737)) + + +### Features + +* Await initial discovery cycle before server start ([0b71dbb](https://github.com/rcourtman/Pulse/commit/0b71dbbbdbbd46772f34e9e6465971ef56e53f6c)) +* Enhance install script with env, npm ci, logs, pre-clone check ([aac31e8](https://github.com/rcourtman/Pulse/commit/aac31e8eb939fc08f0c973d4f0971928918e7cc2)) +* **ui:** Improve PBS tab layout and health status ([6b6de57](https://github.com/rcourtman/Pulse/commit/6b6de575bc07d4cc70b1525fab4fb0ae49d375ba)) + + + +# [3.2.0](https://github.com/rcourtman/Pulse/compare/v3.1.5...v3.2.0) (2025-04-29) + + +### Bug Fixes + +* Correct ID for list grouping filter in UI update ([7c4880c](https://github.com/rcourtman/Pulse/commit/7c4880c620dfe7353c813b720c267dc9566a592b)) +* **pbs:** Resolve PBS data display issues and update docs - Corrects PBS API interaction logic, retains logging/fetch improvements, updates README/.env.example based on testing. ([4fed85d](https://github.com/rcourtman/Pulse/commit/4fed85dbf0b991327afd716dcd7626df1883d64b)) +* Remove icon next to UI scale slider ([3ebcf38](https://github.com/rcourtman/Pulse/commit/3ebcf38617db322af972293c258221126fd1a34c)) +* **ui:** Correct backup health status logic for recent snapshots - Marks as OK if snapshot <3d, even if no recent task reported. ([900b578](https://github.com/rcourtman/Pulse/commit/900b5787a646a58b14cc23e58a0bf7794b0e73d6)) + + +### Features + +* Add PBS docs, increase recent task limit, clean up logs ([3845b14](https://github.com/rcourtman/Pulse/commit/3845b140faf64587de9be28e1ca8e86c6fa4a377)) +* Add UI scale slider ([593e899](https://github.com/rcourtman/Pulse/commit/593e8996f64d2b89565ff880d580775ffae51a92)) +* Persist filter state in localStorage ([991a9d9](https://github.com/rcourtman/Pulse/commit/991a9d98b637efdb26785d2a23e704480c591068)) +* **ui:** Improve PBS tab readability - Parses task targets, shortens UPIDs, updates GC status display. ([91c3db7](https://github.com/rcourtman/Pulse/commit/91c3db7f4b8c74c1dda55229fa0d09bf9484c512)) + + + +## [3.1.5](https://github.com/rcourtman/Pulse/compare/v3.1.4...v3.1.5) (2025-04-27) + + +### Bug Fixes + +* **pbs:** Use correct colon separator for PBS API token auth ([d4e20dd](https://github.com/rcourtman/Pulse/commit/d4e20dddeeba24064ca8ba1bf9bcc9fa47750064)) +* **pbs:** Use correct colon separator for PBS API token auth ([58e43cd](https://github.com/rcourtman/Pulse/commit/58e43cd391d72898ad23e49edc6ccbc62546b8e9)) +* **storage:** Ensure PVE storage data is correctly aggregated ([4668477](https://github.com/rcourtman/Pulse/commit/4668477bcdbcf1c032e63ddd45e0e8e559ca9720)) + + +### Features + +* Grey out PBS/Backups tabs when PBS is unavailable ([5037df0](https://github.com/rcourtman/Pulse/commit/5037df0efe9bb4164ca6359c11f8e4751964d92e)) + + + +## [3.1.4](https://github.com/rcourtman/Pulse/compare/v3.1.3...v3.1.4) (2025-04-26) + + +### Bug Fixes + +* Handle duplicate VMIDs and bump version to 3.1.4 ([3c0ceb9](https://github.com/rcourtman/Pulse/commit/3c0ceb9403865889d8f9ba8606a4bd62707926d6)) +* Improve display of low I/O rates ([ffcd0c1](https://github.com/rcourtman/Pulse/commit/ffcd0c1ddafcf5ed74c553523ad5f586ece9552f)) +* **install:** Force tag fetching during update to handle amended tags ([e8a2725](https://github.com/rcourtman/Pulse/commit/e8a27252008ffb7f705d8e545c21233e84fb48ca)) + + + +## [3.1.3](https://github.com/rcourtman/Pulse/compare/v3.1.2...v3.1.3) (2025-04-26) + + +### Bug Fixes + +* Add safelist to tailwind config for dynamic classes ([aea444c](https://github.com/rcourtman/Pulse/commit/aea444c1fc04c0a9122c9ed49a72e5f3341d9ea5)) +* Adjust build process for install script (no minify, install devDeps) ([6b1967c](https://github.com/rcourtman/Pulse/commit/6b1967c0a97b5eea5622749e8d3adb36587fde45)) +* Align Dockerfile and server paths for LXC/Docker compatibility ([e1f7126](https://github.com/rcourtman/Pulse/commit/e1f7126e0dc73ae3ed61176c682e92745dca9e0e)) +* Check in pre-built CSS and skip build in install script ([092c8ae](https://github.com/rcourtman/Pulse/commit/092c8ae7d3799d1330de7679deb1d93b67de4a62)) +* Commit correct non-purged output.css for workaround ([aa70a87](https://github.com/rcourtman/Pulse/commit/aa70a87e9fafe0b84f77608cedc8daa0baf58bbb)) +* Explicitly set NODE_ENV=development for build:css ([fe93c7d](https://github.com/rcourtman/Pulse/commit/fe93c7dc59b8f50399124eff32d5dc9dd571b2c2)) +* Force build:css script to mirror dev:css (no watch) ([b270a22](https://github.com/rcourtman/Pulse/commit/b270a2259c3a61a1ee336f908e4acd94dff9ba65)) +* **install:** Build CSS during install/update & use npx for TW v4 ([0271884](https://github.com/rcourtman/Pulse/commit/0271884b0173aeb308dca65f4578929b8587f2e9)) +* **install:** Correct syntax error in print_error function ([f9e568f](https://github.com/rcourtman/Pulse/commit/f9e568f527e11375e6fd37408671b8b5c10a62e5)) +* Resolve PBS banner bug and build issues (fixes [#55](https://github.com/rcourtman/Pulse/issues/55)) ([42dbf8e](https://github.com/rcourtman/Pulse/commit/42dbf8e2c7c3eec0deddd4547fdff17262e54a2a)) +* Resolve UI loading issues for v3.1.2 ([70491c8](https://github.com/rcourtman/Pulse/commit/70491c88d2fd6a73fd2edb40af4bae6aa1d98fea)) +* **server:** Add express static middleware and root route handler ([a93c9e7](https://github.com/rcourtman/Pulse/commit/a93c9e7da205ff678c6bf2dce00aa700c0f5c9d3)) +* **server:** Define http server before initializing Socket.IO ([8af4121](https://github.com/rcourtman/Pulse/commit/8af41216560f5de4b6e34386b71c382a267d8d14)) +* **server:** Remove obsolete code referencing globalPbsStatus ([45c5044](https://github.com/rcourtman/Pulse/commit/45c50441b808c79d1b603ba1a7af1ed2b07609f0)) +* **server:** Resolve ReferenceErrors in /api/storage and socket requestData ([cfc9514](https://github.com/rcourtman/Pulse/commit/cfc9514ef0b22fb1ae156becf31caa3e3c57b951)) +* **ui:** Make main table header alignment consistent ([#53](https://github.com/rcourtman/Pulse/issues/53)) ([58c3a1a](https://github.com/rcourtman/Pulse/commit/58c3a1ab20101d4d9b5e8e9881aa125347bfd1c3)) +* **ui:** Standardize all table headers to left-align ([#53](https://github.com/rcourtman/Pulse/issues/53)) ([f2d83c2](https://github.com/rcourtman/Pulse/commit/f2d83c26a79607a1dcabcd374a5ad41f3fb9d10d)) + + +### Features + +* Downgrade to Tailwind v3 and restore build step ([2b11de9](https://github.com/rcourtman/Pulse/commit/2b11de93ca39a98a8af2207b0fed5d84ef15b9b1)) +* **ui:** Display placeholder in PBS tab when not configured ([6fad187](https://github.com/rcourtman/Pulse/commit/6fad18709a2b5b386b1782ceef5ebb4d3ead6348)) + + +### Reverts + +* Remove pre-built CSS and restore build step ([df86e4a](https://github.com/rcourtman/Pulse/commit/df86e4a1dd633208ebf54ff58274665449e78628)) + + + +## [3.1.2](https://github.com/rcourtman/Pulse/compare/v3.1.1...v3.1.2) (2025-04-24) + + +### Features + +* Report version tag in update script success message ([35a04cf](https://github.com/rcourtman/Pulse/commit/35a04cfc955471d08bddea7237d42d1e9cc71fec)) +* **ui:** Display placeholder in PBS tab when not configured ([4c1f48d](https://github.com/rcourtman/Pulse/commit/4c1f48d6865c727a0c992d50ff4b87df501f0a79)) + + + +## [3.1.1](https://github.com/rcourtman/Pulse/compare/v3.1.0...v3.1.1) (2025-04-24) + + +### Bug Fixes + +* Correct public directory path in Dockerfile ([f77fcdf](https://github.com/rcourtman/Pulse/commit/f77fcdf95aec00a44404de121ce156a4510e1a83)) + + + +# [3.1.0](https://github.com/rcourtman/Pulse/compare/v3.0.2...v3.1.0) (2025-04-24) + + +### Bug Fixes + +* Correct paths after frontend asset refactor ([665b92b](https://github.com/rcourtman/Pulse/commit/665b92b3779bd18524aa96914be32a55ab9eacc6)) +* **debug:** Place guestId_temp inside deep copy ([3b65aaa](https://github.com/rcourtman/Pulse/commit/3b65aaab5d57255bf0970cf34de371a9275bc58e)) +* Ensure correct PBS status is emitted to frontend ([5a83841](https://github.com/rcourtman/Pulse/commit/5a8384116c733fb2f66fe7ff3aa524a6c029fe18)) +* **frontend:** Prevent metrics update overwriting PBS status ([a8e79c9](https://github.com/rcourtman/Pulse/commit/a8e79c9c1c80e0e8e069a33200e703319db7a72b)) +* Handle 'N/A' string in PBS GC status display ([4e2d99d](https://github.com/rcourtman/Pulse/commit/4e2d99d1bd0edde13791875120f4909ed625905f)) +* Remove node status debug log ([66aa670](https://github.com/rcourtman/Pulse/commit/66aa670ce028bcec17e33e97932ce1bb8cf6e32e)) +* Resolve Tailwind content path issue after refactor ([7e174e7](https://github.com/rcourtman/Pulse/commit/7e174e78ce8495ede68765b27f43aa7451160c5e)) +* Restore rate calc and improve history reset logic ([632a500](https://github.com/rcourtman/Pulse/commit/632a5004e4eff0f60430c2cbf1fedb2d9459b2be)) +* simplify PBS connected status text ([a89b56d](https://github.com/rcourtman/Pulse/commit/a89b56dd138f10486da72b5a22d5a4adf87e96dd)) +* **ui:** correct sort state key handling in updateSortUI for PBS tables ([459d2f7](https://github.com/rcourtman/Pulse/commit/459d2f71a7326e0a22fb2acdac974b152f885ad5)) +* **ui:** improve PBS table header contrast in dark mode ([99678d3](https://github.com/rcourtman/Pulse/commit/99678d3a2a488ab43f7a3a87aafb7784cddb9d17)) +* **ui:** prioritize explicit key in updateSortUI to avoid check failure ([4b1abe9](https://github.com/rcourtman/Pulse/commit/4b1abe957b8de2f4c61c4609eb31db5c18a9595b)) +* **ui:** remove initial PBS loading message correctly ([14439c3](https://github.com/rcourtman/Pulse/commit/14439c36ca316badfed363722b308499ad8be734)) +* **ui:** resolve hoisting and reference errors in PBS/sort logic ([a19dffb](https://github.com/rcourtman/Pulse/commit/a19dffbccb6332f95732b5833bad8d39e8bf31cb)) +* Use deep copy for metrics data point ([e571d73](https://github.com/rcourtman/Pulse/commit/e571d73369961bb47eeb909f98af56dc192f3913)) +* Use explicit copy for metrics data point to prevent stale disk values ([b2b6f48](https://github.com/rcourtman/Pulse/commit/b2b6f48dd9bccea5dfdae005d241cf2d2f6105f0)) +* Use maxcpu from /nodes endpoint and remove debug logs ([9c1f461](https://github.com/rcourtman/Pulse/commit/9c1f4618cf18c67b5485b0c0f04d693c6d6fc68f)) + + +### Features + +* Add debug log for node status before merge ([be1c6a8](https://github.com/rcourtman/Pulse/commit/be1c6a8fef6dc4d38d158ef7839421e33997876d)) +* add icons to navigation tabs ([5f76260](https://github.com/rcourtman/Pulse/commit/5f76260c4132c8200ddc4a8ca267a883ba8c4f45)) +* Add specific debug log for maxcpu ([30b96bd](https://github.com/rcourtman/Pulse/commit/30b96bd33ad8eeda131b488726da369795deb256)) +* Re-add specific debug log for maxcpu ([e09549d](https://github.com/rcourtman/Pulse/commit/e09549d3e75414708f384962a26a22ffb947a30c)) + + +### Reverts + +* Remove potentially problematic maxcpu debug log ([68a41c7](https://github.com/rcourtman/Pulse/commit/68a41c7b2b78ea5d87c3203c589dc8e44b46f66f)) + + + +## [3.0.2](https://github.com/rcourtman/Pulse/compare/v3.0.1...v3.0.2) (2025-04-24) + + + +## [3.0.1](https://github.com/rcourtman/Pulse/compare/v3.0.0...v3.0.1) (2025-04-24) + + +### Bug Fixes + +* Ensure systemd service is configured during update ([afe00ac](https://github.com/rcourtman/Pulse/commit/afe00ac6843bca943db49d54ca71b3dcd2dbf384)) +* **script:** Improve service cleanup and fix final instructions ([30f6571](https://github.com/rcourtman/Pulse/commit/30f6571af4a077c960d6524563d88d9569629d93)) +* **script:** Load .env file via systemd EnvironmentFile ([5dfac85](https://github.com/rcourtman/Pulse/commit/5dfac8582de9d17a42a8cfbfb4d68eb7fbcf4d85)) +* **script:** Prevent git clean from removing ignored .env file ([d7539ab](https://github.com/rcourtman/Pulse/commit/d7539ab43dfc1dd6e147e3d6d81663c5bf3a893b)) +* **script:** Update .env file paths in configure_environment ([526a6e8](https://github.com/rcourtman/Pulse/commit/526a6e87f54659d55a83c5c9b61386e086802328)) +* **script:** Use explicit path for EnvironmentFile in systemd ([b8aa564](https://github.com/rcourtman/Pulse/commit/b8aa56490677f7349cdd226f7601bceb5c227cc7)) +* Use git reset --hard for robust script updates ([78fa07e](https://github.com/rcourtman/Pulse/commit/78fa07e8f181ec15640fcb8b9ece6667227e8fbf)) + + +### Features + +* Configure Tailwind CSS for class-based dark mode ([233f8e5](https://github.com/rcourtman/Pulse/commit/233f8e5bb5f15e71accc169f31e2b2208f437108)) + + + +# [3.0.0](https://github.com/rcourtman/Pulse/compare/v2.5.0...v3.0.0) (2025-04-23) + + + +# [2.5.0](https://github.com/rcourtman/Pulse/compare/v1.5.1...v2.5.0) (2025-04-23) + + +### Bug Fixes + +* Add rsync to dependencies for update function ([655c6e8](https://github.com/rcourtman/Pulse/commit/655c6e8d24e00f7c830c9642634b2458bbcceedc)) +* Allow script to continue after interactive update for cron prompt ([3b62e4b](https://github.com/rcourtman/Pulse/commit/3b62e4bbe27af9cd26d6834dd40c5f390754159f)) +* **app:** remove sorting setup for non-existent tables ([d5aeccf](https://github.com/rcourtman/Pulse/commit/d5aeccfc05e694d11e83ec2c83d7cb6972adeaff)) +* correct network rate calculation to properly handle Proxmox cumulative counters ([aa67bd3](https://github.com/rcourtman/Pulse/commit/aa67bd3b464b6c0de1ce49f68994125bd6d8b382)) +* Correct parsing for pvesm list and pveam available ([35b93f5](https://github.com/rcourtman/Pulse/commit/35b93f512fc87b2cc6fb5781051fef774b5bcd68)) +* **docs:** Correct community script curl command ([8742366](https://github.com/rcourtman/Pulse/commit/874236661294223e24fdce0dccda3dd26904cc0d)) +* Escape parentheses in display_suffix assignments ([f57659e](https://github.com/rcourtman/Pulse/commit/f57659e4a118796bf6f61fd67edbd166e17a8d4c)) +* improve NetworkTableHeader robustness and drag-and-drop behavior ([6159b33](https://github.com/rcourtman/Pulse/commit/6159b33c91ebf369aaedbce79086e38d0fae940a)) +* Improve update robustness in install script ([c0e4dab](https://github.com/rcourtman/Pulse/commit/c0e4dabe44072d5e2d9e3447c805b77304d385c7)) +* **install:** always prompt for auto-update if no cron job found, even if crontab is empty ([63bc98d](https://github.com/rcourtman/Pulse/commit/63bc98d67a774a7a4211c441a46fca2acb47ab58)) +* **install:** always prompt for cron setup at end of script, add debug print ([635a660](https://github.com/rcourtman/Pulse/commit/635a660d0312a307de6b1dbcf95f1e343aa28f69)) +* **install:** show actual cron command and comment in schedule prompt ([33c0738](https://github.com/rcourtman/Pulse/commit/33c07380b0b5c93dad24bce1e7239a6e5e7c69a9)) +* **mock:** update mock data cleanup to preserve server-side settings ([054796d](https://github.com/rcourtman/Pulse/commit/054796d68f92cf484ab5cfb999f45c460a41dc39)) +* Prevent download attempt if template support is unknown (jq missing) ([aa2800e](https://github.com/rcourtman/Pulse/commit/aa2800ef50550b558164e8d166a196e26667554d)) +* Prevent set -e exit on grep in prompt_for_cron_setup ([c2f626a](https://github.com/rcourtman/Pulse/commit/c2f626a693da63d9cec1d8f472e028310a06f393)) +* prevent storage header transparency in dark mode ([6be0c78](https://github.com/rcourtman/Pulse/commit/6be0c78b7407bb8c06b7354e2533f153fc0da8ba)) +* Reliably determine script path for cron setup ([bdd2eda](https://github.com/rcourtman/Pulse/commit/bdd2edad13b6f1cc276b34245ad4e90ffb21155b)) +* Rely only on boolean check for template support ([55f5be6](https://github.com/rcourtman/Pulse/commit/55f5be6a43c48527779a8bbb24504e8d1369b55e)) +* Remove -P flag from pvesm status to avoid arg error ([de3f957](https://github.com/rcourtman/Pulse/commit/de3f95759ea56c296260c52073a3724087c353ec)) +* Remove parentheses from fallback storage suffix ([05fb38f](https://github.com/rcourtman/Pulse/commit/05fb38fbea2705f11333678d7c67becd021f174d)) +* Remove parentheses from storage display suffix ([4afd47a](https://github.com/rcourtman/Pulse/commit/4afd47ae25c73056d627628ac27f49d2b2c54040)) +* Replace backticks with single quotes in jq warning ([97055ea](https://github.com/rcourtman/Pulse/commit/97055ea18c403de1d322c500780502f03ebdebf1)) +* Reset repo before update to avoid conflicts ([788972f](https://github.com/rcourtman/Pulse/commit/788972fca75c3dea590529f63a12c394fb4156f9)) +* resolve security vulnerabilities by removing unused packages ([ce4d3f1](https://github.com/rcourtman/Pulse/commit/ce4d3f1a5ff94f4678c6d7e1e0d839894a6a6018)) +* **script:** Add gpg dependency for NodeSource key import ([9ecb180](https://github.com/rcourtman/Pulse/commit/9ecb18061f60ca6e43f33c928b5ebd66cc113d6e)) +* **script:** Run git pull as pulse user during update ([ff8ec07](https://github.com/rcourtman/Pulse/commit/ff8ec078171934e0da907c0c75d5d23d7623e0c2)) +* Suppress gpg overwrite prompt ([2db4bf5](https://github.com/rcourtman/Pulse/commit/2db4bf59b8c7a1d73fa427bc479b12a871a98512)) +* Update .gitignore and untrack server/node_modules ([cd187a3](https://github.com/rcourtman/Pulse/commit/cd187a308488eabff2a27978bacd64b5013dcdea)) +* update API proxy port to 7654 ([18e5687](https://github.com/rcourtman/Pulse/commit/18e56873d53b57a0615f7ba46304412deeb9dd7b)) +* update Docker Compose environment variables to match .env.example format ([7108b7b](https://github.com/rcourtman/Pulse/commit/7108b7bfb7ae537b2e422f487564506c687a6396)) +* Update repository URL in script and README ([c3656ae](https://github.com/rcourtman/Pulse/commit/c3656ae56fd89e06299bb6cca5a46ae5c1f93bc1)) +* Use pvesh and jq for more robust storage detection ([28ca746](https://github.com/rcourtman/Pulse/commit/28ca7469e87d4bb275b3b1f0fb564d60ed320780)) +* Use pvesm status as simpler jq fallback ([d63cad7](https://github.com/rcourtman/Pulse/commit/d63cad74cbd00b854d0e63194ce9dd76df743820)) + + +### Features + +* Add API retry logic ([#51](https://github.com/rcourtman/Pulse/issues/51)) and sort persistence ([#50](https://github.com/rcourtman/Pulse/issues/50)) ([f7acc6e](https://github.com/rcourtman/Pulse/commit/f7acc6ea98ab3634edfd49d79f70fa52f806abf5)) +* Add automatic LXC template download if needed ([fc0517d](https://github.com/rcourtman/Pulse/commit/fc0517d5f6113d5d79e78c524e2090835d85a31e)) +* Add automatic update option via cron ([d8922ef](https://github.com/rcourtman/Pulse/commit/d8922efffc53672b6a078f8c8bd3dd5303bba117)) +* Add debug logging to prompt_yes_no ([e14e3c0](https://github.com/rcourtman/Pulse/commit/e14e3c0a952b5b4f3aac40a95979049f7f66bb75)) +* add dev-real environment configuration for non-mock data development ([fc9f1db](https://github.com/rcourtman/Pulse/commit/fc9f1db52d95649553872a53080296c62d7ad106)) +* Add Dockerfile and Docker Compose setup ([14bf3b1](https://github.com/rcourtman/Pulse/commit/14bf3b18d920cb08ec181252e673990784156941)) +* Add missing logo file from main branch ([e66dd30](https://github.com/rcourtman/Pulse/commit/e66dd3069577b9a3b915823e87927f8c0e7d97b0)) +* add mock data cleanup utilities ([c6b06da](https://github.com/rcourtman/Pulse/commit/c6b06da8b14969727a5e2be547009c87c30fc21b)) +* Add multi-endpoint monitoring support (v2.5.0) ([989f784](https://github.com/rcourtman/Pulse/commit/989f784f7be976d126a339333977c282421e65dc)) +* Add script to automate LXC creation and Pulse installation ([83613b5](https://github.com/rcourtman/Pulse/commit/83613b5fb0027db755cbb99a0b6eb45854a7e048)) +* Add version display to frontend ([2f77e8f](https://github.com/rcourtman/Pulse/commit/2f77e8f26d9b6ec67d0782d32758750f2a5aad3e)) +* Allow UI embedding in iframes (closes [#10](https://github.com/rcourtman/Pulse/issues/10)) ([7580930](https://github.com/rcourtman/Pulse/commit/758093079a23a993d55c873755ece08905f84bf0)) +* **app:** enhance UI and add cluster detection ([02e4070](https://github.com/rcourtman/Pulse/commit/02e40701417412616effa235a36ed5ef4ec26781)) +* Apply UI/UX and performance improvements ([bec137d](https://github.com/rcourtman/Pulse/commit/bec137db068a54e441f49ffcfd6d0f01c3e2ed00)) +* expose mock data environment variables to frontend ([d2ffc1d](https://github.com/rcourtman/Pulse/commit/d2ffc1dd356f9828523bac8acdc9246a267ddd9c)) +* Focus search on keypress, blur on Enter/Escape ([38e2684](https://github.com/rcourtman/Pulse/commit/38e26843242e737f32a594275bc9a96ad72be6d6)) +* improve mock data handling and add demo mode banner ([960eb27](https://github.com/rcourtman/Pulse/commit/960eb27ee2cc7d8c344dd086e42fd5c51777d530)) +* Improve storage selection and template download logic ([408347c](https://github.com/rcourtman/Pulse/commit/408347c328f728a8c96f4c326ea84a91c1d778f0)) +* Improve update stability and fix server dependencies ([cc20e77](https://github.com/rcourtman/Pulse/commit/cc20e77fea90d0beffa86dc96734eedc793d87cd)) +* **install:** Add URL validation and update prompt defaults ([c06e546](https://github.com/rcourtman/Pulse/commit/c06e54681b035400053488cc4696adbb3f51e38d)) +* **install:** clarify .env overwrite and cron schedule prompts for user safety ([0313a2f](https://github.com/rcourtman/Pulse/commit/0313a2f62031f692aa65413d5c3752be5f2e00cd)) +* **install:** full script refactor with atomic update, backup, health check, and UX improvements ([ff7f1f0](https://github.com/rcourtman/Pulse/commit/ff7f1f03b860855de7cf37cf10ab36ccdee5736b)) +* **install:** improve .env overwrite prompt with diff and explicit warning ([c03f941](https://github.com/rcourtman/Pulse/commit/c03f941700979cfc0aabbedd775d635df465cced)) +* **install:** improve cron setup prompt in install script Check for existing cron job during install and provide options to change, remove, or keep the existing schedule. ([533a970](https://github.com/rcourtman/Pulse/commit/533a970a80102124d7ee31d9b01df81cd5efe7cc)) +* **install:** make .env overwrite prompt friendlier and less alarming for users ([6d11f55](https://github.com/rcourtman/Pulse/commit/6d11f554a500092e27e614d7f84896b3d774aa22)) +* Link footer version to GitHub releases ([13aba29](https://github.com/rcourtman/Pulse/commit/13aba2975c7d4eec8085a438e51a0b608cdb1846)) +* **metrics:** improve network traffic simulation with realistic patterns ([c7f6784](https://github.com/rcourtman/Pulse/commit/c7f6784c08fd8569d042dda706f70399b4f47293)) +* **mock:** enhance mock client with HA support ([18f8673](https://github.com/rcourtman/Pulse/commit/18f86738d4ac610beec407d63666c07a6d50548e)) +* **mock:** enhance mock server with HA support ([395d0c3](https://github.com/rcourtman/Pulse/commit/395d0c3d6dde45c8bf7ecb7a342b3087ed0e9d4d)) +* **mock:** update custom mock data with HA states ([256bf79](https://github.com/rcourtman/Pulse/commit/256bf790c470f6f72814f81d0cafe01a08134da2)) +* **network:** add cluster detection and improve column visibility ([f55097d](https://github.com/rcourtman/Pulse/commit/f55097d71874371879f09c45b6bc2414553b83d6)) +* **network:** enhance data processing with detailed logging ([4c028e8](https://github.com/rcourtman/Pulse/commit/4c028e8a44376735c714be7a8130e7c38c9ded94)) +* **network:** enhance filtering and column management ([9e2c1b6](https://github.com/rcourtman/Pulse/commit/9e2c1b60e79885a7bc4e7b1c0ef7bb1cb3b54cb3)) +* **network:** enhance guest data handling and network traffic patterns ([9555d87](https://github.com/rcourtman/Pulse/commit/9555d878886f6c05e6b382a87c2eb09db604cb0a)) +* **network:** enhance HA status display and filtering ([429a929](https://github.com/rcourtman/Pulse/commit/429a929fc9ce396713ec4d19839056fac4d4a190)) +* **network:** update default column configuration ([1f5d63e](https://github.com/rcourtman/Pulse/commit/1f5d63eba85bf896e6444bfb8fa82325c80d9a4a)) +* Replace codebase entirely with simplified version ([83885e3](https://github.com/rcourtman/Pulse/commit/83885e310460cafee1377d0636fd375b384b3896)) +* **script:** Add PVE CLI commands for API token generation ([10973e8](https://github.com/rcourtman/Pulse/commit/10973e807fc98d17a290fe4d1e8e04b64f6e8b3d)) +* **script:** Add update/remove options to install script ([4613baa](https://github.com/rcourtman/Pulse/commit/4613baaf20f704b7f51f37aa8f5ac0a62532c8ba)) +* **search:** enhance column filtering with role support ([a31c610](https://github.com/rcourtman/Pulse/commit/a31c610bf054e6a3deb777dab72ee3ae634be7d2)) +* **search:** enhance network search with role filtering and improved metric operators ([654f497](https://github.com/rcourtman/Pulse/commit/654f4973ede64e2ebab37ed1a0be1a00e05d5091)) +* **search:** enhance search field with role filters and improved UI ([65071e7](https://github.com/rcourtman/Pulse/commit/65071e71decca1db73184c2fd30ca8aa86fd5ec9)) +* **server:** enhance node manager with HA support ([5ac51db](https://github.com/rcourtman/Pulse/commit/5ac51db0a8a5dcfb5de649f213338c1dee97eb07)) +* **server:** update config and types with HA support ([6d514d7](https://github.com/rcourtman/Pulse/commit/6d514d7bbbbe6b19520074c782c1a8e432badb77)) +* **settings:** enhance column management and user settings ([28e033d](https://github.com/rcourtman/Pulse/commit/28e033da9dd48583f525170df847fb52fb5c6086)) +* **socket:** improve socket handling and mock data generation ([090565f](https://github.com/rcourtman/Pulse/commit/090565f71f7e021a1cdfb58529fa3e1129d9c579)) +* **ui:** add NodeSelect component for node filtering ([0d7f1bd](https://github.com/rcourtman/Pulse/commit/0d7f1bd76317bc9a73b4943f4880fe3ca489b563)) +* Update dashboard screenshot ([e708b9a](https://github.com/rcourtman/Pulse/commit/e708b9aeb944c2e0b41f1b91515160c17ee6f78a)) +* Update dashboard screenshot again ([8e2c0fc](https://github.com/rcourtman/Pulse/commit/8e2c0fc43ce084f11ec1bf123e92ec760664806f)) +* Update version link to point to specific release tag ([99a27cd](https://github.com/rcourtman/Pulse/commit/99a27cd2239b4eaa88e6c47584b14d5e88736a52)) + + +### Performance Improvements + +* Only poll Proxmox API when clients are connected ([0a67199](https://github.com/rcourtman/Pulse/commit/0a67199e6770b6213813e1d3189301e5190e051b)) + + +### Reverts + +* **install:** Revert install-pulse.sh to pre-April 23rd state (bdd2eda) ([5f94d99](https://github.com/rcourtman/Pulse/commit/5f94d99dafeda730bd5817477085fa6e3e9e3d07)) + + + +## [1.5.1](https://github.com/rcourtman/Pulse/compare/v1.5.0...v1.5.1) (2025-03-10) + + + +# [1.5.0](https://github.com/rcourtman/Pulse/compare/v1.4.1...v1.5.0) (2025-03-10) + + +### Bug Fixes + +* add strictPort option to Vite config to prevent port incrementing ([4ab7cd1](https://github.com/rcourtman/Pulse/commit/4ab7cd1fe979c958433a08987f42f58552b84de1)) +* include public directory in Docker build for logo assets ([745d452](https://github.com/rcourtman/Pulse/commit/745d452db05506ad6bb55a767d5f349e0e2718c9)) +* prevent Vite from incrementing ports when default port is in use ([b6353f6](https://github.com/rcourtman/Pulse/commit/b6353f609e23d28edf220a48f05902c4020a4790)) + + +### Features + +* update logo implementation to use generated logo with pulse animation ([1c572aa](https://github.com/rcourtman/Pulse/commit/1c572aaf5c26f597d50e3f2a2d1b2a7f285abc17)) + + + +## [1.4.1](https://github.com/rcourtman/Pulse/compare/v1.4.0...v1.4.1) (2025-03-10) + + +### Bug Fixes + +* add RequestHandler type to all API routes ([c7be5bb](https://github.com/rcourtman/Pulse/commit/c7be5bb1a053754fd5a66d8a04a86f959ba97971)) +* static file serving in production Docker container ([0bdbbc6](https://github.com/rcourtman/Pulse/commit/0bdbbc6258709ecddabb0e50ee3136ee570f22d0)) + + + +# [1.4.0](https://github.com/rcourtman/Pulse/compare/v1.3.1...v1.4.0) (2025-03-10) + + +### Bug Fixes + +* update frontend version display to 1.3.1 ([cf43830](https://github.com/rcourtman/Pulse/commit/cf438300d47d65aacab2854091e74c9712771e28)) +* update package-lock.json versions to 1.3.1 ([8b0b2cc](https://github.com/rcourtman/Pulse/commit/8b0b2cc820e2b3df71a0594ee5984102324e230f)) + + +### Features + +* improve favicon support with multiple sizes and formats ([929497a](https://github.com/rcourtman/Pulse/commit/929497a1e495825eb3d223eaa37a9a0f5c61e04d)) + + + +## [1.3.1](https://github.com/rcourtman/Pulse/compare/v1.3.0...v1.3.1) (2025-03-10) + + +### Bug Fixes + +* update axios to 1.7.4 to address SSRF vulnerability (CVE-2024-39338) ([fbe0730](https://github.com/rcourtman/Pulse/commit/fbe07309c368a2078859ac8da56dabeeb3538671)) +* update axios to 1.8.2 to address SSRF and Credential Leakage vulnerability (GHSA-jr5f-v2jv-69x6) ([961386f](https://github.com/rcourtman/Pulse/commit/961386f24c3006656987ab70871638f9223f425c)) + + + +# [1.3.0](https://github.com/rcourtman/Pulse/compare/v1.2.1...v1.3.0) (2025-03-09) + + +### Bug Fixes + +* ensure 'No Matching Systems' message spans full table width ([763105c](https://github.com/rcourtman/Pulse/commit/763105c478e3cf72bfa4c32742834363b128e58c)) +* improve dropdown behavior and styling - remove focus outline and fix blur behavior ([ee7a2bc](https://github.com/rcourtman/Pulse/commit/ee7a2bc050f4292f9a44c4e30d8a60d525eef903)) + + +### Features + +* add tooltip to filter icon button ([0d29695](https://github.com/rcourtman/Pulse/commit/0d29695e5c7ea9ff9ae87b5a3933fc68993ee72a)) +* clarify node vs guest counts in dropdown by adding descriptive labels ([e1c6e22](https://github.com/rcourtman/Pulse/commit/e1c6e22a7d9ef4bc987ab8f2642c6a98da712d90)) +* enhance export functionality with additional fields (Type, ID, Uptime) in NetworkDisplay ([a00a8d5](https://github.com/rcourtman/Pulse/commit/a00a8d52cd8b29f165ea438880107fec7143019b)) +* remove icons from column headers to save space ([b4e6e26](https://github.com/rcourtman/Pulse/commit/b4e6e26e0193ed15c76add772ff179f395c81dc4)) + + + +## [1.2.1](https://github.com/rcourtman/Pulse/compare/v1.2.0...v1.2.1) (2025-03-04) + + + +# [1.2.0](https://github.com/rcourtman/Pulse/compare/v1.1.1...v1.2.0) (2025-03-04) + + +### Features + +* increase uptime column width to prevent sort icon overlap ([3f90af1](https://github.com/rcourtman/Pulse/commit/3f90af11dbbe0599001cdb9794343b7fceb0b8bd)) +* prevent text selection in table header cells for better UX ([cf39adb](https://github.com/rcourtman/Pulse/commit/cf39adbfc6229579cd784a05858e94d8aec80756)) + + + +## [1.1.1](https://github.com/rcourtman/Pulse/compare/v1.1.0...v1.1.1) (2025-03-04) + + +### Bug Fixes + +* handle undefined/null values in network rate formatting to prevent 'undefined/s' display ([cfa84ca](https://github.com/rcourtman/Pulse/commit/cfa84cac388b92fb04551d05e0ca3c11a66dd8ae)) + + + +# [1.1.0](https://github.com/rcourtman/Pulse/compare/v1.0.16...v1.1.0) (2025-03-03) + + +### Bug Fixes + +* add 'unknown' status to ProxmoxContainer type ([e629152](https://github.com/rcourtman/Pulse/commit/e6291525593458db3f1f757bd84bb77beff251d2)) +* enhance ProxmoxClient with configurable timeouts and improved error handling ([1ac5076](https://github.com/rcourtman/Pulse/commit/1ac5076e184476d40b83f0e21060cfa34dcf3692)) +* implement moving average for network rates to reduce fluctuations ([7d91784](https://github.com/rcourtman/Pulse/commit/7d91784041dc02be041c84bf76cf626eabe21d35)) +* multiply CPU values by 100 to convert from decimal to percentage ([370d278](https://github.com/rcourtman/Pulse/commit/370d278499bd355f018d7aa8da23bdd0a5f52533)) +* reorder API routes to ensure they're defined before catch-all route ([b9897e5](https://github.com/rcourtman/Pulse/commit/b9897e531be18fb43acd3b2fa96fe910e0949e58)) +* use environment variable for API timeout in all components ([5a30fcb](https://github.com/rcourtman/Pulse/commit/5a30fcb1c5b8ba3f7168a1335498ccd26ad113c4)) + + +### Features + +* add new API endpoint for retrieving all containers ([d7a859c](https://github.com/rcourtman/Pulse/commit/d7a859cefe55b247693b299b52c2f6a972cbfe15)) + + + +## [1.0.16](https://github.com/rcourtman/Pulse/compare/v1.0.15...v1.0.16) (2025-03-03) + + +### Bug Fixes + +* add logs directory with proper permissions in Docker image ([39738c0](https://github.com/rcourtman/Pulse/commit/39738c0b4e0be443b4f48e1f83fa4d1688cbd022)) + + +### Performance Improvements + +* standardize polling intervals to fastest settings (1000ms) across all environments ([d68873c](https://github.com/rcourtman/Pulse/commit/d68873ce5de7580ce814cb0fc5283a73a32a470d)) + + + +## [1.0.15](https://github.com/rcourtman/Pulse/compare/v1.0.14...v1.0.15) (2025-03-03) + + + +## [1.0.14](https://github.com/rcourtman/Pulse/compare/v1.0.13...v1.0.14) (2025-03-03) + + + +## [1.0.13](https://github.com/rcourtman/Pulse/compare/v1.0.12...v1.0.13) (2025-03-02) + + + +## [1.0.12](https://github.com/rcourtman/Pulse/compare/v1.0.11...v1.0.12) (2025-03-02) + + + +## [1.0.11](https://github.com/rcourtman/Pulse/compare/v1.0.10...v1.0.11) (2025-03-02) + + + +## [1.0.10](https://github.com/rcourtman/Pulse/compare/v1.0.9...v1.0.10) (2025-03-02) + + + +## [1.0.9](https://github.com/rcourtman/Pulse/compare/v1.0.8...v1.0.9) (2025-03-02) + + + +## [1.0.8](https://github.com/rcourtman/Pulse/compare/v1.0.7...v1.0.8) (2025-03-02) + + +### Reverts + +* Revert "Fix: Improve filter badges layout and spacing" ([b08ff3c](https://github.com/rcourtman/Pulse/commit/b08ff3cce6a5d33f8b72bef69aa390569f037175)) + + + +## [1.0.7](https://github.com/rcourtman/Pulse/compare/v1.0.6...v1.0.7) (2025-03-02) + + + +## [1.0.6](https://github.com/rcourtman/Pulse/compare/v1.0.5...v1.0.6) (2025-03-02) + + + +## [1.0.5](https://github.com/rcourtman/Pulse/compare/v1.0.4...v1.0.5) (2025-03-02) + + + +## [1.0.3](https://github.com/rcourtman/Pulse/compare/v1.0.2...v1.0.3) (2025-03-02) + + + +## [1.0.2](https://github.com/rcourtman/Pulse/compare/v1.0.1...v1.0.2) (2025-03-02) + + + +## 1.0.1 (2025-03-02) + + + diff --git a/package-lock.json b/package-lock.json index 95e8d0564..96bf187fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pulse", - "version": "3.2.2", + "version": "3.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pulse", - "version": "3.2.2", + "version": "3.3.0", "license": "MIT", "dependencies": { "axios": "^1.9.0", diff --git a/package.json b/package.json index 98b0cec56..20deeb2d4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pulse", - "version": "3.2.2", + "version": "3.3.0", "description": "A lightweight monitoring application for Proxmox VE.", "main": "server/index.js", "scripts": { From 4cf736aed6d35b740aeb6afb71f25f4118b27275 Mon Sep 17 00:00:00 2001 From: "courtmanr@gmail.com" Date: Wed, 30 Apr 2025 23:00:20 +0100 Subject: [PATCH 15/15] fix(workflow): use CHANGELOG.md for release notes instead of auto-generating --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bd6063818..d60787dfe 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -61,5 +61,5 @@ jobs: run: | gh release create ${{ github.ref_name }} \ --title "Release ${{ github.ref_name }}" \ - --generate-notes \ + --notes-file CHANGELOG.md \ --draft # Keep as draft initially \ No newline at end of file