Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
f8e7f17
Apply TrickFire brand colors and fonts (Barlow Condensed / Overpass)
matejstastny Apr 27, 2026
bb02898
Retheme navbar with brand green accents and show rover host in status…
matejstastny Apr 27, 2026
feecec8
Improve rover connection UI: better labels, auto-discover, persistent…
matejstastny Apr 27, 2026
a3376df
Replace Home placeholder panels with labeled sections; embed rover co…
matejstastny Apr 27, 2026
47da7b3
Add content to Help, Science, and Telemetry pages; remove FIXME label
matejstastny Apr 27, 2026
1dbdd09
Fix navbar layout, tab design, status indicators, and home grid spacing
matejstastny Apr 27, 2026
fb5f303
Redesign nav tabs as rounded pill chips with solid green active state
matejstastny Apr 27, 2026
8f42ca1
Fixed navbar
matejstastny Apr 27, 2026
7acacdd
Redid formatting workflow, added vscode format on save to ensure cons…
matejstastny Apr 27, 2026
05c8389
Fixed depracated and removed things from typescript configs
matejstastny Apr 27, 2026
45b3a74
Added excludes to cleanup vscode search and tree
matejstastny Apr 27, 2026
28d74b2
Updated packages to reduce security vulnelabirities
matejstastny Apr 27, 2026
26afd36
Add persistent tank-drive block-horizontal setting
matejstastny Apr 27, 2026
8f6ace1
Add controller settings components
matejstastny Apr 27, 2026
5eafa30
Restructure Settings page layout
matejstastny Apr 27, 2026
3ee584e
Add dedicated Controller page between Telemetry and Settings
matejstastny Apr 27, 2026
6991cc0
Fix controller viz overflowing card width
matejstastny Apr 27, 2026
712de50
Fixed styling issues
matejstastny Apr 27, 2026
a9a851e
Replace auto-discovery with a retry connection button
matejstastny Apr 28, 2026
ae07e9d
Cleaned up my changes, removed unused or not working content
matejstastny Apr 28, 2026
6c258d8
Finally fixed controller live preview
matejstastny Apr 28, 2026
6943664
Replace Science and Help pages with not-implemented placeholders
matejstastny Apr 28, 2026
60deafc
Fix settings websocket box width
matejstastny Apr 28, 2026
1267729
Fixed nav dividers
matejstastny Apr 28, 2026
e25a791
Fixed vite table tr warning by adding a tbody in RoverVelocityDisplay
matejstastny Apr 28, 2026
f812edb
Formatting
matejstastny Apr 28, 2026
5744e72
Fixed velocity values messing the page up by capping them and fixing …
matejstastny Apr 28, 2026
a95f58c
Added controller invert axis support to handle different controller b…
matejstastny Apr 28, 2026
31c940c
Fixed flashing reconnect button
matejstastny Apr 28, 2026
87192fb
Added title to rover velocity display
matejstastny Apr 28, 2026
8ab5944
Improved connection chips navbar design
matejstastny Apr 28, 2026
ee6cddc
Fixed controller settings toggles
matejstastny Apr 28, 2026
0a4f4b4
Fixed ordering of title in velocity display
matejstastny Apr 28, 2026
8240d1f
Fixed max voltage constant
matejstastny Apr 28, 2026
5510863
Redesigned the telemetry page, migrated from moteus to rmdx8 moved mo…
matejstastny Apr 28, 2026
19e46e9
Fixed robot moving even after controller zero by checking if controll…
matejstastny Apr 29, 2026
fb406fb
Improved telemetry page NOT FINAL
matejstastny Apr 30, 2026
4b093fd
style: switched tab from 2 to 4
matejstastny Jul 26, 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
50 changes: 25 additions & 25 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,32 +1,32 @@
name: Build

on:
push:
branches:
- master
pull_request:
branches:
- master
push:
branches:
- master
pull_request:
branches:
- master

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
run: npm ci
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
run: npm ci

- name: Build
env:
NODE_OPTIONS: '--max_old_space_size=4096'
run: npm run build
- name: Build
env:
NODE_OPTIONS: '--max_old_space_size=4096'
run: npm run build

- uses: actions/upload-artifact@v4
with:
name: mission-control
path: ./dist
retention-days: 1
- uses: actions/upload-artifact@v4
with:
name: mission-control
path: ./dist
retention-days: 1
74 changes: 37 additions & 37 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -1,44 +1,44 @@
name: Deploy

on:
push:
branches:
- master
push:
branches:
- master

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
run: npm ci
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
run: npm ci

- name: Build
env:
NODE_OPTIONS: '--max_old_space_size=4096'
GH_PAGES: 'true'
run: npm run build
- name: Build
env:
NODE_OPTIONS: '--max_old_space_size=4096'
GH_PAGES: 'true'
run: npm run build

- name: Upload static files as artifact
id: deployment
uses: actions/upload-pages-artifact@v3
with:
path: dist/
deploy:
permissions:
contents: read
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
- name: Upload static files as artifact
id: deployment
uses: actions/upload-pages-artifact@v3
with:
path: dist/
deploy:
permissions:
contents: read
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
36 changes: 18 additions & 18 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
name: Lint

on:
push:
branches:
- master
pull_request:
branches:
- master
push:
branches:
- master
pull_request:
branches:
- master

jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
run: npm ci
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
run: npm ci

- name: Lint
run: npm run lint-check -- --max-warnings 0
- name: Lint
run: npm run lint-check -- --max-warnings 0
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

# Web
node_modules
.DS_Store
dist
Expand All @@ -20,10 +21,11 @@ coverage
# Editor directories and files
.vscode/*
!.vscode/extensions.json
!.vscode/settings.json
.idea
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
.lens/*
.lens/*
14 changes: 14 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
node_modules
dist
dist-ssr
coverage
.vite

/cypress/videos/
/cypress/screenshots/

.DS_Store
.idea
.vscode

public/site.webmanifest
12 changes: 6 additions & 6 deletions .prettierrc.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"$schema": "https://json.schemastore.org/prettierrc",
"semi": true,
"tabWidth": 2,
"singleQuote": true,
"printWidth": 100,
"trailingComma": "all"
"$schema": "https://json.schemastore.org/prettierrc",
"semi": true,
"tabWidth": 4,
"singleQuote": true,
"printWidth": 100,
"trailingComma": "all"
}
30 changes: 30 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
// SETTINGS
"files.exclude": {
"dist/": true,
"node_modules/": true,
},

// FORMATTING
"[vue]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[json]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[jsonc]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[scss]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"js/ts.experimental.useTsgo": false
}
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ For a code-level overview, check out the [Code Overview](./docs/code_overview.md
To develop code for the mission control, please follow the setup below:

1. Install Node.js version 22.11.0 (LTS) (Long-term support Updated 11/6/2024)
- **Windows and macOS**:
1. If different node version is already installed, delete it from your system or if using version manager, switch to it.
- **Windows**: https://stackoverflow.com/questions/20711240/how-to-completely-remove-node-js-from-windows (Tested 11/6/2024)
2. [Download version 22.11.0 (LTS)](https://nodejs.org/en/download/prebuilt-installer) and run the installer
- **Linux**: [Follow Instructions to install 22.11.0 (LTS)](https://nodejs.org/en/download/package-manager) (Not tested)
- **Windows and macOS**:
1. If different node version is already installed, delete it from your system or if using version manager, switch to it.
- **Windows**: https://stackoverflow.com/questions/20711240/how-to-completely-remove-node-js-from-windows (Tested 11/6/2024)
2. [Download version 22.11.0 (LTS)](https://nodejs.org/en/download/prebuilt-installer) and run the installer
- **Linux**: [Follow Instructions to install 22.11.0 (LTS)](https://nodejs.org/en/download/package-manager) (Not tested)
2. Run `git clone https://github.com/TrickfireRobotics/mission-control.git` in terminal **(not in the URC Docker Container)**
3. Run `cd mission-control` to open the repository
4. Run `npm install` to install dependencies
Expand All @@ -28,7 +28,7 @@ To develop code for the mission control, please follow the setup below:

1. Run `npm run dev`
2. While running open another VSCode window to the URC repo in the docker environment
- Run `./build.sh` and `./launch.sh` commands in the container terminal
- Run `./build.sh` and `./launch.sh` commands in the container terminal
3. On the mission control, navigate to the setting tab and change the websocket to where the urc is ran

TABLE 1: Connection
Expand Down
12 changes: 6 additions & 6 deletions docs/code_overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
Picture below shows how Camera and Controller interact with the codebase
![mission control overview](./resources/mission_control_overview.png)

- **store**: Put all global states here. Every store should have one purpose. Put subscribers and publishers here, so that there is one place to find the topic names.
- **components**: Single file component vue files that contain localized state (aka other components will not use it). Do not directly use createSubscriber and createPublisher here. Instead put them into the store.
- **lib**: [Vue Composables](https://vuejs.org/guide/reusability/composables) and any large amount of .ts files goes here.
- **pages** Each tab in the navbar has its pages. Generally, there should be no state stored here as the components and store should have them.
- **App.vue**: Pubs and Subs that are always running and not part of a component such as the controller should be ran here.
- **types.ts** Put all global types here.
- **store**: Put all global states here. Every store should have one purpose. Put subscribers and publishers here, so that there is one place to find the topic names.
- **components**: Single file component vue files that contain localized state (aka other components will not use it). Do not directly use createSubscriber and createPublisher here. Instead put them into the store.
- **lib**: [Vue Composables](https://vuejs.org/guide/reusability/composables) and any large amount of .ts files goes here.
- **pages** Each tab in the navbar has its pages. Generally, there should be no state stored here as the components and store should have them.
- **App.vue**: Pubs and Subs that are always running and not part of a component such as the controller should be ran here.
- **types.ts** Put all global types here.

## Design choices

Expand Down
42 changes: 21 additions & 21 deletions docs/getting_started.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,33 +16,33 @@ The mission-control repo is completely separate from the urc-2023 as it is webpa

## Recommended IDE Setup

- [VSCode](https://code.visualstudio.com/)
- [VSCode](https://code.visualstudio.com/)

- [Vue DevTools Chrome Extension](https://devtools.vuejs.org/getting-started/installation): Can Inspect Components State and integrated with Pinia, allowing to see store's state.
- [Vue DevTools Chrome Extension](https://devtools.vuejs.org/getting-started/installation): Can Inspect Components State and integrated with Pinia, allowing to see store's state.

## Libraries/Tools/Technologies that We Utilize

In this particular codebase, we use the following libraries/tools/technologies. Please familiarize yourself with the concepts below:

- Vue [Official Tutorial](https://vuejs.org/tutorial/#step-1) (We specifically use Vue 3 Composition API Single File Component)
- Prop drilling
- Reactiveness (when to use refs vs not)
- Lifecycle Hooks
- Read about Keep Alive onActivate() and onDeactivated() hooks vs onMounted() and onUnmounted() hooks
- [Typescript](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes-oop.html)
- Difference between Primitives and object types and their respective naming convention
- [Pinia](https://pinia.vuejs.org/) (Global state management store)
- How to create a store
- How to use a store
- ROS2 (Robot Operating System)
- high level understanding of:
- Subscribers and Publisher paradigm
- Topics, messageTypes
- Please refer to the [urc-2023 documentation](https://github.com/TrickfireRobotics/urc-2023) for more information about Ros
- HTML/SCSS
- [Roslibjs Source Code](https://github.com/RobotWebTools/roslibjs)
- Node Package Manager (NPM)
- Difference between dependency and Dev-dependency and when installing packages, which one to install too.
- Vue [Official Tutorial](https://vuejs.org/tutorial/#step-1) (We specifically use Vue 3 Composition API Single File Component)
- Prop drilling
- Reactiveness (when to use refs vs not)
- Lifecycle Hooks
- Read about Keep Alive onActivate() and onDeactivated() hooks vs onMounted() and onUnmounted() hooks
- [Typescript](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes-oop.html)
- Difference between Primitives and object types and their respective naming convention
- [Pinia](https://pinia.vuejs.org/) (Global state management store)
- How to create a store
- How to use a store
- ROS2 (Robot Operating System)
- high level understanding of:
- Subscribers and Publisher paradigm
- Topics, messageTypes
- Please refer to the [urc-2023 documentation](https://github.com/TrickfireRobotics/urc-2023) for more information about Ros
- HTML/SCSS
- [Roslibjs Source Code](https://github.com/RobotWebTools/roslibjs)
- Node Package Manager (NPM)
- Difference between dependency and Dev-dependency and when installing packages, which one to install too.

## So... what should I do now?

Expand Down
Loading