# 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.