From c5dffb37c8e90f2c408c347d0188243e7fcfc0a9 Mon Sep 17 00:00:00 2001 From: linusdevx Date: Thu, 25 Jun 2026 13:54:41 +0530 Subject: [PATCH 1/4] Add humans.txt, llms.txt, security.txt; fix license to AGPL-3.0 in JSON-LD - index.html: correct stale MIT license refs to AGPL-3.0 (JSON-LD + FAQ); tighten applicationSubCategory/operatingSystem/browserRequirements; add softwareRequirements; link author->humans.txt and alternate atom feed for GitHub releases - vite.config.js: copy humans.txt, llms.txt, and .well-known/security.txt into dist/ on build - humans.txt: standard /* TEAM | THANKS | SITE */ block with site name + URL - llms.txt: llms.txt-format index of repo docs for LLM crawlers - .well-known/security.txt: RFC 9116 security contact pointing at GitHub security advisories --- .well-known/security.txt | 9 +++++++++ humans.txt | 20 ++++++++++++++++++++ index.html | 13 ++++++++----- llms.txt | 26 ++++++++++++++++++++++++++ vite.config.js | 7 +++++++ 5 files changed, 70 insertions(+), 5 deletions(-) create mode 100644 .well-known/security.txt create mode 100644 humans.txt create mode 100644 llms.txt diff --git a/.well-known/security.txt b/.well-known/security.txt new file mode 100644 index 0000000..80b9940 --- /dev/null +++ b/.well-known/security.txt @@ -0,0 +1,9 @@ +# XSLTDebugX security contact (RFC 9116) +# See SECURITY.md for full security posture and disclosure policy. + +Contact: https://github.com/linusdevx/XSLTDebugX/security/advisories/new +Expires: 2027-06-25T00:00:00.000Z +Preferred-Languages: en +Canonical: https://xsltdebugx.pages.dev/.well-known/security.txt +Policy: https://github.com/linusdevx/XSLTDebugX/blob/main/SECURITY.md +Acknowledgments: https://github.com/linusdevx/XSLTDebugX/security/advisories diff --git a/humans.txt b/humans.txt new file mode 100644 index 0000000..16fe6ca --- /dev/null +++ b/humans.txt @@ -0,0 +1,20 @@ +/* TEAM */ +Creator: Sunil Pharswan +Contact: github.com/linusdevx +LinkedIn: linkedin.com/in/sunilph/ +From: India + +/* THANKS */ +Saxon-JS team — Saxonica, for the XSLT 3.0 / XPath 3.1 engine that powers this tool +Monaco Editor — Microsoft, for the embedded code editor +Lucide — for the icon set +SAP Community — for years of CPI knowledge that shaped what this tool needed to do + +/* SITE */ +Site: XSLTDebugX +URL: https://xsltdebugx.pages.dev/ +Last update: 2026-06-25 +Standards: HTML5, CSS3, ES2020, XSLT 3.0, XPath 3.1 +Components: Saxon-JS 2, Monaco Editor 0.44, Lucide Icons, pako +Software: hand-written vanilla JS, Vite + esbuild build, Cloudflare Pages +License: AGPL-3.0 diff --git a/index.html b/index.html index 0c73aac..e601c69 100644 --- a/index.html +++ b/index.html @@ -42,6 +42,8 @@ + + @@ -70,9 +72,10 @@ "url": "https://xsltdebugx.pages.dev/", "description": "Free online XSLT 3.0 debugger and XPath 3.1 IDE for SAP Cloud Integration (CPI). Debug and test XSLT transformations with headers, properties, and extension functions — no deployment needed.", "applicationCategory": "DeveloperApplication", - "applicationSubCategory": "XML/XSLT Development Tool", - "operatingSystem": "Any (browser-based)", - "browserRequirements": "Requires a modern browser with JavaScript enabled", + "applicationSubCategory": "IDE", + "operatingSystem": "Any (modern browser)", + "browserRequirements": "Requires a modern browser with ES2020 and WebAssembly support (Chrome, Firefox, Safari, Edge).", + "softwareRequirements": "Saxon-JS 2 (bundled), Monaco Editor (bundled). No installation required.", "softwareVersion": "1.0", "datePublished": "2025-01-01", "dateModified": "2026-06-03", @@ -106,7 +109,7 @@ "keywords": "XSLT debugger, XSLT IDE online, XPath tester, SAP CPI XSLT, SAP Cloud Integration, XSLT 3.0, XPath 3.1, online XSLT editor, XSLT testing tool, XML editor, Saxon-JS, XSLT playground", "inLanguage": "en", "isAccessibleForFree": true, - "license": "https://opensource.org/licenses/MIT", + "license": "https://www.gnu.org/licenses/agpl-3.0.html", "sameAs": "https://github.com/linusdevx/XSLTDebugX" } @@ -130,7 +133,7 @@ "name": "Is XSLTDebugX free to use?", "acceptedAnswer": { "@type": "Answer", - "text": "Yes. XSLTDebugX is free, open-source (MIT-licensed), and requires no account. It runs entirely in your browser — no XML, XSLT, or message data is sent to any server." + "text": "Yes. XSLTDebugX is free, open-source (AGPL-3.0 licensed), and requires no account. It runs entirely in your browser — no XML, XSLT, or message data is sent to any server." } }, { diff --git a/llms.txt b/llms.txt new file mode 100644 index 0000000..702980b --- /dev/null +++ b/llms.txt @@ -0,0 +1,26 @@ +# XSLTDebugX + +> Browser-based IDE for XSLT 3.0 and XPath 3.1, designed for SAP Cloud +> Integration (CPI) developers. Simulates the CPI runtime (headers, properties, +> cpi:setHeader / cpi:setProperty extension functions) so transformations can be +> tested locally before deploying to an iFlow. Runs entirely client-side using +> Monaco Editor and Saxon-JS 2. No installation. No account. No data leaves the +> browser. Free and open source (AGPL-3.0). + +## Core +- [Live app](https://xsltdebugx.pages.dev/): the IDE — XSLT mode and XPath mode share a workspace; press Ctrl+Enter to run. +- [GitHub repository](https://github.com/linusdevx/XSLTDebugX): source, issues, releases. +- [README](https://github.com/linusdevx/XSLTDebugX#readme): features, screenshots, quick start. + +## Documentation +- [Architecture](https://github.com/linusdevx/XSLTDebugX/blob/main/.github/docs/ARCHITECTURE.md): module layout, build pipeline, critical constraints. +- [CPI simulation deep-dive](https://github.com/linusdevx/XSLTDebugX/blob/main/.github/docs/TRANSFORM.md): how the cpi: namespace is rewritten to js: at runtime for Saxon-JS interception. +- [Features reference](https://github.com/linusdevx/XSLTDebugX/blob/main/.github/docs/reference/features.md): 200+ features with file locations. +- [Examples catalog](https://github.com/linusdevx/XSLTDebugX/blob/main/.github/docs/reference/examples-data.md): 61 built-in examples across 6 categories. +- [Development guide](https://github.com/linusdevx/XSLTDebugX/blob/main/.github/docs/DEVELOPMENT.md): local setup, browser debugging. +- [Testing guide](https://github.com/linusdevx/XSLTDebugX/blob/main/.github/docs/TESTING.md): Playwright E2E patterns. + +## Optional +- [Contributing](https://github.com/linusdevx/XSLTDebugX/blob/main/CONTRIBUTING.md) +- [Security policy](https://github.com/linusdevx/XSLTDebugX/blob/main/SECURITY.md) +- [License (AGPL-3.0)](https://github.com/linusdevx/XSLTDebugX/blob/main/LICENSE) diff --git a/vite.config.js b/vite.config.js index 3011d4f..3cf1b56 100644 --- a/vite.config.js +++ b/vite.config.js @@ -128,6 +128,13 @@ export default defineConfig({ if (existsSync('favicon-192.png')) copyFileSync('favicon-192.png', 'dist/favicon-192.png'); if (existsSync('site.webmanifest')) copyFileSync('site.webmanifest', 'dist/site.webmanifest'); if (existsSync('robots.txt')) copyFileSync('robots.txt', 'dist/robots.txt'); + if (existsSync('llms.txt')) copyFileSync('llms.txt', 'dist/llms.txt'); + if (existsSync('humans.txt')) copyFileSync('humans.txt', 'dist/humans.txt'); + // RFC 9116 security.txt — must be served from /.well-known/ + if (existsSync('.well-known/security.txt')) { + mkdirSync('dist/.well-known', { recursive: true }); + copyFileSync('.well-known/security.txt', 'dist/.well-known/security.txt'); + } if (existsSync('og-image.png')) copyFileSync('og-image.png', 'dist/og-image.png'); if (existsSync('screenshot.png')) copyFileSync('screenshot.png', 'dist/screenshot.png'); From cf89f7d206fbd6510c4216fdaf34fa94697820f6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 5 Jul 2026 23:40:29 +0530 Subject: [PATCH 2/4] chore(deps-dev): bump @playwright/test in the dev-minor-and-patch group (#73) Bumps the dev-minor-and-patch group with 1 update: [@playwright/test](https://github.com/microsoft/playwright). Updates `@playwright/test` from 1.61.0 to 1.61.1 - [Release notes](https://github.com/microsoft/playwright/releases) - [Commits](https://github.com/microsoft/playwright/compare/v1.61.0...v1.61.1) --- updated-dependencies: - dependency-name: "@playwright/test" dependency-version: 1.61.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-minor-and-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 24 ++++++++++++------------ package.json | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 86b23ec..88408e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "AGPL-3.0-or-later", "devDependencies": { - "@playwright/test": "^1.61.0", + "@playwright/test": "^1.61.1", "http-server": "^14.1.1", "vite": "^6.0.0" } @@ -457,13 +457,13 @@ } }, "node_modules/@playwright/test": { - "version": "1.61.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.61.0.tgz", - "integrity": "sha512-cKA5B6lpFEMyMGjxF54QihfYpB4FkEGH+qZhtArDEG+wezQAJY8Pq6C7T1SjWz+FFzt3TbyoXBQYk/0292TdJA==", + "version": "1.61.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.61.1.tgz", + "integrity": "sha512-8nKv6+0RJSL9FE4jYOEGXnPeM/Hg12qZpmqzZjRh3qM0Y7c3z1mrOTfFLids72RDQYVh9WpLEfR5WdpNX4fkig==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright": "1.61.0" + "playwright": "1.61.1" }, "bin": { "playwright": "cli.js" @@ -1392,13 +1392,13 @@ } }, "node_modules/playwright": { - "version": "1.61.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.61.0.tgz", - "integrity": "sha512-Z+7BeeqQPRRzklHsVFP4KTGIyMxKUmfeRA4WisM6G3/XW6nwGeX6fX9qYaDa+CiUqpOkb2f6X3nar05R3kSuJQ==", + "version": "1.61.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.61.1.tgz", + "integrity": "sha512-DWnY5o3YbLWK4GovuAVwpqL+1VwGNdUGrRr++8j8PtQQzvAVZUIMjKQ90fY689sEJZJBbZVw1rXaOKSTitkzPQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.61.0" + "playwright-core": "1.61.1" }, "bin": { "playwright": "cli.js" @@ -1411,9 +1411,9 @@ } }, "node_modules/playwright-core": { - "version": "1.61.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.61.0.tgz", - "integrity": "sha512-caX7TrY3Ml6egyDX0WUcTHDxodl/b51y5wJOdCEA36QviK/s2g081hvmGs8eaE3DWb6NYZQ6BjO/QkNRPenoPA==", + "version": "1.61.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.61.1.tgz", + "integrity": "sha512-h7Qlt6m4REp25qvIdvbDtVmD4LqVXfpRxhORv9L0jzETM05p4fuPJ3dKyuSXQxDSbXnmS79HAgi9589lGSpLkg==", "dev": true, "license": "Apache-2.0", "bin": { diff --git a/package.json b/package.json index 913d0b1..2f115e1 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "test:e2e:headed": "playwright test --headed --project=chromium" }, "devDependencies": { - "@playwright/test": "^1.61.0", + "@playwright/test": "^1.61.1", "http-server": "^14.1.1", "vite": "^6.0.0" } From a384847fb7bdff53c2cabb55245d33f332921ccd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jul 2026 17:06:25 +0530 Subject: [PATCH 3/4] chore(deps): bump the actions-minor-and-patch group with 3 updates (#75) Bumps the actions-minor-and-patch group with 3 updates: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action). Updates `github/codeql-action/init` from 3.36.2 to 3.36.3 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/dd903d2e4f5405488e5ef1422510ee31c8b32357...411c4c9a36b3fca4d674f06b6396b2c6d23522c6) Updates `github/codeql-action/analyze` from 3.36.2 to 3.36.3 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/dd903d2e4f5405488e5ef1422510ee31c8b32357...411c4c9a36b3fca4d674f06b6396b2c6d23522c6) Updates `github/codeql-action/upload-sarif` from 3.36.2 to 3.36.3 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/dd903d2e4f5405488e5ef1422510ee31c8b32357...411c4c9a36b3fca4d674f06b6396b2c6d23522c6) --- updated-dependencies: - dependency-name: github/codeql-action/init dependency-version: 3.36.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions-minor-and-patch - dependency-name: github/codeql-action/analyze dependency-version: 3.36.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions-minor-and-patch - dependency-name: github/codeql-action/upload-sarif dependency-version: 3.36.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions-minor-and-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql.yml | 4 ++-- .github/workflows/scorecard.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 99c7b36..8d1021e 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -34,7 +34,7 @@ jobs: uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - name: Initialize CodeQL - uses: github/codeql-action/init@dd903d2e4f5405488e5ef1422510ee31c8b32357 # v3.36.2 + uses: github/codeql-action/init@411c4c9a36b3fca4d674f06b6396b2c6d23522c6 # v3.36.3 with: languages: ${{ matrix.language }} queries: security-and-quality @@ -47,6 +47,6 @@ jobs: - dist/** - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@dd903d2e4f5405488e5ef1422510ee31c8b32357 # v3.36.2 + uses: github/codeql-action/analyze@411c4c9a36b3fca4d674f06b6396b2c6d23522c6 # v3.36.3 with: category: "/language:${{ matrix.language }}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index e658b9d..883d4c5 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -45,6 +45,6 @@ jobs: retention-days: 5 - name: Upload to code-scanning - uses: github/codeql-action/upload-sarif@dd903d2e4f5405488e5ef1422510ee31c8b32357 # v3.36.2 + uses: github/codeql-action/upload-sarif@411c4c9a36b3fca4d674f06b6396b2c6d23522c6 # v3.36.3 with: sarif_file: results.sarif From 12a4d8d26c692dd72dd1a1e7388f016402896d2a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jul 2026 08:14:00 +0000 Subject: [PATCH 4/4] chore(deps-dev): bump @playwright/test in the dev-minor-and-patch group Bumps the dev-minor-and-patch group with 1 update: [@playwright/test](https://github.com/microsoft/playwright). Updates `@playwright/test` from 1.61.1 to 1.62.0 - [Release notes](https://github.com/microsoft/playwright/releases) - [Commits](https://github.com/microsoft/playwright/compare/v1.61.1...v1.62.0) --- updated-dependencies: - dependency-name: "@playwright/test" dependency-version: 1.62.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dev-minor-and-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 30 +++++++++++++++--------------- package.json | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index 88408e0..b7b6813 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "AGPL-3.0-or-later", "devDependencies": { - "@playwright/test": "^1.61.1", + "@playwright/test": "^1.62.0", "http-server": "^14.1.1", "vite": "^6.0.0" } @@ -457,19 +457,19 @@ } }, "node_modules/@playwright/test": { - "version": "1.61.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.61.1.tgz", - "integrity": "sha512-8nKv6+0RJSL9FE4jYOEGXnPeM/Hg12qZpmqzZjRh3qM0Y7c3z1mrOTfFLids72RDQYVh9WpLEfR5WdpNX4fkig==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.62.0.tgz", + "integrity": "sha512-9zOJ6ZQRAena31MpOH9VSzIz8Ou3YJ/wtY/eQm5T2uhfhG7/U3COrMS8xOtUrZrp9OgdmzEnIYODye3nY1VqzA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright": "1.61.1" + "playwright": "1.62.0" }, "bin": { "playwright": "cli.js" }, "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/@rollup/rollup-android-arm-eabi": { @@ -1392,35 +1392,35 @@ } }, "node_modules/playwright": { - "version": "1.61.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.61.1.tgz", - "integrity": "sha512-DWnY5o3YbLWK4GovuAVwpqL+1VwGNdUGrRr++8j8PtQQzvAVZUIMjKQ90fY689sEJZJBbZVw1rXaOKSTitkzPQ==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.62.0.tgz", + "integrity": "sha512-Z14dG305dgaLu6foB1TXQagFiW8JfSUIUaUuPaKQ6NtBPKF1P/qXcqfh6c6K/icPqdy37JmjbiBXf6JNg6Sylw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.61.1" + "playwright-core": "1.62.0" }, "bin": { "playwright": "cli.js" }, "engines": { - "node": ">=18" + "node": ">=20" }, "optionalDependencies": { "fsevents": "2.3.2" } }, "node_modules/playwright-core": { - "version": "1.61.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.61.1.tgz", - "integrity": "sha512-h7Qlt6m4REp25qvIdvbDtVmD4LqVXfpRxhORv9L0jzETM05p4fuPJ3dKyuSXQxDSbXnmS79HAgi9589lGSpLkg==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.0.tgz", + "integrity": "sha512-nsNRyq0r2zsG8AcRHWknc9QRA5XCueC7gWMrs+Gx2tlZn9hcl8zudfh00lhJPY1DE7NmZ6bDsT9g2yey8mXljA==", "dev": true, "license": "Apache-2.0", "bin": { "playwright-core": "cli.js" }, "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/portfinder": { diff --git a/package.json b/package.json index 2f115e1..2661f7e 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "test:e2e:headed": "playwright test --headed --project=chromium" }, "devDependencies": { - "@playwright/test": "^1.61.1", + "@playwright/test": "^1.62.0", "http-server": "^14.1.1", "vite": "^6.0.0" }