* init
* more
* change
* exist
* better title
* adjust
* more
* seems better
* slightly more
* slightly more
* center it
* final
* move
* no bc ew
* more less
* commaai/openpilot:d05cb31e2e916fba41ba8167030945f427fd811b
* bump opendbc
* bump opendbc
* bump opendbc
* bump opendbc
* bump opendbc
* sunnypilot: remove Qt
* cabana: revert to stock Qt
* commaai/openpilot:5198b1b079c37742c1050f02ce0aa6dd42b038b9
* commaai/openpilot:954b567b9ba0f3d1ae57d6aa7797fa86dd92ec6e
* commaai/openpilot:7534b2a160faa683412c04c1254440e338931c5e
* sum more
* bump opendbc
* not yet
* should've been symlink'ed
* raylib says wut
* quiet mode back
* more fixes
* no more
* too extra red diff on the side
* need to bring this back
* too extra
* let's update docs here
* Revert "let's update docs here"
This reverts commit 51fe03cd51.
* param to control stock vs sp ui
* init styles
* SP Toggles
* Lint
* optimizations
* multi-button
* Lint
* param to control stock vs sp ui
* init styles
* SP Toggles
* Lint
* optimizations
* Panels. With Icons. And Scroller.
* patience, grasshopper
* more patience, grasshopper
* sp raylib preview
* fix callback
* fix ui preview
* add ui previews
* introducing ui_state_sp for py
* param to control stock vs sp ui
* better
* add ui_update callback
* better padding
* init
* revert padding to 20
* new line, who dis
* this
* support for next line multi-button
* use inline=false
* uhh
* disabled colors
* hide em all
* lambdas
* NOT inline
* final touches
* hide HIDE
* ruff.. RUFF.. WHY RUFF
* listitem -> listitemsp
* Revert "add ui_update callback"
This reverts commit 4da32cc009.
* add show_description method
* remove padding from line separator.
like, WHY? 😩😩
* scroller -> scroller_tici
* scroller -> scroller_tici
* remove line separator padding
* ui: `GuiApplicationExt`
* add to readme
* use gui_app.sunnypilot_ui()
* use gui_app.sunnypilot_ui()
* use gui_app.sunnypilot_ui()
* uhhh. nope
* optimizations
* I THINK this is not needed, i don't see it used on the visuals panel...
* unhide for now... Why hidden tho?
* refresh controls
* missing
* blindspot
* standstill timer
* road name toggle
* more descriptions
* more descriptions
* update desc
* param turn signals
* sort
* fix
* always show desc if not available
* should be bool
* rocket fuel
* steering arc
* lint
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
Co-authored-by: DevTekVE <devtekve@gmail.com>
* init
* lint
* add toggle
* Update params_keys.h
* Update params_metadata.json
* Update params_keys.h
* bool
* decouple
* no
* make it perfect
* fade it
* only with torque bar
* dynamic
* in another PR
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* always check, no flickering from has inter -> waiting -> has inter from the reset
* 1s interval. i see read timeouts at 0.5s sometimes
* clean up
* cursor
* Revert "cursor"
This reverts commit 13ec6312aa7f71b58771f8789456e97c4481856a.
* clean up
* fix non-determinism in selfservice model build
also trim down model compile dependencies to the minimum required
* Apply suggestions from code review
---------
Co-authored-by: Shane Smiskol <shane@smiskol.com>
* sla ui
remove dub
debug ahead
postition
maybe
posttion
think
* sunny will be mad
Reapply "test"
This reverts commit 7a35fd3053425b06c1e4cebf68b6c9676eb6e279.
Revert "test"
This reverts commit 1a79155d3cfc8e6e09a6fc38d13747883745ef6a.
test
* road name
* Revert "road name"
This reverts commit 02e69b008603c357f14b4793e8fc893e00b3d3a0.
* decouple
* dial it in
* match cur
* no magic numbers
* cleanup
* more cleanup
* match
* always draw ahead
* Revert "always draw ahead"
This reverts commit f695e00078.
* new
* type
* Revert "type"
This reverts commit 2dafa02407.
* default
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* mici turn signal for c3x
* sp dir
* decouple
* more
* ty
* refactor and slim down
* bigger
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* Give this a try
* can codex debug?
* simpler
* Revert "simpler"
This reverts commit 572335008c1c719aa985d14bd740253ff94b94a9.
* better
* cleanup
* try again
* tie
* try this
* try this
* do tests fail without this?
* doesn't seem needed
* unused
* don't need duplicate
* passes CI?
* try this
* try this
* try this
* I don't understand this, so back to before
* keep that alignment
* set uv_height
---------
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* param to control stock vs sp ui
* init styles
* SP Toggles
* Lint
* optimizations
* Panels. With Icons. And Scroller.
* patience, grasshopper
* more patience, grasshopper
* sp raylib preview
* fix callback
* fix ui preview
* add ui previews
* Option Control
* Need this
* introducing ui_state_sp for py
* param to control stock vs sp ui
* better
* add ui_update callback
* better padding
* this
* listitem -> listitemsp
* Revert "add ui_update callback"
This reverts commit 4da32cc009.
* add show_description method
* remove padding from line separator.
like, WHY? 😩😩
* simplify
* I. SAID. SIMPLIFY.
* AAARGGGGGG.....
* init
* option control value fix
* add all controls
* hide all controls
* lint
* scroller -> scroller_tici
* scroller -> scroller_tici
* ui: `GuiApplicationExt`
* add to readme
* use gui_app.sunnypilot_ui()
* use gui_app.sunnypilot_ui()
* use gui_app.sunnypilot_ui()
* optimizations
* Removed hide for now
* refresh controls
* ugh
* global brightness
* initialize
* inline everything again
* change name
* Onroad Brightness reimpl
* Custom Interactive Timeout reimpl
* Global Brightness Override reimpl
* keep stock
* ui: Custom Interactive Timeout
* rename
* ui: Customizable Onroad Brightness
* lint
* lint
* Revert "Global Brightness Override reimpl"
This reverts commit 53522da4f8.
* Revert "Custom Interactive Timeout reimpl"
This reverts commit 459863a9bb.
* Revert "Onroad Brightness reimpl"
This reverts commit 4092d23e57.
* fixes
* lint
* reset on show/hide
* reset on show/hide for mici
* only set if true
* wrong var
* try this out
* use clear
* starts cleanup
* wake for all visual alerts and handle timeouts
* fixup: wake for all visual alerts and handle timeouts
* handle always wake if there's an event properly
* some
* slightly more
* need this back
* Reapply "ui: Global Brightness Override (#1579)"
This reverts commit a0c10be1ff.
* do not touch light sensor logic
* override properly and clip to 30% minimum
* wrap
* lint
* update immediately
* read
* max global brightness
* rename
* gotta do it for mici too lol
* update metadata
* desc
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
Co-authored-by: DevTekVE <devtekve@gmail.com>
* ui: Customizable Onroad Brightness
* fixes
* lint
* reset on show/hide
* reset on show/hide for mici
* only set if true
* wrong var
* try this out
* use clear
* starts cleanup
* wake for all visual alerts and handle timeouts
* fixup: wake for all visual alerts and handle timeouts
* handle always wake if there's an event properly
* some
* slightly more
* need this back
* Reapply "ui: Global Brightness Override (#1579)"
This reverts commit a0c10be1ff.
* do not touch light sensor logic
* override properly and clip to 30% minimum
* wrap
* lint
* update immediately
* read
* max global brightness
* rename
* gotta do it for mici too lol
* revert
* Revert "revert"
This reverts commit 121a082de1.
* no more
* ui
* more
* intenum
* simplify ONROAD_BRIGHTNESS_TIMER_VALUES
* no more toggle
* 15 seconds countdown for auto dark regardless
* auto dark refinement
* only consume if expired
* immediately set
* rename
* update sl metadata
* no more
---------
Co-authored-by: nayan <nayan8teen@gmail.com>
Co-authored-by: DevTekVE <devtekve@gmail.com>
* Remove cython for transformations
* Add new test
* Switch back to program to fix mac builds
* Convert to Python instead
* Fix failing builds
* lint
* Implement conversion in pure python/numpy
* Add more tests
* Fix bugs in tests
* modeld: configurable camera offset
Negative Values: Shears the image to the left, moving the models center to the Right.
Positive Value: Shears the image to the right, moving the models center to the Left.
* modeld: camera offset class
* verify zero offset I @ A = A
* slithered and slunked
* Update params_metadata.json
* wait
* Update model_renderer.py
* Update model_renderer.py
* requested changes
* stricter
* Update model_renderer.py
* more
* return default
* Update params_metadata.json
* final
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* ui: improve layout and centering of bottom developer UI elements
* int
* less is more, y'all
* always show actual lat for all cars
* lint
* perfect
* cleanup
* too long
* inherit
* remove unused
* inir
* need to fix
* final
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* tos reimpl
* nah
* simpler
* check consent on sunnylink panel - mici
* slight cleanup
* rename
* keep it off
* decouple
* more rename
* more decouple
* a bit more
* fix state
* decouple more
* a bit more
* wrong type
* rearrange
* don't do that
* final
* lint
* include
* more
---------
Co-authored-by: nayan <nayan8teen@gmail.com>
* tools: add LRU for log cache
* lil more
* cleanup:
* less syscall
* manifest
* cleanup
* cleanup
* lil more
* cleanup
* lil more
* simpler
* lil more
* commaai/openpilot:d05cb31e2e916fba41ba8167030945f427fd811b
* bump opendbc
* bump opendbc
* bump opendbc
* bump opendbc
* bump opendbc
* sunnypilot: remove Qt
* cabana: revert to stock Qt
* commaai/openpilot:5198b1b079c37742c1050f02ce0aa6dd42b038b9
* commaai/openpilot:954b567b9ba0f3d1ae57d6aa7797fa86dd92ec6e
* commaai/openpilot:7534b2a160faa683412c04c1254440e338931c5e
* sum more
* bump opendbc
* not yet
* should've been symlink'ed
* raylib says wut
* quiet mode back
* more fixes
* no more
* too extra red diff on the side
* need to bring this back
* too extra
* let's update docs here
* Revert "let's update docs here"
This reverts commit 51fe03cd51.
* param to control stock vs sp ui
* init styles
* SP Toggles
* Lint
* optimizations
* multi-button
* Lint
* param to control stock vs sp ui
* init styles
* SP Toggles
* Lint
* optimizations
* sp raylib preview
* fix callback
* fix ui preview
* better padding
* this
* support for next line multi-button
* uhh
* disabled colors
* listitem -> listitemsp
* listitem -> listitemsp
* add show_description method
* remove padding from line separator.
like, WHY? 😩😩
* ui: `GuiApplicationExt`
* simple button
* simple button
* add to readme
* use gui_app.sunnypilot_ui()
* i've got something to confessa
* init
* more init
* power buttons always visible
* uh, nope
* add reset to offroad only
* support wake up offroad
* flippity floppity
* dual button item sp
* use dual button item sp
* lint
* keep @devtekve from going blind
* more round
* some
* revert
* slight diff
* should've been inline
* cleanup power btns and offroad transitions
* bruh
* 1st row red diff
* 2nd row red diff
* 3rd row red diff
* slight diff
* move around
* more diff
* only when onroad we move to the top, not the toggle
* nah
* sort
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
Co-authored-by: DevTekVE <devtekve@gmail.com>
Co-authored-by: James Vecellio-Grant <159560811+Discountchubbs@users.noreply.github.com>
Co-authored-by: discountchubbs <alexgrant990@gmail.com>
* chevron info
* sp dir
* rename
* decouple from stock model renderer
* pain
* RED DIFF: get from ui state directly
* built in
* banned
* no magic
* space
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* rainbow
* use monotonic
* sp dir
* lint
* decouple from stock model renderer
* call in ui state directly
* it's a boolean
* too long
* nope
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* feat: add blocked parameter names
* add unit test to validate
* test: use cached method
* move it out
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* support ecdsa for mici
* lint
* ugh
* ugh ughain
* more
* symmetrical AES key derivation and some missing key handling
* cleanup
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* init
* add only colors
* fix LAT_ONLY on mici
* better ball
* hide wheel on LONG_ONLY
* hide torquebar on LONG_ONLY
* simpler
* dont block demo
* path only on long
* lanelines only on lat
* hide on override
* better
* same LANE_LINE_COLORS for mads
* use mads colors
* Revert "use mads colors"
This reverts commit 556321e5debe44e33d4ad98f440f0ed9f961fdf5.
* slight decouple confidence ball
* slight decouple model renderer
* slight decouple augmented road view
* decouple status update
* decouple and override with our own, no overriding with steering if long only
* fix
* fix it
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* devui
* clean up
* clean up
* optimize text measurement for better rendering performance
* sp dir
* decouple from stock HudRenderer
* rename
* fetch mode in _update_state
* wrong type
* start decoupling elements
* decouple elements
* un-ew this pls
* fully decouple developer UI elements
* rename
* more decouple
* full send
* final
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
This PR aims to fix sunnypilot pytest that was broken on MacOS due to calling capnp to_dict, which isn't supported on pycapnp library for Mac.
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* comma four: fix missing WiFi show_event (#36858)
* can't do this
* can do this
* comma four: rm duplicate wifi show_event
* comma four: fix WiFi panel not starting at the top (#36859)
* fix
* fix
* NavWidget: disable nav bar for vertical scrollers (#36857)
* disable nav bar vert scroller
* cmt
* ui: improve network sort (#36855)
* better sort
* clean up
* comma four: reset WiFi SSID scroll on show (#36861)
reset scroll
* WifiUi: fix infinite wraps (#36863)
* fix infinite wrap
* fix selection
* Revert "fix selection"
This reverts commit 555c57922409312bf5d9efedf571994f157b9e44.
* revert
* revert
* revert
* revert
* cleaner
* cleaner
* mypy!!
* WifiUi: remove delayed network panel open (#36865)
not used
* comma four: fix WiFi scroll to (#36864)
* fix selection
* stash
* Revert "stash"
This reverts commit d04ed66b090641072c86b8ed7ed86dbdbf67fbd9.
* clean up
* clean up
* move
* fix
* WifiUi: pause updates while user is scrolling (#36866)
* pause updates while user is scrolling
* clean up
* WifiUi: pause updates while user is interacting (#36868)
int not scroll
* Widget: implement layout function (#36869)
* we can implement layout to fix flashing
* reorder
* fix faster than normal snap and reduce duplicate calculations
* yes
* comma four: follow current network (#36862)
* stay
* whoops
* whoops
* fix
* fix div by z
* we can implement layout to fix flashing
* Revert "we can implement layout to fix flashing"
This reverts commit 7278a1e2a6117aec775ef4fabee2fd68b3d064f3.
* random
* clean up
* wtf
* rev
* smooth
* we can implement layout to fix flashing
* snap looks so much better
* fix
* rev
* better name
* cmt
* less random
* even less random
* simpler
* cmt
* clean up
* clean up
* clean up
* GuiScrollPanel2: fix possible crash (#36870)
fix crash
* WifiUi: tweak unselected button size (#36871)
looks too spaces
* rm dead unlog_ci_segment.py
* joystickd: add cruise control resume (#36876)
* Add cruise control resume logic based on conditions
* simple
* bump opendbc (#36878)
* bump
* update docs
* bump
* gotta go fast
* sensord: remove last of dual IMU support (#36881)
* Toyota: prevent roll in ICE after pressing resume while wanting to stay stopped (#36877)
* bump
* only show alert when user can leave standstill
* cmt
* stash
* bump
* bump to master
* test_onroad: absolute memory usage test (#36885)
* test_onroad: absolute memory usage test
* show msgq size
* reduce a little
* bump msgq
* Revert "bump msgq"
This reverts commit 683d0ae9fc754f7b72e2bc4b256e9a3b0a60a127.
* Reduce pub-sub memory usage by 10x (#36884)
less mem
* four: hide untoggleable toggles (#36890)
* hide toggles
* enabled is redundant
* bump msgq (#36891)
* bump msgq
* update prefix
* ui: generic hold gesture (#36893)
* generic
* fix
* use in home
* clean up
* rm
* clean up
* four: simpler steer saturated alert (#36894)
* looks good
* fix
* cleanup
* test_onroad: relax memory threshold (#36895)
* Update RELEASES.md for version 0.10.3
* Update RELEASES.md
* ui: override default interactive timeout (#36898)
* impl
* fix one place
* don't need in setup
* fix onboarding
* need here too
* ui: default text color 90% white (#36899)
default 90%
* onboarding: fixup DM RHD detection (#36900)
* helper
* fix
* use it
* prop
* bigger box
* huh
* comma four: simpler DM onboarding (#36896)
* rm confirm mode
* kinda works
* how
* disabled
* do this
* do this
* wait
* here
* something
* fade in
* 4s
* clean up
* copy
* help
* 30deg center
* stuff
* reset_interactive_timeout
* rm
* simple
* simple
* copy
* 1.5x
* smooth opacity
* power off slider
* fix
* new icons and gradient and rounded
* final check
* fix
* how the hell did this work
* clean up
* clean up
* flip
* cmt
* uh yeah
* remove this
* revert this
* lint
* 45
* clean up
* fix
* no show time
* question
* rm
* no use
* ()
* lint
* call
* ui: fix not showing networks if viewing right after startup
* Fix tici DM dialog memory leak (#36790)
* not finished
* no
* debug
* clean up
* clean up
* Revert "ui: generic hold gesture (#36893)"
This reverts commit 9768109ec1.
* setup: go back to main page once connected (#36902)
* call
* break
* print
* fix
* rm
* debug
* fix
* yeah ideally wifiui has no clue about this
* clean up
* clean up
* clean up
* only need this
* cu
* rm
* fix
* CI: tmp disable macOS due to brew bug (#36906)
* need update?
* try this
* x
* just disable it
* lil more release notes
---------
Co-authored-by: Shane Smiskol <shane@smiskol.com>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
Co-authored-by: YassineYousfi <yyousfi1@binghamton.edu>
* call
* break
* print
* fix
* rm
* debug
* fix
* yeah ideally wifiui has no clue about this
* clean up
* clean up
* clean up
* only need this
* cu
* rm
* fix
* rm confirm mode
* kinda works
* how
* disabled
* do this
* do this
* wait
* here
* something
* fade in
* 4s
* clean up
* copy
* help
* 30deg center
* stuff
* reset_interactive_timeout
* rm
* simple
* simple
* copy
* 1.5x
* smooth opacity
* power off slider
* fix
* new icons and gradient and rounded
* final check
* fix
* how the hell did this work
* clean up
* clean up
* flip
* cmt
* uh yeah
* remove this
* revert this
* lint
* 45
* clean up
* fix
* no show time
* question
* rm
* no use
* ()
* lint
* call
* test_onroad: absolute memory usage test
* show msgq size
* reduce a little
* bump msgq
* Revert "bump msgq"
This reverts commit 683d0ae9fc754f7b72e2bc4b256e9a3b0a60a127.
* stay
* whoops
* whoops
* fix
* fix div by z
* we can implement layout to fix flashing
* Revert "we can implement layout to fix flashing"
This reverts commit 7278a1e2a6117aec775ef4fabee2fd68b3d064f3.
* random
* clean up
* wtf
* rev
* smooth
* we can implement layout to fix flashing
* snap looks so much better
* fix
* rev
* better name
* cmt
* less random
* even less random
* simpler
* cmt
* clean up
* clean up
* clean up
* ui: developer panel
* comment out
* double translate
* quickboot and more efficient file checking
* use HtmlModalSP!
* ui: `HtmlModalSP`
* less
* lint
* less
* just use existing dir on PC
* grammar
* match official
* rename
* biiig
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* param to control stock vs sp ui
* init styles
* SP Toggles
* Lint
* optimizations
* sp raylib preview
* fix callback
* fix ui preview
* dialog txt
* compare vs what used to be done before InputDialog
* merge origin raylib toggles
* tree dialog
* less trees for the planet
* the heck
* save the trees we got icons
* Update process.py
* Remove 'sunnypilot_ui'
Removed 'sunnypilot_ui' parameter from params_keys.h
* Update raylib_screenshots.py
Removed the parameter setting for 'sunnypilot_ui' in the test.
* ui: fuzzy search helper
* better tree. fully dynamic and stuff
* rm
* more indent
* Squashed commit of the following:
commit 6b5b686fa5
Author: discountchubbs <alexgrant990@gmail.com>
Date: Mon Nov 24 17:16:17 2025 -0800
more indent
commit 76bc538ac7
Merge: 53eb821dc4c53e2134e2
Author: James Vecellio-Grant <159560811+Discountchubbs@users.noreply.github.com>
Date: Mon Nov 24 17:15:48 2025 -0800
Merge branch 'master' into rl-tree-dialog
commit 53eb821dc4
Merge: 82e1ebe97e844f4cbc74
Author: James Vecellio-Grant <159560811+Discountchubbs@users.noreply.github.com>
Date: Mon Nov 24 11:54:55 2025 -0800
Merge branch 'master' into rl-tree-dialog
commit 82e1ebe97e
Author: discountchubbs <alexgrant990@gmail.com>
Date: Mon Nov 24 10:23:35 2025 -0800
rm
commit da3ff45bb6
Merge: 41da513fcaa829a1b972
Author: discountchubbs <alexgrant990@gmail.com>
Date: Mon Nov 24 10:19:08 2025 -0800
Merge remote-tracking branch 'origin/rl-tree-dialog' into rl-tree-dialog
commit 41da513fca
Author: discountchubbs <alexgrant990@gmail.com>
Date: Mon Nov 24 10:18:43 2025 -0800
better tree. fully dynamic and stuff
commit b2950149fb
Merge: 4fb8e4beed924e5a3211
Author: discountchubbs <alexgrant990@gmail.com>
Date: Mon Nov 24 10:17:51 2025 -0800
Merge remote-tracking branch 'origin/input-dialog' into rl-tree-dialog
commit a829a1b972
Merge: 848290d07e9edc36ca66
Author: James Vecellio-Grant <159560811+Discountchubbs@users.noreply.github.com>
Date: Mon Nov 24 10:16:28 2025 -0800
Merge branch 'master' into rl-tree-dialog
commit 4fb8e4beed
Merge: 848290d07eaf4f0f8372
Author: discountchubbs <alexgrant990@gmail.com>
Date: Mon Nov 24 10:16:20 2025 -0800
Merge remote-tracking branch 'origin/fuzzy-dialog' into rl-tree-dialog
commit af4f0f8372
Merge: 1d5f0ab2823cd55260d9
Author: James Vecellio-Grant <159560811+Discountchubbs@users.noreply.github.com>
Date: Mon Nov 24 06:39:29 2025 -0800
Merge branch 'master' into fuzzy-dialog
commit 1d5f0ab282
Author: discountchubbs <alexgrant990@gmail.com>
Date: Sun Nov 23 11:28:59 2025 -0800
ui: fuzzy search helper
commit 848290d07e
Author: James Vecellio-Grant <159560811+Discountchubbs@users.noreply.github.com>
Date: Fri Nov 21 21:08:07 2025 -0800
Update raylib_screenshots.py
Removed the parameter setting for 'sunnypilot_ui' in the test.
commit 6694928a46
Author: James Vecellio-Grant <159560811+Discountchubbs@users.noreply.github.com>
Date: Fri Nov 21 21:06:57 2025 -0800
Remove 'sunnypilot_ui'
Removed 'sunnypilot_ui' parameter from params_keys.h
commit b3c90ef7b2
Merge: 0d3bc959c8457b6634fd
Author: James Vecellio-Grant <159560811+Discountchubbs@users.noreply.github.com>
Date: Fri Nov 21 21:06:04 2025 -0800
Merge branch 'master' into rl-tree-dialog
commit 924e5a3211
Merge: a4ee4ba76dd92d2cb683
Author: James Vecellio-Grant <159560811+Discountchubbs@users.noreply.github.com>
Date: Fri Nov 21 19:33:18 2025 -0800
Merge branch 'master' into input-dialog
commit a4ee4ba76d
Merge: e911de59684f13a0f775
Author: James Vecellio-Grant <159560811+Discountchubbs@users.noreply.github.com>
Date: Fri Nov 21 16:24:31 2025 -0800
Merge branch 'master' into input-dialog
commit e911de5968
Merge: cea6e008190ba5cbea91
Author: James Vecellio-Grant <159560811+Discountchubbs@users.noreply.github.com>
Date: Fri Nov 21 13:50:33 2025 -0800
Merge branch 'master' into input-dialog
commit cea6e00819
Merge: d7b8ce86ed8184cd8a6a
Author: James Vecellio-Grant <159560811+Discountchubbs@users.noreply.github.com>
Date: Fri Nov 21 12:01:45 2025 -0800
Merge branch 'master' into input-dialog
commit 0d3bc959c8
Author: James Vecellio-Grant <159560811+Discountchubbs@users.noreply.github.com>
Date: Wed Nov 19 20:29:30 2025 -0800
Update process.py
commit 4f3c19ffb5
Author: James Vecellio <alexgrant990@gmail.com>
Date: Wed Nov 19 20:28:59 2025 -0800
save the trees we got icons
commit ae5c44355d
Author: discountchubbs <alexgrant990@gmail.com>
Date: Wed Nov 19 13:38:04 2025 -0800
the heck
commit 066438ad10
Merge: 9532675814e74460f3a8
Author: discountchubbs <alexgrant990@gmail.com>
Date: Wed Nov 19 12:18:17 2025 -0800
Merge remote-tracking branch 'origin/rl-tree-dialog' into rl-tree-dialog
commit 9532675814
Author: discountchubbs <alexgrant990@gmail.com>
Date: Wed Nov 19 12:17:52 2025 -0800
less trees for the planet
commit e74460f3a8
Merge: c347db376a423a7d2ed0
Author: James Vecellio-Grant <159560811+Discountchubbs@users.noreply.github.com>
Date: Wed Nov 19 09:37:44 2025 -0800
Merge branch 'rl-sp-toggles' into rl-tree-dialog
commit c347db376a
Author: discountchubbs <alexgrant990@gmail.com>
Date: Wed Nov 19 09:36:33 2025 -0800
tree dialog
commit c9bd67b261
Author: discountchubbs <alexgrant990@gmail.com>
Date: Wed Nov 19 09:34:08 2025 -0800
merge origin raylib toggles
commit d7b8ce86ed
Author: discountchubbs <alexgrant990@gmail.com>
Date: Mon Nov 17 20:21:33 2025 -0800
compare vs what used to be done before InputDialog
commit 2d3d104658
Merge: ded02895f4f1025f6ee9
Author: James Vecellio-Grant <159560811+Discountchubbs@users.noreply.github.com>
Date: Mon Nov 17 19:24:20 2025 -0800
Merge branch 'master' into input-dialog
commit ded02895f4
Author: discountchubbs <alexgrant990@gmail.com>
Date: Mon Nov 17 19:22:01 2025 -0800
dialog txt
commit 9778a925b0
Merge: cb03d0839708e85808c5
Author: Jason Wen <haibin.wen3@gmail.com>
Date: Sun Nov 16 03:16:58 2025 -0500
input dialog
commit 423a7d2ed0
Author: nayan <nayan8teen@gmail.com>
Date: Sun Nov 16 11:15:28 2025 -0500
fix ui preview
commit e4e10d4b87
Author: nayan <nayan8teen@gmail.com>
Date: Sun Nov 16 11:15:22 2025 -0500
fix callback
commit 362e9ce04b
Author: nayan <nayan8teen@gmail.com>
Date: Sun Nov 16 09:53:28 2025 -0500
sp raylib preview
commit 3946e643f6
Author: nayan <nayan8teen@gmail.com>
Date: Sat Nov 15 20:24:20 2025 -0500
optimizations
commit 0c37a38596
Author: nayan <nayan8teen@gmail.com>
Date: Sat Nov 15 09:42:12 2025 -0500
Lint
commit 9c5acf61c0
Author: nayan <nayan8teen@gmail.com>
Date: Sat Nov 15 09:29:07 2025 -0500
SP Toggles
commit 121b304fe0
Author: nayan <nayan8teen@gmail.com>
Date: Sat Nov 15 09:28:58 2025 -0500
init styles
commit 47d848293b
Author: nayan <nayan8teen@gmail.com>
Date: Sat Nov 15 09:28:43 2025 -0500
param to control stock vs sp ui
* Squashed commit of the following:
commit 70ad001add
Merge: 142663c490844f4cbc74
Author: James Vecellio-Grant <159560811+Discountchubbs@users.noreply.github.com>
Date: Mon Nov 24 11:54:58 2025 -0800
Merge branch 'master' into rl-progress-bar
commit 142663c490
Author: discountchubbs <alexgrant990@gmail.com>
Date: Sat Nov 22 20:12:44 2025 -0800
smoother updating
commit 4476e418dd
Author: discountchubbs <alexgrant990@gmail.com>
Date: Sat Nov 22 09:55:17 2025 -0800
easier to see
commit ad66c22e88
Merge: 0c46ef5948457b6634fd
Author: James Vecellio-Grant <159560811+Discountchubbs@users.noreply.github.com>
Date: Sat Nov 22 07:45:05 2025 -0800
Merge branch 'master' into rl-progress-bar
commit 0c46ef5948
Author: discountchubbs <alexgrant990@gmail.com>
Date: Sat Nov 22 07:42:59 2025 -0800
freaking test dir
commit 11c19aad24
Merge: 7785238d548184cd8a6a
Author: James Vecellio-Grant <159560811+Discountchubbs@users.noreply.github.com>
Date: Fri Nov 21 12:01:36 2025 -0800
Merge branch 'master' into rl-progress-bar
commit 7785238d54
Author: discountchubbs <alexgrant990@gmail.com>
Date: Wed Nov 19 07:47:10 2025 -0800
raylib: progress bar
* OSM panel
* fetching
* only show if fav_param is used in the call
* flattened and custom search query
* conditional for mypy
* sunny's new x,y makes this even easier!
* download all
* add back the rough estimate
* not sure i like the 'Download'
* simplify the path
* actual size as of today
* format
* more simple
* only show on download or delete
* loathing loathing, unadulterated loathing, i loathe it all
* loathing loathing, unadulterated loathing, i loathe it all
* # Conflicts:
# system/ui/sunnypilot/lib/styles.py
# system/ui/sunnypilot/widgets/tree_dialog.py
* search
* st
* Update osm.py
* one second updates:
its heavy process, which isnt really noticeable during downloads ayways. the once a second ensures responsiveness on the ui, while also maintaining 20fps on device for country/state downloads.
* efficient? i hope
* big boi texts
* big boi texts
* use our own classes
* need to clear all params when delete all
* more
* collateral lol
* do not behave as selected if canceled during US->States dialog
* more
* instead of timestamp, let's just show formatted time
* disable button when downloading dbs
* should be the buttons being disabled
* well gotta re-enable them too
* empty country
* might be bigger now
* fixes for mapd manager
* should stay as a json
* sanitize it a bit
* revert
* only nuke if the cancel button is called
* always try to update the labels
* Revert "always try to update the labels"
This reverts commit ba0988fc06.
* re-enable button after download is complete
* disable all while downloading (till we could cancel and re-download)
* fix progress bar not filling up as intended for smaller total counts
* revert
* use new
---------
Co-authored-by: nayan <nayan8teen@gmail.com>
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* Brand Extra Gears Dict added. Gear data removed from CarSpecificEvents Update method, data now held in global variable.
* Added elif for Ford and Nissan events creation. BRAND_EXTRA_GEARS now extracted from CarSpecificEvents
* Amended Chrysler and Toyota create_common_events calls.
* format
* can do this!
* consis
* whoops
* type
---------
Co-authored-by: RJ <ryan@DESKTOP-4S0L5O5.localdomain>
Co-authored-by: Shane Smiskol <shane@smiskol.com>
* video diff
* format
* duplicate
* try
* WINDOWED
* ?
* correct res
* Revert "correct res"
This reverts commit f90991192fce93a31d1b581a4f0ff93a7a972337.
* save to report/
* add duplicate
* work?
* fix
* more
* more
* and this
* ffmpeg
* branch
* uncmt
* test preview
* Revert "uncmt"
This reverts commit b02404dbbe515fd861717f831c7bb0243442ddbc.
* create openpilot_master_ui_mici_raylib
* ahh
* push to master
* copy and always run
* test
* does cmt break it?
* who did this
* fix?
* fix that
* hmm
* hmm
* ah this was moving it, and then the job below didn't run on master
* google ai overview lied to me
* use markdown to start
* need to add to one branch
* ????
* oof
* no
* this work?
* test
* try this
* clean up master branch name
* more cleanup
more cleanup
* don't fail for no diff!
don't fail for no diff!
* back
* add to cmt
* test it
* should work
* fix that
* back
* clean up
* clean up
* save to report
* pull_request_target
* sort
---------
Co-authored-by: Shane Smiskol <shane@smiskol.com>
* Add Ukrainian lang
* update_translations.py
* Add Ukrainian strings
* Small patch to display translated update states
* Revert "Small patch to display translated update states"
This reverts commit b0545f4e109f451a21e4e5884259dbb881d7a58e.
* Revert "update_translations.py"
This reverts commit 79eea20c33f1b1d542b62a782ab1b67bc9277026.
* fix so these meaningless edits
* param to control stock vs sp ui
* init styles
* SP Toggles
* Lint
* optimizations
* sp raylib preview
* fix callback
* fix ui preview
* dialog txt
* compare vs what used to be done before InputDialog
* introducing ui_state_sp for py
* raylib: input dialog
* raylib: SP Toggles
* raylib: SP Panels
* raylib: Option Control
* init
* param to control stock vs sp ui
* better
* tree dialog, progress bar widget cool stuff
* merge origin raylib toggles
* tree dialog
* less trees for the planet
* the heck
* add ui_update callback
* save the trees we got icons
* Update process.py
* yesssssssssss
* utilize ON_COLOR constant form op system
* Revert "add ui_update callback"
This reverts commit 4da32cc009.
* # Conflicts:
# system/ui/sunnypilot/widgets/list_view.py
# system/ui/sunnypilot/widgets/option_control.py
* Merge remote-tracking branch 'openpilot/master' into nov-19-sync
* ui: `GuiApplicationExt`
* add to readme
* scroller_tici :)
* use gui_app.sunnypilot_ui()
* # Conflicts:
# selfdrive/ui/layouts/main.py
# selfdrive/ui/sunnypilot/layouts/settings/cruise.py
# selfdrive/ui/sunnypilot/layouts/settings/display.py
# selfdrive/ui/sunnypilot/layouts/settings/models.py
# selfdrive/ui/sunnypilot/layouts/settings/navigation.py
# selfdrive/ui/sunnypilot/layouts/settings/osm.py
# selfdrive/ui/sunnypilot/layouts/settings/steering.py
# selfdrive/ui/sunnypilot/layouts/settings/sunnylink.py
# selfdrive/ui/sunnypilot/layouts/settings/trips.py
# selfdrive/ui/sunnypilot/layouts/settings/vehicle.py
# selfdrive/ui/sunnypilot/layouts/settings/visuals.py
# system/ui/sunnypilot/widgets/option_control.py
* init value
* Remove 'sunnypilot_ui'
Removed 'sunnypilot_ui' parameter from params_keys.h
* Update raylib_screenshots.py
Removed the parameter setting for 'sunnypilot_ui' in the test.
* easier to see
* Update progress_bar.py
* try something
* adjust placement
* more simple
* smoothing updating components
* ui: fuzzy search helper
* ui_state_sp
* description!
* fuzzy af searching
* better tree. fully dynamic and stuff
* rm
* rearrange
* license
* idk how maybe the merge
* more indent
* more indent
* cleanup
* temporaily revert ui_state_sp
* only show if fav_param is used in the call
* conditional for mypy
* mypy
* conditional for mypy
* str concatenation to reduce line len
* level
* sunny's new x,y makes this even easier!
* refreshing half a second seems legit.
* software stuffs
* rm
* add
* loathing loathing, unadulterated loathing, i loathe it all
* loathing loathing, unadulterated loathing, i loathe it all
* # Conflicts:
# system/ui/sunnypilot/lib/styles.py
# system/ui/sunnypilot/widgets/tree_dialog.py
* search
* ds
* hide on advanced controls
* some
* handle toggle confirmation
* sunny, NO
* nayan, NO !!
* easier
* move
* move it!
* add more
* need to show current branch
---------
Co-authored-by: nayan <nayan8teen@gmail.com>
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* param to control stock vs sp ui
* init styles
* SP Toggles
* Lint
* optimizations
* sp raylib preview
* fix callback
* fix ui preview
* dialog txt
* compare vs what used to be done before InputDialog
* introducing ui_state_sp for py
* raylib: input dialog
* raylib: SP Toggles
* raylib: SP Panels
* raylib: Option Control
* init
* param to control stock vs sp ui
* better
* tree dialog, progress bar widget cool stuff
* merge origin raylib toggles
* tree dialog
* less trees for the planet
* the heck
* add ui_update callback
* save the trees we got icons
* Update process.py
* yesssssssssss
* utilize ON_COLOR constant form op system
* Revert "add ui_update callback"
This reverts commit 4da32cc009.
* # Conflicts:
# system/ui/sunnypilot/widgets/list_view.py
# system/ui/sunnypilot/widgets/option_control.py
* Merge remote-tracking branch 'openpilot/master' into nov-19-sync
* ui: `GuiApplicationExt`
* add to readme
* scroller_tici :)
* use gui_app.sunnypilot_ui()
* # Conflicts:
# selfdrive/ui/layouts/main.py
# selfdrive/ui/sunnypilot/layouts/settings/cruise.py
# selfdrive/ui/sunnypilot/layouts/settings/display.py
# selfdrive/ui/sunnypilot/layouts/settings/models.py
# selfdrive/ui/sunnypilot/layouts/settings/navigation.py
# selfdrive/ui/sunnypilot/layouts/settings/osm.py
# selfdrive/ui/sunnypilot/layouts/settings/steering.py
# selfdrive/ui/sunnypilot/layouts/settings/sunnylink.py
# selfdrive/ui/sunnypilot/layouts/settings/trips.py
# selfdrive/ui/sunnypilot/layouts/settings/vehicle.py
# selfdrive/ui/sunnypilot/layouts/settings/visuals.py
# system/ui/sunnypilot/widgets/option_control.py
* init value
* Remove 'sunnypilot_ui'
Removed 'sunnypilot_ui' parameter from params_keys.h
* Update raylib_screenshots.py
Removed the parameter setting for 'sunnypilot_ui' in the test.
* easier to see
* Update progress_bar.py
* try something
* adjust placement
* more simple
* smoothing updating components
* ui: fuzzy search helper
* ui_state_sp
* description!
* fuzzy af searching
* better tree. fully dynamic and stuff
* rm
* rearrange
* license
* idk how maybe the merge
* more indent
* more indent
* cleanup
* temporaily revert ui_state_sp
* only show if fav_param is used in the call
* conditional for mypy
* mypy
* conditional for mypy
* str concatenation to reduce line len
* level
* sunny's new x,y makes this even easier!
* refreshing half a second seems legit.
* loathing loathing, unadulterated loathing, i loathe it all
* loathing loathing, unadulterated loathing, i loathe it all
* # Conflicts:
# system/ui/sunnypilot/lib/styles.py
# system/ui/sunnypilot/widgets/tree_dialog.py
* Update models.py
* Change BUTTON_DISABLED_BG_COLOR to a lighter shade
* I think this is it
* Update tree_dialog.py
* Update models.py
* Update models.py
* oops, angry f string
* bool
* Update ui_state.py
* Update ui_state.py
* wtf where'd the end quote go lol
* some
* more
* quick test
* Revert "quick test"
This reverts commit fb97afa54c.
* try this out
* use sp's
* cap
* how weird?
---------
Co-authored-by: nayan <nayan8teen@gmail.com>
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* param to control stock vs sp ui
* init styles
* SP Toggles
* Lint
* optimizations
* sp raylib preview
* fix callback
* fix ui preview
* sunnylink state
* introducing ui_state_sp for py
* poll from ui_state_sp
* cloudlog & ruff
* param to control stock vs sp ui
* better
* better padding
* this
* listitem -> listitemsp
* add show_description method
* remove padding from line separator.
like, WHY? 😩😩
* ui: `GuiApplicationExt`
* add to readme
* use gui_app.sunnypilot_ui()
* use gui_app.sunnypilot_ui()
* fetch only when connected to network
* sponsor & pairing qr
* init panel elements
* backup & restore
* fruit loops
* update
* enable, disable, enable, disable
* handle layout updates
* not needed
* change it up
* better
* scroller -> scroller_tici
* optimizations
* remove Params
* fix button disablement
* ui_state_sp changes
* keep enabled
* add header text
* dad jokes?
* no
* lint? Lint!
* final touches
* add sp font
* use sp font
* some
* ui: add right-aligned value display support in `ListItem` (in another pr)
* display sunnylink device id
* display sunnylink device id and sponsor tiers
* ui: add right-aligned value display support in `ListItemSP`
* lint
* styles
* lint
* ui: introduce customizable value colors for `ButtonActionSP` and `ListViewSP`
* support
* convert to str
* disable if paired
* colored sponsors
* hide and disable pairing button if paired
* texts
* ui: sunnypilot sponsor tier color mapping
* lint
* dongle id for ui preview
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
Co-authored-by: James Vecellio-Grant <159560811+Discountchubbs@users.noreply.github.com>
* commaai/openpilot:d05cb31e2e916fba41ba8167030945f427fd811b
* bump opendbc
* bump opendbc
* bump opendbc
* bump opendbc
* bump opendbc
* sunnypilot: remove Qt
* cabana: revert to stock Qt
* commaai/openpilot:5198b1b079c37742c1050f02ce0aa6dd42b038b9
* commaai/openpilot:954b567b9ba0f3d1ae57d6aa7797fa86dd92ec6e
* commaai/openpilot:7534b2a160faa683412c04c1254440e338931c5e
* sum more
* bump opendbc
* not yet
* should've been symlink'ed
* raylib says wut
* quiet mode back
* more fixes
* no more
* too extra red diff on the side
* need to bring this back
* too extra
* let's update docs here
* Revert "let's update docs here"
This reverts commit 51fe03cd51.
* param to control stock vs sp ui
* init styles
* SP Toggles
* Lint
* optimizations
* multi-button
* Lint
* param to control stock vs sp ui
* init styles
* SP Toggles
* Lint
* optimizations
* Panels. With Icons. And Scroller.
* patience, grasshopper
* more patience, grasshopper
* sp raylib preview
* fix callback
* fix ui preview
* add ui previews
* dialog txt
* compare vs what used to be done before InputDialog
* introducing ui_state_sp for py
* param to control stock vs sp ui
* better
* add ui_update callback
* better padding
* this
* support for next line multi-button
* uhh
* disabled colors
* listitem -> listitemsp
* listitem -> listitemsp
* Revert "add ui_update callback"
This reverts commit 4da32cc009.
* add show_description method
* remove padding from line separator.
like, WHY? 😩😩
* scroller -> scroller_tici
* scroller -> scroller_tici
* ui: `GuiApplicationExt`
* add to readme
* use gui_app.sunnypilot_ui()
* use gui_app.sunnypilot_ui()
* use gui_app.sunnypilot_ui()
* lint
* no fancy toggles :(
* match them
* mici scroller - no touchy
* no
* more
* size adjustments
* fix scroller. yay
* ui vehicle panel: platform selector
* some brands
* platform selector
* bruh
* ui_state_sp
* o
* is_offroad() and format
* huh
* use in toggles panel
* ugh. no
* better & animated
* lint
* cleanup
* lint. LINT
* slight
* rebase
* no more
* rebae
* vic
* v
* # Conflicts:
# system/ui/sunnypilot/lib/styles.py
# system/ui/sunnypilot/widgets/helpers/fuzzy_search.py
* loathing loathing, unadulterated loathing, i loathe it all
* more changes!
* Update styles.py
* set visibility
* Update hyundai.py
* add padding
* use symlink on sp side
* use make from json and show all actual makes
* all done!
* Revert "all done!"
This reverts commit 595c45f057.
* reimpl onroad/offroad confirmation
* use global offroad directly
* ui: highlight on pressed, and less indent
* inherit MultiOptionDialog main buttons
* align top level folders to the edge properly
* lint
* lint
* handle folder presses too
* ui: overridable title and subtitle for `TreeOptionDialog`
* override TreeOptionDialog title and subtitle
* lint
* more
* ui: magnifying glass icon and new search bar style in `TreeDialog`
* cleanup
* ui: recreate search dialog with the latest query
* make model year but display as platform
* move into settings directory
* move into dir
* sync
* equality
* use singleton directly
* also use singleton directly
* inherit from base class
* include all brands
* added refresh
* always assume it's subaru
* slight
* split get brand
* hyundai changes
* tesla changes
* do not allow while offroad
* fix
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
Co-authored-by: nayan <nayan8teen@gmail.com>
* param to control stock vs sp ui
* init styles
* SP Toggles
* Lint
* optimizations
* Panels. With Icons. And Scroller.
* patience, grasshopper
* more patience, grasshopper
* sp raylib preview
* fix callback
* fix ui preview
* add ui previews
* dialog txt
* compare vs what used to be done before InputDialog
* introducing ui_state_sp for py
* param to control stock vs sp ui
* better
* add ui_update callback
* better padding
* this
* listitem -> listitemsp
* Revert "add ui_update callback"
This reverts commit 4da32cc009.
* add show_description method
* remove padding from line separator.
like, WHY? 😩😩
* scroller -> scroller_tici
* scroller -> scroller_tici
* ui: `GuiApplicationExt`
* add to readme
* use gui_app.sunnypilot_ui()
* use gui_app.sunnypilot_ui()
* use gui_app.sunnypilot_ui()
* lint
* no fancy toggles :(
* match them
* mici scroller - no touchy
* no
* more
* size adjustments
* fix scroller. yay
* ui vehicle panel: platform selector
* platform selector
* bruh
* ui_state_sp
* huh
* rebase
* rebae
* vic
* # Conflicts:
# system/ui/sunnypilot/lib/styles.py
# system/ui/sunnypilot/widgets/helpers/fuzzy_search.py
* loathing loathing, unadulterated loathing, i loathe it all
* more changes!
* Update styles.py
* add padding
* use symlink on sp side
* use make from json and show all actual makes
* all done!
* Revert "all done!"
This reverts commit 595c45f057.
* reimpl onroad/offroad confirmation
* use global offroad directly
* ui: highlight on pressed, and less indent
* inherit MultiOptionDialog main buttons
* align top level folders to the edge properly
* lint
* lint
* handle folder presses too
* ui: overridable title and subtitle for `TreeOptionDialog`
* override TreeOptionDialog title and subtitle
* lint
* more
* ui: magnifying glass icon and new search bar style in `TreeDialog`
* cleanup
* ui: recreate search dialog with the latest query
* make model year but display as platform
* move into settings directory
* move into dir
---------
Co-authored-by: nayan <nayan8teen@gmail.com>
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* ui: highlight on pressed, and less indent
* inherit MultiOptionDialog main buttons
* align top level folders to the edge properly
* lint
* handle folder presses too
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* ui: add real-time video recording functionality with ffmpeg support
* fix: record at consistent frame rate
* add spaces
* fix type
* refactor: RECORD_FRAMES variable and related logic
* fix: remove unnecessary texture check
* support missing output extension
* add wait for close with timeout
* fix: ensure RECORD_OUTPUT has the correct file extension
* flush on close and terminate if times out closing
* ffmpeg hide banner
* reduce ffmpeg spam
* refactor: streamline ffmpeg arguments for video encoding
* refactor: move size arg to variable and add yub420p conversion for native support
* use render_width and render_height for size
* fix: ensure even dimensions for video encoding when recording
* rm itertools
* simple
* cleanup
* docs
---------
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* param to control stock vs sp ui
* init styles
* SP Toggles
* Lint
* optimizations
* sp raylib preview
* fix callback
* fix ui preview
* dialog txt
* compare vs what used to be done before InputDialog
* merge origin raylib toggles
* tree dialog
* less trees for the planet
* the heck
* save the trees we got icons
* Update process.py
* Remove 'sunnypilot_ui'
Removed 'sunnypilot_ui' parameter from params_keys.h
* Update raylib_screenshots.py
Removed the parameter setting for 'sunnypilot_ui' in the test.
* ui: fuzzy search helper
* better tree. fully dynamic and stuff
* rm
* more indent
* only show if fav_param is used in the call
* conditional for mypy
* sunny's new x,y makes this even easier!
* loathing loathing, unadulterated loathing, i loathe it all
* more changes!
* more changes!
* Update BUTTON_DISABLED_BG_COLOR to a lighter shade
* Update tree_dialog.py
* final
---------
Co-authored-by: nayan <nayan8teen@gmail.com>
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* introducing ui_state_sp for py
* param to control stock vs sp ui
* better
* add ui_update callback
* Revert "add ui_update callback"
This reverts commit 4da32cc009.
* ui: `GuiApplicationExt`
* add to readme
* use gui_app.sunnypilot_ui()
* add cp_sp to ui_state_sp
* fix ui crash
* update params
* more
* slightly more
* add directly to the list
* nah
* move around
* rename
* call before param time tracker is updated
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* almost
* works!
* clean up
* fix
* trash
* Revert "trash"
This reverts commit 951d63382810d444fe08103f406a8c490cfcbe25.
* fix some bugs and use
* clean up
* clean up
* fix clipping
* clean up
* fix
* feat(params): add support for parameter metadata retrieval
- Introduced `getKeyMetadata` method for accessing metadata associated with params.
- Enhanced `getParamsAllKeysV1` to include metadata parsing and optional dynamic enum generation.
- Extended unit tests to verify metadata parsing, enum mapping, and edge cases.
* Revert "feat(params): add support for parameter metadata retrieval"
This reverts commit 865b695ff9.
* update: integrate params metadata management and unit tests
- Added `update_params_metadata.py` to manage and update parameters metadata.
- Enhanced `getParamsAllKeysV1` to include metadata for params.
- Created comprehensive tests (`test_params_metadata.py`, `test_params_sync.py`) to validate metadata integrity and params consistency.
* update: improve params metadata readability and enhance enums
- Renamed params titles for clarity and consistency.
- Added enum options and mappings to selected params for better usability.
* update: enhance params metadata with improved enum structures
- Replaced plain enum lists with detailed objects (`value`, `label`) for clarity.
- Standardized parameter options for consistency across metadata.
* update: add validation constraints to params metadata
- Introduced `min`, `max`, and `step` attributes for improved parameter range validation.
- Enhances user input handling and ensures consistency in metadata.
* lint
* more lint stuff and permissions
* does this suffice?
* more lint
* update: refine params type hinting and remove unused shebang
- Adjusted type annotation in `params_dict` for better compatibility.
- Removed unnecessary shebang from `test_params_metadata.py`.
* update: expand test coverage for params metadata validation
- Added detailed test cases to ensure metadata consistency (`options`, `constraints`, `titles`).
- Validates API response alignment with `params_metadata.json`.
* the finals
* names
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* ci: add conditional swap creation to prebuilt workflow
- Dynamically creates an 8GB swap file on systems with less than 8GB RAM.
- Ensures builds complete reliably on low-memory environments.
- Introduced cleanup step to remove swap after workflow execution.
* Nice save
* clean
* reduce swap size in prebuilt workflow
- Adjusted swap file size from 8GB to 4GB to optimize resource usage.
* remove swap creation from prebuilt workflow
- Simplified workflow by removing dynamic swap file creation and cleanup.
- Adjusted resource management to rely on existing system resources.
* update sunnypilot build workflow to use explicit script calls
- Replaced `op` commands with explicit `/data/openpilot/tools/op.sh` script calls for better reliability and clarity.
* update sunnypilot build workflow to use systemd for process management
- Replaced `/data/openpilot/tools/op.sh` script calls with `systemctl` commands for improved compatibility and reliability.
- Ensures consistent resource management during start and stop operations.
* Splitting a bit the build then?
* split build steps in sunnypilot prebuilt workflow
- Added separate build steps for `modeld`, `modeld_v2`, and `locationd` with descriptive messages.
- Improves logging and clarity during the build process.
* limit locationd parallel processes aiming to help with resource consumption
* typo
* adding op's location d AND bumping to 4 cores for them
* Apply suggestion from @sunnyhaibin
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* fix arc artifacts
* works but how
* also this
* Revert "also this"
This reverts commit e8d5ed9af15568dcb178dd6da7a14d2c6191010e.
* clean up
* nl
* clean up
* more
* print
* print
* intern
* start
* move
* common caching
* use constant for slep
* works
* add gating back
* clean up
* more
* match cache logic
* hate this circular
* not needed since sync
* no need for lock?
* even qt had something like _load_initial_state for tests, keep
* clean up
* clean up
* clean up
* loading json as string works, else it will fail to parse json, catch that and log, and next api call will overwrite
* move over firehose
* clean up
* fix test
* no
* flip
* more
* match qt
* consistent
* clean up
* cmt
* fix test!
* ui: add debug to display mouse coordinates
* cleanup
* use mouse x and y directly
* even less
* try this out
* ui: increase `scroll` delay in UI Preview
* sleep for clicks too
* don't lol
* try 1 secs
* try this out
* wait a sec before doing a screenshot
* nah
* ui: increase `scroll` delay in UI Preview
* sleep for clicks too
* don't lol
* try 1 secs
* try this out
* wait a sec before doing a screenshot
* nah
* commaai/openpilot:d05cb31e2e916fba41ba8167030945f427fd811b
* bump opendbc
* bump opendbc
* bump opendbc
* bump opendbc
* bump opendbc
* sunnypilot: remove Qt
* cabana: revert to stock Qt
* commaai/openpilot:5198b1b079c37742c1050f02ce0aa6dd42b038b9
* commaai/openpilot:954b567b9ba0f3d1ae57d6aa7797fa86dd92ec6e
* commaai/openpilot:7534b2a160faa683412c04c1254440e338931c5e
* sum more
* bump opendbc
* not yet
* should've been symlink'ed
* raylib says wut
* quiet mode back
* more fixes
* no more
* too extra red diff on the side
* need to bring this back
* too extra
* let's update docs here
* Revert "let's update docs here"
This reverts commit 51fe03cd51.
* del snpe
* reset min for safety catch as we killed snpe
* uhhh
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* checkpoint
* door states, notes
* updates
* not worth it yet
* wordsmith
* more
* more reverse engineering script content
* Revise stationary ignition-only test steps
Updated the steps for stationary ignition-only tests to include closing the driver's door and fastening the seatbelt before pressing the accelerator and brake pedals.
* fix numbering
refactor(sunnylink): defer `SunnylinkApi` initialization to function scope
- Moved `SunnylinkApi` object creation into individual functions as needed.
- Prevents unnecessary initialization when the object isn't used.
* sunnylink: add statsd process and related telemetry logging infrastructure
- Introduced `statsd_sp` process for handling Sunnylink-specific stats.
- Enhanced metrics logging with improved directory structure and data handling.
* sunnylink: re-enable and refine stat_handler for telemetry processing
- Reactivated `stat_handler` thread with improved path handling.
- Made `stat_handler` more flexible by allowing directory injection.
* statsd: fix formatting issue in telemetry string generation
- Corrected missing comma between `sunnylink_dongle_id` and `comma_dongle_id`.
* update statsd_sp process configuration for enhanced readiness logic
- Modified `statsd_sp` initialization to include `always_run` alongside `sunnylink_ready_shim`.
- Ensures robust process activation conditions.
* refactor(statsd): enhance and unify StatLogSP implementation
- Replaced custom `StatLogSP` in sunnylink with centralized implementation from `system.statsd`.
- Ensures consistent logic for StatLogSP handling across modules.
* fix
* refactor(statsd): add intercept parameter to StatLogSP for configurable logging
- Introduced optional `intercept` parameter to `StatLogSP` to manage `comma_statlog` initialization.
- Updated usage in `sunnylink` to disable interception where unnecessary.
* Dont complain
* feat(statsd): add raw metric type and SunnyPilot-specific stats collection
- Introduced `METRIC_TYPE.RAW` for base64-encoded raw data metrics.
- Added `sp_stats` thread to export SunnyPilot params as raw metrics.
- Enhanced telemetry handling with decoding and serialization updates.
* refactor(statsd): improve `sp_stats` error handling and param processing
- Enhanced exception handling for `params.get` to prevent crashes.
- Added support for nested dict values to be included in stats.
* refactor(statsd): adjust imports and minor code formatting updates
- Updated `Ratekeeper` import path for consistency with the `openpilot` module structure.
- Fixed minor formatting for improved readability.
* refactor(statsd): update typings and remove unused NoReturn annotation
- Removed unnecessary `NoReturn` typing for `stats_main` to simplify function definition.
- Adjusted `get_influxdb_line_raw` to refine typing for `value` parameter.
* cleanup
* init
* init
* slightly more
* staticmethod
* handle them all
* get them models
* log with route
* more
* car
* Revert "car"
This reverts commit fe1c90cf4d.
* handle capnp
* Revert "handle capnp"
This reverts commit c5aea68803.
* 1 more time
* Revert "1 more time"
This reverts commit a364474fa5.
* Cleaning to expose wider
* feat(interfaces, statsd): log car params to stats system
- Added `STATSLOGSP` import and logging to capture `carFingerprint` in metrics.
- Improved error handling in `get_influxdb_line_raw` for robust metric generation.
* refactor(interfaces): streamline car params logging to stats
- Simplified logging by directly converting `CP` to a dictionary.
- Removed legacy stats aggregation for clarity.
* feat(sunnylink): enable compression for stats in SunnyLink
- Added optional compression for stats payload to support large data.
- Updated `stat_handler` to handle compression and base64 encoding.
* fix(statsd): filter complex types in `get_influxdb_line_raw`
- Skips unsupported types (dict, list, bytes) to prevent formatting errors.
- Simplifies type annotation for `value` parameter.
* fix(statsd): use `json.dumps` for string conversion in `get_influxdb_line_raw`
- Ensures proper handling of special characters in values.
- Prevents potential formatting issues with raw `str()` conversion.
* refactor(interfaces, statsd): update parameter keys for stats logging
- Renamed logged keys for better clarity (`sunnypilot_params` → `sunnypilot.car_params`, `device_params`).
- Ensures consistency across data logs.
* bet
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* Use sunnypilot CARS.md, update number of supported cars, add comma
* Update device reference
* Update discord links to forum links
* Update references to -c3-new branches and release
* Update broken link to branches table
* Update README.md
---------
Co-authored-by: DevTekVE <devtekve@gmail.com>
* sunnylink: introduce community popup with QR code embedding
- Added `SunnylinkCommunityPopup` widget to promote the sunnypilot Community Forum.
- Integrated a QR code generator and display for quick access.
- Updated `WiFiPromptWidget` to include a "Learn More" button triggering the community popup.
* sunnylink: adjust community popup styling for better layout
- Reduced font size of description text slightly for consistency.
- Decreased QR code dimensions to improve visual balance.
* Making more space out of thin air
* sunnylink: update community references to use forum links
- Replaced Discord links with Community Forum URLs for better alignment.
- Improved clarity in sponsorship instructions.
* sunnylink: update uploader button logic to support novice tier and above
- Adjusted the enable condition to include SponsorTier::Novice and above.
* sunnylink: improve uploader button visibility and accessibility logic
- Made uploader button conditionally visible based on user tier and settings.
- Clarified button label to specify testing purposes only.
* ci: use environment variable for PR label in query
- Replaced static `PR_LABEL` references with `${{ env.PR_LABEL }}` for consistency.
- Ensures flexibility and reduces hardcoded values in the workflow.
* does this work better?
* fuck this
* aight
* ci: integrate Discourse notifications and refactor notification logic
- Replaced Discord webhook notifications with Discourse topic updates.
- Introduced reusable `post-to-discourse` composite action.
- Added `test-discourse.yaml` workflow for debugging and verification.
* ci: adjust notification dependencies and prepare_strategy reference
- Updated `notify` step to depend on `prepare_strategy` instead of `build`.
- Adjusted variable references to use `prepare_strategy` outputs.
* Forcing debug
* ci: update environment variable references and add commit information
- Switched `PUBLIC_REPO_URL` source to environment variable for consistency.
- Added commit SHA variables to enhance template generation logic.
* more tweaks!
* more tweaks!
* bad bot lmao
* Test?
* i mean....
* i mean....
* getting there
* testing the if
* testing the if
* ci: re-enable notify steps for prebuilt workflow
- Uncommented `build` and `publish` dependencies.
- Restored conditional logic to trigger only for relevant events.
* ci: enhance Discourse action to support new topic creation
- Added support for creating new topics with `category-id` and `title`.
- Improved input validation and response handling for flexibility.
* ci: improve conditions for prebuilt workflow notifications
- Refined `if` clause to ensure branches in `DEV_FEEDBACK_NOTIFICATION_BRANCHES` are targeted.
- Adjusted logic for accurate topic ID mapping in Discourse integration.
* forgot to rename
* Update developer_panel.cc
Changed mentions of "openpilot Longitudinal Control" to "sunnypilot Longitudinal Control" to align with other UI elements pointing users towards enabling "sunnypilot Longitudinal Control"
* Update warning message for longitudinal control
* more
* a bit more
* slightly more
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* Speed Limit Assist: Disable for Tesla in release
* add test
* unused
* use constant
* eh
* flip
* universal it
* check release state and align in tests
* use this
* eh
* update changelog
* Speed Limit Assist: Disable for Rivian
* desc
* changelog
* Speed Limit Assist: Disable for Tesla in release
* add test
* unused
* use constant
* eh
* flip
* universal it
* check release state and align in tests
* use this
* eh
* update changelog
* add rest of langs
* unifont
* all langs are supported
* add japanese translations
* fix strip!
* add language name chars
* use unifont in lang selection
* add korean
* test all langs
* doesn't work
* unifont font fallback for multilang
* add ar translations
* fix labels not updating until scrolling
* t chinese
* more chn
* we already default
* wrap
* update
* fix thai
* fix missing chinese langs and all are supported!
* clean up
* update
* ??? mypy r u ok ???
* fix default option font weight
* it's adversarial
* try 2
* just do this
* kinda works but doesn' tmatch
* fine
* qt is banned word
* test
* fix test
* add elide support to Label
* fixup
* Revert "add elide support to Label"
This reverts commit 28c3e0e7457345083d93f7b6a909a4103bd50d55.
* Reapply "add elide support to Label"
This reverts commit 92c2d6694146f164f30060d7621e19006e2fe2df.
* todo
* elide button value properly + debug/stash
* clean up
* clean up
* yep looks good
* clean up
* eval visible once
* no s
* don't need
* can do this
* but this also works
* clip to parent rect
* fixes and multilang
* clean up
* set target branch
* whops
* fix multilang dialog height
* split to file
* stash
* Revert "stash"
This reverts commit deb4239fe69f0260420fad03f2350e622e31542f.
* add updater
* add files
* stuff
* try
rev
* stash
* works!
* works!
* this should be the flow?
* cursor wrapping -- it missed entire sections, changed formatting, and didn't use trn properly!!!!!!!!!!!!!!!!!
* update translations
* learned my lesson
* this should be the one thing it's good at
* update trans
* onroad wrap
* spanish
* rename
* clean up
* load all
* Revert "load all"
This reverts commit 6f2a45861c914ffb9d40a5edd15751afd798d614.
* jp translations
* try jp
* Revert "try jp"
This reverts commit d0524b10110104baafcdc1ec385c3d57bc5ef901.
* remove languages we can't add rn
* tr
* pt and fr
* ai cannot be trusted
* ai cannot be trusted
* missing trans
* add fonts
* Revert "remove languages we can't add rn"
This reverts commit 73dc75fae2b9e347d867b6636dab6e2b5fe59da7.
* painfully slow to startup
* only load what we need
* Reapply "remove languages we can't add rn"
This reverts commit 52cb48f3b838520a421f9b90e5ea4409c27d4bd0.
* add system
* that's sick that this just works (dynamic)
* fix description falling back to first str + support callable titles in list items
* device is now live!
* make firehose live
* developer
* network live
* software live
* and that
* toggles live
* regen
* start to clean up gpt
* revert op sans
* bruh
* update translations
* rm old script
* add noops for descriptions to fix translating away from non-english after startup
* missing de
* do filtering in multilang.py
* clean up
clean up
* codespell: ignore po
* fix update
* should not depend
* more live
* sidebar and offroad alert panel live
* fix issues with offroad alerts
* fix firehose live
* fix weird tr("") behavior
* sh key live bugfix
* setup.py live
* update
* update
* no fuzzy matching -- breaks dynamic translations
* rm this
* fix calib desc live trans
* change onroad
* rm dfonts
* clean up device
* missing live
* update
* op lint
* not true
* add to gitignore
* speed up startup by reducing chars by ~half
* fix scons
* fix crash going from qt
* preserve original lang
* cancel kb live translate
* no preserve
* fix lint
* version: a new beginning
* changelog
* singular
* show ours
* actual
* readjust
* updated
* more
* official spelling
* more
* sync
* fix
* send it
* push
* we never had this lol
* syncs
* fix multilang dialog height
* split to file
* stash
* Revert "stash"
This reverts commit deb4239fe69f0260420fad03f2350e622e31542f.
* add updater
* add files
* stuff
* try
rev
* stash
* works!
* works!
* this should be the flow?
* cursor wrapping -- it missed entire sections, changed formatting, and didn't use trn properly!!!!!!!!!!!!!!!!!
* update translations
* learned my lesson
* this should be the one thing it's good at
* update trans
* onroad wrap
* spanish
* rename
* clean up
* load all
* Revert "load all"
This reverts commit 6f2a45861c914ffb9d40a5edd15751afd798d614.
* jp translations
* try jp
* Revert "try jp"
This reverts commit d0524b10110104baafcdc1ec385c3d57bc5ef901.
* remove languages we can't add rn
* tr
* pt and fr
* ai cannot be trusted
* ai cannot be trusted
* missing trans
* add fonts
* Revert "remove languages we can't add rn"
This reverts commit 73dc75fae2b9e347d867b6636dab6e2b5fe59da7.
* painfully slow to startup
* only load what we need
* Reapply "remove languages we can't add rn"
This reverts commit 52cb48f3b838520a421f9b90e5ea4409c27d4bd0.
* stash!
* rm
* Revert "stash!"
This reverts commit 31d7c361079a8e57039a0117c81d59bf84f191c7.
* revert this
* revert that
* make this dynamic!
* device
* revert
* firehose
* stuff
* revert application
* back
* full revert
* clean up
* network
* more system
* fix dat
* fixy
* torque gains not car specific
* remove opendbc interfaces longitudinal control kf field assignment that makes hitl test fail
* typo
* another typo
* bump
* bump openbc
* update ref
---------
Co-authored-by: felsager <d.felsager@gmail.com>
* ui: update ICBM-related settings handling
* oops
* oops
* single location
* some more
* fix cruise toggles
* always init true
* check this
* nah
* should be this
* Speed Limit Assist: update active event handling
* ok no more for non pcm long it was annoying
* 5 seconds preActive for non pcm long now
* Revert "5 seconds preActive for non pcm long now"
This reverts commit dfcc601035.
* dynamic alert size
* do the same here
* lint
* E2E Helper: universal state machine
* not used
* rename
* 10 frames for both
* time based
* magic
* lead depart: only arm if we have a confirmed close lead for over a second after allowing alert
* less
* shorter trigger
* lol
* always update
* resize & reposition
* Apply suggestion from @sunnyhaibin
* sir, this is Wendy's
* this is still a Wendy's
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
- Implemented a new toggle for enabling Dynamic Experimental Control (DEC) in longitudinal settings.
- Removed previous implementation for DEC from general settings.
- Updated accessibility based on longitudinal control status.
* hmm can do yeidl approach
* clean up
* clean up
* flip
* and add paired + prime
* sort and add update params
* try
* all should have branch name
* test
* clean up
* add offroad alert to update screen
* Subaru: Stop and Go auto-resume support
* bump
* bump
* fix
* bump
* fix init
* wat
* use just standstill for now
* Revert "use just standstill for now"
This reverts commit f72cce6892.
* bump
* bump
* fix it
* only send at 10
* bump
* fix type
* forget about planner resume, it sucks
* try to send off_accel
* still need it
* always send
* disable safety checks for now
* same
* more
* all the time for both
* don't need i guess
* bump
* try 15 frames per try
* all should have it
* try 3 for all
* use throttle for all preglobal?
* bump
* bump
* separate thresholds between preglobal and global
* longer wait before sending
* shorter time but immediately resend
* quick
* new timeout
* about to cry
* same thing but another try
* no need
* round 3
* try 1.4
* lower!
* 1.2
* last try
* beta asf
* bump
* refactor: move to sp ui
* pr suggestion
* no need to check pcm just oplong
* no color, big front, long check
* Fix Rainbow Mode & Y Positioning
* Move param to uiscene
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
Co-authored-by: nayan <nayan8teen@gmail.com>
* UI: Make Always Offroad more accessible
* conditional - based on offroad
* no need to delete
* account for always offroad
* fix offroad transition
* do this inside updateState on every invoke
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* remove msaa artifacting by heavily reducing segments and match radius
* always draw set speed with '-' like qt
* clean up
* match qt behavior for rivian
* scroll up on hide
* switch to show
* dismiss descriptions too!
* all is show
* all is show
* clean up
* visible items helper
* Revert "visible items helper"
This reverts commit e64f05b69155483aa0f3d74bd511f5d7c1ecfb79.
* reset
* this is all cursor
* also cursor
* inline reset calib
* calib desc
* way better
* huh
* clean up
* rcvr
* stash changes to change params
* Revert "stash changes to change params"
This reverts commit ee998f04c4235ed20493b83e35c9f28e182d89b0.
* here's everything
* just the dev part
* same for exp mode!
* use rich
* fix br not working in p
* html height needs to be different than content/text rect
* fix confirmation
* fix
* fix 2.5s lag
* clean up
* use correct param
* add offroad and engaged callback too
* nl
* lint
* first pass by cursor
* fix
* tell it what's good
* stash
* desc
* clean up junk
* alpha long can't use onroad cycle again due to faults
* lint
* fix kb
* start on exp mode
* more
* fmt
* rm
* 2nd try
* almost there
* clean up
* and this
* fmt
* more
* exp is colored when active
* move out, and rm redudnant self.state
* revert html changes for now
* fix untagged text inheriting previous tag
* why would this be unknown
* here too
* update live with car
* clean up + refresh toggles on showEvent + catch from cursor about setting desc if no carparams
* not sure why
* fix disengaged re-enabling locked toggles
* get blinker state from car_state
* Draw turn signals when blinker is active
* reloacted and resized turning signals
* add turn signal display setting
* Lowered Blink Frequency
* Moved x and y Offsets to drawing Function
Co-authored-by: Nayan <nayan8teen@gmail.com>
* Grouped Settings
* Moved blinking Logic to pulseElement Function
Co-authored-by: Nayan <nayan8teen@gmail.com>
* Improved Blinker Size and Position
* Get laneChangeBlocked Event from onroadEvents
* Draw Blinker red if laneChangeBlocked event is set
* Revert "Get laneChangeBlocked Event from onroadEvents"
This reverts commit 4310931b6cd59aed22119c2b4b558f09d3ad9c90.
* Get left and right Blindspot
* Replaced laneChangeBlocked by Blindspot checks
* slight optimization
* more refinement
---------
Co-authored-by: Nayan <nayan8teen@gmail.com>
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* made LiveStreamVideoStreamTrack use system time to calculate pts
* fixes as requested
* Align panda submodule with master (panda@615009c)
* made loggerd accept a run time env variable to pick stream bitrate
* added /notify endpoint to send json to all session's data channel
* fixed static analysis error
* adapted webrtc stream test to new pts calculation method
* fixed static erro
* fixed wrong indent
* fixed import order
* delete accidental newline
* remove excess spaces
Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>
* remove excess spaces
Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>
* changed exeption handling based on review
* fixed typo on exception handling
---------
Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>
* enhance sunnylink fault handling and parameter checks
- Added `SunnylinkTempFault` to handle temporary registration issues.
- Updated methods to account for new fault state, improving robustness.
- Improved uploader logic by considering metered network restrictions.
* maybe it was overkill
* Lol, kinda important
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
Reapply "sunnylink: enhanced param keys fetch with data type" (#1316)"
This reverts commit 282a8b093d.
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* UI: Make Always Offroad more accessible
* conditional - based on offroad
* no need to delete
* account for always offroad
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* actually works
* fix shader grad
* switch
* our own triangulate
* this is amazing
* ok 100 is too much for 3x. 10?
* fix colors
* review intern chad
* fmt
* rm for the line count
* bye
* rm
* see the diff
* start to revert nulleffect
* fix
* fix
* always feather
* aliasing doesn't seem necessary
* aliasing doesn't seem necessary
* fix lane lines disappearing halfway up due to buggy deduping -- very simple triangulation function takes ~same CPU time + same GPU utilization on PC (nvidia-smi)
* remove old
* even simpler triangulate
* this is useless
* more revert
* split color out again
* clean up ai bs
* back to original names
* more clean up
* stop it
* this limiting logic split out feels more even // less super dense
* typing
* clean up a little
* move to get grad color
* RM
* flip
* document
* clean up
* clean up
* clean
* clean up
* not a "state"
* clean up
* that did nothing
* cmt
* maybe
Revert "fuck"
This reverts commit cb072a73b1b44ac3abeb50196be0956f3b7a7e14.
Revert "i dunno anymore"
This reverts commit 4d3c84ecb0e7830a552237e824995bc255007a1b.
i dunno anymore
fuck
* maybe
* try to fix the pipelines
relock after inplace metadrive update (#36256)
* relock after inplace metadrive update
* Revert "relock after inplace metadrive update"
This reverts commit 18193ffe34b66085e18605e6c9289ddcd658844d.
* just the hash
(cherry picked from commit 4d53a26a06)
Co-authored-by: Armand du Parc Locmaria <adpl33@gmail.com>
* debug
* hacks everywhere but kind of works
* by font
* fix sidebar
* stash
* test update
* just use a const
* just use a const
* better
* clean up
* fix label
* simplify
* gpt5 is yet again garbage
* rm that
* clean up
* rm
* blank
* clean up
* I really don't like this but shrug
* fix
* fix experimental text
* come on
* try
* better
* better
* multiple places!
* debug
* works
* temp
* whoops
* wonder if this wortks
* ah need this!
* wtf is this when deleted?
* another day no modal show event
* clean
* fix
* ugh
* need this
* stash
* ok chatter is useful for once
* draw text outside tags
* hmm
* undo that shit
* i don't like this chatgpt
* Revert "i don't like this chatgpt"
This reverts commit 5b511911d81242457bfb5fc808a9b9f35fe9f7a2.
* more robust parsing (works with missing tags, markdown.py actually had bug) + add indent level
* the html looks weird but is correct - the old parser didn't handle it
* clean up
* some
* move out
* clean up
* oh this was wrong
* draft
* rm that
* fix
* fix indentation for new driving model
* clean up
* some clean up
* more clean up
* more clean up
* and this
* cmt
* ok this is egregious mypy
* this wasn't used
* override text size and color
* render untagged text as paragraph
* and indent
* cache expensive height calc
* fmt
* fix that
* unclear if this is even needed
* and that
* huh
* debug
* Revert "debug"
This reverts commit 7d446d2a37a96e6bd1001c566d4f8e8f417f8fb7.
* relock after inplace metadrive update
* Revert "relock after inplace metadrive update"
This reverts commit 18193ffe34b66085e18605e6c9289ddcd658844d.
* just the hash
* refactor: enhance parameter handling and add new parameter retrieval method
- Refactored `get_param_as_byte` for better modularity and added `_to_bytes` helper function.
- Introduced `getParamsAllKeysV1` to retrieve all keys with enhanced metadata.
* refactor: update parameter handling and response structure in sunnylink
- Modified `_to_bytes` to accept `bytes` type for improved type consistency.
- Adjusted response keys in `sunnylinkd` for clarity.
* fix: update `get_param_as_byte` to use corrected method for default values
- Replaced `get_default` with `get_default_value` for accurate param retrieval.
- Ensures consistent handling of default parameter values.
* refactor: remove redundant `None` check in `sunnylinkd.py`
- Streamlined parameter iteration by eliminating unnecessary `None` validation.
- Simplifies logic for constructing `params_dict`.
* refactor: streamline `sunnylinkd` response by removing redundant `keys_v1` field
- Simplified return structure by excluding unused `keys_v1` key.
- Reduces response payload for improved efficiency.
* refactor: split `getParamsAllKeys` into distinct functions for improved clarity
- Added `getParamsAllKeysV1` to preserve original metadata-rich behavior.
- Revised `getParamsAllKeys` to return a simplified list of parameter keys.
* style: remove extraneous newline in `sunnylinkd.py`
- Ensures consistent formatting and adheres to style guidelines.
* Test
* proces in AN and WM
* clean
* ban api
* fix
* fiix
* fix pairing dialog
* cleanup
* fix multi action button hard to click
* fix
* fix right margin of multi action
* clean up
* Dockerfile.openpilot_base use UV_PROJECT_ENVIRONMENT
* Revert "Dockerfile.openpilot_base use UV_PROJECT_ENVIRONMENT"
This reverts commit 3725e54ce0727077ca4347d24ca38e25d5864d47.
* Reapply "Dockerfile.openpilot_base use UV_PROJECT_ENVIRONMENT"
This reverts commit 11b04f57acb9c81fcc5a22a6a6d78d666c59ca6c.
* use uv run to pick up correct ppath
* Tesla: MADS full support with VEHICLE bus harness
* bump
* need new arg
* uh
* block cruise main for these cars still
* continue to block tesla
* oops
* always allow for tesla
* init
* fix
* event
* UI
* events..for real
* SP
* ugh
* toggles
* read params first
* stoopid it is
* fix green light img
* fix green light image. for real this time
* move events to longitudinal_planner
* move events to longitudinal_planner
* move e2e alerts to separate class
* fix
* fixxxxxxx
* blinky blink
* blinky blink
* refactor
* more refactor
---------
Co-authored-by: Kumar <36933347+rav4kumar@users.noreply.github.com>
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* auto attempt
* gpt5
* Revert "gpt5"
This reverts commit 556d6d9ee4d53aca0f4612023db6cfb2bed7ce29.
* clean up
* fixes
* use raylib
* fixes
* debug
* test update
* more
* rm
* add value to button like qt
* bump
* bump
* fixes
* bump
* fix
* bump
* clean up
* time ago like qt
rm
* bump
* clean up
* updated can fail to respond on boot leading to stuck state
* fix color
fix
* bump
* bump
* add back
* test update
* no unknown just ''
* ffix
* init
* fix
* event
* UI
* events..for real
* SP
* ugh
* toggles
* read params first
* stoopid it is
* fix green light img
* fix green light image. for real this time
* move events to longitudinal_planner
* move events to longitudinal_planner
* move e2e alerts to separate class
* green light alert only for this PR
* fix
* fixxxxxxx
* blinky blink
* blinky blink
* slight cleanup
* only used for params
* a bit more
* only when long is not engaged
* too long
* update description
* always 3 seconds if not moving
* initialize in constructor instead
* less
* rename
* always init at 0
---------
Co-authored-by: Kumar <36933347+rav4kumar@users.noreply.github.com>
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* vibing can be good
* and listview
* rm that
* html render
* text.py
* ssh keys
* updater w/ Auto
* wow gpt5 actually is better
* well this is better
* huh wifi still doesn't work
* lfg
* lint
* manager waits for exit
* wait a minute this changes nothing
* this will work
* whoops
* clean up html
* actually useless
* clean up option
* typing
* bump
* rm that
* almost
* yess
* some work
* more
* todo
* okay viber is good once in a while
* temp
* chadder can't do this
* revert
* this was broken anyway
* fixes
* mouse wheel scroll
* some clean up
* kinda works
* way better
* can tap to stop
* more clean up
* more clean up
* revert last mouse
* fix
* debug only
* no print
* ahh setup.py fps doesn't affect DEFAULT_FPS ofc
* rest
* fix text
* fix touch valid for network
* init
* bump
* bump
* bump
* recheck openpilot long availability
* bump
* bump
* bump
* bump
* bump
* just base for now
* bump
* bump
* bump
* bump
* flipped
* apparently it's yucky, reverting most
* bump
* need to add for toyota
* should've been remove
* flipped
* bump
* no way
* fix
* test sdsu distance
* final tuning for pedal
* bump
* init
* onroad brightness control
* new icon
* update touch handlling
* don't touch me
* now i feel every touch
* resolve review comments
* tired of this shit
* ugh
* translate
* duplicate
* fix
* adjust
* update param in the same function
* flip
* format
* reorder
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* init
* onroad brightness control
* new icon
* update touch handlling
* don't touch me
* now i feel every touch
* resolve review comments
* tired of this shit
* ugh
* just panel for now
* more
---------
Co-authored-by: nayan <nayan8teen@gmail.com>
* formatting
* more
* create directory if does not exist
* mypy my bt
* policy param catch exceptions
* handle all params with exceptions
* more
* single method
* define types in init
* rename
* simpler op enabled check
* more mypy stuff
* rename
* no need for brake pressed
* don't reset if gas pressed
* type hint all
* type hint all
* back to upstream
* in another pr
* no longer need data type
* qlog
* slc in another pr
* use horizontal accuracy
* use horizontal accuracy
* set core affinity for all realtime processes
* unused
* sort
* unused
* type hint and slight cleanup
* from old implementation
* use directly
* combine pm
* slight more cleanup
* type hints
* even more type hint
* Revert "slc in another pr"
This reverts commit 3a6987e6
* Revert "in another pr"
This reverts commit a29bccff12.
* rebump
* no need to check alive
* use it directly
* fix test
* refactor
* use gps data directly
* quote...?
* lint
* fix tests
* use CC.longActive
* user confirm in another PR
* rename
* fix import
* params fix
* no more
* fix
* drop new state machine for now
* more fixes
* internalize output
* unused
* rearrange
* auto draft
* rename
* this
* no
* no need
* use existing
* wrong cruise speed
* fix
* not used for now
* Revert "not used for now"
This reverts commit f0083d6241.
* some
* use frames instead
* split speed limit resolver out of slc
* no need to pass sm
* fix params
* test init
* use frame instead of time
* track session
* some tests
* too limiting
* bump
* always reset state
* end session if long_active but slc inactive at any given time
* off
* no warning in this PR
* no speed factor engage type yet
* wide open
* no
* introduce disabled, no longer transitions at inactive
* fix tests
* no more tempinactive
* clean
* rename
* offset default > off
* new tests, fixes controller
* more tests
* not really needed yet
* lint
* fix
* some more tests
* wrap
* more
* more
* use vCruiseCluster for set speed
* init better
* finish it up
* no
* typo
* one method state machine
* refactor preactive timeout check
* refactor new session check
* directly return statuses
* comments
* v_target
* refactor speed limit resolver
* turn off debug
* more resolver refactor
* no longer needed
* lint
* more lint
* fix
* move around
* fix events
* update event
* already happens while in enabled
* add carstateSP
* less
* Speed Limit Control -> Speed Limit Assist
* in another PR
* more rename
* overriding state
* fix
* make sure to return the correct type
* sync with latest
* housekeeping
* use v cruise cluster instead
* fix var
* show it in UI!
* actually show it
* update event texts
* todo
* no override for now
* wrong timer!
* add vtarget and atarget
* fix
* handle no speed limit events
* fix size
* unused
* skip preActive if init max speed was already reached
* display last known speed limit and its state with SLA
* pending event
* much shorter disable guard
* update events
* convert max init for metric
* fix even if unused atm
* just use it
* red for all
* not disabled
* rename
* 10s pre active
* kumar wants it higher, blame him
* fix
* pcm long only
* some fixes
* rename
* use consolidate method to evaluate set speed status
* init non pcm cruise
* tests
* disable non pcm long state machine for now
* lint
* lint
* let the non PCM party begins
* fix event
* update event
* use speed limit final last
* only do direction checks if preActive
* use resolver
* use it directly
* no longer applies
* do it globally
* non pcm long: adapting or pending unused
* use button events instead of raw vals
* need to initialize
* move
* what?
* what #2???
* cst!
* circular
* slight fixes for tests
* change up checks for user confirm
* get buttonEvents at 100 hz and process for 20 hz consumption
* get v cruise cluster from outer loop
* Revert "get v cruise cluster from outer loop"
This reverts commit be8068e8ab.
* Revert "get buttonEvents at 100 hz and process for 20 hz consumption"
This reverts commit a739d4d437.
* don't need
* do not allow target speed confirm if inactive
* do not allow preActive if no valid speed limit
* gimme them arrow pls
* less
* descriptive direction
* fix event
* update cs in 100 hz
* Revert "don't need"
This reverts commit 1eec763be7.
* missed
* wrong
* stop
* throw them to helpers class
* property
* hold speed behavior changes
* abstract it
* use converted to check last set speed change
* Revert "do not allow target speed confirm if inactive"
This reverts commit 9840e74e
* pre active too short
* slight fixes
* fix tests
* linty lint
* speed limit changed hold timer for non pcm long
* should be 0
* less loopy
* some gates
* special sauce for sla
---------
Co-authored-by: nayan <nayan8teen@gmail.com>
Co-authored-by: DevTekVE <devtekve@gmail.com>
* fix regulatory
* debug slow loading
* easy gather step coords
* gotcha
* and fix
* dm option
* fix final
* fixes
* progress bar!
* "vibe coding is great"
* wtf gpt5
* jfc
* hand crafted >> vibe
* it's slow so only load images if we're doing any kind of training
* tf
* format
* clean up
* clean up
* no float
* cmt
* more clean up
* clean up
* eww
* rm
* no debug
* match y
* clean that up
* here too
* windows
* add raylib ui test
* match qt
* exe
* vibing is epic
* this is epic
* format
* add more settings
* fix to actually use raylib
* add kb
* global
* pair
* rm cmts
* show event
* this is so stupid
clean up
* clean up
* rename dir
* clean up
* no more vibe
* rm
* ugh it's always slightly different for no reason
* nvm region is actually broken
* 1l
* show for unknown
* use Button to make clicking work
* close on pair
* close on pair
* make widget!
* dynamic pairing btn
* whyyy
* clean up
* can do this
* this button is also hard to tap
* get vibing
* simplify
* vibing is bad
* simplify
* fix that
* now update
* clean up
* last two
* cell is UpdateUnsaved so we don't need to disable
* we only need actions
* we only need actions
* sort
* stuff
* dont deactivate
* clean up
* clean up
* more
* ipv4 fwd
* warns
* fixz
* rm
* clean up
* one return point
* format
* top
* it's all common
* never getting fixed
* it's just tici
* reorders
* qcom2 -> tici
* Revert "qcom2 -> tici"
This reverts commit f4d849b2952cb0e662975805db6a1d32511ed392.
* Reapply "qcom2 -> tici"
This reverts commit 58b193cb8de872830f8a7821a339edca14e4a337.
* is tici
* lil more
* Revert "is tici"
This reverts commit a169be18d3fdcb3ef8317a63a89d8becadabfad8.
* Revert "Reapply "qcom2 -> tici""
This reverts commit 26f9c0e7d068fc8a1a5f07383b3616e619cd4e8c.
* qcom2 -> __tici__
* lil more
* mv lenv
* clean that up
* lil more]
* fix
* lil more
* match style
* all this was not naught
* cool can do this
* fix toggle callback - also not for naught
* always process callbacks
* toggle stuff
* cleaner
* tethering password
* clean up
* todos for later
* this is fineee
* add metered options
* wifi metered button
* add hidden network buutton and fix instant modal to modal
* damped filter
* Revert "damped filter"
This reverts commit f9f98d5d708fb15cf1ebef4bdace577f0e347658.
* fix metered toggle when disconnected
* fix tethering enabled
* ohh
* fix keyboard title
* disable edit button temp
* move here
* proper disable
* clean up
* more
* move for loop into enqueue function
* flippy
* got more :(
* todo
* clean up
* mypy
* rename
* todo
* rename
* again
* again
* format
* init
* desc
* llk welcome back
* more
* new param to write
* update mapd
* no migration
* no refactor for now
* exec
* rename
* bearing
* fix test
* lint
* ui: more speed limit improvements
- show speed limit offset with last valid speed limit
- show last valid speed limit if current speed limit is not valid
* rename
* round it
* update logic
* in its own var and 5 frames now
* new offset vals
* slightly more
* apply suggestions
* Update Python packages
* not available anymore
* also this
* also this
* maybe?
* version
* try
* Revert "version"
This reverts commit 9ac4401b9ca59677b82736faff8baf66861df5f2.
* revert
* cffi
* issue
* comment
---------
Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>
* less for now
* always on and fix conv
* update api
* missed
* fix convert
* only draw when decreasing, seems like a bug from mapd
* use frame check, otherwise too jumpy
* only update when mapd updates
* count up and down
* introduce toggle
* more ui
* slightly wider
* desc
* rename
* slight cleanup
* fix offset position
* more vienna fix
* fix ahead alignment
* road name in another PR
* cleanup
* single place
* adjust ahead distance display
* cleanup
* Near
* bump it
* cleanup logic
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* init
* some fixes
* move
* more
* old navd helpers
* bring back cereal
* fix linting
* more
* add to cereal first
* sp events
* lint
* implement in long plan
* fixme-sp
* refactor state machine
* wrong state
* start refactor controller
* some type hints
* init these
* enable debug print
* ui? ui!
* print them out
* fix spinner import
* fix path
* let's use gps chips directly for now
* service missing
* publish events
* no nav for now
* need to sub
* no car state speed yet
* missed event
* Car: `CarStateSP`
* fix tests
* bring back car state speed limit
* fix
* use old controller for now
* fix
* fix source
* type hints
* none for now
* formatting
* more
* create directory if does not exist
* mypy my bt
* policy param catch exceptions
* handle all params with exceptions
* more
* single method
* define types in init
* rename
* simpler op enabled check
* more mypy stuff
* rename
* no need for brake pressed
* don't reset if gas pressed
* type hint all
* type hint all
* back to upstream
* in another pr
* no longer need data type
* qlog
* slc in another pr
* use horizontal accuracy
* use horizontal accuracy
* set core affinity for all realtime processes
* unused
* sort
* unused
* type hint and slight cleanup
* from old implementation
* use directly
* combine pm
* slight more cleanup
* type hints
* even more type hint
* Revert "slc in another pr"
This reverts commit 3a6987e6
* Revert "in another pr"
This reverts commit a29bccff12.
* rebump
* no need to check alive
* use it directly
* fix test
* refactor
* use gps data directly
* quote...?
* lint
* fix tests
* use CC.longActive
* user confirm in another PR
* rename
* fix import
* params fix
* no more
* fix
* drop new state machine for now
* more fixes
* internalize output
* unused
* rearrange
* auto draft
* rename
* this
* no
* no need
* use existing
* wrong cruise speed
* fix
* not used for now
* Revert "not used for now"
This reverts commit f0083d6241.
* some
* use frames instead
* split speed limit resolver out of slc
* no need to pass sm
* fix params
* test init
* use frame instead of time
* track session
* some tests
* too limiting
* bump
* always reset state
* end session if long_active but slc inactive at any given time
* off
* no warning in this PR
* no speed factor engage type yet
* wide open
* no
* introduce disabled, no longer transitions at inactive
* fix tests
* no more tempinactive
* clean
* rename
* offset default > off
* new tests, fixes controller
* more tests
* not really needed yet
* lint
* fix
* some more tests
* wrap
* more
* more
* use vCruiseCluster for set speed
* init better
* finish it up
* no
* typo
* one method state machine
* refactor preactive timeout check
* refactor new session check
* directly return statuses
* comments
* v_target
* refactor speed limit resolver
* turn off debug
* more resolver refactor
* no longer needed
* lint
* more lint
* fix
* move around
* fix events
* update event
* already happens while in enabled
* add carstateSP
* less
* Speed Limit Control -> Speed Limit Assist
* in another PR
* more rename
* overriding state
* fix
* make sure to return the correct type
* just slr in this one
* more
* update
* redundant
* fix
* fix
* lint
* fix
* fix
* match toggle
* fix priority checks
* fix combined source for picking 0 limit
* no need to wrap
* add speed limit offset to resolver
* add speed limit offset
* make sure it displays distance when higher
* Revert "make sure it displays distance when higher"
This reverts commit 15c6834d4e.
* some rename
* translations
* unused for now
* more
* lint
---------
Co-authored-by: nayan <nayan8teen@gmail.com>
Co-authored-by: DevTekVE <devtekve@gmail.com>
* init
* slightly more
* check across all
* publish on CC_SP
* more infra setup
* try it out for HKG for now
* slight cleanup
* oops
* legacy
* send
* actually take over
* expose toggle
* icbm
* need to allow
* fix
* name
* small fixes
* actually send it now
* set default
* use cs is_metric
* offroad only lol
* allow them all
* fix
* send desire as-is
* use stock method
* clean up hysteresis
* speed cluster may be more accurate
* rename
* allow init and resume from pcmCruise
* just send it
* fix
* only allow custom v cruise after no button press at initial enabled
* no hysteresis for now
* fix tests
* fix min check
* only apply to non pcm changes
* add ICBM
* some more ui
* bump
* slight cleanup
* fixup
* cleanup
* type hints
* type hints
* bump
* bump
* bring back hysteresis
* fix ui
* do not spam if overriding or below allowed speed
* Controls: Vision Turn Speed Control
* fix
* Data type temp fix
* format
* more
* even more
* self contain targets
* state cleanup
* fix
* param updates
* no need
* use similar state machine
* raise exception if not found
* new state
* entirely internal
* use long active
* more
* rename and expose aTarget
* rename to SCC-V
* init tests
* slight tests
* expose toggle
* lint
* todo
* remove lat planner sub and mock sm data
* introduce aTarget
* rename
* rename
* update fill_model_msg.py to calculate PLAN_T_IDXS for lanelines and road edges
* sync upstream
* no SCC-V yet
* Revert "no SCC-V yet"
This reverts commit b67281bcac.
* wrap it with SCC main
* leave enabled out of here
* wat
* enabled and active on cereal
* OP long for now, enable for ICBM once merged
* need this
* unused
* let's go hybrid
* fix
* add override state
* update tests
* huh
* don't math here if not enabled
* ui: Smart Cruise Control - Vision (SCC-V) (#1253)
* vtsc-ui
* slight cleanup
* more cleanup
* unused
* a bit more
* pulse like it's hot
* draw only enabled and active
* let's try this for now
* settle
* finalize UI
* brighter color so we blind devtekve
* add long override
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* slight cleanup
* more
* type hints
---------
Co-authored-by: discountchubbs <alexgrant990@gmail.com>
Co-authored-by: Kumar <36933347+rav4kumar@users.noreply.github.com>
* Controls: Vision Turn Speed Control
* fix
* Data type temp fix
* format
* more
* even more
* self contain targets
* state cleanup
* fix
* param updates
* no need
* use similar state machine
* raise exception if not found
* new state
* entirely internal
* use long active
* more
* rename and expose aTarget
* rename to SCC-V
* init tests
* slight tests
* expose toggle
* lint
* todo
* remove lat planner sub and mock sm data
* introduce aTarget
* rename
* rename
* update fill_model_msg.py to calculate PLAN_T_IDXS for lanelines and road edges
* sync upstream
* no SCC-V yet
* Revert "no SCC-V yet"
This reverts commit b67281bcac.
* wrap it with SCC main
* no SCC-V yet
* noqa now
* fix
* OP long for now, enable for ICBM once merged
* type hints
* let's get it straight from carcontrol instead
* not needed
* unused
* add source to track
* we can do this
---------
Co-authored-by: discountchubbs <alexgrant990@gmail.com>
* Add standstill timer to HUD
- Introduced a timer displaying elapsed time when the car is at a standstill.
- Added settings toggle to enable/disable this feature.
- Updated UI elements and related logic to support the standstill timer.
* ruff be happy
* stop screaming
* c stands for not cereal
* slight cleanup
* a bit more cleanup
* unused
---------
Co-authored-by: nayan <nayan8teen@gmail.com>
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* modeld: add laneline_helper for plan X indices calculation
* spacing
* keep type hints
* openpilot
* sunnypilot/models/helpers
add modeld helpers to helpers
* Send it from each fill message
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* Revert "UI: Developer UI (#1233)"
This reverts commit 1bb4ca2547.
* Reapply "UI: Developer UI (#1233)"
This reverts commit b0a77049da.
* QColorConstants is not on device's QT version. Thanks @kumar for the fix
* use play/pause icons
* use monospace font
* x button for delete
* add icons for splitting
* many scaling + scrollbar fixes and niceties
* simplify texture loading code
* refactor: improve parameter handling in sunnylink for robustness
- Updated `get_param_as_byte` to return `None` for nonexistent parameters.
- Enhanced param compression and encoding in `sunnylinkd`.
* refactor: centralize parameter restoration with new helper function
- Added `save_param_from_base64_encoded_string` to handle param decoding and saving.
- Updated backup manager and sunnylinkd to use the new method.
- Improved code readability and reduced duplication in parameter handling logic.
* don't bother
* clean
* modify in place instead of recreating nodes
* don't delete DataTreeNodes and simplify code
* faster: more efficient state tracking, better handler deletion
* jotpluggler!
* demo, executable, fontfile
* calc max and min, numpy, cloudlog
* mypy things
* simplified data.py
* multiprocessed data ingest
* allow verrryyy long search results
* stream in multiprocessed segments
* bug fixes
* simplify and speed up timeseries
* small fixes
* rewrite layout
* resizable layouts
* cleanup
* downsampling
* deque for consistency
* use item_visible_handler
* only build visible UI
* don't delete item handlers, add locks, don't expand large lists
* delete item handlers after a frame
* small data tree improvements
* seperate datatree into its own file
* reset when loading new segments
* fix plot window resizing and recursive split resizing logic
* Rewrite ubloxd in Python
* lil more
* rm from third_party/
* cleanup
* ubx replay
* try this
* back to kaitai
* Revert "ubx replay"
This reverts commit 570bd3d25fbabc590379ce0a9f98d30de55cf1b3.
* update: sunnypilot branch migrations for tici
* block onroad and notify
* type
* check channel type
* update
* ui init
* no search and locked list for tici
* whenever available
* feat: add debugging configurations for replay drive and LLDB attachment
* Add readme with video demo
* clean
* docs: update debugging safety documentation with demo link
* no need for mp4 then added on PR
* Update SConstruct
* bump opendbc
* updating readme
* updating readme
* updating readme
* is this better / worth it?
* final cleanups
* hacky. but does it work?
* Yep that worked!
---------
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* Revert "bugfix: streamline LiveDelay parameter loading with safe handling (#1204)"
This reverts commit 288a5e14da.
* ui: use AlignedBuffer for cereal data processing for Models panel
* align
* separate
* split
* event it
* no more backup
* Revert "no more backup"
This reverts commit fa66ce5e77.
* bump msgq
* add third_party/linux/include/media/msm_vidc.h
* add sde_rotator hw interface
* add msm_vidc hw decoder interface
* update SConscript to build qcom decoder and rotator
* use qcom decoder in replay framereader
* decode directly to NV12 with the correct stride without using the hw rotator
* bump msgq back to master
* don't compile rotator
* cleanup
* works now but much to simplify
* rm signals
* rm header
---------
Co-authored-by: Test User <test@example.com>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* Add model metadata lookup and update desire handling
* Bump selector version to 10
* meh
* Refactor shape mode parameters for desire handling in test buffer logic
* loop more models
* Refactor buffer handling for temporal inputs and streamline desire updates
* Refactor lateral control input handling and remove unused code
* Hotfix for the params stuff until I rework this properly and leverage the new data types
* Revert "Hotfix for the params stuff until I rework this properly and leverage the new data types"
This reverts commit c6031b29d92d3ff5b679ffce3ba53611bb2dba0e.
* refactor: enhance getParams function to support JSON and bytes types with optional compression
* refactor: add TODO for enhancing server support of metadata in sunnylinkd.py
* lint and clean
* refactor: update value handling in getParams to return decoded values for JSON serialization
* refactor: simplify params_dict initialization by removing type hint
* refactor: update response handling in getParams to include JSON serialization of params
* refactor: update response handling in getParams to include JSON serialization of params
* Add to dic types
* refactor: extract get_param_as_byte function for improved parameter handling and fix backup inconsistencies
* cleanup
* ensure error propagates on backup fail
* Add modelDataV2SP and lane turn logic implementation
Note: still need to hook up to other modeld's create unit test, fix stuff, and do the UI for it
* add unit tests for lane turn logic
* Add lane turn desire controls to models panel
* use `events_sp` instead of `events`
* integrate modelDataV2SP messaging to the other modeld controllers
* move this to that
* use min for general population here, on custom branches, change this to max :)
* Update events.py
Co-authored-by: royjr <royjr96@gmail.com>
* Update events.py
Co-authored-by: royjr <royjr96@gmail.com>
* refactor lane turn value control into one method
* Update selfdrive/ui/sunnypilot/qt/offroad/settings/models_panel.cc
* add integration tests for lane turn desire
* 10 updates is possibly more representative of real life
* real objects ofc
* desc: add toggle description for clarity
---------
Co-authored-by: royjr <royjr96@gmail.com>
* feat: add support for copyparty-sfx
* feat: add toggle for Copyparty service in developer panel
* feat: enhance Copyparty configuration with additional volume mounts and options
* Update system/manager/process_config.py
* remove f string
* lint
* init model favorites
* fix fav buttons
* fix blank favs
* switch to ref
* new favs at top
* remove debug prints & add some comments
* button style
* fix current selection
* !@%#$%(@^%$#(@!%#^
* add last update date to folders
* Update to Readme.MD install instructions
This commit changes a few things in the installation guide. I moved the the tables that have the branches and install URLs. I also added a TIP that let's users know that they can install with sunnypilot/staging-c3-new.
* Update README.md with proposed changes from DevTek
Added header text over the legacy branches to bring in separation and let users know they are not recommended.
* bit of change
* Reorganizing a bit more
---------
Co-authored-by: DevTekVE <devtekve@gmail.com>
* ci: add validate-test-on-staging-c3 branch to deployment triggers and enhance stable branch handling
* fix long overdue mistake lol
* ci: add condition to wait for start on push events in build workflow
* Fix extra version identifier
* no need for this, i validated what I needed
* only care for release tags, not any
* fix: update versioning logic to use build date and run number for tagging
* fix: update tagging logic and enhance commit message format in build scripts
* fix: refine tagging condition to exclude tag pushes for stable branches
* fix: add extra version identifier to output for better version tracking
* trying to keep things clean and simple
* bugfix
* ci: disable cancel-in-progress for publish concurrency
* check using var
* typo
* ci: update publish concurrency settings to use dynamic cancel-in-progress flag
* typoooo
* ci: update cancel-in-progress condition for publish concurrency
* ci: enhance publish concurrency handling to queue jobs based on commit SHA
* typos and new commit hash to test cancel in progress
* see if this helps?
* tired of waiting
* ci: add publish concurrency group to deployment configuration
* ci: update publish concurrency handling to improve job queuing and cancellation logic
* ci: output GITHUB_OUTPUT contents for better debugging of publish concurrency
* ci: remove prebuilt output from strategy and streamline GITHUB_OUTPUT handling
* ci: refine publish concurrency handling for flexible job cancellation
- Default `cancel_publish_in_progress` to `true` if undefined in config.
- Adjust concurrency group logic to handle null and true conditions properly.
* another ocmmit shouldnt cancel publish
* ci: enhance job cancellation logic for publish concurrency handling
* ci: add prepare_strategy job for dynamic deploy strategy extraction
* ci: ensure job execution always proceeds on success and skips failure
* ci: improve job execution conditions to handle cancellation and failure states
* ci: enhance versioning logic to support stable and unstable branch differentiation
* ci: add checkout step to ensure code is available for deploy strategy extraction
* ci: add extra version identifier for stable branch environments
* ci: update extra version identifier format for stable branches
* Grammar, oh, grammar.
* test this
* ci: add deploy strategy extraction and refactor publish dependencies
- Introduced `prepare_strategy` step to dynamically extract deployment configurations.
- Adjusted `publish` job to depend on `prepare_strategy` and use its outputs.
* what happens if I do this...
* cleaning
* other test
* ci: update auto_deploy logic in build configuration
* cleaning
* refactor: skip AGNOS update for tici models in launch script
* back to stock on chffrplus
* feat: enhance launch script for Tici model with error handling and fallback
* empty new line pls
* torqued: apply latAccelOffset to torque control feed forward
* test learned latAccelOffset captures roll compensation bias on straight road driving, when the device is not flush in roll relative to the car
* test correct torqued latAccelOffset parameter convergence
* external storage
* fix mountStorage
* fix perms
* works for now
* better
* lagless
* move to sp qt
* orderish
* fix ui crash
* cleanup
* fix format
* offroad only
* debug external storage
* dont care about delete
* just use cloudlog
* show logs if using external storage
* better text
* wipe entire drive
* allow partitionless drive to be formatted
* label while formatting
* this works
* better
* cleaner
* cleaner logs
* keep upstream happy
---------
Co-authored-by: DevTekVE <devtekve@gmail.com>
* dont run by multiple threads at the same time!
* this doesn't work since we rely on is_connected
* Revert "this doesn't work since we rely on is_connected"
This reverts commit 7455b2fe831bf5c9524e8ee71a9966de32a9755a.
* use callback queue to make this thread safe and remove locks (which lag ui thread?)
* woah this works
* no more lock!
* always run signal handler and store callbacks, like qt
* debug
* more
* okay not for now
* combine _get_connections and _connection_by_ssid, closer to qt and not an explosion of GetSettings dbus calls
* debug
* try this
* skip
* len
* skip hidden networks
* actually slower
* stash
* back to 8929f37d495a524d4a996d66b82d4a947fbf4f1c
* clean up
* stasj
* remove one of many classes
* clean up and fix
* clean up
* stash/draft: oh this is sick
* so epic
* some clean up
* what the fuck, it doesn't even use these
* more epic initializers + make it kind of work
* so simple, wonder if we should further 2x reduce line count
* i've never ever seen this pattern b4, rm
* remove bs add niceness
* minor organization
* set security type and support listing and rming conns
* forget and connect
* jeepney is actually pretty good, it's 2x faster to get wifi device (0.005s to 0.002s)
* temp
* do blocking add in worker thread
* add jeepney
* lets finish with python-dbus first then evaluate - revert jeepney
This reverts commit 7de04b11c2285c298bb1ec907782026c795ab207.
and
* safe wrap
* missing
* saved connections
* set rest of callbacks
* skip hidden APs, simplify _running
* add state management
* either wrong password or disconnected for now
* i can't believe we didn't check this...
* disable button if unsupported!!!
* hide/show event no lag hopefully yayay
* fix hide event
* remove old wifi manager
* cache wifi device path + some clean up
* more clean up
* more clean up
* temp disable blocking prime thread
* hackily get device path once
* ok
* debug
* fix open networks
* debug
* clean up
* all threads wait for device path, and user functions dont ever attempt to get, just skip
* same place
* helper
* Revert "helper"
This reverts commit e237d9a720915fb6bd67c539123d3e2d9d582ce1.
* organize?
* Revert "organize?"
This reverts commit 3aca3e5d629c947711ade88799febeb3f61eda87.
* c word is a bad word
* rk monitor debug for now
* nothing crazy
* improve checkmark responsiveness
* when forgetting: this is correct, but feels unresponsive
* this feels good
* need these two to keep forgetting and activating responsive
* sort by connected, strength, then name
* handle non-critical race condition
* log more
* unused
* oh jubilee is sick you can block on signals!!
* proof of concept to see if works on device
whoiops
* so sucking fick
* ah this is not generic, it's a filter on the return vals
* flip around to not drop
* oh thank god
* fix
* stash
* atomic replace
* clean up
* add old to keep track of what's moved over
* these are already moved
* so much junk
* so much junk
* more
* tethering wasn't used so we can ignore that for now
* no params now
* rm duplicate imports
* not used anymore
* move get wifi device over to jeepney! ~no additional lines
* request scan w/ keepney
* get_conns
* _connection_by_ssid_jeepney is 2x faster (0.01 vs 0.02s)
* do forget and activate
* _update_networks matches!
* rm old update_networks
* replace connect_to_network, about same time (yes i removed thread call)
* no more python-dbus!k
* doesn't hurt
* AP.from_dbus: actually handle incorrect paths w/ jeep + more efficient single call
* properly handle errors
* it's jeepney now
* less state
* using the thread safe router passes a race condition test that conn failed!
* bad to copy from old wifimanager
* fix conn usage
* clean up
* curious if locks are lagging
* not for now
* Revert "curious if locks are lagging"
This reverts commit 085dd185b083f5905a4e71ba3e8c0565175e04aa.
* clean up _monitor_state
* remove tests
* clean up dataclasses
* sort
* lint: okay fine it can be non by virtue of exiting right at the perfect time
* some network clean up
* some wifi manager clean up
* this is handled
* stop can be called manually, from deleting wifimanager, or exiting python. some protection
* its not mutable anymore
* scan on enter
* clean up
* back
* lint
* catch dbus fail to connect
catch dbus fail to connect
* torqued: apply latAccelOffset to torque control feed forward
* test learned latAccelOffset captures roll compensation bias on straight road driving, when the device is not flush in roll relative to the car
* test correct torqued latAccelOffset parameter convergence
---------
Co-authored-by: felsager <d.felsager@gmail.com>
* modeld_v2: dynamify temporal buffer management.
* skip redundant reshaping and flattening.
* simplify MHP checks for lead and plan
* modeld_v2: add unit tests for buffer logic and refactor index mapping
* Let’s possibly fail a test :)
* Update test_buffer_logic_inspect.py
* Update test_buffer_logic_inspect.py
* modeld_v2: better temporal mapping for non-split
* Bump to 10 I guess
* Downgrade CURRENT_SELECTOR_VERSION to 9
* red diff ya know?
* add dynamic buffer update tests and compare against legacy logic.
Cover modelState.init and modelState.run
* send
* Revert "send"
This reverts commit 9e6c95fbfd.
* format
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* fid
* test
* Revert "test"
This reverts commit 38e6635dd0b0b9fb9c08bcc3a74b9283207b0c2f.
* r
* Revert "r"
This reverts commit 4037a321f89af137a645345a0fffb73da6071c72.
* fix!
* this is enough to fix the broken colors
* clean up
* fix
* use last colors -- need this so we don't have to always pass perfect gradient
* clean up
* clean up
* clean up
* rm str | none pattern
* clean up
* more clean up
* stash
* Revert "stash"
This reverts commit 3e2472160cc97e9d11922137757d9ef942a0312d.
* fix da prints
* fix cmt
* ci: github runner auto off when voltage is above 9.0v .
This ensures that a runner in vehicle doesn't accidentally break everything lol.
* suggestion for clarity.
* refactor: rename and update handling of `GithubRunnerVoltage` parameter
- Improve clarity by renaming to `GithubRunnerSufficientVoltage`.
- Changed attribute to `CLEAR_ON_MANAGER_START` for improved runtime state management.
- No need for this value to be backed up!
* refactor: streamline voltage check for GithubRunnerSufficientVoltage
---------
Co-authored-by: DevTekVE <devtekve@gmail.com>
* speed up sourcing but avoiding checking for existence of collected files already from previous sources
* clean up
* been meaning to make them return dicts
* no longer true
* no longer true
* clean up
* more
* more
* revert
If param `InteractivityTimeout` does not exist, timeoutValue == "",
resulting in the Interactivity Timeout UI displaying "s" by default.
Fix displayed "Default" by checking for "0" or "".
Co-authored-by: Nayan <nayan8teen@gmail.com>
* wrap the params
* just 1 class and use a single param for now
* refactor
* fix
* cache itself
* no longer
* rename
* type hint
* in helpers instead
* lint
* all
* init as 0 to pass ci
* init as 0 to pass ci
* return_default
* fix init
* add LAT_SMOOTH_SECONDS directly in modeld, temp remove dynamic desc, red difffffffff
* Add tinygrad ref testing
* BaseDir and give a fake ref id to test
* one more before the real thing
* Add the correct ref
* test
* Update test_tinygrad_ref.py
* Update tinygrad_ref
* Update test_tinygrad_ref.py
* Update tinygrad_ref
* This SHOULD FAIL
* Revert "This SHOULD FAIL"
This reverts commit 58862f8a73.
* bit of red
* Move ref to models so compiled branches can read it
* step one
* step 2
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* Update tinygrad_ref.py
* Update build-all-tinygrad-models.yaml
* bump to fail test
* Revert "bump to fail test"
This reverts commit 4f58991f32.
* pytest should take care of it
* lint
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* Reapply "LogReader: wrap events to cache which() (#35882)"
This reverts commit ba2dced54c.
* fix lr
* speed up
* clean up
* more
* should be fast
* clean up
* only supports Event
* rmrmr
* bye
* simple
* gix
* why? because why not!? damn.
* test
* more disable
* i am hating this
* fuck mypy.
* hopefully this is fixing json
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* add raylib ui
* test
* this is better for now
* rm
rm
* finalize it
* need this?
* ?
* shite
shite
* try
* ?
* huh
* simp
* ?
* wtf is going on
* ???????????????
* lock
* stash
* no 2 packages
* Revert "stash"
This reverts commit 9efb0d9bda6a6309e7a567634d1921bf1cd0fb59.
* debug
* noo
* debug
* ?
* and
* yeah yeah
* init one
* 2
* i wonder
* oooh
* make sure
* fix dat
* try this
* see if wifiman
* forgot
* ?
* ???
* fuck this we can rewrite it later
* refactor: move lateral methods from init to lateral.py (#2594)
* Extracting lateral methods to lateral.py
* cleaning
* more cleaning
* more cleaning
* Making sure it remains where it should
* Leave rate_limit where it belongs
* Moving things to `car/controls/`
* Moving rate limit to get a taste of the changes
* clean
* copy verbatim
* clean up
* more
* now we can format
---------
Co-authored-by: Shane Smiskol <shane@smiskol.com>
* Merge branch 'master' into move-common-vm-methods. dunno what happend with ci
* now we need to move this import
* bump opendbc
---------
Co-authored-by: Shane Smiskol <shane@smiskol.com>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* here?
* nah card shouldn't become bloated
* better
* import
* actually selfdrived is probably best since it already manages alerts
card is car interfacing, controlsd is for calculating control input, selfdrived is rest
* consistent name
* add to params
* ai
* maybe better?
* shorter
* build out lockout
* do
* check active
* descriptive
* this is a terrible experience just to get lat accel
* just pass sm
* not iso
* type
* rm
* math
* use calibrated roll
* fix
* fix borkenness
* cmt
* compare some methods
* rolling window
* 1 and 2 are the same
* rm it
* stuff
* plot
* plot kf
* generic implementation
* adjust limits
* fix from merge
* clean up
* revert filter to master
* and here
* and
* run_process_on_route imps
* clean up
* why not
* extrapolate
* this doesn't generically work for angle/curvature cars
Revert "extrapolate"
This reverts commit 556f0c3a92b82f07ceb6422f0e39322e79a10dcd.
* cmt
* move
* rm debug
rm debug
and
* others use helpers
* two counters might be too much to return
* turn into class
* clean up
* cmt
* kinda obvious
* impossible for this not to be true, but make it explicit
* clean up
* record feedback with LKAS button
* fix alert test
* slightly simplify feedbackd
* "Audio Feedback Saved" upon time expiration or early stop
* earlySend --> earlyStop
* userFlag --> userBookmark
* RecordAudioFeedback param/toggle
* add audioFeedback test
* simplify feedbackd
* send bookmark regardless of toggle, show feedback event with higher priority
* add userBookmark to selfdrived sm
* fix mispelled param name
* default off and move to main
* segmentNum --> blockNum, earlyStop --> lastBlock
* preserve audioFeedback
* get rid of lastBlock and just send bookmark saved at the end
* update raylib side
* update toggle description and add raylib toggle
---------
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* ci: dynamic submodule check for build_release
* test opendbc diff
* somem fix
* this way
* use path
* use master branch instead
* less verbose
* test bump
* test 1 more sub change
* unbump
* only echo if there's a diff
* refactor: move lateral methods from init to lateral.py (#2594)
* Extracting lateral methods to lateral.py
* cleaning
* more cleaning
* more cleaning
* Making sure it remains where it should
* Leave rate_limit where it belongs
* Moving things to `car/controls/`
* Moving rate limit to get a taste of the changes
* clean
* copy verbatim
* clean up
* more
* now we can format
---------
Co-authored-by: Shane Smiskol <shane@smiskol.com>
* No need to change order of import
* refactor: consolidate ACCELERATION_DUE_TO_GRAVITY import path
* bump opendbc
* update refs
* don't import from opendbc
---------
Co-authored-by: Shane Smiskol <shane@smiskol.com>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* stash
* Revert "stash"
This reverts commit 333818b80f498e8e3dac3c1cd36e669e97521d52.
* works for paramsd
* INSANE
* format
* fater
* clean up
* more
* huh i thought order matterred?
* clean that up
* can remove this
* cmt
* check isisntance
* rename
* clean up
* clean up
* more
* more!
* sounds better
* Revert "Fix up `radarFault` handling (#35880)"
This reverts commit 4d01b7bec8.
* Reapply "Fix up `radarFault` handling (#35880)"
This reverts commit 597d7ec1ed78206035b924a6e8464cd9239b5db4.
* can do this
* yeah this is fine
* save 1-2s for full route
* now more than halve the time on top of previous speedup!
* stash
* default should be most common!
* revert
* revert
* clean up
* clean up
* clean up
* clean up
* speed up lr
* lazy caching
* clean up
* it fast
* stash
* stash
* chatgpt code is bad as usual
* clean up
* clean up
* clean up
* clean up
* clean up
* clean up
* match behavior
* cmt
* format
* containers might not be set
* opts
* halves startup time for 12 procs (1.6 to 0.8s)
* stash
* clean up
* who knew going through entire list of msgs each time is so slow
* rewrite this to be more readable
* speed up lr
* clean up
* more
* more
* format
* containers might not be set
* opts
* halves startup time for 12 procs (1.6 to 0.8s)
* stash
* Revert "stash"
This reverts commit 3e119a9602e495bd5a57b94e73fa53d4f45051b1.
* Revert "halves startup time for 12 procs (1.6 to 0.8s)"
This reverts commit a39edf0a579f0c861ccb904a2718254fe32e03d0.
* Revert "opts"
This reverts commit 4dc1f75f0909a93650f8f7e8525af3e4eae08205.
* already set!
* refactor: move lateral methods from init to lateral.py (#2594)
* Extracting lateral methods to lateral.py
* cleaning
* more cleaning
* more cleaning
* Making sure it remains where it should
* Leave rate_limit where it belongs
* Moving things to `car/controls/`
* Moving rate limit to get a taste of the changes
* clean
* copy verbatim
* clean up
* more
* now we can format
---------
Co-authored-by: Shane Smiskol <shane@smiskol.com>
* No need to change order of import
---------
Co-authored-by: Shane Smiskol <shane@smiskol.com>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* holy shit
* benchmark without this main pub drain stuff
* revert
* ??
* actually this is what we want
* what is going on this is python 3.11 sir
* stash
* this is how you dew it
* minor clean up
* fix
* clean up
* clean up
* this is madness!
* typing
* clean up
* rescale ir value pandad sends to Hardware and changed max ir value in Hardware
* changed ir_percentage type
* refactored pandad.cc ir_pwr setting
* cleaned up ir update condition
---------
Co-authored-by: kostas pats <kostas@comma.ai>
* Tinygrad bump from sync-20250627
* bump tinygrad_repo
* Reformat metadata generator to match driving_models.json
* bump tinygrad
* Revert "bump tinygrad"
This reverts commit f479dfd502.
* revert me after SP model compiled
* Model recompiled successfully, initiate "revert me after SP model compiled"
This reverts commit 95706eb688.
* The "FillMe" placeholder caused an extra 10 seconds of work
* bump to 22Jul2025
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* Allow more dynamic short names
This should hopefully be future-proof for now.. It's robust enough to return the correct word-digit format (see example on how it generates from given display name below):
'Last Horizon V2 (November 22, 2024)' -> LHV2
'Alabama (November 25, 2024)' -> ALABAMA
'PlayStation (December 03, 2024)' -> PLAYSTAT
'Postal Service (December 09, 2024)' -> PS
'Null Pointer (December 13, 2024)' -> NP
'North America (December 16, 2024)' -> NA
'National Public Radio (December 18, 2024)' -> NPR
'Filet o Fish (March 7, 2025)' -> FOF
'Tomb Raider 2 (April 18, 2025)' -> TR2
'Tomb Raider 3 (April 22, 2025)' -> TR3
'Tomb Raider 4 (April 25, 2025)' -> TR4
'Tomb Raider 5 (April 25, 2025)' -> TR5
'Tomb Raider 6 (April 30, 2025)' -> TR6
'Tomb Raider 7 (May 07, 2025)' -> TR7
'Down to Ride (Revision: May 10, 2025)' -> DTR
'SP Vikander Model (May 16, 2025)' -> SPVM
'VFF Driving (May 15, 2025)' -> VFFD
'Secret Good Openpilot (May 16, 2025)' -> SGO
'Vegetarian Filet o Fish (May 29, 2025)' -> VFOF
'Down To Ride (Revision: May 30, 2025)' -> DTR
'Vegetarian Filet o Fish v2 (June 05, 2025)' -> VFOFV2
'Kerrygold Driving (June 08, 2025)' -> KD
'Tomb Raider 10 (June 16, 2025)' -> TR10
'Organic Kerrygold (June 17, 2025)' -> OK
'Liquid Crystal Driving (June 21, 2025)' -> LCD
'Vegetarian Filet o Fish v3 (June 21, 2025)' -> VFOFV3
'Vibe Model [Custom Model]' -> VMCM
'Tomb Raider 13 (June 27, 2025)' -> TR13
'Aggressive TR (June 28, 2025)' -> ATR
'Tomb Raider 14 (June 30, 2025)' -> TR14
'Cookiemonster Tomb Raider (July 02, 2025)' -> CTR
'Down to Ride (Revision: July 07, 2025)' -> DTR
'Simple Plan Driving (July 07, 2025)' -> SPD
'Down to Ride (Revision: July 08, 2025)' -> DTR
'Tomb Raider 15 (July 09, 2025)' -> TR15
'Tomb Raider 15 rev-2 (July 11, 2025)' -> TR15R2
'Le Tomb Raider 14 (July 14, 2025)' -> LTR14
'Le Tomb Raider 14h (July 17, 2025)' -> LTR14H
'Tomb Raider 16 (July 18, 2025)' -> TR16
'Tomb Raider 16v2 (July 21, 2025)' -> TR16V2
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* No need to sleep 3 seconds, just send it
* try dynamic
* cleanup
* Update build-single-tinygrad-model.yaml
* bc devtekve said. also, this is repetitive af
* Revert "bc devtekve said. also, this is repetitive af"
This reverts commit 3a0c1562de.
* maybe we could use a script instead that both build all
That both build all and sunnypilot-build-model reference
* refactor: consolidate model building steps into a single workflow
* tweak
* tweakx2
* tweakx3
* tweakx4
* dunno dunno...
* output dir
* lots of changes
* Revert "lots of changes"
This reverts commit 4aadb0ee29.
* fail if all fail
* no inputs needed
* make it easier for us
* note failure and exit 0
* Update build-all-tinygrad-models.yaml
* not needed unless we really want it
* Update build-single-tinygrad-model.yaml
* Merge branch 'sync-20250627-tinygrad' of github.com:sunnypilot/sunnypilot into sync-20250627-tinygrad
* retry for failed ?
* always run this step because sometimes one build fails
which causes the matrix to fail, but most builds still have uploaded artifacts.
* strip
* no escape
* Update build-all-tinygrad-models.yaml
* Test case from terminal run
(openpilot) james@Mac sunnypilot % jq -c '[.bundles[] | select(.runner=="tinygrad") | {ref, display_name: (.display_name | gsub(" \\([^)]*\\)"; "")), is_20hz}]' \
/Users/james/Documents/GitHub/sunnypilot-docs/docs/driving_models_v6.json > matrix.json
mkdir -p output
touch "output/model-Tomb Raider 16v2 (July 21, 2025)-544"
touch "output/model-Space Lab Model (July 24, 2025)-547"
touch "output/model-Space Lab Model v1 (July 24, 2025)-548"
built=(); while IFS= read -r line; do built+=("$line"); done < <(
ls output | sed -E 's/^model-//' | sed -E 's/-[0-9]+$//' | sed -E 's/ \([^)]*\)//' | awk '{gsub(/^ +| +$/, ""); print}'
)
jq -c --argjson built "$(printf '%s\n' "${built[@]}" | jq -R . | jq -s .)" \
'map(select(.display_name as $n | ($built | index($n | gsub("^ +| +$"; "")) | not)))' \
matrix.json > retry_matrix.json
cat retry_matrix.json
[]
(openpilot) james@Mac sunnypilot %
* always
* great success
* add suffix to retry artifact so it doesn't conflict
* retry to get_model too
* and there haha
* unnecessary hyphen
* compare built to missing. include retries
* adjust copy of artifacts.
* Update build-all-tinygrad-models.yaml
* Update model selector versioning and add documentation
* Update retry condition for failed models in build-all-tinygrad-models.yaml
* Update retry condition for failed models in build-all-tinygrad-models.yaml
* Update build-single-tinygrad-model.yaml
* false
* default none because why not
* red diff? i think?
* meh ... not needed i guess
* error error error
* Nayan is watching... always watching mike wazowski
* string all the way
* lots of retries just in case because im scared
* more robust
* ONLY ONE!!!!!!
* delete.... a lot
* fix artifacts
* fix artifacts
* make sure each is unique :)
* skip files like artifact duhhhh
* artifact name dir
* concurrency
* copy here
* Update build-single-tinygrad-model.yaml
* Update build-single-tinygrad-model.yaml
* bump
* bump tinygrad
* max parallel? if not, i have the other remedy ready in build-all
* revert me!
* I resynced tinygrad woo hoo
* setup shouldnt fail
* pull
* big ole diff
* condition
* Update build-all-tinygrad-models.yaml
* not always() never always() never!!!
* not failure instead of great success
* Update build-all-tinygrad-models.yaml
* yay that worked. lets invoke build-single one last time
* these arent used and are just taking up 250MB space
* really frog?
* bump back to 3
* self-hosted, tici
* rename to trigger tests
* 2 and done
---------
Co-authored-by: DevTekVE <devtekve@gmail.com>
* Tinygrad bump from sync-20250627
* bump tinygrad_repo
* Reformat metadata generator to match driving_models.json
* bump tinygrad
* Revert "bump tinygrad"
This reverts commit f479dfd502.
* revert me after SP model compiled
* Model recompiled successfully, initiate "revert me after SP model compiled"
This reverts commit 95706eb688.
* The "FillMe" placeholder caused an extra 10 seconds of work
* bump to 22Jul2025
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* Allow more dynamic short names
This should hopefully be future-proof for now.. It's robust enough to return the correct word-digit format (see example on how it generates from given display name below):
'Last Horizon V2 (November 22, 2024)' -> LHV2
'Alabama (November 25, 2024)' -> ALABAMA
'PlayStation (December 03, 2024)' -> PLAYSTAT
'Postal Service (December 09, 2024)' -> PS
'Null Pointer (December 13, 2024)' -> NP
'North America (December 16, 2024)' -> NA
'National Public Radio (December 18, 2024)' -> NPR
'Filet o Fish (March 7, 2025)' -> FOF
'Tomb Raider 2 (April 18, 2025)' -> TR2
'Tomb Raider 3 (April 22, 2025)' -> TR3
'Tomb Raider 4 (April 25, 2025)' -> TR4
'Tomb Raider 5 (April 25, 2025)' -> TR5
'Tomb Raider 6 (April 30, 2025)' -> TR6
'Tomb Raider 7 (May 07, 2025)' -> TR7
'Down to Ride (Revision: May 10, 2025)' -> DTR
'SP Vikander Model (May 16, 2025)' -> SPVM
'VFF Driving (May 15, 2025)' -> VFFD
'Secret Good Openpilot (May 16, 2025)' -> SGO
'Vegetarian Filet o Fish (May 29, 2025)' -> VFOF
'Down To Ride (Revision: May 30, 2025)' -> DTR
'Vegetarian Filet o Fish v2 (June 05, 2025)' -> VFOFV2
'Kerrygold Driving (June 08, 2025)' -> KD
'Tomb Raider 10 (June 16, 2025)' -> TR10
'Organic Kerrygold (June 17, 2025)' -> OK
'Liquid Crystal Driving (June 21, 2025)' -> LCD
'Vegetarian Filet o Fish v3 (June 21, 2025)' -> VFOFV3
'Vibe Model [Custom Model]' -> VMCM
'Tomb Raider 13 (June 27, 2025)' -> TR13
'Aggressive TR (June 28, 2025)' -> ATR
'Tomb Raider 14 (June 30, 2025)' -> TR14
'Cookiemonster Tomb Raider (July 02, 2025)' -> CTR
'Down to Ride (Revision: July 07, 2025)' -> DTR
'Simple Plan Driving (July 07, 2025)' -> SPD
'Down to Ride (Revision: July 08, 2025)' -> DTR
'Tomb Raider 15 (July 09, 2025)' -> TR15
'Tomb Raider 15 rev-2 (July 11, 2025)' -> TR15R2
'Le Tomb Raider 14 (July 14, 2025)' -> LTR14
'Le Tomb Raider 14h (July 17, 2025)' -> LTR14H
'Tomb Raider 16 (July 18, 2025)' -> TR16
'Tomb Raider 16v2 (July 21, 2025)' -> TR16V2
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* No need to sleep 3 seconds, just send it
* try dynamic
* cleanup
* Update build-single-tinygrad-model.yaml
* bc devtekve said. also, this is repetitive af
* Revert "bc devtekve said. also, this is repetitive af"
This reverts commit 3a0c1562de.
* maybe we could use a script instead that both build all
That both build all and sunnypilot-build-model reference
* refactor: consolidate model building steps into a single workflow
* tweak
* tweakx2
* tweakx3
* tweakx4
* dunno dunno...
* output dir
* lots of changes
* Revert "lots of changes"
This reverts commit 4aadb0ee29.
* fail if all fail
* no inputs needed
* make it easier for us
* note failure and exit 0
* Update build-all-tinygrad-models.yaml
* not needed unless we really want it
* Update build-single-tinygrad-model.yaml
* Merge branch 'sync-20250627-tinygrad' of github.com:sunnypilot/sunnypilot into sync-20250627-tinygrad
* retry for failed ?
* always run this step because sometimes one build fails
which causes the matrix to fail, but most builds still have uploaded artifacts.
* strip
* no escape
* Update build-all-tinygrad-models.yaml
* Test case from terminal run
(openpilot) james@Mac sunnypilot % jq -c '[.bundles[] | select(.runner=="tinygrad") | {ref, display_name: (.display_name | gsub(" \\([^)]*\\)"; "")), is_20hz}]' \
/Users/james/Documents/GitHub/sunnypilot-docs/docs/driving_models_v6.json > matrix.json
mkdir -p output
touch "output/model-Tomb Raider 16v2 (July 21, 2025)-544"
touch "output/model-Space Lab Model (July 24, 2025)-547"
touch "output/model-Space Lab Model v1 (July 24, 2025)-548"
built=(); while IFS= read -r line; do built+=("$line"); done < <(
ls output | sed -E 's/^model-//' | sed -E 's/-[0-9]+$//' | sed -E 's/ \([^)]*\)//' | awk '{gsub(/^ +| +$/, ""); print}'
)
jq -c --argjson built "$(printf '%s\n' "${built[@]}" | jq -R . | jq -s .)" \
'map(select(.display_name as $n | ($built | index($n | gsub("^ +| +$"; "")) | not)))' \
matrix.json > retry_matrix.json
cat retry_matrix.json
[]
(openpilot) james@Mac sunnypilot %
* always
* great success
* add suffix to retry artifact so it doesn't conflict
* retry to get_model too
* and there haha
* unnecessary hyphen
* compare built to missing. include retries
* adjust copy of artifacts.
* Update build-all-tinygrad-models.yaml
* Update model selector versioning and add documentation
* Update retry condition for failed models in build-all-tinygrad-models.yaml
* Update retry condition for failed models in build-all-tinygrad-models.yaml
* Update build-single-tinygrad-model.yaml
* false
* default none because why not
* red diff? i think?
* meh ... not needed i guess
* error error error
* Nayan is watching... always watching mike wazowski
* string all the way
* lots of retries just in case because im scared
* more robust
* ONLY ONE!!!!!!
* delete.... a lot
* fix artifacts
* fix artifacts
* make sure each is unique :)
* skip files like artifact duhhhh
* artifact name dir
* concurrency
* copy here
* Update build-single-tinygrad-model.yaml
* Update build-single-tinygrad-model.yaml
* bump
* bump tinygrad
* max parallel? if not, i have the other remedy ready in build-all
* revert me!
* I resynced tinygrad woo hoo
* setup shouldnt fail
* pull
* big ole diff
* condition
* Update build-all-tinygrad-models.yaml
* not always() never always() never!!!
* not failure instead of great success
* Update build-all-tinygrad-models.yaml
* yay that worked. lets invoke build-single one last time
* these arent used and are just taking up 250MB space
* really frog?
* bump back to 3
* self-hosted, tici
* rename to trigger tests
* split sync
---------
Co-authored-by: DevTekVE <devtekve@gmail.com>
* ci: refactor PR handling with output file storage and streamlined input parsing
* try runner.temp
* base64 it
* simple simple
* double it and give it to the next person
* One more test
* Apply suggestions from code review
---------
Co-authored-by: DevTekVE <devtekve@gmail.com>
* excessive actuation
* text
* software
* check
* logic
* whoops
* dont want to lose alert unless user interacts with it
* implement
* try x2
* counter
* try to false trigger
* use livepose
* need to check for livePose noise
* cmt
* nl
* add back
* organization
* setVisible and isVisible consecutively don't work
* style
* cant do this sadly
* actually we can!
* clean up
* clean up
* clean up
* need to match torqued, paramsd, lagd, etc. (fix op sim)
* first
* fix
* fix
* this
* real
* time
* time
* more
* more
* fix
* subclass
* fix
* fix
* test
* fix
* ruff
* revert
* default
* json
* more
* test
* test
* d
* better
* better
* test
* one
* test
* space
* add helpers
* another name
* whitespace
* f string
* add log id
* add logid
* another dumb function
* add more crap
* fix naming
* whitespace
* fstring
* sourcing supports any file type!
* stuff
* no camera for now
* i guess these are fine without
* rename
* get rid of these too!
* fix
* fix
* this is better
* start to clean up!
* better
* holy
holy
* clean up sources
* more robust
* working but needs some clean up
* clean up
* remove some trash
* nl
* auto_source can only return if it finds acceptable logs from sources
* double negative is confusing
* default
* list isn't hashable
* fix typing
* clean up
* speed up -- test_models got zst before bz2 in openpilotci, so do that (some segments have both bz2 and zst!)
* don't be a hero
* same behavior for now
* ban it!
* some legitimate blunders
* even more!
* this is from commaai/one
* here too
* this too
* ignore rest
* one liner
* Revert "one liner"
This reverts commit d96a1624032aaad829a005b523e579d953cfe690.
* fix not resetting safety mode when op goes offroad
* hmm can do this but not needed
* revert
* rm check
* fix loopback
* ugh
* might have to do this
* Revert "might have to do this"
This reverts commit abd8a7ed74ca11874de1360f9630dc67bc4d02ee.
* fix
* also works but ehhh
* actually this is better, we already get IsOnroad at 10Hz
* top looks better
* fix
* add CLEAR_ON_IGNITION_ON
* hardwared is the only place that currently checks all ignition sources. doing it in pandad wouldn't make sense. this okay?
* remember
* only two usages but meh
* manager should probably be the only daemon to manage params
* clean up
* oh this is craze
* Update selfdrive/monitoring/helpers.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* together
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* refactor: move button to widgets folder
* refactor: move inputbox to widgets folder
* refactor: move label to widgets folder
* refactor: move list_view to widgets
* refactor: move scroll_panel to widgets
* refactor: move scroller to widgets
* refactor: move toggle to widgets
* refactor: Move widget.py to widgets/__init__.py
* fix: remove extra list_view
* refactor: rearrange some of the imports
* fix: remove extra scroller.py
* fix: Add scroller back
* fix: delete right scroller.py this time
* move scroll_panel back to system/ui/lib
* add todos for label and button
* refactor(raylib): use dictionary to map font weight to file name
* refactor: add space
* refactor: format
* refactor: Switch FontWeight to a StrEnum with font file values
* update settings close text to use multiplication x character
* add todo
* fix: Add settings close text char to loaded glyphs
* refactor: Use font medium for settings close button text and remove font bold property; change font_)medium property to font_weight
* move close icon down a bit
* fix: offset settings close text in button to correct centering
* fix: remove horizontal offset
* refactor: it's actually a font, so rename back
* gate
* more
* more
* check
* more
* fix
* more
* check
* Revert "check"
This reverts commit c30941bae0cbdb8f908883658bf1b0a4839c2be1.
* back
* more
* like before
* again
* more
# We do a bit of a hack here to avoid canceling the publishing job if a new commit comes in while we're publishing by adding the sha to the group name.
# This means that if multiple commits come in while we're publishing, they will be queued up and publish one after the other.
# Otherwise, if a job is waiting to be published due to environment wait time, it would be canceled by a new commit and restart the wait time.
[sunnypilot](https://github.com/sunnyhaibin/sunnypilot) is a fork of comma.ai's openpilot, an open source driver assistance system. sunnypilot offers the user a unique driving experience for over 300+ supported car makes and models with modified behaviors of driving assist engagements. sunnypilot complies with comma.ai's safety rules as accurately as possible.
## 💭 Join our Discord
Join the official sunnypilot Discord server to stay up to date with all the latest features and be a part of shaping the future of sunnypilot!
Join the official sunnypilot community forum to stay up to date with all the latest features and be a part of shaping the future of sunnypilot!
* https://community.sunnypilot.ai/
## Documentation
https://docs.sunnypilot.ai/ is your one stop shop for everything from features to installation to FAQ about the sunnypilot
## 🚘 Running on a dedicated device in a car
* A supported device to run this software
* a [comma three](https://comma.ai/shop/products/three) or a [C3X](https://comma.ai/shop/comma-3x)
* This software
* One of [the 300+ supported cars](https://github.com/commaai/openpilot/blob/master/docs/CARS.md). We support Honda, Toyota, Hyundai, Nissan, Kia, Chrysler, Lexus, Acura, Audi, VW, Ford and more. If your car is not supported but has adaptive cruise control and lane-keeping assist, it's likely able to run sunnypilot.
* A [car harness](https://comma.ai/shop/products/car-harness) to connect to your car
Detailed instructions for [how to mount the device in a car](https://comma.ai/setup).
First, check out this list of items you'll need to [get started](https://community.sunnypilot.ai/t/getting-started-using-sunnypilot-in-your-supported-car/251).
## Installation
Please refer to [Recommended Branches](#-recommended-branches) to find your preferred/supported branch. This guide will assume you want to install the latest `release-c3` branch.
* sunnypilot not installed or you installed a version before 0.8.17?
1. [Factory reset/uninstall](https://github.com/commaai/openpilot/wiki/FAQ#how-can-i-reset-the-device) the previous software if you have another software/fork installed.
2. After factory reset/uninstall and upon reboot, select `Custom Software` when given the option.
3. Input the installation URL per [Recommended Branches](#-recommended-branches). Example: ```release-c3.sunnypilot.ai```.
4. Complete the rest of the installation following the onscreen instructions.
* sunnypilot already installed and you installed a version after 0.8.17?
1. On the comma three, go to `Settings` ▶️ `Software`.
2. At the `Download` option, press `CHECK`. This will fetch the list of latest branches from sunnypilot.
3. At the `Target Branch` option, press `SELECT` to open the Target Branch selector.
4. Scroll to select the desired branch per Recommended Branches (see below). Example: `release-c3`
### If you want to use our newest branches (our rewrite)
> [!TIP]
>You can see the rewrite state on our [rewrite project board](https://github.com/orgs/sunnypilot/projects/2), and to install the new branches, you can use the following links
> [!IMPORTANT]
> It is recommended to [re-flash AGNOS](https://flash.comma.ai/) if you intend to downgrade from the new branches.
> You can still restore the latest sunnylink backup made on the old branches.
> Do you require further assistance with software installation? Join the [sunnypilot Discord server](https://discord.sunnypilot.com) and message us in the `#installation-help` channel.
Next, refer to the sunnypilot community forum for [installation instructions](https://community.sunnypilot.ai/t/read-before-installing-sunnypilot/254), as well as a complete list of [Recommended Branch Installations](https://community.sunnypilot.ai/t/recommended-branch-installations/235).
## 🎆 Pull Requests
We welcome both pull requests and issues on GitHub. Bug fixes are encouraged.
Pull requests should be against the most current `master-new` branch.
Pull requests should be against the most current `master` branch.
A supported vehicle is one that just works when you install a comma device. All supported cars provide a better experience than any stock system. Supported vehicles reference the US market unless otherwise specified.
|Hyundai|Kona 2020|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|6 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai B connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Hyundai&model=Kona 2020">Buy Here</a></sub></details>|||
|Hyundai|Kona 2022|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai O connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Hyundai&model=Kona 2022">Buy Here</a></sub></details>|||
|Hyundai|Kona Electric 2018-21|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai G connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Hyundai&model=Kona Electric 2018-21">Buy Here</a></sub></details>|||
|Hyundai|Kona Electric 2022-23|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai O connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Hyundai&model=Kona Electric 2022-23">Buy Here</a></sub></details>|||
|Hyundai|Kona Electric (with HDA II, Korea only) 2023[<sup>6</sup>](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai R connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Hyundai&model=Kona Electric (with HDA II, Korea only) 2023">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=U2fOCmcQ8hw" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Hyundai|Kona Hybrid 2020|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai I connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Hyundai&model=Kona Hybrid 2020">Buy Here</a></sub></details>|||
|Tesla[<sup>11</sup>](#footnotes)|Model 3 (with HW3) 2019-23[<sup>10</sup>](#footnotes)|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Tesla A connector<br>- 1 USB-C coupler<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 long OBD-C cable (9.5 ft)<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Tesla&model=Model 3 (with HW3) 2019-23">Buy Here</a></sub></details>|||
|Tesla[<sup>11</sup>](#footnotes)|Model 3 (with HW4) 2024-25[<sup>10</sup>](#footnotes)|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Tesla B connector<br>- 1 USB-C coupler<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 long OBD-C cable (9.5 ft)<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Tesla&model=Model 3 (with HW4) 2024-25">Buy Here</a></sub></details>|||
|Tesla[<sup>11</sup>](#footnotes)|Model Y (with HW3) 2020-23[<sup>10</sup>](#footnotes)|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Tesla A connector<br>- 1 USB-C coupler<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 long OBD-C cable (9.5 ft)<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Tesla&model=Model Y (with HW3) 2020-23">Buy Here</a></sub></details>|||
|Tesla[<sup>11</sup>](#footnotes)|Model Y (with HW4) 2024[<sup>10</sup>](#footnotes)|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Tesla B connector<br>- 1 USB-C coupler<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 long OBD-C cable (9.5 ft)<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Tesla&model=Model Y (with HW4) 2024">Buy Here</a></sub></details>|||
|Toyota|Alphard 2019-20|All|openpilot|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Alphard 2019-20">Buy Here</a></sub></details>|||
|Toyota|Alphard Hybrid 2021|All|openpilot|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Alphard Hybrid 2021">Buy Here</a></sub></details>|||
|Toyota|Avalon 2016|Toyota Safety Sense P|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Avalon 2016">Buy Here</a></sub></details>|||
|Toyota|Avalon 2017-18|All|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Avalon 2017-18">Buy Here</a></sub></details>|||
|Toyota|Avalon 2019-21|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Avalon 2019-21">Buy Here</a></sub></details>|||
|Toyota|Avalon 2022|All|openpilot|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Avalon 2022">Buy Here</a></sub></details>|||
|Toyota|Avalon Hybrid 2019-21|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Avalon Hybrid 2019-21">Buy Here</a></sub></details>|||
|Toyota|Avalon Hybrid 2022|All|openpilot|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Avalon Hybrid 2022">Buy Here</a></sub></details>|||
|Toyota|C-HR 2017-20|All|Stock|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=C-HR 2017-20">Buy Here</a></sub></details>|||
|Toyota|C-HR 2021|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=C-HR 2021">Buy Here</a></sub></details>|||
|Toyota|C-HR Hybrid 2017-20|All|Stock|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=C-HR Hybrid 2017-20">Buy Here</a></sub></details>|||
|Toyota|C-HR Hybrid 2021-22|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=C-HR Hybrid 2021-22">Buy Here</a></sub></details>|||
|Toyota|Camry 2018-20|All|Stock|0 mph[<sup>12</sup>](#footnotes)|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Camry 2018-20">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=fkcjviZY9CM" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Toyota|Camry 2021-24|All|openpilot|0 mph[<sup>12</sup>](#footnotes)|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Camry 2021-24">Buy Here</a></sub></details>|||
|Toyota|Camry Hybrid 2018-20|All|Stock|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Camry Hybrid 2018-20">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=Q2DYY0AWKgk" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Toyota|Camry Hybrid 2021-24|All|openpilot|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Camry Hybrid 2021-24">Buy Here</a></sub></details>|||
|Toyota|Corolla 2017-19|All|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Corolla 2017-19">Buy Here</a></sub></details>|||
|Toyota|Corolla 2020-22|All|openpilot|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Corolla 2020-22">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=_66pXk0CBYA" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Toyota|Corolla Cross (Non-US only) 2020-23|All|openpilot|17 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Corolla Cross (Non-US only) 2020-23">Buy Here</a></sub></details>|||
|Toyota|Corolla Cross Hybrid (Non-US only) 2020-22|All|openpilot|17 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Corolla Cross Hybrid (Non-US only) 2020-22">Buy Here</a></sub></details>|||
|Toyota|Corolla Hatchback 2019-22|All|openpilot|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Corolla Hatchback 2019-22">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=_66pXk0CBYA" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Toyota|Corolla Hybrid 2020-22|All|openpilot|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Corolla Hybrid 2020-22">Buy Here</a></sub></details>|||
|Toyota|Corolla Hybrid (South America only) 2020-23|All|openpilot|17 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Corolla Hybrid (South America only) 2020-23">Buy Here</a></sub></details>|||
|Toyota|Highlander 2017-19|All|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Highlander 2017-19">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=0wS0wXSLzoo" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Toyota|Highlander 2020-23|All|openpilot|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Highlander 2020-23">Buy Here</a></sub></details>|||
|Toyota|Highlander Hybrid 2017-19|All|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Highlander Hybrid 2017-19">Buy Here</a></sub></details>|||
|Toyota|Highlander Hybrid 2020-23|All|openpilot|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Highlander Hybrid 2020-23">Buy Here</a></sub></details>|||
|Toyota|Mirai 2021|All|openpilot|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Mirai 2021">Buy Here</a></sub></details>|||
|Toyota|Prius 2016|Toyota Safety Sense P|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Prius 2016">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=8zopPJI8XQ0" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Toyota|Prius 2017-20|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Prius 2017-20">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=8zopPJI8XQ0" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Toyota|Prius 2021-22|All|openpilot|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Prius 2021-22">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=J58TvCpUd4U" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Toyota|Prius Prime 2017-20|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Prius Prime 2017-20">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=8zopPJI8XQ0" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Toyota|Prius Prime 2021-22|All|openpilot|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Prius Prime 2021-22">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=J58TvCpUd4U" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Toyota|Prius v 2017|Toyota Safety Sense P|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Prius v 2017">Buy Here</a></sub></details>|||
|Toyota|RAV4 2016|Toyota Safety Sense P|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 2016">Buy Here</a></sub></details>|||
|Toyota|RAV4 2017-18|All|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 2017-18">Buy Here</a></sub></details>|||
|Toyota|RAV4 2019-21|All|openpilot|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 2019-21">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=wJxjDd42gGA" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Toyota|RAV4 2022|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 2022">Buy Here</a></sub></details>|||
|Toyota|RAV4 2023-25|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 2023-25">Buy Here</a></sub></details>|||
|Toyota|RAV4 Hybrid 2016|Toyota Safety Sense P|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 Hybrid 2016">Buy Here</a></sub></details>|<a href="https://youtu.be/LhT5VzJVfNI?t=26" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Toyota|RAV4 Hybrid 2017-18|All|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 Hybrid 2017-18">Buy Here</a></sub></details>|<a href="https://youtu.be/LhT5VzJVfNI?t=26" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Toyota|RAV4 Hybrid 2019-21|All|openpilot|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 Hybrid 2019-21">Buy Here</a></sub></details>|||
|Toyota|RAV4 Hybrid 2022|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 Hybrid 2022">Buy Here</a></sub></details>|<a href="https://youtu.be/U0nH9cnrFB0" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Toyota|RAV4 Hybrid 2023-25|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 Hybrid 2023-25">Buy Here</a></sub></details>|<a href="https://youtu.be/4eIsEq4L4Ng" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Toyota|Sienna 2018-20|All|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Sienna 2018-20">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=q1UPOo4Sh68" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Hyundai|Kona 2020|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|6 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai B connector<br>- 1 OBD-C cable (2 ft)<br>- 1 comma four<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br><a href="https://comma.ai/shop/comma-3x?harness=Hyundai Kona 2020">Buy Here</a></sub></details>|||
|Hyundai|Kona 2022-23|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai O connector<br>- 1 OBD-C cable (2 ft)<br>- 1 comma four<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br><a href="https://comma.ai/shop/comma-3x?harness=Hyundai Kona 2022-23">Buy Here</a></sub></details>|||
|Hyundai|Kona Electric 2018-21|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai G connector<br>- 1 OBD-C cable (2 ft)<br>- 1 comma four<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br><a href="https://comma.ai/shop/comma-3x?harness=Hyundai Kona Electric 2018-21">Buy Here</a></sub></details>|||
|Hyundai|Kona Electric 2022-23|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai O connector<br>- 1 OBD-C cable (2 ft)<br>- 1 comma four<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br><a href="https://comma.ai/shop/comma-3x?harness=Hyundai Kona Electric 2022-23">Buy Here</a></sub></details>|||
|Hyundai|Kona Electric (with HDA II, Korea only) 2023|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai R connector<br>- 1 OBD-C cable (2 ft)<br>- 1 comma four<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br><a href="https://comma.ai/shop/comma-3x?harness=Hyundai Kona Electric (with HDA II, Korea only) 2023">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=U2fOCmcQ8hw" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Hyundai|Kona Hybrid 2020|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai I connector<br>- 1 OBD-C cable (2 ft)<br>- 1 comma four<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br><a href="https://comma.ai/shop/comma-3x?harness=Hyundai Kona Hybrid 2020">Buy Here</a></sub></details>|||
|Toyota|Mirai 2021|All|openpilot|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 OBD-C cable (2 ft)<br>- 1 Toyota A connector<br>- 1 comma four<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br><a href="https://comma.ai/shop/comma-3x?harness=Toyota Mirai 2021">Buy Here</a></sub></details>|||
|Toyota|Prius 2016|Toyota Safety Sense P|Stock|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 OBD-C cable (2 ft)<br>- 1 Toyota A connector<br>- 1 comma four<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br><a href="https://comma.ai/shop/comma-3x?harness=Toyota Prius 2016">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=8zopPJI8XQ0" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Toyota|Prius 2017-20|All|Stock|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 OBD-C cable (2 ft)<br>- 1 Toyota A connector<br>- 1 comma four<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br><a href="https://comma.ai/shop/comma-3x?harness=Toyota Prius 2017-20">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=8zopPJI8XQ0" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Toyota|Prius 2021-22|All|openpilot|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 OBD-C cable (2 ft)<br>- 1 Toyota A connector<br>- 1 comma four<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br><a href="https://comma.ai/shop/comma-3x?harness=Toyota Prius 2021-22">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=J58TvCpUd4U" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Toyota|Prius Prime 2017-20|All|Stock|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 OBD-C cable (2 ft)<br>- 1 Toyota A connector<br>- 1 comma four<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br><a href="https://comma.ai/shop/comma-3x?harness=Toyota Prius Prime 2017-20">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=8zopPJI8XQ0" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Toyota|Prius Prime 2021-22|All|openpilot|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 OBD-C cable (2 ft)<br>- 1 Toyota A connector<br>- 1 comma four<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br><a href="https://comma.ai/shop/comma-3x?harness=Toyota Prius Prime 2021-22">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=J58TvCpUd4U" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Toyota|Prius v 2017|Toyota Safety Sense P|Stock|19 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 OBD-C cable (2 ft)<br>- 1 Toyota A connector<br>- 1 comma four<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br><a href="https://comma.ai/shop/comma-3x?harness=Toyota Prius v 2017">Buy Here</a></sub></details>|||
|Toyota|RAV4 2016|Toyota Safety Sense P|Stock|19 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 OBD-C cable (2 ft)<br>- 1 Toyota A connector<br>- 1 comma four<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br><a href="https://comma.ai/shop/comma-3x?harness=Toyota RAV4 2016">Buy Here</a></sub></details>|||
|Toyota|RAV4 2017-18|All|Stock|19 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 OBD-C cable (2 ft)<br>- 1 Toyota A connector<br>- 1 comma four<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br><a href="https://comma.ai/shop/comma-3x?harness=Toyota RAV4 2017-18">Buy Here</a></sub></details>|||
<sup>1</sup>openpilot Longitudinal Control (Alpha) is available behind a toggle; the toggle is only available in non-release branches such as `devel` or `nightly-dev`. <br />
<sup>2</sup>By default, this car will use the stock Adaptive Cruise Control (ACC) for longitudinal control. If the Driver Support Unit (DSU) is disconnected, openpilot ACC will replace stock ACC. <b><i>NOTE: disconnecting the DSU disables Automatic Emergency Braking (AEB).</i></b> <br />
<sup>3</sup>Refers only to the Focus Mk4 (C519) available in Europe/China/Taiwan/Australasia, not the Focus Mk3 (C346) in North and South America/Southeast Asia. <br />
<sup>4</sup>See more setup details for <a href="https://github.com/commaai/openpilot/wiki/gm" target="_blank">GM</a>. <br />
<sup>5</sup>2019 Honda Civic 1.6L Diesel Sedan does not have ALC below 12mph. <br />
<sup>6</sup>Requires a <a href="https://comma.ai/shop/can-fd-panda-kit" target="_blank">CAN FD panda kit</a> if not using comma 3X for this <a href="https://en.wikipedia.org/wiki/CAN_FD" target="_blank">CAN FD car</a>. <br />
<sup>7</sup>See more setup details for <a href="https://github.com/commaai/openpilot/wiki/nissan" target="_blank">Nissan</a>. <br />
<sup>8</sup>In the non-US market, openpilot requires the car to come equipped with EyeSight with Lane Keep Assistance. <br />
<sup>9</sup>Enabling longitudinal control (alpha) will disable all EyeSight functionality, including AEB, LDW, and RAB. <br />
<sup>10</sup>Some 2023 model years have HW4. To check which hardware type your vehicle has, look for <b>Autopilot computer</b> under <b>Software -> Additional Vehicle Information</b> on your vehicle's touchscreen. See <a href="https://www.notateslaapp.com/news/2173/how-to-check-if-your-tesla-has-hardware-4-ai4-or-hardware-3">this page</a> for more information. <br />
<sup>11</sup>See more setup details for <a href="https://github.com/commaai/openpilot/wiki/tesla" target="_blank">Tesla</a>. <br />
<sup>12</sup>openpilot operates above 28mph for Camry 4CYL L, 4CYL LE and 4CYL SE which don't have Full-Speed Range Dynamic Radar Cruise Control. <br />
<sup>13</sup>Not including the China market Kamiq, which is based on the (currently) unsupported PQ34 platform. <br />
<sup>14</sup>Refers only to the MQB-based European B8 Passat, not the NMS Passat in the USA/China/Mideast markets. <br />
<sup>15</sup>Some Škoda vehicles are equipped with heated windshields, which are known to block GPS signal needed for some comma 3X functionality. <br />
<sup>16</sup>Only available for vehicles using a gateway (J533) harness. At this time, vehicles using a camera harness are limited to using stock ACC. <br />
<sup>17</sup>Model-years 2022 and beyond may have a combined CAN gateway and BCM, which is supported by openpilot in software, but doesn't yet have a harness available from the comma store. <br />
<sup>2</sup>Refers only to the Focus Mk4 (C519) available in Europe/China/Taiwan/Australasia, not the Focus Mk3 (C346) in North and South America/Southeast Asia. <br />
<sup>3</sup>See more setup details for <a href="https://github.com/commaai/openpilot/wiki/gm" target="_blank">GM</a>. <br />
<sup>4</sup>2019 Honda Civic 1.6L Diesel Sedan does not have ALC below 12mph. <br />
<sup>5</sup>See more setup details for <a href="https://github.com/commaai/openpilot/wiki/nissan" target="_blank">Nissan</a>. <br />
<sup>6</sup>In the non-US market, openpilot requires the car to come equipped with EyeSight with Lane Keep Assistance. <br />
<sup>7</sup>Enabling longitudinal control (alpha) will disable all EyeSight functionality, including AEB, LDW, and RAB. <br />
<sup>8</sup>Some 2023 model years have HW4. To check which hardware type your vehicle has, look for <b>Autopilot computer</b> under <b>Software -> Additional Vehicle Information</b> on your vehicle's touchscreen. See <a href="https://www.notateslaapp.com/news/2173/how-to-check-if-your-tesla-has-hardware-4-ai4-or-hardware-3">this page</a> for more information. <br />
<sup>9</sup>See more setup details for <a href="https://github.com/commaai/openpilot/wiki/tesla" target="_blank">Tesla</a>. <br />
<sup>10</sup>openpilot operates above 28mph for Camry 4CYL L, 4CYL LE and 4CYL SE which don't have Full-Speed Range Dynamic Radar Cruise Control. <br />
<sup>11</sup>Not including the China market Kamiq, which is based on the (currently) unsupported PQ34 platform. <br />
<sup>12</sup>Refers only to the MQB-based European B8 Passat, not the NMS Passat in the USA/China/Mideast markets. <br />
<sup>13</sup>Some Škoda vehicles are equipped with heated windshields, which are known to block GPS signal needed for some comma four functionality. <br />
<sup>14</sup>Only available for vehicles using a gateway (J533) harness. At this time, vehicles using a camera harness are limited to using stock ACC. <br />
<sup>15</sup>Model-years 2022 and beyond may have a combined CAN gateway and BCM, which is supported by openpilot in software, but doesn't yet have a harness available from the comma store. <br />
## Community Maintained Cars
Although they're not upstream, the community has openpilot running on other makes and models. See the 'Community Supported Models' section of each make [on our wiki](https://wiki.comma.ai/).
@@ -363,7 +377,7 @@ If your car has the following packages or features, then it's a good candidate f
| Make | Required Package/Features |
| ---- | ------------------------- |
| Acura | Any car with AcuraWatch Plus will work. AcuraWatch Plus comes standard on many newer models. |
| Acura | Any car with AcuraWatch will work. AcuraWatch comes standard on many newer models. |
| Ford | Any car with Lane Centering will likely work. |
| Honda | Any car with Honda Sensing will work. Honda Sensing comes standard on many newer models. |
| Subaru | Any car with EyeSight will work. EyeSight comes standard on many newer models. |
@@ -6,7 +6,7 @@ Development is coordinated through [Discord](https://discord.comma.ai) and GitHu
### Getting Started
* Setup your [development environment](../tools/)
* Setup your [development environment](/tools/)
* Join our [Discord](https://discord.comma.ai)
* Docs are at https://docs.comma.ai and https://blog.comma.ai
@@ -39,7 +39,7 @@ All of these are examples of good PRs:
### First contribution
[Projects / openpilot bounties](https://github.com/orgs/commaai/projects/26/views/1?pane=info) is the best place to get started and goes in-depth on what's expected when working on a bounty.
There's lot of bounties that don't require a comma 3/3X or a car.
There's lot of bounties that don't require a comma 3X or a car.
@@ -16,7 +16,7 @@ industry standards of safety for Level 2 Driver Assistance Systems. In particula
ISO26262 guidelines, including those from [pertinent documents](https://www.nhtsa.gov/sites/nhtsa.dot.gov/files/documents/13498a_812_573_alcsystemreport.pdf)
released by NHTSA. In addition, we impose strict coding guidelines (like [MISRA C : 2012](https://www.misra.org.uk/what-is-misra/))
on parts of openpilot that are safety relevant. We also perform software-in-the-loop,
hardware-in-the-loop and in-vehicle tests before each software release.
hardware-in-the-loop, and in-vehicle tests before each software release.
Following Hazard and Risk Analysis and FMEA, at a very high level, we have designed openpilot
ensuring two main safety requirements.
@@ -29,8 +29,18 @@ ensuring two main safety requirements.
For additional safety implementation details, refer to [panda safety model](https://github.com/commaai/panda#safety-model). For vehicle specific implementation of the safety concept, refer to [opendbc/safety/safety](https://github.com/commaai/opendbc/tree/master/opendbc/safety/safety).
**Extra note**: comma.ai strongly discourages the use of openpilot forks with safety code either missing or
not fully meeting the above requirements.
[^1]: For these actuator limits we observe ISO11270 and ISO15622. Lateral limits described there translate to 0.9 seconds of maximum actuation to achieve a 1m lateral deviation.
[^1]: For these actuator limits we observe ISO11270 and ISO15622. Lateral limits described there translate to 0.9 seconds of maximum actuation to achieve a 1m lateral deviation.
---
### Forks of openpilot
* Do not disable or nerf [driver monitoring](https://github.com/commaai/openpilot/tree/master/selfdrive/monitoring)
* Do not disable or nerf [excessive actuation checks](https://github.com/commaai/openpilot/tree/master/selfdrive/selfdrived/helpers.py)
* If your fork modifies any of the code in `opendbc/safety/`:
* your fork cannot use the openpilot trademark
* your fork must preserve the full [safety test suite](https://github.com/commaai/opendbc/tree/master/opendbc/safety/tests) and all tests must pass, including any new coverage required by the fork's changes
Failure to comply with these standards will get you and your users banned from comma.ai servers.
**comma.ai strongly discourages the use of openpilot forks with safety code either missing or not fully meeting the above requirements.**
*`wheelSpeeds.[fl|fr|rl|rr]`: Speed of each of the car's four wheels, in m/s. The car's CAN bus often broadcasts the
speed in kph, so the helper function `parse_wheel_speeds` performs this conversion by default.
## Recommended / Required for openpilot longitudinal control
*`accFaulted`
*`espActive`
*`parkingBrake`
## Application Dependent
*`blockPcmEnable`
*`buttonEnable`
*`brakeHoldActive`
*`carFaultedNonCritical`
*`invalidLkasSetting`
*`lowSpeedAlert`
*`regenBraking`
*`steeringAngleOffsetDeg`
*`steeringDisengage`
*`steeringTorqueEps`
*`stockLkas`
*`vCruiseCluster`
*`vEgoCluster`
*`vehicleSensorsInvalid`
## Automatically populated
*`buttonEvents`
These values are populated automatically by `parse_wheel_speeds`:
*`aEgo`: Acceleration of the ego vehicle, Kalman filtered derivative of `vEgo`.
*`vEgo`: Speed of the ego vehicle, Kalman filtered from `vEgoRaw`.
*`vEgoRaw`: Speed of the ego vehicle, based on the average of all four wheel speeds, unfiltered.
## Optional
*`brake`
*`charging`
*`fuelGauge`
*`leftBlindspot` / `rightBlindspot`
*`steeringRateDeg`
*`stockAeb`
*`stockFcw`
*`yawRate`
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.