Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
75bcfc8
Add MQTT types
ContinuumLS Jun 25, 2026
9cb30f5
Start implementing dB
ContinuumLS Jun 27, 2026
96b13c9
Update Dockerfile
ContinuumLS Jul 2, 2026
3a55579
Consolidate TS files and add .env support
ContinuumLS Jul 2, 2026
64d6583
Add HTML for dB/dt setting
ContinuumLS Jul 2, 2026
a0f12d9
Add dB/dt view (no functionality yet)
ContinuumLS Jul 5, 2026
b48fce0
Add dB/dt to current reading
ContinuumLS Jul 6, 2026
67355aa
Add plus/minus to delta
ContinuumLS Jul 6, 2026
34a998d
[AI-assisted] Finish delta-B (#23) and dB/dt (#29)
ContinuumLS Jul 6, 2026
eb51747
Update AI usage log with git hash for 34a998d
ContinuumLS Jul 6, 2026
b05a16a
Add column styling
ContinuumLS Jul 6, 2026
b627b9e
Edit save and reset dB buttons to grid row
ContinuumLS Jul 7, 2026
ed1aefa
Add JSONL and CSV formatter functions
ContinuumLS Jul 7, 2026
f1e7caf
Add JSONL/CSV exporting (#13 #14)
ContinuumLS Jul 7, 2026
eb039f3
[AI-assisted] Make day-size .log import performant: O(N) filter + spr…
ContinuumLS Jul 7, 2026
f1bd287
Update AI usage log with git hash for eb039f3
ContinuumLS Jul 7, 2026
3b51ce1
Remove file upload warning
ContinuumLS Jul 7, 2026
e7a35e8
[AI-assisted] Add light/dark theme support (#16)
ContinuumLS Jul 9, 2026
8be51b2
Update AI usage log with git hash for e7a35e8
ContinuumLS Jul 9, 2026
377f42a
[AI-assisted] Disable autofollow when panning via the range slider
ContinuumLS Jul 9, 2026
0bc1d2d
Update AI usage log with git hash for 377f42a
ContinuumLS Jul 9, 2026
68b5bde
Begin implementing unit tests (#26)
ContinuumLS Jul 9, 2026
4067d4a
Clean up lint warnings (window globals, unused vars, empty catch)
ContinuumLS Jul 9, 2026
35c97c2
[AI-assisted] Add automated test suite + CI (#26)
ContinuumLS Jul 9, 2026
23ed026
Update AI usage log with git hash for 35c97c2
ContinuumLS Jul 9, 2026
c685b1d
Change Z plot color to be more readable
ContinuumLS Jul 9, 2026
8531f7e
[AI-assisted] Apply source rotation to the Trends sparklines
ContinuumLS Jul 10, 2026
2aa8420
Update AI usage log with git hash for 8531f7e
ContinuumLS Jul 10, 2026
5b35531
[AI-assisted] Trends sparklines: min/max band, 2x2 layout, magnitude row
ContinuumLS Jul 10, 2026
13ffb44
Update AI usage log with git hash for 5b35531
ContinuumLS Jul 10, 2026
8a8f7a7
Add favicon assets
ContinuumLS Jul 10, 2026
60df33b
[AI-assisted] Restore unified cross-subplot hover on the main plot
ContinuumLS Jul 10, 2026
3bb92c1
Update AI usage log with git hash for 60df33b
ContinuumLS Jul 10, 2026
1ced5ba
Tweak sparkline gaps
ContinuumLS Jul 10, 2026
b215225
[AI-assisted] Tablet/iPad responsive layout (#27)
ContinuumLS Jul 10, 2026
9b8bcb9
Update AI usage log with git hash for b215225
ContinuumLS Jul 10, 2026
32d2b77
Refactor
ContinuumLS Jul 13, 2026
781e8d3
Remove table hover effect
ContinuumLS Jul 13, 2026
dc28238
Update documentation
ContinuumLS Jul 13, 2026
ac5277e
[AI-assisted] Tablet responsive fixes and per-subplot plot borders (#27)
ContinuumLS Jul 14, 2026
d8e6d4d
Update AI usage log with git hash for ac5277e
ContinuumLS Jul 14, 2026
b9bc7f6
Fix grid spacing and hide workmark in portrait
ContinuumLS Jul 14, 2026
f6a4893
Add deno task start
ContinuumLS Jul 16, 2026
585ad3e
Update documentation
ContinuumLS Jul 16, 2026
e653760
[AI-assisted] Constrict plots with config drawer; tablet data-column fit
ContinuumLS Jul 16, 2026
9c15119
Update AI usage log with git hash for e653760
ContinuumLS Jul 16, 2026
5a572a1
Minor styling changes
ContinuumLS Jul 16, 2026
e9a19ff
Change filter enabled to a toggle switch
ContinuumLS Jul 16, 2026
785125c
Add active CSS transitions
ContinuumLS Jul 16, 2026
c9fbd69
Remove autoscale control
ContinuumLS Jul 17, 2026
352e86b
[AI-assisted] Add deploy/ tooling: systemd units, installer, MQTT bri…
ContinuumLS Jul 17, 2026
dd95d20
Update AI usage log with git hash for 352e86b
ContinuumLS Jul 17, 2026
deb1dfb
Revert deploy/ tooling; out of scope for this repo (host/infra concern)
ContinuumLS Jul 17, 2026
946b121
[AI-assisted] Add deploy/ tooling (dashboard service + git auto-update)
ContinuumLS Jul 17, 2026
6b45655
Update AI usage log with git hash for 946b121
ContinuumLS Jul 17, 2026
e22a7cc
[AI-assisted] Make deploy/*.sh executable (0644 -> 0755)
ContinuumLS Jul 17, 2026
fbad236
Update AI usage log with git hash for e22a7cc
ContinuumLS Jul 17, 2026
d66a813
Add deploy documentation
ContinuumLS Jul 20, 2026
c013402
[AI-assisted] Make the spreadsheet sortable by column (#12)
ContinuumLS Jul 20, 2026
5509353
Update AI usage log with git hash for c013402
ContinuumLS Jul 20, 2026
d6a48db
Add temperature sparkline
ContinuumLS Jul 20, 2026
ff05b08
Add mqtt and mqtts protocol validation
ContinuumLS Jul 27, 2026
8b2a0b2
Add mqtt/mqtts validation
ContinuumLS Jul 27, 2026
f9c96f6
Fix light mode select group style
ContinuumLS Jul 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: CI

# Run the automated test suite (issue #26) on every push and pull request so a
# broken calculation can't merge unnoticed.
on:
push:
branches: ["**"]
pull_request:

# Cancel an in-progress run when a newer commit is pushed to the same ref.
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true

jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Check out the repository
uses: actions/checkout@v4

- name: Set up Deno
uses: denoland/setup-deno@v2
with:
deno-version: v2.x

- name: Lint
run: deno lint js/ ts/

- name: Run tests
run: deno task test
3 changes: 1 addition & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ RUN apt-get update -q && \

WORKDIR /local

# Prefer not to be on latest commit to ensure consistency. (This may change)
RUN git clone --depth 1 --branch v0.0.6-beta https://github.com/wittend/mag-usb
RUN git clone https://github.com/wittend/mag-usb

RUN cd mag-usb && \
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DENABLE_WEBSOCKET=ON && \
Expand Down
43 changes: 31 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,34 +26,45 @@ This repository is designed to be used alongside the HamSCI ground magnetometer.
Instructions for setting up the magnetometer are available
[here](https://hamsci.org/mag_install).

An additional computer running Linux or macOS is required to host the
magnetometer.
A computer running Linux or macOS is required to host the magnetometer. The
dashboard can be hosted on the same computer as the magnetometer or a separate
client.
* If using Linux, Ubuntu is recommended, but other distributions should also
work.
* If using macOS, Docker Desktop is required to run mag-usb.
* Raspberry Pis and Windows are unsupported.
* Windows is unsupported.

### Software

[Mag-usb](https://github.com/wittend/mag-usb) must be installed on the host
machine with WebSocket mode enabled.

[Deno](https://deno.com) is used to serve the dashboard. Installing Deno is
preferred for Linux clients.

[Docker Desktop](https://www.docker.com/products/docker-desktop/) is preferred
for running the project. The dashboard is served via a Deno container.
for Windows or macOS clients. The project is run through a Deno container.

## Usage

In the vendor folder, unzip the archive containing fontawesome.
In the project's vendor folder, unzip the archive containing Font Awesome.

In a CLI, navigate to the project's root directory. Start the dashboard with
Deno:

```bash
deno task dev
```

In a CLI, navigate to the project's root directory. Use `docker compose` to
create a container:
Or use `docker compose` to create a container:

```bash
docker compose up -d frontend
```

By default, the dashboard will be available at `localhost:8000`. However, the
hostname and port can be changed as needed.
hostname and port can be changed as needed through a .env file. A .env.example
file is included to demonstrate how to configure the environment.

The dashboard must be given a host to connect to before any data is displayed.
The host is the IP address of the computer running mag-usb. A simple `ifconfig`
Expand All @@ -64,9 +75,17 @@ If your dashboard does not show a "Connected" status within a few seconds or
switches to a "Failed" status, check that you entered the host correctly, then
check mag-usb to make sure it is configured correctly.

The dashboard is currently limited to one host at a time. This can be mitigated
by opening a duplicate dashboard in another tab.

The dashboard will autoscroll with the most recently collected data. You can
zoom in/pan on specific regions of the plots to disable the autoscroll behavior.
The behavior can be re-enabled by double clicking on the plots.
The behavior can be re-enabled by double clicking on the plots.

## Features

* Real-Time data streaming via WebSocket protocol or MQTT
* .log file uploading for historical data viewing
* Tabbed interface for tracking multiple sources
* Baseline post-processing and rate of change
* Rotation post-processing
* Moving average to smooth noisy data
* Export live data in JSONL or CSV format (up to 1 hour continuous)
* Light/dark theme support
112 changes: 112 additions & 0 deletions ai/ai_usage_log.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ services:
restart: unless-stopped
volumes:
- .:/app
command: ["deno", "task", "dev"]
command: ["deno", "task", "start"]
backend:
container_name: mag-usb
build: .
Expand Down
Loading
Loading