From aca62435ee6540ab58967c3d53ebd9d4456cc90f Mon Sep 17 00:00:00 2001 From: Martin Alexander Kaminski Date: Sun, 8 Nov 2026 18:46:03 +0100 Subject: [PATCH 01/13] build: add Prettier format commands --- backend/package.json | 2 ++ frontend/package.json | 2 ++ 2 files changed, 4 insertions(+) diff --git a/backend/package.json b/backend/package.json index 34431cd8..f18d0e81 100644 --- a/backend/package.json +++ b/backend/package.json @@ -13,6 +13,8 @@ "typecheck": "tsc", "lint": "eslint .", "codegen": "graphql-codegen", + "format": "prettier --write .", + "format:check": "prettier --check .", "dev": "pnpm codegen && tsx watch src/index.ts", "build": "esbuild src/index.ts --bundle --platform=node --format=esm --target=node24 --packages=external --outfile=dist/index.js", "start": "pnpm build && node dist/index.js", diff --git a/frontend/package.json b/frontend/package.json index 443dce5f..c31cb22d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -14,6 +14,8 @@ "start": "react-router-serve ./build/server/index.js", "typecheck": "react-router typegen && tsc", "lint": "eslint .", + "format": "prettier --write .", + "format:check": "prettier --check .", "preview": "vite preview", "test": "vitest run", "test:watch": "vitest" From 694e4e8791704f2c20ee490e21789d52e7bc2453 Mon Sep 17 00:00:00 2001 From: Martin Alexander Kaminski Date: Sun, 8 Nov 2026 18:46:13 +0100 Subject: [PATCH 02/13] ci: add Prettier format check --- .github/workflows/prettier.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .github/workflows/prettier.yml diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml new file mode 100644 index 00000000..706cf52b --- /dev/null +++ b/.github/workflows/prettier.yml @@ -0,0 +1,25 @@ +name: Prettier +on: + pull_request: + push: +jobs: + prettier: + runs-on: self-hosted + strategy: + matrix: + project: [backend, frontend] + defaults: + run: + working-directory: ${{ matrix.project }} + steps: + - uses: actions/checkout@v7 + - uses: pnpm/action-setup@v4 + with: + package_json_file: ${{ matrix.project }}/package.json + - uses: actions/setup-node@v7 + with: + node-version: 24 + - name: Install dependencies + run: pnpm install --frozen-lockfile + - name: Check formatting with Prettier + run: pnpm format:check From 0a1792f30461902a8917e227710a44459aa0cab2 Mon Sep 17 00:00:00 2001 From: Martin Alexander Kaminski Date: Sun, 8 Nov 2026 18:48:54 +0100 Subject: [PATCH 03/13] ci: add ESLint check --- .github/workflows/eslint.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/eslint.yml diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml new file mode 100644 index 00000000..cc16f3dd --- /dev/null +++ b/.github/workflows/eslint.yml @@ -0,0 +1,29 @@ +name: ESLint +on: + pull_request: + push: +jobs: + eslint: + runs-on: self-hosted + strategy: + matrix: + project: [backend, frontend] + defaults: + run: + working-directory: ${{ matrix.project }} + steps: + - uses: actions/checkout@v7 + - uses: pnpm/action-setup@v4 + with: + package_json_file: ${{ matrix.project }}/package.json + - uses: actions/setup-node@v7 + with: + node-version: 24 + - name: Install dependencies + run: pnpm install --frozen-lockfile + # We need to generate React Router types for lint rules that use types + - name: Generate React Router types + if: matrix.project == 'frontend' + run: pnpm exec react-router typegen + - name: Lint with ESLint + run: pnpm lint From 6d7534442e8106f56cafa3bce42eda17b7af08da Mon Sep 17 00:00:00 2001 From: Martin Alexander Kaminski Date: Sun, 8 Nov 2026 18:51:06 +0100 Subject: [PATCH 04/13] ci: add typecheck and build check --- .github/workflows/build.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..eab06db5 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,27 @@ +name: Build +on: + pull_request: + push: +jobs: + build: + runs-on: self-hosted + strategy: + matrix: + project: [backend, frontend] + defaults: + run: + working-directory: ${{ matrix.project }} + steps: + - uses: actions/checkout@v7 + - uses: pnpm/action-setup@v4 + with: + package_json_file: ${{ matrix.project }}/package.json + - uses: actions/setup-node@v7 + with: + node-version: 24 + - name: Install dependencies + run: pnpm install --frozen-lockfile + - name: Typecheck + run: pnpm typecheck + - name: Build + run: pnpm build From 09a913bd3e230d9a123bc86b5ff45d81fc6a5a73 Mon Sep 17 00:00:00 2001 From: Martin Alexander Kaminski Date: Sun, 8 Nov 2026 18:53:51 +0100 Subject: [PATCH 05/13] test: adjust wording of text on books page --- frontend/app/routes/books.test.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/app/routes/books.test.tsx b/frontend/app/routes/books.test.tsx index 3a7150c8..0617cbc1 100644 --- a/frontend/app/routes/books.test.tsx +++ b/frontend/app/routes/books.test.tsx @@ -124,7 +124,7 @@ describe("BooksPage", () => { ).toBeInTheDocument(); expect( screen.getByText( - "No books found for this search. However, here are some books with similar titles:", + "No books found for this search. However, we found some books with similar titles.", ), ).toBeInTheDocument(); expect(await findBookLinks()).toHaveLength(3); @@ -203,7 +203,7 @@ describe("BooksPage", () => { ).toBeInTheDocument(); expect( screen.getByText( - "No books found for this search. However, here are some top-rated books matching your filters:", + "No books found for this search. However, we found some top-rated books matching your filters.", ), ).toBeInTheDocument(); expect(await findBookLinks()).toHaveLength(3); @@ -242,7 +242,7 @@ describe("BooksPage", () => { ).toBeInTheDocument(); expect( screen.getByText( - "No books found for this search. However, here are some top-rated books you might like:", + "No books found for this search. However, we found some top-rated books you might like.", ), ).toBeInTheDocument(); expect(await findBookLinks()).toHaveLength(3); From 6f477ae6b8bb2add16a798b2119ce77c676122e8 Mon Sep 17 00:00:00 2001 From: Martin Alexander Kaminski Date: Sun, 8 Nov 2026 18:54:25 +0100 Subject: [PATCH 06/13] ci: add frontend tests check --- .github/workflows/frontend-test.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/workflows/frontend-test.yml diff --git a/.github/workflows/frontend-test.yml b/.github/workflows/frontend-test.yml new file mode 100644 index 00000000..b346541c --- /dev/null +++ b/.github/workflows/frontend-test.yml @@ -0,0 +1,22 @@ +name: Frontend Tests +on: + pull_request: + push: +jobs: + test: + runs-on: self-hosted + defaults: + run: + working-directory: frontend + steps: + - uses: actions/checkout@v7 + - uses: pnpm/action-setup@v4 + with: + package_json_file: frontend/package.json + - uses: actions/setup-node@v7 + with: + node-version: 24 + - name: Install dependencies + run: pnpm install --frozen-lockfile + - name: Run tests + run: pnpm test From 6781536fc5b3ba602256abda87faf70fd4902a13 Mon Sep 17 00:00:00 2001 From: Martin Alexander Kaminski Date: Sun, 8 Nov 2026 19:00:21 +0100 Subject: [PATCH 07/13] ci: use older versions of actions These should be available on NTNU GitHub --- .github/workflows/build.yml | 4 ++-- .github/workflows/eslint.yml | 4 ++-- .github/workflows/frontend-test.yml | 4 ++-- .github/workflows/prettier.yml | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index eab06db5..8cdf9b4a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,11 +12,11 @@ jobs: run: working-directory: ${{ matrix.project }} steps: - - uses: actions/checkout@v7 + - uses: actions/checkout@v5 - uses: pnpm/action-setup@v4 with: package_json_file: ${{ matrix.project }}/package.json - - uses: actions/setup-node@v7 + - uses: actions/setup-node@v5 with: node-version: 24 - name: Install dependencies diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml index cc16f3dd..96465f41 100644 --- a/.github/workflows/eslint.yml +++ b/.github/workflows/eslint.yml @@ -12,11 +12,11 @@ jobs: run: working-directory: ${{ matrix.project }} steps: - - uses: actions/checkout@v7 + - uses: actions/checkout@v5 - uses: pnpm/action-setup@v4 with: package_json_file: ${{ matrix.project }}/package.json - - uses: actions/setup-node@v7 + - uses: actions/setup-node@v5 with: node-version: 24 - name: Install dependencies diff --git a/.github/workflows/frontend-test.yml b/.github/workflows/frontend-test.yml index b346541c..1304915c 100644 --- a/.github/workflows/frontend-test.yml +++ b/.github/workflows/frontend-test.yml @@ -9,11 +9,11 @@ jobs: run: working-directory: frontend steps: - - uses: actions/checkout@v7 + - uses: actions/checkout@v5 - uses: pnpm/action-setup@v4 with: package_json_file: frontend/package.json - - uses: actions/setup-node@v7 + - uses: actions/setup-node@v5 with: node-version: 24 - name: Install dependencies diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml index 706cf52b..a61ee564 100644 --- a/.github/workflows/prettier.yml +++ b/.github/workflows/prettier.yml @@ -12,11 +12,11 @@ jobs: run: working-directory: ${{ matrix.project }} steps: - - uses: actions/checkout@v7 + - uses: actions/checkout@v5 - uses: pnpm/action-setup@v4 with: package_json_file: ${{ matrix.project }}/package.json - - uses: actions/setup-node@v7 + - uses: actions/setup-node@v5 with: node-version: 24 - name: Install dependencies From efa347243e65695ec813fe168fe103d55ada7a4e Mon Sep 17 00:00:00 2001 From: Martin Alexander Kaminski Date: Sun, 8 Nov 2026 19:04:01 +0100 Subject: [PATCH 08/13] ci: use newest version of pnpm/action-setup --- .github/workflows/build.yml | 2 +- .github/workflows/eslint.yml | 2 +- .github/workflows/frontend-test.yml | 2 +- .github/workflows/prettier.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8cdf9b4a..b8107436 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,7 +13,7 @@ jobs: working-directory: ${{ matrix.project }} steps: - uses: actions/checkout@v5 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 with: package_json_file: ${{ matrix.project }}/package.json - uses: actions/setup-node@v5 diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml index 96465f41..8f8a26d0 100644 --- a/.github/workflows/eslint.yml +++ b/.github/workflows/eslint.yml @@ -13,7 +13,7 @@ jobs: working-directory: ${{ matrix.project }} steps: - uses: actions/checkout@v5 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 with: package_json_file: ${{ matrix.project }}/package.json - uses: actions/setup-node@v5 diff --git a/.github/workflows/frontend-test.yml b/.github/workflows/frontend-test.yml index 1304915c..39da1f41 100644 --- a/.github/workflows/frontend-test.yml +++ b/.github/workflows/frontend-test.yml @@ -10,7 +10,7 @@ jobs: working-directory: frontend steps: - uses: actions/checkout@v5 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 with: package_json_file: frontend/package.json - uses: actions/setup-node@v5 diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml index a61ee564..f418be3c 100644 --- a/.github/workflows/prettier.yml +++ b/.github/workflows/prettier.yml @@ -13,7 +13,7 @@ jobs: working-directory: ${{ matrix.project }} steps: - uses: actions/checkout@v5 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 with: package_json_file: ${{ matrix.project }}/package.json - uses: actions/setup-node@v5 From 7eed65dcc12d30c939729c4ec40befee6071788c Mon Sep 17 00:00:00 2001 From: Martin Alexander Kaminski Date: Sun, 8 Nov 2026 19:04:21 +0100 Subject: [PATCH 09/13] ci: do not run duplicate workflow on push --- .github/workflows/build.yml | 1 - .github/workflows/eslint.yml | 1 - .github/workflows/frontend-test.yml | 1 - .github/workflows/prettier.yml | 1 - 4 files changed, 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b8107436..5da94109 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,7 +1,6 @@ name: Build on: pull_request: - push: jobs: build: runs-on: self-hosted diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml index 8f8a26d0..ecc3d6ca 100644 --- a/.github/workflows/eslint.yml +++ b/.github/workflows/eslint.yml @@ -1,7 +1,6 @@ name: ESLint on: pull_request: - push: jobs: eslint: runs-on: self-hosted diff --git a/.github/workflows/frontend-test.yml b/.github/workflows/frontend-test.yml index 39da1f41..fc8a92db 100644 --- a/.github/workflows/frontend-test.yml +++ b/.github/workflows/frontend-test.yml @@ -1,7 +1,6 @@ name: Frontend Tests on: pull_request: - push: jobs: test: runs-on: self-hosted diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml index f418be3c..6ac3b121 100644 --- a/.github/workflows/prettier.yml +++ b/.github/workflows/prettier.yml @@ -1,7 +1,6 @@ name: Prettier on: pull_request: - push: jobs: prettier: runs-on: self-hosted From 0ea5df0bfe84278ad6e424cd5efd7a53b9f03f9e Mon Sep 17 00:00:00 2001 From: Martin Alexander Kaminski Date: Sun, 8 Nov 2026 19:08:22 +0100 Subject: [PATCH 10/13] build(frontend): specify pnpm version explicitly --- frontend/package.json | 10 ++- frontend/pnpm-lock.yaml | 158 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 167 insertions(+), 1 deletion(-) diff --git a/frontend/package.json b/frontend/package.json index c31cb22d..e2b4642a 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -5,7 +5,7 @@ "type": "module", "engines": { "node": ">=24.6.0", - "pnpm": ">=12.4.2" + "pnpm": ">=12.8.1" }, "scripts": { "codegen": "graphql-codegen", @@ -20,6 +20,14 @@ "test": "vitest run", "test:watch": "vitest" }, + "devEngines": { + "packageManager": { + "name": "pnpm", + "version": "12.8.1", + "onFail": "download" + } + }, + "packageManager": "pnpm@12.8.1", "dependencies": { "@apollo/client": "^4.3.7", "@base-ui/react": "^1.9.0", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 1030eda4..53644219 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -1,3 +1,161 @@ +--- +lockfileVersion: '9.0' + +importers: + + .: + configDependencies: {} + packageManagerDependencies: + pnpm: + specifier: 12.8.1 + version: 12.8.1 + +packages: + + '@pnpm/exe.android-arm64@12.8.1': + resolution: {integrity: sha512-siDxcidfz5eM6L2tJfik+i2bbUEw8UC7MZ3Yl2HYdRmqbdhHGAOQACtOOu6QVW4Jul4/w5wVKm+wM8ACtgh1Pg==} + cpu: [arm64] + os: [android] + + '@pnpm/exe.android-x64@12.8.1': + resolution: {integrity: sha512-0F/uqPRc3aN4vLHsa0f+6fTtmsigFQ9/yxEU43fionF//pNHEd5e97b3w/nKIgqYMCUQCJphmBRMA9Q8/wlo9Q==} + cpu: [x64] + os: [android] + + '@pnpm/exe.darwin-arm64@12.8.1': + resolution: {integrity: sha512-/rwavvMQJsl2RIxOHBnDF+4Gk+fhQFAY4M3PQZoKskJOEnaJcygG9p1xby6wcQcbS4d9dIubv09CQhufTgfmpw==} + cpu: [arm64] + os: [darwin] + + '@pnpm/exe.darwin-x64@12.8.1': + resolution: {integrity: sha512-htYt2gN7zqJKLhC99Ft6EUiO7myjZAZXfmGCTJUL1v+o7vE9hZdE1+fAkk4Oj1ZHNRti6b2woOxEkRkAusi8OQ==} + cpu: [x64] + os: [darwin] + + '@pnpm/exe.freebsd-x64@12.8.1': + resolution: {integrity: sha512-PB5BULNgytxvExoOXUUeseS/DcpPENs+cg3iA6xHHeaLT4ctEGKSGXEbuj7USeqvo8JBpAx039hivnbzGqDwnA==} + cpu: [x64] + os: [freebsd] + + '@pnpm/exe.linux-arm64-musl@12.8.1': + resolution: {integrity: sha512-kKeyC/ArjrgdciQRBrOL0j9HtOI4gDRgoyP+eJ1CQKyadpKlf/DhDDyspXe07R3B9KagTVLUF2nlt6Dr5quFIg==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@pnpm/exe.linux-arm64@12.8.1': + resolution: {integrity: sha512-q4s9a9X2O3N9aeUFooW24orNrxvu20+jyVUFR5RanPCqOKKPBrgs2iywMkBBx1aXkkzdWT54/mfz8Be8sJlWEw==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-ppc64@12.8.1': + resolution: {integrity: sha512-F7XSjKJthwCh/L6abZiMpAfo2Cm61SZIT3e4dfgiIjESndlWaXCnfLKngSgZ/SEMsdmHT6dud3+kWIB3tw0/xQ==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-riscv64@12.8.1': + resolution: {integrity: sha512-z1ecpIK/ZY08Unk69KWWE9867oaKUytGUjrHnBoGFAAhsK+q+0cfvBH+f5fWobJ7FX97leMlLO+gkJolddM45Q==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-s390x@12.8.1': + resolution: {integrity: sha512-KU6tnrBfu4uKXTq6N5qJwSm8FSrs9Wc8b5AUEsHK9bRXwNdsZ1/lRxG1++X29SKRW9OSNuDSjxASv5mAvGo1gA==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-x64-musl@12.8.1': + resolution: {integrity: sha512-eUE8BWJkDr2tJb/yrk0yVnszlmNqFarVxUlqiZ9BAkct28Nq/5g2H0tvMDmPA7fAQW3STNj+omJPPRVT+4s5sQ==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@pnpm/exe.linux-x64@12.8.1': + resolution: {integrity: sha512-8bDZ0lZlCdi2rvnFul7EYgcC7zKeWSe76y8JV2oXobaS8p9i9d6PSf6LgLtTM0fI7R9Oh4eLCbveXyNDMmvZ+g==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.win32-arm64@12.8.1': + resolution: {integrity: sha512-MsT0dlrRxnCRCHCaosNbhWpEiAFnFuMEu3KuDJDU41BXgTwiINxU8goloUSUDejWZUqKaUqNC/qUTihl9nFtqg==} + cpu: [arm64] + os: [win32] + + '@pnpm/exe.win32-x64@12.8.1': + resolution: {integrity: sha512-SWtPe0PsbTTk//gJND10tMdOfCYjrkq5+qV49hzVhY7xz2iJ339Rc+xwASlcvbwTfrvH39YNqpKYibD+CRGLwA==} + cpu: [x64] + os: [win32] + + pnpm@12.8.1: + resolution: {integrity: sha512-9kupB1B/XOr+BsjTjmBS0BeURFgOwSed3Vv8EctIqoomRLZlmOB+dh2oSHKp/FfV+QK4f6SdAkGY1VhhKqu+RQ==} + engines: {node: '>=18.*'} + hasBin: true + +snapshots: + + '@pnpm/exe.android-arm64@12.8.1': + optional: true + + '@pnpm/exe.android-x64@12.8.1': + optional: true + + '@pnpm/exe.darwin-arm64@12.8.1': + optional: true + + '@pnpm/exe.darwin-x64@12.8.1': + optional: true + + '@pnpm/exe.freebsd-x64@12.8.1': + optional: true + + '@pnpm/exe.linux-arm64-musl@12.8.1': + optional: true + + '@pnpm/exe.linux-arm64@12.8.1': + optional: true + + '@pnpm/exe.linux-ppc64@12.8.1': + optional: true + + '@pnpm/exe.linux-riscv64@12.8.1': + optional: true + + '@pnpm/exe.linux-s390x@12.8.1': + optional: true + + '@pnpm/exe.linux-x64-musl@12.8.1': + optional: true + + '@pnpm/exe.linux-x64@12.8.1': + optional: true + + '@pnpm/exe.win32-arm64@12.8.1': + optional: true + + '@pnpm/exe.win32-x64@12.8.1': + optional: true + + pnpm@12.8.1: + optionalDependencies: + '@pnpm/exe.android-arm64': 12.8.1 + '@pnpm/exe.android-x64': 12.8.1 + '@pnpm/exe.darwin-arm64': 12.8.1 + '@pnpm/exe.darwin-x64': 12.8.1 + '@pnpm/exe.freebsd-x64': 12.8.1 + '@pnpm/exe.linux-arm64': 12.8.1 + '@pnpm/exe.linux-arm64-musl': 12.8.1 + '@pnpm/exe.linux-ppc64': 12.8.1 + '@pnpm/exe.linux-riscv64': 12.8.1 + '@pnpm/exe.linux-s390x': 12.8.1 + '@pnpm/exe.linux-x64': 12.8.1 + '@pnpm/exe.linux-x64-musl': 12.8.1 + '@pnpm/exe.win32-arm64': 12.8.1 + '@pnpm/exe.win32-x64': 12.8.1 + +--- lockfileVersion: '9.0' settings: From dec707bda3cab0d786711288239762d70ad7dfa0 Mon Sep 17 00:00:00 2001 From: Martin Alexander Kaminski Date: Sun, 8 Nov 2026 19:08:33 +0100 Subject: [PATCH 11/13] build(backend): set pnpm to correct version --- backend/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/package.json b/backend/package.json index f18d0e81..f7f0dac0 100644 --- a/backend/package.json +++ b/backend/package.json @@ -5,7 +5,7 @@ "type": "module", "engines": { "node": ">=24.6.0", - "pnpm": ">=12.4.2" + "pnpm": ">=12.8.1" }, "description": "", "main": "dist/index.js", From cdc546b24797e3c401cd59b3a5aae83b70a9c5a7 Mon Sep 17 00:00:00 2001 From: Martin Alexander Kaminski Date: Sun, 8 Nov 2026 19:15:59 +0100 Subject: [PATCH 12/13] ci: add caching to pnpm So our 1 CPU VM doesn't need to install everything every single time, poor thing... --- .github/workflows/build.yml | 2 ++ .github/workflows/eslint.yml | 2 ++ .github/workflows/frontend-test.yml | 2 ++ .github/workflows/prettier.yml | 2 ++ 4 files changed, 8 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5da94109..7464590e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,6 +15,8 @@ jobs: - uses: pnpm/action-setup@v6 with: package_json_file: ${{ matrix.project }}/package.json + cache: true + cache_dependency_path: ${{ matrix.project }}/pnpm-lock.yaml - uses: actions/setup-node@v5 with: node-version: 24 diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml index ecc3d6ca..98e8a18b 100644 --- a/.github/workflows/eslint.yml +++ b/.github/workflows/eslint.yml @@ -15,6 +15,8 @@ jobs: - uses: pnpm/action-setup@v6 with: package_json_file: ${{ matrix.project }}/package.json + cache: true + cache_dependency_path: ${{ matrix.project }}/pnpm-lock.yaml - uses: actions/setup-node@v5 with: node-version: 24 diff --git a/.github/workflows/frontend-test.yml b/.github/workflows/frontend-test.yml index fc8a92db..cd9f9b39 100644 --- a/.github/workflows/frontend-test.yml +++ b/.github/workflows/frontend-test.yml @@ -12,6 +12,8 @@ jobs: - uses: pnpm/action-setup@v6 with: package_json_file: frontend/package.json + cache: true + cache_dependency_path: frontend/pnpm-lock.yaml - uses: actions/setup-node@v5 with: node-version: 24 diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml index 6ac3b121..8c8a99f3 100644 --- a/.github/workflows/prettier.yml +++ b/.github/workflows/prettier.yml @@ -15,6 +15,8 @@ jobs: - uses: pnpm/action-setup@v6 with: package_json_file: ${{ matrix.project }}/package.json + cache: true + cache_dependency_path: ${{ matrix.project }}/pnpm-lock.yaml - uses: actions/setup-node@v5 with: node-version: 24 From b0e6afcfc636a682a028cbec529429caafbfc571 Mon Sep 17 00:00:00 2001 From: Johannes Horn Date: Tue, 10 Nov 2026 22:48:51 +0100 Subject: [PATCH 13/13] style: format profile page with Prettier --- frontend/app/routes/profile.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frontend/app/routes/profile.tsx b/frontend/app/routes/profile.tsx index 44b78381..438e7157 100644 --- a/frontend/app/routes/profile.tsx +++ b/frontend/app/routes/profile.tsx @@ -151,7 +151,9 @@ export default function ProfilePage() { ))} ) : error || !books ? ( -

Could not load your favorite books. Please try again later.

+

+ Could not load your favorite books. Please try again later. +

) : books.length === 0 ? (

You have no favorite books yet.{" "}