Skip to content

Preserve computed GUI runs as selectable sessions (#297) - #299

Merged
martin-raden merged 3 commits into
feat/287-json-gui-reviewfrom
feat/297-gui-sessions
Oct 26, 2026
Merged

martin-raden merged 3 commits into
feat/287-json-gui-reviewfrom
feat/297-gui-sessions

Conversation

@Alexander-Mitrofanov

Copy link
Copy Markdown
Collaborator

Changing parameters used to discard the previous output. Computed runs now remain as separate sessions in browser memory, so users can switch between settings and compare results.

Addresses the new review comment on #297. This follow-up targets feat/287-json-gui-review, as requested, and depends on #297.

  • Every successful run, including empty results, gets a unique page-local ID, default editable name, JSON input snapshot, and independent output area. Edits, Reset, Load, examples, failed runs and cancellation preserve previous sessions.
  • Selecting a session restores its computed inputs, opens its output and folds the others. Tables retain their own filters, sorting and column visibility; folded vaRRI frames unload and restore on reopening.
  • Each header provides an editable name, ZIP export and garbage-bin deletion. Archives always contain that session’s saved JSON and complete outputs, even while folded or while the form contains different settings. Deletion preserves the editable form.
  • Update static staging, browser regressions, usage documentation and ChangeLog. Session controls support keyboard use and mobile layouts.

Sessions last for the current page lifetime; reload/close clears them. ZIP exports retain results outside the page. No persistent browser storage or new dependency is introduced. Memory use grows with retained runs, and deleting sessions releases their outputs.

Validation

  • npm test --prefix gui: 18 tests passed.
  • scripts/wasm/test-browser.py in Chromium and Firefox, with real WASM at nested URLs: passed. Covers session creation/restoration, task changes, signed indices, SHAPE, CSV order, reports, independent tables, folded-session export, safe renaming, deletion, stale uploads, reset/import/failure/abort preservation and reload. Desktop screenshots inspected; 390 px viewport has no document overflow.
  • node scripts/wasm/smoke-protocol.mjs <staged-engine>: native-reference checks and byte-identical JSON archive replay passed. Browser validation reused the parent branch’s compiled Emscripten 4.0.23 / ViennaRNA 2.7.2 assets with their original provenance; no C++ or worker protocol changes.
  • Fresh GCC 14 release build: make tests -j2, all 9 native API/CLI groups passed. Existing out-of-tree CLI fixtures were linked into the build’s tests/data directory.
  • bash scripts/wasm/stage.sh with the existing engine/dependency assets, bash -n scripts/wasm/stage.sh, and git diff --check: passed.

@martin-raden

Copy link
Copy Markdown
Member

@Alexander-Mitrofanov
thanks, please revise

(gui) header

  • rename "IntaRNA" to "IntaRNA package"

(gui) "Sequence input"

  • swap "Start index" and "record count" parts (left, right respectively) below each fasta input area
  • from FASTA sequence headers use only the first part up to the first whitespace as name and provide a warning below the input field if some header shows ignored none-whitespace content afterwards
  • show the general information "Plain sequence ..." below the fasta fields using the full width (currently the surrounding html container is constraint to half the page width only)
  • allow for both horizontal and vertical scrolling in FASTA input areas
  • increase the allowed sequence number per field to 50 and indivual sequence lengths to 5000 but keep the upper bound on (max query length * max target length) <= 1000000

(gui) "Query"/"Target"

  • make the "Accessibility Constraints" a full width input field above "Accessibility Data"
  • reorder:
    • first row: FASTA record subset, Interaction regions, maximum interaction length, maximum unpaired bases .., automatic region ...
    • second row: accessibility, accessibility window, accessibility max basepair span, target partition function scale
      • disable (and grey out label) of window and max base pair span if "accessibility" is set to one of "import ..."
      • disable (and grey out label) all accessibility related options if "accessibility" is set to "Ignore"
    • third row: accessibility constraints (see above)
    • fourth: accessibility data
      • disable (and grey out label) unless "accessibility" is set to one of "Import ..."
  • ensure input fields are on the same horizontal alignment (some labels become 2 lined and move the input field down... correct this)

(gui) "Helix (model B)"

  • integrate into "Interaction and energy" at the bottom
  • keep "disabled" unless the respective model is selected

(gui) "Interaction and energy"

  • rename to "Interaction and Energy"
  • reorder:
    • first row: interaction model, prediction algorithm
    • second row: viennarna parameter set, temperature, additional energy
    • third row: exclude dangling end energies
    • fourth row: prediction window width, prediction window overlap
    • fifth row: greedy extension score
    • sixth row: helix mode related arguments
  • move accessibility related (exclude lonely base pairs and gu helix ends) to "Query" / "Target" pages (between second and thirds row wrt reorder description given above) even so they are applied to both (keep them synchronized)

(gui) "SHAPE"

  • move respective query/target related fields to "Query"/"Target" section respectively
  • use a two column layout in third row (wrt to reorder guide above):
    • left: accessibility input
    • right: the SHAPE input fields (input area and below the method and conversion fields

(gui) "General"

  • rename section to "CLI-only"
  • remove sentence "Tasks run locally in one worker. Abort or Escape stops computation immediately."
  • use full page width for info text

(gui) "Seed"

  • reorder:
    • first row: replace "do not require seed" checkbox with dropdown with options:
      • "Disable seed constraint" : disable (and grey out label) all seed related options
      • "Explicit seed" : only enable explicit seed input field (2nd row)
      • "Identify seeds" : disable explicit seed part
    • second row: explicit seeds (full width input field)
    • third row: seed base pairs, max unpaired options
    • fourth row: max seed energy, min seed pu, max seed hybridization energy
    • fifth row: query regions, target regions (each half page width input fields)
  • ensure input fields are on the same horizontal alignment (some labels become 2 lined and move the input field down... correct this)

(gui) "Output"

  • reduce the listing of CSV output columns to the respective column name (with a tooltip for further information) and a short info that details are available as hover tooltips; this should compact the list
  • group the list by categories like "Energy" "Output" "Sequence" "Interaction" "Partition Function"
    • add group-specific "Select All" / "Deselect All" links behind group name
  • list all columsn that require or are important for partition function computation below "partition function"
  • extend the list of columns selected per default
    • evaluation mode: all Energy outputs
    • prediction modes: add ED1/2, seedE, seedStart1,SeedStart2
  • increase default output number to 10

(gui) input section reorder:

  • reorder:

    • "Sequences" (former "Sequence input")
    • "Seed"
    • "Output"
    • "Model & Energy" (former "Interaction and energy")
    • "Query"
    • "Target"
    • "CLI-only"
  • move "Compute/Evaluate interactions" button to the left

    • followed by some space and "Input Parameters:" (label) "Examples" (dropdown), "Store", "Load", "Reset" (buttons)

(gui) result table

  • remove "vaRRI" column name from first column that holds the "View" buttons
  • make column names with line breaks after first word to narrow column width of single number columns like "Target start" etc.
  • reduce horizontal padding of table and header cells to 5px (currently 12px)
  • reduce horizontal padding of "View" buttons to 0.35rem
  • use different blue hues for table header and selected row

(gui) session view

  • selecting a session header element enables and loads/shows the respective session information
  • rename "Sessions" to "Results"
  • change order within section header:
    • "Show"/"Hide" button
    • name field
    • "Download ZIP" button
    • "garbage bin" button

Revise GUI inputs and result controls from #299 review
@martin-raden
martin-raden merged commit 3929873 into feat/287-json-gui-review Oct 26, 2026
5 checks passed
@martin-raden
martin-raden deleted the feat/297-gui-sessions branch October 26, 2026 09:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants