Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
ffcd4e9
build(wasm): cross-compile IntaRNA and its dependencies (#286)
Alexander-Mitrofanov Oct 20, 2026
dda614b
build(wasm): adapt bundled dlib to current libc++ and Clang
Alexander-Mitrofanov Oct 20, 2026
ccc376f
feat(web): isolate predictions in cancellable workers (#286 step 2)
Alexander-Mitrofanov Oct 20, 2026
e0333ac
feat(web): add responsive FASTA prediction workspace (#286 step 3)
Alexander-Mitrofanov Oct 20, 2026
bac25b0
feat(web): add result exploration and combined Pages deployment (#286…
Alexander-Mitrofanov Oct 20, 2026
3172583
test(web): verify native accessibility and real browser cancellation
Alexander-Mitrofanov Oct 20, 2026
dd6a3af
move step 1 file
martin-raden Oct 21, 2026
89a951e
fix: mark inherited IntaRNA virtual methods as override
Alexander-Mitrofanov Oct 21, 2026
fc62a23
feat: address browser interface review on PR 287
Alexander-Mitrofanov Oct 21, 2026
e1b93d5
Merge pull request #289 from BackofenLab/feat/287-webinterface-review
martin-raden Oct 21, 2026
44c2691
feat(web): add vaRRI visualization and reproducible ZIP exports
Alexander-Mitrofanov Oct 22, 2026
77eb89d
fix(wasm): repair ViennaRNA download and cache recovery
Alexander-Mitrofanov Oct 22, 2026
87e548c
fix(wasm): build against the latest stable ViennaRNA 2.x
Alexander-Mitrofanov Oct 22, 2026
d44d7a6
fix(wasm): isolate legacy ViennaRNA headers from Boost includes
Alexander-Mitrofanov Oct 22, 2026
e138eb5
Merge pull request #293 from BackofenLab/fix/292-latest-vienna2
martin-raden Oct 23, 2026
d7f0511
Merge pull request #292 from BackofenLab/fix/291-wasm-build
martin-raden Oct 23, 2026
9d6c61a
Merge pull request #291 from BackofenLab/feat/287-visualization-archive
martin-raden Oct 23, 2026
6173e84
refactor(gui): rename webinterface directory and Pages path (#287)
Alexander-Mitrofanov Oct 23, 2026
dc0f996
feat(cli): read JSON parameters with embedded text inputs (#287)
Alexander-Mitrofanov Oct 23, 2026
902915c
feat(gui): pass embedded JSON parameters to WASM (#287)
Alexander-Mitrofanov Oct 23, 2026
f477525
feat(gui): load and store JSON settings and reproducible ZIPs (#287)
Alexander-Mitrofanov Oct 23, 2026
bf15ca6
feat(gui): clear reset inputs and load examples from JSON (#287)
Alexander-Mitrofanov Oct 23, 2026
7b1d7c0
feat(gui): upload and drop local FASTA files (#287)
Alexander-Mitrofanov Oct 23, 2026
628534d
feat(gui): show prediction and evaluation task choices (#287)
Alexander-Mitrofanov Oct 23, 2026
7378801
fix: complete JSON report replay and browser regression checks (#287)
Alexander-Mitrofanov Oct 23, 2026
471c1ae
docs: record JSON and GUI validation and vendor provenance (#287)
Alexander-Mitrofanov Oct 23, 2026
ce16b8e
Retain computed GUI runs as selectable sessions (#297)
Alexander-Mitrofanov Oct 23, 2026
53594c2
Revise GUI inputs and result controls from PR #299 review
Alexander-Mitrofanov Oct 23, 2026
4ce566a
Merge pull request #300 from BackofenLab/fix/299-gui-review
martin-raden Oct 26, 2026
3929873
Merge pull request #299 from BackofenLab/feat/297-gui-sessions
martin-raden Oct 26, 2026
a884313
Merge pull request #297 from BackofenLab/feat/287-json-gui-review
martin-raden Oct 26, 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
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Keep the third-party parser separate in reviews and preserve upstream bytes.
src/bin/nlohmann/json.hpp linguist-vendored
src/bin/nlohmann/LICENSE.MIT linguist-vendored -whitespace
120 changes: 120 additions & 0 deletions .github/workflows/build-wasm.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
name: WebAssembly and web interface

on:
pull_request:
push:
branches: [master]
workflow_dispatch:

permissions:
contents: read

jobs:
documentation:
uses: ./.github/workflows/documentation.yml

build:
runs-on: ubuntu-24.04
timeout-minutes: 60
steps:
- uses: actions/checkout@v7
- uses: emscripten-core/setup-emsdk@v15
with:
version: '4.0.23'
actions-cache-folder: emsdk-cache
- name: Install native build tools
run: sudo apt-get update && sudo apt-get install --yes autoconf automake libtool pkg-config
- uses: actions/setup-node@v6
with:
node-version: '24'
- uses: actions/setup-python@v6
with:
python-version: '3.12'
- name: Test dependency download integrity and cache recovery
run: |
python scripts/wasm/test-downloads.py
python scripts/wasm/test-vienna-release.py
- name: Test input, worker lifecycle and CSV handling
run: npm test --prefix gui
- name: Resolve newest stable ViennaRNA 2.x release and checksum
env:
GITHUB_TOKEN: ${{ github.token }}
run: |
python scripts/wasm/vienna-release.py --latest > "$RUNNER_TEMP/vienna-release.json"
cat "$RUNNER_TEMP/vienna-release.json"
echo "WASM_VIENNA_RELEASE=$RUNNER_TEMP/vienna-release.json" >> "$GITHUB_ENV"
- name: Cross-compile dependencies and IntaRNA
run: bash scripts/wasm/build.sh
- name: Check real WASM predictions against the native reference
run: |
node scripts/wasm/smoke.mjs
node scripts/wasm/smoke-protocol.mjs
- name: Stage the static site and notices
run: bash scripts/wasm/stage.sh
- name: Install browser test tools
run: |
python -m pip install -r scripts/wasm/requirements-browser.txt
python -m playwright install --with-deps chromium firefox
- name: Exercise the browser with real WASM
run: |
python -m http.server 8765 --bind 127.0.0.1 --directory build-wasm > /tmp/intarna-http.log 2>&1 &
server_pid=$!
trap 'kill "$server_pid"' EXIT
for attempt in {1..30}; do
if curl --fail --silent http://127.0.0.1:8765/site/ > /dev/null; then break; fi
sleep 1
done
python scripts/wasm/test-browser.py http://127.0.0.1:8765/site/ --screenshot build-wasm/browser.png
python scripts/wasm/test-browser.py http://127.0.0.1:8765/site/ --browser firefox
- uses: actions/upload-artifact@v4
with:
name: intarna-gui
path: build-wasm/site
if-no-files-found: error

package:
needs: [build, documentation]
runs-on: ubuntu-24.04
steps:
- uses: actions/download-artifact@v4
with:
name: intarna-documentation
path: _site
- uses: actions/download-artifact@v4
with:
name: intarna-gui
path: _site/gui
- name: Verify documentation and browser interface coexist
run: |
test -s _site/index.html
test -s _site/api/index.html
test -s _site/gui/index.html
test -s _site/gui/wasm/intarna.wasm
- uses: actions/upload-artifact@v4
with:
name: intarna-pages-preview
path: _site
- name: Upload GitHub Pages artifact
if: github.repository == 'BackofenLab/IntaRNA' && github.ref == 'refs/heads/master' && github.event_name != 'pull_request'
uses: actions/upload-pages-artifact@v4
with:
path: _site

deploy:
if: github.repository == 'BackofenLab/IntaRNA' && github.ref == 'refs/heads/master' && github.event_name != 'pull_request'
needs: package
runs-on: ubuntu-24.04
permissions:
pages: write
id-token: write
concurrency:
group: github-pages
cancel-in-progress: false
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/configure-pages@v5
- name: Deploy tested site and existing documentation
id: deployment
uses: actions/deploy-pages@v4
1 change: 0 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ on:
push:
branches: [master]
pull_request:
branches: [master]

defaults:
run:
Expand Down
26 changes: 4 additions & 22 deletions .github/workflows/documentation.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
name: Documentation

on:
push:
branches: [master]
pull_request:
branches: [master]
workflow_call:
workflow_dispatch:

permissions:
Expand Down Expand Up @@ -47,24 +44,9 @@ jobs:
test -s _site/index.html
test -s _site/doc/figures/icon-up.28.png

- name: Upload documentation for review and deployment
uses: actions/upload-pages-artifact@v4
- name: Upload documentation for the combined Pages site
uses: actions/upload-artifact@v4
with:
name: intarna-documentation
path: _site
retention-days: 7

deploy:
name: Publish documentation
if: github.repository == 'BackofenLab/IntaRNA' && github.ref == 'refs/heads/master' && github.event_name != 'pull_request'
needs: build
runs-on: ubuntu-24.04
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -82,3 +82,10 @@ python/intarnapvalue.*
/IntaRNA.pc
/IntaRNA.exe.stackdump
/py-compile

# Browser build outputs and local test dependencies
/build-wasm/
/gui/wasm/
/gui/node_modules/

/scripts/wasm/__pycache__/
Loading
Loading