Skip to content

feat: move sideloader from an extension to a workbench contribution#31

Closed
JonahBraun wants to merge 21 commits into
feature/profile-conductorfrom
feat/sideloader
Closed

feat: move sideloader from an extension to a workbench contribution#31
JonahBraun wants to merge 21 commits into
feature/profile-conductorfrom
feat/sideloader

Conversation

@JonahBraun

@JonahBraun JonahBraun commented Apr 13, 2026

Copy link
Copy Markdown

This PR replaces the standalone extension-sideloader extension with a built-in CodexSideloader workbench contribution and adds automation for producing "Codex Beta" PR releases.

Changes:

  • CodexSideloader Shell Contribution: Replaces the extension-sideloader extension with a native workbench contribution for more robust extension management.
  • Version-Aware Sideloading: Implements VSIX sideloading with version-mismatch detection and automatic reinstallation.
  • VSIX URL Support: Adds support for sideloading extensions directly from URLs in product.json.
  • Default Profile Isolation: Ensures sideloading logic only executes within the default VS Code profile.
  • Codex Beta PR Releases: Adds a create-pr-release script and build-system flexibility (APP_NAME, BINARY_NAME) to produce branded beta artifacts for pull requests.
  • Documentation: Updates AGENTS.md and architectural docs to reflect the new sideloading architecture.

Related Documentation:

@JonahBraun JonahBraun changed the title feat: Codex Beta branding and create-pr-release script feat: CodexSideloader shell contribution and Codex Beta PR release script Apr 13, 2026
@JonahBraun JonahBraun changed the title feat: CodexSideloader shell contribution and Codex Beta PR release script feat: move sideloader from an extension to a workbench contribution Apr 13, 2026
@JonahBraun JonahBraun marked this pull request as draft April 13, 2026 18:26
@JonahBraun

Copy link
Copy Markdown
Author

Pre-release: 1.108.1-pr31-b7efbd8 https://github.com/genesis-ai-dev/codex/releases/tag/1.108.1-pr31-b7efbd8

@github-actions

Copy link
Copy Markdown

Pre-release build ready: 1.108.1-pr31-b3baa31

@github-actions

Copy link
Copy Markdown

Pre-release build ready: 1.108.1-pr31-0647bca

@JonahBraun

Copy link
Copy Markdown
Author

/build

@github-actions

Copy link
Copy Markdown

❌ Build failed — logs

@JonahBraun

Copy link
Copy Markdown
Author

/build

@github-actions

Copy link
Copy Markdown

Prerelease 1.108.1-pr15bf3e3

@github-actions

Copy link
Copy Markdown

Pre-release build ready: 1.108.1-pr31-5ddcd76

@github-actions

Copy link
Copy Markdown

Pre-release build ready: 1.108.1-pr31-8f9b292

@JonahBraun JonahBraun force-pushed the feature/profile-conductor branch from 55181bb to 3af8dda Compare April 15, 2026 18:01
@github-actions

Copy link
Copy Markdown

Pre-release build ready: 1.108.1-pr31-ad33e69

@github-actions

Copy link
Copy Markdown

Pre-release: 1.108.1-pr31-247b328 https://github.com/genesis-ai-dev/codex/releases/tag/1.108.1-pr31-247b328

@JonahBraun

Copy link
Copy Markdown
Author

/build

@github-actions

Copy link
Copy Markdown

Pre-release: 1.108.1-pr31-96ab408 https://github.com/genesis-ai-dev/codex/releases/tag/1.108.1-pr31-96ab408

…r extension

Moves sideloading logic into the Codex shell as a Workbench Contribution
that uses direct IExtensionGalleryService/IWorkbenchExtensionManagementService
access instead of the public installExtension command, runs deterministically
at WorkbenchPhase.AfterRestored, and reads configuration from product.json.

## Changes
- New source overlay: codexSideloader contribution (2 files)
- New patch: feat-codex-sideloader.patch (registers in workbench.common.main.ts)
- product.json: add codexSideloadExtensions config array
- bundle-extensions.json: remove extension-sideloader entry
Config entries can now be either a string (gallery install) or an object
with `id` and `vsix` fields (direct VSIX install via shared process IPC,
bypassing the marketplace). Gallery and VSIX installs run in parallel.
- Fix TS2352 by casting IProductService through unknown before
  indexing with a string key
- Guard get-extensions.sh against empty bundle array (macOS seq 0 -1
  outputs 0, causing a null download attempt)
Point sideloader at PR-built VSIXs for codex-editor (0.24.0-pr829)
and frontier-authentication (0.4.24-pr23) to test pin enforcement.
Previously the sideloader only checked extension ID presence, so if
codex-editor 0.24.0 was already installed it would skip the VSIX install
even when a different version was configured. Add a required `version`
field to VSIX entries and reinstall whenever the installed manifest
version doesn't match.
- Default all SHOULD_BUILD_* toggles and macOS signing env vars so
  sourcing doesn't crash under `set -e` when run outside CI
- Build unsigned DMG with a warning when no Developer ID cert is
  configured, instead of silently skipping
- Fix typo: dev/build.sh sourced macos-codesign.env but the file is
  actually codesign.env
- Add version field to object entry format in CodexSideloader description
- Clarify that string entries skip any installed version; VSIX entries
  reinstall on version mismatch
- Add feat-codex-sideloader.patch to Patch Dependencies table
…e visible in all profiles

Previously, VSIX entries (e.g. Frontier) were installed via the raw
shared-process channel without a profileLocation, which defaults to a
profile-specific folder rather than the global extensions location. This
made them invisible in pin profiles created by CodexConductor.

Gallery entries use IWorkbenchExtensionManagementService.installFromGallery()
which targets defaultProfile.extensionsResource (the global location) and
are visible in all profiles — confirmed by Shared State Store being available
in pin profiles. VSIX installs now explicitly pass the same profileLocation.
@JonahBraun

Copy link
Copy Markdown
Author

/build

@github-actions

Copy link
Copy Markdown

Pre-release: 1.108.1-pr31-b653490 https://github.com/genesis-ai-dev/codex/releases/tag/1.108.1-pr31-b653490

@JonahBraun

Copy link
Copy Markdown
Author

branch merged into another PR and now in master. closing this dead PR

@JonahBraun JonahBraun closed this May 6, 2026
@JonahBraun JonahBraun deleted the feat/sideloader branch May 6, 2026 01:02
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