🎻

ObieWebApp

· Changelog
Documentation ← All tools

Changelog

Log of fixes and features per version. Newest first.

v1.1.8-beta

Beta 2026-09-10

Site-wide

  • Added a ⟳ Refresh button to every tool's header. A stale service-worker cache could previously keep serving old JS/CSS indefinitely — even across a hard reload or browser restart — with no way to fix it short of clearing DevTools storage by hand. Refresh unregisters the service worker, clears the cache, and reloads, so anyone can self-serve an "it looks out of date" report.

Site-wide — text size

  • New A− / A+ buttons in every page's header scale the whole UI (90–175%) through the shared js/obie-fontsize.js. The choice is stored once and shared by all tools; Macs default to 100% and Windows/Linux to 115%. Implemented with CSS zoom, with full-height (100vh) page layouts compensated so they still fit the window.

WAV Reader (new)

  • New experimental tool, converted from the LabVIEW Main_WAV_Reader.vi. Takes one long two-channel recording (hammer + microphone) made in any audio app and turns it into a complete test run after the fact — the offline counterpart to Acquire. Two draggable cursors bracket the section to use, a draggable threshold line on the hammer plot finds the taps, and the hits are grouped into positions × taps using the same H01, H02… labels Acquire writes.
  • Export writes the Acquire folder layout directly — <instrument>/<test>/raw/ with one 16-bit stereo WAV per tap (left microphone, right hammer) and /TRF/ with one TRF per position at fComplex=2.0, carrying complex FRF plus coherence — so the result opens straight in Explore and Modal Analysis.
  • FRF defaults to LabVIEW's Sqrt(H1·H2) estimator: the geometric mean of the H1 and H2 magnitudes carried on H2's phase, falling back to H1 at bins where the hammer spectrum vanishes and H2 is undefined. Plain H1 is selectable from the Method dropdown to match Acquire.
  • Panels mirror the original front panel: Complete Data Set, Hammer, Microphone, Hammer Spectrum and the FRF, with coherence overlaid and a per-position selector. The status line flags when the hit count does not match the declared positions × taps, and the sidebar marks any position that came up short.
  • An exported run is now self-describing: alongside raw/ and TRF/ it writes Notes.txt (“Translated from <file>.wav by WAV Reader”, plus the section of the recording used), Settings.json in the same shape a desktop run writes, and the .avc/.avr pair — complex mean and magnitude mean across positions, the same averages Acquire produces. The Export dialog now closes itself once the files are on disk, reporting the result in the status line.

Spectrum Monitor (new)

  • New beta tool: a live, single-channel microphone scope. Shows the raw waveform and a block-averaged magnitude spectrum (last N ~0.3 s snippets, averaged in linear power then converted to dB), plus a scrolling spectrogram on a separate tab. Starts capturing automatically on page load; ⏸ Pause freezes the display (the microphone itself keeps running) so you can zoom/pan with Plotly's controls, which only appear while stopped or paused. Pick Channel 1 or 2 for stereo devices, and change the input device from the blue Device: indicator, same as Acquire. Settings persist to this browser immediately and, with a Data Folder set, to ObieAppSettings/spectrum.json — no separate save button.

Acquire — New Test dialog, notes, positions

  • New Test dialog. Opens blank — Instrument shows Choose an instrument, notes are empty, and the primary button is disabled until an instrument is chosen. The hint under the field says whether a new instrument folder will be created and what the new test will be called. The primary button now reads Run Test / Update Template and Run Test (previously Use Template / Update and Use Template / Use Settings).
  • Continue Test. Reopening the dialog during a test in progress titles it Current Test, keeps the instrument and the test's notes, and shows Continue Test. Data taking pauses while the dialog is open (a hit already being captured completes first).
  • Template auto-select. Picking an existing instrument pre-selects the template its last test used (from template.json), unless a template was already picked or the form was edited.
  • Notes and Photos are tabs under the Instrument field, giving Notes much more room. The notes box now contains the whole notes.txt — the new entry on top, earlier entries below — and everything in it is editable. The separate history list is gone, and the main toolbar's Notes button is hidden.
  • The dialog no longer scrolls horizontally; the right-hand columns have minimum widths.
  • Right-click a banner position that has data to clear it, or clear it and all later positions (also deletes their saved WAV/TRF files after a confirmation).
  • Undo and Esc now clear the Hammer, Mic and Hammer FFT plots as well as the FRF plot.

Acquire — averages and plots

  • New .rms file alongside .avr and .avc for each group: the RMS of the per-position magnitudes. Written in AvR layout, and Explore loads .rms files like .avr (with an RMS File Type filter) and its group-average save dialog gained Save as RMS; the AvR header is now stamped "Mean" rather than "RMS" to match what it contains.
  • The FRF Y axis, when auto-fitted, stays where the first data put it instead of jumping to ~4 dB when the plot clears between positions. ↕Y, the dB span, or an autoscale double-click re-fits it.
  • FRF plot toolbar: X=log hidden, controls spaced out for touch screens, dB field widened to three digits; the plot's line-name legend is hidden.
  • The Checklist button now shows/hides only the right-hand column (Plotly's zoom/pan toolbar is always visible) and remembers its state across reloads; the in-panel collapse arrow was removed. The status row shows the input device before the status text.
  • All plots (FRF, hammer, mic, hammer FFT) now have a full box: the axis lines are mirrored on the top and right edges.
  • The small hammer and mic plots now show the raw input value (−1 to +1, never calibrated) and are labelled "Raw value"; previously they showed the calibrated signal under a "V" label, so values above 1 appeared whenever a calibration factor was not 1. The hammer threshold line is now in the same units as the trigger. Saved WAV, TRF, AvC/AvR and RMS data are unchanged (still calibrated).
  • Calibration units relabelled N/full scale and Pa/full scale (the factor multiplies the normalized −1…+1 input, not volts), and the rows are now "Ch1 (L)" / "Ch2 (R)" to save room. Live View titles are unchanged.

Acquire

  • Run folders now write a single consolidated template.json (settings + node stencil together) instead of separate settings.json and stencil.json files — matching what Modal Analysis and Stencil Builder already expect, and fixing Stencil Builder's live-watch feature (it reads the per-position hit count from template.json; previously that field only existed in settings.json, so live-watch silently fell back to a slower heuristic). Reopening an older run that still has a stencil in the old stencil.json format now carries that stencil forward into the new template.json automatically, instead of dropping it.
  • Relabeled the signal-type dropdown for clarity: Mic → 🔊 Radiation, Accel → 📡 Modal Analysis (no change to what selecting each option does).
  • Redesigned the Node Stencil picker in Template & Settings: removed the separate Build Stencil / Apply Stencil buttons — "Stencil Builder" is now a link, and clicking a stencil in the list (or the new None option) applies or clears it immediately. A small preview of the applied stencil's node layout now appears under Hit Detection; while the dialog is open it periodically re-checks the stencil's file so edits made in a Stencil Builder tab show up automatically, and clicking the preview opens Stencil Builder with that exact stencil loaded.
  • Plot Settings is now a collapsible section (expanded by default) instead of always taking up the full third column.
  • Renamed Agenda to Checklist and made it collapsible (click its header to show/hide, expanded by default) for advanced users who don't need the step-by-step reminders. Split the "Powered, 48v (2 lights)" step into three separate checkboxes: Powered on, 48V on, and HiZ on for the hammer.
  • Downloading the FRF plot as a PNG (camera icon in the plot toolbar) now renders it on a white background instead of transparent, so it's readable when pasted elsewhere.
  • Removed the forced setup wizard added earlier in this beta. Connecting a Data Folder (auto-restore or a fresh pick) now lands immediately in a live, unnamed "scratch" view — calibrations at 1, cutoffs at 0.30 s, nothing running — so you can plug in and watch signals before configuring anything. The toolbar's Template button is now a split button: click its name to reopen the current template, or its ▾ caret for a dropdown of every saved template; picking one opens Template & Settings with that template already applied. The 🎻 Instrument button and test-name indicator stay hidden until an instrument is actually named (in the same dialog); doing so both commits the name and starts acquisition automatically if nothing else is running.
  • Restructured the Template & Settings dialog: Input device moved into a new Notes / Template tab pair (Notes shown by default) alongside Run Settings and Hit Detection, and the freed-up left column gained a Photos section (Add Photos… / Camera) matching the standalone Notes dialog's. The Node Stencil picker is now a Stencil: dropdown next to the Template picker instead of a separate list.
  • Calibration rows are now labelled Channel 1 (L): Hammer cal. / Channel 2 (R): Microphone cal. (or Accelerometer, for 📡 Modal Analysis) and swap position along with their labels when Swap channels is toggled, so the row on top always matches whichever input the hammer is actually wired to.
  • Moved LiveView to sit between the Template control and ▶ Start in the banner row, and ✨ Ask Claude next to Notes in the main toolbar. Increased the status row's font size for readability.
  • Moved the Undo / Clear / Start over buttons into their own row above the Hammer FFT mini plot (renamed from "↩ Undo Hit" / "🗑 Clear" / "↺ Start over," emoji dropped). Added a 🔍 Zoom Toolbar toggle to the main plot's toolbar that shows or hides Plotly's own built-in zoom/pan/box-select/autoscale/reset/camera controls.
  • Every disk write Acquire performs (hits, notes, photos, templates, stencils, run renames) now retries with backoff before treating a locked file as a gone Data Folder — fixes a bug where cloud-sync clients (Dropbox, OneDrive, Google Drive) briefly locking a file during their own sync could get misread as "the folder was removed," forcing an unnecessary re-pick after only a few measurements.

Documentation

  • Added Modal Analysis and Circle Fit sections to the User Guide, and two new Technical Reference sections covering the math behind each: complex-FRF phasor reconstruction and bicubic surface interpolation for mode-shape animation, and the full Kennedy–Pancu SDOF Nyquist circle-fitting method (receptance conversion, algebraic circle fit, natural frequency, hysteretic damping, modal constant sign convention, residual compensation, and per-node residue extraction).

Acquire — calibration, H1 and raw WAVs

  • Calibration now uses sensor sensitivities, like LabVIEW: hammer in mV/N, microphone in mV/Pa (accelerometer mV/m/s², vibrometer mV/mm/s). LabVIEW values can be entered or imported unchanged. Previously the same numbers were treated as "N / Pa per full scale", which made the FRF about 13 dB too high for typical sensors. Existing web templates written with the old full-scale values must be re-entered (new value = 1000 ÷ old value).
  • New Full-scale voltage setting (V/full range, default 1; LabVIEW's Voltage Cal). Calibrated value = sample × full-scale voltage × 1000 ÷ sensitivity. Stored in template.json as full_scale_v.
  • New FRF estimator setting (H1, H2 or √(H1·H2)), saved in template.json as frf_estimator and recorded in the TRF header. It drives the live plot and the saved TRF/AvC/AvR together. Default H1; templates without the key load as H1. Changing it mid-run only recomputes the position being viewed, so finished positions keep the estimator they were saved with.
  • Saved TRF, AvC and AvR files are now H1 by default (as LabVIEW saves). They were H2, which equals H1 ÷ coherence and so read high wherever coherence was low (about +1.5 dB on average, more at high frequency). With matching settings and the same hits the result agrees with LabVIEW to within a few tenths of a dB. TRF/AvC files saved by earlier versions are H2; multiply the magnitude by the stored coherence to convert.
  • Hit WAVs are now raw: the soundcard samples exactly as captured (channel 1 = L, channel 2 = R, no swap, no calibration) as 32-bit float. Previously the calibration was applied and the result clipped to ±1 and saved as 16-bit, which clipped real data. Apply the calibration and swap setting from the run's template.json. Note the channel order differs from LabVIEW's raw WAVs (L = mic, R = hammer).
  • Bit depth is now a 16 / 24 dropdown, and the TRF header records the selected value (it was always written as 16).

v1.1.7

Stable 2026-07-26

Acquire

  • New standalone LiveView tool — the real-time hammer/mic monitor and live FRF estimate now also opens in its own tab (handy for a second monitor), reachable from Acquire's LiveView dialog or the main page. The original in-Acquire LiveView is unchanged.
  • Merged the separate Settings and Template dialogs into one Template & Settings modal: input device, template list, node stencil, and all run/plot settings together in one place. Its three columns can be dragged wider or narrower via the handles between them.
  • Clicking a template now applies it immediately (fields update right away) instead of requiring a separate preview-then-Apply step; an Undo button reverts an accidental click.
  • The dialog's primary exit button is now a single smart button: it reads Use Template normally, and switches to Update and Use Template the moment you edit any setting away from the applied template's values (falls back to Use Settings when no template is applied). This replaces the earlier separate "Use for this run only" / "Update Template" buttons.
  • Added Reset Default Templates to re-download the 3 built-in templates without touching custom ones.
  • Plot Settings now shows one combined X axis range and Y axis range row per plot instead of four separate min/max rows; Hit Detection fields now show their units directly in the label (e.g. "Time before hit (s)"); number fields no longer show spinner arrows; mouseover help was added throughout the dialog.
  • Selecting a device in the Template & Settings dialog now applies immediately instead of waiting for a commit button, so hitting Cancel afterward no longer discards an intentional device change. Clicking the Device: indicator in the status row also opens a quick device picker for the same purpose.
  • The hammer/mic time cutoff (the green line on the mini plots) can now be set as low as 0.001 s — it was previously floored at 0.01 s.
  • Fixed: changing a setting like the cutoff or threshold no longer redraws FRF traces for positions you already finished earlier in the run — only the position you're currently viewing is recomputed.
  • Session Notes now save to disk (notes.txt in the instrument's folder) instead of the browser only, and are shown in Explore. The Notes button moved next to the Template button. An empty notes file is now pre-filled with a fill-in-the-blanks template (date/time, location, experiment, researchers, instrument info, measurement info). Added a Delete Notes & Start Again button (with a confirmation prompt) and the ability to attach photos, which are saved to a photos folder inside the instrument's folder.
  • The built-in-microphone warning is now a plain OK alert instead of a yes/no confirm, and acquisition no longer starts after it's shown — previously choosing "Start anyway" would begin a run with an unsuitable mic.
  • The Instrument toolbar button now shows the instrument's own name; the Template button moved to the banner row.
  • Added a Build Stencil shortcut (opens Stencil Builder) in the Node Stencil section.
  • Fixed the default HV 24 Obie Rig template only measuring 12 positions (prefix "H") instead of the intended 24 (prefix "H,V", 12 H + 12 V) — it now matches the original LabVIEW template it was ported from.
  • Added an Agenda checklist above Run Settings in the right-hand info panel — a step-by-step reminder with checkboxes you tick off as you go. Resets automatically the next time you hit Start on a fresh run.
  • Agenda is now split into two labeled groups — Soundcard (powered, 48v (2 lights); selected in blue) and Software (data folder, name instrument, rename test, choose template, edit Notes, verify in LiveView, hit Run if needed, check hammer FFT, check coherence) — instead of one flat numbered list.
  • Fixed multi-prefix runs (e.g. prefix H,V): WAV/TRF filenames and the FRF plot legend were built from the raw prefix field text and a position count that never reset between groups, so the second group's files came out mislabeled (e.g. H,V13 instead of V01). Per-position files now use the correctly resolved label. Also fixed end-of-run averaging, which previously lumped every group into one AvR and never wrote an AvC at all — it now writes both an AvR and AvC per prefix group (e.g. H, V) plus one combined pair across all groups (e.g. HV) when there's more than one prefix.
  • Renamed the saved average files — <run> <group> AvR.avr / AvC.avc is now just <run> <group>.avr / .avc (e.g. test2_09 H.avr), since the extension already says which format it is.
  • Notes: added a 📸 Camera button next to Add Photos — opens a live webcam preview with a Snap button to capture and save a photo straight to the photos folder. Saved photos now show as thumbnails (click to open full-size) instead of a bare filename list.
  • Added a ✨ Ask Claude button above the Agenda checklist — opens a new Claude.ai chat in another tab with a question pre-filled (pointing Claude at ObieWebApp's documentation) so you just finish typing and send it.

Explore

  • Fixed the normalization dropdown not always resetting to "As measured" on reload — it was carrying over the Real/Complex average selection from the previous session.
  • New: hovering a dataset now shows that instrument's saved notes (written from Acquire) in a panel near the band table.
  • Fixed: the instrument notes panel stayed visible after clicking Clear All — it's now cleared along with the dataset list.
  • Added a 🖨 Print button (far right of the plot toolbar) — snapshots the current plot and opens it in a new page with an editable title and notes field, so you can label it before printing.
  • Added a ✨ Ask Claude button next to Print — opens a new Claude.ai chat with a question pre-filled, pointing Claude at ObieWebApp's documentation.

Site-wide

  • Fixed a 404 when navigating Explore → Acquire from the archived v1.1.6 snapshot (a leftover nested-version link from the promotion process).
  • Fixed archived version pages (e.g. picking "v1.1.6" from the Version dropdown) showing a frozen, out-of-date Beta section from whenever that snapshot was archived — confusing since it no longer matches the real current beta. Archived pages now show a banner explaining you're viewing a frozen stable release, and their Beta section is replaced with a single link back to the live site.