* feat: web worker for incremental render
* feat: optimizing incremental render for date archives
* feat: more work on web worker
* fix: blogmark process handled defaulting wrong
---------
Co-authored-by: hugo <hugoms@me.com>
* chore: cleanup of unused exports and stuff
* fix: media and languages was broken for english media
* fix: embedding model load was broken on standalone
---------
Co-authored-by: hugo <hugoms@me.com>
* chore: updated todo with translation ideas
* feat: first take at the implementation of translations
* fix: small addition for the translation feature
* feat: support language switching in the editor and preview
* feat: better handling of long bodies by not running them through a json envelope
* fix: unknown macros have better fallback
* feat: api for python to get translations
* fix: strip dumb prefix of content in translation
* feat: extend meta diff for translations
* feat: hook up translations to rebuild-from-disk
* feat: generation of the website prefers project language, falling back to canonical language
* fix: crashes during rendering
* feat: translation validation report
* fix: made the translation validation actually work
* chore: reorganization of menu
* fix: some topics cleanup
* chore: updated doc
* feat: translations for media
* feat: more aligned in UI/UX
* feat: edit translations possible
* chore: added full multi-language todo
* chore: updated todo for clarity
* feat: implementation of full multi-linguality
* fix: page creation creates pages
* fix: flags on every page
* fix: better prompt
* feat: made MCP server aware of language content
* feat: python tools for translations
* fix: better fill-in-translations
* fix: better prompt for translation. maybe.
* fix: losing posts from search due to translation process
* fix: translation validation handles in-db content and fill-in of missing translations fixed to flush
* fix: faster scanning for infilling of missing translations
* chore: updated agent instructions
* feat: calendar and tag cloud respect current language now
* fix: retries going up
* fix: got metadata-diff and rebuild into sync
* fix: extended meta-diff for timestamps
* fix: made website validation look at translated content, too
* fix: multi-lingual search
* chore: refactor Editor.tsx into two separate editors
* feat: do language detection when no explicit language given
---------
Co-authored-by: hugo <hugoms@me.com>
* fix: mixed up migrations
* feat: semantic similarity first take
* feat: semantic similarity first round of fixes
* feat: more work on making semantic similarity work properly
* feat: getPostBySlug for the AI
* feat: show similarity in post-link-insert-modal
* chore: remove done doc
---------
Co-authored-by: hugo <hugoms@me.com>
* Expose chat.analyzeMediaImage in Python API for batch image metadata generation
* Fix updateMedia losing linkedPostIds by reading existing sidecar before overwriting
* Also preserve author from sidecar when DB value is null (data drift)
* Extend MetadataDiffEngine to cover media, scripts, and templates
* Redesign MetadataDiffPanel: item-first view with field pills, filtering, and per-item multi-field diffs
* Fix task:progress startsWith crash (taskId not id) and nested button violation in field pills
* Populate field diffs for file-missing items and show fileMissing badge in UI
* feat: extended meta diff
* feat: meta diff als reconstructs orphans
* chore: updated documentation
---------
Co-authored-by: hugo <hugoms@me.com>
Add a "Generate Sitemap" function to the Blog menu that generates a
standard XML sitemap in the project's html/ folder. The sitemap includes
entries for all published posts, archive pages (year, month, day),
category pages, and tag pages using the preview server URL structure.
Runs as a background task with progress tracking via the task manager.
https://claude.ai/code/session_01PdJyxeeNGf4Bkxvq86GVaZ