History#

2026.10.23 – Bugfix: the WebUI stopped answering after many requests
  • Each worker thread that had used the datastore kept a database connection, since nothing closed its session. After enough concurrent requests – a job page polled by a browser – all 15 of the pool’s connections were held and every request failed after 30 s with “QueuePool limit of size 5 overflow 10 reached” (ChemAI, 2026-10-23), until the WebUI was restarted. Each request now has its own session, closed when the request ends.

2026.10.19 – Resume a killed or failed job; LAMMPS .trj files as tables
  • A job that was killed, failed or never started can be resumed: ‘Resume job’ on the job’s page, or POST /api/jobs/{id}/resume. The JobServer runs it again in its own directory and queue, continuing from the last step it completed; the step it stopped in runs again from its start. If the checkpoint no longer matches the flowchart, the job runs from the top and job.out says why. Needs seamm-jobserver 2026.10.19.

  • LAMMPS time series (.trj files) are shown as tables, like CSV files, with the numbers aligned: the names of the columns from the header (SEAMM’s own, or the ‘#’ lines of LAMMPS’s fix ave/time), and SEAMM’s metadata (what it is, how often it was sampled) as a caption. Vector trajectories are still shown as text.

  • Long tables – .trj and CSV files of any size, which were not shown at all above 2 MB – show their first 3,000 lines, or with ‘Show the last 300 rows’ their end, which Refresh keeps up to date while a job runs.

  • Internal: the checks that keep a file name from a request inside the job’s (or the web pages’) directory are written in the form GitHub’s code scanning (CodeQL) recognizes. They were as safe before, but each use of a checked path was reported as a path injection.

2026.10.7.2 – Internal: the release workflow tests on Python 3.12 only
  • The release workflow still tested on Python 3.11, which 2026.10.7 no longer supports, so neither 2026.10.7 nor 2026.10.7.1 was published. It now tests on 3.12 only. The changes are those of 2026.10.7 and 2026.10.7.1.

2026.10.7.1 – Job list refresh and a collapsed file tree
  • Clicking Jobs in the sidebar while the job list is showing refreshes the list.

  • A job’s file tree starts with every folder closed, so a large job opens quickly and is explored level by level. A Close all folders button, which stays at the top of the tree as it scrolls, closes every open folder.

  • The open folders are kept while switching between Files and Tasks; a Tasks link to an iteration’s output opens the folders leading to it; and going to another job starts with its tree closed and no file selected.

2026.10.7 – Internal: documentation of the queues API
  • The getting-started and user guides say what GET /api/queues returns (each queue’s limits with the current values), that the desktop app’s submit dialog uses it for its queue picker and override fields while the web Submit page uses the default queue, and name seamm_scheduler as the staging machinery (not seamm_slurm).

  • Requires Python 3.12.

2026.10.5 – A Tasks view of a job
  • A job’s page has a Files | Tasks switch. Tasks lists the calculations of each step with their state, attempts and where they ran, and each parallel loop’s iterations with their state, whether they are merged, and links to their output; it refreshes every 15 seconds while the job runs (a job on a cluster shows its files as last fetched back).

  • The API: /api/jobs/{id}/tasks, and /api/jobs/{id}/files?depth=n for jobs with very many files.

  • Requires seamm-scheduler 2026.10.5.

2026.10.3 – PBS queues
  • Queues are read with seamm_scheduler rather than the older seamm_slurm, so queues with type = queue (such as PBS) are listed, and remote ones fetch a running job’s files on demand.

  • Requires seamm-scheduler 2026.10.3 or later.

2026.10.1.1 – Internal: the release workflow installs with uv
  • The release workflow still built a conda environment from the CI environment file that 2026.10.1 removed, so 2026.10.1 was not published. It now installs the package with uv, as the other workflows do. The changes are those of 2026.10.1.

2026.10.1 – A missing database is built from the job directories
  • When the datastore has no database but has job directories, the database is now built from them when the web interface starts (each job’s flowchart and job_data.json), as the old Dashboard did, rather than started empty. Flowcharts in SEAMM’s new format 3.0 are read too (seamm-datastore 2026.10.1).

  • Documented in Getting Started.

  • Internal: CI now installs the package’s declared dependencies with uv rather than a conda test environment; the test and docs extras declare what the tests and docs need beyond the standard tooling.

2026.8.13.1 – Live file sync for jobs running on a remote SLURM cluster
  • A job routed to a transport = ssh queue (a remote SLURM cluster with no filesystem shared with the JobServer) runs in a scratch directory on that remote host, and its files were previously only pulled back once the job finished. The job detail page now pulls them back on demand instead – automatically when the page is opened, and again from the file viewer’s Refresh button – so files are visible while the job is still running. A job routed this way is now marked “remote” next to its queue on the detail page.

  • Needs no separate configuration: reuses the same <root>/<jobserver-name>.ini section (remote_root, etc.) the JobServer itself already uses to stage the job out there, and the same lock file the JobServer’s own end-of-run pull uses, so the two can never run a transfer against the same job concurrently. Requires seamm_slurm >= 2026.8.13 and seamm_jobserver >= 2026.8.13.

  • Throttled server-side to at most one real transfer attempt every 15 seconds per job, regardless of how often the page/button asks – safe to leave the page open without generating constant ssh/rsync traffic.

2026.8.13 – A real sidebar, an Admin page, and a friendlier job list
  • New collapsible sidebar (Jobs/Projects/Submit a job, plus Admin for an admin account – see below) replaces the ad hoc per-page header/back-links every page used to build on its own, and shows whether the backend is reachable. A per-instance --name (defaults to --jobserver-name/hostname) now appears in a top bar and the browser tab title, so multiple open dashboards are distinguishable at a glance.

  • New Admin page (in “local” auth mode, for an account with the admin role): list every account, create a new one, reset a password, or delete an account – the same operations as the seamm-webui-user command, just from the browser. An account can never delete itself, so there is always at least one admin left.

  • The job list can now be filtered by project, status, title (substring search), and queue, all combinable – click a column header’s funnel icon to filter by that column, Excel-style, rather than a separate widget. The Title/Project columns truncate long values with an ellipsis (full value on hover) instead of wrapping, keeping every row the same height.

  • New First/Last page buttons next to Previous/Next (all four now matching media-player-style icons) jump straight to the first or last page of the current filter instead of stepping one page at a time; the page indicator now shows the total page count when known.

  • Bugfix: the job list’s screen-fit page-size calculation re-measured row height after every page change, and a fraction-of-a-pixel difference between renders could flip the computed page size, triggering a refetch that re-measured again – a resize/refetch loop that showed up as fast, unusable flickering on a tall window. It now measures once, when the table first has rows, and otherwise only on an actual window resize.

2026.8.10.3 – Add seamm-webui-user delete
  • New seamm-webui-user delete <username> removes an account (confirms interactively unless --yes is given).

2026.8.10.2 – Add seamm-webui-user set-password
  • New seamm-webui-user set-password <username> resets an existing account’s password. Always prompts interactively (no --password flag, unlike create), so a reset never has to pass the new password anywhere it could be captured – shell history, a shared terminal session, and so on.

2026.8.10.1 – Multi-cluster queue picker, and a real frontend port bug
  • New GET /api/queues: lists every queue (cluster/local target) the paired JobServer can route jobs to, with each field’s override limits and current site-default value – what the Tk desktop submit dialog’s queue picker reads. Never returns host/transport/credentials, only what a submitting client needs. seamm-webui gained --jobserver-name for the (uncommon) case where a host runs more than one independent JobServer instance; defaults to this host’s hostname, matching seamm_jobserver’s own default.

  • Job listing and detail pages now show which queue a job ran on (a new “Queue” column in the jobs list, a “Queue” field on the job detail page) – already present in the API’s job data, just not previously surfaced in the UI.

  • Bugfix: the built browser UI hardcoded http://localhost:8010 as its API address at build time, so it silently broke on any other host/port the server was actually run on, regardless of what URL was used to load the page. The API and the built UI are always served by the same process/origin, so the shipped build no longer needs (or defaults to) an absolute API URL at all – only npm run dev’s separate-origin Vite dev server still does, and that override no longer leaks into the production build.

2026.8.10 – Serve the built UI directly, and self-contained HTTPS
  • A release install now serves the built browser UI itself – no separate frontend dev server needed in production.

  • When reachable from other machines, a self-signed HTTPS certificate is generated and reused automatically if none is supplied (--ssl-certfile/--ssl-keyfile), so no separate reverse proxy is needed for encryption.

  • Can now be installed and run as a persistent daemon via seamm-installer install seamm-webui / seamm-installer services create webui, in its own dedicated Conda environment, alongside the JobServer that actually executes submitted jobs.

2026.8.8 – Initial release
  • Web-based SEAMM dashboard: browse projects and jobs, filter the job list by project, and view job status.

  • Submit new jobs from the browser.

  • Job management: monitor, kill, and delete jobs.

  • In-browser file viewer with a directory tree and content pane, including CSV tables, Plotly graphs, and 3D structure viewing (CIF/mmCIF/PDB/SDF) via NGL.

  • Real user authentication and project-scoped access control.