Extract slug-federation npm package #232

Closed
opened 2026-06-28 22:33:12 -05:00 by erik · 2 comments
Owner

Goal

Create @evcraddock/slug-federation for reusable federation helpers after the template site's ActivityPub boundaries are stable enough to package safely.

Requirements

  • Implement the work described in docs/npm-specs/05-slug-federation.md.
  • Reassess current federation code and identify stable seams before moving code.
  • Create packages/slug-federation with TypeScript build, tests, README, package metadata, and public exports.
  • Extract stable ActivityPub/Fedify helpers for actors, keys, identifiers, outbox construction, follow/following flows, delivery queue interfaces, replies, engagement mapping, and federation config types.
  • Update the template site to consume @evcraddock/slug-federation via workspace:* if federation remains in the default template.
  • Keep local wrapper modules under template/site/src/federation/* for domain config, database persistence, private key ownership, delivery wiring, route composition, and operational customization.
  • Ensure generated sites created after release depend on the published package when federation is included.
  • Publish the package to npm and verify post-publish install/import behavior.

Acceptance criteria

  • @evcraddock/slug-federation exists as a workspace package.
  • Template site consumes @evcraddock/slug-federation via workspace:* if federation remains in the default template.
  • Template-site federation behavior remains unchanged.
  • Generated sites created after release depend on the published package when federation is included.
  • Local wrappers preserve domain, key, storage, and delivery customization points.
  • Public exports are documented and tested.
  • Package is published and post-publish install/import verification succeeds.
  • ./scripts/pre-pr.sh passes.

Dependencies

  • task-8f5c9063
## Goal Create `@evcraddock/slug-federation` for reusable federation helpers after the template site's ActivityPub boundaries are stable enough to package safely. ## Requirements - Implement the work described in `docs/npm-specs/05-slug-federation.md`. - Reassess current federation code and identify stable seams before moving code. - Create `packages/slug-federation` with TypeScript build, tests, README, package metadata, and public exports. - Extract stable ActivityPub/Fedify helpers for actors, keys, identifiers, outbox construction, follow/following flows, delivery queue interfaces, replies, engagement mapping, and federation config types. - Update the template site to consume `@evcraddock/slug-federation` via `workspace:*` if federation remains in the default template. - Keep local wrapper modules under `template/site/src/federation/*` for domain config, database persistence, private key ownership, delivery wiring, route composition, and operational customization. - Ensure generated sites created after release depend on the published package when federation is included. - Publish the package to npm and verify post-publish install/import behavior. ## Acceptance criteria - [ ] `@evcraddock/slug-federation` exists as a workspace package. - [ ] Template site consumes `@evcraddock/slug-federation` via `workspace:*` if federation remains in the default template. - [ ] Template-site federation behavior remains unchanged. - [ ] Generated sites created after release depend on the published package when federation is included. - [ ] Local wrappers preserve domain, key, storage, and delivery customization points. - [ ] Public exports are documented and tested. - [ ] Package is published and post-publish install/import verification succeeds. - [ ] `./scripts/pre-pr.sh` passes. ## Dependencies - task-8f5c9063
Author
Owner

Synced from todu comment by @todu on 2026-06-30T02:32:28.482Z

Review update

  • PR: #246 is open with Forgejo CI run #352 passing.
  • Result: approved for merge.
  • Verified: @evcraddock/slug-federation package extraction, template federation wrapper integration, generated-site dependency mapping, package pack/release dry-runs, ./scripts/pre-pr.sh, and Forgejo CI build-lint-test passed.
  • Follow-up: after merge, publish @evcraddock/slug-federation@0.1.0 through Forgejo CI and verify post-publish install/import before task closure.
_Synced from todu comment by @todu on 2026-06-30T02:32:28.482Z_ ### Review update - PR: #246 is open with Forgejo CI run #352 passing. - Result: approved for merge. - Verified: `@evcraddock/slug-federation` package extraction, template federation wrapper integration, generated-site dependency mapping, package pack/release dry-runs, `./scripts/pre-pr.sh`, and Forgejo CI `build-lint-test` passed. - Follow-up: after merge, publish `@evcraddock/slug-federation@0.1.0` through Forgejo CI and verify post-publish install/import before task closure.
erik 2026-06-29 21:56:10 -05:00
Author
Owner

Synced from todu comment by @todu on 2026-06-30T02:53:30.141Z

Closing summary

  • PR #246 merged into main.
  • Forgejo push CI passed: run #353.
  • Published @evcraddock/slug-federation@0.1.0 through Forgejo release workflow: run #355 succeeded after rerun.
  • Verified npm registry/package import:
    • npm view @evcraddock/slug-federation@0.1.0 version returned 0.1.0.
    • Temp project install/import succeeded for buildActivityPubActorUrls and generateActivityPubActorKeyPair.
  • Acceptance criteria satisfied, with the dependency model using published semver (0.1.0) in generated/template manifests while npm workspaces link local source in-repo, matching the agreed package architecture.
_Synced from todu comment by @todu on 2026-06-30T02:53:30.141Z_ ### Closing summary - PR #246 merged into `main`. - Forgejo push CI passed: run #353. - Published `@evcraddock/slug-federation@0.1.0` through Forgejo release workflow: run #355 succeeded after rerun. - Verified npm registry/package import: - `npm view @evcraddock/slug-federation@0.1.0 version` returned `0.1.0`. - Temp project install/import succeeded for `buildActivityPubActorUrls` and `generateActivityPubActorKeyPair`. - Acceptance criteria satisfied, with the dependency model using published semver (`0.1.0`) in generated/template manifests while npm workspaces link local source in-repo, matching the agreed package architecture.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
erik/slugkit#232
No description provided.