Skip to content

Fix DSA page: use legal@hypercerts.org for EU representative - #11

Merged
holkexyz merged 1 commit into
stagingfrom
fix/dsa-email
Mar 15, 2026
Merged

Fix DSA page: use legal@hypercerts.org for EU representative#11
holkexyz merged 1 commit into
stagingfrom
fix/dsa-email

Conversation

@holkexyz

Copy link
Copy Markdown
Member

Summary

  • Replace holke@hypercerts.org with legal@hypercerts.org for the EU representative contact on the DSA compliance page

Test plan

  • Verify /dsa section 3 shows legal@hypercerts.org as the EU representative email

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@vercel

vercel Bot commented Mar 15, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
certified-app Building Building Preview, Comment Mar 15, 2026 6:23am

Request Review

@coderabbitai

coderabbitai Bot commented Mar 15, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Free

Run ID: 0d9e9a1c-8846-4422-ae23-1d1a8a4b66e9

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Coding Plan
  • Generate coding plan for human review comments

Note

🎁 Summarized by CodeRabbit Free

Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login.

Comment @coderabbitai help to get the list of available commands and usage tips.

@holkexyz
holkexyz merged commit fe718b4 into staging Mar 15, 2026
2 of 3 checks passed
@holkexyz holkexyz mentioned this pull request Mar 15, 2026
2 tasks
@holkexyz
holkexyz deleted the fix/dsa-email branch March 15, 2026 06:29
hb-agent pushed a commit that referenced this pull request May 18, 2026
Closes the XSS class from AGENTS.md §22 pitfall #11: user-controlled
URLs were rendered into `<a href={url}>` and `iframe src` without any
scheme allowlist, so a `pub.leaflet.pages.linearDocument` record on
any federated PDS could carry a `javascript:` URI that fires when a
viewer clicks the link in a cert / profile / long-description.

Five sites, one existing helper (`safeHttpUrl` from
`src/lib/utils/safe-url.ts`) applied:

- leaflet-document.tsx renderIframe — iframe fallback `<a>` when the
  host is not in the embed allowlist. `isAllowedEmbedHost` only
  inspects `hostname`, so `javascript:` (no host) fell through to
  the fallback anchor with the raw URI.
- leaflet-document.tsx applyFacets — facet `<a href={linkUri}>` for
  bold/italic/link inline runs. The same `javascript:` payload could
  reach here via a foreign linearDocument record.
- leaflet-iframe-node.tsx — TipTap node-view's unsupported-embed
  fallback `<a>` was the in-editor mirror of the same bug.
- leaflet-editor.tsx handleLinkConfirm — TipTap's Link extension only
  runs `isAllowedUri` on `setLink`/`toggleLink`; the no-selection path
  uses `insertContent` which bypasses validation. Scheme-allowlist
  both branches before write.
- link-dialog.tsx — reject non-http(s) URLs at submit with an inline
  error so the user gets immediate feedback instead of a silent drop.

Defense in depth on the (de)serializer boundaries closes the
re-publish path under the user's identity:

- from-tiptap.ts marksToFeatures — drop the FEATURE_LINK when the
  href fails the allowlist. Without this, a malicious foreign record
  hydrated into the editor and then saved would re-publish the URI
  under the user's DID.
- to-tiptap.ts featureToMark — drop the link mark on rejection so
  the editor surfaces the plain text and the in-memory JSON never
  carries the URI.

Render-side rejections degrade to plain text (`<span>`) rather than
silently dropping the content, so the user can still see the URL
without one-click execution.

CSS: new `.link-dialog__error` rule sized like `.link-dialog__hint`
and themed via `--color-error`.

tsc clean. Lint 38/38 (0 errors). Build green.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant