forked from Qortal/q-blog
1.7 KiB
1.7 KiB
Q-Blog v0.1.1 — Wiki Mode Integration, Canonicalization, and Perf
Date: 2025-08-22
Highlights
- Wiki Mode settings in Create + Edit Blog modals (checkbox + whitelist/blacklist).
- Canonical resolver wired into Post, Blog page, Global feed, Subscriptions, and Favorites.
- Attribution on Post page: “Latest by · ”.
- Header “My Blogs” switcher seeds blog context for immediate list refresh.
- Performance: settings read from BLOG metadata when available; per-page parallel prefetch for duplicate identifiers; singletons skip canonicalization.
Details
- Data model: BLOG JSON and metadata now include
wikiEnabled,editorWhitelist,editorBlacklist. - Resolver logic (
src/utils/wiki.ts): Owner always allowed; blacklist > whitelist > global allow; newest wins with owner/id tiebreakers. - Caching (
src/utils/wikiSettingsCache.ts): Reads from metadata; fetches BLOG JSON only when fields are missing. - Lists (
src/hooks/useFetchPosts.tsx):- Global feed and Subscriptions canonicalize per identifier across Names.
- Favorites canonicalizes per identifier across Names.
- Prefetches settings for blogs with duplicates in parallel; singles are fast-pathed.
Fixes
- Edit modal now correctly pre-fills the wiki checkbox and lists.
- Blog page refreshes the posts list reliably when switching blogs in the header.
Testing
- New tests for resolver, cache, blog/post pages, and Favorites canonicalization.
- MSW defaults prevent unhandled network calls in tests.
Notes
- Backwards compatible: legacy blogs behave unchanged until wiki is enabled.
- Further perf options: optimistic list render and concurrency caps are available if desired.