All notable changes to this project will be documented in this file.
This project follows Keep a Changelog.
Version numbers use a SemVer-inspired MAJOR.MINOR.PATCH format, with
version increments reflecting both user-visible and operational impact.
1.25.22 - 2026-01-01
- Conditional guards to ensure artifacts, issues, and external notifications are only created when workflows run in a trusted context (non-PR runs or PRs originating from the same repository).
- Redacted, public-safe Gitleaks scan summaries in GitHub Actions step output to prevent accidental exposure of sensitive file paths or values.
- Optional installation of
jqgated to trusted execution contexts to support future structured output (e.g., SARIF) while preserving fork safety.
- Updated the Gitleaks secret scanning workflow to explicitly exclude Dependabot pull requests, avoiding failures caused by unavailable organization secrets in bot-triggered PRs.
- Refined workflow trust boundaries to distinguish between forked pull requests and trusted repository contexts.
- Updated
.gitignoreto stop tracking generated.svelte-kitfiles. - Bumped project version to
v1.25.22. - Updated dependencies:
stylelint-order^7.0.0→^7.0.1posthog-js^1.310.1→^1.313.0globals^16.5.0→^17.0.0
- Removed Mastodon verification in
src/routes/posts/+page.svelte, as it was not functioning properly. This route will remain unverified.
- Hardened secret-handling logic in CI by preventing the use of organization-level secrets, write permissions, and external notifications in untrusted pull request contexts.
- Ensured Gitleaks license usage is restricted to safe execution paths, eliminating false-negative or false-positive failures caused by GitHub Actions secret scoping rules.
- Added transitive dependency override for
qsto^6.14.1, in order to address CVE-2025-15284.
1.25.21 - 2025-12-27
- Added Mastodon verification to
src/routes/posts/+page.sveltevia<svelte:head>.
- Updated intro paragraph of
README.mdto better reflect the company's current mission, focus, and messaging. - Bumped project version to
v1.25.21. - Updated dependencies:
@testing-library/svelte^5.3.0→^5.3.1jsdom27.3.0→27.4.0
1.25.20 - 2025-12-24
- Added
VERSIONING.mdto document the project’s versioning strategy.
- Updated
.lighthouse.cjsto utilizehttps://netwk.proas the target. - Removed Services route from
sitemap.xmland refreshed last modified timestamps. - Updated
README.mdto clarify the project's versioning strategy and changelog format. - Updated
src/routes/+page.svelteto applycontainerClass="readable"to<FullWidthSection>for improved readability. - Revised homepage and About page content (
HomeContent.svelteandAboutContent.svelte) to better reflect the company’s current mission, focus, and messaging. - Bumped project version to
v1.25.20.
- Removed Services from primary navigation (
HeaderDefault.svelteandHeaderHome.svelte). - Removed references to home implementation services from
AboutContent.svelte.- This change reflects a clarified focus on internal research, education, advocacy, and selectively aligned consulting, rather than broad outward-facing service offerings.
1.25.19 - 2025-12-24
- Updated GitHub workflows to utilize
actions/checkout@v6,actions/upload-artifact@v6, andactions/download-artifact@v7:.github/workflows/templates/publish.template.yml.github/workflows/backup-branch.yml.github/workflows/build-and-publish.yml.github/workflows/dependency-review.yml.github/workflows/lighthouse.yml.github/workflows/meta-check.yml.github/workflows/playwright.yml.github/workflows/probely-scan.yml.github/workflows/publish-test.yml.github/workflows/secret-scan.yml
- Corrected
README.mdto properly state that subsites are hosted on Vercel and Netlify. - Updated
.node-versionand.nvmrcto utilize Node.jsv24.12.0. - Bumped project version to
v1.25.19. - Updated dependencies:
@eslint/js^9.39.1→^9.39.2@testing-library/svelte^5.2.9→^5.3.0autoprefixer^10.4.22→^10.4.23eslint^9.39.1→^9.39.2prettier-plugin-svelte^3.4.0→^3.4.1svelte-check^4.3.4→^4.3.5globby^16.0.0→^16.1.0posthog-js^1.305.0→^1.310.1svelte5.45.9→5.46.1vite^7.2.7→^7.3.0vite-tsconfig-paths^5.1.4→^6.0.3
- Removed
/* eslint-env vitest */comment fromvitest-setup-client.js, as it was causing an ESLint warning.
1.25.18 - 2025-12-11
- Refreshed timestamp for root route in
sitemap.xml. - Reformatted the following files with Prettier:
src/lib/README.mdsrc/lib/pages/LicenseContent.sveltesrc/lib/pages/PrivacyContent.sveltesrc/lib/pages/TermsUseContent.svelte
- Bumped project version to
v1.25.18. - Updated dependencies:
prettier3.6.2→3.7.4
1.25.17 - 2025-12-11
- Added SSR boundary protection test (
tests/unit/server/internal/ssrBoundary.test.js):- Detects Node-only imports (
jsdom,fs,path, etc.) in client-visible modules. - Ensures imports are properly gated behind
import.meta.env.SSR. - Prevents accidental SSR/client boundary violations in future code changes.
- Detects Node-only imports (
- Added support for detecting SSR-safe code paths by allowing SSR-gated dynamic imports in shared modules.
-
Refactored
src/service-worker.jsfor improved consistency, clarity, and lint compatibility:- Removed unused function parameters (
_err) and adjusted callback signatures to align with ESLint expectations. - Replaced anonymous no-op parameters with explicitly ignored placeholders using the
_naming convention. - Improved async iteration patterns in asset caching logic for better readability and maintainability.
- Updated JSDoc annotations for accuracy and improved editor support.
- Ensured all cache operations conform to structured error-handling patterns consistent with the rest of the codebase.
- Removed unused function parameters (
-
Updated
src/lib/utils/purify.js:- Replaced
typeof window !== 'undefined'guard with compile-timeimport.meta.env.SSR. - Ensures Vite tree-shakes
jsdomimports from client bundles. - Fixed build failures caused by jsdom/cssstyle when bundled on the client.
- Preserves existing DOMPurify caching and SSR behavior.
- Replaced
-
Enhanced ESLint
no-unused-varsrule ineslint.config.mjs:- Added support for ignoring unused catch parameters via
caughtErrorsandcaughtErrorsIgnorePattern. - Prevented false positives on intentionally unused error variables (e.g.,
_err). - Expanded ignore patterns to match project coding conventions.
- Added support for ignoring unused catch parameters via
-
Replaced
src/lib/img/qr/vcard.pngandsrc/lib/img/qr/vcard.webpwith revised versions. -
Updated GitHub workflows to utilize npm
11.7.0. -
Updated generator metadata in
src/app.htmlto reflect SvelteKit 2.49.2. -
Updated
src/lib/README.mdto reflect the newly updated app constant. -
Updated contact information in
static/bin/contact.vcf. -
Updated
CONTACT.PHONEapp constant to reflect our new phone number, (602) 428-5300. -
Removed
jsdomfrom.ncurc.cjsrejectlist. -
Bumped project version to
v1.25.17. -
Updated dependencies:
dompurify^3.3.0→^3.3.1posthog-js^1.295.0→^1.305.0svelte5.43.12→5.45.9@playwright/test^1.56.1→^1.57.0@sveltejs/adapter-vercel^6.1.1→^6.2.0@sveltejs/kit2.48.5→2.49.2browserslist^4.28.0→^4.28.1eslint-plugin-jsdoc^61.2.1→^61.5.0eslint-plugin-svelte^3.13.0→^3.13.1markdownlint^0.39.0→^0.40.0markdownlint-cli20.19.0→0.20.0playwright^1.56.1→^1.57.0stylelint^16.25.0→^16.26.1svelte-eslint-parser^1.4.0→^1.4.1vite^7.2.2→^7.2.7jsdom26.1.0→27.3.0
- Resolved client-side build failures caused by dynamic jsdom imports leaking into the Vite dependency graph.
- Resolved false positive ESLint errors for unused catch bindings in JS modules.
1.25.16 - 2025-11-18
- Removed
vercel-insights.comfrom thedisallowedHostslist inservice-worker.js.
- Removed
https://vercel-insights.comfromscript-srcandconnect-srcinhooks.server.js.
- Analytics: Reverted Vercel Analytics integration due to inline script injection requirement. Continuing with PostHog Cloud until migration to CSP-compliant Matomo is feasible.
1.25.15 - 2025-11-18
- Added
https://vercel-insights.comtoscript-srcandconnect-srcinhooks.server.jsto allow for Vercel Analytics.
- Added
vercel-insights.comto thedisallowedHostslist inservice-worker.js, in order to prevent SW caching. - Bumped project version to
v1.25.15. - Updated dependencies:
svelte5.43.10→5.43.12
1.25.14 - 2025-11-18
- Bumped project version to
v1.25.14. - Updated dependencies:
svelte5.43.7→5.43.10posthog-js^1.293.0→^1.295.0
- Added transitive dependency override for
globto^11.1.0, in order to address CVE-2025-64756.
1.25.13 - 2025-11-16
- Updated
.markdownlint.mjsto ignore ruleMD060, which is overly strict and unnecessary. - Bumped project version to
v1.25.13. - Updated dependencies:
svelte5.43.6→5.43.7posthog-js^1.292.0→^1.293.0@eslint/compat^1.4.1→^2.0.0markdownlint-cli20.18.1→0.19.0
- Resolved prototype pollution vulnerability in transitive
js-yamldependency viaoverrides, due to outdated@lhci/clidependency on@lhci/utils.
1.25.12 - 2025-11-14
- Added revised QR code image assets for Vcard information:
src/lib/img/qr/vcard.pngsrc/lib/img/qr/vcard.webp
- Modified
.node-versionand.nvmrcto utilize Node.js24.11.1(LTS). - Updated
.ncurc.cjsto reject updates tomarkdownlint-cli2, due to discrepancies between in-editor and CLI linting errors. - Updated environment template (
.env.template) to includePUBLIC_ENV_MODE, which is now required to build the proper environment (e.g.,dev,audit,production). - Updated generator metadata in
src/app.htmlto reflect SvelteKit 2.48.5. - Bumped project version to
v1.25.12. - Updated dependencies:
@sveltejs/kit2.48.4→2.48.5eslint-plugin-jsdoc^61.2.0→^61.2.1
1.25.11 - 2025-11-12
gotoDesktop(page, path)andgotoMobile(page, path)helper functions to streamline viewport + navigation setup.clickAndWaitForNavigation(page, locator, options)utility for safe SPA or full-page navigation detection with optional URL pattern matching.DEBUG_LOGSflag inhelpers.jsto allow toggling of console logs for test diagnostics.- Navigation debug logs to
getVisibleNav()to indicate which navigation region was detected (when debugging is enabled).
- Refactored all E2E tests to use
gotoDesktop()andgotoMobile()for consistency and DRY principles. - Replaced brittle direct
waitForNavigation()usages withclickAndWaitForNavigation()helper. - Updated mobile and desktop tests to improve consistency across specs and improve visibility assertions.
- Legacy direct
setViewportSize()andpage.goto()calls from individual test blocks (now handled viagoto*()helpers).
1.25.10 - 2025-11-12
- Updated GitHub workflows to specify
ENV: ciwhere appropriate:templates/check-codeql.template.ymltemplates/publish.template.ymlauto-assign.ymlbranch-backup.ymlcheck-security-txt-expiry.ymldependency-review.ymlmeta-check.ymlprevent-audit-merges.ymlsecret-scan.yml
- Added
@sveltejs/adapter-netlifydevDependency for smoother toggling between production and audit modes.- Production uses
@sveltejs/adapter-vercelonly.@sveltejs/adapter-netlifyexists solely to support the audit environment.
- Production uses
- Bumped project version to
v1.25.10. - Updated dependencies:
@testing-library/svelte^5.2.8→^5.2.9eslint-plugin-jsdoc^61.1.12→^61.2.0posthog-js^1.290.0→^1.292.0
- Removed unneeded comments in
build-and-publish.ymlworkflow.
1.25.9 - 2025-11-11
- Updated the support email address to
support@netwk.proin the following files:README.mdcheck-codeql.template.ymlpublish.template.ymlcontact.vcf
- Modified
eslint.config.mjsto include.cjsfiles when linting JavaScript. - Bumped project version to
v1.25.9.
- Modified
.github/workflows/probely-scan.ymlto accept either a 200 or 201 response.- Workflow was correctly triggering scan, but then failed due to receiving a 200 response rather than the 201 that was expected.
1.25.8 - 2025-11-11
- 🔐 Branch protection rules on
master:- Enforced pull requests for all changes
- Blocked force pushes
- Linear history requirement
- 🚫 CI workflow to prevent merges from
audit-netlifytomaster:- PRs originating from
audit-netlifytargetingmasterare automatically rejected - Triggered on
pull_requestevents - Uses
github.event.pull_request.head.reffor precise branch detection
- PRs originating from
- 🚀 Netlify CI deployment for audit-only branch:
- Workflow
.github/workflows/deploy-audit-netlify.ymladded - Deploys
audit-netlifyto a separate Netlify site - Uses environmental variables to trigger
vite build --mode audit
- Workflow
- 🌐
hooks.server.jsCSP hardening for audit deployments:- Probely scanner detection based on UA/IP added via
isProbelyScanner() - Audit-specific CSP disables analytics and CSP reporting endpoints
- Logs detailed CSP info when in
isAuditorisDebugmodes
- Probely scanner detection based on UA/IP added via
- 🛡️ Middleware improvements:
- User-agent/IP fingerprinting for Probely DAST
- Added logging for audit-mode scanner matches
- 🧪 Support for per-environment
.envfiles (e.g..env.audit) - 🔄 Git helper scripts:
- Added bash script to sync
audit-netlifywith latestmaster - Supports merge conflict resolution via VS Code diff viewer
- Added bash script to sync
- Updated
.stylelintignoreto exclude.netlifydirectory - Updated
lint:mdscript to exclude thebuild/and.netlify/directories - Refined
svelte.config.jsto support alternate build targets (Vercel → Netlify via adapter switch) - Audit builds now use isolated
.envconfig and a separate Netlify site token - Bumped project version to
v1.25.8
1.25.7 - 2025-11-11
- Introduced
src/lib/security/probely.jshelper module to detect Probely vulnerability scanner requests via normalized IP and User-Agent matching.- Supports case-insensitive substring matching for known Probely UA fragments (
ProbelySPDR/, etc.). - IP allowlisting based on published ranges: https://help.probely.com/en/articles/5112461/
- Supports case-insensitive substring matching for known Probely UA fragments (
- Added unit test suite
tests/unit/server/lib/security/probely.test.jsto verify robustness ofisProbelyScanner()logic against UA/IP variations and edge cases.
- Updated
hooks.server.jsto integrateisProbelyScanner()as a drop-in replacement for inline Probely detection logic, improving clarity and testability. - Contact details and motto updated in
static/.well-known/humans.txt. - Refreshed last modified dates in
static/sitemap.xml. - Minor cosmetic changes to
static/robots.txt. - Corrected fallback metadata in
+layout.svelte. - Removed inline styles from
src/lib/components/PWAInstallButton.svelteandsrc/lib/components/foss/FossFeatures.svelte.- Moved styles to
src/lib/styles/css/default.css. - Regenerated
global.min.cssbundle with LightningCSS.
- Moved styles to
- Minor optimizations and cleanup to several files:
src/lib/components/RedirectPage.sveltesrc/lib/components/layout/Footer.sveltesrc/lib/pages/AboutContent.sveltesrc/lib/pages/TermsConditionsContent.sveltesrc/lib/pages/TermsUseContent.sveltesrc/routes/contact/+page.sveltesrc/routes/posts/+page.sveltesrc/routes/privacy-rights/+page.svelte
- Bumped project version to
v1.25.7. - Updated dependencies:
autoprefixer^10.4.21→^10.4.22browserslist^4.27.0→^4.28.0svelte5.43.3→5.43.6svelte-check^4.3.3→^4.3.4posthog-js^1.285.1→^1.290.0vite^7.1.12→^7.2.2
1.25.6 - 2025-11-04
- Hardened
Content-Security-Policy (CSP)inhooks.server.js:- Environment-specific policies for
production,audit,dev, andtest - Added real CSP reporting endpoint (
csp.netwk.pro) in production - Report-only mode enabled in non-prod for safer diagnostics
- Environment-specific policies for
- Added
/api/mock-cspendpoint to capture and log CSP violation reports in non-prod environments
- Updated
README.mdwith detailed explanation of the CSP enforcement strategy and future nonce-based roadmap - Moved inline styles from
Badges.svelteandLogo.svelteto external stylesheet (default.css) - Regenerated
global.min.cssusing LightningCSS to reflect updated external styles - Bumped project version to
v1.25.6 - Updated dependencies:
@eslint/js^9.39.0→^9.39.1eslint^9.39.0→^9.39.1eslint-plugin-jsdoc^61.1.11→^61.1.12svelte5.43.2→5.43.3posthog-js^1.284.0→^1.285.1
- Updated
probely-scan.ymlGitHub workflow to utilize the correct API endpoint and cURL requests.
1.25.5 - 2025-11-03
- Introduced
static/b173de6c44c144c1b186841b88d51c67.txtfor use with IndexNow and Bing Webmaster Tools.
- Bumped project version to
v1.25.5.
- Corrected the URLs for the HTML versions of the licenses in
static/sitemap.xml.
1.25.4 - 2025-11-03
detectEnvironment()now returns:isDebugboolean (true ifisDevorisTest)isLocalhost(optional, in browser contexts)
- Support for
PUBLIC_POSTHOG_PROJECT_KEYusingimport.meta.env - Dynamic PostHog initialization (
initPostHog) now uses env-based key injection - vite.config.js:
envPrefix: ['PUBLIC_']added to expose public vars to client- Console banner for
ENV_MODE,PUBLIC_ENV_MODE, and audit-mode warning
- CSP debug logs gated behind
isDebugand server-only context .env.productionsupport via--mode=productionguidance- Conditional
minifyflag forlightningcssPluginbased onmode(productionoraudit)
- Environment detection (
env.js) now respects hostname overrides and normalizes fallback logic for SSR/client consistency - Logs in
hooks.server.jsand PostHog analytics client are now gated byisDebugto avoid unnecessary noise in production - Better logging structure for PostHog initialization, including full
import.meta.envdump in debug mode - Bumped project version to
v1.25.4
- Broken or undefined env var behavior due to missing
envPrefixinvite.config.js - Client-only
import.meta.env.PUBLIC_*variables incorrectly resolving asundefinedin production builds - CSP not reflecting audit context due to host-based detection mismatch
.env.productionis now required for full environment variable injection duringnpm run build --mode=productionor Vercel deployments.- Without it,
PUBLIC_variables (e.g.PUBLIC_POSTHOG_PROJECT_KEY) may resolve as undefined in the client bundle. - Local builds can still fall back to
.envor.env.developmentby default.
- Without it,
1.25.3 - 2025-11-03
- Updated
posthog.jsto display environmental context logs only in development and testing environments. - Bumped project version to
v1.25.3.
- Removed Branch Guard workflow (
.github/workflows/branch-guard.yml), as it was resulting in mostly false positives.
1.25.2 - 2025-11-03
-
Unified Environment Detection (
env.js)- Added support for server-side hostname injection via optional
hostOverrideparameter. - Enables accurate audit environment detection on both server (
hooks.server.js) and client. - Logs the resolved environment and host when executed on the server.
- Maintains safe fallback behavior for client-only usage.
- Added support for server-side hostname injection via optional
-
CSP Handling (
hooks.server.js)- Replaced reliance on
window.location(unavailable on server) withevent.url.hostnamefor host detection. - Now correctly applies hardened audit-mode CSP in deployments matching
*.audit.netwk.pro. - Improved logging for audit/test/prod environment resolution during server request lifecycle.
- Replaced reliance on
-
Build Diagnostics (
vite.config.js)- Added
stderroutput forauditmode builds to ensure visibility in CI logs. - Displays a prominent
🔒 Audit Mode Detectedtag during Vercel and local builds. - Continues to log
ENV_MODE,PUBLIC_ENV_MODE, andNODE_ENVfor build-time inspection.
- Added
-
Bumped project version to
v1.25.2.
1.25.1 - 2025-11-02
- Introduced new environment diagnostics endpoint at
src/routes/api/env-check/+server.js.- Returns resolved build and runtime environment data for verification.
- Useful for confirming
ENV_MODE/PUBLIC_ENV_MODEpropagation on Vercel builds. - Helps troubleshoot environment mismatches between build-time and client-side contexts.
- vite.config.js
- Enhanced configuration to log build mode and environment variables during bundling.
- Prints
mode,ENV_MODE,PUBLIC_ENV_MODE, andNODE_ENVto aid CI/CD debugging. - Uses color-coded console output for clear visibility in build logs.
- env.js
- Simplified and stabilized environment detection logic for better cross-environment consistency.
- Removed redundant imports and corrected handling of static vs dynamic
BUILD_ENV_MODE. - Improved comments and type annotations for maintainability and IDE autocompletion.
- Bumped project version to
v1.25.1.
- Build logs now clearly display environment information before bundling.
env-checkAPI endpoint provides real-time environment inspection without rebuilding.
1.25.0 - 2025-11-02
-
Introduced unified environment detection utility (
src/lib/utils/env.js) with full JSDoc typing.- Normalizes
process.envandimport.meta.envusage across SSR (Node) and client contexts. - Safely handles browser environments where
processis undefined. - Provides standardized flags for:
isDev,isProd,isAudit,isCI, andisTest
- Enables consistent environment checks across analytics, CSP, and runtime logic.
- Normalizes
-
Added hybrid environment + host-based analytics guard in
src/lib/stores/posthog.js.- Automatically disables PostHog tracking in
auditmode or when hostname matches*.audit.netwk.pro. - Prevents analytics initialization during development and test contexts.
- Uses the shared
detectEnvironment()utility for centralized logic. - Improves runtime logging for environment-specific behavior.
- Automatically disables PostHog tracking in
-
Updated
hooks.server.jsto include a dedicated audit environment block for Content Security Policy (CSP).- Hardened audit CSP by removing all analytics-related sources (
posthog.com,posthog-assets.com). - Redirects CSP violation reporting to the mock endpoint (
/api/mock-csp) in audit mode. - Preserves full HSTS and other production security headers for audit deployments.
- Added clear separation between
test,audit, andprodsecurity policies. - Improved console debugging for environment detection (
NODE_ENV,ENV_MODE).
- Hardened audit CSP by removing all analytics-related sources (
-
Refactored environment detection logic for improved reliability across client and server contexts.
- Added unified environment resolver at
src/lib/utils/env.jsto standardize detection fordev,prod,audit,ci, andtestmodes. - Ensures consistent handling of both
process.env.*(Node/SSR) andimport.meta.env.*(Vite/client) variables. - Prevents mismatched behavior between browser-side analytics (
posthog.js) and server-side policies (hooks.server.js). - Automatically falls back to
'unknown'if no explicit mode is set, avoiding build-time exceptions.
- Added unified environment resolver at
-
Refactored Branch Guard workflow (
.github/workflows/branch-guard.yml) for improved accuracy and reduced noise.- Adjusted detection logic to ignore merge commits, Dependabot updates, and automated actions.
- Ensures workflow warnings are shown only for true direct commits to protected branches (
master,main). - Simplified step output and summary formatting for clearer reporting in the Actions log and job summary.
- Maintains lightweight permissions (
contents: read) and executes entirely without repository writes. - Improves reliability of branch protection monitoring without affecting CI or merge operations.
-
Bumped project version to
v1.25.0.
- Resolved client-side crash in browser environments caused by
process.envbeing undefined.- Implemented defensive checks in
env.jsforprocessavailability. - Eliminated reference errors during client-side initialization of analytics.
- Implemented defensive checks in
- Simplified future configuration by consolidating environment checks into a single typed utility.
- Improved maintainability and Vercel compatibility by ensuring
.env.auditandPUBLIC_ENV_MODEvariables propagate correctly to both client and server environments.
- When deploying audit builds, ensure Vercel environment variables include:
ENV_MODE=audit
PUBLIC_ENV_MODE=auditThis enables analytics filtering and CSP hardening for the audit environment.
- Audit deployments retain full HTTPS and security headers but omit telemetry and external CSP reporting.
- Introduced Branch Guard workflow (
.github/workflows/branch-guard.yml) to automatically enforce branch protection policies.- Ensures consistent branch naming conventions.
- Blocks direct pushes to protected branches (e.g.,
master,main, andrelease/*). - Provides early validation for pull requests and feature branches to maintain repository integrity.
- Introduced comprehensive pre-push checks for code consistency and style compliance.
- Added optional
simple-git-hooksconfiguration to automate local linting before commits or pushes. - Implemented
lint:allscript usingnpm-run-allfor efficient, parallel execution of linters. - Ensures ESLint, Stylelint, Markdownlint, and Prettier all run before code is committed, improving codebase hygiene and preventing formatting drift.
- Designed for developer-side speed and reliability, running linters in parallel while deferring
format(Prettier) until after lint checks complete for safety.
- Added optional
- Added hybrid linting configuration:
- Parallel execution for static lint tasks (
eslint,stylelint,markdownlint). - Sequential Prettier formatting step for deterministic, race-free execution.
- Parallel execution for static lint tasks (
- Reorganized local linting commands for clarity and consistency, consolidating redundant sequential scripts into the
lint:allaggregator. - Improved developer experience with faster pre-push validations and clearer script naming conventions.
- Bumped project version to
v1.24.5.
- Enhanced local development workflow by introducing fast, parallel linting and optional pre-commit hooks, reducing turnaround time for style and quality checks.
- Simplified npm scripts for readability and maintainability by adopting
npm-run-allas the central task runner.
- For instructions on installing and configuring the new dependencies, please see the Editor Configuration section of the Wiki.
Note: Version
1.24.4was merged but not tagged or released.
Subsequent updates are reflected inv1.24.5and later.
- Added a Continuous Security & Dependency Checks section to
README.md, outlining the automated vulnerability and dependency analysis integrated into CI/CD workflows.
- Introduced non-blocking
npm auditstep in thebuild-and-publish.ymlworkflow to automatically detect known vulnerabilities during dependency installation. - Introduced Probely Dynamic Application Security Testing (DAST) integration via a new GitHub Actions workflow at
.github/workflows/probely-scan.yml.- Executes weekly automated scans of the
audit.netwk.proenvironment every Tuesday at 09:00 UTC. - Authenticates securely using a scoped API key stored in GitHub Secrets (
PROBELY_API_KEY). - Polls the Probely API for scan completion and retrieves the full HTML vulnerability report.
- Uploads reports as workflow artifacts for maintainers to review.
- Includes a 60-minute timeout and supports manual triggering via
workflow_dispatch. - Configured for read-only testing against non-production environments to safely identify potential web and API vulnerabilities.
- Future updates will introduce automated issue creation and alerting for high-severity findings.
- Executes weekly automated scans of the
- Updated
static/robots.txtto exclude redirect routes and sensitive/internal endpoints (e.g.,/api,/relay-*,/consultation,/contact,/status, etc.) from automated crawlers and vulnerability scanners. - Bumped project version to
v1.24.4.
- Enhanced continuous security coverage through the addition of Probely DAST for dynamic web and API vulnerability testing.
- Maintained and improved GitLeaks secret scanning across pull requests and scheduled full-history scans.
- Together, these workflows now provide full-spectrum coverage across SAST (static analysis) and DAST (dynamic analysis) layers within the CI/CD pipeline.
- Bumped project version to
v1.24.3. - Updated
.github/workflows/secret-scan.ymlto utilize a uniqueCODEQL_ACTION_ANALYSIS_KEYto avoid conflicts with CodeQL. - Updated
static/robots.txtto disallow crawling of the/apiroute.
- Corrected naming of
static/7cbb39ce-750b-43da-83b8-8980e5554d4d.txt.
- Introduced new text file to prove ownership of the domain for Probely DAST scans in
static/.
- Bumped project version to
v1.24.2. - Updated
author.urlinpackage.jsonto reflect updated bio site, now located at bio.netwk.pro.
- Bumped project version to
v1.24.1. - Updated GitLeaks workflow (
.github/workflows/secret-scan.yml):- Reworked Gitleaks step to use official environment variables (
GITLEAKS_REPORT_PATH,GITLEAKS_LICENSE) for compatibility withgitleaks/gitleaks-action@v2. - Added explicit handling for runs with no detected secrets (skips JSON parsing when no report is generated).
- Improved summary step output with clear “No leaks detected” message and reduced false warnings.
- Ensured consistent artifact uploads and safer fork-handling conditions.
- Reworked Gitleaks step to use official environment variables (
- Lighthouse now points to the new audit version of the site at audit.netwk.pro.
- Introduced GitLeaks secret scan CI action as
.github/workflows/secret-scan.yml. - Introduced two-phase scan strategy:
- Pull Request scans to detect secrets before merge.
- Nightly scheduled scans (
cron: "0 4 * * *") for full-history coverage.
- Added artifact upload for the
gitleaks-report.jsonfile, allowing maintainers to download complete results from the Actions UI. - Implemented public-safe summary output in
$GITHUB_STEP_SUMMARY:- Displays secret descriptions only.
- Redacts file paths and other sensitive details.
- Provides a concise, readable summary of findings.
- Added GitHub Issue creation step to automatically open a security issue when leaks are detected.
- Integrated optional ntfy.sh notifications for real-time alerting on secret leaks.
- Implemented fork-safety guards to prevent workflows triggered from untrusted forks from:
- Accessing organization secrets (license keys, ntfy topic).
- Uploading artifacts or creating issues.
- Added descriptive comments and logical layer separation:
- Layer 1 – Output Redaction
- Layer 2 – Secret / Fork Handling
- Bumped project version to
v1.23.1. - Updated
.node-versionand.nvmrcto utilize Node.js24.11.0(LTS). - Updated CI workflows to utilize
node-version: 24:build-and-publish.ymllighthouse.ymlmeta-check.ymlplaywright.ymlpublish-test.ymltemplates/publish.template.yml
- Updated dependencies:
@eslint/js^9.38.0→^9.39.0eslint^9.38.0→^9.39.0globals^16.4.0→^16.5.0posthog-js^1.282.0→^1.284.0
- Added automated SAST scanning via GitLeaks to prevent secrets and credentials from being committed.
- Implemented security event reporting via GitHub’s Code Scanning interface (SARIF upload supported).
- Configured automated notifications for detected leaks via GitHub Issues and optional ntfy alerts.
1.23.0 - 2025-10-30
- Updated
src/lib/README.mdto reflect newly added app constants.
-
Refactored all route files to use named imports from
$lib/componentsand$lib/pagesbarrel modules, replacing individual.svelteimports for improved consistency and maintainability. -
Changed
COMPANY_INFO.APP_NAMEconstant toNetwork Pro™insrc/lib/index.js.- Removed unnecessary
™symbol from files that utilize the app constant.
- Removed unnecessary
-
Changed
/licenseand/foss-spotlightroutes to/legaland/foss, respectively, for more intuitive navigation.- Updated all references to the new routes,
/legaland/foss. - Updated
vercel.jsonto redirect/licenseto/legal, and/foss-spotlightto/foss.
- Updated all references to the new routes,
-
Refactored Playwright helper utilities to modern standards:
- Replaced deprecated
page.waitForNavigation()withwaitForURL()andwaitForLoadState()inclickAndWaitForNavigation()for improved SPA and full-page navigation reliability. - Simplified logic and removed unsupported
lastResponse()usage. - Improved test stability for mobile navigation (especially in CI environments).
- Replaced deprecated
-
Modified
tests/unit/server/meta.test.jsto match onLocking Down Networks, rather thanNetwork Pro, which is now dynamically attached. -
Refreshed Last Modified timestamps in
static/sitemap.xml. -
Updated
.node-versionand.nvmrcto utilize Node.js22.21.1(LTS). -
Updated generator metadata in
src/app.htmlto reflect SvelteKit 2.48.4. -
Bumped project version to
v1.23.0. -
Updated dependencies:
@sveltejs/kit2.48.3→2.48.4svelte5.43.0→5.43.2eslint-plugin-svelte^3.12.5→^3.13.0
-
Refactored metadata and SEO handling for consistency and maintainability:
- Centralized all
<meta>and<title>management insrc/lib/components/MetaTags.svelte. - Removed redundant per-page
<svelte:head>entries andMetaTagsimports in individual+page.sveltefiles. - Added dynamic canonical URL generation using route
pathnamefrom+layout.js. - Implemented automatic title and description suffixing:
- Titles now end with
— Network Pro™. - Descriptions now end with
| Security, Networking, Privacy — Network Pro Strategies.
- Titles now end with
- Cleaned up fallback values (
defaultTitle,defaultDescription,defaultMeta) to prevent redundant branding text. - Adjusted layout structure to ensure correct canonical and OpenGraph metadata per route.
- Centralized all
-
Updated
src/app.html:- Removed duplicate document sections and placeholder meta tags.
- Verified correct
%sveltekit.head%placement for dynamic head injection. - Moved static PWA-related metadata (e.g.,
<meta name="theme-color">) intoapp.html. - Retained dynamic icons and preload links for cache-busted assets via
+layout.svelte.
- Added transitive dependency overrides to address reported vulnerabilities:
tar@7.5.1→tar@7.5.2(fixes CVE-2025-64118: race condition/uninitialized memory exposure).
- Confirmed overrides applied correctly via
npm lsandnpm explain.
1.22.2 - 2025-10-29
- Rewrote
CONTRIBUTING.mdto accurately describe the modern SvelteKit contribution workflow.- Updated guidelines for branch naming, code style, and pull request submission.
- Removed outdated references to Webpack and
build/artifacts.
- Moved
CONTRIBUTING.mdandCODE_OF_CONDUCT.mdto the organization’s.githubrepository to centralize contribution and conduct policies across all projects.
- Introduced
vite-plugin-devtools-jsonas a newdevDependencyto improve DevTools and JSON inspection support.- Added plugin configuration in
vite.config.js.
- Added plugin configuration in
- Added
.ncurc.jsonconfiguration to define rules fornpm-check-updates, preventing automatic upgrades of version-linked packages such asvitestand@vitest/coverage-v8. - Added the term
ncurctocspell.jsonto prevent false-positive spell-check warnings.
- Updated GitHub workflows to utilize
actions/upload-artifact@v5andactions/setup-node@v6:templates/publish.template.ymlbuild-and-publish.ymllighthouse.ymlmeta-check.ymlplaywright.ymlpublish-test.yml
- Improved Svelte 5 / Rune compatibility in
vitest.config.client.js:- Added
optimizeDeps.includeconfiguration to ensure.sveltefiles are properly transformed during testing, and to align with Vitest 4.x and future Vite 6 compatibility. - Prevents
rune_outside_svelteerrors and prepares for future Vitest 4.x updates.
- Added
- Updated generator metadata in
src/app.htmlto reflect SvelteKit 2.48.3. - Modified
.node-versionand.nvmrcto reflect Node.js version22.21.0(LTS). - Bumped project version to
v1.22.2. - Updated dependencies:
@eslint/compat^1.4.0→^1.4.1@sveltejs/adapter-vercel^6.0.0→^6.1.1@sveltejs/kit2.47.2→2.48.3browserslist^4.26.3→^4.27.0eslint-plugin-jsdoc^61.1.5→^61.1.11posthog-js^1.278.0→^1.282.0svelte5.41.1→5.43.0vite^7.1.11→^7.1.12
1.22.1 - 2025-10-21
- Updated directory structure and static/pgp section of
README.md.
- Bumped project version to
v1.22.1. - Updated the text and layout of
AboutContent.svelte. - Added a link to the privacy email address in
PrivacyContent.svelteandPrivacyDashboard.sveltefor easier access. - Updated the text of
ServicesContent.svelte. - Increased default Playwright test timeouts for navigation-sensitive suites (Desktop and Mobile) to improve stability under CI latency conditions.
- Implemented
Promise.all()pattern for combined click and navigation waits, reducing flakiness in route transition tests. - Updated the
aboutlink navigation tests in both Desktop and Mobile scenarios to include:- Explicit
page.waitForLoadState('domcontentloaded')calls before assertions. - Extended per-suite timeouts (
90s) usingtest.setTimeout(90000)for reliability on slower environments. - Added fallback
waitForURL('\*\*/about', { timeout: 60000 })to ensure deterministic routing checks.
- Explicit
- Adjusted test structure for consistency across device profiles and browsers.
- Verified local runs remain performant while increasing tolerance for CI network latency.
- Corrected
TermsUseContent.svelteto reflect hosting by Vercel, not Netlify. - Corrected license identifier syntax on the following pages:
AboutContent.svelteFossContent.svelteLicenseContent.sveltePrivacyContent.sveltePrivacyDashboard.svelteServicesContent.svelteTermsConditionsContent.svelteTermsUseContent.svelte
1.22.0 - 2025-10-20
- Introduced dynamic QR code image imports using
import.meta.globinsrc/lib/images.js. - Implemented new
getQR()helper function for streamlined QR lookups. - Added
QR_IMAGESregistry for centralized QR asset management. - Created dedicated PGP key data module (
src/lib/data/pgpKeys.js) with dynamic QR bindings. - Added new app constants (
EMAIL_LINK,SECURE_LINK,PRIVACY_LINK) to:src/lib/index.jssrc/lib/types/appConstants.js
- Re-exported
src/lib/data/pgpKeys.jsfromsrc/lib/index.js. - Added favicon and manifest entry for
icon-about.png. - Introduced updated contact assets block in
AboutContent.sveltewith enhanced typing. - Exported
src/lib/img/powered-by-proton.svgfromsrc/lib/images.js. - Added missing JSDoc annotation to
src/lib/data/fossData.js. - Added updated PGP key for
support@netwk.pro(previouslysupport@neteng.pro).
- Bumped project version to
v1.22.0. - Updated generator metadata in
src/app.htmlto reflect SvelteKit 2.47.2. - Refactored PGPContent.svelte to use the
getQR()helper and dynamic QR registry. - Refactored AboutContent.svelte to use the centralized
PGP_KEYSdataset and app constants. - Split PGP key fingerprints into two lines for improved readability.
- Enhanced images.js with support for eager QR image imports.
- Replaced static PGP imports with automated dynamic resolution.
- Updated manifest.json to reference the new app icon.
- Revised layout and text consistency for PGP and contact sections in AboutContent.svelte.
- Updated type definitions in
src/lib/types/appConstants.jsforCONTACTconstants. - Cleaned up unused imports and improved inline JSDoc typings throughout the app.
- Updated asset references in
IGNORE_PATHSandREQUIRED_ASSETSinsrc/service-worker.js. - Added spacing adjustments to the tagline in Logo.svelte.
- Updated HeaderDefault.svelte to reference the global constant for the Blog link.
- Revised text and app constant usage in HomeContent.svelte.
- Updated the contact section and Effective Date in ServicesContent.svelte.
- Rebuilt
src/lib/styles/global.min.cssusing LightningCSS. - Refreshed
_Last Modified_timestamps instatic/sitemap.xml.
- Fixed SSR error caused by missing
getQRreference during page load. - Corrected destructuring of
CONTACTconstants during SSR initialization. - Fixed fingerprint rendering fallback when fingerprint type was non-array.
- Adjusted QR image alignment and eager/lazy decoding behavior.
- Deleted outdated static assets from
static/pgp, replaced with dynamically loaded QR images. - Removed redundant manual image imports from legacy sections of
images.js. - Removed unnecessary comment block from the
<head>section ofsrc/app.html. - Removed
font-weight: boldproperty from the.fingerprintCSS class insrc/lib/styles/css/default.css.
- Updated
vitefromv7.1.10→v7.1.11to address CVE-2025-62522. - Updated dependencies for SvelteKit
2.47.2compatibility:@sveltejs/kit,svelte,vite, andeslint-related plugins.
- Cleaned up build cache and service worker registration logic in
src/service-worker.js.
1.21.1 - 2025-10-17
- Introduced universal relay mock handler at
src/routes/relay-[slug]/[...catchall]/+server.jsto consolidate test-only endpoints such asflags,config, andconfig.js. - Added fallback support for
GET,HEAD, andOPTIONSmethods within the catchall relay handler.
- Bumped project version to
v1.21.1. - Standardized header in various files:
.editorconfig.env.template.gitattributes.gitignore.prettierignore.stylelintignore
- Deleted unneeded comments in
stylelint.config.jsand.markdownlint.mjs.
1.21.0 - 2025-10-17
- Introduced modular analytics initializer at
src/lib/utils/initAnalytics.jsto handle PostHog tracking, asset preloading, and cleanup logic.
- Bumped project version to
v1.21.0. - Added
pageleavetocspell.jsonto support custom PostHog events. - Expanded
lintscript inpackage.jsonto include.cjsfiles. - Updated
src/service-worker.jsto correctly excludesecurity.txt.sigfrom caching. - Refactored
+layout.svelteto use the newinitAnalytics.jsutility for cleaner side-effect management. - Updated fallback meta description logic in both
+layout.svelteand+layout.js. - Adjusted
"purpose"value instatic/manifest.jsonfrom"any maskable"to"maskable"for improved PWA icon support. - Increased spacing before contact info in
src/lib/pages/HomeContent.svelte. - Enhanced
registerServiceWorker.jsto skip SW registration in Firefox during development, preventing known/@fs/path evaluation errors. - Integrated automatic cleanup of existing service workers in
registerServiceWorker.jswhen running in Firefox + dev mode. - Improved logging clarity in
registerServiceWorker.jsto better distinguish SW lifecycle behavior by environment. - Updated
unregisterServiceWorker.jsto include scoped SW logging when unregistering. - Refactored
posthog.jsto add conditional guards for suppressing noisy analytics errors in development mode.
1.20.0 - 2025-10-17
- Implemented new Services route at
/services:- Created
src/routes/services/+page.server.jsandsrc/routes/services/+page.svelte. - Added full Services content in
src/lib/pages/ServicesContent.svelte. - Introduced Services Summary Table component (
src/lib/components/ServiceSummaryTable.svelte).
- Created
- Added corresponding CSS for Services route in
src/lib/styles/css/default.css. - Added PostHog Cloud proxy rewrites to
vercel.jsonfor analytics endpoint. - Added new terms to
cspell.json:hcaptcha,serv, andtshoot. - Updated CI workflows to use npm v11.6.2 and added
packages: writepermission withGITHUB_TOKENfor GPR publishing:.github/workflows/build-and-publish.yml.github/workflows/publish-test.yml.github/workflows/templates/publish.template.yml
- Updated
.github/workflows/meta-check.ymlto explicitly use theubuntu-24.04runner.
- Bumped project version to
v1.20.0. - Updated generator metadata in
src/app.htmlto reflectSvelteKit 2.47.1. - Updated
HeaderDefault.svelteandHeaderHome.svelteto include a "Services" section in navigation. - Rebuilt
src/lib/styles/global.min.cssusing LightningCSS. - Updated content in:
src/lib/pages/AboutContent.svelte– added contact info and consultation link.src/lib/pages/HomeContent.svelte– added company contact info.src/lib/pages/PrivacyContent.svelte– added new Security & Anti-Abuse Measures (hCaptcha) section.src/lib/pages/LicenseContent.svelte– relocated internal comment.
- Modified import handling for
RedirectPageinsrc/routes/consultation/+page.svelte. - Updated
src/hooks.server.js:- Corrected
isTestEnvironmentconstant. - Relaxed CSP rules for development mode to support local PostHog proxy.
- Corrected
- Updated
static/sitemap.xmlto include the/servicesroute and refresh Last Modified timestamps. - Updated author metadata (
@author) from SunDevil311 → Scott Lopez across all relevant JS files, including scripts, libs, and tests. - Updated dependencies:
dompurify^3.2.7→^3.3.0posthog-js^1.271.0→^1.276.0semver^7.7.2→^7.7.3svelte^5.39.9→^5.40.2@eslint/js^9.37.0→^9.38.0@playwright/test^1.55.1→^1.56.1@sveltejs/adapter-vercel^5.10.3→^6.0.0@sveltejs/kit2.44.0→2.47.1eslint^9.37.0→^9.38.0eslint-plugin-jsdoc^60.8.2→^61.1.4markdownlint^0.38.0→^0.39.0playwright^1.55.1→^1.56.1svelte-check^4.3.2→^4.3.3vite^7.1.9→^7.1.10
- Deleted redundant comment from
src/routes/layout.svelte.
PostHog Proxy and CSP Adjustments
- Introduced
/relay-MSR0reverse proxy via Vercel rewrites to route PostHog analytics traffic through the site origin, improving privacy compliance and avoiding CORS preflight requests. - Updated
vercel.jsonaccordingly to map:/relay-MSR0/static/(.*)→https://us-assets.i.posthog.com/static/$1/relay-MSR0/(.*)→https://us.i.posthog.com/$1
- Adjusted Content Security Policy (CSP) in
src/hooks.server.js:- Removed explicit
/relay-MSR0source fromconnect-src(invalid in CSP). 'self'now implicitly allows/relay-MSR0requests on the same origin.- Development CSP remains more permissive (
unsafe-inline,unsafe-eval,localhost:*) for compatibility with PostHog local testing.
- Removed explicit
Miscellaneous
- Confirmed
initPostHog()dynamic import strategy prevents SSR evaluation errors. - Verified service worker (
service-worker.js) continues caching non-PostHog requests correctly. - Verified
Strict-Transport-Securityand other headers remain unaffected by proxy rewrite behavior.
1.19.0 - 2025-10-06
src/lib/components/index.js,src/lib/components/foss/index.js,src/lib/components/layout/index.js- Introduced explicit component export modules to improve import consistency across the library.
- Added wildcard exports in
src/lib/index.jsfor these component modules, enabling$lib/components/...shorthand imports.
tests/unit/client/lib/PWAInstallButton.test.js- Added focused unit tests for
PWAInstallButton.svelteverifying install-event handling and user-prompt logic usingVitestand@testing-library/svelte.
- Added focused unit tests for
src/lib/README.md,src/lib/types/README.md- Added contextual documentation for the library and type definition directories.
- Clarifies module structure, export hierarchy, and intended usage for contributors.
- Bumped project version to
v1.19.0. - Updated
src/lib/pages/AboutContent.sveltewith new services - Added DOM and animation mocks (
window.matchMedia,Element.prototype.animate) tovitest-setup-client.jsto stabilize component transition tests. - Updated
src/lib/index.jsto export all component and utility submodules explicitly, replacing previous implicit import behavior. - Centralized page-level component exports in
src/lib/pages/index.jsfor consistent import structure. - Updated
src/routes/+layout.svelteto import objects from submodules, instead of by their explicit alias - Minor alignment in
src/routes/+page.svelteandsrc/routes/links/+page.sveltewith updated component imports - Moved inline CSS fom
src/lib/components/FullWidthSection.svelteintosrc/lib/styles/css/default.css - Generated an updated
src/lib/styles/global.min.cssfile with LightningCSS - Updated
.gitignoreto remove duplicate.vercelentry - Updated last modified dates in
static/sitemap.xml - Updated dependencies:
eslint-plugin-jsdoc^60.8.1→^60.8.2posthog-js^1.270.1→^1.271.0svelte5.39.8→5.39.9
1.18.5 - 2025-10-05
- Added Vercel CLI scripts to
package.json, includingdev:vercelandbuild:vercel.
- Bumped project version to
v1.18.5. - Updated generator metadata in
app.htmlto reflectSvelteKit 2.44.0. - Added
scripts/testRedirects.jsto.gitignore. - Cleaned up header in
jsconfig.template.jsonc. - Updated Repository Structure section in
README.md. - Restructured
CHANGELOG.mdsuch that sections are presented in alphabetical order. - Corrected JSDoc annotations in
static/disableSw.js. - Updated dependencies:
@sveltejs/kit2.43.8→2.44.0eslint-plugin-jsdoc^60.8.0→^60.8.1
- Revised Repository Structure to accurately reflect the folders under
/tests.
- Removed all references to Netlify and all Netlify-specific scripts from
package.json. - Removed
test:redirectsscript frompackage.json. - The
testRedirects.jsscript has been removed from version control, as it is no longer needed to test Netlify redirects.
1.18.4 - 2025-10-04
- Bumped project version to
v1.18.4. - Updated npm to
v11.6.1in CI workflows:.github/workflows/build-and-publish.yml.github/workflows/lighthouse.yml.github/workflows/playwright.yml.github/workflows/publish-test.yml.github/workflows/templates/publish.template.yml
- Updated Repository Structure section in
README.md. - Updated dependencies:
@eslint/js^9.36.0→^9.37.0@sveltejs/adapter-vercel^5.10.2→^5.10.3@sveltejs/kit2.43.5→2.43.8@testing-library/jest-dom^6.8.0→^6.9.1browserslist^4.26.2→^4.26.3eslint^9.36.0→^9.37.0eslint-plugin-jsdoc^60.4.1→^60.8.0lightningcss^1.30.1→^1.30.2posthog-js^1.268.6→^1.270.1stylelint^16.24.0→^16.25.0svelte5.39.6→5.39.8typescript^5.9.2→^5.9.3vite^7.1.7→^7.1.9
- Updated Repository Structure to reflect current environment and files.
1.18.3 - 2025-09-27
- Bumped version to
v1.18.3. - Updated
README.mdto reflect hosting by Vercel. - Standardized header in the following files:
.editorconfig.gitattributes.gitignore.prettierignore.stylelintignoreCHANGELOG.template.md
1.18.2 - 2025-09-27
- Bumped version to
v1.18.2. - Replaced Netlify badge with Vercel badge in
README.md.
1.18.1 - 2025-09-27
- Bumped version to
v1.18.1. - Removed
wwwredirect fromvercel.json.
- Instead of an app redirect, the
wwwsubdomain is now set up with a CNAME record
1.18.0 - 2025-09-27
- Bumped version to
v1.18.0. - Updated Node.js version in
.node-versionand.nvmrcto22.20.0for compatibility with Vercel. - Updated CI workflows to utilize
node-version: 22:build-and-publish.ymllighthouse.ymlmeta-check.ymlplaywright.ymlpublish-test.ymltemplates/publish.template.yml
- Migrated hosting and serverless functions from Netlify to Vercel.
- Updated deployment configuration to use
@sveltejs/adapter-vercelin place of@sveltejs/adapter-netlify. - Cleaned up Netlify-specific files and settings:
- Removed
netlify.tomland Netlify plugin configuration. - Removed unused SMTP-related environment variables (
SMTP_*,MAIL_ENABLED,NOTIFY_EMAIL). - Replaced
_redirectswith Vercel-managed redirects and rewrites invercel.json.
- Removed
- Updated environment configuration to define
ENV_MODEwithin Vercel project settings. - Adjusted
engines.npmrequirement inpackage.jsonfrom>=11.0.0 <12to>=10.0.0 <12for compatibility with Vercel.
- Deleted
netlify.tomland_redirects. - Removed
vercel.jsonfrom.gitignore.
1.17.2 - 2025-09-27
- Bumped version to
v1.17.2. - Updated generator metadata in
app.htmlto reflectSvelteKit 2.43.5. - Updated Node.js version in
.node-versionand.nvmrcto24.9.0. - Updated
actions/checkout,actions/setup-node, andactions/download-artifactin the following files in.github/workflows:templates/publish.template.ymlbackup-branch.ymlbuild-and-publish.ymlcheck-security-txt-expiry.ymldependency-review.ymllighthouse.ymlplaywright.ymlpublish-test.yml
- Updated JSDoc linting step and
sedsyntax in the following workflows:templates/publish.template.ymlpublish-test.yml
- Upgraded dependencies:
@eslint/compat^1.3.2→^1.4.0@eslint/js^9.35.0→^9.36.0@playwright/test^1.55.0→^1.55.1@sveltejs/kit2.42.1→2.43.5@sveltejs/vite-plugin-svelte^6.2.0→^6.2.1eslint^9.35.0→^9.36.0eslint-plugin-jsdoc^58.1.1→^60.4.1eslint-plugin-svelte^3.12.3→^3.12.4playwright^1.55.0→^1.55.1posthog-js^1.266.0→^1.268.6svelte5.39.1→5.39.6svelte-check^4.3.1→^4.3.2svelte-eslint-parser^1.3.2→^1.3.3
1.17.1 - 2025-09-17
- Bumped version to
v1.17.1.
- Patched transitive vulnerabilities by pinning dependencies via
overrides:- Forced
tmpto>=0.2.4(resolves CVE-2025-54798 reported via@lhci/cli). - Forced
cookieto^1.0.0(used by@sveltejs/kitand@lhci/cli).
- Forced
1.17.0 - 2025-09-17
- New
meta-check.ymlGitHub Actions workflow to validate<title>and<meta>descriptions using Vitest.- Runs separately from Playwright to avoid hydration timing issues.
- Ensures SEO metadata is tested in CI without blocking other jobs.
- New
meta.test.jsfile intests/unit/metafor testing in CI. - New
meta.test.jsfile intests/unit/serverfor local testing.
- Bumped version to
v1.17.0. - Cleaned up Playwright E2E tests:
- Removed brittle
toHaveTitleassertions causing CI failures. - Standardized footer checks to use helper function.
- Improved test readability and consistency in
app.spec.jsandmobile.spec.js.
- Removed brittle
- Updated generator metadata in
app.htmlto reflectSvelteKit 2.42.1. - Updated Node.js version in
.node-versionand.nvmrcto24.8.0. - Updated CSP endpoint section and footer in
README.md. - Updated JSDoc linting step and
sedsyntax inbuild-and-publish.ymlworkflow. - Updated
npmversion to11.6.0in GitHub Actions workflow files:build-and-publish.ymllighthouse.ymlplaywright.ymlpublish-test.ymltemplates/publish.template.yml
- Upgraded dependencies:
@eslint/compat^1.3.1→^1.3.2@eslint/js^9.32.0→^9.35.0@playwright/test^1.54.1→^1.55.0@sveltejs/adapter-netlify^5.1.0→^5.2.3@sveltejs/kit2.27.0→2.42.1@sveltejs/vite-plugin-svelte^6.1.0→^6.2.0@testing-library/jest-dom^6.6.4→^6.8.0browserslist^4.25.1→^4.26.2dompurify^3.2.6→^3.2.7eslint^9.32.0→^9.35.0eslint-plugin-jsdoc^52.0.2→^58.1.1eslint-plugin-svelte^3.11.0→^3.12.3globals^16.3.0→^16.4.0playwright^1.54.1→^1.55.0posthog-js^1.258.4→^1.266.0stylelint^16.23.0→^16.24.0svelte5.37.2→5.39.1svelte-check^4.3.0→^4.3.1svelte-eslint-parser^1.3.0→^1.3.2vite^7.0.6→^7.1.5
- Clarified CSP reporting setup in
README.md:- Explained relationship with external CSP reporting endpoint (
csp-endpointrepo). - Documented use of both
report-uri(legacy) andreport-to(modern, recommended). - Added example headers including
Report-Todefinition.
- Explained relationship with external CSP reporting endpoint (
- Deleted
src/routes/example.svx, which was unused and unneeded. - Removed
mdsvexfrom package.json, as it is unlikely to be used.
- Updated dependencies to address known vulnerabilities (notably
@sveltejs/kit,vite, and related plugins).
- Pinned
jsdomto26.1.0due to build incompatibility in27.x(cssstyleparsing error with Vite/Rollup).
1.16.0 - 2025-07-31
- Added
CODE_OF_CONDUCT.mdandCONTRIBUTING.mdto project root to provide instructions for contributing.
- Bumped version to
v1.16.0. - Updated generator metadata in
app.htmlto reflectSvelteKit 2.27.0. - Added
vercel.jsonto.gitignore. - Added additional rule overrides to
stylelint.config.jsto suppress unnecessarily strict linting errors- The errors were corrected and the rule overrides are currently commented out
- Updated
npmto11.5.2in the following files in.github/workflowsbuild-and-publish.ymllighthouse.ymlplaywright.ymlpublish-test.mltemplates/publish.template.yml
- Upgraded dependencies:
@eslint/js^9.31.0→^9.32.0@sveltejs/kit2.25.1→2.27.0@testing-library/jest-dom^6.6.3→^6.6.4eslint^9.31.0→^9.32.0eslint-plugin-jsdoc^51.4.1→^52.0.2posthog-js^1.257.0→^1.258.4stylelint^16.22.0→^16.23.0stylelint-config-recommended^16.0.0→^17.0.0svelte5.36.12→5.37.2typescript^5.8.3→^5.9.2vite^7.0.5→^7.0.6
- Corrected deprecated CSS usage throughout the project in the following files:
src/lib/components/Badges.sveltesrc/lib/components/Logo.sveltesrc/lib/components/layout/Footer.sveltesrc/lib/pages/LicenseContent.sveltesrc/lib/styles/css/default.csssrc/lib/styles/css/styles.csssrc/routes/consultation/+page.svelte
- Generated new
global.min.cssstylesheet with LightningCSS. - Resolved
svelte-checktype error inPGP key download endpointby replacing Node.jsBufferwith a standards-compliantUint8Arrayin theResponse()constructor.
1.15.4 - 2025-07-20
- Bumped version to
v1.15.4 - Updated "Copy SMS Code - OTP Helper" entry in
src/lib/data/fossData.jsto maintain visual consistency with previous "FOSS Spotlight" entries
1.15.3 - 2025-07-20
- New FOSS Spotlight entry: Copy SMS Code – OTP Helper
- Added
otp-helper.pngandotp-helper.webptosrc/img/posts - Imported image assets via
images.jsasotphelpPngandotphelpWbp
-
Bumped version to
v1.15.3 -
Updated Node.js version to
v24.4.1in.node-versionand.nvmrc -
Updated generator metadata in
app.htmlto reflectSvelteKit 2.25.1 -
Updated "Last Updated" timestamp on FOSS Spotlight to
2025-07-20 -
Updated
sitemap.xmlwith current post dates -
Upgraded dependencies:
@sveltejs/adapter-netlifyfrom^5.0.2to^5.1.0@sveltejs/kitfrom2.22.5to2.25.1@sveltejs/vite-plugin-sveltefrom^6.0.0to^6.1.0eslint-config-prettierfrom^10.1.5to^10.1.8eslint-plugin-jsdocfrom^51.3.4to^51.4.1eslint-plugin-sveltefrom^3.10.1to^3.11.0stylelintfrom^16.21.1to^16.22.0sveltefrom5.35.6to5.36.12svelte-checkfrom^4.2.2to^4.3.0svelte-eslint-parserfrom^1.2.0to^1.3.0vitefrom^7.0.4to^7.0.5
1.15.2 - 2025-07-12
- Added
Disallowdirectives tostatic/robots.txtfor stub routes:/consultation/links/posts
- Updated
README.mdto reflect the updated directory structure after removing thenetlify/directory.
1.15.1 - 2025-07-12
- Added
Report-Toheader insrc/hooks.server.jsto support modern CSP reporting
- Bumped project version to
1.15.1 - Updated CSP report URL in
src/hooks.server.jsto use external endpoint - Updated
sitemap.xmlto reflect latest site structure - Updated
.node-versionand.nvmrctov24.4.0 - Cleaned up
netlify.toml:- Removed
[[edge_functions]]block - Confirmed
ENV_MODEremains for internal tooling
- Removed
- Updated to latest versions:
@eslint/jsto^9.31.0@playwright/testto^1.54.1@sveltejs/kitto2.22.5@sveltejs/vite-plugin-svelteto6.0.0eslintto^9.31.0eslint-plugin-jsdocto^51.3.4playwrightto^1.54.1posthog-jsto^1.257.0stylelintto^16.21.1svelteto5.35.6viteto7.0.4
- Deleted
/netlify/edge-functions/andcsp-report.js(CSP report handling is now in its own project) - Removed
tests/unit/server/csp-report.test.jsfrom project, as CSP endpoint has been relocated
1.15.0 - 2025-07-01
redirect.jsutility to handle browser-aware redirects with fallback logic for Firefox.- Unit test for
redirect.jsundertests/unit/client/lib/utils/redirect.test.js. /consultationredirect route toutm.jsUTM-tracking logic.- Redirect from
/fossto/foss-spotlightin_redirects. scripts/testRedirect.jsto verify Netlify/SvelteKit trailing slash redirect behavior.test:redirectsscript in package.json to triggerscripts/testRedirects.js- Logic to suppress
rel="noopener noreferrer"on internal redirects inHeaderHome.svelteandHeaderDefault.svelte redirectflag to navigation metadata to distinguish internal redirect behavior inHeaderHome.svelteandHeaderDefault.svelte
- Bumped version to v1.15.0
- Restructured unit tests:
- Moved
purify.test.jstotests/unit/client/lib/utils/ - Moved
utm.test.jstotests/unit/client/lib/utils/ - Moved
unregisterServiceWorker.test.jstotests/unit/client/lib/utils/ - Moved
page.svelte.test.jstotests/unit/client/routes/ - Moved
checkEnv.test.js,checkVersions.test.js, andcsp-report.test.jstotests/unit/server/ - Moved
auditCoverage.test.jstotests/unit/server/internal/
- Moved
- Refactored
_redirectsfile:- Removed trailing slashes to match SvelteKit/Netlify conventions.
- Updated
RedirectPage.svelteto useredirectWithBrowserAwareness()for better cross-browser redirect behavior. - Refactored all relevant
+page.sveltefiles to remove local redirect timeouts and centralize logic inRedirectPage. - Updated
vitest.config.client.jsandvitest.config.server.jsto:- Reflect new directory structure
- Properly assign
jsdomfor client-side tests andnodefor server-side tests
/consultation,/contact,/links,/posts, and/privacy-rights+page.sveltefiles updated to capture UTM parameters in a privacy-preserving manner.- Moved inline styles from
RedirectPage.sveltetosrc/lib/styles/css/default.css, including@keyframes spinanimation used by.loading-spinner - Removed unnecessary
relattribute from internal links inAboutContent.svelte,LicenseContent.svelte, andPrivacyDashboard.svelte - Updated project README with revised directory structure reflecting separate client/server test folders.
- Upgraded dependencies:
globals^16.2.0→^16.3.0
- Firefox-specific issue where delayed
window.location.replace()triggered a new tab instead of redirecting in the same window — now handled by bypassing the delay in Firefox. - Prevented server-context tests from breaking due to
windowusage by scoping them to client-only environments.
head:flattenandhead:validatescripts in package.json, as the_headersfile has been deprecated
- Manual event capture for redirect pages using PostHog, with automatic UTM parameter extraction
- Utility function
getUTMParamsfor parsing UTM query values from URLs trackingEnablednamed export fromtrackingPreferences.jsfor cleaner consumption
- Bumped version to v1.14.3
- Refactored redirect logic in multiple pages to integrate UTM-aware analytics
- All redirect pages now consistently open in a new browser tab using
<a>fallback - Enhanced
utm.jslogic to support campaign identification for/contact,/links,/posts, and/privacy-rights - Updated
generatormetadata inapp.htmltoSvelteKit 2.22.2 - Modified
HomeContent.svelteto use app constant for blog link - Removed inline styles from redirect pages and integrated them into the main stylesheet
- Renamed "Data Sharing" section in Privacy Policy to "Legal Requests and Data Disclosure"
- Expanded the above section to strengthen users' legal rights and privacy protections
- Updated Privacy Policy effective date to June 30, 2025
- Reinstated filtering logic in
csp-report.jsto suppress low-value or noisy CSP violations - Resolved
ReferenceErrorinutm.test.jsby reordering mocked imports for$app/environmentand$app/storesto comply with Vitest's hoisting behavior
1.14.2 - 2025-06-30
- Added Node.js and npm environment checks to
build-and-publish.yml. - Added
.github/workflows/templates/publish.template.ymlfor reuse in other org repos. - JSDoc linting now outputs violation details for better visibility during CI checks
- Version bumped to v1.14.2
- Corrected naming of
check-security-txt-expiry.yml - Updated Node version reference in
.node-versionand.nvmrcto24.3.0 - Aligned environment context (
ENV_MODE: ci) incheck-codeqlworkflow to matchbuild-and-publish.ymlstandardization - Updated Node to
24and npm to11.4.2across multiple workflows (build-and-publish.yml,lighthouse.yml,playwright.yml, andpublish-test.yml) for version alignment - Upgraded dependencies:
@eslint/compat^1.3.0 → ^1.3.1@eslint/js^9.29.0 → ^9.30.0@lhci/cli^0.15.0 → ^0.15.1@playwright/test^1.53.0 → ^1.53.2@sveltejs/kit2.21.5 → 2.22.2@vitest/coverage-v8^3.2.3 → ^3.2.4browserslist^4.25.0 → ^4.25.1eslint^9.29.0 → ^9.30.0eslint-plugin-jsdoc^51.0.1 → ^51.3.1eslint-plugin-svelte^3.9.2 → ^3.10.1playwright^1.53.0 → ^1.53.2posthog-js^1.253.4 → ^1.256.0prettier^3.5.3 → ^3.6.2stylelint^16.20.0 → ^16.21.0svelte5.34.3 → 5.34.9svelte-check^4.2.1 → ^4.2.2vitest^3.2.3 → ^3.2.4
- Updated
check-security-txt-expiry.ymlto use correct path forsecurity.txt(now looks instatic/.well-known/)
1.14.1 - 2025-06-16
- Introduced
.github/workflows/publish-test.yml, a standalone workflow to safely simulatenpm publishwithout publishing. - Added commands to display Node.js and npm versions for visibility and troubleshooting in all relevant jobs.
- Updated Node.js engine to
24to match the specified engine constraints inpackage.json. - Reordered
npm cistep to follow Node.js and npm setup to prevent version mismatches during simulation steps. - Refactored
build-and-publish.ymlto usegit archivefor artifact preparation and aligned it with a tested publishing flow. - Removed
.npmrctoken-based authentication in favor of environment secrets to avoid credential conflicts.
1.14.0 - 2025-06-16
- Commented out registry and auth lines in
.npmrc, retaining onlyengine-strict=trueto streamline CI token handling and prevent conflicts
- Temporarily reverted
build-and-publish.ymlto prior, working workflow to confirm publish capability before attempting archive-based improvements
1.13.8 - 2025-06-16
- Added
cryptomator.pngandcryptomator.webpimages for use in the FOSS Spotlight route - Imported assets via image utility (
src/lib/images.js) ascryptomPngandcryptomWbp - Introduced
cryptomatorentry tofossData.js - Added
COMMIT_GUIDE.mdto help standardize commit message formatting across contributions
- Updated
build-and-publish.ymlto use an allowlist-based upload approach, explicitly including root-level files and directories (.github/,.vscode/,netlify/,scripts/,src/,static/, andtests/) - Updated meta
authorfield inapp.htmltoScott Lopez - Version bumped to v1.13.8
- Upgraded dependencies:
postcssupdated from^8.5.5→^8.5.6posthog-jsupdated from^1.252.1→^1.253.4
1.13.7 - 2025-06-15
- Added pre-publish steps in
build-and-publish.ymlto recursively list all files and top-level directory contents for auditing - Version bumped to v1.13.7
1.13.6 - 2025-06-15
- Introduced
.github/workflows/check-codeql.ymlreusable workflow to validate successful CodeQL analysis during CI - Added
.github/workflows/templates/check-codeql.template.ymlfor documentation and workflow templating purposes
- Replaced inline
check-codeqljob in.github/workflows/build-and-publish.ymlwith call to reusable workflow - Updated
.node-versionand.nvmrcfrom24.1.0→24.2.0to reflect upgraded Node.js binary - Replaced
ℹ️symbol with🛈inbootstrap.local.shto improve clarity in terminals - Version bumped to v1.13.6
- Upgraded dependencies:
posthog-jsupdated from1.252.0→1.252.1
1.13.5 - 2025-06-14
- Introduced
links/andposts/redirect routes for improved navigation and backward compatibility - Added
proton-imgandqrcode-imgutility classes to global stylesheet to eliminate inline styles inPGPContent.svelte - Set
decoding="sync"andloading="eager"on the first QR code image and the Proton Mail badge to improve perceived load performance and visual smoothness - Added
rel="noopener noreferrer"support toRedirectPage.svelte, now used by the new/linksand/postsroutes - Revised
obtainium-imgclass in stylesheets to improve Obtainium image rendering on mobile and enhance overall clarity - Added a new
scripts/bootstrap.local.shscript to streamline local development setup, including OS detection and Playwright dependencies - Added a new “Environment Requirements” Wiki page to consolidate Node version constraints, setup instructions, and local dev tooling guidance
- Replaced the detailed "Getting Started" section in
README.mdwith a concise reference to the Wiki and a minimal quickstart snippet
- Promoted Node.js and npm version enforcement details from README to the Wiki for centralized documentation
- Removed low-priority CSP report filtering in
csp-report.jsto allow all violations to be logged and reviewed - Reordered CSS rules to resolve
no-descending-specificitywarnings triggered by focus selectors - Updated
HeaderHome.svelteandHeaderDefault.svelteto usePAGE.SELFandPAGE.BLANKconstants for target behavior - Updated
AboutContent.svelteto use application constant instead of hardcoded value - Removed unused
COMPANY_INFOdestructured constant fromPGPContent.svelte - Upgraded dependencies:
svelteupdated from5.34.1→5.34.3
- Fixed schema warning in GitHub issue template by replacing
assignees: []withassignees: SunDevil311 - Version bumped to v1.13.5
- Restored consistent
:visitedlink color by forcingcolor: #cba557 !importantacross all visited interaction states - Prevented gold-on-gold text issue when focusing visited links
- Rolled back enhanced
:focus-visiblestyles to resolve flicker and override conflicts during fast navigation
- Removed unneeded demo unit test (
demo.test.js) fromtests/unit
1.13.4 - 2025-06-13
- Version bumped to v1.13.4
- Replaced legacy detached signature file
security.txt.ascwith a newsecurity.txt.sigformat for consistency and clarity
1.13.3 - 2025-06-13
- Upgraded dependencies:
@eslint/jsupdated from^9.28.0→^9.29.0@sveltejs/kitupdated from2.21.4→2.21.5eslintupdated from^9.28.0→^9.29.0
- Updated
generatormeta tag inapp.htmlto reflectSvelteKit 2.21.5 - Added note to
.well-known/security.txtclarifying detached signature availability - Replaced "Recommended Toolchain," "Tooling Configuration," and "Available Scripts" sections in
README.mdwith a new “Development Reference” section linking to the Wiki - Removed
static/styles/directory, as the stylesheets are now dynamically imported - Removed stylesheets from
static/stylesfrom the Service Worker cache configuration - Removed
scripts/flattenHeaders.jsandscripts/validateHeader.js, which were originally designed for the deprecated_headersfile - Version bumped to v1.13.3
1.13.2 - 2025-06-12
- Version bumped to v1.13.2
- Updated
a:visitedcolor to#cba557for improved contrast and aesthetics - Refined
a:activecolor to#e0b000for clearer interaction feedback - Confirmed all link colors meet WCAG AA contrast standards against
#191919background
1.13.1 - 2025-06-12
- Modularized
ObtainiumBlock.sveltecomponent for cleaner integration inFossItemContent.svelte heliboard.jsonObtainium configuration file for download- Dark mode-compatible styling for Obtainium blocks in the main stylesheet
- Version bumped to v1.13.1
- Removed unnecessary PostHog preload script from
app.html - Removed
script-src-elem 'self' 'unsafe-inline'from CSP policy - Replaced existing Obtainium images with optimized versions
- Revised
<title>metadata for the root route - Commented out debugging
console.logstatements in the following files:Badges.svelteLegalNav.svelteMetaTags.svelteFooter.svelteFossItemContent.svelteFossContent.svelteHomeContent.svelteLicenseContent.svelteTermsConditionsContent.svelte
- Revised type definitions in
src/lib/types/fossTypes.js- Added optional
obtainiumproperty toFossItem - Removed unused
hideLabelsproperty
- Added optional
- Refactored
FossItemContent.svelteto better support and display Obtainium download links and metadata - Updated
README.mdto reflect the correct location of thestatic/pgp/directory - Revised the
hooks.server.jssection inREADME.mdto improve accuracy and reflect current CSP behavior - Updated
tests/e2e/app.spec.jsto assert the correct title for the root route - Upgraded dependencies:
posthog-js^1.250.2→^1.252.0eslint-plugin-jsdoc^50.8.0→^51.0.1
1.13.0 - 2025-06-11
- Introduced
/pgproute to publish OpenPGP contact information, download links, and QR codes - Added
.well-known/humans.txtto document project authorship - Added
.well-known/security.txtto define the official security contact and vulnerability disclosure policy - Linked OpenPGP keys to external directories for validation (e.g. keys.openpgp.org)
- Added new GitHub Actions workflow:
check-security-txt-expiry.ymlto monitorsecurity.txtexpiration
- Enforced
"singleQuote": truein.prettierrcand formatted the codebase using Prettier - Updated
src/service-worker.jsto excludesecurity.txt.ascfrom caching - CSP policy updated to allow
clipboard-writefor improved UX on PGP fingerprint buttons - Clarified that addresses under the
s.neteng.prodomain are powered by Proton Mail and support native E2EE - Revised
SECURITY.mdandsecurity.txtwith accurate Proton Mail usage notes and PGP policy references
- Legacy reference to a "coming soon" PGP section in
SECURITY.md(now live and linked)
1.12.9 - 2025-06-11
- Added
check-security-txt-expiry.ymlworkflow to check.well-known/security.txtexpiration and warn if close to expiring - Added
humans.txtandsecurity.txtto.well-known/directory - Added
src/lib/components/CodeBlock.sveltecomponent for improved inline formatting control - Updated sitemap.xml to include
.well-known/routes and the/pgproute - Added link to OpenPGP results for
security@s.neteng.proon the/pgproute - Added support for copy-to-clipboard feedback on PGP fingerprint buttons
- Added detached signature (
security.txt.asc) for.well-known/security.txt, signed with thesecurity@s.neteng.proPGP key
- Version bump to
v1.12.9inpackage.json - Corrected the name of
dnt-policy.txtfromdnt-policy-1.0.txt - Updated
src/service-worker.jsto:- Reflect correct
.well-known/dnt-policy.txtreference - Exclude
.well-known/security.txt.ascfrom caching
- Reflect correct
- Applied line breaks to comment header in
jsconfig.template.jsoncto fix formatting - Minor revision to spreadsheet display and fingerprint formatting for improved mobile responsiveness
- Revised
.github/SECURITY.md:- Removed note about “PGP section coming soon to the wiki” (now live)
- Clarified Proton Mail use for
s.neteng.proaddresses, while preserving support guidance for others - Streamlined vulnerability reporting section for clarity and correctness
- Updated Content Security Policy (CSP) header to allow
clipboard-writepermission - Added Proton Mail usage note to
/pgproute UI fors.neteng.prodomain only - Added equivalent Proton Mail usage comment to
.well-known/security.txt - Upgraded dependencies:
@eslint/compat^1.2.9→^1.3.0eslint-plugin-jsdoc^50.7.1→^50.8.0postcss^8.5.4→^8.5.5posthog-js^1.250.1→^1.250.2svelte5.33.19→5.34.1
1.12.8 - 2025-06-11
- Created
/pgproute with+page.svelte,+page.server.js, and supporting structure. - Added
src/lib/pages/PGPContent.sveltefor rendering PGP key information. - Dynamic routing with
src/routes/pgp/[key]/+server.jsfor serving.ascfiles with correct MIME type (application/pgp-keys). - Support for serving QR code images statically in
/pgpand dynamically in/about. - Added WebP versions of QR code images in
static/pgp/andsrc/lib/img/qr/. - Set up dynamic import for QR images in
/aboutroute viasrc/lib/images.js. - Enhanced accessibility styles for focus-visible states on links.
- Improved copy-to-clipboard buttons for PGP fingerprints.
- Defined
ContactAssetstypedef and expandedpgpKeysdata structure for strict typing. - README updated with new section:
static/pgp/Directory Structure.
- Modified
/aboutroute to reference/pgpand use dynamic WebP images for PGP keys. - Adjusted
src/lib/meta.jsto include metadata for the/pgproute. - Canonical links in
static/bin/CC-BY-4.0.htmlandstatic/bin/COPYING.htmlupdated to reflect new paths. - Service worker updated to exclude
.ascfiles in/pgp, while continuing to cache QR image assets. - Moved license and binary files from
static/assetstostatic/bin. - File paths updated on the
/licenseroute to reflect the new/bin/licenselocation. - Updated sitemap.xml.
- Updated
.prettierignoreto ignorestatic/bin/license. - Updated LinkSheet download in
FossItemContent.svelteto referencebin/linksheet.json. - Added dynamic
lsheetDlconstant infossData.js. - Updated
TermsConditionsContent.svelteto point tobin/consulting-terms.pdf. - Updated
LicenseContent.svelteto:- View HTML license file.
- Use
downloadattribute for all other formats.
- Updated
generatormeta tag to reflectSvelteKit 2.21.4 - Upgraded dependencies:
@playwright/testupdated from^1.52.0→^1.53.0@sveltejs/kitupdated from2.21.3→2.21.4eslint-plugin-svelteupdated from^3.9.1→^3.9.2playwrightupdated from^1.52.0→^1.53.0posthog-jsupdated from^1.249.5→^1.250.1svelteupdated from5.33.18→5.33.19
- Resolved TypeScript and JSDoc typing errors in
AboutContent.svelteandPGPContent.svelte. - Verified fallback behavior on
/pgp/[key]for unknown files:.ascfiles return "File not found".- All others fall through to 404.
- Adjusted
function copy(text)with explicit JSDoc type for parameter. - Removed stale references to deleted assets in service worker config.
1.12.7 - 2025-06-09
- Permissions in
playwright.ymlreduced tocontents: readto align with least-privilege practices. - Renamed "Upload Playwright Report" step for clarity and naming consistency.
- Patch version bumped to v1.12.7 to reflect post-tag changes.
- Explicit
GITHUB_TOKENpermissions added to.github/workflows/build-and-publish.ymlto satisfy GitHub policy while preserving least-privilege. - Reviewed and reduced permissions in
playwright.ymltocontents: readas no elevated scopes are currently required. - Confirmed
auto-assign.ymluses appropriate scopes for issue/PR auto-assignment (issues: write,pull-requests: write,contents: read). - Validated that
dependency-review.ymlandbackup-branch.ymlare properly scoped; no changes required.
1.12.6 - 2025-06-09
- Enabled non-blocking Lighthouse CI budget assertions to track performance/resource regressions without blocking the build.
- Added GitHub Actions step to annotate PRs with budget-related audit failures and post a markdown summary comment.
- Introduced a dedicated
Authenticate GitHub CLIstep in the Lighthouse workflow to ensure proper auth for comment posting. - Added
/legal,/legal/, and/legal/*redirects to Netlify_redirectsfile, pointing to/license. - Added
/privacy-policy/and/privacy-policy/*redirects to match existing/privacy-policyroute. - Created
scripts/openReport.js, a cross-platform Node.js utility for opening HTML coverage reports for client and server test runs. Executed viacoverage:clientandcoverage:serverscripts inpackage.json. - Added
coverage:client,coverage:server, andcoverage:openscripts topackage.jsonto simplify access to generated test coverage reports from the CLI.
- Bumped patch version to
v1.12.6. - Updated Lighthouse CI workflow to upload the entire
.lighthouseci/directory as a single artifact instead of renaming individual files. - Updated ESLint config (
eslint.config.mjs) to ignore**/playwright-report/**and**/test-results/**. - Updated
lint:mdscript inpackage.jsonto excludeplaywright-report/andtest-results/from markdownlint. - Added
playwright-report/andtest-results/to.stylelintignoreto suppress stylelint noise on generated reports. - Upgraded
@lhci/clifromv0.14.0tov0.15.0. - Upgraded
@vitest/coverage-v8fromv3.2.2tov3.2.3. - Upgraded
posthog-jsfromv1.249.4tov1.249.5. - Upgraded
vitestfromv3.2.2tov3.2.3.
-
Updated
README.mdwith improved context and phrasing around the CHANGELOG reference. -
Added
CHANGELOG.mdto the documented project structure with a descriptive label:├── CHANGELOG.md # Chronological record of notable project changes
- Updated Lighthouse CI annotation step to explicitly select only valid Lighthouse report files (e.g.,
*.report.json,lhr-*.json) and ignoreassertion-results.json, which causedjqparsing errors during CI runs. - Scoped Lighthouse assertions in
.lighthouserc.cjstoresource-summaryonly, preventing unwanted failures from default performance audits. - Resolved malformed PR comment formatting in the Lighthouse GitHub Actions workflow by replacing Markdown tables with plain-text bullet lists.
- Confirmed that
Authenticate GitHub CLIis not needed inbuild-and-publish.yml, as only thecheck-codeqljob uses the GitHub CLI and is already authenticated. - Verified that
scripts/openReport.jsdoes not require unit testing, as it performs side-effect-only CLI actions. Linting and manual testing are sufficient.
1.12.5 - 2025-06-08
- Added
squirclesection tosrc/lib/data/fossData.js. - Added Squircle CE images to
src/lib/img/and imported them via the image utility (src/lib/images.js).
- Quoted
nameandsteps.namefields inauto-assign.ymlanddependency-review.ymlto prevent potential YAML parsing issues. - Replaced
GITHUB_TOKENwithNWPRO_GPRin thebuild-and-publish.ymlworkflow. - Upgraded
sveltetov5.33.18and@sveltejs/kittov2.21.3. - Updated the
generatormeta tag inapp.htmlto reflect the new@sveltejs/kitversion. - Updated "Last Updated" date in
FossContent.svelteto reflect the Squircle CE post addition. - Revised page modification dates in
sitemap.xmlfor FOSS Spotlight, Privacy Policy, and Legal, Licensing, and Copyright.
- Removed unused
GITHUB_TOKENpermissions frombuild-and-publish.yml. - Removed the unnecessary "Authenticate GitHub CLI" step from
build-and-publish.yml.
1.12.4 - 2025-06-05
- Introduced
.md-smart-quotes.jsscript for use with markdownlint to flag "smart quotes" in Markdown files.
- Cleaned up
IGNORE_PATHSinsrc/service-worker.js: removed thestatic/docs/entry, as the directory no longer exists. - Upgraded development dependencies:
@vitest/coverage-v8posthog-jsvitest
- Corrected the "Effective Date" in
LICENSE.md. - Refactored
.markdownlint.jsoncinto.markdownlint.mjsto support the custom linting script.
- Removed the entire
static/docs/directory; its contents have been migrated to the Wiki.
1.12.3 - 2025-06-04
static/docs/pgp.md,pgp-win.md, andpgp-email.mdadded for reference.
These files have been temporarily stored until they can be migrated to the wiki.
- Added the new Markdown files in
static/docsto theservice-worker.jscache ignore list.
LicenseContentcomponent updated to reflect the correct "Effective Date."
1.12.1 – 2025-06-04
- Standardized issue templates and contact links in
.github/ISSUE_TEMPLATE/config.ymlfor consistent triage experience across repositories. - Shared health files (
SUPPORT.md,CONTRIBUTING.md,SECURITY.md) retained in.githubfor fallback visibility. - Centralized issue submission and triage via main repository (
netwk-pro.github.io) for all public projects.
- Updated
.githubstructure to delegate issue creation to the main repository only, simplifying user flow and internal tracking. - Reorganized public repositories to override the default
.githubissue config selectively as needed.
- Removed unused local issue templates from
.githubto prevent template duplication in dependent repositories.
1.12.0 – 2025-06-04
- Initial scaffolding for tracking preferences store using SvelteKit writable stores.
PrivacyDashboardandPrivacyContentcomponents updated to bind to the reactive tracking store.- Derived store for automatic re-consent prompts (
remindUserToReconsent). - Consent cookie logic added for first-time and returning users.
- First iteration of PostHog integration.
sr-onlyutility class added toglobal.min.cssfor accessibility improvements.- Support disclaimer added to Legal, Copyright, and Licensing section.
- Privacy dashboard UI elements and opt-in interface.
- Migrated tracking preference logic from
utils/privacy.jsandutils/trackingCookies.jsto a store-based architecture. - Updated
posthog.jsto consume newtrackingPreferencesstore. - Improved inline documentation for Netlify
adapter-edgesettings.
- Deprecated
shouldTrackUser()logic and legacy cookie checks.