varri-js 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CITATION.bib ADDED
@@ -0,0 +1,13 @@
1
+ @misc{raden_varrii_js_2026,
2
+ title = {vaRRI - Visual annotation of RNA-RNA interactions},
3
+ author = {Raden, Martin and Ganter, Fabian},
4
+ year = {2026},
5
+ url = {https://backofenlab.github.io/vaRRI/},
6
+ note = {Web application and JavaScript library},
7
+ abstract = {vaRRI is a browser-based JavaScript library for visualizing RNA-RNA interactions (RRIs) as 2D diagrams with annotations such as base-pair highlights, probability profiles, subsequence highlights, and point mutation annotations.},
8
+ keywords = {RNA, RNA-RNA interaction, visualization, JavaScript, bioinformatics},
9
+ version = {1.0.0},
10
+ license = {MIT},
11
+ organization = {University of Freiburg, Department of Computer Science, Bioinformatics Lab},
12
+ organization_url = {https://www.bioinformatics.uni-freiburg.de/}
13
+ }
package/CITATION.cff ADDED
@@ -0,0 +1,33 @@
1
+ cff-version: 1.2.0
2
+ title: vaRRI - Visual annotation of RNA-RNA interactions
3
+ message: >-
4
+ If you use this software in a publication, please cite it using the metadata
5
+ in this file.
6
+ type: software
7
+ authors:
8
+ - given-names: Martin
9
+ family-names: Raden
10
+ affiliation: University of Freiburg, Germany
11
+ orcid: 'https://orcid.org/0000-0002-7926-5911'
12
+ - given-names: Fabian
13
+ family-names: Ganter
14
+ affiliation: University of Freiburg, Germany
15
+ - name: Bioinformatics Lab, University of Freiburg
16
+ affiliation: Department of Computer Science, University of Freiburg
17
+ website: 'https://www.bioinformatics.uni-freiburg.de/'
18
+ version: 1.0.0
19
+ date-released: '2026-07-31'
20
+ repository-code: 'https://github.com/BackofenLab/vaRRI'
21
+ url: 'https://backofenlab.github.io/vaRRI/'
22
+ abstract: >-
23
+ vaRRI is a browser-based JavaScript library for visualizing RNA-RNA
24
+ interactions (RRIs) as 2D diagrams with annotations such as base-pair
25
+ highlights, probability profiles, subsequence highlights, and point mutation
26
+ annotations.
27
+ keywords:
28
+ - RNA
29
+ - RNA-RNA interaction
30
+ - visualization
31
+ - JavaScript
32
+ - bioinformatics
33
+ license: MIT
package/README.html CHANGED
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>vaRRI-js README</title>
6
+ <title>vaRRI README</title>
7
7
  <link rel="icon" type="image/png" href="logo/vaRRI.logo.40x40.png">
8
8
 
9
9
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/5.5.1/github-markdown.min.css">
@@ -107,7 +107,7 @@
107
107
  if (isLocalFile && token.type === 'html' && typeof token.text === 'string' && token.text.includes('<iframe')) {
108
108
  // Optionally extract the URL from the iframe if present
109
109
  const srcMatch = token.text.match(/src=["']([^"']+)["']/);
110
- const iframeUrl = srcMatch ? srcMatch[1] : 'https://backofenlab.github.io/vaRRI-js/index.html';
110
+ const iframeUrl = srcMatch ? srcMatch[1] : 'https://backofenlab.github.io/vaRRI/index.html';
111
111
 
112
112
  token.text = `
113
113
  <div class="status-banner" style="margin: 16px 0;">
@@ -122,7 +122,7 @@
122
122
 
123
123
  // 3. Define URLs
124
124
  const localUrl = './README.md';
125
- const remoteUrl = 'https://raw.githubusercontent.com/BackofenLab/vaRRI-js/main/README.md';
125
+ const remoteUrl = 'https://raw.githubusercontent.com/BackofenLab/vaRRI/main/README.md';
126
126
 
127
127
  // 4. Choose target URL
128
128
  const targetUrl = isLocalFile ? remoteUrl : localUrl;
@@ -133,7 +133,7 @@
133
133
  ⚠️ <strong>Note:</strong>
134
134
  <blockquote style="margin: 8px;">
135
135
  README.html was opened locally and cannot access the local README.md.<br>
136
- Therefore, the README was loaded from the <a href="${remoteUrl}">vaRRI-js online repository</a>.
136
+ Therefore, the README was loaded from the <a href="${remoteUrl}">vaRRI online repository</a>.
137
137
  </blockquote>
138
138
  </div>
139
139
  `;
package/README.md CHANGED
@@ -1,13 +1,13 @@
1
- # ![vaRRI-js](logo/vaRRI.logo.40x40.png) vaRRI-js - Visual Annotation of RNA–RNA Interactions
1
+ # vaRRI - Visual Annotation of RNA–RNA Interactions
2
2
 
3
- Visualise and annotate RNA–RNA interactions directly in the browser — no server or no command-line tools required.
3
+ ![vaRRI](logo/vaRRI.logo.40x40.png) Visualise and annotate RNA–RNA interactions directly in the browser — no server or no command-line tools required.
4
4
 
5
5
  ---
6
6
 
7
7
  ## Table of Contents
8
8
 
9
9
  1. [Overview](#overview-and-objective)
10
- 2. [Examples from Literature](#examples-from-literature-reproduced-with-varri-js)
10
+ 2. [Examples from Literature](#examples-from-literature-reproduced-with-varri)
11
11
  3. [Project Structure](#project-structure)
12
12
  4. [Quick Start](#quick-start)
13
13
  5. [npm Package](#npm-package)
@@ -23,7 +23,7 @@ Visualise and annotate RNA–RNA interactions directly in the browser — no ser
23
23
 
24
24
  ## Overview and Objective
25
25
 
26
- vaRRI-js is a pure JavaScript library to visualize the base pairing of
26
+ vaRRI is a pure JavaScript library to visualize the base pairing of
27
27
  RNA-RNA interactions (RRIs) as 2D diagrams with additional annotation like
28
28
 
29
29
  - coloring by sequence or loop type,
@@ -48,18 +48,18 @@ Use cases include
48
48
  > If you like it, [please cite it!](citation.html)
49
49
 
50
50
 
51
- Given two sequences and the RRI secondary-structure encoding in dot-bracket notation, vaRRI-js renders
51
+ Given two sequences and the RRI secondary-structure encoding in dot-bracket notation, vaRRI renders
52
52
  them with the [Fornac](https://github.com/ViennaRNA/fornac) library, and then
53
53
  applies all of vaRRI's annotations and tweaks.
54
54
 
55
- [![vaRRI-js example visualization](doc/vaRRI-UI-example.png)](https://backofenlab.github.io/vaRRI-js/)
55
+ [![vaRRI example visualization](doc/vaRRI-UI-example.png)](https://backofenlab.github.io/vaRRI/)
56
56
 
57
57
 
58
58
  ---
59
59
 
60
- ## Examples from Literature reproduced with vaRRI-js
60
+ ## Examples from Literature reproduced with vaRRI
61
61
 
62
- To showcase the capabilities of vaRRI-js, we provide a collection of examples from the literature that have been reproduced using vaRRI-js.
62
+ To showcase the capabilities of vaRRI, we provide a collection of examples from the literature that have been reproduced using vaRRI.
63
63
  The examples can be loaded directly in the input website via the **Example** dropdown.
64
64
 
65
65
 
@@ -68,7 +68,7 @@ The examples can be loaded directly in the input website via the **Example** dro
68
68
  ## Project Structure
69
69
 
70
70
  ```
71
- vaRRI-js/
71
+ vaRRI/
72
72
  │
73
73
  ├── fornac/
74
74
  │ ├── fornac.js # Fornac library (vaRRI dependency)
@@ -99,16 +99,16 @@ vaRRI-js/
99
99
  > before using it in a production environment.
100
100
 
101
101
 
102
- The easiest way to [**use vaRRI-js is via the GitHub pages website**](https://BackofenLab.github.io/vaRRI-js):
102
+ The easiest way to [**use vaRRI is via the GitHub pages website**](https://BackofenLab.github.io/vaRRI):
103
103
 
104
- - [https://BackofenLab.github.io/vaRRI-js](https://BackofenLab.github.io/vaRRI-js)
104
+ - [https://BackofenLab.github.io/vaRRI](https://BackofenLab.github.io/vaRRI)
105
105
 
106
- If you want to run the website locally or use the library in your own HTML page, clone the repository or download a ZIP of the project via the [Releases](https://github.com/BackofenLab/vaRRI-js/releases) section.
106
+ If you want to run the website locally or use the library in your own HTML page, clone the repository or download a ZIP of the project via the [Releases](https://github.com/BackofenLab/vaRRI/releases) section.
107
107
  Afterwards, open `index.html` directly in a browser — no build step or server needed:
108
108
 
109
109
  ```bash
110
- git clone https://github.com/BackofenLab/vaRRI-js.git
111
- cd vaRRI-js
110
+ git clone https://github.com/BackofenLab/vaRRI.git
111
+ cd vaRRI
112
112
  # simply open index.html in your browser, e.g.:
113
113
  open index.html # macOS
114
114
  xdg-open index.html # Linux
@@ -126,12 +126,57 @@ To use the library in your own HTML page, include the dependencies in the follow
126
126
 
127
127
  ## npm Package
128
128
 
129
- Install vaRRI-js in an application with:
129
+ Install vaRRI in an application with:
130
130
 
131
131
  ```bash
132
132
  npm install varri-js
133
133
  ```
134
134
 
135
+ The npm package remains `varri-js`; the GitHub repository and project branding are `vaRRI`.
136
+ Version 1.0.2 includes the updated complete viewer as well as the library.
137
+
138
+ ### Open `index.html` in Browser
139
+
140
+ After installation via npm, you find the vaRRI user interface `index.html` in the following subfolder
141
+
142
+ ```bash
143
+ node_modules/varri-js/index.html
144
+ ```
145
+
146
+ You can open it with any recent browser and start working
147
+
148
+
149
+ ### Local Webserver (optional)
150
+
151
+ Alternatively, serving the installed viewer locally using a local webserver requires e.g. Python 3:
152
+
153
+ ```bash
154
+ python3 -m http.server 8080 --bind 127.0.0.1 --directory node_modules/varri-js
155
+ ```
156
+
157
+ Open `http://localhost:8080/index.html`. Applications can serve or copy the whole package
158
+ directory using their own static-file server, retaining the relative directory layout.
159
+ The viewer includes example inputs, SVG/PNG export controls, help, citation data and local logos.
160
+ Use HTTP rather than `file://` so the help and citation pages can load their packaged data.
161
+
162
+ The JavaScript `main` and root export intentionally remain `src/vaRRI.js`: `require('varri-js')`
163
+ and ESM default imports return the library API. The viewer has a separate public entry:
164
+
165
+ ```javascript
166
+ const viewerPath = require.resolve('varri-js/index.html');
167
+ ```
168
+
169
+ Resolving this path does not start a server; serve its containing directory to make the viewer
170
+ and its assets available. HTML is a browser document, not a JavaScript module.
171
+
172
+ **Network requirements:** the existing viewer uses jsDelivr for `marked` and external
173
+ university logos from `www.bioinf.uni-freiburg.de`. The help page also uses cdnjs for its
174
+ Markdown stylesheet, and the citation page loads Citation.js from jsDelivr. These URLs
175
+ are retained, so this is not a fully offline distribution. Deployments with restricted
176
+ network access must provide those assets locally and update the HTML references/CSP.
177
+ Opening the help or citation page through `file://` can additionally fetch fallback content
178
+ from `raw.githubusercontent.com`; serving the package over HTTP uses the local files.
179
+
135
180
  The package exports the CommonJS-compatible API as `varri-js` and ships the browser assets under
136
181
  `varri-js/fornac/` and `varri-js/dist/`. For a static page served from an npm-based application,
137
182
  load the browser files in this order:
@@ -267,8 +312,8 @@ These generated entries are shown in the same list but are **not removable or ed
267
312
  Behaviour of generated list entries:
268
313
 
269
314
  - When **RRI Background** is set to `nothing`, no generated region entry is shown.
270
- - When set to `region`, vaRRI-js computes the overall intermolecular interaction region and displays it as a generated, non-removable region entry.
271
- - When set to `basepairs`, vaRRI-js computes one or more generated region entries that correspond to intermolecular basepair stacks and displays them as non-removable entries.
315
+ - When set to `region`, vaRRI computes the overall intermolecular interaction region and displays it as a generated, non-removable region entry.
316
+ - When set to `basepairs`, vaRRI computes one or more generated region entries that correspond to intermolecular basepair stacks and displays them as non-removable entries.
272
317
  - Generated entries are refreshed automatically from the current structure and settings; they are not exported as user-defined region highlights in share links.
273
318
 
274
319
 
@@ -317,7 +362,7 @@ As separator, either space and tab is supported, and lines starting with `#` are
317
362
 
318
363
  > [!TIP]
319
364
  > - For convenience, respective text *files can be dragged and dropped* into the input fields to load the probability profiles.
320
- > - vaRRI-js also supports CSV files with a header line, where the first column contains the nucleotide indices and the second column contains the probability values. Such data is automatically converted to the space-separated format above, and the header line is ignored.
365
+ > - vaRRI also supports CSV files with a header line, where the first column contains the nucleotide indices and the second column contains the probability values. Such data is automatically converted to the space-separated format above, and the header line is ignored.
321
366
 
322
367
  Finally, the following fields are available to define the visualization of the probability profiles:
323
368
 
@@ -333,7 +378,7 @@ Finally, the following fields are available to define the visualization of the p
333
378
  ### Point Mutations
334
379
 
335
380
  RNA-RNA interaction visualizations are often used to discuss the effect of point mutations on the interaction.
336
- To support this, vaRRI-js allows to define point mutations in the input sequences and visualizes them in the rendered structure.
381
+ To support this, vaRRI allows to define point mutations in the input sequences and visualizes them in the rendered structure.
337
382
  A point mutation is defined by the sequence (1 or 2), the index of the nucleotide to mutate, and the new nucleotide (or letter) to use for the mutation.
338
383
  This information is provided in the following fields, and the "Add" button registers the mutation.
339
384
 
@@ -345,7 +390,7 @@ This information is provided in the following fields, and the "Add" button regis
345
390
  | **Color** | The color to use for highlighting the mutated nucleotide. |
346
391
 
347
392
  > [!TIP]
348
- > vaRRI-js allows to define arbitrary letters as mutations, i.e. the mutated nucleotide does not need to be a valid IUPAC character.
393
+ > vaRRI allows to define arbitrary letters as mutations, i.e. the mutated nucleotide does not need to be a valid IUPAC character.
349
394
  > That way, any kind of annotation can be added to the sequence, e.g. a letter representing a chemical modification, symbols for a certain type of mutation, or even a short word.
350
395
 
351
396
  All registered mutations are shown in a list above the input fields, and can be removed by clicking the "🗑️" icon.
@@ -395,7 +440,7 @@ Details about URL encoding are given in the following section [URL Parameters &
395
440
 
396
441
  ## URL Parameters & Sharing
397
442
 
398
- **vaRRI-js** supports state persistence directly via URL parameters, allowing you to pre-fill inputs or share specific visualization configurations using the **🔗 Share Link** button in the export panel. Most parameter names map directly to their corresponding HTML element IDs.
443
+ **vaRRI** supports state persistence directly via URL parameters, allowing you to pre-fill inputs or share specific visualization configurations using the **🔗 Share Link** button in the export panel. Most parameter names map directly to their corresponding HTML element IDs.
399
444
 
400
445
  ### Key Parameters
401
446
 
@@ -429,12 +474,25 @@ To simplify sequence and structure input validation, sequence and structure inpu
429
474
 
430
475
  You can embed the visualization directly into external web pages (e.g., in documentation, blogs, or web tools) using an `<iframe>`.
431
476
 
477
+ ### Embeddings in Existing Web Applications
478
+
479
+ Currently, vaRRI is already available as an RRI visualizer in the the following web applications:
480
+
481
+ - Freiburg RNA Tools: [https://rna.informatik.uni-freiburg.de/](https://rna.informatik.uni-freiburg.de/)
482
+ - IntaRNA - RNA-RNA interaction prediction server
483
+ - [Example visualization](https://rna.informatik.uni-freiburg.de/IntaRNA/Result.jsp?toolName=IntaRNA&jobID=4267751)
484
+ - CopomuS - Compensatory Mutation Designer for RNA-RNA interactions
485
+ - [Example visualization](https://rna.informatik.uni-freiburg.de/CopomuS/Result.jsp?toolName=CopomuS&jobID=1595284)
486
+ - Galaxy Visualizer: [https://usegalaxy.eu/](https://usegalaxy.eu/)
487
+ - vaRRI is available as a visualization tool for RNA-RNA interactions in the Galaxy workflow system
488
+
489
+
432
490
  ### Query Parameter
433
491
 
434
492
  Use the `showRenderingOnly=true` URL parameter to hide all surrounding UI elements (header, controls panel, footer) and display only the visualization result panel.
435
493
 
436
494
  ```text
437
- https://backofenlab.github.io/vaRRI-js/index.html?showRenderingOnly=true&<remaining_parameters...>
495
+ https://backofenlab.github.io/vaRRI/index.html?showRenderingOnly=true&<remaining_parameters...>
438
496
  ```
439
497
 
440
498
  For embedding without header and footer, you can also use the `hideFooterAndHeader=true` parameter, which will hide the header and footer but keep the controls panel visible, i.e. this checks the "Full screen UI" checkbox in the controls panel.
@@ -443,34 +501,35 @@ For embedding without header and footer, you can also use the `hideFooterAndHead
443
501
 
444
502
  ```html
445
503
  <iframe
446
- src="https://backofenlab.github.io/vaRRI-js/?sequence=ACGAUCAUGGAUUAGAGCAUUCGACAGCAG%26ACGAAAAAAAGAGCAUACGACAGUAG&colorSeq1=%23add8e6&startIndex1=-6&colorSeq2=%23f4bb44&startIndex2=100&structure=..%3C%3C%3C%3C...%3E%3E%3E%3E...%28%28..%28%28%28...%28%28..%26............%29%29...%29%29%29..%29%29..&coloring=strand&highlighting=region&colorRriNodes=%23ff0000&backgroundhighlighting=basepairs&colorRriRegion=%23ff0000&colorBasepair=%23ff0000&distinctBpTypes=on&forceLayout=on&profileColor1=%23800080&profileColorRepresentsOne1=on&profileColor2=%23ff0000&profileData1=%23+unpaired+probabilities%0A1+0.9%0A2+0.7%0A3+0.3%0A4+0.1%0A7+0.3%0A8+0.7%0A9+0.6&profileIdxRef1=1&profileIdxRef2=1&cropping=2&mutations=1%3A16G%3A338a29%2C2%3A118C%3A338a29&highlights=1%3A18-20%3A338a29%2C2%3A114-116%3A338a29&showRenderingOnly=true"
504
+ src="https://backofenlab.github.io/vaRRI/?sequence=ACGAUCAUGGAUUAGAGCAUUCGACAGCAG%26ACGAAAAAAAGAGCAUACGACAGUAG&colorSeq1=%23add8e6&startIndex1=-6&colorSeq2=%23f4bb44&startIndex2=100&structure=..%3C%3C%3C%3C...%3E%3E%3E%3E...%28%28..%28%28%28...%28%28..%26............%29%29...%29%29%29..%29%29..&coloring=strand&highlighting=region&colorRriNodes=%23ff0000&backgroundhighlighting=basepairs&colorRriRegion=%23ff0000&colorBasepair=%23ff0000&distinctBpTypes=on&forceLayout=on&profileColor1=%23800080&profileColorRepresentsOne1=on&profileColor2=%23ff0000&profileData1=%23+unpaired+probabilities%0A1+0.9%0A2+0.7%0A3+0.3%0A4+0.1%0A7+0.3%0A8+0.7%0A9+0.6&profileIdxRef1=1&profileIdxRef2=1&cropping=2&mutations=1%3A16G%3A338a29%2C2%3A118C%3A338a29&highlights=1%3A18-20%3A338a29%2C2%3A114-116%3A338a29&showRenderingOnly=true"
447
505
  width="100%"
448
506
  height="600"
449
507
  style="border: none;"
450
- title="vaRRI-js Visualization">
508
+ title="vaRRI Visualization">
451
509
  </iframe>
452
510
  ```
453
511
 
454
512
  > [!IMPORTANT]
455
513
  > Ensure special characters in URL parameters (such as `&` separating two RNA strands) are properly URL-encoded as `%26` when constructing embedding links manually. Also `()` have to be encoded using `%28` and `%29` respectively, as they are not encoded by default by URL encoders following RFC 3986.
456
514
 
457
- Valid embedding links can be generated using the "🔗 Share Link" button in the vaRRI-js interface but have to extended with `&showRenderingOnly=true`.
515
+ Valid embedding links can be generated using the "🔗 Share Link" button in the vaRRI interface but have to extended with `&showRenderingOnly=true`.
458
516
 
459
517
  ----
460
518
 
461
519
  <iframe
462
- src="https://backofenlab.github.io/vaRRI-js/?showRenderingOnly=true&sequence=ACGAUCAUGGAUUAGAGCAUUCGACAGCAG%26ACGAAAAAAAGAGCAUACGACAGUAG&colorSeq1=%23add8e6&startIndex1=-6&colorSeq2=%23f4bb44&startIndex2=100&structure=..%3C%3C%3C%3C...%3E%3E%3E%3E...%28%28..%28%28%28...%28%28..%26............%29%29...%29%29%29..%29%29..&coloring=strand&highlighting=region&colorRriNodes=%23ff0000&backgroundhighlighting=basepairs&colorRriRegion=%23ff0000&colorBasepair=%23ff0000&distinctBpTypes=on&forceLayout=on&profileColor1=%23800080&profileColorRepresentsOne1=on&profileColor2=%23ff0000&profileData1=%23+unpaired+probabilities%0A1+0.9%0A2+0.7%0A3+0.3%0A4+0.1%0A7+0.3%0A8+0.7%0A9+0.6&profileIdxRef1=1&profileIdxRef2=1&cropping=2&mutations=1%3A16G%3A338a29%2C2%3A118C%3A338a29&highlights=1%3A18-20%3A338a29%2C2%3A114-116%3A338a29"
520
+ src="https://backofenlab.github.io/vaRRI/?showRenderingOnly=true&sequence=ACGAUCAUGGAUUAGAGCAUUCGACAGCAG%26ACGAAAAAAAGAGCAUACGACAGUAG&colorSeq1=%23add8e6&startIndex1=-6&colorSeq2=%23f4bb44&startIndex2=100&structure=..%3C%3C%3C%3C...%3E%3E%3E%3E...%28%28..%28%28%28...%28%28..%26............%29%29...%29%29%29..%29%29..&coloring=strand&highlighting=region&colorRriNodes=%23ff0000&backgroundhighlighting=basepairs&colorRriRegion=%23ff0000&colorBasepair=%23ff0000&distinctBpTypes=on&forceLayout=on&profileColor1=%23800080&profileColorRepresentsOne1=on&profileColor2=%23ff0000&profileData1=%23+unpaired+probabilities%0A1+0.9%0A2+0.7%0A3+0.3%0A4+0.1%0A7+0.3%0A8+0.7%0A9+0.6&profileIdxRef1=1&profileIdxRef2=1&cropping=2&mutations=1%3A16G%3A338a29%2C2%3A118C%3A338a29&highlights=1%3A18-20%3A338a29%2C2%3A114-116%3A338a29"
463
521
  width="100%"
464
522
  height="600"
465
523
  style="border: 2px solid #333333; border-radius: 6px;"
466
- title="vaRRI-js Visualization">
524
+ title="vaRRI Visualization">
467
525
  </iframe>
468
526
 
469
527
  ----
470
528
 
471
529
  > [!NOTE]
472
530
  > GitHub repository preview strips embedded `<iframe>` elements as above for security reasons.
473
- > * If you are viewing [this page on **GitHub Pages**](https://backofenlab.github.io/vaRRI-js/README.html), the live widget will render directly below.
531
+ > * If you are viewing [this page on **GitHub Pages**](https://backofenlab.github.io/vaRRI/README.html), the live widget will render directly below.
532
+
474
533
 
475
534
  ## Input Format Reference
476
535
 
@@ -484,7 +543,7 @@ Valid embedding links can be generated using the "🔗 Share Link" button in the
484
543
 
485
544
  ### Dot-Bracket Notation
486
545
 
487
- vaRRI-js accepts standard dot-bracket secondary structure notation with the following characters:
546
+ vaRRI accepts standard dot-bracket secondary structure notation with the following characters:
488
547
 
489
548
  | Character | Meaning |
490
549
  |---|---|
@@ -499,7 +558,7 @@ You can use any of the four bracket types to represent basepairs, and they can b
499
558
  The only restriction is that the brackets must be balanced, i.e. every opening bracket must have a corresponding closing bracket of the same type.
500
559
 
501
560
  > [!IMPORTANT]
502
- > Since vaRRI-js is based on the fornac library, its underlying layout algorithm does not support pseudoknots, i.e. basepairs that cross each other.
561
+ > Since vaRRI is based on the fornac library, its underlying layout algorithm does not support pseudoknots, i.e. basepairs that cross each other.
503
562
  > In that case, the primary layout will be based on a reduced set of basepairs that do not cross each other, and the remaining basepairs are added subsequently.
504
563
  > Therefore, the layout of pseudoknotted structures may not be optimal, and the visualisation may be less clear than for non-pseudoknotted structures.
505
564
 
@@ -566,23 +625,36 @@ position-based annotations, including highlightings, point mutations, and probab
566
625
  Include `src/vaRRI.js` after the Fornac dependencies.
567
626
  The library exposes a single global object `vaRRI` with the a set of respective functions.
568
627
 
569
- The `src` directory provides a [detailed vaRRI-js Library API documentation](src/README.md)
628
+ The `src` directory provides a [detailed vaRRI Library API documentation](src/README.md)
570
629
 
571
630
 
572
631
  ---
573
632
 
574
633
  ## Release Process
575
634
 
576
- Publishing is automated by [`.github/workflows/publish-npm.yml`](.github/workflows/publish-npm.yml).
577
- For the first publication, repository maintainers can configure a granular npm token with package
578
- write access as the `NPM_TOKEN` GitHub Actions secret. Every published GitHub release runs the
579
- tests, builds and checks the package, derives the npm version from the release tag, and publishes
580
- with provenance.
581
-
582
- After the package exists on npm, the recommended long-term setup is an npm trusted publisher for
583
- the `BackofenLab/vaRRI-js` repository and `publish-npm.yml` workflow, with `npm publish` selected as
584
- an allowed action. The workflow already grants the required OIDC permission; after a successful
585
- trusted-publishing run, the long-lived `NPM_TOKEN` secret can be removed.
635
+ Publishing is automated by [`.github/workflows/publish-npm.yml`](https://github.com/BackofenLab/vaRRI/blob/main/.github/workflows/publish-npm.yml).
636
+ Releases continue to update the existing `varri-js` npm package. The npm package name is
637
+ independent of the GitHub repository name; no source files need to be renamed.
638
+ An owner must configure a **GitHub Actions trusted publisher** in the `varri-js` package's npm settings:
639
+ organization `BackofenLab`, repository `vaRRI`, workflow filename `publish-npm.yml`, no
640
+ environment name, with direct `npm publish` allowed. This one-time account action may request
641
+ 2FA. The workflow uses OIDC and does not require an `NPM_TOKEN` secret or interactive 2FA for
642
+ each release. See [npm trusted publishing](https://docs.npmjs.com/trusted-publishers/).
643
+ After the GitHub repository rename, update any existing trusted publisher that still names
644
+ the old repository to `vaRRI`. The repository name is case-sensitive.
645
+
646
+ Merge the workflow changes before creating a release tag on a commit containing them.
647
+ Every published GitHub release runs the tests, derives the npm version from the release tag,
648
+ builds and installs a temporary package to verify its contents, and publishes with provenance.
649
+ Stable releases use the `latest` npm tag; semantic prerelease versions or GitHub releases
650
+ marked as prereleases use `next`. Use `npm install varri-js@next` to try a prerelease.
651
+ Use a new, increasing stable version for each stable release: npm versions are immutable,
652
+ and re-running an already successful publish cannot overwrite that version. Publishing a
653
+ GitHub release is the trigger; pushing a Git tag alone does not publish the npm package.
654
+
655
+ Run `npm run test:ci` and `npm run test:package` locally before proposing a release. The
656
+ package check installs the actual tarball in a temporary consumer and checks module exports,
657
+ viewer asset references, documentation images, and citation data. It also runs in PR CI.
586
658
 
587
659
  Release tags must be valid semantic versions with an optional leading `v`, for example `v1.2.3`
588
660
  or `1.2.3`. The workflow changes `package.json` and `package-lock.json` only inside the temporary