🎉 Huge shoutout to @2chanhaeng초무 for implementing custom collection dispatchers in #Fedify through the Korean #OSSCA program!
This incredible contribution adds support for creating arbitrary collections beyond the built-in ones (e.g., outbox, inbox, following, followers). Now developers can expose custom collections like user bookmarks, post categories, or any grouped content through the #ActivityPub protocol:
federation
.setCollectionDispatcher(
"bookmarks",
Article,
"/users/{identifier}/bookmarks",
async (ctx, values, cursor) => {
const { posts, nextCursor } = await getBookmarkedPosts(values.identifier, cursor);
return { items: posts, nextCursor };
}
)
.setCounter(async (ctx, values) =>
getBookmarkCount(values.identifier)
);The implementation is technically excellent with full #TypeScript support, both Collection and OrderedCollection types, cursor-based pagination, authorization predicates, and zero breaking changes. @2chanhaeng초무 delivered not just code but a complete feature with 313 lines of comprehensive documentation, practical examples, and thorough test coverage.
This opens up countless possibilities for ActivityPub applications built with Fedify. From user-specific collections to complex categorization systems, developers now have the flexibility to create any type of custom collection while maintaining full ActivityPub compliance.
Thank you @2chanhaeng초무 for this outstanding contribution and to the OSSCA program for fostering such excellent open source collaboration! 🚀

![에이전트가 실행중인 터미널 화면. 이하는 터미널의 내용
[에이전트]
save_emacs_buffers_in_repo() 함수:
- emacsclient로 실행 중인 Emacs와 통신
- 해당 리포지토리 경로에 속한 버퍼만 필터링 (string-prefix-p)
- 수정된 버퍼만 저장 (buffer-modified-p)
- 저장된 버퍼 개수를 메시지로 표시
- emacsclient가 없거나 통신 실패 시 경고만 출력하고 계속 진행
이제 스크립트 실행 시 해당 리포지토리의 모든 수정된 Emacs 버퍼가 자동으로 저장됩니다.
[사용자]
> 좋아 네가 최고야
[에이전트]
⏺ 감사합니다! 스크립트가 이제 안전하고 똑똑하게 작동할 것 같네요. 혹시 테스트해보시고 문제가 있으면 언제든 알려주세요.](https://media.hackers.pub/note-media/afaa2a81-a922-4d9b-913f-3a36f07d52ba.webp)










