Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
136 changes: 136 additions & 0 deletions .github/workflows/build-desktop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -261,3 +261,139 @@ jobs:
path: apps/desktop/release/*-linux.yml
retention-days: ${{ inputs.artifact_retention_days }}
if-no-files-found: error

build-windows:
name: Build - Windows (x64)
runs-on: windows-latest
environment: production
# Applies to Git spawned by actions/checkout (Git 2.31+). Shell-only config is too late for checkout.
env:
GIT_CONFIG_COUNT: 1
GIT_CONFIG_KEY_0: core.longpaths
GIT_CONFIG_VALUE_0: "true"

steps:
# OS + global config (redundant with env above; helps older Git / edge cases).
- name: Enable Windows long paths
shell: powershell
run: |
git config --global core.longpaths true
if (-not (Test-Path 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem')) { exit 0 }
try {
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name 'LongPathsEnabled' -Value 1 -Type DWord -Force -ErrorAction Stop
Write-Host 'LongPathsEnabled=1 set'
} catch {
Write-Host 'Registry LongPathsEnabled skipped (no permission):' $_.Exception.Message
}

- name: Checkout code
uses: actions/checkout@v4

- name: Setup Bun
id: setup-bun
uses: oven-sh/setup-bun@v2
with:
bun-version-file: .bun-version

- name: Cache dependencies
uses: actions/cache@v4
with:
path: |
~/.bun/install/cache
key: ${{ runner.os }}-bun-${{ steps.setup-bun.outputs.bun-revision }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-bun-${{ steps.setup-bun.outputs.bun-revision }}-

- name: Install dependencies
run: bun install --frozen --ignore-scripts

- name: Install desktop native dependencies
working-directory: apps/desktop
run: bun run install:deps

- name: Set version suffix
if: inputs.version_suffix != ''
working-directory: apps/desktop
shell: bash
run: |
CURRENT_VERSION=$(node -p "require('./package.json').version")
NEW_VERSION="${CURRENT_VERSION}${{ inputs.version_suffix }}"
echo "Setting version to: $NEW_VERSION"
node -e "
const fs = require('fs');
const pkg = require('./package.json');
pkg.version = '$NEW_VERSION';
fs.writeFileSync('./package.json', JSON.stringify(pkg, null, '\t') + '\n');
"
echo "Updated package.json version to $NEW_VERSION"

- name: Clean dev folder
working-directory: apps/desktop
run: bun run clean:dev

- name: Generate file icons
working-directory: apps/desktop
run: bun run generate:icons

- name: Compile app with electron-vite
working-directory: apps/desktop
env:
NEXT_PUBLIC_POSTHOG_KEY: ${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }}
NEXT_PUBLIC_POSTHOG_HOST: ${{ secrets.NEXT_PUBLIC_POSTHOG_HOST }}
GOOGLE_CLIENT_ID: ${{ secrets.GOOGLE_CLIENT_ID }}
GH_CLIENT_ID: ${{ secrets.GH_CLIENT_ID }}
NEXT_PUBLIC_WEB_URL: ${{ secrets.NEXT_PUBLIC_WEB_URL }}
NEXT_PUBLIC_API_URL: ${{ secrets.NEXT_PUBLIC_API_URL }}
NEXT_PUBLIC_DOCS_URL: ${{ secrets.NEXT_PUBLIC_DOCS_URL }}
NEXT_PUBLIC_STREAMS_URL: ${{ secrets.NEXT_PUBLIC_STREAMS_URL }}
NEXT_PUBLIC_ELECTRIC_URL: ${{ secrets.NEXT_PUBLIC_ELECTRIC_URL }}
SENTRY_DSN_DESKTOP: ${{ secrets.SENTRY_DSN_DESKTOP }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SUPERSET_WORKSPACE_NAME: superset
run: bun run compile:app

- name: Build Electron app
working-directory: apps/desktop
env:
CSC_IDENTITY_AUTO_DISCOVERY: "false"
run: bun run package -- --publish never --config ${{ inputs.electron_builder_config }}
Comment thread
quueli marked this conversation as resolved.

- name: Verify Windows NSIS + update manifest exist
working-directory: apps/desktop
shell: bash
run: |
ls -la release
test -n "$(ls -1 release/*-x64.exe 2>/dev/null | grep -v __uninstaller || true)" || {
echo "::error::No NSIS installer (*.exe) generated in apps/desktop/release"
exit 1
}
test -f release/latest.yml || {
echo "::error::latest.yml missing from apps/desktop/release — auto-update may be broken"
exit 1
}
Comment thread
quueli marked this conversation as resolved.

- name: Upload Windows NSIS installer
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.artifact_prefix }}-win-x64-nsis
path: |
Comment thread
quueli marked this conversation as resolved.
apps/desktop/release/*-x64.exe
!apps/desktop/release/**/*__uninstaller*.exe
Comment thread
quueli marked this conversation as resolved.
retention-days: ${{ inputs.artifact_retention_days }}
if-no-files-found: error

- name: Upload Windows block map
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.artifact_prefix }}-win-x64-blockmap
path: apps/desktop/release/*.blockmap
retention-days: ${{ inputs.artifact_retention_days }}
if-no-files-found: warn
Comment thread
quueli marked this conversation as resolved.

- name: Upload Windows auto-update manifest
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.artifact_prefix }}-win-x64-update-manifest
path: apps/desktop/release/latest.yml
retention-days: ${{ inputs.artifact_retention_days }}
if-no-files-found: error
8 changes: 8 additions & 0 deletions .github/workflows/release-desktop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,14 @@ jobs:
break
fi
done
# Windows NSIS: stable name for /releases/latest/download/Superset-x64.exe
for file in *-x64.exe; do
if [[ -f "$file" && "$file" != *"__uninstaller"* ]]; then
cp "$file" "Superset-x64.exe"
echo "Created stable copy: Superset-x64.exe"
break
fi
done
echo "Release artifacts:"
ls -la

Expand Down
93 changes: 76 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@

### The Code Editor for AI Agents

[![GitHub stars](https://img.shields.io/github/stars/superset-sh/superset?style=flat&logo=github)](https://github.com/superset-sh/superset/stargazers)
[![GitHub release](https://img.shields.io/github/v/release/superset-sh/superset?style=flat&logo=github)](https://github.com/superset-sh/superset/releases)
**Fork [quueli/superset-windows](https://github.com/quueli/superset-windows)** — Windows 10+ desktop builds, cross-platform `postinstall`, and Windows CI workflows. Upstream: [superset-sh/superset](https://github.com/superset-sh/superset).

[![GitHub stars](https://img.shields.io/github/stars/quueli/superset-windows?style=flat&logo=github)](https://github.com/quueli/superset-windows/stargazers)
[![GitHub release](https://img.shields.io/github/v/release/quueli/superset-windows?style=flat&logo=github)](https://github.com/quueli/superset-windows/releases)
[![License](https://img.shields.io/github/license/superset-sh/superset?style=flat)](LICENSE.md)
[![Twitter](https://img.shields.io/badge/@superset__sh-555?logo=x)](https://x.com/superset_sh)
[![Discord](https://img.shields.io/badge/Discord-555?logo=discord)](https://discord.gg/cZeD9WYcV7)
Expand All @@ -17,7 +19,7 @@ Works with any CLI agent. Built for local worktree-based development.

<br />

[**Download for macOS**](https://github.com/superset-sh/superset/releases/latest) &nbsp;&bull;&nbsp; [Documentation](https://docs.superset.sh) &nbsp;&bull;&nbsp; [Changelog](https://github.com/superset-sh/superset/releases) &nbsp;&bull;&nbsp; [Discord](https://discord.gg/cZeD9WYcV7)
[**Windows installer (x64)**](https://github.com/quueli/superset-windows/releases/latest) &nbsp;&bull;&nbsp; [**macOS (upstream)**](https://github.com/superset-sh/superset/releases/latest) &nbsp;&bull;&nbsp; [Documentation](https://docs.superset.sh) &nbsp;&bull;&nbsp; [Changelog (upstream)](https://github.com/superset-sh/superset/releases) &nbsp;&bull;&nbsp; [Discord](https://discord.gg/cZeD9WYcV7)

<br />

Expand Down Expand Up @@ -71,7 +73,7 @@ If it runs in a terminal, it runs on Superset

| Requirement | Details |
|:------------|:--------|
| **OS** | macOS (Windows/Linux untested) |
| **OS** | **Windows 10+ x64** (builds from this fork). macOS / Linux — same as upstream. On Windows, run `git config --global core.longpaths true` **before** cloning to avoid long-path errors. |
| **Runtime** | [Bun](https://bun.sh/) v1.0+ |
| **Version Control** | Git 2.20+ |
| **GitHub CLI** | [gh](https://cli.github.com/) |
Expand All @@ -81,7 +83,8 @@ If it runs in a terminal, it runs on Superset

### Quick Start (Pre-built)

**[Download Superset for macOS](https://github.com/superset-sh/superset/releases/latest)**
- **Windows x64:** [последний релиз форка](https://github.com/quueli/superset-windows/releases/latest) — установщик NSIS (`Superset-*-x64.exe` или стабильное имя `Superset-x64.exe` в релизе).
- **macOS:** [официальные сборки upstream](https://github.com/superset-sh/superset/releases/latest).
Comment thread
quueli marked this conversation as resolved.

### Build from Source

Expand All @@ -91,10 +94,14 @@ If it runs in a terminal, it runs on Superset
**1. Clone the repository**

```bash
git clone https://github.com/superset-sh/superset.git
cd superset
git clone https://github.com/quueli/superset-windows.git
cd superset-windows
```

На **Windows** перед клоном (при ошибке «Filename too long»): `git config --global core.longpaths true`.

Для нативных модулей десктопа на Windows нужны **Visual Studio Build Tools** с рабочей нагрузкой **Desktop development with C++** (MSVC + Windows SDK).

Comment thread
coderabbitai[bot] marked this conversation as resolved.
**2. Set up environment variables** (choose one):

Option A: Full setup
Expand Down Expand Up @@ -127,11 +134,62 @@ bun run dev

```bash
bun run build
open apps/desktop/release
```

Артефакты: `apps/desktop/release/` — на Windows установщик **NSIS** `*-x64.exe`, на macOS `.dmg` / `.zip`, на Linux `.AppImage`.

Локально только Windows-инсталлятор:

```bash
cd apps/desktop
bun run clean:dev && bun run generate:icons && bun run compile:app
set CSC_IDENTITY_AUTO_DISCOVERY=false # cmd
# PowerShell: $env:CSC_IDENTITY_AUTO_DISCOVERY='false'
bun run package
```
Comment thread
quueli marked this conversation as resolved.

</details>

## Releases in this fork / Релизы в форке

GitHub Actions собирает **macOS**, **Linux** и **Windows (x64)**. Финальный **GitHub Release** с файлами создаётся **только при push тега** вида `desktop-v*.*.*` (например `desktop-v1.4.8`). Job `release` не запускается от обычного push в ветку.

### Вариант A — релиз через тег (рекомендуется)

1. Убедитесь, что секреты для environment **`production`** в репозитории заданы (как у upstream: переменные для `compile:app`, при необходимости Sentry и т.д.). Без них шаг компиляции в CI может упасть.
2. Обновите версию в [`apps/desktop/package.json`](apps/desktop/package.json) (`version`), закоммитьте.
3. Создайте и отправьте тег:

```bash
git checkout main
git pull origin main
git tag desktop-v1.4.8
git push origin desktop-v1.4.8
```

4. Откройте **Actions** → workflow **Release Desktop App** → дождитесь окончания job **build** (все платформы) и **release**.
5. В репозитории появится **черновик** релиза (draft). Проверьте вложения (`.dmg`, `.AppImage`, `.exe`, манифесты), затем нажмите **Publish release**.

Стабильные имена для прямых ссылок (скрипт релиза создаёт копии): например `Superset-x64.exe`, `Superset-arm64.dmg`, `latest-linux.yml`.

### Вариант B — только сборка без автоматического релиза

В **Actions** запустите **Release Desktop App** вручную (**Run workflow**). Соберутся артефакты для скачивания из вкладки run, но шаг **Create GitHub Release** выполняется только при условии `refs/tags/desktop-v*` — для полноценного релиза всё равно используйте тег из варианта A.

### Вариант C — локальная сборка и ручная загрузка

Соберите `apps/desktop/release/*` локально (см. выше), затем в GitHub: **Releases** → **Draft a new release** → прикрепите файлы и опубликуйте.

### Синхронизация с upstream

```bash
git remote add upstream https://github.com/superset-sh/superset.git # один раз
git fetch upstream
git checkout main
git merge upstream/main
# разрешите конфликты, проверьте сборку, затем push в origin
```

Comment thread
quueli marked this conversation as resolved.
## Keyboard Shortcuts

All shortcuts are customizable via **Settings > Keyboard Shortcuts** (`⌘/`). See [full documentation](https://docs.superset.sh/keyboard-shortcuts).
Expand Down Expand Up @@ -230,17 +288,17 @@ This repo uses the published upstream `mastracode` and `@mastra/*` packages dire

## Contributing

We welcome contributions! If you have a suggestion that would make Superset better:
Contributions to **this fork** (Windows, CI, документация):

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
1. Клонируйте [quueli/superset-windows](https://github.com/quueli/superset-windows) (или свой форк от него).
2. Ветка фичи: `git checkout -b feature/amazing-feature`
3. Коммит: `git commit -m 'Add amazing feature'`
4. Пуш: `git push origin feature/amazing-feature`
5. Откройте **Pull Request в `quueli/superset-windows`**.

You can also [open issues](https://github.com/superset-sh/superset/issues) for bugs or feature requests.
Issues и обсуждения по **апстриму**: [superset-sh/superset/issues](https://github.com/superset-sh/superset/issues). По сборке Windows и релизам форка удобнее заводить issue в [quueli/superset-windows/issues](https://github.com/quueli/superset-windows/issues).

See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed instructions and code of conduct.
Общие правила проекта: [CONTRIBUTING.md](CONTRIBUTING.md) (ориентир — upstream).

Comment thread
quueli marked this conversation as resolved.
<a href="https://github.com/superset-sh/superset/graphs/contributors">
<img src="https://contrib.rocks/image?repo=superset-sh/superset" />
Expand All @@ -252,7 +310,8 @@ Join the Superset community to get help, share feedback, and connect with other

- **[Discord](https://discord.gg/cZeD9WYcV7)** — Chat with the team and community
- **[Twitter](https://x.com/superset_sh)** — Follow for updates and announcements
- **[GitHub Issues](https://github.com/superset-sh/superset/issues)** — Report bugs and request features
- **[GitHub Issues (upstream)](https://github.com/superset-sh/superset/issues)** — Report bugs and request features
- **[Issues (this fork)](https://github.com/quueli/superset-windows/issues)** — Windows build / fork-specific
- **[GitHub Discussions](https://github.com/superset-sh/superset/discussions)** — Ask questions and share ideas
Comment thread
quueli marked this conversation as resolved.

### Team
Expand Down
4 changes: 3 additions & 1 deletion apps/desktop/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "@superset/desktop",
"productName": "Superset",
"description": "The last developer tool you'll ever need",
"version": "1.4.7",
"version": "1.4.8",
"main": "./dist/main/index.js",
"resources": "src/resources",
"repository": {
Expand All @@ -26,6 +26,8 @@
"build": "cross-env CSC_IDENTITY_AUTO_DISCOVERY=false electron-builder --publish never",
"prepackage": "bun run copy:native-modules && bun run validate:native-runtime",
"package": "electron-builder --config electron-builder.ts",
"patch:node-pty-win-spectre": "bun ../../scripts/patch-node-pty-spectre-windows.ts",
"preinstall:deps": "bun run patch:node-pty-win-spectre",
"install:deps": "electron-builder install-app-deps",
"release": "electron-builder --publish always",
"clean:dev": "rimraf ./node_modules/.dev",
Expand Down
Loading