fix(ci): clear website pipeline lint and action warnings (#611)

Fix ESLint errors for hash install links, anonymous default-export
warnings, and the ineffective next.config headers() that warned under
static export. Correct softwareVersion sync to match unquoted JS keys,
and bump Actions to Node-24 runtimes so deprecation notices stop.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Jatin K Malik <jatinkrmalik@users.noreply.github.com>
This commit is contained in:
Jatin K Malik
2026-07-29 00:31:47 +05:30
committed by GitHub
co-authored by Cursor Agent Jatin K Malik
parent 63554bc323
commit 5505e1040e
11 changed files with 50 additions and 71 deletions
+1 -1
View File
@@ -17,7 +17,7 @@ jobs:
runs-on: ubuntu-latest
if: github.repository == 'jatinkrmalik/vocalinux'
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
fetch-depth: 0
+1 -1
View File
@@ -37,7 +37,7 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Install basic dependencies
run: |
+1 -1
View File
@@ -51,7 +51,7 @@ jobs:
options: --privileged
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Build and bundle
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
+1 -1
View File
@@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Label PR
uses: actions/labeler@v5
uses: actions/labeler@v6
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
sync-labels: true
+2 -2
View File
@@ -18,7 +18,7 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
ref: main
fetch-depth: 0
@@ -264,7 +264,7 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
ref: main
+13 -15
View File
@@ -19,7 +19,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
fetch-depth: 0
@@ -145,7 +145,7 @@ jobs:
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v5
@@ -210,7 +210,7 @@ jobs:
url: https://pypi.org/project/vocalinux/
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v5
@@ -260,7 +260,7 @@ jobs:
- name: Checkout code
if: steps.aur.outputs.configured == 'true'
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Bump PKGBUILD version
if: steps.aur.outputs.configured == 'true'
@@ -287,14 +287,12 @@ jobs:
name: Deploy Website
runs-on: ubuntu-latest
needs: [build-and-release, publish-pypi]
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v5
with:
node-version: '24'
cache: 'npm'
@@ -308,15 +306,15 @@ jobs:
run: |
VERSION=$(grep -oP '__version__\s*=\s*"\K[^"]+' src/vocalinux/version.py)
echo "Syncing version: $VERSION"
# Update softwareVersion where JSON-LD currently lives
if grep -q '"softwareVersion": "' web/src/app/page.tsx; then
sed -i 's/"softwareVersion": "[^"]*"/"softwareVersion": "'"$VERSION"'"/' web/src/app/page.tsx
# JSON-LD uses unquoted JS keys: softwareVersion: "x.y.z"
if grep -qE 'softwareVersion:\s*"' web/src/app/page.tsx; then
sed -i 's/softwareVersion: "[^"]*"/softwareVersion: "'"$VERSION"'"/' web/src/app/page.tsx
echo "Updated page.tsx version:"
grep -oP '"softwareVersion":\s*"\K[^"]+' web/src/app/page.tsx
elif grep -q '"softwareVersion": "' web/src/app/layout.tsx; then
sed -i 's/"softwareVersion": "[^"]*"/"softwareVersion": "'"$VERSION"'"/' web/src/app/layout.tsx
grep -oP 'softwareVersion:\s*"\K[^"]+' web/src/app/page.tsx
elif grep -qE 'softwareVersion:\s*"' web/src/app/layout.tsx; then
sed -i 's/softwareVersion: "[^"]*"/softwareVersion: "'"$VERSION"'"/' web/src/app/layout.tsx
echo "Updated layout.tsx version:"
grep -oP '"softwareVersion":\s*"\K[^"]+' web/src/app/layout.tsx
grep -oP 'softwareVersion:\s*"\K[^"]+' web/src/app/layout.tsx
else
echo "::warning::No softwareVersion field found in page.tsx or layout.tsx; skipping sync"
fi
+16 -18
View File
@@ -25,7 +25,7 @@ jobs:
python: ${{ steps.filter.outputs.python }}
deploy_website: ${{ steps.deploy_check.outputs.deploy }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- uses: dorny/paths-filter@v3
id: filter
with:
@@ -68,7 +68,7 @@ jobs:
needs: changes
if: needs.changes.outputs.python == 'true'
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v5
@@ -105,7 +105,7 @@ jobs:
python-version: ['3.9', '3.10', '3.11', '3.13']
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
@@ -184,7 +184,7 @@ jobs:
- arch: aarch64
runner: ubuntu-24.04-arm
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v5
@@ -242,12 +242,12 @@ jobs:
needs: changes
if: needs.changes.outputs.deploy_website == 'true'
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v5
with:
node-version: '20'
node-version: '24'
cache: 'npm'
cache-dependency-path: './web/package-lock.json'
@@ -259,15 +259,15 @@ jobs:
run: |
VERSION=$(grep -oP '__version__\s*=\s*"\K[^"]+' src/vocalinux/version.py)
echo "Syncing version: $VERSION"
# Update softwareVersion where JSON-LD currently lives
if grep -q '"softwareVersion": "' web/src/app/page.tsx; then
sed -i 's/"softwareVersion": "[^"]*"/"softwareVersion": "'"$VERSION"'"/' web/src/app/page.tsx
# JSON-LD uses unquoted JS keys: softwareVersion: "x.y.z"
if grep -qE 'softwareVersion:\s*"' web/src/app/page.tsx; then
sed -i 's/softwareVersion: "[^"]*"/softwareVersion: "'"$VERSION"'"/' web/src/app/page.tsx
echo "Updated page.tsx version:"
grep -oP '"softwareVersion":\s*"\K[^"]+' web/src/app/page.tsx
elif grep -q '"softwareVersion": "' web/src/app/layout.tsx; then
sed -i 's/"softwareVersion": "[^"]*"/"softwareVersion": "'"$VERSION"'"/' web/src/app/layout.tsx
grep -oP 'softwareVersion:\s*"\K[^"]+' web/src/app/page.tsx
elif grep -qE 'softwareVersion:\s*"' web/src/app/layout.tsx; then
sed -i 's/softwareVersion: "[^"]*"/softwareVersion: "'"$VERSION"'"/' web/src/app/layout.tsx
echo "Updated layout.tsx version:"
grep -oP '"softwareVersion":\s*"\K[^"]+' web/src/app/layout.tsx
grep -oP 'softwareVersion:\s*"\K[^"]+' web/src/app/layout.tsx
else
echo "::warning::No softwareVersion field found in page.tsx or layout.tsx; skipping sync"
fi
@@ -299,13 +299,11 @@ jobs:
github.ref == 'refs/heads/main' &&
needs.changes.outputs.deploy_website == 'true' &&
needs.web-build.result == 'success'
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v5
with:
node-version: '24'
cache: 'npm'
+3 -24
View File
@@ -6,30 +6,9 @@ const config = {
// Configuration for custom domain deployment
distDir: 'out',
// Configure cache headers for static assets
// This generates a _headers file for platforms like Netlify/Vercel
async headers() {
return [
{
source: '/_next/static/:path*',
headers: [
{
key: 'Cache-Control',
value: 'public, max-age=31536000, immutable',
},
],
},
{
source: '/:all*(svg|jpg|jpeg|png|webp|avif|ico|woff|woff2)',
headers: [
{
key: 'Cache-Control',
value: 'public, max-age=31536000, immutable',
},
],
},
];
},
// Cache/security headers live in public/_headers (copied into the static
// export). next.config headers() is ignored with output: 'export' and only
// produces build warnings.
images: {
unoptimized: true,
formats: ['image/avif', 'image/webp'],
+3 -1
View File
@@ -1,5 +1,7 @@
export default {
const config = {
plugins: {
tailwindcss: {},
},
};
export default config;
+3 -1
View File
@@ -1,4 +1,6 @@
/** @type {import('prettier').Config & import('prettier-plugin-tailwindcss').PluginOptions} */
export default {
const config = {
plugins: ["prettier-plugin-tailwindcss"],
};
export default config;
+6 -6
View File
@@ -296,12 +296,12 @@ export function SeoSubpageShell({ children }: SeoSubpageShellProps) {
<div className="flex items-center gap-2">
<ThemeToggle />
<a
<Link
href="/#install"
className="hidden h-9 items-center rounded-full bg-primary px-4 text-sm font-medium text-primary-foreground sm:inline-flex"
>
Install
</a>
</Link>
<button
type="button"
onClick={(e) => {
@@ -347,13 +347,13 @@ export function SeoSubpageShell({ children }: SeoSubpageShellProps) {
</div>
</div>
))}
<a
<Link
href="/#install"
onClick={() => setMobileMenuOpen(false)}
className="mt-2 flex items-center justify-center rounded-full bg-primary px-4 py-2.5 text-sm font-semibold text-primary-foreground"
>
Install Vocalinux
</a>
</Link>
</nav>
</div>
) : null}
@@ -384,12 +384,12 @@ export function SeoSubpageShell({ children }: SeoSubpageShellProps) {
Home
<ChevronRight className="h-4 w-4" />
</Link>
<a
<Link
href="/#install"
className="inline-flex items-center gap-1.5 rounded-full border border-zinc-700 px-4 py-2 text-sm font-medium text-zinc-100 transition-colors hover:border-zinc-500"
>
Install
</a>
</Link>
<a
href="https://github.com/jatinkrmalik/vocalinux"
target="_blank"