Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
801c7f8
Try to revamp the GUI
Radonirinaunimi Feb 12, 2026
6e48579
Merge branch 'master' into revamp-gui
Radonirinaunimi Feb 13, 2026
f98c60c
Remove dynamic plotting and reliance on `mpld3`
Radonirinaunimi Feb 13, 2026
0b58185
Address clippy warnings
Radonirinaunimi Feb 13, 2026
deaf00a
Modernize the UI
Radonirinaunimi Feb 14, 2026
11eb35e
Replace refined dark theme for white theme
Radonirinaunimi Feb 14, 2026
b4e6f9e
Fix `export`
Radonirinaunimi Feb 14, 2026
39b039b
Update NeoPDF icons
Radonirinaunimi Feb 14, 2026
dbab2ba
Separate CI runs for the GUI
Radonirinaunimi Feb 14, 2026
3f78ffd
Update release CI to use the TAURI implementation
Radonirinaunimi Feb 14, 2026
457098c
Bump `tauri` config version from `make-release.sh`
Radonirinaunimi Feb 14, 2026
eb2b6e6
Allow passing `NEOPDF_DATA_PATH` from the GUI
Radonirinaunimi Feb 14, 2026
6d8f397
Pass Python binary path as setting
Radonirinaunimi Feb 14, 2026
6b5aea7
Do not require LaTeX
Radonirinaunimi Feb 14, 2026
76e4fa7
Fix layouts
Radonirinaunimi Feb 15, 2026
47c63a2
Add section about the GUI APP in the documentation
Radonirinaunimi Feb 15, 2026
cf95874
Update matplotlib styles
Radonirinaunimi Feb 15, 2026
21caa0b
Implemente correct uncertainty computations
Radonirinaunimi Feb 15, 2026
1b83187
Lint markdown with `rumdl`
Radonirinaunimi Feb 15, 2026
c2d3d0d
Lint markdown files with `rumdl`
Radonirinaunimi Feb 15, 2026
9a75521
Add `.rumdl.toml` configuration for `pre-commit`
Radonirinaunimi Feb 15, 2026
4a1ee19
Various minor modifications
Radonirinaunimi Feb 15, 2026
e86ef53
Complete documentation of the GUI
Radonirinaunimi Feb 15, 2026
de1b1f8
Minor cosmetic fixes
Radonirinaunimi Feb 16, 2026
d13cf96
Add pre-commit checks using `prek`
Radonirinaunimi Feb 16, 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
46 changes: 46 additions & 0 deletions .github/workflows/build-gui.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Build NeoPDF GUI

on:
push:

env:
CARGO_TERM_COLOR: always

jobs:
build-gui:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
install-deps: linux
- os: macos-latest
install-deps: ""

runs-on: ${{ matrix.os }}

steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Install Linux dependencies (Tauri / GTK)
if: matrix.install-deps == 'linux'
run: |
sudo apt-get update
sudo apt-get install -y \
libwebkit2gtk-4.1-dev \
build-essential \
curl \
wget \
file \
libxdo-dev \
libssl-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
libglib2.0-dev

- name: Install Rust
uses: dtolnay/rust-toolchain@stable

- name: Build NeoPDF GUI
run: cargo build -p neopdf_gui --release
10 changes: 10 additions & 0 deletions .github/workflows/prek-checks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
name: Prek checks 🚀
on:
push:

jobs:
prek:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: j178/prek-action@v1
78 changes: 42 additions & 36 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,6 @@ jobs:
gh release edit v${version} --draft=false

gui-macos:
needs: capi-macos
strategy:
matrix:
include:
Expand All @@ -178,63 +177,70 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Install Qt
run: brew install qt6
- name: Set Qt path
run: echo "CMAKE_PREFIX_PATH=$(brew --prefix qt6)" >> $GITHUB_ENV
- name: Download capi artifact
uses: actions/download-artifact@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
name: neopdf_capi-${{ matrix.target }}
path: neopdf_capi_artifact
- name: Build and package
targets: ${{ matrix.target }}
- name: Install Tauri CLI
run: cargo install tauri-cli --version "^2"
- name: Build Tauri app (macOS)
working-directory: neopdf_gui
run: cargo tauri build --target ${{ matrix.target }}
- name: Prepare GUI artifact
run: |
mkdir capi_install
tar -xzf neopdf_capi_artifact/neopdf_capi-${{ matrix.target }}.tar.gz -C capi_install
export CARGO_C_INSTALL_PREFIX=$(pwd)/capi_install
cmake -S neopdf_gui -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$(pwd)/install -DCMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH
cmake --build build --config Release
cmake --install build
cd install
cpack
BUNDLE=$(find target/${{ matrix.target }}/release/bundle -name "*.dmg" | head -1)
cp "$BUNDLE" neopdf_gui-${{ matrix.target }}.dmg
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: neopdf_gui-${{ matrix.target }}
path: install/*.dmg
path: neopdf_gui-${{ matrix.target }}.dmg

gui-linux:
needs: capi-linux
runs-on: ubuntu-latest
strategy:
matrix:
target: [x86_64-unknown-linux-gnu]
steps:
- uses: actions/checkout@v4
- name: Install Qt and build essentials
- name: Install Linux dependencies (Tauri / WebKit)
run: |
sudo apt-get update
sudo apt-get install -y build-essential qt6-base-dev qt6-charts-dev
- name: Download capi artifact
uses: actions/download-artifact@v4
sudo apt-get install -y \
libwebkit2gtk-4.1-dev \
build-essential \
curl \
wget \
file \
libxdo-dev \
libssl-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
libglib2.0-dev \
patchelf
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
name: neopdf_capi-${{ matrix.target }}
path: neopdf_capi_artifact
- name: Build and package
targets: ${{ matrix.target }}
- name: Install Tauri CLI
run: cargo install tauri-cli --version "^2"
- name: Build Tauri app (Linux)
working-directory: neopdf_gui
run: cargo tauri build --target ${{ matrix.target }}
- name: Prepare GUI artifact
run: |
mkdir capi_install
tar -xzf neopdf_capi_artifact/neopdf_capi-${{ matrix.target }}.tar.gz -C capi_install
export CARGO_C_INSTALL_PREFIX=$(pwd)/capi_install
cmake -S neopdf_gui -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$(pwd)/install
cmake --build build --config Release
cmake --install build
cd install
cpack
DIR=target/${{ matrix.target }}/release/bundle
mkdir -p gui-out
if ls $DIR/appimage/*.AppImage 1>/dev/null 2>&1; then
cp $DIR/appimage/*.AppImage gui-out/neopdf_gui-${{ matrix.target }}.AppImage
else
cp $DIR/deb/*.deb gui-out/neopdf_gui-${{ matrix.target }}.deb
fi
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: neopdf_gui-${{ matrix.target }}
path: install/*.tar.gz
path: gui-out/


publish-crates:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/run-rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
RUSTFLAGS: '-Cinstrument-coverage -Clink-dead-code'
run: |
export NEOPDF_DATA_PATH=${PWD}/neopdf-data
cargo test --workspace --exclude neopdf_pyapi --exclude neopdf_tmdlib --exclude neopdf_wolfram --no-fail-fast 2> >(tee stderr 1>&2)
cargo test --workspace --exclude neopdf_pyapi --exclude neopdf_tmdlib --exclude neopdf_wolfram --exclude neopdf_gui --no-fail-fast 2> >(tee stderr 1>&2)
if [ "${{ matrix.os }}" != "macos-latest" ]; then
sed -i 's/\x1B\[[0-9;]\{1,\}[A-Za-z]//g' stderr
fi
Expand Down
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
/target
/neopdf_gui/build/

/neopdf_gui/icons/64x64.png
/neopdf_gui/icons/icon.png
/neopdf_gui/icons/android/
/neopdf_gui/icons/ios/
/neopdf_gui/icons/Square*.png
/neopdf_gui/icons/StoreLogo.png

/neopdf_capi/docs/build/
/neopdf_capi/docs/xml/
/neopdf_capi/docs/html/
Expand Down
4 changes: 4 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@ repos:
pass_filenames: false
types: [file, rust]
language: system
- repo: https://github.com/rvben/rumdl-pre-commit
rev: v0.1.21
hooks:
- id: rumdl-fmt
- repo: https://github.com/pre-commit/pre-commit
rev: v3.8.0
hooks:
Expand Down
29 changes: 29 additions & 0 deletions .rumdl.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# rumdl configuration file

# Global configuration options
[global]
disable = [
"MD013",
"MD033",
"MD041",
"MD059",
"MD046",
"MD024",
"MD036",
"MD034"
]

# List of file/directory patterns to exclude from linting
exclude = [
".git",
".github",
"node_modules",
"vendor",
"dist",
"build",
"CHANGELOG.md",
"LICENSE.md",
]

# Respect .gitignore files when scanning directories (default: true)
respect-gitignore = true
Loading