Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
182 commits
Select commit Hold shift + click to select a range
deef8da
update version of the NeSI OOD OpenComposer App
geoffreyweal May 29, 2026
84e840b
update version of the NeSI OOD OpenComposer App
geoffreyweal May 29, 2026
e4802d1
update version of the NeSI OOD OpenComposer App
geoffreyweal May 29, 2026
3a73701
update version of the NeSI OOD OpenComposer App
geoffreyweal May 30, 2026
bc2e3d5
update version of the NeSI OOD OpenComposer App
geoffreyweal May 30, 2026
36d0915
update version of the NeSI OOD OpenComposer App
geoffreyweal May 30, 2026
2745f33
update version of the NeSI OOD OpenComposer App
geoffreyweal May 30, 2026
f6b12f0
update version of the NeSI OOD OpenComposer App
geoffreyweal May 30, 2026
83100cd
update version of the NeSI OOD OpenComposer App
geoffreyweal May 30, 2026
4b034b7
update version of the NeSI OOD OpenComposer App
geoffreyweal May 30, 2026
b0e1383
update version of the NeSI OOD OpenComposer App
geoffreyweal May 30, 2026
261b771
update version of the NeSI OOD OpenComposer App
geoffreyweal May 30, 2026
e2c6851
update version of the NeSI OOD OpenComposer App
geoffreyweal May 30, 2026
c742aa3
update version of the NeSI OOD OpenComposer App
geoffreyweal May 30, 2026
28bd680
update version of the NeSI OOD OpenComposer App
geoffreyweal May 30, 2026
941a5d2
update version of the NeSI OOD OpenComposer App
geoffreyweal May 30, 2026
bfcc043
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
31daae1
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
2df161b
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
264dd11
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
9d3a55a
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
3487de0
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
fc8ce40
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
215b4c7
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
a628726
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
cc1ff39
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
20eb5f6
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
16eafd3
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
2910807
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
13b5f3e
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
ad082a9
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
3c00e9a
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
42fa865
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
b0bcab8
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
322e845
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
4438876
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
a03f744
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
ffca0f4
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
2151664
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
da1c944
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
f749c38
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
c57fd16
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
2aaf589
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
2bb4a37
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
fe07e6c
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
911da08
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
11abdcc
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
ce311c2
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
8acf76a
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
2a6f590
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
b1986b4
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
d8d9872
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
4862b1e
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
39ee9b9
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
820b79c
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
763bb91
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
ecb69e2
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
d2a826a
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
d26afde
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
8e06ec7
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
c7e0272
update version of the NeSI OOD OpenComposer App
geoffreyweal May 31, 2026
b38d07c
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
67e9431
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
e3c6f76
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
5519c10
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
9c3cac8
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
9114405
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
3191325
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
a6b161c
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
6482427
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
862b734
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
29a88b3
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
9ec8994
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
4130e95
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
176224b
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
40fc8a8
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
8a60079
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
ffe35d4
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
b024898
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
51fe771
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
77ca78d
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
4dfd588
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
3b3501a
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
40e7cce
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
26b1303
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
390716b
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
ebaa998
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
0c89bb2
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
bd077c5
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
3cf773a
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
ba1a140
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
161eb7b
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
b8423fd
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
9ea0d3c
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 1, 2026
4c995f0
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
84971a6
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
f29edfc
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
782c037
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
69c13b1
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
17c4288
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
a5b23e2
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
990a519
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
a318f9f
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
a00d375
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
caefc98
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
370c2d9
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
e4f912d
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
fc8ab4c
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
9d601e5
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
3347d90
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
a854af2
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
a04e016
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
d6cb83f
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
52e26ee
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
d8dd4b8
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
40aa18a
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
c67d45d
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
f6dd821
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
e1fa140
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
4841368
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
88c7376
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
025ebe7
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
52b9c12
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
54e5cd2
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
c440a4a
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
c1d2dd9
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
d481fe6
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
efe5ac9
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
d9445e1
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
7fe5419
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
01e8f62
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
148dfd2
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
f1886e5
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
ba1222c
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
bf61b49
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
d190afa
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
018a945
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
1845927
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
1421b17
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
c76d814
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 2, 2026
216d0ce
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
4f2c7b2
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
fca025a
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
9da07e2
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
85b30a8
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
d3f89fd
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
92ef1d3
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
21e9a4b
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
365211d
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
cecf59f
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
3d623b6
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
faa0916
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
2295c2a
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
0ca6d79
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
c9332a7
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
a1f0aae
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
247f608
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
d0fa24f
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
306f11a
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
533b154
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
c785c78
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
3cb22c2
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
f67c7a1
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
5c21f80
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
27cfa87
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
e07d0a3
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
f1a7ce8
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
eaa5516
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
534b7fd
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
379db39
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
2af286f
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
e8d83e2
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
3ab20bd
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
7341218
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
3a252ec
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
7abd84c
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
b81c052
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
631949b
update version of the NeSI OOD OpenComposer App
geoffreyweal Jun 3, 2026
e5d11be
Script writing agent.
CallumWalley Jun 5, 2026
a35ba47
update readme
CallumWalley Jun 5, 2026
7583cbd
print progress
CallumWalley Jun 8, 2026
da54ef2
some apps
CallumWalley Jun 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .claude/worktrees/agent-ae998a3241a635a33
Submodule agent-ae998a3241a635a33 added at 17c428
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ Gemfile
Gemfile.lock
vendor/
.bundle
*.pyc
5 changes: 5 additions & 0 deletions .markdownlint.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"MD013": false,
"MD024": { "siblings_only": true },
"MD033": false
}
85 changes: 84 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,87 @@
# Changelog

## [2.1.0] - 2026-06-01

### Added

#### My Templates

- **"My Templates" section on the home page** — saved templates are shown as thumbnails in the same
grid style as regular apps, using the source app's own icon. Clicking a template opens its source
app form pre-filled with the saved values.
- **Save as Template** button on any application form. Saves the current form values, the source
app path, and the app icon into a YAML file under `{data_dir}/templates/`.
- **Save button** (replaces "Save as Template") when a template has been loaded into the form —
overwrites the stored values without prompting for a name again.
- **Edit (pencil) button** on each template thumbnail — opens an inline modal to rename the
template or update its description without leaving the home page.
- **Delete (×) button** on each template thumbnail — deletes the template after a confirmation prompt.
- New routes: `POST /templates`, `POST /templates/:slug/overwrite`,
`POST /templates/:slug/rename`, `POST /templates/:slug/delete`.

#### Nodes page

- **Dynamic GRES columns** — the Nodes table automatically discovers every GRES type reported
by the scheduler (e.g. `gpu`, `nvme`) and creates one column per type. No static column
configuration is needed.
- GRES columns are displayed in **alphabetical order**.
- Each GRES cell shows **available / total** resource counts with the existing resource-bar style,
broken out by subtype (e.g. `A100`, `H100`).
- Removed the **Type** and **Arch** filter checkboxes from the Nodes page.

#### History page

- **One-by-one job cancellation** — "Cancel Job" now issues one `scancel` call per selected job
instead of a single bulk call.
- An **animated Bootstrap progress bar** (`X / N jobs`) is shown inside the cancel modal while
cancellation is running.
- On full success the bar turns green and the page auto-reloads after one second. On partial
failure the bar turns yellow and each error is listed.
- New route: `POST /history/cancel_one` — cancels a single job and returns JSON
`{ok: true}` / `{ok: false, error: "..."}`.

### Fixed

- Clicking "Save" to overwrite a template no longer discards content that was already entered in the
form. Previously, saving would clear fields the user had filled in; now the existing form values are
preserved correctly.

## [2.0.0] - 2026-05-11

### Add

- Add side-by-side syntax highlighting overlays for the script and submit textareas.
- Add configurable `highlight_theme` and `directive_color` settings for history/script highlighting.
- Add advanced history search options for date range, AND/OR matching, and field selection.
- Add history search elapsed-time output next to the entry count.

### Changed

- Change history storage from PStore to SQLite with automatic migration from legacy `.db` files.
- Expand history search to index all stored job values, including Job Details and Job Script contents.
- Improve history search highlighting so it follows AND/OR search terms and the selected field.

## Fix
### Fix

- Fix initialization error in Dynamic Form Widget

## [1.9.0] - 2026-03-20

### Add

- A warning will be displayed before manual changes to the script and submit sections are deleted.
- Support OC_ROUNDING_ROUND, OC_ROUNDING_FLOOR, and OC_ROUNDING_CEIL in calc().
- Local Development is added in install manual.

### Changed

- RACK is used for development.
- Improve README to match Appverse documentation standard in [18](https://github.com/RIKEN-RCCS/OpenComposer/issues/28).

## [1.8.0] - 2025-12-26

### Add

- Add the function to define multiple login_nodes and ssh_wrappers in conf.yml in [25](https://github.com/RIKEN-RCCS/OpenComposer/discussions/25).
- Add calc function in [20](https://github.com/RIKEN-RCCS/OpenComposer/pull/20).
- History page items can be freely changed in [19](https://github.com/RIKEN-RCCS/OpenComposer/pull/19).
Expand All @@ -35,58 +90,73 @@
- Add a variable @OC_DIR_NAME.

### Changed

- Change clusters from cluster in conf.yml (It is an incompatible change).
- Change related_apps from related_apps in manifest.yml (It is an incompatible change).
- Changed dirname and basename to work the same as linux commands.
- Change a variable OC_SCRIPT_CONTENT from SCRIPT_CONTENT.

### Fixed

- Do nothing if expr returns an error.

## [1.7.0] - 2025-11-06

### Add

- The function only saves job scripts.
- The function allows users to view and edit preprocessing.

### Changed

- Manual format changed from Markdown to HTML.

### Fixed

- An error occurs when you first open the History page in [18](https://github.com/RIKEN-RCCS/OpenComposer/pull/18).
- An issue where variables could not be referenced in the submit and check sections.
- An error where the separator was not reflected when using an array as the second argument in the options of checkbox and multi_select widgets.
- An error that disabled elements could not be referenced on the initial screen.

## [1.6.0] - 2025-10-19

### Add

- The function for zeropadding.
- The function to output log.
- The custom PBS Pro scheduler for Miyabi.

### Changed

- Change the manual format from Markdown to HTML.
- Change "cancel job" from "delete job" in history page.
- The name of the page from Top Page to Home Page.

### Fixed

- The initial value was not set correctly when the value was a number.
- Consolidate querying both running and history jobs in PBS Pro in [9](https://github.com/RIKEN-RCCS/OpenComposer/pull/9).
- PBS Pro qstat bug in [8](https://github.com/RIKEN-RCCS/OpenComposer/pull/8).

## [1.5.0] - 2025-05-08

### Add

- Add highlights to filtered results in history page.
- Support multiple clusters.

### Changed

- Filter in history page searches all job information.

### Fixed

- Sanitization for XSS.

## [1.4.0] - 2025-04-08

### Added

- Support to set a main label and a sub-label.
- Support to hide job scripts.
- Dynamic Form Widget is also enabled in the header.
Expand All @@ -95,6 +165,7 @@
- Add a function oc_assert() which can be used in form.yml.

### Changed

- For slurm, remove init_bash and added --export=NONE to the sbatch option.
- For slurm, PBSpro and Fujitsu TCS, increase the amount of verbose output.
- On the history page, when you hover the cursor over the image of a visualization app, the name of the application is displayed.
Expand All @@ -105,11 +176,13 @@
- Display error messages more clearly in form.

### Fixed

- A reference so that it works even if the destination of related_app in manuscript is a link.

## [1.3.0] - 2025-02-12

### Added

- Support Grid Engine job scheduler.
- It is possible to define headers for each application.
- For pre-processing, submit section in form.yml is added. And delete submit.yml.
Expand All @@ -118,28 +191,33 @@
- It is possible to define headers for each application.

### Changed

- Change path selector modal overflow behavior in [1](https://github.com/RIKEN-RCCS/OpenComposer/pull/1)
- To speed up the history page, update the status only for the job IDs that are displayed.
- The separator option enables output without spaces.
- To prevent elements that are initially hidden from appearing for just a moment, make them visible after all loading is complete.

### Fixed

- Fixed behavior of the path widget with or without a slash at the end of a directory.

## [1.2.0] - 2025-01-20

### Added

- Support PBS job scheduler.
- Add bin_overrides in conf.yml.erb.
- Add a utility misc/read_yml_erb.rb.

### Changed

- login_node in conf.yml.erb has been made optional.
- Simplify `ident` parameter.
- When a job scheduler error occurs, output stdout as well as stderr.
- Get the job submission date and time from a Ruby function, not from the scheduler.

### Fixed

- Fixed a mistake in the application name link on the form.
- Element with disabled is considered unchecked.
- When the selected option in select widget becomes disabled by dynamic form widget, the non-disabled option is selected.
Expand All @@ -148,6 +226,7 @@
## [1.1.0] - 2025-01-09

### Added

- Added `ident` parameter in the web form.
- Enabled setting related applications.
- Added support for Font Awesome icons.
Expand All @@ -156,6 +235,7 @@
- Added an option to include the value of "Job Name" in the header as part of the job submission command.

### Changed

- Divided the manual into sections for creating web forms and using Open Composer.
- Extended the inquiry period for completed Fujitsu_TCS jobs to 365 days.
- Improved error handling: when job submission fails, the same page reloads with the failed parameters pre-filled.
Expand All @@ -165,11 +245,14 @@
- Ensured that changes in header values do not update `JOB_SCRIPT_CONTENTS`.

### Fixed

- Fixed the issue with loading the bash environment when executing `pjsub`/`sbatch` commands.
- Resolved the issue where `public/no_image_square.jpg` could not be displayed.

### Security

- Applied URL encoding for special characters on the history page to enhance security.

## [1.0.0] - 12-11-2024

First release.
31 changes: 20 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# Open Composer

## Overview

Open Composer is a web application to generate batch job scripts and submit batch jobs for HPC clusters on [Open OnDemand](https://openondemand.org/).
Expand All @@ -8,31 +10,37 @@ interface for creating, previewing, editing, and submitting batch job scripts. I
supports multiple job schedulers and can be configured for different HPC applications.

- **App type:** Workflow Composer (Jobs category)
- **Latest release:** [`v2.0.0`](https://github.com/RIKEN-RCCS/OpenComposer/releases/tag/v2.0.0) (see [Changelog](https://github.com/RIKEN-RCCS/OpenComposer/blob/main/CHANGELOG.md))
- **Latest release:** [`v2.1.0`](https://github.com/RIKEN-RCCS/OpenComposer/releases/tag/v2.1.0) (see [Changelog](CHANGELOG.md))
- **License:** MIT (see [LICENSE file](https://github.com/RIKEN-RCCS/OpenComposer/blob/main/LICENSE))
- **Requirements:** Open OnDemand 3.0 or later.
- **Supported job schedulers:** Slurm, PBS Pro, Grid Engine, Fujitsu TCS
- **Features**
- Graphical web interface for generating and submitting batch job scripts
- Multi-scheduler and multi-cluster support
- Job history page with filtering, status tracking, and job cancellation
- One-by-one job cancellation with an animated in-modal progress bar
- Editable job script preview before submission
- Configurable application forms via `form.yml`
- Dynamic form widgets with conditional visibility and validation
- Support for preprocessing steps via submit sections
- Customizable per-application headers and labels
- Path selector widget for file and directory selection
- My Templates — save, manage, and reuse form configurations
- Nodes page with dynamic GRES columns auto-discovered from the scheduler
- Bilingual documentation (English and Japanese)

## Screenshots

### Home page

<img width="600" style="border: 1px solid #333;" alt="Home" src="https://riken-rccs.github.io/OpenComposer/docs/img/home_page.png">

### Application page

<img width="600" style="border: 1px solid #333;" alt="Application" src="https://riken-rccs.github.io/OpenComposer/docs/img/application_page.png">

### History page

<img width="600" style="border: 1px solid #333;" alt="History" src="https://riken-rccs.github.io/OpenComposer/docs/img/history_page.png">

## Documents
Expand Down Expand Up @@ -63,21 +71,20 @@ The following steps assume you have administrator privileges.
If you do not have administrator privileges, see [Section 4. "Installation by general user" in installation document](https://riken-rccs.github.io/OpenComposer/docs/install.html#general).

```sh
$ cd /var/www/ood/apps/sys/
$ sudo git clone https://github.com/RIKEN-RCCS/OpenComposer.git
$ cd OpenComposer
$ sudo cp conf.yml.erb.sample conf.yml.erb
cd /var/www/ood/apps/sys/
sudo git clone https://github.com/RIKEN-RCCS/OpenComposer.git
cd OpenComposer
sudo cp conf.yml.erb.sample conf.yml.erb
```

You need to edit `conf.yml.erb`. For details, see [Section 2. "Setting" in installation manual](https://riken-rccs.github.io/OpenComposer/docs/install.html#setting).

## Testing

| System | Site | Scheduler | Repository |
|-------------|-------------|--------------------|------------|
| Fugaku | RIKEN RCCS | Fujitsu TCS, Slurm | https://github.com/RIKEN-RCCS/composer_fugaku |
| R-CCS Cloud | RIKEN RCCS | Slurm | https://github.com/RIKEN-RCCS/composer_rccs_cloud |

| System | Site | Scheduler | Repository |
|-------------|------------|--------------------|------------------------------------------------------------------------------------------|
| Fugaku | RIKEN RCCS | Fujitsu TCS, Slurm | [composer_fugaku](https://github.com/RIKEN-RCCS/composer_fugaku) |
| R-CCS Cloud | RIKEN RCCS | Slurm | [composer_rccs_cloud](https://github.com/RIKEN-RCCS/composer_rccs_cloud) |

## Contributing

Expand All @@ -88,11 +95,13 @@ For discussions, see the [GitHub Discussions](https://github.com/RIKEN-RCCS/Open
For bugs or feature requests, [open an issue](https://github.com/RIKEN-RCCS/OpenComposer/issues) with detailed logs and reproduction steps.

## Reference

If you use this software in your research or development work, please cite the following publication:

> Masahiro Nakao and Keiji Yamamoto. 2025. ``Open Composer: A Web-Based Application for Generating and Managing Batch Jobs on HPC Clusters''. In Proceedings of the SC '25 Workshops of the International Conference for High Performance Computing, Networking, Storage and Analysis (SC Workshops '25). Association for Computing Machinery, New York, NY, USA, 697-704. https://doi.org/10.1145/3731599.3767428
> Masahiro Nakao and Keiji Yamamoto. 2025. "Open Composer: A Web-Based Application for Generating and Managing Batch Jobs on HPC Clusters". In Proceedings of the SC '25 Workshops of the International Conference for High Performance Computing, Networking, Storage and Analysis (SC Workshops '25). ACM, New York, NY, USA, 697-704. [https://doi.org/10.1145/3731599.3767428](https://doi.org/10.1145/3731599.3767428)

## Presentation

- [HUST: International Workshop on HPC User Support Tools](https://hust-workshop.github.io), St. Louis, USA, Nov. 2025 [[Paper](https://doi.org/10.1145/3731599.3767428)] [[Slide](https://www.mnakao.net/data/2025/HUST2025.pdf)]
- [SupercomputingAsia 2025](https://sca25.sc-asia.org/), Singapore, Mar. 2025 [[Poster](https://mnakao.net/data/2025/sca.pdf)]
- [The 197th HPC Research Symposium](https://www.ipsj.or.jp/kenkyukai/event/arc251hpc197.html), Fukuoka, Japan, Dec. 2024 [[Paper](https://mnakao.net/data/2024/HPC197.pdf)] [[Slide](https://mnakao.net/data/2024/HPC197-slide.pdf)] (Japanese)
Expand Down
45 changes: 45 additions & 0 deletions apps/ABAQUS/form.yml.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<%# AI generated %>
<%
base_path = File.join(File.dirname(yml_path), '../SlurmGPU/form.yml')
base = YAML.load_file(base_path)

new_form = {}
base['form'].each do |k, v|
if k == 'time_days_hours_minutes'
new_form['abaqus_module'] = {
'widget' => 'module_load',
'module' => "ABAQUS",
'label' => "ABAQUS Module"
}
new_form['abaqus_input'] = {
'widget' => 'text_field',
'label' => "Input File",
'help' => "Full path to your ABAQUS input file (.inp), e.g. /nesi/project/nesi99999/my_model.inp"
}
end
new_form[k] = v
end

base['form'] = new_form

ntasks = cores_advanced_1.to_i > 1 ? cores_advanced_1.to_i : cores_simple.to_i
cpus = cores_advanced_2.to_i > 1 ? cores_advanced_2.to_i : 1
has_gpu = [gpu_any, gpu_genoa, gpu_milan].any? { |g| g.to_s != '' && g.to_s != 'None' }
job_name = File.basename(abaqus_input.to_s, '.inp')
if has_gpu
app_cmd = "abaqus input=#{abaqus_input} job=#{job_name} cpus=${SLURM_CPUS_PER_TASK} gpus=${SLURM_GPUS_PER_NODE} mp_mode=threads verbose=2 interactive"
elsif ntasks > 1
app_cmd = "abaqus input=#{abaqus_input} job=#{job_name} cpus=${SLURM_NTASKS} mp_mode=mpi verbose=2 interactive"
elsif cpus > 1
app_cmd = "abaqus input=#{abaqus_input} job=#{job_name} cpus=${SLURM_CPUS_PER_TASK} mp_mode=threads verbose=2 interactive"
else
app_cmd = "abaqus input=#{abaqus_input} job=#{job_name} verbose=2 interactive"
end

base['script'] = base['script'].rstrip + "\n\n" + [
"module -q purge",
"module load #{abaqus_module}",
app_cmd
].join("\n") + "\n"
%>
<%= base.to_yaml -%>
Binary file added apps/ABAQUS/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading