{"id":"68fe97e5d85440d4c403ed70","title":"2025 10 10","path":"how-to/committee/release-notes/2025-10-10","contentMarkdown":"# 10th October 2024 — Enhance static site migration to be fully data-driven with migration settings UI [#64](https://github.com/nbarrett/ngx-ramblers/issues/64)\n## [build 333](https://github.com/nbarrett/ngx-ramblers/actions/runs/18823789797)\n\n## Enhance static site migration to be fully data-driven (refs [#64](https://github.com/nbarlett/ngx-ramblers/issues/64)) ([1e51af9](https://github.com/nbarrett/ngx-ramblers/commit/1e51af9))\n\n**What's New**\n\nThe static site migration system has been completely overhauled with a new admin UI at `/admin/migration-settings`. The system now supports data-driven configuration, WebSocket live updates, parent page modes with action buttons, specific album targeting, and idempotent re-runs. Content is now stored inline within PageContent rather than via separate ContentText references.\n\n**Where to Find It**\n\n- **Admin → Migration Settings**: New migration configuration interface with tabbed settings and live activity monitoring\n- **Migration Engine**: Enhanced parent-page link scraping with directory fallback and per-page feedback\n- **Content Management**: BREAKING CHANGE - PageContent now embeds inline text (contentText) instead of contentTextId for new migrations\n\n**Benefits**\n\n- **Visual Configuration**: Configure migrations through UI instead of code\n- **Live Monitoring**: WebSocket keepalive and auto-reconnect provide resilient real-time updates during migration\n- **Flexible Parent Pages**: Choose between migrating parent content as-is or creating action button rows for child pages\n- **Targeted Migrations**: Migrate specific albums and control maximum children per parent page\n- **Idempotent Operations**: Safe to re-run migrations - content upserts by path/name prevent duplicates\n- **Better Image Handling**: Inline images are converted to absolute URLs and merged intelligently into text rows\n- **Cleaner Content**: Shared text exclusions remove navigation elements and excluded images consistently\n- **Migration History**: All migration activity persisted to database with progress/error tracking\n- **Simplified Schema**: Inline content storage (columns.contentText) simplifies data model\n- **Action Buttons**: Parent pages can automatically generate button rows linking to child pages\n","contentHtml":"<h1>10th October 2024 — Enhance static site migration to be fully data-driven with migration settings UI <a href=\"https://github.com/nbarrett/ngx-ramblers/issues/64\">#64</a></h1>\n<h2><a href=\"https://github.com/nbarrett/ngx-ramblers/actions/runs/18823789797\">build 333</a></h2>\n<h2>Enhance static site migration to be fully data-driven (refs <a href=\"https://github.com/nbarlett/ngx-ramblers/issues/64\">#64</a>) (<a href=\"https://github.com/nbarrett/ngx-ramblers/commit/1e51af9\">1e51af9</a>)</h2>\n<p><strong>What&#39;s New</strong></p>\n<p>The static site migration system has been completely overhauled with a new admin UI at <code>/admin/migration-settings</code>. The system now supports data-driven configuration, WebSocket live updates, parent page modes with action buttons, specific album targeting, and idempotent re-runs. Content is now stored inline within PageContent rather than via separate ContentText references.</p>\n<p><strong>Where to Find It</strong></p>\n<ul>\n<li><strong>Admin → Migration Settings</strong>: New migration configuration interface with tabbed settings and live activity monitoring</li>\n<li><strong>Migration Engine</strong>: Enhanced parent-page link scraping with directory fallback and per-page feedback</li>\n<li><strong>Content Management</strong>: BREAKING CHANGE - PageContent now embeds inline text (contentText) instead of contentTextId for new migrations</li>\n</ul>\n<p><strong>Benefits</strong></p>\n<ul>\n<li><strong>Visual Configuration</strong>: Configure migrations through UI instead of code</li>\n<li><strong>Live Monitoring</strong>: WebSocket keepalive and auto-reconnect provide resilient real-time updates during migration</li>\n<li><strong>Flexible Parent Pages</strong>: Choose between migrating parent content as-is or creating action button rows for child pages</li>\n<li><strong>Targeted Migrations</strong>: Migrate specific albums and control maximum children per parent page</li>\n<li><strong>Idempotent Operations</strong>: Safe to re-run migrations - content upserts by path/name prevent duplicates</li>\n<li><strong>Better Image Handling</strong>: Inline images are converted to absolute URLs and merged intelligently into text rows</li>\n<li><strong>Cleaner Content</strong>: Shared text exclusions remove navigation elements and excluded images consistently</li>\n<li><strong>Migration History</strong>: All migration activity persisted to database with progress/error tracking</li>\n<li><strong>Simplified Schema</strong>: Inline content storage (columns.contentText) simplifies data model</li>\n<li><strong>Action Buttons</strong>: Parent pages can automatically generate button rows linking to child pages</li>\n</ul>\n"}