Skip to content

Integrate Iseberg as a native PowerShell ISE profile - #51

Merged
Marc-André Moreau (mamoreau-devolutions) merged 7 commits into
masterfrom
copilot/powershell-ise-integration
Oct 8, 2026
Merged

Marc-André Moreau (mamoreau-devolutions) merged 7 commits into
masterfrom
copilot/powershell-ise-integration

Conversation

@mamoreau-devolutions

@mamoreau-devolutions Marc-André Moreau (mamoreau-devolutions) commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Default desktop builds and release packages remain NativeAOT. Iseberg is disabled by default and requires an explicit -p:EnablePowerShellIse=true managed developer build.

  • Import and adapt licensed Iseberg source into DT as a distinct PowerShell ISE (Iseberg) profile, without an external application or cross-repository dependency. Preserve MIT/editor notices under docs/licenses, retain distribution notice output, and record source revision and provenance.
  • In the opt-in build, embed the script editor above DT's native terminal, sharing one installed PowerShell runspace per ISE tab. Preserve ordinary PowerShell profiles, isolate tab state, and implement cancelable close, disposal, leased recovery, and explicit error handling.
  • Harmonize profile creation and settings with canonical nested ise settings, Defaults, legacy aliases, reversible type conversion, and host-owned Options routing. Default builds preserve saved Iseberg profiles but do not offer new Iseberg profiles or silently launch them as ordinary terminals.
  • Add portable original-ISE features, original built-in themes plus Classic ISE/Dark/Light/Follow DT, corrected completion-description rendering, a square profile logo, and compact DT-aligned layout/font proportions.
  • Restore Windows, Linux and macOS release workflows and packaging to NativeAOT desktop payloads. The separately validated managed Iseberg publish is not a release payload. The dt CLI remains NativeAOT in both variants; installed PowerShell runtime payloads are not redistributed.

Validation

  • Fresh default win-x64 Release publish succeeds without an Iseberg override. Both desktop and CLI are native PE executables without CLR headers; output excludes Iseberg, PowerShell engine and CoreCLR payloads. NativeAOT CLI --help exits zero.
  • After default restoration: 291 passed, 0 failed, 0 skipped across default App (213), UI (14) and Settings.Editor (64) suites. Explicit opt-in App/UI reruns: 1,197 passed, 0 failed, 0 skipped (533/664). These are separate build variants, not a combined coverage count.
  • Full Iseberg-enabled affected baseline: 1,570 passed, 0 failed, 9 skipped across App, UI, Settings, Settings.Editor and Connection. All nine skips are Unix-only PTY cases on Windows.
  • Previously verified managed Iseberg publication, expected rejection of ISE-enabled AOT/trimming, required legal notices, and installed-runtime payload boundary. Relocated legal texts are unchanged and were verified in desktop build output.
  • Validated platform script syntax, release workflow YAML and selection of native release artifacts separately from managed validation output. Cross-platform macOS legal-notice regressions pass; the full macOS metadata check requires unavailable plutil on this Windows host.
  • Cua Driver verified normal profile creation/settings and actual execution in the opt-in published editor/native console and ordinary PowerShell tab. Test-owned app closed normally through its unsaved-script prompt; user-owned processes/documents were not modified. Square logo checked at 16/24/32 pixels.

Compatibility and scope

The in-process PowerShell engine is not NativeAOT-safe. Enabling it explicitly makes the desktop managed and untrimmed; default releases do not enable it. A future NativeAOT-compatible Iseberg would require an architectural change such as an out-of-process engine.

docs/iseberg.md maps requirements to regression evidence and deployment settings. docs/iseberg-parity.md documents the part-by-part original ISE comparison and portable feature boundaries. Microsoft ISE decompilation remains local, ignored audit evidence and is not included in this PR.

Linux/macOS runtime/package certification and installed Windows package certification remain unverified locally. This does not claim full original WPF/add-on, $psISE API, or Windows PowerShell 5.1 equivalence.

Embed licensed Iseberg source with a DT-native console sharing an installed PowerShell runspace. Unify profile creation and settings, add portable ISE features and themes, recovery and cancelable lifecycle, and document provenance and deployment boundaries.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Disable Iseberg by default and ship NativeAOT desktop payloads through platform release workflows and packaging. Keep explicit managed developer opt-in and feature tests. Fit the profile logo inside a square tile and centralize required third-party notices under docs/licenses without dropping distribution attribution.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Align CI restore with Release, defer self-contained deployment to publish, honor platform clipboard and file replacement behavior, and hold console readiness until debugger reconciliation finishes.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Avoid File.Move's Unix check-then-rename race by linking a completed identity file without replacing an existing owner. Preserve explicit storage errors and temporary-file cleanup.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@mamoreau-devolutions
Marc-André Moreau (mamoreau-devolutions) merged commit fb326bf into master Oct 8, 2026
59 of 60 checks passed
@mamoreau-devolutions
Marc-André Moreau (mamoreau-devolutions) deleted the copilot/powershell-ise-integration branch October 8, 2026 19:08

This branch was successfully deployed

1 active deployment
publish-dry-run — cfc4b996 Deployed Oct 8, 2026 by mamoreau-devolutions via MSIX packages #318
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant