Skip to content
Closed

Vm #332021

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
135d0d6
docs: verify upstream vscode base and document code-oss architecture
openhands-agent Aug 18, 2026
2d34494
feat: apply gitcortex branding
openhands-agent Aug 18, 2026
80da8f4
Merge pull request #1 from Frankenstein-dev197/gitcortex/stabilize-base
Frankenstein-dev197 Aug 18, 2026
73326e5
Phase 3: Desktop Build & Runtime Validation — docs
openhands-agent Aug 18, 2026
188f106
Merge pull request #2 from Frankenstein-dev197/gitcortex/phase3-deskt…
Frankenstein-dev197 Aug 18, 2026
9b773d0
Phase 4: Production Desktop — visual identity & Linux packaging branding
openhands-agent Aug 18, 2026
28f7f8d
Merge pull request #3 from Frankenstein-dev197/gitcortex/phase4-produ…
Frankenstein-dev197 Aug 18, 2026
98e06c3
Add Virtual Computers: QEMU/KVM virtual machines integrated into the …
openhands-agent Aug 20, 2026
77c4292
Merge pull request #4 from Frankenstein-dev197/gitcortex/ordinateurs-…
Frankenstein-dev197 Aug 20, 2026
c8230bb
Fix workbench module loading and populate VM install ISO settings
openhands-agent Aug 20, 2026
3d59453
Merge pull request #5 from Frankenstein-dev197/fix/protocol-and-prima…
Frankenstein-dev197 Aug 20, 2026
d0a6be9
Merge branch 'microsoft:main' into main
Frankenstein-dev197 Aug 21, 2026
fde6743
Merge branch 'microsoft:main' into main
Frankenstein-dev197 Aug 21, 2026
111119b
fix: harden GitCortex VM and VNC integration
Aug 23, 2026
1d42187
Merge PR #6: harden GitCortex VM and VNC integration
Frankenstein-dev197 Aug 23, 2026
f889e98
fix: preserve protected visibility for mangler
Frankenstein-dev197 Aug 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .eslint-ignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
**/extensions/html-language-features/server/lib/jquery.d.ts
**/extensions/html-language-features/server/src/test/pathCompletionFixtures/**
**/extensions/ipynb/notebook-out/**
**/workbench/contrib/virtualMachines/browser/media/novnc/**
**/extensions/markdown-language-features/media/**
**/extensions/markdown-language-features/markdown-editor-out/**
**/extensions/markdown-language-features/notebook-out/**
Expand Down
48 changes: 45 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,47 @@
# VS Code Agents Instructions
# GitCortex Studio — Agent Instructions

This file provides instructions for AI coding agents working with the VS Code codebase.
This file is the persistent memory for AI coding agents working on the GitCortex Studio
codebase (a fork of Code-OSS / VS Code, MIT licensed). For the upstream project overview,
architecture, and coding guidelines, see the [Copilot Instructions](.github/copilot-instructions.md).

For detailed project overview, architecture, coding guidelines, and validation steps, see the [Copilot Instructions](.github/copilot-instructions.md).
## Project identity
- Product name: **GitCortex Studio** (`nameLong`), binary `gitcortex` (`applicationName`).
- Identity fields live in `product.json`: `nameShort=GitCortex`, `nameLong=GitCortex Studio`,
`applicationName=gitcortex`, `linuxIconName=gitcortex`, `urlProtocol=gitcortex`,
`dataFolderName=GitCortexStudio`, `darwinBundleIdentifier=studio.gitcortex`.
- The MIT license and attribution to Microsoft Corporation (original VS Code) are preserved
in `LICENSE.txt`; `licenseName=MIT`. Do not remove upstream attribution.

## Build (Linux x64 production, minified)
- Use the Node.js version declared by `.nvmrc` (or an equivalent supported Node version in CI). A version manager such as `nvm`, `fnm`, or Volta is recommended; do not rely on machine-specific absolute paths.
- Install root dependencies with `npm install`, then install build dependencies with `npm install` from `build/` when the build tooling is not already present.
- Use the repository scripts (`npm run gulp <task>`, `npm run compile-build`, and `npm run test-node -- --build`) from the repository root.
- Minified production artifacts are emitted by the platform-specific gulp tasks, for example `npm run gulp vscode-linux-x64-min`.
- `version`/`commit`/`date` are **build-injected** into `product.json` (source has them absent);
`quality` is intentionally absent (fork ships no Microsoft auto-update channel).
- Icon: `resources/linux/code.png` (1024x1024) is the desktop icon, copied to
`usr/share/pixmaps/gitcortex.png` at packaging time.

## Runtime / NLS gotcha
- `src/vs/base/node/nls.ts` `resolveNLSConfiguration()` early-returns when `VSCODE_DEV` is
truthy, skipping bundled NLS message loading. If the OpenVSCode-server host environment
leaks `VSCODE_DEV=1` into the child Electron process, the app shows `NLS MISSING: <index>`.
This is an **environment artifact, not a code bug** — a real user's environment has no
`VSCODE_DEV`, and the app boots cleanly. When testing under Xvfb, run with a clean env:
`env -u VSCODE_DEV -u VSCODE_NLS_CONFIG ./gitcortex --no-sandbox ...`.

## Linux packaging branding (Phase 4)
- `resources/linux/*.desktop` and `code.appdata.xml` use `@@PLACEHOLDER@@` tokens
(`@@NAME_LONG@@`, `@@EXEC@@`, `@@ICON@@`, `@@NAME_SHORT@@`, `@@NAME@@`, `@@URLPROTOCOL@@`,
`@@LICENSE@@`, `@@VERSION@@`, ...) replaced at packaging time from `product.json`.
- Branded text (tagline `Code editing, reimagined.`, homepage, descriptions, maintainers)
was updated in: `code.desktop`, `code-url-handler.desktop`, `code.appdata.xml`,
`debian/control.template`, `debian/templates.template`, `rpm/code.spec.template`,
`snap/snapcraft.yaml`. Keep `@@` tokens and the MIT attribution intact.
- `debian/postinst.template`: the Microsoft `packages.microsoft.com` apt-source + signing-key
registration is guarded by `if [ "@@NAME@@" != "code-oss" ] && [ "@@NAME@@" != "gitcortex" ]`
so the GitCortex `.deb` never modifies the user's apt sources. Keep this guard.

## Branch / PR workflow
- Phases 1-3 merged to `main` via PRs #1 and #2. Phase 4 branch: `gitcortex/phase4-production`.
- Do not push to `main`; open PRs targeting `main`.
69 changes: 69 additions & 0 deletions CODE-OSS-UPSTREAM.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# Code-OSS Upstream Provenance

This document records the exact upstream provenance of the code in this repository.
No information is fabricated: every value below is taken directly from the live
repository state and the upstream `microsoft/vscode` GitHub API.

## Upstream repository

```
https://github.com/microsoft/vscode
```

## Upstream commit (base of this fork)

The `main` branch HEAD of this repository is a **verbatim** commit from
`microsoft/vscode`. There are **no fork-specific modifications** on `main`.

```
Upstream commit: c780ea96132b1cabf170a454aced493d8317eee7
Author: Vijay Upadya
Author date: 2026-08-08T06:23:28Z
Commit message: New TAS assignments endpoint updates (lifecycle, readiness, disposal) (#329736)
```

Verification: `GET https://api.github.com/repos/microsoft/vscode/commits/c780ea96132b1cabf170a454aced493d8317eee7`
returns HTTP 200 with the same SHA and message, confirming the commit exists in
the upstream repository.

## Upstream version

```
Package name (package.json): code-oss-dev
Package version: 1.133.0
Product (product.json): Code - OSS
```

## Import date

```
Fork repository created_at: 2026-08-08T07:29:20Z
Fork parent (GitHub): microsoft/vscode
Default branch: main
```

The fork was created on GitHub on 2026-08-08, pointing at the upstream commit
above. Import date: **2026-08-08**.

## Current GitCortex repository

```
https://github.com/Frankenstein-dev197/vscode
```

## Modifications already present in Frankenstein-dev197/vscode at import time

**None.** The working tree on `main` is clean and identical to the upstream
commit `c780ea96132b1cabf170a454aced493d8317eee7`. GitCortex modifications will
be applied on top of this commit in subsequent phases, tracked separately.

## Node.js / toolchain (as required by the upstream repository)

```
.nvmrc: 24.18.0
Lockfile: package-lock.json (lockfileVersion 3)
Build system: gulp (npm scripts: compile, compile-build, watch)
```

The upstream `preinstall` script (`build/npm/preinstall.ts`) enforces that the
running Node.js major version matches `.nvmrc` (major 24, >= 24.18.0).
1 change: 1 addition & 0 deletions build/buildfile.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ export const workbenchDesktop = [
createModuleDescription('vs/platform/terminal/node/ptyHostMain'),
createModuleDescription('vs/platform/agentHost/node/agentHostMain'),
createModuleDescription('vs/platform/agentHost/node/diffWorkerMain'),
createModuleDescription('vs/platform/virtualMachines/node/virtualMachinesDaemonMain'),
createModuleDescription('vs/workbench/api/node/extensionHostProcess'),
createModuleDescription('vs/workbench/workbench.desktop.main'),
createModuleDescription('vs/sessions/sessions.desktop.main')
Expand Down
5 changes: 5 additions & 0 deletions build/gulpfile.vscode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,11 @@ const vscodeResourceIncludes = [
// Webview
'out-build/vs/workbench/contrib/webview/browser/pre/*.{js,html}',

// GitCortex virtual desktop: runtime modules loaded dynamically by noVNC.
// Keep development documentation out of the application resource set.
'out-build/vs/workbench/contrib/virtualMachines/browser/media/novnc/**/*.js',
'out-build/vs/workbench/contrib/virtualMachines/browser/media/novnc/LICENSE.txt',

// Extension Host Worker
'out-build/vs/workbench/services/extensions/worker/webWorkerExtensionHostIframe.html',

Expand Down
4 changes: 4 additions & 0 deletions build/lib/i18n.resources.json
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,10 @@
"name": "vs/workbench/contrib/update",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/contrib/virtualMachines",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/contrib/url",
"project": "vscode-workbench"
Expand Down
6 changes: 5 additions & 1 deletion build/next/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,11 @@ const commonResourcePatterns = [

// Resources for desktop target
const desktopResourcePatterns = [
...commonResourcePatterns,
...commonResourcePatterns,

// GitCortex virtual desktop: dynamically imported noVNC runtime.
'vs/workbench/contrib/virtualMachines/browser/media/novnc/**/*.js',
'vs/workbench/contrib/virtualMachines/browser/media/novnc/LICENSE.txt',

// HTML
'vs/code/electron-browser/workbench/workbench.html',
Expand Down
59 changes: 59 additions & 0 deletions docs/BRANDING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# GitCortex Studio — branding vérifié

Ce document décrit l’identité produit effectivement configurée dans `product.json` et consommée par les pipelines de build. Les identifiants techniques upstream nécessaires à la compatibilité restent inchangés sauf lorsqu’un identifiant d’installation doit être propre à GitCortex.

## Identité produit

| Champ `product.json` | Valeur effective |
| --- | --- |
| `nameShort` | `GitCortex` |
| `nameLong` | `GitCortex Studio` |
| `applicationName` | `gitcortex` |
| `dataFolderName` | `GitCortexStudio` |
| `sharedDataFolderName` | `GitCortexStudio-shared` |
| `win32MutexName` | `gitcortexstudio` |
| `win32DirName` | `GitCortex Studio` |
| `win32NameVersion` | `GitCortex Studio` |
| `win32RegValueName` | `GitCortexStudio` |
| `win32AppUserModelId` | `GitCortex.Studio` |
| `darwinBundleIdentifier` | `studio.gitcortex` |
| `linuxIconName` | `gitcortex` |
| `urlProtocol` | `gitcortex` |
| `serverApplicationName` | `gitcortex-server` |
| `serverDataFolderName` | `.gitcortex-server` |
| `tunnelApplicationName` | `gitcortex-tunnel` |
| `win32ShellNameShort` | `G&itCortex` |
| `win32TunnelServiceMutex` | `gitcortex-tunnelservice` |
| `win32TunnelMutex` | `gitcortex-tunnel` |

## Identifiants d’installation Windows

Les AppId utilisés par le build sont propres à GitCortex, stables et distincts des valeurs `microsoft/vscode`. `build/gulpfile.vscode.win32.ts` sélectionne les valeurs système ou utilisateur selon la cible, puis les injecte dans Inno Setup comme `AppId`. La valeur système correspondante est également fournie comme `IncompatibleTargetAppId` afin d’empêcher une confusion entre les cibles système et utilisateur.

| Architecture | Installateur système | Installateur utilisateur |
| --- | --- | --- |
| x64 | `{{C6C81077-3514-4B45-A310-3F77E2A4A7A4}` | `{{8476B1DB-0E8E-4690-874E-B5E37E4DBE09}` |
| arm64 | `{{E9397900-D454-49A8-86F6-C04FACB6D9F5}` | `{{E6B0B875-5427-45BC-B7B0-D9856142B195}` |

Ces quatre valeurs sont utilisées pour x64, arm64, les installateurs système et utilisateur, les mises à niveau et la désinstallation. Elles permettent à GitCortex de coexister avec VS Code et Code-OSS sans réutiliser leur identité Inno Setup.

## URLs et licences

| Champ | Valeur effective |
| --- | --- |
| `licenseName` | `MIT` |
| `licenseUrl` | `https://github.com/Frankenstein-dev197/vscode/blob/main/LICENSE.txt` |
| `serverLicenseUrl` | `https://github.com/Frankenstein-dev197/vscode/blob/main/LICENSE.txt` |
| `licenseFileName` | `LICENSE.txt` |
| `reportIssueUrl` | `https://github.com/Frankenstein-dev197/vscode/issues/new` |
| `repository` / `homepage` / `bugs` | Non définis dans `product.json` |
| `download URLs` | Non définies dans `product.json` |
| `update URLs` | Aucun canal Microsoft d’auto-mise à jour n’est configuré dans `product.json` |

Les extensions intégrées et les URLs de services conservées dans `product.json` sont des éléments fonctionnels ou de provenance, et ne doivent pas être réécrites en URLs GitCortex sans remplacement opérationnel correspondant. Les licences MIT, les notices Microsoft et les notices des composants tiers restent distribuées avec le produit.

## Pipeline de consommation

Le pipeline Windows lit les quatre champs `win32*x*AppId` depuis `product.json`; ils ne sont donc pas de simples valeurs documentaires. Les pipelines Linux et macOS lisent respectivement `applicationName`, `nameShort`, `nameLong`, `linuxIconName`, `urlProtocol` et `darwinBundleIdentifier` pour matérialiser les artefacts de la plateforme.

Toute modification de branding doit modifier d’abord `product.json`, puis mettre ce document à jour et vérifier le pipeline qui consomme le champ concerné.
Loading