Skip to content

feat(v2.4.0): PR 5/5 — /own:migrate opt-in MD→HTML conversion + RELEASE PR #14

@DanielPodolsky

Description

@DanielPodolsky

Scope

Two responsibilities in one PR:

  1. /own:migrate — new slash command for users with existing Markdown-based SDD projects (anyone who installed OwnYourCode before v2.4.0). Opt-in conversion with backup + --revert.
  2. The release PR — bump versions everywhere, promote [Unreleased] to ## [2.4.0] - YYYY-MM-DD, sweep README, cut git tag, create GitHub release.

Dependencies

Before you scope further — read these

  1. #9 — locked architecture decisions. Decision 6 (migration model) is the spec.
  2. All 4 prior PRs merged on main — read what shipped to understand the target format you're converting INTO.
  3. Memory: project_html_migration_v240.md — full v2.4.0 release-PR checklist (version bumps, CHANGELOG promotion, README sweep, git tag, GitHub release).
  4. Memory: feedback_pr1_runtime_lessons.md — fallback-first principle. Migration writes HTML directly from MD content. Don't try to "improve" via plugin during migration.

/own:migrate design (from #9)

  • Opt-in only. Never auto-run.
  • Backup-first. Every conversion copies .md files to ownyourcode/.md-backup-[ISO-timestamp]/ BEFORE writing HTML.
  • Reversible. /own:migrate --revert restores the most recent backup (with user selection if multiple).
  • Validation gate. Run a dry-run scan first; report "Found N MD files across M spec phases" and ask user to confirm before writing anything.
  • No coexistence. Project is either MD or HTML, not both. Migration moves .md to backup, leaves .html in place.
  • Scope: SDD files only (mission, stack, roadmap, spec, design, tasks). Don't touch retro logs, learning registry, career stories — those stay Markdown.

Migration flow

  1. /own:migrate → scan ownyourcode/product/*.md and ownyourcode/specs/active/*/*.md (and specs/completed/).
  2. Report findings: file count, phase count, estimated time.
  3. AskUserQuestion: confirm migration.
  4. Create ownyourcode/.md-backup-{ISO}/ mirroring the source structure.
  5. Copy all .md files to backup.
  6. For each .md, generate equivalent .html using PR 1's templates + content extracted from the MD source.
  7. Delete the original .md files (they're safely in the backup folder).
  8. Run /own:theme flow to ensure .theme/ exists (if not — soft seed fallback CSS).
  9. Confirm success per file; show user the backup location.

/own:migrate --revert flow

  1. List .md-backup-{ISO}/ directories sorted newest-first.
  2. AskUserQuestion: pick which backup to revert to.
  3. Backup current HTML state to .md-backup-{ISO}-pre-revert/ so revert is itself reversible.
  4. Restore .md files from selected backup.
  5. Delete the corresponding .html files.
  6. Confirm.

Release PR responsibilities (the second half)

After /own:migrate is implemented, this PR also does the release ceremony. Pull the full release checklist from memory project_html_migration_v240.md — every item must be done before this PR can merge. Highlights:

  • Bump 2.3.02.4.0 in: scripts/project-install.sh (header + banner), scripts/project-install.ps1 (header + banner), scripts/base-install.sh, scripts/base-install.ps1, .claude/commands/own/init.md manifest examples.
  • Promote ## [Unreleased]## [2.4.0] - YYYY-MM-DD in CHANGELOG; move HTML Migration block under the new heading.
  • README substantial updates: drop "(v2.4.0+)" version markers from command rows; add /own:migrate row; add HTML SDD workflow section explaining the 6 file types + Option D contract; add Theme system section; sweep intro for any Markdown-implying language; optional "What's new in v2.4.0" callout near the top.
  • After PR merges: cut git tag v2.4.0 + create GitHub release with link to CHANGELOG section.

Hard constraints

  • Backup is non-negotiable. Every write path backs up first. No "trust me bro" overwrites.
  • Revert is non-negotiable. Users must be able to undo migration cleanly.
  • No coexistence mode. Don't implement "both MD and HTML supported simultaneously" — it doubles the surface area of every command in the toolchain.
  • Existing users not on v2.4.0 should be able to keep using MD-only OwnYourCode (v2.3.x branch) indefinitely. Migration is opt-in; users who don't migrate get no degraded experience.

Open this issue's PR with title

feat(v2.4.0): /own:migrate opt-in MD→HTML + v2.4.0 release ceremony (PR 5/5)

Refs #9 · Completes the migration train (#10, #11, #12, #13)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions