* bitrate controller
* ability to set the quality so a certain level, make message handler a switch case
* distinct bitrate levels and exponential backoff of raising bitrate
* add med level threshold
* fix
* fix
* simplify
* clean
* remove CarState.brake refs
Intending to deprecate this field since it's set incorrectly by
most car implementations, and (essentially) unused in openpilot.
Everything should be using CarState.brakePressed.
See https://github.com/commaai/opendbc/pull/3338.
* fix test_models.py
* hardware: read network info without NetworkManager DBus
* hardware: simplify wpa_cli SSID escape decoding
* hardware: restore cellular block in get_network_type to match master
* hardware: factor wpa_cli helper for key=value parsing
* hardware: comment SSID byte conversion for keyfile match
* hardware: comment NM metered enum values
* hardware: use check_output for ip route and wpa_cli helpers
* hardware: read default route iface from /proc/net/route
* hardware: simplify default route iface parsing
* hardware: only check for metered == 1
* hardware: also look for *.nmconnection in /data/etc/NetworkManager/system-connections
* hardware: use nmcli for runtime metered guess on wifi
* socket
* cleanup
* poor
* lil more
* mv that
---------
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* initial codex
* remove ISP delay from encode ms
* try something simpler
* not allowing increase bug
* decrease bitrate increase rate
* upsample only on consecutive good checks
* rearrange
* clean
* Revert frame timing processing time change
* clean
* remove bitrate option and just do it on --stream
* make set_bitrate a lot more simple
* clean default impl
* further cleaning
* struct for bitrate to pass ci
* refactor a bit
* add comment
* small clean
* add init()
* increase bitrate
* update ffmpeg message
* remove unnecessary include
* modify set_bitrate
* change to Param
* remove getInt helper; add back in diff pr
* reword unclear error message
* move webrtcd change to new branch
* Reapply "modeld: split warp" (#38085)
This reverts commit d489dd8909.
* don't time make_random_inputs
* depend on chunk targets
* also depend on compile_modeld's dependencies
* athenad and webrtcd updates
* remove feature stream services from webrtcd split
* stream encoder thread
* reduce diff
* wire webrtc to livestream camera encoder
* request livestream camera switch service
* add frame timing headers
* rfctr
* diff
* clean
* remove camera list in favour of init camera field
* remove cors
* clean
* remove unused
* remove extra try except
* remove video_tracks unused
* add back exception trace
* add stream road camera info to stream cameras
* fix
* add back assert
* clean diff
* clean diff
* add testJoystick only on body
* fix camera list
* remove reference to future service
* video_tracks list add back
* encode all cameras and swap in video track in webrtc
* clean
* explicitly gate bridge send
* clean leftover
* rearrange video.py
* fix lint
* athenad and webrtcd updates
* remove feature stream services from webrtcd split
* stream encoder thread
* reduce diff
* wire webrtc to livestream camera encoder
* request livestream camera switch service
* remove camera list in favour of init camera field
* remove cors
* clean
* remove unused
* remove extra try except
* add back exception trace
* add stream road camera info to stream cameras
* fix
* clean diff
* clean diff
* add testJoystick only on body
* fix camera list
* remove reference to future service
* encode all cameras and swap in video track in webrtc
* clean
* explicitly gate bridge send
* clean leftover
* make local bodyteleop work still
* athenad and webrtcd updates
* remove feature stream services from webrtcd split
* remove cors
* clean
* remove unused
* remove extra try except
* add back exception trace
* clean diff
* clean diff
* add testJoystick only on body
* fix camera list
* remove reference to future service
* zero ll patched big model
* probe in a subprocess so usbgpu lock gets released
* compiles
* runs
* num_jobs gets overwritten, use side effect
* poll tg devices
* make sure build crashes on missing gpu
* fine not to rely on Device.default
* seperate tg env for each model runner
* comment
* Revert "seperate tg env for each model runner"
This reverts commit f6470cc4258eaeb3e8e37907ef370871c9af5aa4.
* env is shared, gate on flag
* no fallback warp dev must be set
* build for current device only, unless pc/release
* comment
* list
* listen for plug in
* add icon to status bar, read params on every frame (?)
* log available devices
* try copy out when loading?
* Revert "log available devices"
This reverts commit e8c52a5d59456d4820ecb13b99a6c46ea1386a20.
* Revert "try copy out when loading?"
This reverts commit 518f403aa03faeda1950fe3dbce0d9e4c1584455.
* don't trigger device probe/caching on modeld prepare
* re-export with ll and road edges
* dont cache devices in manager process
* get USBGPU from params
* no usbgpu env
* missed one
* sconscript don't poll
* unconditional env
* always explicitely set devices on input tensors
* set DEV so amd uses right compiler and iface??
* fix flag
* bump tg
* rm xdg_cache_home
* tg don't bump all the way
* missing gmmu=0 at compile time
* dm set dev
* tg backend
* update gitignore
* missing import
* unused imports
* rely on Device.DEFAULT at compile time (already the case bc onnxrunner)
* comments
* dm warp needs DEV set too
* build both smol and big
* misc typos
* set dev at compile time
* don't need
* DEV=CPU when getting metadata, ensure we don't grab gpu lock
* this would also grab lock
* put bool
* warp compile always prepare only
* missed one
* poll ui
* missing here
* don't force usbgpu at build time
* tmp patch fetch_fw
* catch all, follow hardwared patterns
* simpler
* compile make input queues
* revert this
* group this more readable
* rm empty line
* make dummy frame using numpy
* revert compile make input queues
* no compiler at runtime
* cleanup
* fine to rebuild all on change to device node for now
* fix usbgpu_present
* fix sconscript
* no size in header stream decompress
* DEBUG=2
* minimal viable feedback
* egpu gray
* oops
* gotta do this actually
* modeld build only depends on modeld devices
* don't ship onnx to release? or chunk
* don't need
* can only set compiler on dev=
* none device works, will use default
* make linter happy
* chunk agnostic onnx input to compile_modeld
* chunk big onnx
* +x chunker
* fix #!
* and don't ship chunked onnx to release
* firmware now in correct location
* better err on missing onnx/chunk
* SConscript also need to accept chunked onnx
* metadata also need to load maybe chunked
* dedupe cmd
* this needs to be on cpu
* devices are set in the tgflags, we already depend on them
* rebuilding on changed order is fine
* read file chunked can already load either chunked or not
* chunk all big onnx
* less confusing
* unused import
* python device to load onnx bytes
* default device for runners, python for metadata
* why not
* chunked to shm
process_replay/migration: drop transitive dep on long_mpc/acados
migrate_longitudinalPlan only needs get_accel_from_plan + CONTROL_N_T_IDX,
both available from drive_helpers + ModelConstants directly. Importing
from longitudinal_planner instead pulled in long_mpc -> libacados.so as
an eager side-effect, which downstream log-migration consumers (e.g.
commaai/xx pipeline) shouldn't pay for.
Brand-specific capabilities (hyundai_alpha_long_available,
subaru_has_sng) only resolved from CarPlatformBundle, which requires
manual car selection. Auto-fingerprinted vehicles had no bundle,
leaving these capabilities at default false — hiding vehicle settings
on the dashboard despite working on the device UI.
Add _resolve_brand_capabilities() with bundle-first, CP-fallback
pattern matching the device UI layouts (hyundai.py, subaru.py).
Fixes https://community.sunnypilot.ai/t/5126
* serverless code sync
* rm stuff
* we have ls-files for this
* rm
* no debounce
fix
* fix
* no del
* no init
* clean up
* clean up
* smol
* fixup
* rm
* clean up
* any change
* rm arg
* rm
* rm
* speedup slowest
* less setup
* rm som reset logging
* simpliy a lil more
* lil more
* down to 36s
* sleeeeeeep
* finishing touches
* oopsie
* ty fix
---------
Co-authored-by: Comma Device <device@comma.ai>
* filter lead prob
* rename
* try correcting model bias
* Revert "try correcting model bias"
This reverts commit b5e9b7147e58f200ca2e02ccea8adf88be99e206.
* fast gain slow lose
* cmt
* deb
* rename
* rename
* end
* py py py
* sunnylink too
* refactor
* this is not needed anymore
* mici mici
* ugh
* retry CI
* ui: refactor default model name handling
Move DEFAULT_MODEL constant into sunnypilot/models/default_model.py
and remove the one-liner common/model.py. Strip the hardcoded
" (Default)" suffix from the constant value so each UI site appends
it contextually, keeping the raw model name clean for the schema
payload to sunnylink.
Replace the DefaultModel param approach with schema["default_model"]
injected at schema assembly time, eliminating a redundant param write
on every sunnylinkd start. Remove DefaultModel from params_keys.h and
params_metadata.json.
Update update_default_model_name() to do a targeted regex replacement
instead of overwriting the whole file, since the constant now lives in
a module with other code.
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* ci: simplify cereal validation to sparse-checkout + pycapnp, drop scons build
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
* more
* fix: resolve cereal_dir to absolute path before passing to capnp.load
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
* ci: init opendbc submodule after sparse checkout to resolve car.capnp symlink
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
* try to break it
* Revert "try to break it"
This reverts commit 79ce135c5f.
* try to break it
* Revert "try to break it"
This reverts commit 1eaa9e79e6.
---------
Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
ui: nonblocking writes for ExperimentalMode + DriverView toggles + cycle-restart
All four put calls fire from the main render thread on user interaction
and block on disk fsync, causing visible UI frame spikes.
Each consumer is safe under nonblocking:
- onboarding inactivity_callback: write-and-forget (~25 ms saved)
- home long-press exp toggle: ui_state.experimental_mode owns visual state (~10 ms)
- onroad exp_button: $held_mode + selfdriveState owns visual state
- restart_needed_callback (OnroadCycleRequested): cross-process signal,
consumer is selfdrived which polls the param
BigParamControl-driven toggles in settings (developer.py, toggles.py)
are intentionally left blocking — those widgets refresh visual state
from disk every frame to mirror external changes, which would race a
nonblocking write.
* snap logic in scroll panel
* match previous snap speed
* velocity lookahead makes scrolling on main layout super easy
* turn off
* remove velocity lookahead
* cmts
* remove handle out of bounds
* cmts
* old style
* back
* clean up
* re-use
* revert
* finish snap when settings is clicked while moving
* rm cmt
* log raylib fps
* log fps from frame time
* whitespace
* or just log frame time?
* init pubmaster in init window
* yield timings
* bump ordinal
* dont log on screen off
* UInt
* lint
* /0
* oops
* oops2
* more precise raylib frame time, can get fps with 1/ft
* don't crash on screen off
* NL
* no _
---------
Co-authored-by: Shane Smiskol <shane@smiskol.com>
* 1
* fix
* uh
* more
* for now
* v2
* update
* more subs
* readme
* vehicle
* cycle init
* options
* new
* combine
* new
* dynamic unit
* default
* move it
* syncing more
* more
* boom shakalaka
* rearrange
* partial availability
* move
* more
* more
* hide
* move
* revert
* more
* new
* set
* sync
* dynamic
* slightly more
* update
* update
* less
* in another pr
* more
* move and fix
* device type
* order
* order
* order
* fixes
* ew
* Revert "fixes"
This reverts commit 53a2adb45a.
* sunnylink: bundle-first capabilities + protocol_version
Bundle-first brand resolution, fix steer_control_type to use
CP.steerControlType (physical) not lateralTuning.which() (tuning class),
add Subaru/Hyundai opaque per-platform flags from CarPlatformBundle, and
embed PROTOCOL_VERSION in the capabilities payload.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* sunnylink: tighten settings_ui gates against Raylib parity
Brand gates on MadsMainCruiseAllowed/MadsUnifiedEngagementMode (rivian +
tesla-no-bus); convert enablement->visibility on items Raylib hides
(DisableUpdates, EnableGithubRunner, EnableCopyparty, QuickBootToggle,
HyundaiLongitudinalTuning, LaneTurnValue, LagdToggleDelay); drop spurious
offroad_only on DynamicExperimentalControl + DisengageOnAccelerator and
SpeedLimit policy/offset over-gates; replace offroad_only with not_engaged
on AlphaLongitudinalEnabled/Toyota long toggles; extend release-branch
NOTs with is_sp_release; add Test Maneuvers section with attestation,
move LongitudinalManeuverMode in alongside new LateralManeuverMode.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* sunnylink: extend settings_ui validator for new fields
Add SchemaItem fields title_param_suffix (object form), needs_onroad_cycle,
blocked, requires_attestation; add option-level enablement to SchemaOption;
add visibility/enablement/attestation_required to PanelSection; add
not_engaged Rule type; replace vehicle_settings inline shape with
VehicleBrandSettings def (title/description/items).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* sunnylink: inject torque tune options from versions JSON
Read latcontrol_torque_versions.json at schema generation time and
override TorqueControlTune options so adding a version to the JSON
flows to the dashboard without editing settings_ui.json by hand.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* sunnylink: per-bug regression tests for settings_ui parity
Cover the audit findings end-to-end: MADS brand gates, Test Maneuvers
section + attestation, validator accepts the JSON, dynamic torque
options match the versions JSON, SP dev items gate on is_sp_release as
well as is_release, spurious offroad_only dropped from
DisengageOnAccelerator and DynamicExperimentalControl, and offroad_only
replaced with not_engaged on AlphaLongitudinalEnabled and the Toyota
long toggles. Validator test skips when jsonschema is unavailable.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* sunnylink: protocol_version sentinel + opaque-flag tests
Pin PROTOCOL_VERSION to KNOWN_PROTOCOL_VERSIONS so a bump shows up in
review, and assert subaru_has_sng / hyundai_alpha_long_available are
declared with safe False defaults.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* schema: convert ShowAdvancedControls visibility to enablement
Items previously hidden when ShowAdvancedControls is off now render
as disabled with an ADVANCED tooltip. Same treatment for dependency-
based hides (LagdToggleDelay, LaneTurnValue) so users see what's
available and why it's locked. CameraOffset gets the Advanced gate it
was missing.
Affected: DisableUpdates, EnableGithubRunner, EnableCopyparty,
QuickBootToggle, LaneTurnValue, LagdToggleDelay, CameraOffset, and the
test_maneuvers section.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* sunnylink: route resume_queued to athena direct
Backend is retiring the CloudFront proxy on stg.api.sunnypilot.ai that
currently forwards ws|settings|navigation to athena.sunnylink.ai. Once
retired, /ws/{id}/resume_queued only resolves via athena.sunnylink.ai.
SunnylinkApi.resume_queued now temporarily swaps self.api_host to
ATHENA_HOST while re-entering api_get (preserves the SunnylinkEnabled
gate and existing JWT/UA header handling). Other device calls
(device/{id}/roles, device/{id}/users, v2/pilotauth/, backups) continue
to hit the sunnylink main API host unchanged.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* legacy code
* no
* new
* tests
* lint
* fix
* too verbose
* sunnylink: per-page YAML authoring for settings_ui + named rule macros
Replace hand-edited 2200-line settings_ui.json with a per-page YAML source
tree under settings_ui_src/, plus named rule fragments (`$ref` macros) so
the same condition isn't repeated verbatim across items.
Authoring surface (settings_ui_src/):
pages/<page>.yaml one file per panel; sections/items/sub_panels inline
pages/vehicle.yaml per-brand settings (kind: vehicle -> vehicle_settings)
_macros.yaml named rule fragments referenced via {$ref: "#/macros/<name>"}
_schemas/*.json JSON Schemas for IDE autocomplete + CI validation
Pages today: steering, cruise, display, visuals, toggles, device, software,
developer, models, vehicle (10).
Tools:
compile_settings_ui.py read src tree, resolve $refs, emit settings_ui.json
(--check mode for CI to fail on hand-edits)
extract_settings_ui.py one-shot: settings_ui.json -> per-page YAML
apply_macros.py one-shot: substitute matching rule blocks with $ref
Rule-block dedup wins (top duplicates collapsed to single macros):
offroad (9x), longitudinal (4x), longitudinal_and_icbm (5x),
hide_on_mici (4x), advanced_only (3x), mads_full_platforms (4x ~30-line
nested any/all/not -> 1 macro + 4x one-line $ref).
Validator drift fixes:
- Accept not_engaged rule type (already in schema.json + used by
AlphaLongitudinalEnabled, ToyotaEnforceStockLongitudinal,
ToyotaStopAndGoHack, LateralManeuverMode, LongitudinalManeuverMode).
- Enforce {title, description, items} shape on every vehicle brand
instead of allowing bare-list variants.
Wire format unchanged: compiled settings_ui.json structurally identical to
the prior hand-edited file, so the device generator (generate_settings_schema.py),
SettingsCapabilities, and frontend renderer all keep working without changes.
Tests: 16 new compiler tests (roundtrip, $ref semantics, depth/cycle limits,
page-tree integrity, vehicle kind routing). Existing 42 regression tests in
test_settings_changes.py and test_settings_schema.py remain green.
README rewritten for the new flow:
- Decision table for offroad_only / not_engaged / param / capability
- Multi-condition composition examples (AND/OR/mixed/3-way/negation)
- Full feature walkthrough (multi-toggle + sub_panel + new macro)
- Workflows for changing rules, widget type, deprecating an item
- All How-To examples migrated from JSON to YAML
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* sunnylink: add `details` field for popover/modal help text
Adds an optional `details` field on settings items, distinct from the inline
`description`. When present, the frontend renders an info ("i") button on the
row that opens a modal with this content. Either field may be present alone,
or both together; an item with only `details` and no `description` shows just
the title + info button (no inline body).
Migrates `AutoLaneChangeTimer` as the first user: the safety caveat
("Please use caution when using this feature. Only use the blinker when
traffic and road conditions permit.") moves out of the inline description
into `details`, leaving the description focused on what the timer actually
does.
Schema changes:
- settings_ui.schema.json: SchemaItem.details (string, optional)
- settings_ui_src/_schemas/page.schema.json: Item.details (mirror)
- compile_settings_ui.py / extract_settings_ui.py: ordered after description
Frontend support lands in sunnylink-frontend on the design-overhaul branch.
Old frontends ignore the unknown key.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* ui: refactor UIStateSP init to eliminate getattr and double update_params
- Remove update_params() and reset_onroad_sleep_timer() from UIStateSP.__init__;
__init__ is now pure attr initialization with no I/O or side effects
- Add _sp_initialized flag to UIStateSP.update_params() to fire
reset_onroad_sleep_timer() exactly once after first real param load,
keeping the call in SP territory and out of stock _initialize()
- Replace getattr(self, 'has_longitudinal_control') / getattr(self, 'CP')
in _enforce_constraints with direct attr access; safe because
_enforce_constraints is only called from update_params(), which only
runs after UIState._initialize() has set both attrs
- Rename _enforce_sp_constraints → _enforce_constraints
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix
* exec
* more exec
* humanize
* sync
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
modem.py: retry identity read until valid; stay in INIT on partial reads
Under rapid SIM hot-swap stress, AT identity reads (CGSN/QCCID/CIMI/GMR) can return
empty values or echo the command itself. Validate each field before accepting it,
retry the whole sequence in a loop, and stay in INITIALIZING (rather than progressing
to SEARCHING) until imei and iccid are populated. Prevents stale/empty identity from
being published to /dev/shm/modem after a glitchy reinit.
* ui: speed up `mici/AugmentedRoadView` by optimizing _calc_frame_matrix caching (#36669)
speed up AugmentedRoadView by optimizing _calc_frame_matrix caching
* ui: apply rect.x/y as a 2D screen offset post-projection
Removes the parent rect's screen position from the cached
video_transform passed to ModelRenderer. Instead, ModelRenderer
applies (rect.x, rect.y) as a 2D offset to projected_points at draw
time.
Why this works: the rect.x/y term in video_transform gets multiplied
by P_calib[2] before the perspective divide, then divided by the same
value, which cancels out to a simple additive shift on the final
screen coordinate. So adding x to video_transform[0,2] is equivalent
to adding x to screen_x post-projection.
Net effect: the cache key in _calc_frame_matrix no longer needs to
include rect.x/y. Cache stays hot under translation (e.g. swiping
between layouts), and the model overlay tracks the camera at 60Hz
because the offset is updated cheaply each frame.
This addresses the original revert reason for #36669 (model overlay
visually desyncs from camera during a home<->onroad swipe).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* ui: update model screen offset every frame, not just on cache miss
set_screen_offset() was called inside the cache-miss path of
_calc_frame_matrix, so the offset only updated at ~20Hz (calib publish
rate). The model overlay visibly lagged the camera during a swipe.
Move it out of the cached path so it updates each frame.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fully clean up
* shorter cmts
* make non
* clean up
* fix ty
---------
Co-authored-by: Dean Lee <deanlee3@gmail.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* ui: keep arc_bar_pts cache hot when bar is translated
The LRU cache key included (cx, cy), which change every frame when
the parent widget's rect translates (e.g. during a scroll animation
in MainLayout). That made every cache lookup miss, recomputing the
arc geometry twice per frame and dropping fps.
Compute the shape at origin (so the cache key only depends on the
geometry: radius, thickness, angles), then translate to (cx, cy)
after. Cache stays hot under translation.
Measured on comma four (engaged, scrolling): ~5fps recovered while
moving between layouts.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fully clean up
* fully clean up
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix frame under text
* claude always taking the hard path
* cmt
* it still shows on start
* revert
* fix
* wait to show
* already a bug, don't fix here
* cmt
* cmt
remove ws_queue thread and associated api endpoint
- Simplified thread management by removing unused `ws_queue`.
- Eliminated `resume_queued` API call for better maintainability.
* update blob
* fixed
* didnt catch this
* add back
* needs BLC built in
* for real
* attempt2
* clean up override
* this should keep ox as was
* disable for OX
* update descs
---------
Co-authored-by: Comma Device <device@comma.ai>
* spellings
* unused
* no roll
* lil more
* lil more
* one more
* policy enum
* better trans
* set_timer -> set_policy
* set_timer -> set_policy
* no yaonet
* del redundant code
---------
Co-authored-by: ZwX1616 <zwx1616@gmail.com>
* c4 body ui
* clean up diff
* clean up
* default bodyview debug with True
* remove battery indicator and fix close settings bug
* organize debug file
* clean
* clean up frame index
* remove unneccessary is body check
* update bodyview
* remove joystick_debug_mode based events
* remove debug script
* apply suggestions
* clean diff
* clean diff
* move ignition message
* save a line
* remove visibility set and fix tici body face when sidebar open
* remove explicit textColor offroad message
* remove unused imports
* revert pairing dialog
* apply suggestions
* add body specific icon
* add body icon for homescreen
* set mode for state on tici after on body changed
* tiny
* tweak
* v
* tweaks
* icon ratio was wrong!
* same order
* rm
* apply suggestions
* remove commented lines in animation
* onroad click callback was on home bug and fix setup widget settings call back hack
* fix body changed
* one liner
* clean up
* formatting
* if false
* revert to master + reimplement
* close sidebar on body home tici
* make ignition message bigger on c3
* flip eye direction when turning
---------
Co-authored-by: Nick <nickorie@gmail.com>
Co-authored-by: Shane Smiskol <shane@smiskol.com>
* compile_modeld.py
* update estimates
* missing image=2?
* Revert "missing image=2?"
This reverts commit 2f5952eb63ba1e3f24cbf5769e6b5e9170d7f0a6.
* Revert "update estimates"
This reverts commit 1f72feef2ffdec6126e3c941e899b46ace7b4b65.
* Revert "compile_modeld.py"
This reverts commit f10541502efca02725f368deda2a21d1f786f57d.
* load warp in ModelState init
* dead code
* prep
* compile modeld
* update SConscript
* tmp save plot locally
* Revert "tmp save plot locally"
This reverts commit ec22f15161ad3b0241a097546b35860f989219f5.
* openpilot hacks?
* no float16
* tmp more chunks
* Revert "tmp more chunks"
This reverts commit 9e1d9b4d0dc36ff530d2a70b565fbfabd7afb00d.
* Revert "no float16"
This reverts commit 6204956e98e3c0818ed1985ede8eeccb810f63e3.
* realize boundaries
* Revert "realize boundaries"
This reverts commit ffaa19259eba70944e7793e8f51a0f87089531b3.
* prune=False?
* Reapply "tmp more chunks"
This reverts commit 2599c41cea93b4a6b4e946cdffc6a617663a7d23.
* tg bug?
* load first?
* Revert "load first?"
This reverts commit f643d082d76a424b23295e254179eb111e936e61.
* revert
* Reapply "tmp save plot locally"
This reverts commit 1b95b82ee58654bd908b1cb04ab0ddbcd1a5955d.
* 0 tol pc
* warp -> modeld
* rename
* bypass chunking?
* dont chunk
* Revert "dont chunk"
This reverts commit cc97fc67b3203456e123f02babe5c83b87c7e264.
* dont chunk
* debug
* Revert "debug"
This reverts commit b3c2f2e7a095fd32f8d8562a68fd1cca42357eac.
* Revert "dont chunk"
This reverts commit 42bd9b6f6ad0722c50348ba11ba7e2a64fdf997d.
* Revert "bypass chunking?"
This reverts commit ad5422a93483ffd8a59ba62e5fb72ced3b5d04d0.
* corrupt model outputs
* Revert "corrupt model outputs"
This reverts commit 245feb94480e02f83a20b65a9488652bcbfc88b0.
* image=0 for warp, match master
* dedupe enqueue
* pass traffic convention
* tg buffer for desire
* dedupe buffer creation
* compile_modeld: nuke stale cached pkl before compiling
The UNSAFE CI checkout keeps gitignored files (.pkl, .sconsign.dblite),
so stale pkl files from previous commits can persist and be reused
instead of being recompiled. Delete them explicitly before compiling.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* test vs compile
* all outputs need to be different on different inputs
* randomize numpy inputs
* randomize on every step
* SConscript: nuke stale pkl+chunks before compile_modeld
Move the stale artifact cleanup from compile_modeld.py into the
SConscript build command. This ensures stale gitignored pkl and chunk
files are deleted even if scons decides to skip the compile step
(due to a stale .sconsign.dblite from UNSAFE CI checkout).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* compile_modeld: restore Context(IMAGE=0) for warp
The warp operations must run under IMAGE=0 to avoid QCOM image texture
optimizations that corrupt the output buffer after ~33 frames.
This was accidentally commented out in a855173.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* modeld: create SubMaster before model loading
Move PubMaster/SubMaster creation before the model loading step.
During model loading (3.5s+), process_replay may send liveCalibration.
If SubMaster doesn't exist yet, the message is dropped and the warp
transform stays as zeros, producing garbage warped images.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Revert "modeld: create SubMaster before model loading"
This reverts commit 968c987c2fbb3fce141c4e345d10ddea559b6c50.
* stale metadata?
* claude debug
* Revert "claude debug"
This reverts commit 49e754c6affa45a8ea8834588a00227b8090b17a.
* Revert "stale metadata?"
This reverts commit 870388513c0d4a67dcf970cd277b6db56cb2b478.
* modeld: realize jit outputs before parsing
* Update modeld.py
* modeld: fix NameError by removing redundant MODELS_DIR definition
* test buffers in test vs. compile
* 2x inputs before running
* fixup 2x inputs test
* realize onnx weights?
* Revert "realize onnx weights?"
This reverts commit 49c8b9a505db38ff22f342db011a3a6b6526d398.
* move openpilot_hacks flag to sconscript
* stricter test vs compile
* correct timings
* more run more fail?
* Revert "more run more fail?"
This reverts commit 9e94bb63940751ec29e81b634c42449113e1f2e5.
* numpy shenanigans
* correct shapes
* dont assert timings for now
* Revert "correct shapes"
This reverts commit 5b9ff6c84c0022327d21801d179e9e51c39e8f78.
* Revert "numpy shenanigans"
This reverts commit b4f6fb3078d7e9b09698895b88728fd8eea8c8a8.
* no need to nuke
* comment unused
* don't use NPY device
* copy instead of from_blob
* to device before jit
* Revert "to device before jit"
This reverts commit 7a59ed9b1ac88657b5a3917986b6ff92e59a2ee3.
* Revert "copy instead of from_blob"
This reverts commit 196c4892a06ffba89ef631876372cecf137cc1b4.
* Revert "don't use NPY device"
This reverts commit 18abf43bbac46ad47a60c03dd8d1ef40b3f59227.
* 3 runs is enough
* no_memory_planner=1
* lint
* restore model_replay.py
* on policy -> policy
* unused
* prepare only enqueues full images
* warp with image=2?
* unused args
* test vs compile, check different inputs different outputs
* avoid uop cache collision
* dont need realize here
* misc
* input queues diverged
* strict zip
* monkey patch for now
* memory planner
* prev desire correct order
* dedupe pkl paths / compile targets
* don't change behavior, warp and enqueue frames when skipping model eval
* actually prepare only
* warm up warp jit
* correct path
* oops
* explicit warmup
* need continuous + can't have dupplicate jit inputs
* whitespace
* bufs -> input_queues
* master tg
* /N_RUNS
* bump tg, remove uop cache patch
* more readable
* Revert "bump tg, remove uop cache patch"
This reverts commit 499acca2591becd389de4025943f9e776a5b337c.
* missing dep
---------
Co-authored-by: Bruce Wayne <harald.the.engineer@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* always offroad ui
* remove
* lint
* better
* fix sync issues
* fix sync issues
* update for upstream sync
* move it all to top settings panel
* not red
* no home screen, just buttons
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* turn off ir leds on notCar
* reduce startup time on notCar
* fix: check notCar once after onroad is true
* save a disk read by using existing is_onroad
* [TIZI/TICI] ui: remove per-frame param sync
* fix: prevent params.put skip in OptionControlSP by deferring mutation to set_value
The idempotent guard added in the previous commit was being bypassed because
_handle_mouse_release mutated self.current_value before calling set_value(),
making the check always return early. Now we calculate the new value and pass
it to set_value, allowing the guard to work correctly and params to persist.
* fix: enable touch validation for visible items in TreeOptionDialog during scrolling
* rebuild scroller and call add_widget instead
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* model panel - give it some love
* fix sync issues
* update for upstream sync
* fix label
* not red
* fav models
* uhh, yeah
* handling for downloading state
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* NNLC: restore pre-v1 PID gains in torque extension
When the torque lateral controller was refactored for v1 (VERSION=1),
the NNLC extension's PID gains were inadvertently changed from the
per-vehicle defaults (kp=1.0, ki=0.3, kf=1.0) to the new base
controller values (kp=0.8, ki=0.15, no kf with speed interpolation).
The NNLC extension operates in torque space with its own PID loop
that is independent of the base controller's lateral acceleration PID.
Coupling these gains to the base controller's values results in
noticeably weaker steering response and ping-pong oscillation for
NNLC users, with no workaround since Enforce Torque Lateral Control
and NNLC are mutually exclusive.
This restores the original PID gains that were used before the v1
refactor, matching the behavior from v2025.003.000 and earlier.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Remove k_f from PIDController init
k_f was removed from PIDController in the v1 refactor. The old
k_f=1.0 was a no-op (feedforward scale of 1.0), and the current
PIDController applies feedforward unscaled via update(), so
behavior is unchanged.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* Revert "OP model 7 (#37760)"
This reverts commit 052692b25d.
* Revert "OP model (#37740)"
This reverts commit cb32793300.
* dead
* parse_model_outputs: drop extra space
The plural `git/refs/heads/{bucket}` endpoint does prefix matching
and returns a list when multiple refs share the prefix, which makes
`r.json()['object']` raise TypeError. Switch to the singular
`git/ref/heads/{bucket}` endpoint so we only match the exact bucket
and get a clean 404 otherwise.
* services: increase logMessage queue size
logMessage and errorLogMessage defaulted to SMALL (250KB) after
bcdeec3133, but logmessaged allows messages up to 2MB. The msgq
assert requires 3 messages to fit in the queue, so any log message
over ~83KB crashes logmessaged. This happens on dirty devices when
updated logs the full git diff output.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* use BIG queue size to fully cover 2MB cap
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Update Python packages
* need this
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* bump tg
* bump tg
* assign
* bump
* cpu llvm
* frame buffer updated in place, no need to return
* don't bake in stale pointers
* fix update image output indices
* lint
* bump
* replay: add dragging gesture support
* update dragging to support distance and duration; update mici script to go through settings
* refactor
* fix and add network
* add more
* interact device
* fix
* match statements
* more
* improve
* simplify script
* add keyboard test
* format
* simplify
* improve
* comment
* improve
* clarify
* clean
* simplify
* simplify
* move
* improve
* more delay
* simplify keyboard test
* simplify
* comment
* add onroad alert tests to mici
* scroll less
* test offroad alerts
* remove space
* scroll faster
* more toggle tests
* back to home
* test settings onroad
* fix pairing qr code
* add replay progress bar
* add replay progress bar
* simplify
* correct comment
* remove _
* we don't need this
* change click
* add return types
* fast typing
* use frames instead
* use frames instead
* update
* disable in CI
* +1
* fix script
* refactor how mici replay script cases are built
* refactor
* refactor: rename helper function for exploring settings in build_mici_script
* remove onroad settings check
* refactor
* simplify
* refactor: use explore_setting in more places to reduce duplication
* add type
* refactor: simplify explore_cases function by removing swipe_wait parameter
* add case to open wifi selection
* refactor: enhance run_actions to support after_each callback for interaction tests; rename explore_cases to scroll_through_cases
* add review training guide
* update comment
* comments
* comment
* fix swipe back
* scroll: use iOS-style weighted velocity averaging for fling
Weight older velocity samples more heavily on finger release to produce
more consistent fling velocities. The last touch samples before lift are
noisy (finger decelerating, rotating, jittering), so we trust the earlier
steadier samples more: 60% oldest, 35% middle, 5% newest.
Reverse-engineered from iOS UIScrollView by the Flutter team.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update system/ui/lib/application.py
* Apply suggestions from code review
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* modeld: quiet do_chunk output during scons build
SCons default-prints Python function actions with all their args.
The do_chunk function has 1259 tinygrad source files as deps, causing
a wall of text during builds. Wrap in SAction with a short strfunction.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* split compile and chunk into separate Commands
cleaner fix: do_chunk only depends on the pkl, not tinygrad files
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* actually epic
* use child
* inside label
* revert other stuff
* no reset_shimmer: bool
* try 2 char
* not worth dynamic chunking
* bring back
* rm
* no emoji support on shimmer
* pandad: filter out external panda
* fix
* internal panda
* move it even higher
* this
* should be this still
* anoter
* more
* 1 more time
* bruh
* try this out
* revert
* gotta do this after
* filter
* fix pairing qr code
* test pair device
* merge and pick from explore-more
* key
* fast click
* again
* add branch selection test
* click uninstall
* test prime states
* view regulatory
* test expand calibration desc
* override interactive timeout
* reorder
* remove todo
* update
* clarify
* test reset calibration
* update
* add calibration params test
* comments
* reorganize
* clarify
* add click through training guide
* this wasn't atomic!
* start mici
* always require internet to download installer
* this made it never use cached fetch!
* this skipped installer when it wrote it raced trying to run
* entirely remove
* clean up mici
* fix tici setup
* inline
* works
* more explicit pass texture like everything else, esp since sizes are not all same
* fix some confirmation dialog images
* fix image sizes
* do bigbutton
* fix
* static
* try this
* clean up and use it
* clean up
* simpler
* do this later
* do onboarding & reset
* do setup
* temp
* Revert "temp"
This reverts commit 22fbbf5c813b4915e784b9ee235ed3bde2229048.
* simpler again
* missing size
* fix
* Revert "fix"
This reverts commit 53c4e29e614181029dc8e9a2baea7694957dc8fb.
* nl
* Smooth
* Min lat accel range
* Make the moving average masked
* Bring back the range
* Update test
* Smooth desired signal too
* Diff
* Gaussian
* Fix fmt
* Remove newline
_shake_start defaults to None, but `None or 0.0` treated it as
time zero, so any button rendered within 0.5s of window creation
would play the shake animation.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* try this
* try this
* fix
* delay hide on wifi/internet
* 0.5
* fix flash on forgetting
* also reset
* fix
* todo
* dupl
* wifi after
* bring back cmts
* fix spotty internet check while downloading!
* cmt
* cmt
* todo
* resort
* more delay
* redundtant
* nl
* scroll over for wifi (waiting) OR internet (continue)
* fix scroll
* fix scroll
* show_event fully manages its scroll over, not some weiird delay mixed with other triggers via fake rising edge
* instant if not popping
* cmt
* better update flow
* clean up
* clean up
* cmt
* clean up
* todo
* failed scroller
* fix for setup
* show wrong url
* setup failed is red not orange
* clean up and fix all flashing in setup
* new updater zipapp
* fix deadlock from agnos.py throwing timeout errors, never hitting failed screen! + try catch the whole process for errors while starting process
* add todo
* set core affinity like setup in updater
* fix import
* rezip
The Python file downloader was making a separate HTTP Range request per
1MB chunk via URLFile.read(), causing massive latency overhead. Use a
single streaming GET request instead, matching the old C++ behavior.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* pressed state for larger sliders
* wifibutton
* fix
* clean up
* some work
* don't nee this now
* stash
* more
* new pressed bigcircle
* black
* interp
* just check position
* clean up and fix slider reset
* fix custom
* no speed
* stash
* even chatter couldn't figure this one out
* makes sense to combine together, less split mentality
* clean that up
* fix lag
* match ui.py prio to eliminate lag on wifiui show event. separately, why is this slow?
* night mode
* delay scroll over
* fix auto scrolling
* stash
* waiting looks disabled
* clean up and don't reset sliders until user goes back
* rm
* fix
* add termsheader back
* fix callbacks
* ctrl alt l
* fix text spacing
* clean up
* stash
* fix style
* i want to go back
* guard on exit
* kinda useless stuff
* Revert "kinda useless stuff"
This reverts commit a4acbac31523408f358c5f68262cb630aa13ad8e.
* Revert "guard on exit"
This reverts commit 63ccfbf64edfbe1a144a441681f5ec78d8021ff7.
* wide
* setup pressed!
* grow animation
* 10s after initial
* slow fast
* start onboarding (terms)
* rm duplicate page
* add qr code
* final grey
* fix visual lag on first start
* clean up dead code
* dont exit from cancel
* revert grey
* clean up, REVIEW ME
* Revert "clean up, REVIEW ME"
This reverts commit c66fa60947c5f922520e7cf58c630b4bbe2d0177.
* reboot slider
* kb fix
* Revert "kb fix"
This reverts commit 883039448e6c37ae1d25d4f75ada6e96b6736358.
* ./ goes to letters
* Revert "./ goes to letters"
This reverts commit 0d97442427edb1a000638863a3f2181204ddc160.
* clean up
* some more clean up
* more
* clean up
* rename block
* reset pending scroll so it can't use stale data in rare sequence
* remove unused assets
* clean up imports
* fix updater
* clean up
* fix double reboot
* demo time - reset to setup on reboot
* let manager restart
* Revert "demo time - reset to setup on reboot"
This reverts commit 9468657e8438a1ce8fcb5266403b7bb3539f131f.
* url... and no grow animation on start button
* one next button
* grow instead of shake wifi button
* 36 pt font size in setup
* touch up onboarding a lil
* Revert "rm cpp bz2 (#37332)"
This reverts commit f4a36f7f74.
* more onboarding and clean up
* clean up
* wow what an amazing future clean up
* back to software select
* fix
* copy
* fix dm confirmation dialog not disabling widget underneath, all fixed with real nav stack in here
* uploading
* lint
* add review terms to device w/ close button
* todo
* remove old Terms vertical scrolling classes
* use new Scroller!
* installer
* tweak to match figma exactly
* revert
* fixup updater
* demo day
* demo day v2
* ... for percent while finishing setup
* demo day v3
* demo day v4
* remove ...
* demo day v6 -- "why does it do that!!"
* demo day v7 -- no flash
* hmm
* demo day v7
* prebuilt
* revert demo day
* scroll after pop animation
* back -> retry
* stash fixes
* damn, need back_callback
* scroll over immediately if already in network setup
* tweaks
* going down is confusing
* more
* Revert "more"
This reverts commit 29ce75b1f81eb40e7527a71d27842d9a66802206.
* Revert "going down is confusing"
This reverts commit 0cd2ae30d4135db1ccba6478429b45e886714e9c.
* dupl
* nl
* sort functions
* more clean up from merge
* move
* more
* dismiss to download (hack)
* Revert "dismiss to download (hack)"
This reverts commit 53c45ed1f63db1f0cebbce0dfab1777c8658f505.
* onboarding work
* set brightness and timeout in root onboarding only
* clean up
* type
* keep 5m for settings preview
* switch back to letters on . or /
* reset first step scroller
* custom software warning goes down network comes up and back cb fix
* clean up
* smaller qr
* ReviewTermsPage just for device as NavWidget
* clean up
* installer: stay on 100%
* reset has internet while in wifiui
* try this
* try this
* see what error we get exactly
see what error we get exactly
* not final solution but see how good
* rm
* copy changes
* reset on disconnect
* for separate pr
* Revert "reset on disconnect"
This reverts commit 552372fa4d497ba7d9de7f2edb730ee63798ffa4.
* revert this, too buggy
* fix for updater
* sort
* fix test
* minor cleanup
* more leaks than this rn
* onboarding clean up
* clean up application
* click delay to small button
* clean up
* reset more state
* fix training guide not cleaning up driverview
* Revert "fix training guide not cleaning up driverview"
This reverts commit cac7c5f436056cc9e747f80905d390790fb83c22.
* simpler fix :(
* nice catch, if you go back to terms it will reset 300s timeout and brightness
* duplicate show
* unused
* vendor libyuv from dependencies
* relock libyuv to latest vendor branch
* install cmake in macOS setup when missing
* lock
* unused?
* rm that
* no yuv for the larch
* pressable
* slow
* fast and looks great
* 0.075
* clean up
* fix missing
* clean up
* mici setup use nav stack!
* remove flat state!
* todo
* clean up
* clean up ordering
* clean up
* reset progress on show, dont mutate nav stack from thread
* reset text on show too
* rename
* clean up
i18n(fr): Add French translations for sunnypilot UI
Update 36 existing French translations with corrections and add
369 new sunnypilot-specific translation entries.
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
Handle exceptions in `getParamsAllKeysV1` to prevent crashes
- Added `try-except` block to improve error handling during key parsing.
- Ensures robustness by logging exceptions and re-raising them.
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* jenkins: move panda tests before camera tests
* force this time
* Revert "force this time"
This reverts commit 53508225d39d63b97ff7ecc3a0181a27b5948d1b.
* mici init
* obv
* hybrid
* adapt
* less
* consolidate
* oops
Refactor speed limit alert function to use car state directly.
* no event border for tizi/tici
* abstract it
* less
* nah
* mici init
* obv
* hybrid
* adapt
* less
* consolidate
* oops
Refactor speed limit alert function to use car state directly.
* no event border for tizi/tici
* abstract it
* too soon junior
* refactor
* i like this better
* clean up
* debug
* fix able to click navwidgets that are closing (tested at rc 10)
* add dismiss guards
* fix keyboard so it unselects
* pairing: use dismiss
* main todo
* rm pop_widgets_to!
* reset dismiss state on show event
* debug pop animation bugs
* Revert "debug pop animation bugs"
This reverts commit 9239f2e12cf79b1f75d15d39262fdd15ff5a5200.
* revert
* cmt
* type
* clean up
* now do the todo
* treat using widgets, not idxs, as a separate clean up for later
* actually if not navwidget this is buggy
* fix
* short
* simpler
* clean up
* more
* great clean ups
* better name
* remove useless _can_swipe_away
* reorder
* rename
* state machine is nice but might be too much
* Revert "state machine is nice but might be too much"
This reverts commit f8952969243a2eac3ed5f84793ba7b0c0cdf24bf.
* got a better name out of it though
* clean up
* clean up
* rm!
* rm
* and this
* and
* clean up
* stash
* widgets animate out
* Revert "stash"
This reverts commit eac3493509cff6f2c64111d803c7fef21a1aa2dd.
* abstract
* works also
* works also
* support pop_widget
* only animate top
* callback in request pop
* tune it
* fix
* fix
* try this
* Revert "try this"
This reverts commit 191373a1b35917ee3a361afe73b16eeb60d0a20e.
* debug
* debug
* clean up
* simple test
* clean up
* clean up
* clean up
* clean up
* clean up
* clean up
* clkean up
* re sort
* fine
* yes
* ui sync conflicts with upstream
* md
* ref
* ci
* lint
* more
* more ci
* new new
* tools: block `manage_sunnylinkd` in sim startup script
* try this out
* unbump
* chore: sync tinygrad
Runs great in sim. now we need to rebuild some models
* oops forgot to unblock this after testing
* helpers
* oh yeah
* latest tg
* this wont do anything empriically
* reduce complexity
* okay lint
* Update tinygrad_runner.py
* Update modeld.py
* Update build-all-tinygrad-models.yaml
* tinygrad bump
* Update modeld.py
* Update tinygrad_runner.py
* bump
* Update SConscript
* Update SConscript
* com
* Update fetcher.py
* Update helpers.py
* life is froughtless, when you're thoughtless
* lint
* ozdust ballroom
* shiz
* Update tinygrad_runner.py
* Update tinygrad_runner.py
* slough it off as i do
* try old support one last time
* support mixed input dtypes
* use internal
* dont need that shiz
* Update fill_model_msg.py
* Update onnx_runner.py
* Update onnx_runner.py
* Update model_runner.py
* see if this speeds up execution
if not, revert me
* no
* Update helpers.py
* rebase
* more
* planplus
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* add back bz2 support with vendored bzip2
Reverts f4a36f7f7 ("rm cpp bz2") to restore bzip2 decompression
support in replay/cabana tools, and replaces the system libbz2-dev
with a vendored bzip2 package from commaai/dependencies.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* relock bzip2 from releases branch
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* test wifi state machine
* clean up and another few tests
* no unittest :((
* clean up
* clean up
* try to repro on device
* try to repro on device
* nice, the flicker is covered by test_user_initiated_skips_dbus_lookup!
* add todo soon to be all fixed
* documentaiton
* test the thread races too
* _fire -> fire
* duplication
* new state
* fix some tests
* format
* combine similar tests
* use process_callbacks
* clean up
* collapse two tests
* rm nl
* previous messy test
* delete old
* asked another to ask questions
* flasher for Rivian long upgrade
* self-contained no dependency on Panda.F4_DEVICES
* standalone flasher
* move to sp module
* use brand field directly
* use brand field directly
* use brand field directly
* bump
* add some logging
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* soundd: trigger timeout warning during MADS lateral-only
The selfdrive timeout alert (warningImmediate) only fires when
selfdriveState.enabled is True. During MADS lateral-only mode,
enabled is False even though the system is actively steering.
If selfdrived stops publishing while MADS lateral is active, the
driver gets no audible warning that steering has become unresponsive.
Add selfdriveStateSP to the SubMaster and check mads.active alongside
selfdriveState.enabled so the timeout alert fires whenever the system
is actuating steering.
* test_soundd: add MADS lateral-only timeout test
Test that the selfdrive timeout warning fires when selfdriveState.enabled
is False but selfdriveStateSP.mads.active is True.
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
The `steer_limited_by_safety` update in `publish()` is gated by
`selfdriveState.active`, which is False during MADS lateral-only
control. This causes the flag to never update once cruise deactivates
— it stays stuck at whatever value it had during the last ramp-up
(typically True), permanently suppressing the saturation timer in
`_check_saturation` and preventing the "Turn Exceeds Steering Limit"
alert from firing.
Use `CC.latActive` instead, which already accounts for MADS via
`get_lat_active()` in ControlsExt.
Bug was introduced in #446 (MADS), which updated `CC.latActive` to
use `mads.active` but missed updating the `steer_limited_by_safety`
gate in `publish()`.
* should fail
* this works but i think i know a better way
* something like this
* hmm
* this works
* rm useless test
* good stash
* Revert "good stash"
This reverts commit c2dddf0810286cb56e2418dd6f7085c2239e5109.
* replace python3-dev apt install with vendored package
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* keep for agnos
* cleaner
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Reapply "feat(lpa): `at` client + list profiles (#37271)" (#37322)
This reverts commit ddf8abc14a.
* lpa: fall back to ModemManager D-Bus when serial port unavailable
On older devices, ModemManager still claims /dev/ttyUSB2, so the
direct serial open fails. Try serial first; if it can't be acquired,
transparently route AT commands through MM's D-Bus Command() interface.
Co-authored-by: Cursor <cursoragent@cursor.com>
* lpa: add serial/dbus transport labels to debug logs
Co-authored-by: Cursor <cursoragent@cursor.com>
* no
* lint
* here
* const
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
* disable forget for tethering
* nets
* put in wifiman
* batch
* Revert "batch"
This reverts commit 9af20c1c7513c22bf9283b2f02514373fa981f50.
* clean up
* more
* more
* use vendored eigen from dependencies repo
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* lock
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* use vendored zeromq from dependencies repo
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* lock
* rm more crap
* use vendored git-lfs from dependencies repo
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* from releases
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* rm extra LLVM install on macOS
* update that
* rm brew cache
* no cache
* Revert "no cache"
This reverts commit a3f8eff234935d4bb27d4bd785ad8a710496a159.
* use vendored zeromq from dependencies repo
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* lock
* rm more crap
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* start
* start
* lil more
* add forget
* fix forget button scrolling
* push right a bit
* fix forget press
* add divider
* fix scroll panel
* better forget and overriding
* revert this
* check icon
* cursor merge conflict fix
* fix rounding and forget btn placement
* scroll indicator
* 65%
* calibrate
* try loading animation
* push to device
* top right
* bottom right
* no red
* top left
* bottom left
* down 2px
* WHY DOES NETWORK MANAGER KEEP CRASHING AHHH
* reduce round trip calls in update_networks
* clean up and combine getallaccesspoint and activeaccesspoint
* cmt
* animate big button over smoothly. super hacky, need to clean up
* animate
* remove old widgets and images
* remove status label, tune loading animation opac back
* connecting is a little buggy still
* add back missing network and don't pop
* some fixes
* "clean up"
* fix lag in animation
* fix adding saved connection to start
* remove saved network to start, divider
* animate up, over, and down
* revert for now
* remove fancy complex animation for now, sorry nick
* remove divider + clean up
* more clean up
* more clean up
* fix forget button press
* cmt
* tweak loading animation behavior
* new lock fix wifi
* rm old lock
* great catch by opus
* clean up
* debug
* fix touch events that are down -> up in one frame (why it only bugged on mici)
* clean up
* eager forgetting
* this SHOULD be full eager forget, more than i thought
* fix wifi slash positioning
* move forgotten networks after saved networks
* temp keep
* test on device
* fix
* see 65
* 5 best
* fix double render double brightness
* can click bottom right now
* disable touch while animating
* fix animation
* can scroll while animating, not tap
* not great yet
* clean up
* didn't work
* always update networks after activation
* stash
* move to update_state
* debug
* debug
* temp
* fix ip and metered flickering when updating at high freq (or rare race condition)
* fix
* if you give it less than 8 chars it never clears connecting
* lock no int
* better wrong password handling
* shake when wrong password
* nm set connecting when it connects on its own
* loading bottom right
* sort connecting first
* sort by unquantized to put strongest first
* clean up
* clean up nm
* clean up nm
* shorter
* fix crash
* 0.5s
* debug
* revert and try something else
* stash
* no
* rev
* use signals
* more
* not wrong password if ever connected after wrong
* similar to gnome shell, don't save connection that never successfully activated.
we do this by creating temporary memory connection with persist: volatile that deletes itself if failed, and then only write to disk when activated
* clean up
* cover all states
* clear if connecting too
* remove pritn
* might need this for CoxWifi
* whoops
* save last pass
* Revert "whoops"
This reverts commit 83a133955246ce32dcf119ededd8b01b3162a866.
* Revert "might need this for CoxWifi"
This reverts commit cddb8b35be152ed154462b188283f9d5a844583d.
* this may be less noisy for low strength networks, but less accurate as previous was reflecting nm state better
* Revert "this may be less noisy for low strength networks, but less accurate as previous was reflecting nm state better"
This reverts commit 740286c846556f32125a96bfe6ecf128300af0d8.
* race condition with volotile not removing conn fast enough/update networks not firing fast enough
* Revert "save last pass"
This reverts commit 7249a58a18b11487fd0370cee36e40a17f7ac521.
* revert some wifiman stuff to master
* not needed
* rm active ap
* remove old dead code
* do after
* always send forgotten callback so we can't be stuck in forgetting state forever
* reproduce race condition where connection removed signal takes a while to remove, then update networks keep is_saved true
* fix from merge
* nice, we can remove some eager code now for treating is_saved as not saved after forgot since it's live
* more
* rm
* simplify passed in callbacks
* clean up
* need this one check back for wrong password to hide forget for a split second
* opus says this is simpler 🤔
* Revert "opus says this is simpler 🤔"
This reverts commit 71472e5b383d7f2083d95ba1188070f41ae14775.
* another attempt
* Revert "another attempt"
This reverts commit 31f30babe656f9cad24399bc2196bb6e7ab79bbd.
* fix from merge
* some lcean up
* fix
* fixes to make work with new animation
* clean up
* this works too
* simplify loading animation behavior for now, revert wifi scan time
* clean up
* temporary fix
* stash
* Revert "stash"
This reverts commit 7471dbdc452807b33b4868a98dd8565681b2e44d.
* stash
* Revert "stash"
This reverts commit e0e5e6e861734320ce5dea5626086784577cb334.
* this check was because is_connected could have been stale from Network as the source
* nm can show connected/connecting to network with 0 aps for a while if strength is low, move out of range under those states
* stash
* Revert "stash"
This reverts commit 5ec3b454d54392523947f6477f551657d3863a6d.
* todo
* todo
* order
* don't need temporary fix anymore
* cmt
* order
* unused i
* stash
* test seemed to work
* simplify
* clean up
* move under
* Revert "move under"
This reverts commit ce940cffb32378cbe5a69edaf6fc9d9cec202e54.
* back
* fix
* already 90% of the way there and not 144 lines
* nice
* lift properly
* lift, wait, move, wait, drop!
* some clean up
* epic, he ran a simulation to turn opacity filter into pixels
* scroll independant move animation without layout!
* move into function
* clean up
* rm
* overlay behind moving item
* Revert "overlay behind moving item"
This reverts commit 598e22363eb66af6496fe5f1eea8e643d4c2adbb.
* simpler overlay under lifted item
* support multiple animations at once
* Revert "support multiple animations at once"
This reverts commit 3ce6c8281053ee4831ceb88cacf66c343fc7d7ff.
* clean up
* cmt
* clean up
* kinda works
* Revert "kinda works"
This reverts commit ff050c6afc058788b3189a0acc202ada17353504.
* clean up
clean up
* clear overlay
* diff report
* don't break more
* split nav widget out
* clean up
* clean up
* fix
* work
* small enough to not be function
* nah we want intflag
* clean up
* always runs
* more clean up
* prep for scroller
* opacity for settings
* clean up layout
* set enabled
* rm
* initial
* start to support nav stack in settings panels + fix some navwidget bugs
* add deprecation warning and move more to new nav stack
* fix overriding NavWidget enabled and do developer panel
* fix interactive timeout and do main
* more device, not done yet
* minor network fixes
* dcam dialog
* start onboarding
* fix onboarding
* do mici setup
* remove now useless CUSTOM_SOFTWARE
* support big ui with old modal overlay
* reset can be old modal overlay, but updater needs new since it uses wifiui
* flip name truthiness to inspire excitement
* all *should* work, but will do pass later
* clean up main
* clean up settiings
* clean up dialog and developer
* cleanup mici setup some
* rm one more
* fix keyboard
* revert
* might as well but clarify
* fix networkinfopage buttons
* lint
* nice clean up from cursor
* animate background fade with position
* fix device overlays
* cursor fix pt1
cursor fix pt2
* rm print
* capital
* temp fix from cursor for onboarding not freeing space after reviewing training guide
* fix home screen scroller snap not resetting
* stash
* nice gradient on top
* 40
* 20
* no gradient
* return unused returns and always show regulatory btn
* nice!
* clean up
* new_modal is always true!
* more clean up
* clean up
* big only renders top 1
* fixup setup and updater
* stash
* Revert "stash"
This reverts commit 3cfb226ccb51869ed1f7d630b5fdd6725ad094d5.
* fix mici keys coming in from top
* clean up
* fix mici dialogs like tici, pop first incase call back pushes
* clever way but not not
* Revert "clever way but not not"
This reverts commit f69d106df61262f049df20cc1a9064ca1e6feeb7.
* more setup
* mici keyboard: fix not disabling below
* cmt
* fix wifi callbacks not running in rare case
* clean up network
* clean up network
* clean up dialog
* pairing
* rm
* todo
* fix replay
* they push themselkves!
* clean up ui_state
* clean up application
* clean up
* stash
* Revert "stash"
This reverts commit 07d3f5f26c99ef891086b6fe03095d53a62b8631.
* typing
* lint
* Chunk tinygrad pkl below GitHub max size
* pull that out
* rm glob
* make work
* Single name def
* unused comment
* more cleanups
* revert that
* 10MB overhead
---------
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* feat(lpa): implement list_profiles in TiciLPA
Add AT command serial interface, TLV parsing, and ES10x transport
to support listing eSIM profiles (SGP.22 v2.3). TiciLPA is a
singleton that maintains a persistent connection to the modem.
* feat(lpa): close TiciLPA serial connection on exit
Register atexit cleanup so the logical channel and serial port are
released when the process exits, even on crashes or early exits.
* feat(lpa): close stale logical channels on init to prevent timeouts
* trying to brick it
* Revert "trying to brick it"
This reverts commit 46a0467314479c92d2cf331280521a1263f6cc43.
* feat(lpa): remove ensure_capabilities check on init
Target devices are known to support the required AT commands,
so skip the capability probes and stale channel cleanup to
speed up initialization.
* feat(lpa): enable debug logging via DEBUG=1 env variable
* muuuch better
* revert
* cleanup
* constant
* initial
* start to support nav stack in settings panels + fix some navwidget bugs
* add deprecation warning and move more to new nav stack
* fix overriding NavWidget enabled and do developer panel
* fix interactive timeout and do main
* more device, not done yet
* minor network fixes
* dcam dialog
* start onboarding
* fix onboarding
* do mici setup
* remove now useless CUSTOM_SOFTWARE
* support big ui with old modal overlay
* reset can be old modal overlay, but updater needs new since it uses wifiui
* flip name truthiness to inspire excitement
* all *should* work, but will do pass later
* clean up main
* clean up settiings
* clean up dialog and developer
* cleanup mici setup some
* rm one more
* fix keyboard
* revert
* might as well but clarify
* fix networkinfopage buttons
* lint
* nice clean up from cursor
* animate background fade with position
* fix device overlays
* cursor fix pt1
cursor fix pt2
* rm print
* capital
* temp fix from cursor for onboarding not freeing space after reviewing training guide
* fix home screen scroller snap not resetting
* stash
* nice gradient on top
* 40
* 20
* no gradient
* return unused returns and always show regulatory btn
* nice!
* revert selfdrive/ui
* let's do tici first
* bring back ui
* not sure why __del__, SetupWidget was never deleted?
* device "done"
* network "done!!"
* toggles "done"
* software "done"
* developer "done"
* fix onboarding
* use new modal for debug windows
* and aug
* setup "done"
* clean up
* updater "done"
* reset "done"
* pop first before callbacks in case callbacks push
* fix cmt
* not needed
* remove two commented functions for mici
* clean up application
* typing
* static
* not sure what this means
* fix big
* more static
* actually great catch
* fix cmt
* fix
* meh
* unclaud test is best
* yess
* try
* works!
* remove dict handling
* clean up
* more clean up
* remove trash
* fixup
* fix up onboarding again
* fix drivercameradialog
* don't show test window
* more widgets
* fix all
* Revert "fix all"
This reverts commit 42d3537c9314af382961a16443a63faed202b157.
* move and whitelist
* clean up
* more test + ignore
* to fix
* temp
* Revert "temp"
This reverts commit 215ecbb8a8fc0e6826d45b2c0d57999c7a19a400.
* temp
* rev
* reproduce race condition where connection removed signal takes a while to remove, then update networks keep is_saved true
* fix
* Revert "reproduce race condition where connection removed signal takes a while to remove, then update networks keep is_saved true"
This reverts commit cf7044ee955777db16434ab81c520bbe798c9164.
* not anymore
* more clear
* safe guards
nl
* signal driven wifi state
* copy exactly
* copy signal handler
* remove is_connected
* Revert "remove is_connected"
This reverts commit f2246a70f4a29e9f3405947ca43d9404578c9d2d.
* do 3 network
* missing reason
* do wifiui
* clean up mici updater
* rest
* or not connecting
* clean up is_connected
* clean up wifiui
* match wifiui state more exactly in network panel for wifi button
* update active connection info after activation (used to do in _update_networks)
* clean up prints
* more
* rm
* not needed
* clean up state machine a bit
* more
* more
* indent
* final clean up
* debug
* debug
* wait for ip?
* more
* revert
* just to see
* ensure we emit activated even if we fail to get conn path from dbus
* hmm
* fine
* back
* back
* Revert "back"
This reverts commit 6464abe243c2a3bbf62b8f9a109b72ec3ddb3817.
* debug flickering on forget then connect to another. commit before this is good
* fix rare flicker when forgetting network and immediately connecting to
another
* clean up
* clean up router stuff now
* ugh wtf
* stash -- wtf
* Revert "stash -- wtf"
This reverts commit 756a92a9c0530a16917303424e26447f258f17e4.
* Revert "fix rare flicker when forgetting network and immediately connecting to"
This reverts commit 90c5fc14551726765ab2524e7866ee8b3c5dee7c.
* remove debug
* fix
* add issues
* add flow
* match previous behavior
* it doesn't fix the flikcer
* more atomic
* Revert "more atomic"
This reverts commit ead87c5a7a4030719b64138c12b9154ec82e73d9.
* last test!
last test!
* really the race is here?
* atomic wifi_state replace
* not slow
* clean up
* WifiManager: fix all networks showing as connected when no active connection
When there's no active WiFi connection, _get_active_wifi_connection()
returns None. This caused `self._connections.get(ssid) == None` to be
True for all unsaved networks, marking them all as connected.
Co-authored-by: Cursor <cursoragent@cursor.com>
* ltl
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
* ui: add edge shadow effect to horizontal scrollers in settings
Adds a black gradient falloff shadow (20x240, 100%→0% opacity) on the
left and right edges of horizontal Scroller panels. Enabled via an
opt-in `edge_shadows` parameter on Scroller for easy per-screen control.
Enabled on: settings menu, toggles, network, device, developer.
Not enabled on: home screen carousel, vertical scrollers, setup screens.
Co-authored-by: Cursor <cursoragent@cursor.com>
* ui: reduce edge shadow opacity to 80%
Co-authored-by: Cursor <cursoragent@cursor.com>
* what on earth is this
* some lines are ok
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Shane Smiskol <shane@smiskol.com>
* init
* no
* more
* tree it
* final
* comment
* only with enforce torque
* only with enforce torque
* missed
* no
* lint
* Apply suggestion from @sunnyhaibin
* sunnylink metadata sync
* Apply suggestion from @sunnyhaibin
---------
Co-authored-by: nayan <nayan8teen@gmail.com>
* refactor: improve video synchronization logic in HTML report generation
* feat: include description of which video is longer in report; refactor stuff and add types
* refactor: simplify HTML report generation and remove extra formatting
* reduce diff
* fix video name
* reduce diff
* reduce diff
* fix
* parentheses
* fix I guess
* Remove gcc@13 installation from mac_setup.sh
Removed installation of gcc@13 from mac_setup.sh.
* no cache
* Revert "no cache"
This reverts commit fc27f7dc9e6dab4b61703433130531f12dbe334b.
Widen the hint label rect so it doesn't reserve right-side space for the
hidden backspace button, preventing unnecessary text eliding. Also show
the blinking cursor over the hint and add trailing ellipsis to hint
strings for consistency.
Co-authored-by: Cursor <cursoragent@cursor.com>
* debug why so slow
* forget after
* i'm not sure why this is a thing
* better forget connecting reset
* ????
* has lag
* fix
* clean up
* should be fine
* Delay lateral reengagement
* UI elements
* Add tests
* Update title and description
* Update params_metadata
* Didn't mean to pass this to int()
* Keep sentry happy
* Title and description update
* always 100 hz
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* add networks to end, remove bad scroller restore logic that sometimes starts in the middle
* works
* almost
* wifi slash
* clean up
* clean up
* opactiy
* more clean up
* more clean up
* set enabled and network missing on regain network
* cmt
* Revert "Revert tgwarp again (#37161)"
This reverts commit 45099e7fcd.
* Weird uv sizes
* Fix interleaving
* Fix on CPU
* make CPU safe
* Prevent corruption without clone
* Claude knows speeed
* fix interleaving
* less kernels
* blob caching
* This is still slightly faster
* Comment for blob cache
* like c++ wifiman
* rename to scan
* can do this
can do this
* Revert "can do this"
This reverts commit 295f7f49d448c6aacdde2ef810904df86357840b.
* kinda useless now
* clean up
* fix recent connect regression from connection not being known yet
* always update connections in background, keep track via signals only. no getallconnections each time one is added/deleted. matches c++
* works
* clean up
* clean up
* clean up
* clips: allow mici UI (now default) (#37070)
fix: make big false by default and remove assertion
* comma four: new keyboard enter button (#37072)
* works
* enter dis
* clean up
* clean up
* no debug
* useless
* poadding
* tools: fix Python version comparison using normalized semantic version format (#37075)
* Back to tethering BigButton (#37082)
Back to tethering big button
* Stock LKAS: remove permanent alert (#37083)
rm perm
* BigButton: remove unused scrolling (#37085)
* BigButton: remove unused scrolling
* clean up
* BigButton: use UnifiedLabel (#37086)
* BigButton: remove unused scrolling
* start
* debug
* stash
* actually removing the hardcoded size for multioption fixes it
* back
* cursor does sub label
* clean up
* more
* more
* try this for now
* nick suggest
* clean up
* more
* more
* Network menu improvements (#37077)
* try this
* that's handy
* todo, not sure what happens here
* set_text
* normalize
* scroll wifi
* clean up
* more
* better check
* UI: only show `onroad_fade.png` when engaged (#37051)
* only show when engaged
* retrigger CI
* fade animation 0.1
* nl
---------
Co-authored-by: Shane Smiskol <shane@smiskol.com>
* NavBar: fix no show animation (#37090)
* 1.5 not enough time on small screen
* ohhhh
* clean up
* translations: remove arabic (#37087)
* remove arabic
* more
* bump opendbc (#37091)
* long_mpc: use log.capnp source enum instead of list (#37093)
* Revert "long_mpc: use log.capnp source enum instead of list" (#37095)
Revert "long_mpc: use log.capnp source enum instead of list (#37093)"
This reverts commit 7e959c5a3e.
* mici setup: remove unused functions
* fix mici setup int enum
* clips: improve overlays for mici (#37088)
* adjust overlay sizes and wrap metadata text for mici
* comment
* adjust overlay rendering to dynamically calculate line height for wrapped metadata text
* render time first so we can use width in margin calculation
* update comment (to retry failed CI actually)
* increase metadata size on mici
* longitudinal mpc tuning: behind if main (#37099)
* longitudinal mpc tuning report: add sinusoidal oscillation scenario (#37100)
* long_mpc: use log.capnp source enum (#37096)
* Calibrate in tg (#36621)
* squash
* bump tg
* fix linmt
* Ready to merge
* cleaner
* match modeld
* more dead stuff
* long mpc: state name before subscript (#37101)
* clip: clean up imports (#37104)
* wtf is this
* don't break import timing
* they are the same
* clean up
* good catch
* rm common/mat.h
* Remove all the OpenCL (#37105)
* Remove all the OpenCL
* lil more
* bump msgq
* clip: use wrap_text helper (#37102)
* they are same
* no duplication!
* rm rstrip
* bump opendbc (#37108)
bump
* Delete less dialogs (#37111)
* try
* revert
* this is fine
* revert tg calib and opencl cleanup (#37113)
* Revert "Remove all the OpenCL (#37105)"
This reverts commit d5cbb89d84.
* Revert "rm common/mat.h"
This reverts commit 4ce701150a.
* Revert "Calibrate in tg (#36621)"
This reverts commit 593c3a0c8e.
* fix: route fetch metadata when first log isnt uploaded (#37114)
* fix: route fetch metadata when first log isnt uploaded
* default
* simple
---------
Co-authored-by: Trey Moen <treymoen@amazon.com>
* gitignore .context/
* ui diff replay: remove unused frame_data list for individual frame display (#37117)
Remove unused base64 encoding and simplify frame data handling in diff video report
* bridge: move ZMQ handling over (#37118)
* replace tabulate with simple helper (#37122)
* Better memory usage debugging (#37120)
* Revert "revert tg calib and opencl cleanup (#37113)" (#37115)
* Revert "revert tg calib and opencl cleanup (#37113)"
This reverts commit 51312afd3d.
* power draw is a lil higher
* just don't miss a cycle
* fix warp targets
* fix tinygrad dep
* CI: garbage collect tmp jenkins branches (#37125)
* Build vendored artifacts in CI (#37127)
* Build vendored artifacts in CI
* parallel
* deterministic
* fix up
* fix gitignores
* lil more
* lil more consistency
* remove get_mcu_type from pandad.py (#37132)
* Chunk big model files (#37134)
* file chunking
* try this
* more cleanup
* cleaner
* ui: delay nav bar animation (#37137)
* from da bounce
* try this
* you can get it to clean up wow
* modeld: simplify model run processing (#37138)
Hi! The point of this pr is to make the model run easier to read. On the latest tinygrad numpy().flatten() empirically does the same thing as the internal contiguous().realize().uop.base.buffer.numpy(). numpy() is also documented (docstrings), which can assist new contributors in learning what each potential execution does. Torq_boi or yassine, I know you want proof in the code base, so here it is. As of tinygrad commit 2f55005:
in tinygrad_repo/tinygrad/tensor.py
Lines 316-318 (def _buffer): ensure the tenso is contiguous() and realized() before accessing the raw buffer.
Line 378 (def numpy): Wraps the buffer access and adds a reshape to match the tensor shape.
self._buffer() is what executes contiguous().realize() and returns the buffer object.
Calling numpy() on that buffer object returns a 1D array (defined in tinygrad/device.py:193 via np.frombuffer).
The reshape(self.shape) at the end of Tensor.numpy() then adds dimensions to that 1D array. The added .flatten() removes those dimensions, flattening it back to a 1D array. Effectively the same as what is currently done, but less complex.
* Revert "Chunk big model files (#37134)" (#37139)
This reverts commit a941e8f78f.
* Process replay: move refs to ci-artifacts (#37049)
* rm upload
* use ci-artifacts
* sanitize
* rm ref_commit
* add ci
* handle exept
* bootstrap
* always
* fix
* replay
* keep ref_commit fork compatibility
* remove upload-only
* apply comments
* safe diffs in master
* Revert "safe diffs in master"
This reverts commit 369fccac786a67799193e9152488813c6df20414.
* continue on master diff
* Update .github/workflows/tests.yaml
Co-authored-by: Shane Smiskol <shane@smiskol.com>
---------
Co-authored-by: Shane Smiskol <shane@smiskol.com>
* fix first-interaction action inputs for v3 (#37144)
v3 renamed inputs from kebab-case to snake_case (repo-token -> repo_token,
pr-message -> pr_message). The old names were silently ignored, causing
"Input required and not supplied: issue_message" errors.
* bump create-pull-request action to v8.1.0 (#37143)
The pinned SHA was v6.0.4, which is incompatible with actions/checkout@v6
and causes a "Duplicate header: Authorization" 400 error during git
remote operations. See peter-evans/create-pull-request#4272.
* bump numpy to 2.4.2 (#37145)
* show dependency tree in weekly uv lock job (#37146)
* Revert "DM: Ford GT model" (#37148)
Revert "DM: Ford GT model (#37013)"
This reverts commit 1459d3519d.
* remove dead multilang for mici (#37150)
* ui: remove dead side button (#37151)
* rm side button
* fix
* fix
* BigButton: fix alignment and style (#37153)
* correct from bottom alignment
* temp
* fix scale animation w/ btn_y
* home settings are always 64
* cleanup
* some clean up
* make 23 const
* rev
* more
* remove azure deps (#37084)
* remove azure deps
* fix lint
* restore scripts
* [bot] Update Python packages (#37147)
* Update Python packages
* fix
* bump panda
* revert tinygrad
---------
Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* remove pytest-repeat (#37156)
* BigButton: push up all content when pressed (#37157)
clean implementation
* ui.py: fix stride (#37159)
fix uii.py
* BigButton: don't round drawn content (#37158)
* unround icons
* unround rest
* Revert tgwarp again (#37161)
* Reapply "revert tg calib and opencl cleanup (#37113)" (#37115)
This reverts commit 667f3bb32f.
* revert msgq too
* msgq on master
* newline in updater error
* Remove vertical scroll bar
* Simple scroll indicator (#37162)
* scroll indicator
* 65%
* calibrate
* margin
* cleaner?
* manual clean up
* clean up
* full scroll bar
* look
* looks
* unlook
* no fade, looks good but "too much"
* clean up
* cmt
* Scroll panel: adapt to content size shrinking (#37163)
fix
* WifiManager: sort by known networks (#37164)
sort by known
* mpc tuning report: minor improvements (#37167)
---------
Co-authored-by: David <49467229+TheSecurityDev@users.noreply.github.com>
Co-authored-by: Shane Smiskol <shane@smiskol.com>
Co-authored-by: ugtthis <142481257+ugtthis@users.noreply.github.com>
Co-authored-by: royjr <royjr96@gmail.com>
Co-authored-by: Jason Young <46612682+jyoung8607@users.noreply.github.com>
Co-authored-by: felsager <76905857+felsager@users.noreply.github.com>
Co-authored-by: Harald Schäfer <harald.the.engineer@gmail.com>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
Co-authored-by: Trey Moen <50057480+greatgitsby@users.noreply.github.com>
Co-authored-by: Trey Moen <treymoen@amazon.com>
Co-authored-by: Andi Radulescu <andi.radulescu@gmail.com>
Co-authored-by: James Vecellio-Grant <159560811+Discountchubbs@users.noreply.github.com>
Co-authored-by: Daniel Koepping <elkoled@gmail.com>
Co-authored-by: ZwX1616 <zwx1616@gmail.com>
Co-authored-by: commaci-public <60409688+commaci-public@users.noreply.github.com>
Co-authored-by: Vehicle Researcher <user@comma.ai>
* new/removed conns signal
* clean up
* only get connections when adding/removing not every refresh
* add debug
* block
* Revert "block"
This reverts commit 30bbffca8d2db21c53d7a3601ae46bf05e2a7cd5.
* rm debug
* block on any new message, faster conn rem/add reaction
* better names
* correct from bottom alignment
* temp
* fix scale animation w/ btn_y
* home settings are always 64
* cleanup
* some clean up
* make 23 const
* rev
* more
The pinned SHA was v6.0.4, which is incompatible with actions/checkout@v6
and causes a "Duplicate header: Authorization" 400 error during git
remote operations. See peter-evans/create-pull-request#4272.
v3 renamed inputs from kebab-case to snake_case (repo-token -> repo_token,
pr-message -> pr_message). The old names were silently ignored, causing
"Input required and not supplied: issue_message" errors.
Hi! The point of this pr is to make the model run easier to read. On the latest tinygrad numpy().flatten() empirically does the same thing as the internal contiguous().realize().uop.base.buffer.numpy(). numpy() is also documented (docstrings), which can assist new contributors in learning what each potential execution does. Torq_boi or yassine, I know you want proof in the code base, so here it is. As of tinygrad commit 2f55005:
in tinygrad_repo/tinygrad/tensor.py
Lines 316-318 (def _buffer): ensure the tenso is contiguous() and realized() before accessing the raw buffer.
Line 378 (def numpy): Wraps the buffer access and adds a reshape to match the tensor shape.
self._buffer() is what executes contiguous().realize() and returns the buffer object.
Calling numpy() on that buffer object returns a 1D array (defined in tinygrad/device.py:193 via np.frombuffer).
The reshape(self.shape) at the end of Tensor.numpy() then adds dimensions to that 1D array. The added .flatten() removes those dimensions, flattening it back to a 1D array. Effectively the same as what is currently done, but less complex.
* 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>
* Revert "revert tg calib and opencl cleanup (#37113)"
This reverts commit 51312afd3d.
* power draw is a lil higher
* just don't miss a cycle
* fix warp targets
* fix tinygrad dep
* Revert "Remove all the OpenCL (#37105)"
This reverts commit d5cbb89d84.
* Revert "rm common/mat.h"
This reverts commit 4ce701150a.
* Revert "Calibrate in tg (#36621)"
This reverts commit 593c3a0c8e.
* adjust overlay sizes and wrap metadata text for mici
* comment
* adjust overlay rendering to dynamically calculate line height for wrapped metadata text
* render time first so we can use width in margin calculation
* update comment (to retry failed CI actually)
* increase metadata size on mici
* BigButton: remove unused scrolling
* start
* debug
* stash
* actually removing the hardcoded size for multioption fixes it
* back
* cursor does sub label
* clean up
* more
* more
* try this for now
* nick suggest
* clean up
* more
* more
* 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>
* 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
* 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>
* 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
* 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
* 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>
* 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
* 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
* 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
* 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
* 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
* 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
* 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>
<td>{% if jobs[key]["failures"]|length > 0 %}<details>{% for failure in jobs[key]["failures"] %}<a href="{{ failure['link'] }}">Log for run #{{ failure['run_number'] }}</a><br>{% endfor %}</details>{% else %}{% endif %}</td>
MODEL_SIZE=$(python3 -c "from openpilot.common.transformations.model import MEDMODEL_INPUT_SIZE as s; print(f'{s[0]}x{s[1]}')")
CAMERA_RES=$(python3 -c "from openpilot.common.transformations.camera import _ar_ox_fisheye as a, _os_fisheye as o; print(f'{a.width}x{a.height} {o.width}x{o.height}')")
# 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.
@@ -293,7 +290,7 @@ jobs:
echo "1. Go to: ${{ github.server_url }}/${{ github.repository }}/settings/variables/actions/AUTO_DEPLOY_PREBUILT_BRANCHES"
echo "2. Current value: ${{ vars.AUTO_DEPLOY_PREBUILT_BRANCHES }}"
echo "3. Update as needed (JSON array with no spaces)"
* Improved image processing pipeline for driver camera
* Rivian R1S and R1T 2025 support thanks to lukasloetkolben!
* New driving model #36798
* Fully trained using a learned simulator
* Improved longitudinal performance in Experimental mode
* Reduce comma four standby power usage by 77% to 52 mW
* Kia K7 2017 support thanks to royjr!
* Lexus LS 2018 support thanks to Hacheoy!
* Improved inter-process communication memory efficiency
* comma four support
sunnypilot Version 2025.002.000 (2025-11-06)
========================
* What's Changed (sunnypilot/sunnypilot)
* models: bump model json to v8 by @Discountchubbs
* Bug: Model UI Crash Fix by @nayan8teen
* controlsd: add `CP_SP` to `get_pid_accel_limits` by @THERoenPR
* sunnylink: update uploader button logic to support novice tier and above by @devtekve
* Tesla: Coop Steering by @AmyJeanes
* ui: update discord references and add forum widget by @devtekve
* ui: Fix spacing in sunnylink panel by @devtekve
* docs: Update README installation branches and discord links by @mpurnell1 in
* stats: sunnylink integration by @devtekve
* bug: Fix initial registration for sunnylink by @devtekve
* What's Changed (sunnypilot/opendbc)
* Honda: add brake hold messages for Clarity by @mvl-boston
* interface: add `CP_SP` to `get_pid_accel_limits` method signature by @roenthomas
* Honda: use fixed accel min/max constants for Gas Interceptor by @roenthomas
* Tesla: Coop Steering by @AmyJeanes
* New Contributors (sunnypilot/sunnypilot)
*@THERoenPR made their first contribution in "controlsd: add `CP_SP` to `get_pid_accel_limits`"
*@AmyJeanes made their first contribution in "Tesla: Coop Steering"
*@mpurnell1 made their first contribution in "docs: Update README installation branches and discord links"
* Full Changelog: https://github.com/sunnypilot/sunnypilot/compare/v2025.001.000...v2025.002.000
sunnypilot Version 2025.001.000 (2025-10-25)
========================
* 🛠️ Major rewrite
@@ -22,7 +236,7 @@ sunnypilot Version 2025.001.000 (2025-10-25)
* Intelligent Cruise Button Management (ICBM)
* System designed to manage the vehicle’s speed by sending cruise control button commands to the car’s ECU.
* Smart Cruise Control Map & Vision (SCC-M / SCC-V)
* When using any form of long control (openpilot longitudinal or ICBM) it will control the speed at which you enter and perform a turn by leveraging map data (SCC-M) and/or by leveraging what the model sees about the curve ahead (SCC-V)
* When using any form of long control (sunnypilot longitudinal control or ICBM) it will control the speed at which you enter and perform a turn by leveraging map data (SCC-M) and/or by leveraging what the model sees about the curve ahead (SCC-V)
* Vehicle Selector
* If your vehicle isn’t fingerprinted automatically, you can still use the vehicle selector to get it working
* sunnylink Integration
@@ -134,6 +348,7 @@ sunnypilot Version 2025.001.000 (2025-10-25)
*@michael-was-taken made their first contribution in "Reorder README tables: show -new branches first (#1191)"
*@dzid26 made their first contribution in "params: Fix loading delay on startup (#1297)"
*@HazZelnutz made their first contribution in "Visuals: Turn signals on screen when blinker is used (#1291)"
*@sirmuskrat made their first contribution in "ui: openpilot Longitudinal Control → sunnypilot Longitudinal Control (#1422)"
* New Contributors (sunnypilot/opendbc)
*@chrispypatt made their first contribution in "Toyota: SecOC Longitudinal Control (sunnypilot/opendbc#93)"
*@Discountchubbs made their first contribution in "Hyundai: EPS FW For 2022 KIA_NIRO_EV SCC (sunnypilot/opendbc#118)"
[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 `staging-c3-new` branch.
### 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
* 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: ```https://staging-c3-new.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: `staging-c3-new`
> You can use sunnypilot/targetbranch as an install URL. Example: 'sunnypilot/staging-c3-new'.
> [!NOTE]
> 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.
<details>
<summary>Older legacy branches</summary>
### If you want to use our older legacy branches (*not recommended*)
> [**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.
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.
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.