Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
210 commits
Select commit Hold shift + click to select a range
d54e00b
auth: bind-mount onshape allowlist for live server edits; fix stale r…
swissskimmilk Aug 13, 2026
1b43e20
auth: add tchang27 to onshape allowlist and DAQ operators
swissskimmilk Aug 13, 2026
7a2061c
daq-server: drop control password, gate operator control on allowlist…
swissskimmilk Aug 13, 2026
e5d1e4c
daq-server: make config/ the single source of truth for state machine…
swissskimmilk Aug 13, 2026
d5bea86
daq-server: choose Real/Simulated data at session start (starts the s…
swissskimmilk Aug 13, 2026
fb19c6c
onshape-viewer: Mach-dependent fin CP + RocketPy flight-dynamics tab
swissskimmilk Aug 13, 2026
5e807c3
recovery-calculator: add wind climatology and drift tab (RocketPy-sha…
swissskimmilk Aug 13, 2026
68828ab
deploy: pin apps stack to STAR_IMAGE_TAG (sha-<short>) image tag, def…
swissskimmilk Aug 14, 2026
271576d
pid-designer: add top control port to pressure regulator (dome/pilot …
swissskimmilk Aug 14, 2026
44d785c
daq-server GUI: tabbed nav + popup, config-driven top bar/tabs on [pr…
swissskimmilk Aug 14, 2026
290b93e
onshape-viewer: design versioning, live static margin, fin-edge/symme…
swissskimmilk Aug 14, 2026
3e40a38
recovery-calculator: frontend cleanups (Inputs/Outputs headers, New D…
swissskimmilk Aug 14, 2026
73b861b
deploy: add Wi-Fi hardening (powersave off + recovery watchdog) as st…
swissskimmilk Aug 14, 2026
d06d94a
onshape-viewer flight dynamics: fix AoA double-conversion, add compar…
swissskimmilk Aug 14, 2026
97484e5
rename onshape-viewer to STAR OpenRocket (directory, routes /api/docu…
swissskimmilk Aug 14, 2026
cdd9a43
merge recovery backend into STAR OpenRocket: physics lib + routers un…
swissskimmilk Aug 14, 2026
61cc8af
merge recovery frontend into STAR OpenRocket: Recovery tab with 7 sub…
swissskimmilk Aug 14, 2026
cf76937
recovery: apogee and descending mass can be pulled from the ascent de…
swissskimmilk Aug 14, 2026
196cb63
retire standalone recovery-calculator: remove its containers/image/CI…
swissskimmilk Aug 14, 2026
103278e
harden design restore against pre-merge/garbage blobs (default missin…
swissskimmilk Aug 14, 2026
fada22a
recovery results: keep previous result on screen during live recomput…
swissskimmilk Aug 14, 2026
365e489
recovery inputs: double-click selects the whole number (a decimal poi…
swissskimmilk Aug 14, 2026
937466d
hotfire firmware: two-tier serial logging (HF_LOG always / HF_VERBOSE…
swissskimmilk Aug 15, 2026
fef2c37
firmware+server: rename DAQv2-Comms wire library to daq-protocol (nam…
swissskimmilk Aug 15, 2026
4934295
firmware: stream board logs to server via LOGS packet (type 15), gate…
swissskimmilk Aug 15, 2026
0abc9af
auth: scope STAR OpenRocket's approved-list to the Onshape-key paths …
swissskimmilk Aug 16, 2026
9421336
recovery: add per-device F_num (numerical peak) to opening loads and …
swissskimmilk Aug 16, 2026
9fb213f
recovery: wind-aware coupled descent — promote wind onto Config, inte…
swissskimmilk Aug 16, 2026
f8011fd
recovery frontend: wind on shared config (Drift tab syncs it so loads…
swissskimmilk Aug 16, 2026
a8b8fc3
board diagnostic logs end-to-end: type-15 stream firmware→daq_bridge→…
swissskimmilk Aug 16, 2026
3c8aa10
Full Flight tab: end-to-end ascent+descent — glue altitude/velocity/a…
swissskimmilk Aug 16, 2026
119cf0f
ota_service: add loopback fake-board test for espota wire format (siz…
swissskimmilk Aug 16, 2026
a342d75
shared types: make types.js a built artifact (prebuild + CI drift gua…
swissskimmilk Aug 16, 2026
c8d975b
frontend: re-subscribe + re-query historical on elodin reconnect so d…
swissskimmilk Aug 16, 2026
64003aa
backend: reset board status to config baseline on run stop so boards …
swissskimmilk Aug 16, 2026
349838c
frontend: timestamp self-test results in the boards pane and self-tes…
swissskimmilk Aug 16, 2026
2f6e837
systemd: heartbeat + config-broadcast units honor ${DAQ_CONFIG} so th…
swissskimmilk Aug 16, 2026
9914d80
test: session flow asserts data resumes on the same WS after stop/sta…
swissskimmilk Aug 16, 2026
b65305e
backend: buffer the last 5 min of notifications and replay them on WS…
swissskimmilk Aug 16, 2026
f5429d4
config writer: strip @iarna's underscore digit-separators so saved TO…
swissskimmilk Aug 16, 2026
6b9a2fc
frontend: also re-init data streams on session.active flip (belt-and-…
swissskimmilk Aug 16, 2026
582bdd3
frontend: paint the shell scroll container bg-background so the body …
swissskimmilk Aug 16, 2026
6fbbea8
test: add CI check that fails on underscore digit-separators in confi…
swissskimmilk Aug 16, 2026
d016cdc
session: block start until the previous run's units are fully torn do…
swissskimmilk Aug 16, 2026
73b30ce
status badge: drive it from a backend-authoritative dataFresh signal …
swissskimmilk Aug 16, 2026
c42884b
ci: run the config-TOML underscore check in the Code Quality job
swissskimmilk Aug 16, 2026
97288f2
status: reset the data-freshness clock on Elodin disconnect so a new …
swissskimmilk Aug 16, 2026
9848b2c
operator mode: silently re-arm across WS reconnects (arming is identi…
swissskimmilk Aug 16, 2026
d74a0a6
sim: re-send SELF_TEST for ~6s after board activation so the one-shot…
swissskimmilk Aug 16, 2026
8b5036a
ota flash: point firmware discovery at monorepo firmware/Hotfire_Code…
swissskimmilk Aug 16, 2026
75c6b49
all views: derive the 'Pinned' tag from config.toml [gui].tabs (same …
swissskimmilk Aug 16, 2026
cea45c4
notifications panel: drop the misleading 'Board heartbeat' pulse, ret…
swissskimmilk Aug 16, 2026
cd78c48
backend: couple shared site atmosphere + wind across ascent, descent,…
swissskimmilk Aug 16, 2026
1551ea7
frontend: promote units to a top-level tab, add shared Environment ta…
swissskimmilk Aug 16, 2026
4ea9611
Config edits
swissskimmilk Aug 16, 2026
59415c6
Formatting
swissskimmilk Aug 16, 2026
518f071
boards self-test: restore 'ALL PASSED' card label (regressed to 'PASS…
swissskimmilk Aug 16, 2026
ee6a921
session_flow_test: poll for pipeline data instead of a fixed sleep(60…
swissskimmilk Aug 16, 2026
331b08a
daq-server: de-hardcode sensor mapping — config-driven HP board (drop…
swissskimmilk Aug 17, 2026
a627f5e
daq-server: pin tests + sim overlay to a frozen config_base.toml so e…
swissskimmilk Aug 17, 2026
f825f46
daq-server: config profiles v2 — editor edits the active profile, con…
swissskimmilk Aug 17, 2026
f6c6950
daq-server: config profiles v2 phase 2 — config.toml is a git-ignored…
swissskimmilk Aug 22, 2026
47f31a7
daq-server: config.toml self-heal (getConfigPath + build.sh) regenera…
swissskimmilk Aug 22, 2026
b042b8e
daq-server: add deploy/bootstrap_daq.sh one-shot + fix deploy pitfall…
swissskimmilk Aug 22, 2026
9cfe6fc
daq-server: redeploy/migration guide for the config-profiles model (o…
swissskimmilk Aug 22, 2026
e955897
daq-server: simulated runs generate config/sim_config.toml at session…
swissskimmilk Aug 22, 2026
6ac8658
daq-server: stop simulated data from reaching a live run — board_simu…
swissskimmilk Aug 22, 2026
e54e9a0
daq-server: fix config Sensor/Actuator Roles editor — key rows by ind…
swissskimmilk Aug 22, 2026
a2c2d22
daq-server: config roles editor — role-name field commits on blur (ho…
swissskimmilk Aug 22, 2026
f228a63
daq-server: config editor consistency — all numeric fields (renderFie…
swissskimmilk Aug 22, 2026
40d0fc6
daq-server: top-bar pressure gauges — one dropdown that lists only PT…
swissskimmilk Aug 22, 2026
767ba78
daq-server: clearer avg_roles placeholder in the pressure-gauge edito…
swissskimmilk Aug 22, 2026
cfacf0a
daq-server: pressure gauge label now auto-fills from the selected sen…
swissskimmilk Aug 22, 2026
9c6dc64
daq-server: label the top-bar pressure-gauge editor with a column hea…
swissskimmilk Aug 22, 2026
4bdadaa
merge main: star-openrocket moves onto the shared design core (lib/st…
swissskimmilk Sep 1, 2026
2f2c01a
star-openrocket: gate every design-editing viewer control on the chec…
swissskimmilk Sep 1, 2026
a2c3af6
config editor: 14 tabs down to 5 - group by what you actually edit (A…
swissskimmilk Sep 1, 2026
9512a13
star-openrocket: one palette, one type scale, one width rule - the CA…
swissskimmilk Sep 1, 2026
4aa4131
stardesign-ui: the checkout chip's dark: variants never fired - all t…
swissskimmilk Sep 1, 2026
5cc186c
star-openrocket: part opacity and the Onshape CM toggle move out of t…
swissskimmilk Sep 1, 2026
3b01746
star-openrocket: viewer buttons were invisible - a borderless bg-seco…
swissskimmilk Sep 2, 2026
70e87e6
checkouts: the token was released whenever the tab lost visibility - …
swissskimmilk Sep 2, 2026
6e3806a
star-openrocket: Full Flight headline tiles rendered bare numbers wit…
swissskimmilk Sep 2, 2026
700274a
stardesign-ui: Release read as a hint rather than a control - ghostBt…
swissskimmilk Sep 2, 2026
6f70126
star-openrocket: gate Recompute on the checkout - it writes outerFace…
swissskimmilk Sep 2, 2026
fde0551
settings: no unit preference has ever saved - volume and torque are i…
swissskimmilk Sep 2, 2026
1adb167
star-openrocket: chart series selection is a viewing preference, not …
swissskimmilk Sep 2, 2026
911e903
star-openrocket: part visibility is saved with the design - hidden pa…
swissskimmilk Sep 2, 2026
594a4fb
calibration: HP PT tuning was read from the wrong sections - excitati…
swissskimmilk Sep 2, 2026
a2fd0df
config editor: 14 tabs down to 5, boards collapse to a summary row, a…
swissskimmilk Sep 2, 2026
1b192d1
every valve read undefined whenever sequencer_service lost the startu…
swissskimmilk Sep 2, 2026
3454405
the configured fire duration has never been used: the keys live in [c…
swissskimmilk Sep 2, 2026
33a917c
delete registerSensorVTables: an uncalled attempt to give Elodin enti…
swissskimmilk Sep 2, 2026
0487c67
deprecate the data logger: three implementations, none of them ever r…
swissskimmilk Sep 2, 2026
22649a7
snapshot the run config beside the Elodin DB as <dbDir>.toml - Elodin…
swissskimmilk Sep 2, 2026
9f51dfa
star-openrocket: the design bar lost its list on load - the bootstrap…
swissskimmilk Sep 2, 2026
4b0abff
each config profile is now a directory that owns its state-machine CS…
swissskimmilk Sep 2, 2026
3a1dbbb
state-machine CSV read/write API for the config editor: GET/POST /api…
swissskimmilk Sep 2, 2026
fab24b1
State Machine config tab: edit the actuator table and the transition …
swissskimmilk Sep 2, 2026
784500a
delete startStateSnapshotPublisher: a 1 Hz republish of the current s…
swissskimmilk Sep 2, 2026
e1fc988
per-actuator delays now actually run: applyForState stages commands b…
swissskimmilk Sep 2, 2026
c6b38ea
fire semantics move into config: [fire] names the state and its expir…
swissskimmilk Sep 2, 2026
1cda972
note why the fire PWM handoff is not assertable in the integration te…
swissskimmilk Sep 3, 2026
c930e25
the state list moves into config as [[states]] - ids and names were d…
swissskimmilk Sep 3, 2026
e71f6c1
state names and diagram layout come from config: [[states]] now carri…
swissskimmilk Sep 3, 2026
2695ea1
strip the unused /api/states/layout endpoint: it existed only for a d…
swissskimmilk Sep 3, 2026
45c3f11
config editor: boards read as 'PT Board #2' rather than pt_board_2, d…
swissskimmilk Sep 3, 2026
cdc0745
drop Debug from the state list: it was a state in name only - no colu…
swissskimmilk Sep 3, 2026
6c732cd
Merge remote-tracking branch 'origin/main' into star-openrocket-merge
swissskimmilk Sep 3, 2026
fcedff5
the C++ services could not find the state CSVs on a fresh checkout: m…
swissskimmilk Sep 3, 2026
7a1ec69
clang-format the comment I added to ActuatorCommander after the last …
swissskimmilk Sep 3, 2026
8c30afa
track the two rig config profiles, back-populated with this branch's …
swissskimmilk Sep 3, 2026
e053c58
sensor boards latched ACTIVE while sampling nothing: FSWConfigManager…
swissskimmilk Sep 3, 2026
0fe8d82
no JSON PT calibration has ever loaded on Linux: find_latest_json_fil…
swissskimmilk Sep 3, 2026
7a8fe16
config_broadcast counted only successes into one global total, so "al…
swissskimmilk Sep 3, 2026
9b0c6f8
digital-twin's actuator CSVs were the 16-row big-rig tables, but the …
swissskimmilk Sep 3, 2026
8b6ecb7
PT boards declare their sensor interface with pt_type instead of it b…
swissskimmilk Sep 3, 2026
d55753c
vendor nlohmann/json v3.11.3 single-header for C++ JSON
swissskimmilk Sep 3, 2026
bc4f382
calibration: parse/write JSON via nlohmann instead of hand-rolled reg…
swissskimmilk Sep 3, 2026
5391e7b
calibration: operator-driven cubic PT calibration (service-side fit +…
swissskimmilk Sep 3, 2026
22e12dd
vendor tomlplusplus v3.4.0 single-header for C++ TOML
swissskimmilk Sep 3, 2026
b125cbd
config: add fsw::config toml++-backed parser + board-loader parity ha…
swissskimmilk Sep 3, 2026
9f98c48
config: heartbeat_service reads fsw::config (toml++); uniform default…
swissskimmilk Sep 3, 2026
2f9c59b
config: calibration_service reads [calibration.*] via fsw::config (to…
swissskimmilk Sep 3, 2026
93db4a4
config: controller_service reads fsw::config (toml++); boards/roles/c…
swissskimmilk Sep 3, 2026
2093b5a
config: config_broadcast_service reads fsw::config (toml++); per-cycl…
swissskimmilk Sep 4, 2026
8bed548
config: daq_bridge reads fsw::config (toml++) for database/network/he…
swissskimmilk Sep 4, 2026
51f2e8f
config: sequencer (SequencerService/ActuatorCommander/StateMachine) r…
swissskimmilk Sep 4, 2026
42af14f
config: fold load_active_boards into fsw::config wrappers; delete dea…
swissskimmilk Sep 4, 2026
a981b75
daq viewer: the STAR wordmark header the other apps use, replacing th…
swissskimmilk Sep 4, 2026
c458c37
daq viewer: read the run's config snapshot so a past run shows roles …
swissskimmilk Sep 4, 2026
cf7bffc
daq viewer: make drag-to-zoom visible (uPlot ships the selection band…
swissskimmilk Sep 4, 2026
6128bba
calibration_service: persist robust adjustments + cubic store on shut…
swissskimmilk Sep 4, 2026
a81b347
config: delete now-dead hand-rolled TOML helpers (getTomlValue/parseA…
swissskimmilk Sep 4, 2026
a4d7803
daq viewer: plot each row's own sample time instead of elodin-db's wr…
swissskimmilk Sep 4, 2026
506ea69
daq viewer: a shared one-line description per run, editable by anyone…
swissskimmilk Sep 4, 2026
8b3e09e
daq viewer: opening a run no longer exports it - show what the run di…
swissskimmilk Sep 4, 2026
27600a3
deploy: retire dormant Python calibration sidecar — delete never-star…
swissskimmilk Sep 4, 2026
046602f
daq viewer: one button and input vocabulary mirroring stardesign-ui's…
swissskimmilk Sep 4, 2026
5655d5c
docs: correct calibration architecture — C++ calibration_service is t…
swissskimmilk Sep 4, 2026
b6dc77f
backend: parse/write config.toml with smol-toml (TOML 1.0) — drops th…
swissskimmilk Sep 4, 2026
fc3a9b5
backend: drop unused @iarna/toml dependency (replaced by smol-toml)
swissskimmilk Sep 4, 2026
f6b08a4
calibration: per-sensor cubic/robust PT model in config.toml (calibra…
swissskimmilk Sep 4, 2026
c3f7fc6
calibration: unify PT capture into one command the service routes by …
swissskimmilk Sep 4, 2026
92d68ab
daq_bridge: route loopback-fallback sensor packets by config-IP host …
swissskimmilk Sep 4, 2026
ef71b27
calibration: file PT cal by role so it follows the sensor across a co…
swissskimmilk Sep 4, 2026
afceaa6
Merge remote-tracking branch 'origin/star-openrocket-merge' into star…
swissskimmilk Sep 4, 2026
fdec889
calibration: fix CalibrationCommand sensor_id truncation — the Elodin…
swissskimmilk Sep 4, 2026
f079bc1
test/integration: assert calibration correctness — cal_values (PT_Cal…
swissskimmilk Sep 4, 2026
fe6dfc2
shared: regenerate compiled type declarations for capture_point/new_c…
swissskimmilk Sep 4, 2026
3f9a426
calibration: physics conversion as a third per-sensor PT model (ratio…
swissskimmilk Sep 4, 2026
48c4f47
test: launch calibration_service from repo-root cwd (like daq_bridge/…
swissskimmilk Sep 4, 2026
2689a5b
config editor: group each board's fields under headers, add Roles-tab…
swissskimmilk Sep 4, 2026
4d437b4
calibration: merge cubic+robust into one PT page (model badge per sen…
swissskimmilk Sep 4, 2026
97b3bd4
calibration: redesign PT page as master/detail (sidebar sensor list +…
swissskimmilk Sep 5, 2026
c8ad566
calibration: seed live cubic store from a committed cubic_calibration…
swissskimmilk Sep 5, 2026
0d73edd
calibration+config: add whole-rig calibration profiles (Config→Calibr…
swissskimmilk Sep 5, 2026
c12aa09
config: unify state-CSV save into the top Save + unsaved-changes guar…
swissskimmilk Sep 5, 2026
c72a5be
config roles: edit in stable file order (rows no longer jump when you…
swissskimmilk Sep 5, 2026
d063024
config roles: allow a temporarily duplicate role name while editing (…
swissskimmilk Sep 5, 2026
3abd01b
back-populate both rig profiles onto the new PT schema: declare pt_ty…
swissskimmilk Sep 5, 2026
d1f6722
pick up what the running server wrote to the digital-twin profile: th…
swissskimmilk Sep 5, 2026
639f6e2
digital-twin state machine rebuilt in the GUI for this rig: 12 states…
swissskimmilk Sep 5, 2026
4611ad7
renumber the digital-twin states 1-12 and give every one a panel posi…
swissskimmilk Sep 5, 2026
e822676
the state diagram drew states the config had deleted, stacked on top …
swissskimmilk Sep 5, 2026
46ba0c8
pressing Vent could have commanded Fuel Press: the GUI sends a [[stat…
swissskimmilk Sep 5, 2026
5357491
one config-backed name -> id map for both state CSV parsers, replacin…
swissskimmilk Sep 5, 2026
20d4ef0
backend: stop answering "which state is this" from the compiled enum.…
swissskimmilk Sep 5, 2026
f4fce41
frontend: the abort buttons could not fire on this rig. Engine Abort,…
swissskimmilk Sep 5, 2026
9937c3d
the sequencer built its transition table against one state numbering …
swissskimmilk Sep 5, 2026
e1331cc
the GUI moved its own state display on click and nothing ever moved i…
swissskimmilk Sep 5, 2026
d3d79c9
digital-twin: Press Standby can return to Idle and Armed, and the act…
swissskimmilk Sep 6, 2026
b0509b7
state machine: config [[states]] is authoritative once loaded — fire/…
swissskimmilk Sep 6, 2026
88e20b7
config_broadcast: compute overpressure abort thresholds from the oper…
swissskimmilk Sep 6, 2026
d1536b6
dashboard: disable an abort/vent control the config declares no state…
swissskimmilk Sep 6, 2026
9c97b23
abort thresholds: the calibration service now computes each PT's abor…
swissskimmilk Sep 6, 2026
1e09346
gitignore: abort_thresholds.txt is a runtime artifact the calibration…
swissskimmilk Sep 6, 2026
37b125f
config state editor: renaming a state now renames its column across a…
swissskimmilk Sep 6, 2026
b827dfd
backend: reject a state_transition whose id the active config's [[sta…
swissskimmilk Sep 6, 2026
b59c835
config roles: renaming or removing a sensor role now updates its abor…
swissskimmilk Sep 6, 2026
ab3ce2d
Merge origin/main: keep recovery-calculator retired, carry its new do…
swissskimmilk Sep 7, 2026
3ec83b5
Merge origin/main: design persistence + checkout-gating audits; main'…
swissskimmilk Sep 7, 2026
4d4fc58
recovery gating audit: drop the ConfigVersions.tsx exemption — the de…
swissskimmilk Sep 7, 2026
612f9a5
star-openrocket: audit that every saved design field is read back fro…
swissskimmilk Sep 7, 2026
15ee649
star-openrocket CI: run the frontend suite (npm test) — 13 vitest fil…
swissskimmilk Sep 7, 2026
f8e73c3
star-openrocket gating audits: audit every component, not the directo…
swissskimmilk Sep 7, 2026
db462cb
daq-server: refresh the improvement backlog — the April copy predated…
swissskimmilk Sep 7, 2026
71590ee
sequencer: serialize commands on one worker thread and stop the abort…
swissskimmilk Sep 7, 2026
a373da0
daq-server tests: cover the sequencer races under TSan and stop the i…
swissskimmilk Sep 7, 2026
eb59151
daq-server improvements doc: fold in the sequencer concurrency work —…
swissskimmilk Sep 7, 2026
bfbf679
sequencer: delete RELOAD_CONFIG and stop re-reading config on Elodin …
swissskimmilk Sep 7, 2026
fe26a2c
backend: cache the deployed config, fail the session start when its d…
swissskimmilk Sep 7, 2026
b479ab5
config editor: say when a save is only a draft, count what is waiting…
swissskimmilk Sep 7, 2026
65bd71f
daq-server docs: rewrite the configuration guide around profile-draft…
swissskimmilk Sep 7, 2026
2160c07
pin every board-facing socket to the DAQ NIC — the ABORT entry was sc…
swissskimmilk Sep 8, 2026
ee8f7c1
daq-server: give load cell calibration cubic/physics parity with PT, …
swissskimmilk Sep 8, 2026
c12f3f0
heartbeat_service never subscribed to the table it reads, so engine_s…
swissskimmilk Sep 8, 2026
5fc8644
the controller invented the rig layout it drives, and the fire-state …
swissskimmilk Sep 8, 2026
aa0e233
config editor validation was visual only — it drew board slot clashes…
swissskimmilk Sep 8, 2026
a9eebbb
test_integration.sh never declared which NIC it uses, so it stopped s…
swissskimmilk Sep 9, 2026
c12dba5
broadcast() handed every message to ws.send() and never read ws.buffe…
swissskimmilk Sep 9, 2026
1974b94
delete the static-analysis CI job rather than repair it — cppcheck ra…
swissskimmilk Sep 9, 2026
4a9007e
turn the compiler and the sanitizers on, and point the sanitizers at …
swissskimmilk Sep 10, 2026
3adfe6d
stop format.sh OOM-killing the machine, and fix two CI jobs that coul…
swissskimmilk Sep 11, 2026
4a04f29
checkouts told you nothing until they were already gone — three separ…
swissskimmilk Sep 11, 2026
4f17c66
test the checkout work in detail, and extract the decisions worth tes…
swissskimmilk Sep 11, 2026
e1e1ae4
fix the three CI workflows my checkout change broke — two failures, b…
swissskimmilk Sep 11, 2026
d5e785f
the checkout countdown reset itself to full whenever the user came ba…
swissskimmilk Sep 11, 2026
fb8439f
give the shared design-bar UI a home for its own tests, because every…
swissskimmilk Sep 12, 2026
e949fd8
one interaction should buy one refresh, not fifteen minutes of them —…
swissskimmilk Sep 12, 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
  •  
  •  
  •  
18 changes: 12 additions & 6 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Applies to builds that use the repo root as their context -- now all three
# design-tool API images, which are built on lib/stardesign (the shared design
# core) alongside their own sources. Without this the context would include
# Applies to builds that use the repo root as their context -- now every
# design-tool API and frontend image, which are built on lib/stardesign and
# lib/stardesign-ui (the shared design core and its UI) alongside their own
# sources. Without this the context would include
# every sibling project and their node_modules, which is slow and bloats the
# layer cache.

Expand All @@ -22,9 +23,14 @@ lib
!lib/stardesign
!lib/stardesign-ui

# recovery-calculator and pid-designer now build from the repo root too, so
# their sources have to reach the context -- but only their own image copies
# them, and each Dockerfile copies just the subtrees it needs.
# star-openrocket and pid-designer now build from the repo root too, so their
# sources have to reach the context -- but only their own image copies them, and
# each Dockerfile copies just the subtrees it needs.

# star-openrocket's built-model cache: gitignored, and up to hundreds of MB on a
# machine that has run a build. The image mounts it as a volume instead.
star-openrocket/cache
**/.userdata

# Dependencies and build output
**/node_modules
Expand Down
19 changes: 15 additions & 4 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,17 @@ AUTH_PUBLIC_URL=https://auth.starberkeley.org
SCHEME=https
ACME_EMAIL=infra@starberkeley.org

# ── Image version ──────────────────────────────────────────────────────────
# Which tag of the ghcr.io/calstar/star-* images the stack runs. CI publishes
# two tags on every push to main: `latest` (moving) and `sha-<short>` (immutable,
# e.g. sha-abc1234).
# unset / latest → track the newest build on main (current default).
# sha-<short> → pin the whole stack to one build; roll back by editing this
# one line and re-running `docker compose … up -d`.
# Pin to a sha that CI actually published (check the repo's GHCR packages, or the
# short hash of a commit that ran the publish workflow). See deploy/apps/README.md.
STAR_IMAGE_TAG=latest

# Only needed with `--profile tunnel`. From the Cloudflare Zero Trust
# dashboard: Networks → Tunnels → your tunnel → install connector.
# CLOUDFLARE_TUNNEL_TOKEN=
Expand Down Expand Up @@ -76,7 +87,7 @@ ELODIN_DB_HOST_DIR=/home/aidan/.local/share/elodin
# AWS_ACCESS_KEY_ID=
# AWS_SECRET_ACCESS_KEY=

# ── Engine Design + Recovery Calculator config versioning (S3) ─────────────
# ── Engine Design + STAR OpenRocket config versioning (S3) ─────────────────
# Same model as the P&ID versioning above: per-user design history
# (microversions + releases) in a versioned S3 bucket, or the local userdata
# volume when the bucket var is empty. Reuses the AWS_* credentials above. Give
Expand All @@ -86,14 +97,14 @@ ELODIN_DB_HOST_DIR=/home/aidan/.local/share/elodin
# deploy/apps/README.md.
# ENGINE_S3_BUCKET=star-engine-design
# ENGINE_S3_PREFIX=engine
# RECOVERY_S3_BUCKET=star-recovery-calculator
# RECOVERY_S3_PREFIX=recovery
# OPENROCKET_S3_BUCKET=star-openrocket
# OPENROCKET_S3_PREFIX=openrocket

# ── Onshape CM Viewer API key pair ─────────────────────────────────────────
# Leave empty and the stack still comes up -- cache-first endpoints work; only
# live Onshape calls (Search / refresh / build) fail until these are set. Get a
# key pair at https://dev-portal.onshape.com. After filling these in:
# docker compose up -d --force-recreate onshape-viewer-api
# docker compose up -d --force-recreate star-openrocket-api
# ONSHAPE_ACCESS_KEY=
# ONSHAPE_SECRET_KEY=
# ONSHAPE_BASE_URL= # optional; only for a non-default Onshape instance
Expand Down
Loading
Loading