Adopt safe federated Markdown rendering #29
No reviewers
Labels
No labels
bug
priority:high
status:active
status:inprogress
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
erik/erikvancraddock.com!29
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "task-21c27f55-federated-markdown"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Adopts the site-owned federated Markdown fix from Slugkit template ZIP 0.12.1, pinned to
9781aff0353e3c4fb91f06fdc9550386a25d1f97.markdown-itrenderer insrc/federation/content.ts. Preserve blockquotes while adding portable headings, emphasis, lists, code, safe canonical links and linked-image labels; raw HTML stays escaped./posts/:slugthrough the same object builder used by Create, Update and outbox. Preserve primary actor selection, customized canonical-origin/signature handling, browser HTML routes, authentication, setup gate, draft privacy and article permalink-only content.src/federation/README.md.Verification
npm run typecheck— passednpm run lint— passednpm run build— passed (unrelated generated CSS drift excluded)npm test— 683 passed, 66 files; includes local federation integration testsnpm run test:ci— 551 passed, 55 files; excludes integration testsnpm run test:browserusingPLAYWRIGHT_CHROMIUM_EXECUTABLE_PATHpointing to the installed Chromium headless shell — 40 passed. Initial default invocation could not launch because its expected browser revision was not installed.git diff --check— passednpm run format, but this repository defines no format script; no formatting-tool scope change was made.Independent read-only review of head
e371cc00e09da6330279f1bd1f3128876f13d1e0found no actionable issues. Its initial P2 warning (flaky timestamp string comparison) was fixed by comparing parsed instants; the reviewer verified the fix and reran 24 targeted tests. Both review reports are posted in PR comments. Full local checks were rerun successfully after the fix.Remote CI passed at run #108 for reviewed head
e371cc00e09da6330279f1bd1f3128876f13d1e0(CI / build-lint-test (push), successful in 1m29s). Verified through the API because the Forgejo CLI status command cannot parse the server's relative target URL.Operational boundaries
No dependency/package updates, CLI changes, migrations, deployment, production mutations, or existing-note edits/reposts/backfills. Merging does not authorize publishing a web-release tag or deployment; historical recovery remains deferred. No claim of remote follower adoption is made.
Task:
task-21c27f55Reviewed PR #29 at
dd631f3d0f803d6a283780baf717ceae04aeb7d5, including all changes and comparison with pinned Slugkit release9781aff0353e3c4fb91f06fdc9550386a25d1f97.Non-waived warning
src/federation/__tests__/content.integration.test.ts:93comparesDate.toISOString()against Fedify’s Temporal serialization. Temporal omits trailing fractional zeros, so equivalent timestamps fail comparison:.720Zversus.72Z. My suite run produced 682 passed, 1 failed for this reason; the targeted rerun passed. Fix: compare parsed instants rather than timestamp strings, or normalize both sides consistently. Fix before merge to keep local verification reliable.Other assessment
No runtime correctness or security blockers found. The renderer matches the pinned release, and the focused routing adaptation preserves the site-specific canonical-origin/signature handling. No optional suggestions.
Verification limits
git diff --checkpassed; working tree unchanged.Reviewed PR #29 at
e371cc00e09da6330279f1bd1f3128876f13d1e0.No actionable issues found: no blockers, non-waived warnings or optional suggestions. The previous P2 timestamp warning is resolved by comparing parsed instants.
9781aff0353e3c4fb91f06fdc9550386a25d1f97.git diff --checkpassed; working tree unchanged.Limits: Full-suite and browser results were not independently rerun. Remote CI remains queued/waiting, not verified passing. No external or production requests made.