Skip to content

Update fork#8

Open
imconnorngl wants to merge 56 commits into
devfrom
update-fork
Open

Update fork#8
imconnorngl wants to merge 56 commits into
devfrom
update-fork

Conversation

@imconnorngl
Copy link
Copy Markdown
Member

Description

Type of Change

  • 🐛 Bug fix (non-breaking change which fixes an issue)
  • ✨ New feature (non-breaking change which adds functionality)
  • 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • 🎨 Style/UI changes
  • ♻️ Code refactoring (no functional changes, no api changes)
  • ⚡ Performance improvements
  • 🧪 Adding or updating tests
  • 🔧 Build/CI changes
  • 🧹 Chore (maintenance, dependencies, etc.)

Related Issues

Changes Made

Screenshots/Videos

Testing

  • I have tested these changes locally
  • I have added tests that prove my changes work as expected (if appropriate)

Test Environment

  • OS:
  • Browser:
  • nodejs version:
  • pnpm version:

Checklist

  • My code follows the project's style guidelines
  • I have used conventional commits for all commit messages
  • I have added necessary documentation (if appropriate)
  • I have added tests that prove my changes work as expected (if appropriate)
  • I have added changesets if my changes should be reflected in the changelog

Code Quality Checks

  • pnpm lint passes without errors
  • pnpm format has been run (or no formatting issues exist)
  • pnpm build completes successfully

Additional Notes

Deployment Notes

DarthGigi and others added 30 commits April 15, 2026 16:29
github-actions Bot and others added 26 commits April 18, 2026 23:53
Co-authored-by: DespicableGoose <68354378+DespicableGoose@users.noreply.github.com>
Signed-off-by: Zalko <88582103+Zalk0@users.noreply.github.com>
`svelte-seo`'s `jsonLd` prop emits the script tag through `{@html` ... `+
JSON.stringify(data)}`, but `JSON.stringify` does not escape `<`, `>` or `&`.
Stats pages flow `routeIgn` from `page.params.ign` into the JSON-LD `name`
field, so visiting `/stats/<script>alert(1)</script>` was enough to break out
of the script tag and execute arbitrary HTML/JS from `<head>`.

Add a `JsonLd` component that serialises through `safeJsonLd`, which escapes
those three characters to their unicode escapes — still valid JSON for
crawlers, but a closing `</script>` can no longer appear in the payload.
Switch both `<SvelteSeo>` callers (`SEO.svelte`, `+layout.svelte`) from the
vulnerable `jsonLd` prop to `<JsonLd data={...} />`. The layout's JSON-LD is
fully hardcoded today and so wasn't exploitable, but routing it through the
safe component means future edits can't accidentally introduce a regression.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
`takumi-js@1.1.1` (Rust commit `adc48da`, "Treat absolute/floated children
as out-of-flow for inline layout detection") reworked which children
participate in inline formatting context. The `<img class="absolute inset-0
... object-cover">` we used to paint the card background no longer renders
under the new rules — and because the card text and emoji are white, the
missing background made them appear to vanish too.

Move `skycrypt-background` to `background-image: url(...)` on the parent
`<main>` in both `Base.svelte` and `ErrorCard.svelte`. This is the pattern
the takumi docs document for persistent images ("The image key can be used
in any `src` field or `background-image`, `mask-image` CSS property") and
sidesteps the layout-pipeline change. Verified end-to-end against the napi
renderer: the broken pattern produced 12kb of mostly-empty PNG, the fix
produces 852kb with the background, text and emoji all rendered correctly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
`gh release create --generate-notes` builds the release body from PRs
merged between the previous tag and the new one, so any commit pushed
straight to `dev`/`prod` (even with a changeset) silently disappears
from the release page. v3.6.1-beta.0 is an example: both fixes were
in CHANGELOG.md but the release showed only the woodsplitter PR.

Read the section between `## ${version}` and the next `## ` heading
out of CHANGELOG.md, write it to a tempfile, and pass it via
`--notes-file` instead. Falls back to `--generate-notes` if no
matching section is found, so we never publish an empty release body.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Drop the `{@html ... + "/script>"}` template-literal trick and use
`<svelte:element this={"script"} type="application/ld+json">{json}</svelte:element>`
instead. No `{@html}`, no closing-tag splitting, no inline safety
comments — the template now reads as plainly as a normal element.

The `safeJsonLd` helper still escapes `<`, `>` and `&` to their unicode
escapes before serialisation. That's important even with Svelte's text
escaping in the picture: Svelte would only encode `<` to `&lt;`, which
prevents XSS but corrupts the JSON-LD value (a crawler reading the
raw `<script>` text per HTML spec would see literal `&lt;` characters
in the parsed JSON string). Pre-escaping to `<` / `>` /
`&` keeps the payload XSS-safe AND lets `JSON.parse` decode it
back to the original characters losslessly, so the data round-trips.

Verified end-to-end against `svelte/server` with both a malicious
`</script><script>alert('xss')</script>` payload and a benign
`Foo & bar < baz > qux` description: round-trip equality on both,
zero literal `</script` anywhere in the rendered script body.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Reverts 9b8e3d8. The PR-list output from `gh release create
--generate-notes` is the preferred format; restoring the existing
release scripts to that behaviour. v3.6.1-beta.0 and v3.6.1-beta.1
release pages were also rewritten back to their original
auto-generated notes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@cloudflare-workers-and-pages
Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
❌ Deployment failed
View logs
skycrypt-embed-lunarclient-com d20fa5c May 14 2026, 05:26 PM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants