Skip to content
Merged
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
81 changes: 34 additions & 47 deletions .github/workflows/CI.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,65 +9,52 @@ on:

jobs:
CI:
# https://github.com/actions/runner-images/issues/13964
runs-on: ubuntu-26.04

steps:
- uses: actions/checkout@v3
# Cache apt
- name: Cache apt
uses: actions/cache@v4
with:
submodules: recursive
path: /var/cache/apt/archives
key: apt-cache-${{ runner.arch }}

- uses: actions/setup-node@v3
# Cache Flatpak
- name: Cache Flatpak dependencies
uses: actions/cache@v4
with:
node-version: 20
cache: "npm"
path: ~/.local/share/flatpak
key: flatpak-deps-${{ runner.arch }}

# Cache flatpak-builder state
- name: Cache .flatpak-builder
uses: actions/cache@v4
with:
path: .flatpak-builder
key: flatpak-builder-${{ runner.arch }}

# Cache Foundry
- name: Cache .foundry
uses: actions/cache@v4
with:
path: .foundry
key: foundry-${{ runner.arch }}

- name: Install host dependencies
run: |
sudo apt-get update
sudo apt-get install flatpak mutter flatpak-builder foundry
sudo apt-get -y update
sudo apt-get -y install flatpak mutter flatpak-builder foundry

# Restore caches
- name: Restore Flatpak dependencies
uses: actions/cache/restore@v3
with:
path: ~/.local/share/flatpak
key: ${{ runner.os }}-flatpak-dependencies-${{ github.run_id }}
restore-keys: |
${{ runner.os }}-flatpak-dependencies-
- name: Restore .flatpak-builder
uses: actions/cache/restore@v3
- uses: actions/checkout@v4
with:
path: .flatpak-builder
key: ${{ runner.os }}-flatpak-builder-${{ github.run_id }}
restore-keys: |
${{ runner.os }}-flatpak-builder-
- name: Restore .foundry
uses: actions/cache/restore@v3
submodules: recursive

- uses: actions/setup-node@v4
with:
path: .foundry
key: ${{ runner.os }}-foundry-${{ github.run_id }}
restore-keys: |
${{ runner.os }}-foundry-
node-version: 24
cache: "npm"

- run: mutter --wayland --no-x11 --headless --wayland-display=wayland-0 --virtual-monitor 1280x720 > /tmp/mutter.log 2>&1 &
- run: make ci
- run: cat /tmp/mutter.log

# Save caches
- name: Save Flatpak dependencies
uses: actions/cache/save@v3
if: always()
with:
path: ~/.local/share/flatpak
key: ${{ runner.os }}-flatpak-dependencies-${{ github.run_id }}
- name: Save .flatpak-builder
uses: actions/cache/save@v3
if: always()
with:
path: .flatpak-builder
key: ${{ runner.os }}-flatpak-builder-${{ github.run_id }}
- name: Save .foundry
uses: actions/cache/save@v3
if: always()
with:
path: .foundry
key: ${{ runner.os }}-foundry-${{ github.run_id }}
19 changes: 13 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ lint:

unit:
foundry run -- gjs -m $(ROOT)/troll/tst/bin.js $(ROOT)/test/*.test.js
#./build-aux/wip/run.js build-aux/re.sonny.Workbench.Devel.json -- gjs -m ./troll/tst/bin.js test/*.test.js

# https://github.com/ximion/appstream/issues/398#issuecomment-1129454985
# flatpak run org.freedesktop.appstream.cli validate --override=release-time-missing=info --no-net data/app.metainfo.xml
Expand All @@ -60,12 +59,20 @@ unit:

test: unit lint
foundry run -- workbench-cli ci $(ROOT)/demos/src/Welcome
# ./build-aux/wip/run.js build-aux/re.sonny.Workbench.Devel.json -- workbench-cli ci demos/src/Welcome/

ci: setup build test
# See Permissions.js
# flatpak override --user --share=network --socket=pulseaudio --device=input re.sonny.Workbench.Devel
foundry run -- workbench-cli ci $(ROOT)/demos/src/*
install:
artifact=$$(foundry export \
| grep -oE 'file://[^[:space:]]+' \
| tail -n1 \
| sed 's|^file://||'); \
test -n "$$artifact" || { echo "No artifact found"; exit 1; }; \
flatpak install --user --assumeyes "$$artifact"

ci: setup build test install
# We install because foundry has no flag to override permissions
# see Permissions.js for why we need them
flatpak run --command="workbench-cli" --share=network --socket=pulseaudio --device=input --filesystem=$(ROOT) re.sonny.Workbench.Devel ci $(ROOT)/demos/src/*


flatpak:
flatpak run org.flatpak.Builder --ccache --force-clean flatpak build-aux/re.sonny.Workbench.Devel.json
Expand Down
5 changes: 3 additions & 2 deletions data/app.metainfo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,12 @@
</screenshots>
<content_rating type="oars-1.1" />
<releases>
<release version="50.0" date="2026-05-01">
<release version="50.0" date="2026-06-02">
<description translatable="no">
<ul>
<li>Use GNOME 50</li>
<li>Fix runnng Rust projects</li>
<li>Fix discarding/closing of sessions</li>
<li>Fix running Rust demos</li>
</ul>
<p>Library:</p>
<ul>
Expand Down
16 changes: 2 additions & 14 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/Previewer/meson.build
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
executable('workbench-previewer-module',
'previewer.vala',
dependencies: [ dependency('gtksourceview-5'), dependency('gmodule-2.0'), dependency('libadwaita-1'), dependency('shumate-1.0'), dependency('webkitgtk-6.0'), libworkbench_vapi ],
dependencies: [ dependency('gtksourceview-5'), dependency('gmodule-2.0'), dependency('libadwaita-1'), dependency('glycin-2'), dependency('shumate-1.0'), dependency('webkitgtk-6.0'), libworkbench_vapi ],
# vala_args: [ '--gresourcesdir=' + meson.current_build_dir() ],
install: true,
link_with: libworkbench,
Expand Down
21 changes: 13 additions & 8 deletions src/cli/blueprint.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,19 @@ import { getLanguage } from "../common.js";
import { parse } from "../langs/xml/xml.js";
import { LSPError } from "../lsp/LSP.js";
import { checkFile, diagnose } from "./util.js";
import { ignore_codes } from "../langs/blueprint/blueprint.js";

const languageId = "blueprint";

// No replacements yet
const ignore_messages = [
"Gtk.ShortcutsShortcut is deprecated\nhint: This widget will be removed in GTK 5",
"Gtk.ShortcutLabel is deprecated\nhint: This widget will be removed in GTK 5",
"Gtk.ShortcutsWindow is deprecated\nhint: This widget will be removed in GTK 5",
"Gtk.ShortcutsGroup is deprecated\nhint: This widget will be removed in GTK 5",
"Gtk.ShortcutsSection is deprecated\nhint: This widget will be removed in GTK 5",
];

export default async function blueprint({ file, lspc }) {
print(` ${file.get_path()}`);

Expand All @@ -17,14 +27,9 @@ export default async function blueprint({ file, lspc }) {
lspc,
languageId,
filter(diagnostic) {
// No replacements yet
return ![
"Gtk.ShortcutsShortcut is deprecated\nhint: This widget will be removed in GTK 5",
"Gtk.ShortcutLabel is deprecated\nhint: This widget will be removed in GTK 5",
"Gtk.ShortcutsWindow is deprecated\nhint: This widget will be removed in GTK 5",
"Gtk.ShortcutsGroup is deprecated\nhint: This widget will be removed in GTK 5",
"Gtk.ShortcutsSection is deprecated\nhint: This widget will be removed in GTK 5",
].includes(diagnostic.message);
if (ignore_codes.includes(diagnostic.code)) return false;
if (ignore_messages.includes(diagnostic.message)) return false;
return true;
},
});

Expand Down
41 changes: 20 additions & 21 deletions src/cli/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import vala from "./vala.js";
import python from "./python.js";
import rust from "./rust.js";
import { Interrupt } from "./util.js";
import { isTypeScriptEnabled } from "../Extensions/Extensions.js";

GObject.type_ensure(Shumate.SimpleMap);
GObject.type_ensure(WebKit.WebView);
Expand Down Expand Up @@ -102,16 +103,12 @@ const application = new Adw.Application();
const window = new Adw.ApplicationWindow();

function createLSPClients({ root_uri }) {
const langs = ["javascript", "blueprint", "css", "vala", "rust", "python"];
if (isTypeScriptEnabled()) {
langs.push("typescript");
}
return Object.fromEntries(
[
"javascript",
"blueprint",
"css",
"vala",
"rust",
"python",
"typescript",
].map((id) => {
langs.map((id) => {
const lang = languages.find((language) => language.id === id);
const lspc = createLSPClient({
lang,
Expand Down Expand Up @@ -175,18 +172,20 @@ async function ci({ filenames }) {
});
}

const file_typescript = demo_dir.get_child("main.ts");
if (file_typescript.query_exists(null)) {
await typescript({
file: file_typescript,
lspc: lsp_clients.typescript,
blueprint_object_ids,
demo_dir,
application,
builder,
template,
window,
});
if (isTypeScriptEnabled()) {
const file_typescript = demo_dir.get_child("main.ts");
if (file_typescript.query_exists(null)) {
await typescript({
file: file_typescript,
lspc: lsp_clients.typescript,
blueprint_object_ids,
demo_dir,
application,
builder,
template,
window,
});
}
}

const file_vala = demo_dir.get_child("main.vala");
Expand Down
10 changes: 10 additions & 0 deletions src/cli/vala.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,16 @@ export default async function vala({ file, lspc, demo_dir }) {
diagnostic.message !==
"`Gtk.StyleContext' has been deprecated since 4.10"
);
} else if (demo_dir.get_basename() === "Drag and Drop") {
// I don't see what else we can use
// var icon = Gtk.DragIcon.get_for_drag(drag);
return !["use `new' operator to create new objects"].includes(
diagnostic.message,
);
} else if (demo_dir.get_basename() === "Shortcuts Window") {
return ![
"`Gtk.ShortcutsWindow' has been deprecated since 4.18",
].includes(diagnostic.message);
}
return true;
},
Expand Down
Loading
Loading