Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
120 commits
Select commit Hold shift + click to select a range
98bcdd6
Add start simulation button
Turnlings Dec 30, 2025
1d5983e
Fix port
Turnlings Dec 30, 2025
4f84a19
Add stop simulation button
Turnlings Dec 30, 2025
c53ddfa
Working error messages (only if using string literal)
Turnlings Dec 31, 2025
3294652
Move onSimulationResult to different set of events
Turnlings Dec 31, 2025
2bdbc24
Add feedback of running state from backend
Turnlings Dec 31, 2025
257e6e3
Give feedback on first time use
Turnlings Dec 31, 2025
7e4fe81
Docker stubs
Turnlings Dec 31, 2025
93380f2
Resolve minor feedback
Turnlings Dec 31, 2025
37083db
Resolve more feedback
Turnlings Jan 1, 2026
b1625cb
Update requirements for stubs
Turnlings Jan 1, 2026
1102d06
Exception handling for image pull
Turnlings Jan 1, 2026
94087a7
Add docker to mypi ignore
Turnlings Jan 1, 2026
671410d
Add simulation modal
Turnlings Jan 1, 2026
3ce42cf
Add dropdown to select vehicle type
Turnlings Jan 1, 2026
99f74d3
Add fields for the other ardupilot params
Turnlings Jan 1, 2026
2919b67
Copy
Turnlings Jan 2, 2026
5e2ed82
Pass params to simulator startup
Turnlings Jan 2, 2026
1cbf25d
npx
Turnlings Jan 2, 2026
d54ed6e
Remove ArduRover for now as is not valid
Turnlings Jan 2, 2026
e26f8a1
Cleanup of args parsing
Turnlings Jan 2, 2026
8a70694
Wait for YOU CAN CONNECT message
Turnlings Jan 2, 2026
c320748
Disable if not connected to socket
Turnlings Jan 2, 2026
2d36aba
Add connect after simulator start
Turnlings Jan 2, 2026
2da4927
linting
Turnlings Jan 2, 2026
bb9d008
Backend refactor and comments
Turnlings Jan 2, 2026
8562cc8
Add port option to also allow for tests
Turnlings Jan 2, 2026
05c69ec
Add cleanup to the first test
Turnlings Jan 2, 2026
d321343
Generate tests for the other functions
Turnlings Jan 2, 2026
4afd189
Resolve minor copilot feedback
Turnlings Jan 3, 2026
2cb1292
Lint
Turnlings Jan 3, 2026
e94774f
Pass connect arg through backend
Turnlings Jan 3, 2026
20910eb
Use port 5763 for tests
Turnlings Jan 3, 2026
05226dc
Potential fix for test
Turnlings Jan 3, 2026
780b51c
Background task for wait for container result
Turnlings Jan 3, 2026
944676b
Better error messages on stopping simulation
Turnlings Jan 3, 2026
a1543bb
CI friendly cleanup container
Turnlings Jan 3, 2026
9a2d92f
Merge branch 'main' into 939-add-option-to-start-simulator-via-docker
Turnlings Jan 3, 2026
2b9878e
Resolve minor copilot feedback
Turnlings Jan 4, 2026
3af9c9a
Merge branch '939-add-option-to-start-simulator-via-docker' of https:…
Turnlings Jan 4, 2026
18a5a78
Improve test coverage
Turnlings Jan 4, 2026
7a12241
Remove container reload because it breaks logs
Turnlings Jan 4, 2026
435c743
Potential test fix
Turnlings Jan 5, 2026
362116d
Catch exceptions from streaming container
Turnlings Jan 5, 2026
2fb81bb
Clamp input values
Turnlings Jan 5, 2026
0808fbb
Image downloading progress messages
Turnlings Jan 6, 2026
4b86a30
Message on closing modal
Turnlings Jan 6, 2026
200835a
Errors and exceptions
Turnlings Jan 6, 2026
b79c390
More tests
Turnlings Jan 6, 2026
9bd9c0f
Linting
Turnlings Jan 6, 2026
a5b2c0a
Remove unused import
Turnlings Jan 6, 2026
e32fe28
Update radio/app/endpoints/simulation.py
Turnlings Jan 7, 2026
cc035d8
Resolve final copilot comments
Turnlings Jan 7, 2026
c456267
Rename function in tests
Turnlings Jan 7, 2026
95ef9b0
Resolve minor feedback
Turnlings Jan 7, 2026
da04b07
Fix non-deterministic tests
Turnlings Jan 7, 2026
a4faa78
minor copilot feedback
Turnlings Jan 21, 2026
b5cee21
Merge branch 'main' into 939-add-option-to-start-simulator-via-docker
Turnlings Jan 21, 2026
df1ecda
Close old notification if new loading has begun
Turnlings Jan 21, 2026
569df21
Rewrite waiting for container
Turnlings Jan 21, 2026
4b35112
Merge branch '939-add-option-to-start-simulator-via-docker' of https:…
Turnlings Jan 21, 2026
5cff764
Resolve MORE minor copilot feedback
Turnlings Jan 21, 2026
4cb7568
Remove extra parameters
Turnlings Feb 6, 2026
7af0e1a
Cleanup missed references
Turnlings Feb 6, 2026
76443c8
Use correct port on auto-connect
Turnlings Feb 6, 2026
22c5ad8
Selection for both host and container ports
Turnlings Feb 6, 2026
f9ecf1b
Add more tests for failure routes
Turnlings Feb 6, 2026
0a50fd0
Merge branch 'main' into 939-add-option-to-start-simulator-via-docker
Turnlings Feb 6, 2026
d57d3d4
Fix tests
Turnlings Feb 6, 2026
1544fc5
Resolve copilot feedback
Turnlings Feb 6, 2026
1b4d101
Just a couple more copilot comments
Turnlings Feb 6, 2026
2db66e9
Minor copilot feedback
Turnlings Feb 6, 2026
5c20d85
Even more copilot feedback
Turnlings Feb 7, 2026
18072a9
Rewrite waiting function to use since and tail
Turnlings Feb 9, 2026
12e13c1
Frontend changes
Turnlings Feb 9, 2026
3293b6c
Get rid of all the tests
Turnlings Feb 11, 2026
4cb4e33
Catch bubble up exception
Turnlings Feb 11, 2026
4866e7e
Copy
Turnlings Feb 11, 2026
92edfe2
Option for multiple port mappings
Turnlings Feb 12, 2026
548692b
Refactor simulation params into their own slice
Turnlings Feb 13, 2026
addfe60
Merge branch 'main' into 939-add-option-to-start-simulator-via-docker
Turnlings Feb 13, 2026
e68fc06
Duplicate port validation
Turnlings Feb 13, 2026
7db250f
Refactor port validation into helper functions
Turnlings Feb 14, 2026
f66e84b
Merge branch '939-add-option-to-start-simulator-via-docker' of https:…
Turnlings Feb 14, 2026
3117a68
Fix None unpacking
Turnlings Feb 14, 2026
c467a12
Linting
Turnlings Feb 14, 2026
cddec7b
Use exceptions rather than returning None
Turnlings Feb 14, 2026
978b12a
Store simulation loading id states
Turnlings Feb 14, 2026
cee715f
Linting
Turnlings Feb 14, 2026
ae381d2
Minor changes
Turnlings Feb 14, 2026
fbb2d14
Resolve what are becoming more and more pointless comments
Turnlings Feb 14, 2026
707c33f
These edge cases are literally never gonna happen
Turnlings Feb 14, 2026
e67d9c0
Check for duplicate container ports aswell
Turnlings Feb 14, 2026
af8e295
Copy
Turnlings Feb 14, 2026
eda9ff0
Type annotations
Turnlings Feb 14, 2026
91b89c2
Fix typing
Turnlings Feb 15, 2026
c7fff48
Fix the final none hallucinated issues
Turnlings Feb 15, 2026
f59e968
Linting
Turnlings Feb 15, 2026
8372de2
Please
Turnlings Feb 15, 2026
f1900ec
Use uuids for ports
Turnlings Feb 15, 2026
d34877f
Use worker thread for log polling
Turnlings Feb 15, 2026
a9a8bcc
Remove unused reference to index
Turnlings Feb 15, 2026
6ad46f0
MAYBE these ones are relevant
Turnlings Feb 16, 2026
616d967
Merge branch 'main' into 939-add-option-to-start-simulator-via-docker
NexInfinite Feb 16, 2026
6627adc
Hide button on default with opt-in experimental developer setting
Turnlings Feb 16, 2026
e0fc459
Resolve the trivial parts of the feedback
Turnlings Feb 16, 2026
8d6665d
Use docker types
Turnlings Feb 16, 2026
f24d3ef
Add custom type for command parameters
Turnlings Feb 16, 2026
b73f422
Optional type, because it is
Turnlings Feb 16, 2026
9ce80e6
Rename cleanup_container to stop_container
Turnlings Feb 17, 2026
08acb65
Merge branch 'main' into 939-add-option-to-start-simulator-via-docker
Turnlings Feb 17, 2026
f0c1953
Use trash icon instead of X
Turnlings Feb 17, 2026
ecfc263
Add connection progress bar to simulation modal footer
Turnlings Feb 17, 2026
5cc3018
Merge branch '939-add-option-to-start-simulator-via-docker' of https:…
Turnlings Feb 17, 2026
ae7b7c6
Remove now unused Progress import
Turnlings Feb 17, 2026
3f537cf
Disconnect from drone when stopping simulation if connected to ANYTHING
Turnlings Feb 18, 2026
25d64ca
Disconnect from simulator on stop simulation
Turnlings Feb 22, 2026
c72335e
Block connecting to simulator if already connected to drone
Turnlings Feb 22, 2026
7631e0b
Merge branch 'main' into 939-add-option-to-start-simulator-via-docker
Turnlings Feb 22, 2026
ebc44be
Fix issue with merge
Turnlings Feb 22, 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
6 changes: 6 additions & 0 deletions gcs/data/default_settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,12 @@
"default": false,
"type": "boolean",
"display": "Speech Announcements"
},
"experimentalDeveloperFeatures": {
"default": false,
"type": "boolean",
"display": "Experimental Developer Features",
"description": "These may be unstable and can cause unexpected bugs or crashes."
Comment thread
Turnlings marked this conversation as resolved.
}
},
"Dashboard": {
Expand Down
22 changes: 22 additions & 0 deletions gcs/src/components/connectionProgress.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { Progress } from "@mantine/core"

export default function ConnectionProgress({ connecting, status }) {
return (
<>
{connecting &&
status.message !== null &&
typeof status.progress === "number" && (
<>
<p className="text-center my-4">{status.message}</p>
<Progress
animated
size="lg"
transitionDuration={300}
value={status.progress}
className="w-full mx-auto my-auto"
/>
</>
)}
</>
)
}
27 changes: 10 additions & 17 deletions gcs/src/components/navbar.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import {
Group,
LoadingOverlay,
Modal,
Progress,
SegmentedControl,
Select,
Tabs,
Expand Down Expand Up @@ -78,6 +77,10 @@ import { useEffect } from "react"
import { twMerge } from "tailwind-merge"
import { showErrorNotification } from "../helpers/notification.js"

// Modals
import SimulationModal from "./toolbar/simulationModal.jsx"
import ConnectionProgress from "./connectionProgress.jsx"

export default function Navbar() {
// Redux
const dispatch = useDispatch()
Expand Down Expand Up @@ -320,22 +323,10 @@ export default function Navbar() {
</Group>
</form>

{connecting &&
droneConnectionStatus.message !== null &&
typeof droneConnectionStatus.progress === "number" && (
<>
<p className="text-center my-4">
{droneConnectionStatus.message}
</p>
<Progress
animated
size="lg"
transitionDuration={300}
value={droneConnectionStatus.progress}
className="w-full mx-auto my-auto"
/>
</>
)}
<ConnectionProgress
connecting={connecting}
status={droneConnectionStatus}
/>
</Modal>

<Modal
Expand Down Expand Up @@ -402,6 +393,8 @@ export default function Navbar() {
)}
</Modal>

<SimulationModal />

<div className="w-full flex justify-between gap-x-4 xl:grid xl:grid-cols-2 xl:gap-0">
<div className="flex items-center wrap">
{/* Navigation */}
Expand Down
11 changes: 11 additions & 0 deletions gcs/src/components/toolbar/menus/advanced.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,14 @@
// Local Imports
import { useDispatch } from "react-redux"
import { setForwardingAddressModalOpened } from "../../../redux/slices/droneConnectionSlice"
import { setSimulationModalOpened } from "../../../redux/slices/simulationParamsSlice"
import MenuItem from "./menuItem"
import MenuTemplate from "./menuTemplate"
import { useSettings } from "../../../helpers/settings"

export default function AdvancedMenu(props) {
const dispatch = useDispatch()
const { getSetting } = useSettings()
return (
<MenuTemplate
title="Advanced"
Expand All @@ -28,6 +31,14 @@ export default function AdvancedMenu(props) {
dispatch(setForwardingAddressModalOpened(true))
}}
/>
{getSetting("General.experimentalDeveloperFeatures") && (
<MenuItem
name="SITL Simulator"
onClick={() => {
dispatch(setSimulationModalOpened(true))
}}
/>
)}
</MenuTemplate>
)
}
Loading