# Audit Log - react-frontend ## Workspace Detection **Timestamp**: 2026-07-18T00:37:00Z **User Input**: "Ik wil een React Frontend maken. Ik heb in de `References`-map de referenties staan van wat het moet worden. `slp-software.html` en `slp-software-rood.html` zijn (als het goed is) exact dezelfde designs, maar beide met een andere kleur. Ik wil rood als hoofdkleur, maar de andere (paarse) moet selecteerbaar zijn. Dat is dan natuurlijk extra ten opzichte van de designs. De rest wil ik 1-op-1 in de React Frontend. Begin met het opzetten van een statische website, maar wel als React. Alvast voor later: ik wil TanStack librarie sgebruiken zoals TanStack Router en TanStack Query indien nodig. Gebruik de aidlc workflow voor het opzetten van deze frontend." **AI Response**: "Started AI-DLC workflow. No existing active-features.md or legacy aidlc-state.md found -> new workspace. Detected greenfield project (only References/ folder with two static HTML reference designs exists, no application code). Created feature 'react-frontend' with feature-scoped directory structure." **Context**: Workspace Detection - Greenfield project detected. Two static HTML reference files found (slp-software.html = purple/paars accent, slp-software-rood.html = red/rood accent), same design otherwise. --- ## Language Preference **Timestamp**: 2026-07-18T00:40:00Z **User Input**: "Engels docs, jouw taal gesprek" (selected option A: English for documentation, user's language for conversation) **AI Response**: "Stored Language Configuration: Documentation Language = English, Conversation Language = User Language (Dutch)." **Context**: Workspace Detection - Step 2.5 Language Preference, option A selected. --- ## Requirements Analysis - Clarifying Questions Created **Timestamp**: 2026-07-18T00:45:00Z **User Input**: N/A (AI-initiated analysis step) **AI Response**: "Analyzed both reference HTML files (slp-software.html = purple accent, slp-software-rood.html = red accent) with Compare-Object; confirmed they are identical except for CSS color variable values (--bg, --surface, --accent, etc.). Created requirement-verification-questions.md with 9 scope/technical questions plus Security Baseline, Property-Based Testing, and Operations Phase opt-in questions." **Context**: Requirements Analysis - Step 6, question file created at aidlc-docs/features/react-frontend/inception/requirements/requirement-verification-questions.md --- ## Requirements Analysis - Answers Received **Timestamp**: 2026-07-18T00:50:00Z **User Input**: "Q1:C, Q2:A, Q3:C, Q4:A, Q5:A, Q6:A (this will be replaced with data fetching later, but for now use the data from the designs), Q7:A, Q8:C, Q9:A, Security Extensions:A, Property-Based Testing:C, Operations Phase:A" (filled in directly in requirement-verification-questions.md) **AI Response**: "Read and validated all 12 answers in requirement-verification-questions.md. No contradictions detected. Noted a technical consideration: FTP/traditional static hosting (Q8=C) combined with future TanStack Router client-side routing may require history-mode routing configuration or server rewrite rules (e.g. .htaccess) once multiple routes exist — documented as a design consideration, not a blocking ambiguity. Updated aidlc-state.md: Extension Configuration (Security Baseline=Yes, Property-Based Testing=No) and Operations Configuration (Include Operations Phase=Yes)." **Context**: Requirements Analysis - Step 5/6 answers analyzed, Step 5.1/5.2 extension and operations decisions recorded. --- ## Requirements Analysis - Approval Prompt **Timestamp**: 2026-07-18T00:52:00Z **User Input**: N/A (AI-initiated, approval prompt not yet answered) **AI Response**: "Generated requirements.md at aidlc-docs/features/react-frontend/inception/requirements/requirements.md. Presenting completion message with options: Request Changes / Add User Stories / Continue to Next Stage (Workflow Planning). User Stories assessed as skippable given the low-complexity, single-persona, 1-to-1 design-port nature of this feature, but offered as an explicit option." **Context**: Requirements Analysis - Step 9, awaiting explicit user approval before proceeding. --- ## Requirements Analysis - Approved **Timestamp**: 2026-07-18T00:53:00Z **User Input**: "Continue to Next Stage" (selected) **AI Response**: "Requirements Analysis approved. User Stories stage skipped per assessment. Proceeding to Workflow Planning." **Context**: Requirements Analysis complete. Moving to Workflow Planning. --- ## Workflow Planning - Approval **Timestamp**: 2026-07-18T00:56:00Z **AI Prompt**: "Ready to proceed with this plan?" **User Response**: "Continue to Next Stage" (selected) **Status**: Approved. Plan created with 8 stages to execute (Functional Design, NFR Requirements, NFR Design, Code Generation, Build and Test, Deployment Setup, Monitoring Setup, Production Readiness Validation) and 3 stages skipped (Application Design, Units Generation, Infrastructure Design), in addition to User Stories already skipped. **Context**: Workflow Planning approved. Proceeding to Construction Phase - Functional Design for unit `react-frontend-app`. --- ## Functional Design - Questions Created **Timestamp**: 2026-07-18T01:00:00Z **User Input**: N/A (AI-initiated) **AI Response**: "Created functional design plan and 7 clarification questions at aidlc-docs/features/react-frontend/construction/plans/react-frontend-app-fd-questions.md covering theme toggle placement, theme data shape, content data shape, router structure, TanStack Query placeholder, reduced-motion handling, and accessibility labeling." **Context**: Functional Design (unit: react-frontend-app) - Step 3/4. --- ## Functional Design - Answers Received **Timestamp**: 2026-07-18T01:02:00Z **User Input**: "Q1:A, Q2:C, Q3:A, Q4:A, Q5:A, Q6:A, Q7:A" (filled in directly in react-frontend-app-fd-questions.md) **AI Response**: "Read and validated all 7 answers. No ambiguities or contradictions detected. Generated functional design artifacts: business-logic-model.md, business-rules.md, domain-entities.md, frontend-components.md at aidlc-docs/features/react-frontend/construction/react-frontend-app/functional-design/." **Context**: Functional Design (unit: react-frontend-app) - Step 6/7, artifacts generated. --- ## Functional Design - Approved **Timestamp**: 2026-07-18T01:04:00Z **User Input**: "Continue to Next Stage" (selected) **AI Response**: "Functional Design for unit react-frontend-app approved. Proceeding to NFR Requirements." **Context**: Functional Design complete for unit react-frontend-app. Moving to NFR Requirements. --- ## NFR Requirements - Answers Received and Artifacts Generated **Timestamp**: 2026-07-18T01:08:00Z **User Input**: "Q1:A, Q2:A, Q3:A, Q4:C (let AI recommend), Q5:B, Q6:B, Security Baseline scope:A" (filled in directly in react-frontend-app-nfr-requirements-plan.md) **AI Response**: "Analyzed answers. For Question 4 (routing strategy), the user explicitly deferred the decision to the AI; recommended and documented hash-based TanStack Router history for FTP-hosting safety, with rationale. Generated nfr-requirements.md (performance, testing, linting, routing decision, accessibility, CI, full Security Baseline rule-by-rule applicability table) and tech-stack-decisions.md at aidlc-docs/features/react-frontend/construction/react-frontend-app/nfr-requirements/." **Context**: NFR Requirements (unit: react-frontend-app) - Step 6/7/8, artifacts generated. --- ## NFR Requirements - Approved **Timestamp**: 2026-07-18T01:10:00Z **User Input**: "Continue to Next Stage" (selected) **AI Response**: "NFR Requirements for unit react-frontend-app approved. Proceeding to NFR Design." **Context**: NFR Requirements complete for unit react-frontend-app. Moving to NFR Design. --- ## NFR Design - Answers Received and Artifacts Generated **Timestamp**: 2026-07-18T01:14:00Z **User Input**: "Q1:A, Q2:A, Q3:B (self-host fonts)" (filled in directly in react-frontend-app-nfr-design-plan.md) **AI Response**: "Analyzed answers, no ambiguities. Self-hosting fonts (Q3=B) supersedes the earlier SRI-for-Google-Fonts plan since no external CDN font resource remains. Generated nfr-design-patterns.md (resilience, scalability justification, performance, security patterns) and logical-components.md (Router/QueryClientProvider/ThemeProvider/ErrorBoundary/RootRoute/self-hosted fonts) at aidlc-docs/features/react-frontend/construction/react-frontend-app/nfr-design/." **Context**: NFR Design (unit: react-frontend-app) - Step 6/7, artifacts generated. --- ## NFR Design - Approved **Timestamp**: 2026-07-18T01:16:00Z **User Input**: "Continue to Next Stage" (selected) **AI Response**: "NFR Design for unit react-frontend-app approved. Infrastructure Design skipped per approved execution plan. Proceeding to Code Generation." **Context**: NFR Design complete for unit react-frontend-app. Infrastructure Design skipped. Moving to Code Generation. --- ## Code Generation - Plan Created (Part 1) **Timestamp**: 2026-07-18T01:20:00Z **User Input**: N/A (AI-initiated) **AI Response**: "Created a 28-step code generation plan at aidlc-docs/features/react-frontend/construction/plans/react-frontend-app-code-generation-plan.md covering project structure setup, domain data/theme foundation, application shell (router/query/theme/error boundary), frontend components, unit tests, documentation, and deployment artifact checks. Awaiting plan approval." **Context**: Code Generation (unit: react-frontend-app) - Part 1 Planning, Step 6/7, awaiting approval. --- ## Code Generation - Plan Approved **Timestamp**: 2026-07-18T01:21:00Z **User Input**: "Continue" **AI Response**: "Code generation plan approved. Proceeding to Part 2 - Generation." **Context**: Code Generation (unit: react-frontend-app) - Part 1 approved, starting Part 2 execution. --- ## Code Generation - Part 2 Complete **Timestamp**: 2026-07-18T01:42:00Z **User Input**: N/A (AI-initiated execution of approved plan) **AI Response**: "Executed all 28 steps of the code generation plan: scaffolded Vite+React+TypeScript+Tailwind project, self-hosted fonts, theme system (ThemeProvider/tokens), TanStack Router (hash history) + TanStack Query (placeholder usePackagesQuery), error boundary, all 11 page components, 9 unit/component tests (all passing), README, code-summary.md. Verified: npm run build succeeded, npm run test passed 9/9, npm run lint reported 0 errors (2 non-blocking warnings), npm audit --omit=dev found 0 vulnerabilities." **Context**: Code Generation (unit: react-frontend-app) - Step 13.5 verification passed. Presenting completion message. --- ## Code Generation - Requested Changes: Deprecated Warnings **Timestamp**: 2026-07-18T01:48:00Z **User Input**: "Request Changes" selected, then clarified: "Los de deprecated meldingen op" (Resolve the deprecated warnings) **AI Response**: "Migrated ESLint 8 (.eslintrc.cjs) to ESLint 9 flat config (eslint.config.js) using typescript-eslint, @eslint/js, globals, eslint-plugin-react-hooks v5, eslint-plugin-react-refresh. Removed .eslintrc.cjs. Re-ran npm install: no deprecation warnings remain for eslint/@humanwhocodes/* and related transitive packages. Removed a now-unnecessary eslint-disable comment in ErrorBoundary.tsx. Re-verified build (success), tests (9/9 passed), lint (0 errors, 2 pre-existing non-blocking warnings)." **Context**: Code Generation (unit: react-frontend-app) - Requested change addressed, re-presenting completion message. --- ## Code Generation - Approved **Timestamp**: 2026-07-19T21:00:00Z **User Input**: "Build en test het project. los alle issues op zodat ik de frontend kan testen" **AI Response**: "Confirmed no blocking issues; ran `pnpm install`, `pnpm run build` (success), `pnpm run test` (9/9 passed), `pnpm run lint` (0 errors, 2 known non-blocking warnings), and started the dev server for manual testing." **Context**: Code Generation stage implicitly approved by proceeding to project verification; project fully functional and ready for manual testing. --- ## Post Code-Generation Bug Fix: Navigation Scroll Regression **Timestamp**: 2026-07-19T22:30:00Z **User Input**: "Ik zie dat het klikken op alle navigatie items of andere knoppen/linkjes die naar een andere plek op de pagina scrollen bij herhaaldelijk klikken de ene keer naar het juiste deel scrollt, maar dan bij de klik ernaar terug naar boven scrollt. Kan je dat oplossen?" **AI Response**: "Root cause: hash-based router (createHashHistory) conflicting with plain `href=\"#anchor\"` links. Added `src/utils/scrollToHash.ts` with a `handleAnchorClick` helper that intercepts the click, prevents default hash navigation, and scrolls manually via `scrollIntoView`. Wired it into all anchor links in Nav.tsx, Hero.tsx, and PackageCard.tsx. Verified: build succeeded, lint 0 errors (2 known warnings), 9/9 tests passed." **Context**: Bug fix within the already-generated react-frontend-app unit code, discovered during manual testing after Code Generation. --- **Timestamp**: 2026-07-19T22:45:00Z **User Input**: "dat lijkt te werken. ga verder met de workflow" **AI Response**: "Confirmed Code Generation stage is complete (plan + code-summary.md present, verified build/test/lint). Proceeded to the Build and Test stage: generated build-instructions.md, unit-test-instructions.md, integration-test-instructions.md (manual smoke test, single static unit), performance-test-instructions.md, and build-and-test-summary.md under aidlc-docs/features/react-frontend/construction/build-and-test/. Updated aidlc-state.md stage progress." **Context**: Build and Test stage (CONSTRUCTION PHASE) executed; presenting completion message with Operations Phase decision (Include Operations Phase = Yes, decided at Requirements Analysis). --- ## Build and Test - Approved / Deployment Setup Started **Timestamp**: 2026-07-19T22:50:00Z **User Input**: "Doorgaan naar volgende fase" (Continue to next phase) **AI Response**: "Build and Test stage approved. Started Deployment Setup (OPERATIONS PHASE): created a 7-question plan at operations/plans/deployment-setup-plan.md covering inclusion, method, environments, automation level, rollback strategy, target host, and secrets storage." **Context**: Build and Test stage complete and approved; moved to Deployment Setup stage. --- ## Deployment Setup - Answers Received and Artifacts Generated **Timestamp**: 2026-07-19T23:10:00Z **User Input**: "Q1:A (yes), Q2:A with Gitea Actions, Q3:C (dev/staging/production), Q4:A (fully automated), Q5:B (git tags/releases), Q6:D (host not yet finalized - mijnhostingpartner.nl, possibly combined with future backend/CMS), Q7:D (Gitea Actions Secrets)" (filled in directly in deployment-setup-plan.md) **AI Response**: "Method: CI/CD pipeline via Gitea Actions, deploying the static dist/ build to a traditional FTP/SFTP webhost. Proposed a branch/tag strategy (develop -> Development, staging -> Staging, v*.*.* tag on master -> Production) since it wasn't explicitly asked. Generated deployment-plan.md, deployment-instructions.md, rollback-plan.md under operations/deployment/, plus a working .gitea/workflows/deploy.yml pipeline (build/test/lint gate + 3 environment deploy jobs via FTP-Deploy-Action, secrets/variables for host/credentials/paths). Flagged the unresolved hosting/domain structure (Q6) as an open item requiring no workflow changes once resolved, only variable values." **Context**: Deployment Setup (OPERATIONS PHASE) - Step 6 artifacts generated; presenting completion message. --- ## Deployment Setup - Requested Changes: Simplified Pipeline **Timestamp**: 2026-07-19T23:15:00Z **User Input**: "ik zat niet helemaal na te denken. ik wil een pipeline die ik zelf kan aftrappen. Hierop zit een build en test CI. Bij een release wil ik een release-branch aanmaken. Op de release branch zit ook een handmatige deploy-stap. Voor nu zet die alleen de build uit de dist-map als artifact klaar. Mocht ik het later automatisch kunnen deployen dan pas ik dat verder aan. De staging deployment mag dus weg" **AI Response**: "Rewrote .gitea/workflows/deploy.yml to a single manually-triggered (workflow_dispatch) pipeline: build-and-test job (install/lint/test/build) followed by a deploy job that only re-publishes dist/ as a release-dist artifact (placeholder, no automatic host upload yet). Removed the development/staging/production auto-deploy jobs and the FTP-Deploy-Action usage. Updated deployment-plan.md, deployment-instructions.md, and rollback-plan.md to describe the manual release/* branch workflow, manual trigger, manual artifact upload, and manual rollback via re-running the pipeline against a previous branch." **Context**: Deployment Setup (OPERATIONS PHASE) - requested change addressed, re-presenting completion message. --- ## Deployment Setup - Approved **Timestamp**: 2026-07-19T23:20:00Z **User Input**: "Commit en ga door naar de volgende fase" **AI Response**: "Deployment Setup approved. Committed all deployment artifacts (.gitea/workflows/deploy.yml, deployment-plan.md, deployment-instructions.md, rollback-plan.md) to git. Proceeding to Monitoring Setup (OPERATIONS PHASE)." **Context**: Deployment Setup stage complete and approved; moving to Monitoring Setup. --- ## Monitoring Setup - Answers Reviewed, Clarification Needed **Timestamp**: 2026-07-21T00:16:00Z **User Input**: "ga verder met de aidlc workflow. ik heb de vragen over het monitoring plan beantwoord" (answers filled in directly in operations/plans/monitoring-setup-plan.md: Q1:A, Q2:A, Q3:C, Q4:S, Q5:C, Q6:C, Q7:A) **AI Response**: "Detected a contradiction: Question 2 answer is 'A' (Logging only), yet Question 4, 5 and 6 (only relevant for Alerting/Dashboards) were also answered, implying the user may actually want Alerting and/or Dashboards too. Also detected an invalid answer on Question 4 ('S' is not one of the offered A-E options). Created operations/plans/monitoring-setup-clarification-questions.md with 2 clarification questions to resolve both issues before generating monitoring artifacts." **Context**: Monitoring Setup (OPERATIONS PHASE) - Step 5, contradiction/ambiguity detection; awaiting user clarification before proceeding to Step 6 (artifact generation). --- ## Monitoring Setup - Clarification Answers Received, Artifacts Generated **Timestamp**: 2026-07-24T15:00:00Z **User Input**: "Ik heb de vragen ingevuld" (clarification answers filled in directly in operations/plans/monitoring-setup-clarification-questions.md: Clarification Q1:C (Logging + Dashboards, no Alerting), Clarification Q2:D (not applicable / decide later)). **AI Response**: "Read and validated the clarification answers: chosen approach resolved to Logging + Dashboards, Alerting explicitly out of scope. Generated operations/monitoring/monitoring-plan.md (decision, chosen approaches, rationale, open items) and operations/monitoring/monitoring-setup.md (concrete logging destination options, analytics + uptime dashboard tool options and setup steps). Updated aidlc-state.md: Operations Configuration > Monitoring Setup (Included: Yes, Approach: Combination) and Stage Progress marked complete." **Context**: Monitoring Setup (OPERATIONS PHASE) - Step 6/7 artifacts generated; presenting completion message, awaiting approval before Production Readiness Validation. --- ## Production Readiness Validation - Complete **Timestamp**: 2026-07-24T15:12:00Z **User Input**: "ga verder" (approval to proceed to Production Readiness Validation) **AI Response**: "Reviewed Deployment Setup and Monitoring Setup outcomes; no blocking gaps requiring new user questions were found (remaining items are already-tracked open follow-ups: host upload automation, logging destination, analytics/uptime tool selection, formal Lighthouse run). Generated operations/production-readiness-checklist.md with Overall Readiness = 'Yes with caveats'. Marked Production Readiness Validation and the overall feature as Complete in aidlc-state.md, and updated active-features.md status to ✅ Complete." **Overall Readiness**: Yes with caveats **Feature Status**: Complete --- ## Post-Completion Follow-up: Automated Test-Environment Deploy **Timestamp**: 2026-07-24T15:20:00Z **User Input**: "Ik wil de voorgestelde vervolgstappen uitvoeren beginnend bij de deployment. Voor nu wil ik in ieder geval kunnen deployen naar een testomgeving. Die testomgeving is een web-server gehost op mijn eigen raspberry pi achter andere raspberry pi met een nginx reversed proxy" — followed by clarification on auth (password for now), connection details (internal IP `192.168.1.103`, port `2224`, user `webadmin`), deploy path (`/html/test/slpsoftware`), nginx setup needed, and trigger (keep existing manual + auto-on-merge-to-master trigger). **AI Response**: "Implemented the previously open 'automatic deploy' follow-up from `deployment-plan.md`, for a test environment only. Fixed the CI push trigger (`main` -> `master`, matching the actual default branch). Extended `.gitea/workflows/deploy.yaml` with a real `appleboy/scp-action` upload step (password-based SSH auth via new secrets `PI_TEST_HOST`/`PI_TEST_PORT`/`PI_TEST_USERNAME`/`PI_TEST_PASSWORD`) uploading `dist/` to `/html/test/slpsoftware`. Renamed/reconfigured the calling job to `deploy-test` (`environment: test`, `secrets: inherit`). Added example nginx configs (`operations/deployment/nginx/webserver-nginx.conf.example` and `reverse-proxy-nginx.conf.example`) for the two-Pi setup. Rewrote `deployment-plan.md`, `deployment-instructions.md`, and `rollback-plan.md` to describe the new automated test deploy, required secrets, and manual nginx/Pi setup steps." **Context**: Post-workflow follow-up (feature already marked Complete); addresses the "Open Item — Automatic Deploy Not Yet Implemented" from the original `deployment-plan.md`. Changes not yet committed/pushed; production deploy remains a separate open item. --- ## Post-Completion Follow-up: Domain Names & SSL for Test/Production **Timestamp**: 2026-07-24T15:48:00Z **User Input**: "Het was misschien handiger geweest als je om onduidelijkheden had gevraagd zoals domeinnaam en hoe het zit met ssl-certificaat. De reverse-proxy Pi heeft de certificaten. Die vroeg ik altijd aan met certbot van LetsEncrypt. Die leid het verkeer door naar de webhost en de webhost handelt verder http af. domeinnaam voor de productiewebsite wordt: slpsoftware.nl. Voor de testomgeving wordt dat test.slpsoftware.nl" **AI Response**: "Updated `nginx/reverse-proxy-nginx.conf.example` (test) to use `test.slpsoftware.nl` as `server_name`, with an HTTP server block for the Let's Encrypt ACME challenge + redirect to HTTPS, and an HTTPS server block referencing certbot-managed certificate paths (`/etc/letsencrypt/live/test.slpsoftware.nl/...`) — matching the user's existing certbot/Let's Encrypt workflow on the reverse-proxy Pi, which terminates SSL before forwarding plain HTTP to the webserver Pi. Added a new `nginx/reverse-proxy-nginx-production.conf.example` documenting the future production reverse-proxy config for `slpsoftware.nl`/`www.slpsoftware.nl` (not yet wired up, since production deploy automation is still an open item). Updated `deployment-plan.md` and `deployment-instructions.md` with the domain/DNS/certbot setup steps for both environments." **Context**: Post-workflow follow-up (feature already marked Complete); addresses the user's feedback that domain name and SSL certificate handling should have been clarified during the earlier deployment follow-up. Changes committed on `feature/updates_gitea_workflow` (commit `1ffe884`). --- ## Post-Completion Follow-up: Webserver Port Corrected to 80 **Timestamp**: 2026-07-24T15:54:00Z **User Input**: "Ik leid al het verkeer door naar poort 80 op de webserver pi (Pi Main)" **AI Response**: "Corrected the assumed internal port for the webserver Pi: updated `nginx/webserver-nginx.conf.example` (`listen 192.168.1.103:80` / `listen [::]:80`) and `nginx/reverse-proxy-nginx.conf.example` (`proxy_pass http://192.168.1.103:80`), replacing the previously assumed port `8080`. No other files referenced this port." **Context**: Post-workflow follow-up (feature already marked Complete); corrects an incorrect assumption from the earlier test-environment deploy follow-up. Changes committed on `feature/updates_gitea_workflow` (commit `fd31f02`). --- ## Post-Completion Follow-up: Secrets Renamed from PI_TEST_* to PI_MAIN_* **Timestamp**: 2026-07-24T16:07:00Z **User Input**: "De secrets mag je PI_MAIN_* noemen. PI_TEST is iets te specifiek want alle webhosts krijgen dezelfde gegevens. In ieder geval voor nu. Mocht dat veranderen dan komt dat later wel" (followed by "Ik zie dat je de secret namen niet hebt veranderd. Ze mogen worden aangepast van PI_TEST_HOST naar PI_MAIN_HOST enzovoorts"). **AI Response**: "Renamed all `PI_TEST_HOST`/`PI_TEST_PORT`/`PI_TEST_USERNAME`/`PI_TEST_PASSWORD` secret references to `PI_MAIN_HOST`/`PI_MAIN_PORT`/`PI_MAIN_USERNAME`/`PI_MAIN_PASSWORD` in `.gitea/workflows/deploy.yaml`, `deployment-plan.md`, and `deployment-instructions.md` (including the SSH-key future-work note, now `PI_MAIN_SSH_KEY`). Added an explanatory note that the name is intentionally host-based rather than environment-specific, since all webhosts currently share the same Pi and credentials; environment-specific secrets can be introduced later if that changes." **Context**: Post-workflow follow-up (feature already marked Complete); addresses user feedback that the secret naming should reflect the shared webhost rather than being test-specific. Changes committed together with the follow-up below. --- ## Post-Completion Follow-up: Adjustable Values Extracted to Workflow Variables **Timestamp**: 2026-07-24T16:16:00Z **User Input**: "Kan het pad en eventuele andere aanpasbare waarden bovenin de workflow als variabele worden toegevoegd? Dat maakt het makkelijker en duidelijker welke waarden eventueel anders kunnen worden. Als dat niet kan met Gitea workflows laat het dan maar zitten en commit dan meteen alle changes" **AI Response**: "Added a top-level `env:` block (`NODE_VERSION`, `PNPM_VERSION`) to `continuous_integration.yaml`, referenced from all `setup-node`/`pnpm/action-setup` steps across the `prepare`/`build`/`test` jobs. Investigated whether `deploy_path`/`environment`/`artifact_name` (the `deploy-test` job's reusable-workflow call) could be moved to the same `env:` block: this is **not possible** — GitHub/Gitea Actions does not expose the `env` context inside `jobs..with` when calling a reusable workflow (only within `jobs..steps`), so those values must stay as literal inputs in that job. Documented this limitation clearly in `deployment-instructions.md`. Committed all outstanding changes (this follow-up plus the previous `PI_MAIN_*` rename) on `feature/updates_gitea_workflow`." **Context**: Post-workflow follow-up (feature already marked Complete); addresses user request to centralize adjustable workflow values, with an explicit Gitea/GitHub Actions limitation documented for the parts that could not be centralized. ---