From 0c26ea67c05be85f4e23dec0267186ede0a36811 Mon Sep 17 00:00:00 2001 From: huyplb Date: Sat, 25 Jul 2026 22:30:54 -0600 Subject: [PATCH] chore: retire Winget publish and Tauri cargo audit Stop shipping Winget packages and drop desktop Rust audit gates now that Tauri releases are retired; Windows install docs point at Node + npm. Co-authored-by: Cursor --- .github/dependabot.yml | 14 -- .github/workflows/dependency-security.yml | 29 +-- .github/workflows/desktop-release.yml | 2 +- .github/workflows/release-gate.yml | 22 +- .github/workflows/winget.yml | 201 ------------------ README.md | 8 +- SECURITY.md | 1 - docs/INSTALL.md | 20 +- docs/PUBLISH.md | 4 +- docs/security/security-process.md | 7 +- docs/winget.md | 39 ---- packaging/winget/FoxschemaLauncher.cs | 62 ------ .../TediousCode.FoxSchema.DB2.installer.yaml | 20 -- ...ediousCode.FoxSchema.DB2.locale.en-US.yaml | 28 --- .../0.1.45/TediousCode.FoxSchema.DB2.yaml | 6 - .../TediousCode.FoxSchema.installer.yaml | 20 -- .../TediousCode.FoxSchema.locale.en-US.yaml | 26 --- .../0.1.45/TediousCode.FoxSchema.yaml | 6 - .../TediousCode.FoxSchema.installer.yaml | 29 --- .../TediousCode.FoxSchema.locale.en-US.yaml | 27 --- .../0.1.67/TediousCode.FoxSchema.yaml | 6 - packaging/winget/build-portable.ps1 | 101 --------- 22 files changed, 14 insertions(+), 664 deletions(-) delete mode 100644 .github/workflows/winget.yml delete mode 100644 docs/winget.md delete mode 100644 packaging/winget/FoxschemaLauncher.cs delete mode 100644 packaging/winget/TediousCode.FoxSchema.DB2/0.1.45/TediousCode.FoxSchema.DB2.installer.yaml delete mode 100644 packaging/winget/TediousCode.FoxSchema.DB2/0.1.45/TediousCode.FoxSchema.DB2.locale.en-US.yaml delete mode 100644 packaging/winget/TediousCode.FoxSchema.DB2/0.1.45/TediousCode.FoxSchema.DB2.yaml delete mode 100644 packaging/winget/TediousCode.FoxSchema/0.1.45/TediousCode.FoxSchema.installer.yaml delete mode 100644 packaging/winget/TediousCode.FoxSchema/0.1.45/TediousCode.FoxSchema.locale.en-US.yaml delete mode 100644 packaging/winget/TediousCode.FoxSchema/0.1.45/TediousCode.FoxSchema.yaml delete mode 100644 packaging/winget/TediousCode.FoxSchema/0.1.67/TediousCode.FoxSchema.installer.yaml delete mode 100644 packaging/winget/TediousCode.FoxSchema/0.1.67/TediousCode.FoxSchema.locale.en-US.yaml delete mode 100644 packaging/winget/TediousCode.FoxSchema/0.1.67/TediousCode.FoxSchema.yaml delete mode 100644 packaging/winget/build-portable.ps1 diff --git a/.github/dependabot.yml b/.github/dependabot.yml index cd48ca1..c9bafda 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -18,17 +18,3 @@ updates: update-types: - minor - patch - - # Rust / Cargo — covers the Tauri desktop app dependencies. - - package-ecosystem: cargo - directory: /apps/desktop/src-tauri - schedule: - interval: weekly - day: monday - time: "08:00" - timezone: "America/Edmonton" - open-pull-requests-limit: 3 - labels: - - dependencies - - security - - rust diff --git a/.github/workflows/dependency-security.yml b/.github/workflows/dependency-security.yml index 8055498..09e8fcb 100644 --- a/.github/workflows/dependency-security.yml +++ b/.github/workflows/dependency-security.yml @@ -2,8 +2,8 @@ name: Dependency Security # Runs on every PR and every push to main. # Hard-blocks on Critical npm vulnerabilities. -# Hard-blocks on any Rust advisory (cargo audit). # Warns on High npm vulnerabilities (non-blocking — devDep false positives are common). +# Tauri/cargo audit is not run — desktop releases are retired. on: pull_request: @@ -75,30 +75,3 @@ jobs: # server/CLI filesystem operations use variable paths by design. - name: Run ESLint security rules run: npx eslint . - - # ── Rust / cargo audit ───────────────────────────────────────────────────── - cargo-audit: - name: cargo audit - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v5 - - - name: Setup Rust toolchain - uses: dtolnay/rust-toolchain@stable - - - name: Cache Cargo registry - uses: actions/cache@v5 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - key: cargo-audit-${{ hashFiles('apps/desktop/src-tauri/Cargo.lock') }} - restore-keys: cargo-audit- - - - name: Install cargo-audit - run: cargo install cargo-audit --locked --quiet - - - name: Run cargo audit - working-directory: apps/desktop/src-tauri - run: cargo audit diff --git a/.github/workflows/desktop-release.yml b/.github/workflows/desktop-release.yml index 59f962e..8712df8 100644 --- a/.github/workflows/desktop-release.yml +++ b/.github/workflows/desktop-release.yml @@ -1,7 +1,7 @@ name: Desktop Release # RETIRED — desktop (Tauri) installers are no longer published. -# Distribution is CLI-first: npm, Homebrew, Winget (CLI), and Docker. +# Distribution is CLI-first: npm, Homebrew, and Docker. # See README.md and docs/DEPLOYMENT.md. # # This workflow is kept only so old workflow links do not 404. It does not diff --git a/.github/workflows/release-gate.yml b/.github/workflows/release-gate.yml index 25ce8c3..c0fec62 100644 --- a/.github/workflows/release-gate.yml +++ b/.github/workflows/release-gate.yml @@ -79,30 +79,11 @@ jobs: | tar -xz -C /usr/local/bin gitleaks - run: gitleaks detect --source . --config .gitleaks.toml --redact - # ── Gate: cargo audit ─────────────────────────────────────────────────────── - cargo-audit: - name: cargo audit - runs-on: ubuntu-latest - permissions: - contents: read - steps: - - uses: actions/checkout@v5 - - uses: dtolnay/rust-toolchain@stable - - uses: actions/cache@v5 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - key: cargo-audit-${{ hashFiles('apps/desktop/src-tauri/Cargo.lock') }} - - run: cargo install cargo-audit --locked --quiet - - run: cargo audit - working-directory: apps/desktop/src-tauri - # ── Publish: create GitHub Release draft ──────────────────────────────────── # Only runs if ALL gate jobs succeed. create-release: name: Create Release Draft - needs: [unit-tests, eslint-security, npm-audit, gitleaks, cargo-audit] + needs: [unit-tests, eslint-security, npm-audit, gitleaks] runs-on: ubuntu-latest permissions: contents: write @@ -129,6 +110,5 @@ jobs: - ✅ ESLint security rules - ✅ npm audit (no Critical vulnerabilities) - ✅ Gitleaks (no secrets detected) - - ✅ cargo audit (no Rust advisories) > **Review this draft before publishing.** Edit the release notes above, then click "Publish release." diff --git a/.github/workflows/winget.yml b/.github/workflows/winget.yml deleted file mode 100644 index 4340b4a..0000000 --- a/.github/workflows/winget.yml +++ /dev/null @@ -1,201 +0,0 @@ -name: Publish to WinGet - -# One package: TediousCode.FoxSchema (CLI portable zip; depends on OpenJS.NodeJS.LTS). -# Builds the zip from the published npm package (no monorepo build required). -# -# Secrets: -# WINGET_TOKEN — classic PAT (public_repo) for fork user huyplb - -on: - release: - types: [published] - workflow_dispatch: - inputs: - tag: - description: 'Git tag / version tag (e.g. v0.1.67)' - required: true - default: 'v0.1.67' - submit: - description: 'Open/update PR on microsoft/winget-pkgs' - type: boolean - default: true - -permissions: - contents: write - -jobs: - build-portable: - if: startsWith(github.event.release.tag_name || inputs.tag, 'v') - runs-on: windows-latest - outputs: - version: ${{ steps.meta.outputs.version }} - tag: ${{ steps.meta.outputs.tag }} - sha256: ${{ steps.meta.outputs.sha256 }} - zip_name: ${{ steps.meta.outputs.zip_name }} - steps: - - uses: actions/checkout@v5 - - - uses: actions/setup-node@v5 - with: - node-version: 22 - - - name: Pack Windows portable zip from npm - id: pack - shell: pwsh - run: | - $tag = "${{ github.event.release.tag_name || inputs.tag }}" - $ver = $tag.TrimStart('v') - ./packaging/winget/build-portable.ps1 -Version $ver - - - name: Read build metadata - id: meta - shell: pwsh - run: | - $tag = "${{ github.event.release.tag_name || inputs.tag }}" - $ver = $tag.TrimStart('v') - $zip = "dist/winget/foxschema-$ver-win-x64.zip" - $sha = (Get-FileHash -Algorithm SHA256 $zip).Hash - "tag=$tag" >> $env:GITHUB_OUTPUT - "version=$ver" >> $env:GITHUB_OUTPUT - "sha256=$sha" >> $env:GITHUB_OUTPUT - "zip_name=$(Split-Path $zip -Leaf)" >> $env:GITHUB_OUTPUT - Get-Item $zip | Format-List - - - uses: actions/upload-artifact@v4 - with: - name: foxschema-winget-zip - path: dist/winget/foxschema-*-win-x64.zip - - - name: Ensure GitHub Release + upload zip - shell: bash - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - TAG="${{ steps.meta.outputs.tag }}" - ZIP="dist/winget/${{ steps.meta.outputs.zip_name }}" - if ! gh release view "$TAG" >/dev/null 2>&1; then - gh release create "$TAG" --title "Fox Schema ${TAG#v}" \ - --notes "CLI release ${TAG}. Windows portable zip for winget; npm: foxschema@${TAG#v}." - fi - gh release upload "$TAG" "$ZIP" --clobber - - submit-winget: - needs: build-portable - if: (github.event_name == 'release' || inputs.submit) && needs.build-portable.result == 'success' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v5 - - - name: Prepare manifests with release URL + SHA256 - env: - SHA: ${{ needs.build-portable.outputs.sha256 }} - VER: ${{ needs.build-portable.outputs.version }} - TAG: ${{ needs.build-portable.outputs.tag }} - ZIP: ${{ needs.build-portable.outputs.zip_name }} - run: | - DIR="packaging/winget/TediousCode.FoxSchema/${VER}" - if [ ! -d "$DIR" ]; then - echo "::error::Missing manifests at $DIR — add packaging/winget/TediousCode.FoxSchema/${VER}/" - exit 1 - fi - INST="${DIR}/TediousCode.FoxSchema.installer.yaml" - URL="https://github.com/tedious-code/foxschema/releases/download/${TAG}/${ZIP}" - perl -i -pe "s|InstallerUrl: .*|InstallerUrl: ${URL}|" "$INST" - perl -i -pe "s|InstallerSha256: .*|InstallerSha256: ${SHA}|" "$INST" - mkdir -p /tmp/winget-manifests - cp -R "$DIR" /tmp/winget-manifests/ - cat "$INST" - - - name: Open or update PR on winget-pkgs (single package) - env: - GH_TOKEN: ${{ secrets.WINGET_TOKEN }} - VER: ${{ needs.build-portable.outputs.version }} - run: | - if [ -z "${GH_TOKEN:-}" ]; then - echo "::error::Missing WINGET_TOKEN — add a classic PAT (public_repo) for huyplb" - exit 1 - fi - - FORK_USER=huyplb - BRANCH="TediousCode.FoxSchema-${VER}" - DEST="manifests/t/TediousCode/FoxSchema/${VER}" - - rm -rf /tmp/winget-pkgs - # Sparse clone — only the TediousCode manifests tree (winget-pkgs is huge) - git clone --filter=blob:none --sparse --depth 1 \ - "https://x-access-token:${GH_TOKEN}@github.com/${FORK_USER}/winget-pkgs.git" \ - /tmp/winget-pkgs - cd /tmp/winget-pkgs - git sparse-checkout set manifests/t/TediousCode - git config user.name "foxschema-bot" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git remote add upstream https://github.com/microsoft/winget-pkgs.git || true - git fetch upstream master --depth 1 - git checkout -B "$BRANCH" upstream/master - git sparse-checkout set manifests/t/TediousCode - - rm -rf manifests/t/TediousCode/FoxSchema.DB2 - mkdir -p "$DEST" - cp /tmp/winget-manifests/"${VER}"/* "$DEST/" - - git add -A manifests/t/TediousCode - if git diff --cached --quiet; then - echo "No manifest changes to commit" - else - git -c status.showUntrackedFiles=no commit -m "New package: TediousCode.FoxSchema version ${VER}" - fi - git push -u "https://x-access-token:${GH_TOKEN}@github.com/${FORK_USER}/winget-pkgs.git" \ - "HEAD:refs/heads/${BRANCH}" --force - - gh pr close 403112 --repo microsoft/winget-pkgs --comment "Superseded: single product TediousCode.FoxSchema (CLI)." || true - gh pr close 403101 --repo microsoft/winget-pkgs --comment "Superseded by TediousCode.FoxSchema ${VER} (CLI portable zip)." || true - - # Prefer finding an existing PR; creating when one exists fails the job. - PR_URL=$(gh pr list --repo microsoft/winget-pkgs \ - --head "${FORK_USER}:${BRANCH}" \ - --state open \ - --json url --jq '.[0].url // empty') - if [ -z "$PR_URL" ]; then - PR_URL=$(gh pr list --repo microsoft/winget-pkgs \ - --search "TediousCode.FoxSchema ${VER} author:${FORK_USER}" \ - --state open \ - --json url --jq '.[0].url // empty') - fi - - if [ -n "$PR_URL" ]; then - echo "PR already open (branch updated): $PR_URL" - exit 0 - fi - - BODY_FILE=$(mktemp) - cat > "$BODY_FILE" <= 22.5.0) - - Notes: Desktop MSI / FoxSchema.DB2 packages are retired. Db2 is optional via npm ibm_db. - - Install after merge: winget install TediousCode.FoxSchema - EOF - sed -i 's/^ //' "$BODY_FILE" - - set +e - CREATE_OUT=$(gh pr create --repo microsoft/winget-pkgs \ - --head "${FORK_USER}:${BRANCH}" \ - --base master \ - --title "New package: TediousCode.FoxSchema version ${VER}" \ - --body-file "$BODY_FILE" 2>&1) - CREATE_EC=$? - set -e - echo "$CREATE_OUT" - if [ "$CREATE_EC" -eq 0 ]; then - exit 0 - fi - if echo "$CREATE_OUT" | grep -qi 'already exists'; then - echo "$CREATE_OUT" | grep -Eo 'https://github.com/microsoft/winget-pkgs/pull/[0-9]+' || true - echo "::notice::PR already exists — treating as success" - exit 0 - fi - exit "$CREATE_EC" diff --git a/README.md b/README.md index c5ef8cf..f5359bc 100644 --- a/README.md +++ b/README.md @@ -28,13 +28,7 @@ brew install foxschema docker pull 5nickels/foxschema:latest ``` -Windows (Winget — after package merge): - -```powershell -winget install TediousCode.FoxSchema -``` - -Or Node + npm: +Windows: ```powershell winget install OpenJS.NodeJS.LTS diff --git a/SECURITY.md b/SECURITY.md index f766d6d..84e005c 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -53,7 +53,6 @@ Out of scope: Automated security checks run on every pull request and every push to `main`: - **npm audit** — blocks merges on Critical npm vulnerabilities -- **cargo audit** — blocks merges on RustSec advisories - **Gitleaks** — detects committed secrets - **ESLint security rules** — static analysis for injection patterns and unsafe regex - **CodeQL** — weekly deep analysis (SQL injection, path traversal, prototype pollution) diff --git a/docs/INSTALL.md b/docs/INSTALL.md index 840f27e..7672561 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -4,7 +4,7 @@ Fox Schema is a **local web app** launched from the CLI. After install you run `foxschema` (or double-click the **Fox Schema** desktop shortcut) to open **http://localhost:3210** in your browser. -Requires **Node.js ≥ 22.5** for npm / Homebrew / Winget paths. Docker needs no Node. +Requires **Node.js ≥ 22.5** for npm / Homebrew paths. Docker needs no Node. --- @@ -14,7 +14,7 @@ Requires **Node.js ≥ 22.5** for npm / Homebrew / Winget paths. Docker needs no |----------|---------| | **npm** (macOS / Windows / Linux) | `npm install -g foxschema` | | **Homebrew** (macOS Arm + Intel) | `brew tap … && brew trust tedious-code/foxschema && brew install foxschema` | -| **Winget** (Windows) | `winget install TediousCode.FoxSchema` (or Node + `npm i -g foxschema`) | +| **Windows** | Install Node (`winget install OpenJS.NodeJS.LTS`), then `npm i -g foxschema` | | **Docker** (servers, linux/amd64) | `docker pull 5nickels/foxschema:latest` | | **curl / wget** (scripted npm) | see [curl / wget](#curl--wget) below | @@ -55,25 +55,17 @@ Details: [homebrew.md](homebrew.md). --- -## Windows (Winget) +## Windows -One package — CLI portable zip (depends on Node.js LTS): - -```powershell -winget install TediousCode.FoxSchema -foxschema -foxschema shortcut -``` - -If the winget package is not merged yet: +Install Node, then the CLI from npm: ```powershell winget install OpenJS.NodeJS.LTS npm install -g foxschema +foxschema +foxschema shortcut ``` -Details: [winget.md](winget.md). - --- ## Docker diff --git a/docs/PUBLISH.md b/docs/PUBLISH.md index 414bc84..66eab12 100644 --- a/docs/PUBLISH.md +++ b/docs/PUBLISH.md @@ -9,8 +9,8 @@ Distribution channels (one product, no separate Db2 edition): | **npm** | `foxschema` on registry.npmjs.org | `.github/workflows/npm-publish.yml` on `v*` tag | | **Docker** | `5nickels/foxschema:latest` + `:vX.Y.Z` (linux/amd64, includes Db2) | `.github/workflows/web-release.yml` on `v*` tag | | **Homebrew** | `Formula/foxschema.rb` in this repo | Manual commit after npm publish | -| **Winget** | `TediousCode.FoxSchema` portable zip on GitHub Releases | `.github/workflows/winget.yml` on release / dispatch | | **Desktop Tauri** | **Retired** — do not publish | — | +| **Winget** | **Retired** — do not publish | — | Version numbers are bumped automatically on merge to `main` (`.github/workflows/version-bump.yml`). Do **not** bump version in feature PRs. @@ -95,8 +95,8 @@ foxschema shortcut ## 5. What not to publish - Do **not** run Desktop Release (retired). +- Do **not** publish to Winget (retired). - Do **not** publish separate `db2-latest` / `FoxSchema.DB2` packages. -- Do **not** open new winget MSI PRs for Tauri installers. --- diff --git a/docs/security/security-process.md b/docs/security/security-process.md index 5776049..c145034 100644 --- a/docs/security/security-process.md +++ b/docs/security/security-process.md @@ -12,8 +12,7 @@ Pull Request opened / pushed ├─► dependency-security.yml │ ├─ npm audit --audit-level=critical ←── HARD BLOCK │ ├─ npm audit --audit-level=high ←── warn only - │ ├─ ESLint security rules ←── HARD BLOCK on error - │ └─ cargo audit ←── HARD BLOCK + │ └─ ESLint security rules ←── HARD BLOCK on error │ └─► secret-scan.yml (diff mode) ←── HARD BLOCK @@ -28,8 +27,7 @@ Tag push v* │ ├─ unit tests │ ├─ ESLint security │ ├─ npm audit critical - │ ├─ Gitleaks full scan - │ └─ cargo audit + │ └─ Gitleaks full scan │ ├─► web-release.yml → single Docker image (linux/amd64, includes Db2) │ → GHCR + Docker Hub (:latest / :vX.Y.Z) @@ -48,7 +46,6 @@ Tag push v* | `npm audit --audit-level=critical` | Blocks PR | Production deps only (`--omit=dev`) | | `npm audit --audit-level=high` | Warning only | devDep false positives are common | | ESLint security rules | Blocks PR | `--max-warnings 0` enforced | -| `cargo audit` | Blocks PR | Covers Tauri desktop Rust deps | **Why `--omit=dev` for critical?** Test tools (vitest, selenium-webdriver, esbuild) often carry high/critical advisories for code paths that are never reachable in production. Without `--omit=dev`, false positives block developer PRs for issues with no real attack surface. diff --git a/docs/winget.md b/docs/winget.md deleted file mode 100644 index d7eef75..0000000 --- a/docs/winget.md +++ /dev/null @@ -1,39 +0,0 @@ -# Winget / Windows install - -## Install (after winget-pkgs merge) - -```powershell -winget install TediousCode.FoxSchema -``` - -This installs the **CLI portable zip** (`foxschema.exe` / `fox.exe`) and depends on -**Node.js LTS** (`OpenJS.NodeJS.LTS`). Then: - -```powershell -foxschema -foxschema shortcut -``` - -## Install (today — works before winget merge) - -```powershell -winget install OpenJS.NodeJS.LTS -npm install -g foxschema -foxschema -``` - -## One package only - -| Package | Status | -|---------|--------| -| `TediousCode.FoxSchema` | Active — CLI zip, moniker `foxschema` | -| `TediousCode.FoxSchema.DB2` | Retired — do not use | - -## Maintainers - -1. Tag a release (`v0.1.67`) or run **Publish to WinGet** (`workflow_dispatch`). -2. CI builds `foxschema--win-x64.zip`, uploads it to the GitHub Release, and opens a - PR on [microsoft/winget-pkgs](https://github.com/microsoft/winget-pkgs). -3. Secret: `WINGET_TOKEN` — classic PAT (`public_repo`) for `huyplb` (fork of winget-pkgs). - -Manifests live in [`packaging/winget/TediousCode.FoxSchema/`](../packaging/winget/TediousCode.FoxSchema/). diff --git a/packaging/winget/FoxschemaLauncher.cs b/packaging/winget/FoxschemaLauncher.cs deleted file mode 100644 index 1893d77..0000000 --- a/packaging/winget/FoxschemaLauncher.cs +++ /dev/null @@ -1,62 +0,0 @@ -// Minimal Win32 launcher: runs `node \dist\index.js` with forwarded args. -// Must compile with older Roslyn/csc on GitHub windows-latest (avoid C# 8+ syntax). -using System; -using System.Diagnostics; -using System.IO; -using System.Reflection; -using System.Text; - -internal static class Program -{ - private static int Main(string[] args) - { - string root = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); - string script = Path.Combine(root, "dist", "index.js"); - if (!File.Exists(script)) - { - Console.Error.WriteLine("foxschema: missing dist\\index.js next to the executable."); - Console.Error.WriteLine("Expected: " + script); - return 1; - } - - StringBuilder argBuilder = new StringBuilder(); - argBuilder.Append('"').Append(script).Append('"'); - for (int i = 0; i < args.Length; i++) - { - argBuilder.Append(' '); - argBuilder.Append('"').Append(args[i].Replace("\"", "\\\"")).Append('"'); - } - - ProcessStartInfo psi = new ProcessStartInfo(); - psi.FileName = "node"; - psi.Arguments = argBuilder.ToString(); - psi.UseShellExecute = false; - psi.WorkingDirectory = root; - - Process proc = null; - try - { - proc = Process.Start(psi); - if (proc == null) - { - Console.Error.WriteLine("foxschema: failed to start node. Is Node.js on PATH?"); - return 1; - } - proc.WaitForExit(); - return proc.ExitCode; - } - catch (Exception ex) - { - Console.Error.WriteLine("foxschema: " + ex.Message); - Console.Error.WriteLine("Install Node.js LTS (22.5+) or: winget install OpenJS.NodeJS.LTS"); - return 1; - } - finally - { - if (proc != null) - { - proc.Dispose(); - } - } - } -} diff --git a/packaging/winget/TediousCode.FoxSchema.DB2/0.1.45/TediousCode.FoxSchema.DB2.installer.yaml b/packaging/winget/TediousCode.FoxSchema.DB2/0.1.45/TediousCode.FoxSchema.DB2.installer.yaml deleted file mode 100644 index 53a4cf7..0000000 --- a/packaging/winget/TediousCode.FoxSchema.DB2/0.1.45/TediousCode.FoxSchema.DB2.installer.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.6.0.schema.json -PackageIdentifier: TediousCode.FoxSchema.DB2 -PackageVersion: 0.1.45 -Platform: - - Windows.Desktop -MinimumOSVersion: 10.0.17763.0 -InstallerType: wix -Scope: machine -InstallModes: - - interactive - - silent - - silentWithProgress -UpgradeBehavior: install -ReleaseDate: 2026-07-16 -Installers: - - Architecture: x64 - InstallerUrl: https://github.com/tedious-code/foxschema/releases/download/v0.1.45/Fox.Schema.DB2_0.1.45_x64_en-US.msi - InstallerSha256: 53D059F11BFD5DAE512309A2AF9682B3DB022DB9E1F4039576CE40B36D028173 -ManifestType: installer -ManifestVersion: 1.6.0 diff --git a/packaging/winget/TediousCode.FoxSchema.DB2/0.1.45/TediousCode.FoxSchema.DB2.locale.en-US.yaml b/packaging/winget/TediousCode.FoxSchema.DB2/0.1.45/TediousCode.FoxSchema.DB2.locale.en-US.yaml deleted file mode 100644 index fddc7e6..0000000 --- a/packaging/winget/TediousCode.FoxSchema.DB2/0.1.45/TediousCode.FoxSchema.DB2.locale.en-US.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.6.0.schema.json -PackageIdentifier: TediousCode.FoxSchema.DB2 -PackageVersion: 0.1.45 -PackageLocale: en-US -Publisher: Tedious Code -PublisherUrl: https://github.com/tedious-code -PublisherSupportUrl: https://github.com/tedious-code/foxschema/issues -Author: huyplb -PackageName: FoxSchemaDB2 -PackageUrl: https://github.com/tedious-code/foxschema -License: Apache-2.0 -LicenseUrl: https://github.com/tedious-code/foxschema/blob/main/LICENSE -Copyright: Copyright (c) Tedious Code -ShortDescription: Database schema diff and migration tool with IBM Db2 support -Description: Fox Schema DB2 is the desktop app build that includes IBM Db2 connectivity. Compare a source database schema against a target, generate dialect-native migration SQL, and deploy it. For installs without Db2, use TediousCode.FoxSchema instead. -Moniker: foxschemadb2 -Tags: - - database - - schema - - migration - - sql - - diff - - db2 - - ibm - - foxschemadb2 -ReleaseNotesUrl: https://github.com/tedious-code/foxschema/releases/tag/v0.1.45 -ManifestType: defaultLocale -ManifestVersion: 1.6.0 diff --git a/packaging/winget/TediousCode.FoxSchema.DB2/0.1.45/TediousCode.FoxSchema.DB2.yaml b/packaging/winget/TediousCode.FoxSchema.DB2/0.1.45/TediousCode.FoxSchema.DB2.yaml deleted file mode 100644 index 3fa5695..0000000 --- a/packaging/winget/TediousCode.FoxSchema.DB2/0.1.45/TediousCode.FoxSchema.DB2.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.6.0.schema.json -PackageIdentifier: TediousCode.FoxSchema.DB2 -PackageVersion: 0.1.45 -DefaultLocale: en-US -ManifestType: version -ManifestVersion: 1.6.0 diff --git a/packaging/winget/TediousCode.FoxSchema/0.1.45/TediousCode.FoxSchema.installer.yaml b/packaging/winget/TediousCode.FoxSchema/0.1.45/TediousCode.FoxSchema.installer.yaml deleted file mode 100644 index df93adc..0000000 --- a/packaging/winget/TediousCode.FoxSchema/0.1.45/TediousCode.FoxSchema.installer.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.6.0.schema.json -PackageIdentifier: TediousCode.FoxSchema -PackageVersion: 0.1.45 -Platform: - - Windows.Desktop -MinimumOSVersion: 10.0.17763.0 -InstallerType: wix -Scope: machine -InstallModes: - - interactive - - silent - - silentWithProgress -UpgradeBehavior: install -ReleaseDate: 2026-07-16 -Installers: - - Architecture: x64 - InstallerUrl: https://github.com/tedious-code/foxschema/releases/download/v0.1.45/Fox.Schema_0.1.45_x64_en-US.msi - InstallerSha256: 3413BB3B7F50CCD45636923FB33ED1EABA6495F8B3852A04E52048E65F676C2D -ManifestType: installer -ManifestVersion: 1.6.0 diff --git a/packaging/winget/TediousCode.FoxSchema/0.1.45/TediousCode.FoxSchema.locale.en-US.yaml b/packaging/winget/TediousCode.FoxSchema/0.1.45/TediousCode.FoxSchema.locale.en-US.yaml deleted file mode 100644 index 6600d64..0000000 --- a/packaging/winget/TediousCode.FoxSchema/0.1.45/TediousCode.FoxSchema.locale.en-US.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.6.0.schema.json -PackageIdentifier: TediousCode.FoxSchema -PackageVersion: 0.1.45 -PackageLocale: en-US -Publisher: Tedious Code -PublisherUrl: https://github.com/tedious-code -PublisherSupportUrl: https://github.com/tedious-code/foxschema/issues -Author: huyplb -PackageName: FoxSchema -PackageUrl: https://github.com/tedious-code/foxschema -License: Apache-2.0 -LicenseUrl: https://github.com/tedious-code/foxschema/blob/main/LICENSE -Copyright: Copyright (c) Tedious Code -ShortDescription: Database schema diff and migration tool -Description: Fox Schema compares a source database schema against a target, generates dialect-native migration SQL, and can deploy it. Desktop app for Windows with support for many SQL dialects (Db2 requires the separate Fox Schema DB2 package). -Moniker: foxschema -Tags: - - database - - schema - - migration - - sql - - diff - - foxschema -ReleaseNotesUrl: https://github.com/tedious-code/foxschema/releases/tag/v0.1.45 -ManifestType: defaultLocale -ManifestVersion: 1.6.0 diff --git a/packaging/winget/TediousCode.FoxSchema/0.1.45/TediousCode.FoxSchema.yaml b/packaging/winget/TediousCode.FoxSchema/0.1.45/TediousCode.FoxSchema.yaml deleted file mode 100644 index 10d2a16..0000000 --- a/packaging/winget/TediousCode.FoxSchema/0.1.45/TediousCode.FoxSchema.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.6.0.schema.json -PackageIdentifier: TediousCode.FoxSchema -PackageVersion: 0.1.45 -DefaultLocale: en-US -ManifestType: version -ManifestVersion: 1.6.0 diff --git a/packaging/winget/TediousCode.FoxSchema/0.1.67/TediousCode.FoxSchema.installer.yaml b/packaging/winget/TediousCode.FoxSchema/0.1.67/TediousCode.FoxSchema.installer.yaml deleted file mode 100644 index e021fef..0000000 --- a/packaging/winget/TediousCode.FoxSchema/0.1.67/TediousCode.FoxSchema.installer.yaml +++ /dev/null @@ -1,29 +0,0 @@ -# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.9.0.schema.json -# InstallerSha256 is filled after the portable zip is published to the GitHub Release. -PackageIdentifier: TediousCode.FoxSchema -PackageVersion: 0.1.67 -Platform: - - Windows.Desktop -MinimumOSVersion: 10.0.17763.0 -InstallerType: zip -NestedInstallerType: portable -NestedInstallerFiles: - - RelativeFilePath: foxschema.exe - PortableCommandAlias: foxschema - - RelativeFilePath: fox.exe - PortableCommandAlias: fox -UpgradeBehavior: install -Dependencies: - PackageDependencies: - - PackageIdentifier: OpenJS.NodeJS.LTS - MinimumVersion: 22.5.0 -Commands: - - foxschema - - fox -ReleaseDate: 2026-07-24 -Installers: - - Architecture: x64 - InstallerUrl: https://github.com/tedious-code/foxschema/releases/download/v0.1.67/foxschema-0.1.67-win-x64.zip - InstallerSha256: 0000000000000000000000000000000000000000000000000000000000000000 -ManifestType: installer -ManifestVersion: 1.9.0 diff --git a/packaging/winget/TediousCode.FoxSchema/0.1.67/TediousCode.FoxSchema.locale.en-US.yaml b/packaging/winget/TediousCode.FoxSchema/0.1.67/TediousCode.FoxSchema.locale.en-US.yaml deleted file mode 100644 index 0fdd6b5..0000000 --- a/packaging/winget/TediousCode.FoxSchema/0.1.67/TediousCode.FoxSchema.locale.en-US.yaml +++ /dev/null @@ -1,27 +0,0 @@ -# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.9.0.schema.json -PackageIdentifier: TediousCode.FoxSchema -PackageVersion: 0.1.67 -PackageLocale: en-US -Publisher: Tedious Code -PublisherUrl: https://github.com/tedious-code -PublisherSupportUrl: https://github.com/tedious-code/foxschema/issues -Author: huyplb -PackageName: Fox Schema -PackageUrl: https://foxschema.com -License: Apache-2.0 -LicenseUrl: https://github.com/tedious-code/foxschema/blob/main/LICENSE -Copyright: Copyright (c) Tedious Code -ShortDescription: Database schema diff and migration tool (local web UI) -Description: Fox Schema compares a source database schema against a target, generates dialect-native migration SQL, and can deploy it. This package installs the foxschema CLI, which opens a local web UI in your browser. Requires Node.js 22.5+ (declared as a dependency). One product — includes optional IBM Db2 support where ibm_db is available. -Moniker: foxschema -Tags: - - database - - schema - - migration - - sql - - diff - - foxschema - - cli -ReleaseNotesUrl: https://github.com/tedious-code/foxschema/releases/tag/v0.1.67 -ManifestType: defaultLocale -ManifestVersion: 1.9.0 diff --git a/packaging/winget/TediousCode.FoxSchema/0.1.67/TediousCode.FoxSchema.yaml b/packaging/winget/TediousCode.FoxSchema/0.1.67/TediousCode.FoxSchema.yaml deleted file mode 100644 index 785935b..0000000 --- a/packaging/winget/TediousCode.FoxSchema/0.1.67/TediousCode.FoxSchema.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.9.0.schema.json -PackageIdentifier: TediousCode.FoxSchema -PackageVersion: 0.1.67 -DefaultLocale: en-US -ManifestType: version -ManifestVersion: 1.9.0 diff --git a/packaging/winget/build-portable.ps1 b/packaging/winget/build-portable.ps1 deleted file mode 100644 index 2314999..0000000 --- a/packaging/winget/build-portable.ps1 +++ /dev/null @@ -1,101 +0,0 @@ -# Build a Windows portable zip for winget from the published npm package. -# Includes foxschema.exe / fox.exe launchers (winget portable forbids .cmd). -# -# Usage (windows-latest): -# ./packaging/winget/build-portable.ps1 [-Version 0.1.67] - -param( - [string]$Version = "", - [string]$OutDir = "dist/winget" -) - -$ErrorActionPreference = "Stop" - -if (-not $Version) { - $Version = (npm view foxschema version).Trim() - if (-not $Version) { throw "Could not resolve foxschema version from npm" } -} - -$root = (Get-Location).Path -$outAbs = Join-Path $root $OutDir -$stage = Join-Path $outAbs "stage" -$extract = Join-Path $outAbs "extract" -$zipPath = Join-Path $outAbs "foxschema-$Version-win-x64.zip" -$launcherCs = Join-Path $root "packaging/winget/FoxschemaLauncher.cs" - -Remove-Item -Recurse -Force $outAbs -ErrorAction SilentlyContinue -New-Item -ItemType Directory -Force -Path $stage | Out-Null -New-Item -ItemType Directory -Force -Path $extract | Out-Null - -Write-Host "npm pack foxschema@$Version" -Push-Location $extract -try { - npm pack "foxschema@$Version" | Out-Host - $tgz = Get-ChildItem -Filter "foxschema-$Version.tgz" | Select-Object -First 1 - if (-not $tgz) { throw "npm pack did not produce foxschema-$Version.tgz" } - tar -xzf $tgz.FullName - $pkgDir = Join-Path $extract "package" - if (-not (Test-Path (Join-Path $pkgDir "dist/index.js"))) { - throw "Unexpected npm pack layout — missing package/dist/index.js" - } - Copy-Item -Path (Join-Path $pkgDir "*") -Destination $stage -Recurse -Force -} finally { - Pop-Location -} - -Push-Location $stage -try { - npm install --omit=dev --no-fund --no-audit -} finally { - Pop-Location -} - -# Compile portable .exe launchers. Prefer VS Roslyn csc; avoid ancient Shared\Packages copies. -$csc = $null -$vswhere = Join-Path ${env:ProgramFiles(x86)} "Microsoft Visual Studio\Installer\vswhere.exe" -if (Test-Path $vswhere) { - $vsPath = & $vswhere -latest -products * -requires Microsoft.Component.MSBuild -property installationPath 2>$null - if (-not $vsPath) { - $vsPath = & $vswhere -latest -products * -property installationPath 2>$null - } - if ($vsPath) { - $csc = Get-ChildItem -Path (Join-Path $vsPath "MSBuild") -Filter csc.exe -Recurse -ErrorAction SilentlyContinue | - Where-Object { $_.FullName -match '\\Roslyn\\b' } | - Sort-Object FullName -Descending | - Select-Object -First 1 -ExpandProperty FullName - } -} -if (-not $csc) { - $csc = Get-ChildItem -Path "${env:ProgramFiles}\Microsoft Visual Studio","${env:ProgramFiles(x86)}\Microsoft Visual Studio" ` - -Filter csc.exe -Recurse -ErrorAction SilentlyContinue | - Where-Object { $_.FullName -match '\\Roslyn\\b' -and $_.FullName -notmatch '\\Shared\\Packages\\' } | - Sort-Object FullName -Descending | - Select-Object -First 1 -ExpandProperty FullName -} -if (-not $csc) { - # Last resort: any Framework csc - $csc = Get-ChildItem -Path "${env:WINDIR}\Microsoft.NET\Framework64" -Filter csc.exe -Recurse -ErrorAction SilentlyContinue | - Sort-Object FullName -Descending | - Select-Object -First 1 -ExpandProperty FullName -} - -if (-not $csc) { throw "csc.exe not found — need .NET / VS Build Tools on the runner" } - -Write-Host "Using csc: $csc" -$exeMain = Join-Path $stage "foxschema.exe" -$exeFox = Join-Path $stage "fox.exe" -& $csc /nologo /optimize+ /target:exe /out:$exeMain /reference:System.dll $launcherCs -if ($LASTEXITCODE -ne 0) { throw "csc failed for foxschema.exe" } -Copy-Item -Force $exeMain $exeFox - -# Remove any leftover cmd stubs if present -Remove-Item -Force (Join-Path $stage "foxschema.cmd") -ErrorAction SilentlyContinue -Remove-Item -Force (Join-Path $stage "fox.cmd") -ErrorAction SilentlyContinue - -if (Test-Path $zipPath) { Remove-Item -Force $zipPath } -Compress-Archive -Path (Join-Path $stage "*") -DestinationPath $zipPath -CompressionLevel Optimal - -$sha = (Get-FileHash -Algorithm SHA256 $zipPath).Hash -Write-Host "ZIP=$zipPath" -Write-Host "SHA256=$sha" -Write-Host "VERSION=$Version"