Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
5dc0b9d
chore(deps)(deps-dev): bump vite
dependabot[bot] Dec 1, 2025
ac7299e
chore(deps): bump the actions-minor-patch group with 2 updates
dependabot[bot] Dec 1, 2025
83c5ebc
chore(deps): bump the cargo-minor-patch group with 2 updates
dependabot[bot] Dec 1, 2025
59603ce
Merge pull request #70 from Jordonbc/dependabot/cargo/Dev/cargo-minor…
Jordonbc Dec 2, 2025
85f58c5
Merge pull request #69 from Jordonbc/dependabot/github_actions/Dev/ac…
Jordonbc Dec 2, 2025
dcf210a
Merge pull request #68 from Jordonbc/dependabot/npm_and_yarn/Frontend…
Jordonbc Dec 2, 2025
d4eafa3
chore(deps)(deps-dev): bump vite
dependabot[bot] Dec 8, 2025
d934c64
chore(deps): bump the actions-minor-patch group with 3 updates
dependabot[bot] Dec 8, 2025
713a4ec
chore(deps): bump the cargo-minor-patch group with 2 updates
dependabot[bot] Dec 8, 2025
5f3d43c
Merge pull request #73 from Jordonbc/dependabot/cargo/Dev/cargo-minor…
Jordonbc Dec 13, 2025
6aa15d6
Merge pull request #72 from Jordonbc/dependabot/github_actions/Dev/ac…
Jordonbc Dec 13, 2025
ca0a6f3
Merge pull request #71 from Jordonbc/dependabot/npm_and_yarn/Frontend…
Jordonbc Dec 13, 2025
8486ae8
chore(deps)(deps-dev): bump @types/node in /Frontend
dependabot[bot] Dec 15, 2025
c5906e8
chore(deps): bump github/codeql-action in the actions-minor-patch group
dependabot[bot] Dec 15, 2025
4121747
chore(deps): bump tauri in the cargo-minor-patch group
dependabot[bot] Dec 15, 2025
871b517
Merge pull request #74 from Jordonbc/dependabot/npm_and_yarn/Frontend…
Jordonbc Dec 20, 2025
c073440
Merge pull request #75 from Jordonbc/dependabot/github_actions/Dev/ac…
Jordonbc Dec 20, 2025
b82636f
Merge pull request #76 from Jordonbc/dependabot/cargo/Dev/cargo-minor…
Jordonbc Dec 20, 2025
629448d
chore(deps)(deps-dev): bump the npm-minor-patch group
dependabot[bot] Dec 22, 2025
e46b3ca
chore(deps): bump github/codeql-action in the actions-minor-patch group
dependabot[bot] Dec 22, 2025
7b1dd26
chore(deps): bump zip from 6.0.0 to 7.0.0
dependabot[bot] Dec 22, 2025
73981f6
Merge pull request #80 from Jordonbc/dependabot/cargo/Dev/zip-7.0.0
Jordonbc Dec 23, 2025
a624603
Merge pull request #77 from Jordonbc/dependabot/npm_and_yarn/Frontend…
Jordonbc Dec 23, 2025
e7e0fde
Merge pull request #78 from Jordonbc/dependabot/github_actions/Dev/ac…
Jordonbc Dec 23, 2025
ec6f9bf
chore(deps): bump the cargo-minor-patch group across 1 directory with…
dependabot[bot] Dec 23, 2025
8ced530
Merge pull request #81 from Jordonbc/dependabot/cargo/Dev/cargo-minor…
Jordonbc Dec 23, 2025
1b4d17a
Updated dependencies
Jordonbc Dec 23, 2025
489aeef
Added Remote branch divider
Jordonbc Dec 23, 2025
29a3c34
Implemented push button highlight
Jordonbc Dec 23, 2025
606f82e
Fixed Typescript Errors
Jordonbc Dec 23, 2025
b58ce10
Merge pull request #82 from Jordonbc/Fix-TypeScript-Errors
Jordonbc Dec 23, 2025
82d12fc
Fixed local branch pull error
Jordonbc Dec 23, 2025
4132a2c
Merge pull request #83 from Jordonbc/Update-Branch-Dialog
Jordonbc Dec 23, 2025
f95567e
Improve fetch/pull button
Jordonbc Dec 23, 2025
1060766
Add tracking options
Jordonbc Dec 23, 2025
9483848
Fixed pull button issues
Jordonbc Dec 23, 2025
21e0674
Merge branch 'Dev' into Improve-Fetch-Pull-Button
Jordonbc Dec 23, 2025
e4fecc4
Merge pull request #84 from Jordonbc/Improve-Fetch-Pull-Button
Jordonbc Dec 23, 2025
fc3fc3c
Added implementation
Jordonbc Dec 23, 2025
88ca2ba
Merge pull request #85 from Jordonbc/Fetch-Prune
Jordonbc Dec 23, 2025
8865f25
Update AGENTS.md
Jordonbc Dec 23, 2025
670b64f
Merge pull request #86 from Jordonbc/Improve-agents-file
Jordonbc Dec 23, 2025
8f4939f
Implemented CTRL+A to select all files
Jordonbc Dec 23, 2025
e097d75
Merge pull request #87 from Jordonbc/Implement-Select-All
Jordonbc Dec 23, 2025
62e3363
Added Select all - discard changes
Jordonbc Dec 24, 2025
b602502
Fixed CTRL + A bug that selects all text in UI
Jordonbc Dec 24, 2025
75c7870
Merge branch 'Dev' into Implement-Select-All
Jordonbc Dec 24, 2025
bb3493e
Fixed issue
Jordonbc Dec 24, 2025
b8326db
Merge pull request #88 from Jordonbc/Implement-Select-All
Jordonbc Dec 24, 2025
4cf222e
Implemented LFS text at the top of the diff display
Jordonbc Dec 24, 2025
3105376
Merge pull request #89 from Jordonbc/LFS-Text
Jordonbc Dec 24, 2025
cf164dd
Merge Dev
Jordonbc Dec 24, 2025
731a4d7
Improved the new branch modal
Jordonbc Dec 24, 2025
d088cd8
Merge pull request #90 from Jordonbc/Update-Branch-Dialog
Jordonbc Dec 24, 2025
16bd231
Fixed footer
Jordonbc Dec 24, 2025
9864679
Merge pull request #91 from Jordonbc/Fix-footer-UI-issue
Jordonbc Dec 24, 2025
083e2e4
Fixed XSS issue in branch naming
Jordonbc Dec 24, 2025
07d213c
Merge pull request #92 from Jordonbc/Fixed-branch-naming
Jordonbc Dec 24, 2025
02226b3
Improved merging modal
Jordonbc Dec 24, 2025
9948a55
Merge pull request #93 from Jordonbc/Improved-merging
Jordonbc Dec 24, 2025
2810ae7
Added output log and and improved repo settings
Jordonbc Dec 24, 2025
3652e86
Fixed issue
Jordonbc Dec 25, 2025
96088dd
Merge pull request #94 from Jordonbc/Improved-debugging-&-repo-settings
Jordonbc Dec 25, 2025
6b43418
Added application log
Jordonbc Dec 25, 2025
da2923c
Add fix
Jordonbc Dec 25, 2025
2adbf70
Improved SSH handling
Jordonbc Dec 25, 2025
b56c970
Potential fix for code scanning alert no. 19: Incomplete string escap…
Jordonbc Dec 25, 2025
0bdfaa3
Merge pull request #95 from Jordonbc/Add-application-log
Jordonbc Dec 25, 2025
fffb339
Added functionality for delete modal
Jordonbc Dec 25, 2025
062ab2b
Merge pull request #96 from Jordonbc/Add-delete-modal
Jordonbc Dec 25, 2025
d46824b
Fixed branch updates
Jordonbc Dec 25, 2025
58b629c
Fixed issues
Jordonbc Dec 25, 2025
8a0f43d
Merge pull request #97 from Jordonbc/Fix-branch-updates
Jordonbc Dec 25, 2025
453e0ce
Implement flatpak building
Jordonbc Dec 25, 2025
bc11308
Implement flatpak releases
Jordonbc Dec 25, 2025
c66d440
Fixed workflow issues
Jordonbc Dec 25, 2025
8313816
Update nightly.yml
Jordonbc Dec 25, 2025
c90326b
Update publish-stable.yml
Jordonbc Dec 25, 2025
5c16f67
Merge pull request #99 from Jordonbc/Flatpak
Jordonbc Dec 25, 2025
2703978
Update nightly.yml
Jordonbc Dec 25, 2025
e6f6f87
Merge pull request #100 from Jordonbc/Flatpak
Jordonbc Dec 25, 2025
634091e
Update nightly.yml
Jordonbc Dec 25, 2025
472c2c8
Merge pull request #101 from Jordonbc/Flatpak
Jordonbc Dec 25, 2025
7a80a10
Update nightly.yml
Jordonbc Dec 25, 2025
169694e
Hopefully fix flatpak build
Jordonbc Dec 25, 2025
3aa072c
Merge pull request #102 from Jordonbc/Flatpak
Jordonbc Dec 25, 2025
0cf53f8
Update nightly.yml
Jordonbc Dec 25, 2025
7e3e78b
Update publish-stable.yml
Jordonbc Dec 25, 2025
286d49e
Merge pull request #103 from Jordonbc/Flatpak
Jordonbc Dec 25, 2025
91d20d3
Update build.rs
Jordonbc Dec 25, 2025
910af7a
Merge pull request #104 from Jordonbc/Flatpak
Jordonbc Dec 25, 2025
40084a6
Update README.md
Jordonbc Dec 25, 2025
a012305
Merge pull request #105 from Jordonbc/Flatpak
Jordonbc Dec 25, 2025
8dab5ad
Fixed ssh issues
Jordonbc Dec 25, 2025
162c508
Merge pull request #106 from Jordonbc/Fix-SSH-issues
Jordonbc Dec 25, 2025
62b049f
Fixed versioning
Jordonbc Dec 26, 2025
be2182b
Merge pull request #107 from Jordonbc/Version-Fix
Jordonbc Dec 26, 2025
3daef7e
Version bump to 0.1.0-rc.4
Jordonbc Dec 26, 2025
5a2a706
Merge pull request #108 from Jordonbc/Version-Bump
Jordonbc Dec 26, 2025
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
8 changes: 4 additions & 4 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,12 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
fetch-depth: 0

- name: Initialize CodeQL
uses: github/codeql-action/init@e12f0178983d466f2f6028f5cc7a6d786fd97f4b # v3
uses: github/codeql-action/init@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v3
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
Expand All @@ -64,9 +64,9 @@ jobs:

- name: Autobuild
if: matrix.build-mode == 'autobuild'
uses: github/codeql-action/autobuild@e12f0178983d466f2f6028f5cc7a6d786fd97f4b # v3
uses: github/codeql-action/autobuild@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v3

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@e12f0178983d466f2f6028f5cc7a6d786fd97f4b # v3
uses: github/codeql-action/analyze@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v3
with:
category: "/language:${{ matrix.language }}"
6 changes: 3 additions & 3 deletions .github/workflows/development.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,14 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
fetch-depth: 0
lfs: true

# ---------- Frontend: lint + typecheck ----------
- name: Setup Node
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
with:
node-version: '20'
cache: 'npm'
Expand Down Expand Up @@ -83,7 +83,7 @@ jobs:
pkg-config --modversion javascriptcoregtk-4.1

- name: Rust cache
uses: Swatinem/rust-cache@f13886b937689c021905a6b90929199931d60db1 # v2.8.1
uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2

- name: Cargo check
run: cargo check
106 changes: 84 additions & 22 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,29 @@
name: Nightly
run-name: "OpenVCS Nightly • Run #${{ github.run_number }} • Dev @ ${{ github.sha }}"
run-name: "OpenVCS Nightly • Run #${{ github.run_number }} • ${{ github.event_name == 'workflow_dispatch' && github.ref_name || 'Dev' }}"

on:
schedule:
# 01:30 UTC daily (02:30 in London during BST)
- cron: '30 1 * * *'
workflow_dispatch:
inputs:
force:
description: Build even if no changes since last nightly tag
type: boolean
required: false
default: false

# Default to least privilege; override per-job as needed
permissions:
contents: read

env:
# Scheduled runs should always build from Dev. Manual runs should build from the selected branch.
TARGET_REF: ${{ github.event_name == 'workflow_dispatch' && github.ref_name || 'Dev' }}

jobs:
check-changes:
name: Check if Dev changed since last nightly
name: Check if target ref changed since last nightly
runs-on: ubuntu-22.04
permissions:
contents: read
Expand All @@ -22,10 +32,10 @@ jobs:
since_sha: ${{ steps.diff.outputs.since_sha }}
ahead_count: ${{ steps.diff.outputs.ahead_count }}
steps:
- name: Checkout Dev
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
- name: Checkout target ref
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
ref: Dev
ref: ${{ env.TARGET_REF }}
fetch-depth: 0 # we need history and tags
lfs: false

Expand Down Expand Up @@ -64,7 +74,7 @@ jobs:
nightly:
name: Build & publish Nightly (only if changed)
needs: check-changes
if: needs.check-changes.outputs.changed == 'true'
if: needs.check-changes.outputs.changed == 'true' || (github.event_name == 'workflow_dispatch' && (inputs.force == true || github.event.inputs.force == 'true'))
permissions:
contents: write # create/delete release + tag
actions: write # use GitHub Actions cache (rust-cache / sccache)
Expand All @@ -76,16 +86,16 @@ jobs:
fail-fast: false
matrix:
include:
- platform: ubuntu-22.04
- platform: ubuntu-24.04
args: ''
- platform: windows-latest
args: ''
runs-on: ${{ matrix.platform }}
steps:
- name: Checkout Dev
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
- name: Checkout target ref
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
ref: Dev
ref: ${{ env.TARGET_REF }}
fetch-depth: 0
lfs: true

Expand All @@ -94,13 +104,22 @@ jobs:
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
script: |
const short = context.sha.substring(0, 7);
const date = new Date().toISOString().slice(0, 10); // UTC date
const owner = context.repo.owner;
const repo = context.repo.repo;
const basehead = 'openvcs-nightly...Dev';
const target = process.env.TARGET_REF || 'Dev';
let branch_sha = context.sha;
try {
const branch = await github.rest.repos.getBranch({ owner, repo, branch: target });
branch_sha = branch?.data?.commit?.sha || context.sha;
} catch (e) {
// Fall back to workflow SHA if the branch lookup fails.
branch_sha = context.sha;
}
const short = branch_sha.substring(0, 7);
const basehead = `openvcs-nightly...${target}`;
let compare_url = `${context.serverUrl}/${owner}/${repo}/compare/${basehead}`;
let commit_url = `${context.serverUrl}/${owner}/${repo}/commit/${context.sha}`;
let commit_url = `${context.serverUrl}/${owner}/${repo}/commit/${branch_sha}`;
let changelog = '';

try {
Expand All @@ -109,7 +128,7 @@ jobs:
if (commits.length === 0) {
changelog = `No changes detected.`;
} else {
// Include all commits since last nightly tag -> Dev
// Include all commits since last nightly tag -> target ref
const items = commits.map(c => {
const sha = (c.sha || '').substring(0, 7);
const msg = (c.commit?.message || '').split('\n')[0];
Expand All @@ -120,19 +139,20 @@ jobs:
}
} catch (e) {
// Likely first nightly (tag missing) or compare failed for another reason
changelog = 'First nightly or previous tag unavailable; showing recent commits at Dev.';
compare_url = `${context.serverUrl}/${owner}/${repo}/tree/Dev`;
changelog = `First nightly or previous tag unavailable; showing recent commits at ${target}.`;
compare_url = `${context.serverUrl}/${owner}/${repo}/tree/${target}`;
}

core.setOutput('short_sha', short);
core.setOutput('branch_sha', branch_sha);
core.setOutput('date', date);
core.setOutput('compare_url', compare_url);
core.setOutput('commit_url', commit_url);
core.setOutput('changelog', changelog);

# ---------- Frontend ----------
- name: Setup Node
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
with:
node-version: '20'
cache: 'npm'
Expand All @@ -154,16 +174,52 @@ jobs:
uses: mozilla-actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad # v0.0.9

- name: Install Linux deps
if: matrix.platform == 'ubuntu-22.04'
if: matrix.platform == 'ubuntu-24.04'
run: |
set -euxo pipefail
sudo apt-get update
sudo apt-get install -y libappindicator3-dev librsvg2-dev patchelf
sudo apt-get install -y libwebkit2gtk-4.1-dev || sudo apt-get install -y libwebkit2gtk-4.0-dev

# ---------- Flatpak (Linux only; artifact) ----------
- name: Install Flatpak tooling
if: matrix.platform == 'ubuntu-24.04' && hashFiles('packaging/flatpak/io.github.jordonbc.OpenVCS.yml') != ''
run: |
set -euxo pipefail
sudo apt-get update
sudo apt-get install -y --no-install-recommends flatpak flatpak-builder appstream
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user -y flathub org.gnome.Platform//48 org.gnome.Sdk//48
# Cargo/rustc must come from the Flatpak SDK environment (not the host toolchain).
# Try common branches to avoid coupling this workflow to the host runner image.
flatpak install --user -y flathub org.freedesktop.Sdk.Extension.rust-stable//24.08 \
|| flatpak install --user -y flathub org.freedesktop.Sdk.Extension.rust-stable//25.08 \
|| flatpak install --user -y flathub org.freedesktop.Sdk.Extension.rust-stable

- name: Verify Flatpak manifest exists
if: matrix.platform == 'ubuntu-24.04' && hashFiles('packaging/flatpak/io.github.jordonbc.OpenVCS.yml') != ''
run: |
set -euxo pipefail
ls -la packaging/flatpak
test -f packaging/flatpak/io.github.jordonbc.OpenVCS.yml

- name: Build Flatpak bundle
if: matrix.platform == 'ubuntu-24.04' && hashFiles('packaging/flatpak/io.github.jordonbc.OpenVCS.yml') != ''
run: |
set -euxo pipefail
flatpak-builder --user --force-clean --repo=repo build-flatpak packaging/flatpak/io.github.jordonbc.OpenVCS.yml
flatpak build-bundle repo OpenVCS.flatpak io.github.jordonbc.OpenVCS

- name: Upload Flatpak bundle (artifact)
if: matrix.platform == 'ubuntu-24.04' && hashFiles('packaging/flatpak/io.github.jordonbc.OpenVCS.yml') != ''
uses: actions/upload-artifact@v4
with:
name: OpenVCS-flatpak-nightly
path: OpenVCS.flatpak

# ---------- Cache ----------
- name: Rust cache
uses: Swatinem/rust-cache@f13886b937689c021905a6b90929199931d60db1 # v2.8.1
uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2

# ---------- Reset rolling tag (optional but keeps things tidy) ----------
- name: Remove existing 'openvcs-nightly' release & tag (if any)
Expand Down Expand Up @@ -194,18 +250,24 @@ jobs:
with:
projectPath: Backend
tagName: openvcs-nightly
releaseName: "OpenVCS Nightly ${{ steps.meta.outputs.date }} (dev@${{ steps.meta.outputs.short_sha }})"
releaseName: "OpenVCS Nightly ${{ steps.meta.outputs.date }} (${{ env.TARGET_REF }}@${{ steps.meta.outputs.short_sha }})"
releaseBody: |
Nightly build from Dev branch.
Nightly build from `${{ env.TARGET_REF }}`.
Date (UTC): ${{ steps.meta.outputs.date }}
Compare: ${{ steps.meta.outputs.compare_url }}
Since: ${{ needs.check-changes.outputs.since_sha }}
Ahead (relevant commits): ${{ needs.check-changes.outputs.ahead_count }}
Commit: ${{ github.sha }} (dev@${{ steps.meta.outputs.short_sha }})
Commit: ${{ steps.meta.outputs.branch_sha }} (${{ env.TARGET_REF }}@${{ steps.meta.outputs.short_sha }})
Runner: ${{ runner.os }} • Run #${{ github.run_number }}

Changes since last nightly:
${{ steps.meta.outputs.changelog }}
releaseDraft: false
prerelease: true
args: ${{ matrix.args }}

- name: Upload Flatpak bundle to GitHub Release
if: matrix.platform == 'ubuntu-24.04' && hashFiles('packaging/flatpak/io.github.jordonbc.OpenVCS.yml') != ''
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release upload openvcs-nightly OpenVCS.flatpak --clobber
69 changes: 64 additions & 5 deletions .github/workflows/publish-stable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
fail-fast: false
matrix:
include:
- platform: ubuntu-22.04
- platform: ubuntu-24.04
args: ''
- platform: windows-latest
args: ''
Expand All @@ -27,14 +27,24 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
lfs: true
fetch-depth: 0

- name: Compute version tag
id: version
if: matrix.platform == 'ubuntu-24.04'
shell: bash
run: |
set -euo pipefail
VERSION="$(grep -m1 '^version *= *\"' Backend/Cargo.toml | sed -E 's/^version *= *\"([^\"]+)\".*/\\1/')"
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
echo "tag=openvcs-v$VERSION" >> "$GITHUB_OUTPUT"

# ---------- Frontend (Node + Vite) ----------
- name: Setup Node
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
with:
node-version: '20'
cache: 'npm'
Expand All @@ -56,7 +66,7 @@ jobs:
uses: mozilla-actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad # v0.0.9

- name: Install Linux build deps (Ubuntu)
if: matrix.platform == 'ubuntu-22.04'
if: matrix.platform == 'ubuntu-24.04'
shell: bash
run: |
set -euxo pipefail
Expand All @@ -65,9 +75,50 @@ jobs:
# Prefer WebKitGTK 4.1; fall back to 4.0 if 4.1 isn't available
sudo apt-get install -y libwebkit2gtk-4.1-dev || sudo apt-get install -y libwebkit2gtk-4.0-dev

# ---------- Flatpak (Linux only; artifact) ----------
- name: Install Flatpak tooling
if: matrix.platform == 'ubuntu-24.04' && hashFiles('packaging/flatpak/io.github.jordonbc.OpenVCS.yml') != ''
shell: bash
run: |
set -euxo pipefail
sudo apt-get update
sudo apt-get install -y --no-install-recommends flatpak flatpak-builder appstream
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user -y flathub org.gnome.Platform//48 org.gnome.Sdk//48
# Cargo/rustc must come from the Flatpak SDK environment (not the host toolchain).
# Try common branches to avoid coupling this workflow to the host runner image.
flatpak install --user -y flathub org.freedesktop.Sdk.Extension.rust-stable//24.08 \
|| flatpak install --user -y flathub org.freedesktop.Sdk.Extension.rust-stable//25.08 \
|| flatpak install --user -y flathub org.freedesktop.Sdk.Extension.rust-stable

- name: Verify Flatpak manifest exists
if: matrix.platform == 'ubuntu-24.04' && hashFiles('packaging/flatpak/io.github.jordonbc.OpenVCS.yml') != ''
shell: bash
run: |
set -euxo pipefail
ls -la packaging/flatpak
test -f packaging/flatpak/io.github.jordonbc.OpenVCS.yml

- name: Build Flatpak bundle
if: matrix.platform == 'ubuntu-24.04' && hashFiles('packaging/flatpak/io.github.jordonbc.OpenVCS.yml') != ''
shell: bash
run: |
set -euxo pipefail
# Stable production builds should report the plain package version (not git metadata).
export OPENVCS_OFFICIAL_RELEASE='1'
flatpak-builder --user --force-clean --repo=repo build-flatpak packaging/flatpak/io.github.jordonbc.OpenVCS.yml
flatpak build-bundle repo OpenVCS.flatpak io.github.jordonbc.OpenVCS

- name: Upload Flatpak bundle (artifact)
if: matrix.platform == 'ubuntu-24.04' && hashFiles('packaging/flatpak/io.github.jordonbc.OpenVCS.yml') != ''
uses: actions/upload-artifact@v4
with:
name: OpenVCS-flatpak-stable
path: OpenVCS.flatpak

# ---------- Cargo caching ----------
- name: Rust cache
uses: Swatinem/rust-cache@f13886b937689c021905a6b90929199931d60db1 # v2.8.1
uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2

# ---------- Build & publish with Tauri action ----------
- name: Build and create GitHub Release (draft)
Expand All @@ -77,6 +128,8 @@ jobs:
# We already built the Frontend; tell Backend/Tauri to skip any beforeBuildCommand
FRONTEND_SKIP_BUILD: '1'
OPENVCS_UPDATE_CHANNEL: stable
# Stable production builds should report the plain package version (not git metadata).
OPENVCS_OFFICIAL_RELEASE: '1'
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_PRIVATE_KEY_PASSWORD }}
with:
Expand All @@ -93,3 +146,9 @@ jobs:
args: ${{ matrix.args }}
includeDebug: false # default; set true if you want debug archives too
# bundles: '' # e.g. 'deb,appimage,msi,nsis' if you want to restrict output

- name: Upload Flatpak bundle to GitHub Release
if: matrix.platform == 'ubuntu-24.04' && hashFiles('packaging/flatpak/io.github.jordonbc.OpenVCS.yml') != ''
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release upload "${{ steps.version.outputs.tag }}" OpenVCS.flatpak --clobber
Loading
Loading