aboutsummaryrefslogtreecommitdiff
path: root/pnpm-lock.yaml
Commit message (Collapse)AuthorAgeFilesLines
* fix(security): sanitize badge_wall_css server-side, render via textContentFuwn31 hours1-0/+25
| | | | | | | | | | | | | | | | Custom badge-wall CSS was sanitised only client-side with a fragile regex and injected via innerHTML, while the stored value stayed raw. Sanitise at the write boundary instead (setCSS, covering both the REST and GraphQL paths) with a css-tree pass that parses leniently and drops @import, behavior/-moz-binding, expression()/javascript: values, and </style> break-out attempts; render with textContent instead of innerHTML so break-out is impossible by construction (CSP already blocks inline script). css-tree stays server-only. A behaviour-gate test confirms ordinary CSS (backdrop-filter, content, url(), @media, @keyframes) is preserved while the dangerous constructs are removed. The previous regex also silently stripped all `content:` declarations; those now render correctly.
* fix(security): sanitize third-party RSS HTML before {@html}Fuwn39 hours1-0/+16
| | | | | | | | | | | The /updates page rendered manga/novel feed fields (content, titles, series names) from mangaupdates/syosetu/wlnupdates via {@html} with no sanitization. CSP already blocks script execution, but injected markup could still phish, redirect, or track. Add sanitizeFeedHtml (DOMPurify with a small safe allow-list) and apply it on ingest. A behaviour-gate test plus a check against the live mangaupdates feed confirm legitimate formatting (entities, <i>/<b>/<a href>) is preserved while <script>, event handlers, <iframe>/<meta>/<style> and javascript: URLs are removed.
* feat(scroll): add global smooth scrolling via LenisFuwn2026-05-081-0/+19
|
* build(dev): use portless for named .localhost dev URLFuwn2026-04-181-0/+11
|
* chore(pnpm): Update lockfileFuwn2026-03-271-18/+917
|
* chore(effect): add v4 cookie decode foundation and testsFuwn2026-03-031-7/+155
|
* ci(quality): add graphql + env placeholders for reproducible typecheckFuwn2026-03-011-125/+128
|
* chore(trigger): migrate project setup from v3 to v4Fuwn2026-03-011-902/+526
|
* chore(tooling): remove legacy eslint and prettierFuwn2026-03-011-792/+0
|
* chore(tooling): migrate lint and format to biomeFuwn2026-03-011-4501/+1658
|
* fix(anime): unify due classification and harden subtitle matchingFuwn2026-03-011-2/+727
|
* feat(+layout.svelte): Add Web AnalyticsFuwn2026-01-261-1477/+4286
|
* feat: Add BotIDFuwn2026-01-261-4245/+1492
|
* chore(deps): Update Trigger.dev packagesFuwn2026-01-231-301/+312
|
* fix: Add null guards and improve error messaging for user lookupsFuwn2026-01-231-19/+5
|
* fix: Resolve unused imports, dead code, and type definitionsFuwn2026-01-231-0/+14
|
* feat(List): Add media rouletteFuwn2026-01-231-1472/+4232
|
* deps(houdini): Bump version to nextFuwn2026-01-231-4221/+1556
|
* fix(html): Replace self-closing non-void HTML elements with proper closing tagsFuwn2026-01-231-1468/+4219
|
* fix(deps): Add missing fast-levenshtein dependencysvelte-5-migrationFuwn2026-01-221-0/+16
|
* chore(deps): Migrate from npm to pnpmFuwn2026-01-221-0/+8372