Skip to content

✨feat add optional-apps.json support and update docs/version#11

Merged
Timpan4 merged 1 commit intomainfrom
ta-branch-1
Mar 28, 2026
Merged

✨feat add optional-apps.json support and update docs/version#11
Timpan4 merged 1 commit intomainfrom
ta-branch-1

Conversation

@Timpan4
Copy link
Copy Markdown
Owner

@Timpan4 Timpan4 commented Mar 28, 2026

Summary by CodeRabbit

  • New Features

    • Optional apps: Defer installation of selected applications to after first login; access via dedicated desktop shortcut at any time.
  • System Requirements

    • Windows 11 minimum version updated to 24H2 or later (from 22H2).
  • Workflow & Improvements

    • Installation setup now includes explicit manual disk selection before automated deployment begins.
    • Enhanced progress tracking visibility during backup and system operations.
    • Updated documentation and tool version references.

@Timpan4 Timpan4 merged commit a5c45fd into main Mar 28, 2026
2 checks passed
@Timpan4 Timpan4 deleted the ta-branch-1 branch March 28, 2026 12:08
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 28, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 0f804657-6cee-4086-984f-24d747df9cc5

📥 Commits

Reviewing files that changed from the base of the PR and between 7729e5b and ee6e0c7.

📒 Files selected for processing (12)
  • CLAUDE.md
  • FAQ.md
  • README.md
  • SOPHIA-FUNCTIONS-REFERENCE.md
  • Sophia-Preset.ps1
  • TODO.md
  • bootstrap.ps1
  • build-iso.ps1
  • docs/ISO-GENERATION.md
  • preflight-backup.ps1
  • tests/Bootstrap.Tests.ps1
  • tests/BuildIso.Tests.ps1

📝 Walkthrough

Walkthrough

This pull request introduces optional app installation support via a secondary WinGet manifest, updates Windows 11 minimum support from 22H2 to 24H2 across documentation and presets, refactors bootstrap and ISO build scripts to handle the optional workflow with reusable abstractions, adds progress tracking to backup operations, and updates Sophia Script version references.

Changes

Cohort / File(s) Summary
Documentation: OS Compatibility & Sophia Script Version Updates
CLAUDE.md, FAQ.md, README.md, SOPHIA-FUNCTIONS-REFERENCE.md, TODO.md, docs/ISO-GENERATION.md
Unified Windows 11 minimum requirement from 22H2 to 24H2. Updated Sophia Script version references from 6.9.1 to 7.1.4. Marked SOPHIA-FUNCTIONS-REFERENCE.md as archived and added notes directing users to verify against upstream releases. Added guidance for optional-apps.json manifest file in WinGet format.
Sophia-Preset.ps1
Sophia-Preset.ps1
Updated metadata to target Sophia Script v7.1.4 and Windows 11 24H2\+. Changed SearchHighlights from -Disable to -Hide. Removed hibernation and high power-plan defaults (replaced with comments). Renamed Win32LongPathSupport to Win32LongPathsSupport. Replaced scheduled-task disablement with deletion. Removed explicit Cloudflare DNS-over-HTTPS configuration (replaced with optional commented provider-based syntax). Updated internal preset verification comments.
Bootstrap Core: Optional Apps Workflow
bootstrap.ps1
Introduced OptionalAppsOnly parameter and optional-apps completion marker. Added two reusable functions: Invoke-WingetManifestInstall (centralizes WinGet manifest parsing, installation, and failure tracking) and New-DesktopShortcut (encapsulates COM shortcut creation). Refactored apps.json install step to use new function. Added optional shortcut creation and optional apps install step with conditional user prompt. When OptionalAppsOnly is set, core steps are skipped.
ISO Build: Optional Payload Handling
build-iso.ps1
Added conditional inclusion of optional-apps.json in ISO $OEM$ payload. Introduced optionalFiles map and presence check with appropriate logging (success when found, info when skipping). Updated "Next Steps" messaging to clarify manual disk selection in Windows Setup.
Backup Progress Tracking
preflight-backup.ps1
Added Write-BackupProgress helper function to compute and emit progress percentages. Enhanced robocopy output handling to stream non-empty lines to host. Added per-rule and per-item progress tracking for folder/repo backups and WinGet export with completion signals.
Tests: Optional Apps Assertions
tests/Bootstrap.Tests.ps1, tests/BuildIso.Tests.ps1
Added static-check assertions validating optional-apps.json presence, optional-winget.completed marker, OptionalAppsOnly flag, optional shortcut creation, and user prompt. Added assertion for build-iso.ps1 handling optional apps payload. Updated WinGet import failure message expectation for consistency.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Bootstrap as bootstrap.ps1
    participant Shortcut as Install Optional Apps.lnk
    participant WinGet as WinGet
    participant OptApps as optional-apps.json

    User->>Bootstrap: Run bootstrap.ps1 (initial)
    Bootstrap->>Bootstrap: Install core apps (apps.json)
    Bootstrap->>Bootstrap: Complete main setup steps
    opt optional-apps.json exists
        Bootstrap->>Bootstrap: Create shortcut (Install Optional Apps.lnk)
        Bootstrap->>User: Prompt: Install optional apps now? (Y/N)
        
        alt User selects Yes
            Bootstrap->>OptApps: Load optional-apps.json
            Bootstrap->>WinGet: Import manifest
            Bootstrap->>WinGet: Install packages
            WinGet-->>Bootstrap: Installation result
            Bootstrap->>Bootstrap: Record completion marker
        else User selects No / Later
            Bootstrap->>Bootstrap: Record no-install state
        end
    end
    
    opt User clicks shortcut later
        Shortcut->>Bootstrap: Invoke with -OptionalAppsOnly
        Bootstrap->>OptApps: Load optional-apps.json
        Bootstrap->>WinGet: Import manifest (skip core steps)
        WinGet-->>Bootstrap: Installation result
    end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Poem

🐰 Optional apps hop in after the core,
A second WinGet manifest to explore!
Twenty-four-H-two keeps the system secure,
Progress bars tracking each backup's pure measure.
Shortcuts and prompts make the workflow complete! ✨

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ta-branch-1

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ee6e0c7f24

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread bootstrap.ps1
elseif (-not (Test-Path $OptionalAppsJson)) {
Write-Log "optional-apps.json not found at $OptionalAppsJson - skipping optional apps shortcut" -Level INFO
Add-SummaryItem -Step "Optional Apps Shortcut" -Status "WARN" -Message "optional-apps.json not found"
Set-StepState -StepId $stepId -Status "done" -Message "optional-apps.json not found"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Leave optional shortcut step pending when manifest is absent

Setting optionalShortcut to done when optional-apps.json is missing prevents this step from ever running again in normal reruns, so adding optional-apps.json later will not create Install Optional Apps.lnk. This breaks the advertised “install later via shortcut” flow for users who create the optional manifest after the first bootstrap run unless they force-reset state.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant