forked from Qortal/q-blog
37 lines
1.7 KiB
Markdown
37 lines
1.7 KiB
Markdown
# 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 <Name> · <relative time>”.
|
|
- 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.
|