fix: display complete ActivityPub handles in feed profiles #287
No reviewers
Labels
No labels
activitypub
admin
api
architecture
articles
auth
bug
cleanup
cli
comments
compatibility
config
contacts
content
database
deployment
design
dev-env
diagnostics
docs
documentation
email
enhancement
feature
federation
feed
health
homepage
implementation
integration
logging
mastodon
media
navigation
npm-packages
openapi
opengraph
packages
passkeys
preview
priority:high
priority:low
priority:medium
production
proof
proxy
public-routes
public-ui
release
safety
slug-api
slug-auth
slug-core
slug-federation
slug-media
slug-template
social
sources
status:active
status:canceled
status:done
status:inprogress
status:waiting
syndication
tailwind
template
test
web
webauthn
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
erik/slugkit!287
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/task-b1f7c2fc-feed-handles"
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
Fix the feed profile-card handle by deriving it from the actor username and canonical ActivityPub public origin.
Task
Task: #task-b1f7c2fc. Erik approved changing this task from investigation to implementation in both repositories. Companion site PR: erik/caradoc.com#7.
Changes
Testing
Checklist
Human gate
No merge or production deployment without explicit Erik approval.
Independent review — erik/slugkit#287 (
e162414)e162414and Caradoc #7 ate5a14c6; both PRs are open.Acceptance criteria (paired deliverable)
e162414.e5a14c6, provides the same focused correction; its Caradoc-domain HTTP fixture expects@caradoc@caradoc.com. This is source verification, not a claim of production deployment.docs/activitypub-feed-handles.mddocumenting reproduction, root cause, input/storage/runtime flow, changed behavior, and verification evidence.src/styles/public.cssmodification is preserved and excluded from the PRs.Criteria: 7 total, 6 met, 1 missing (partial criterion 4). Companion-PR references count toward the paired task; neither PR is required to contain the other repository's implementation.
Blocking issues (1)
template/site/src/routes/home.ts:583-590andtemplate/site/src/federation/config.ts:24-26. The runtime parser accepts URL strings with opaque origins and returns the string"null";new URL(config.publicOrigin)then throws aTypeError. The new catch handles onlyActivityPubRuntimeConfigError, so this configuration error now reaches the public-route error handler instead of preserving the previous local-handle rendering.e162414returned 200 forhttps://caradoc.comand for the existingnot-a-urlfallback, but 500 formailto:actor@example.comanddata:text/plain,invalid. The exception isTypeError: Invalid URLwith input"null", originating increateFediverseHandle. The reproduction used the template tsconfig; an initial runner configuration error was corrected and is not a product finding.Warnings (0)
Checks and human gates
Reviewed the updated task via native
task_showonce and both open PR diffs/commits. Implementation in both repositories was explicitly approved.Slugkit:
./scripts/pre-pr.shpassed, including 500 template-site tests and the workspace suite, supported by/tmp/slugkit-handles-pre-pr.log. CI run #483 is green fore162414, already verified throughfj actions tasks;fj pr statuswas not retried.Caradoc:
make pre-prpassed build/typecheck and 378 unit tests;npm run test:allpassed 409 tests, supported by/tmp/caradoc-handles-pre-pr.log.Explicit Caradoc PR CI-signal waiver: Erik approved continuing independent review without Caradoc PR CI. Follow-up task-6a726241 tracks adding PR CI. This is not a merge or deployment waiver.
The unsuccessful Slugkit dev-server launch is disclosed; no interactive-server or deployed-fix verification is claimed.
No source edits, commits, pushes, merges, deployments, or task closures were performed during review.
Final verdict: changes-requested; blocking_issues=1; warnings=0.
Next: correct the invalid-origin fallback in both PRs and rerun checks/independent review. merge_approval=waiting-human; no merge or deployment is authorized.
Review correction
Opaque runtime origins are now classified as configuration errors at the public profile-handle boundary, so mailto: and data: settings retain the logged local-name fallback instead of producing HTTP 500. Two regression cases failed before this correction; all eight handle cases now pass. ./scripts/pre-pr.sh passes, including 502 template-site tests. Independent re-review follows the new-head CI gate.
Independent review — erik/slugkit#287 (
a1fc6cc)a1fc6ccand168fe88.publicOrigin === "null"throwsActivityPubRuntimeConfigErrorbefore the formatter, entering the logged local-name fallback. Unexpected errors are still rethrown; no blanket catch or shared parser behavior expansion. The two added HTTP regressions directly cover the previously reported 500 paths.Acceptance criteria — paired deliverable
a1fc6cc.@caradoc@caradoc.com: erik/caradoc.com#7,168fe88. Source verification, not production deployment.mailto:/data:origins. Opaque normalized"null"is classified before formatting; HTTP 200, local handle, published content, and warning are asserted.docs/activitypub-feed-handles.mdrecording reproduction, cause, actor input/storage/runtime/rendering flow, correction, and verification.Criteria: 7 total, 7 met, 0 missing; repository-specific criteria use the companion PR above.
Findings
Pipeline and human gates
./scripts/pre-pr.shpasses, including 502 template-site tests; build-lint-test run #484 succeeded fora1fc6cc292, verified by the parent immediately before review.make pre-prpasses build/typecheck and 380 unit tests;npm run test:allpasses 411 tests. Missing PR CI is explicitly waived by Erik for this work; follow-up task-6a726241 tracks adding it./tmp/slugkit-handles-pre-pr.log,/tmp/caradoc-handles-pre-pr.log. Checks were not rerun in this bounded review;fj pr statuswas not used.