diff --git a/starpilot/common/starpilot_variables.py b/starpilot/common/starpilot_variables.py index bf251e142..73f6c68ae 100644 --- a/starpilot/common/starpilot_variables.py +++ b/starpilot/common/starpilot_variables.py @@ -642,12 +642,6 @@ class StarPilotVariables: toggle.stoppingDecelRate = CP.stoppingDecelRate toggle.vEgoStarting = CP.vEgoStarting toggle.vEgoStopping = CP.vEgoStopping - if toggle.openpilot_longitudinal and toggle.car_make == "toyota": - # Preserve StarPilot's established Toyota stop-state behavior without - # coupling it to the removed FrogsGoMoo controller experiment. - toggle.stoppingDecelRate = 0.01 - toggle.vEgoStarting = 0.1 - toggle.vEgoStopping = 0.5 # Keep stock tuning params synchronized for all device UIs. self._migrate_steer_delay_mode(steerActuatorDelay) diff --git a/starpilot/system/the_galaxy/assets/components/tools/sentry.css b/starpilot/system/the_galaxy/assets/components/tools/sentry.css index f6016b604..f947b36c5 100644 --- a/starpilot/system/the_galaxy/assets/components/tools/sentry.css +++ b/starpilot/system/the_galaxy/assets/components/tools/sentry.css @@ -117,6 +117,17 @@ white-space: nowrap; } +.sentry-button-danger { + border-color: var(--danger-bg); + color: var(--danger-fg); + white-space: nowrap; +} + +.sentry-button-danger:hover:not(:disabled) { + background: var(--danger-bg); + color: var(--color-white); +} + .sentry-action-row { display: flex; flex-wrap: wrap; diff --git a/starpilot/system/the_galaxy/assets/components/tools/sentry.js b/starpilot/system/the_galaxy/assets/components/tools/sentry.js index 91f73a770..4c311cea1 100644 --- a/starpilot/system/the_galaxy/assets/components/tools/sentry.js +++ b/starpilot/system/the_galaxy/assets/components/tools/sentry.js @@ -14,6 +14,7 @@ const state = reactive({ liveCapture: {}, testBusy: false, liveBusy: false, + deleteBusy: false, pushBusy: false, }) @@ -145,6 +146,30 @@ async function sendTestPush() { } } +async function deleteEvent() { + const eventId = String(state.event?.eventId || "") + if (!eventId || state.deleteBusy) return + if (!window.confirm("Delete this Sentry event and its camera images? This cannot be undone.")) return + + state.deleteBusy = true + try { + const response = await fetch(galaxyPath(`/api/sentry/events/${encodeURIComponent(eventId)}`), { + method: "DELETE", + }) + const payload = await readJsonResponse(response) + if (!response.ok) { + showSnackbar(payload.error || "Sentry event deletion failed.") + return + } + state.event = {} + showSnackbar("Sentry event deleted.") + } catch (error) { + showSnackbar(error.message || "Network error — is the device reachable?") + } finally { + state.deleteBusy = false + } +} + function renderEvent() { const event = state.event || {} if (!event.eventId) return html`
No Sentry events recorded yet.
` @@ -271,11 +296,18 @@ export function SentryMode() {Events refresh automatically every five seconds.
- ${remote ? "" : html` - - `} +