From 0af68e13df8e9c418d02cec80002f8d766317d20 Mon Sep 17 00:00:00 2001 From: Test User Date: Sun, 26 Apr 2026 09:33:48 -0500 Subject: [PATCH] update API endpoints to use konik.ai instead of comma Co-authored-by: Copilot --- common/api.py | 2 +- selfdrive/ui/layouts/settings/device.py | 2 +- selfdrive/ui/qt/api.h | 2 +- selfdrive/ui/qt/offroad/settings.cc | 2 +- selfdrive/ui/qt/widgets/prime.cc | 10 +++++----- selfdrive/ui/widgets/pairing_dialog.py | 6 +++--- selfdrive/ui/widgets/prime.py | 2 +- selfdrive/ui/widgets/setup.py | 2 +- system/athena/athenad.py | 2 +- tools/cabana/cabana.cc | 2 +- tools/clip/run.py | 2 +- tools/lib/api.py | 2 +- tools/lib/logreader.py | 4 ++-- tools/replay/api.h | 2 +- tools/scripts/fetch_image_from_route.py | 2 +- 15 files changed, 22 insertions(+), 22 deletions(-) diff --git a/common/api.py b/common/api.py index ac231400a..0cd9c529a 100644 --- a/common/api.py +++ b/common/api.py @@ -5,7 +5,7 @@ from datetime import datetime, timedelta, UTC from openpilot.system.hardware.hw import Paths from openpilot.system.version import get_version -API_HOST = os.getenv('API_HOST', 'https://api.commadotai.com') +API_HOST = os.getenv('API_HOST', 'https://api.konik.ai') class Api: def __init__(self, dongle_id): diff --git a/selfdrive/ui/layouts/settings/device.py b/selfdrive/ui/layouts/settings/device.py index df8bba030..b0a21795d 100644 --- a/selfdrive/ui/layouts/settings/device.py +++ b/selfdrive/ui/layouts/settings/device.py @@ -17,7 +17,7 @@ from openpilot.system.ui.widgets.scroller import Scroller # Description constants DESCRIPTIONS = { - 'pair_device': "Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer.", + 'pair_device': "Pair your device with konik stable (connect.konik.ai).", 'driver_camera': "Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off)", 'reset_calibration': ( "openpilot requires the device to be mounted within 4° left or right and within 5° " + diff --git a/selfdrive/ui/qt/api.h b/selfdrive/ui/qt/api.h index ad64d7e72..e34a05589 100644 --- a/selfdrive/ui/qt/api.h +++ b/selfdrive/ui/qt/api.h @@ -9,7 +9,7 @@ namespace CommaApi { -const QString BASE_URL = util::getenv("API_HOST", "https://api.commadotai.com").c_str(); +const QString BASE_URL = util::getenv("API_HOST", "https://api.konik.ai").c_str(); QByteArray rsa_sign(const QByteArray &data); QString create_jwt(const QJsonObject &payloads = {}, int expiry = 3600); diff --git a/selfdrive/ui/qt/offroad/settings.cc b/selfdrive/ui/qt/offroad/settings.cc index 96734d69d..663fb7f46 100644 --- a/selfdrive/ui/qt/offroad/settings.cc +++ b/selfdrive/ui/qt/offroad/settings.cc @@ -209,7 +209,7 @@ DevicePanel::DevicePanel(SettingsWindow *parent) : ListWidget(parent) { addItem(new LabelControl(tr("Serial"), params.get("HardwareSerial").c_str())); pair_device = new ButtonControl(tr("Pair Device"), tr("PAIR"), - tr("Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer.")); + tr("Pair your device with konik stable (stable.konik.ai) and claim your comma prime offer.")); connect(pair_device, &ButtonControl::clicked, [=]() { PairingPopup popup(this); popup.exec(); diff --git a/selfdrive/ui/qt/widgets/prime.cc b/selfdrive/ui/qt/widgets/prime.cc index ee820c46a..045f4e8b0 100644 --- a/selfdrive/ui/qt/widgets/prime.cc +++ b/selfdrive/ui/qt/widgets/prime.cc @@ -36,7 +36,7 @@ void PairingQRWidget::hideEvent(QHideEvent *event) { void PairingQRWidget::refresh() { QString pairToken = CommaApi::create_jwt({{"pair", true}}); - QString qrString = "https://connect.comma.ai/?pair=" + pairToken; + QString qrString = "https://stable.konik.ai/?pair=" + pairToken; this->updateQrCode(qrString); update(); } @@ -100,9 +100,9 @@ PairingPopup::PairingPopup(QWidget *parent) : DialogBase(parent) {
  • %2
  • %3
  • - )").arg(tr("Go to https://connect.comma.ai on your phone")) + )").arg(tr("Go to https://stable.konik.ai on your phone")) .arg(tr("Click \"add new device\" and scan the QR code on the right")) - .arg(tr("Bookmark connect.comma.ai to your home screen to use it like an app")), this); + .arg(tr("Bookmark stable.konik.ai to your home screen to use it like an app")), this); instructions->setStyleSheet("font-size: 47px; font-weight: bold; color: black;"); instructions->setWordWrap(true); @@ -151,7 +151,7 @@ PrimeAdWidget::PrimeAdWidget(QWidget* parent) : QFrame(parent) { main_layout->addWidget(upgrade, 0, Qt::AlignTop); main_layout->addSpacing(50); - QLabel *description = new QLabel(tr("Become a comma prime member at connect.comma.ai")); + QLabel *description = new QLabel(tr("Become a member at stable.konik.ai")); description->setStyleSheet("font-size: 56px; font-weight: light; color: white;"); description->setWordWrap(true); main_layout->addWidget(description, 0, Qt::AlignTop); @@ -196,7 +196,7 @@ SetupWidget::SetupWidget(QWidget* parent) : QFrame(parent) { registrationTitle->setStyleSheet("font-size: 75px; font-weight: bold;"); finishRegistrationLayout->addWidget(registrationTitle); - QLabel* registrationDescription = new QLabel(tr("Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer.")); + QLabel* registrationDescription = new QLabel(tr("Pair your device with konik stable (stable.konik.ai).")); registrationDescription->setWordWrap(true); registrationDescription->setStyleSheet("font-size: 50px; font-weight: light;"); finishRegistrationLayout->addWidget(registrationDescription); diff --git a/selfdrive/ui/widgets/pairing_dialog.py b/selfdrive/ui/widgets/pairing_dialog.py index 63298914e..c9b81cf71 100644 --- a/selfdrive/ui/widgets/pairing_dialog.py +++ b/selfdrive/ui/widgets/pairing_dialog.py @@ -28,7 +28,7 @@ class PairingDialog: except Exception as e: cloudlog.warning(f"Failed to get pairing token: {e}") token = "" - return f"https://connect.comma.ai/setup?token={token}" + return f"https://stable.konik.ai/setup?token={token}" def _generate_qr_code(self) -> None: try: @@ -113,9 +113,9 @@ class PairingDialog: def _render_instructions(self, rect: rl.Rectangle) -> None: instructions = [ - "Go to https://connect.comma.ai on your phone", + "Go to https://stable.konik.ai on your phone", "Click \"add new device\" and scan the QR code on the right", - "Bookmark connect.comma.ai to your home screen to use it like an app", + "Bookmark stable.konik.ai to your home screen to use it like an app", ] font = gui_app.font(FontWeight.BOLD) diff --git a/selfdrive/ui/widgets/prime.py b/selfdrive/ui/widgets/prime.py index 6b601f6df..3717006d2 100644 --- a/selfdrive/ui/widgets/prime.py +++ b/selfdrive/ui/widgets/prime.py @@ -34,7 +34,7 @@ class PrimeWidget(Widget): # Description with wrapping desc_y = y + 140 font = gui_app.font(FontWeight.LIGHT) - wrapped_text = "\n".join(wrap_text(font, "Become a comma prime member at connect.comma.ai", 56, int(w))) + wrapped_text = "\n".join(wrap_text(font, "Become a konik member at stable.konik.ai", 56, int(w))) text_size = measure_text_cached(font, wrapped_text, 56) rl.draw_text_ex(font, wrapped_text, rl.Vector2(x, desc_y), 56, 0, rl.WHITE) diff --git a/selfdrive/ui/widgets/setup.py b/selfdrive/ui/widgets/setup.py index 35a7c4101..b606d0af1 100644 --- a/selfdrive/ui/widgets/setup.py +++ b/selfdrive/ui/widgets/setup.py @@ -38,7 +38,7 @@ class SetupWidget(Widget): y += 113 # 75 + 38 spacing # Description - desc = "Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer." + desc = "Pair your device with konik stable (stable.konik.ai) and claim your comma prime offer." light_font = gui_app.font(FontWeight.LIGHT) wrapped = wrap_text(light_font, desc, 50, int(w)) for line in wrapped: diff --git a/system/athena/athenad.py b/system/athena/athenad.py index 6ed53b759..dbb7d4f42 100755 --- a/system/athena/athenad.py +++ b/system/athena/athenad.py @@ -41,7 +41,7 @@ from openpilot.system.version import get_build_metadata from openpilot.system.hardware.hw import Paths -ATHENA_HOST = os.getenv('ATHENA_HOST', 'wss://athena.comma.ai') +ATHENA_HOST = os.getenv('ATHENA_HOST', 'wss://athena.konik.ai') HANDLER_THREADS = int(os.getenv('HANDLER_THREADS', "4")) LOCAL_PORT_WHITELIST = {22, } # SSH diff --git a/tools/cabana/cabana.cc b/tools/cabana/cabana.cc index 97f178b1f..648d4d1d9 100644 --- a/tools/cabana/cabana.cc +++ b/tools/cabana/cabana.cc @@ -21,7 +21,7 @@ int main(int argc, char *argv[]) { QCommandLineParser cmd_parser; cmd_parser.addHelpOption(); - cmd_parser.addPositionalArgument("route", "the drive to replay. find your drives at connect.comma.ai"); + cmd_parser.addPositionalArgument("route", "the drive to replay. find your drives at stable.konik.ai"); cmd_parser.addOption({"demo", "use a demo route instead of providing your own"}); cmd_parser.addOption({"auto", "Auto load the route from the best available source (no video): internal, openpilotci, comma_api, car_segments, testing_closet"}); cmd_parser.addOption({"qcam", "load qcamera"}); diff --git a/tools/clip/run.py b/tools/clip/run.py index 8fa0e8eda..169f33878 100755 --- a/tools/clip/run.py +++ b/tools/clip/run.py @@ -268,7 +268,7 @@ def clip( def main(): - p = ArgumentParser(prog='clip.py', description='clip your openpilot route.', epilog='comma.ai') + p = ArgumentParser(prog='clip.py', description='clip your openpilot route.', epilog='konik.ai') validate_env(p) route_group = p.add_mutually_exclusive_group(required=True) route_group.add_argument('route', nargs='?', type=validate_route, help=f'The route (e.g. {DEMO_ROUTE} or {DEMO_ROUTE}/{DEMO_START}/{DEMO_END})') diff --git a/tools/lib/api.py b/tools/lib/api.py index c6e2d9891..160a9f566 100644 --- a/tools/lib/api.py +++ b/tools/lib/api.py @@ -1,6 +1,6 @@ import os import requests -API_HOST = os.getenv('API_HOST', 'https://api.commadotai.com') +API_HOST = os.getenv('API_HOST', 'https://api.konik.ai') # TODO: this should be merged into common.api diff --git a/tools/lib/logreader.py b/tools/lib/logreader.py index bedafb856..9ec0304ba 100755 --- a/tools/lib/logreader.py +++ b/tools/lib/logreader.py @@ -255,10 +255,10 @@ def auto_source(identifier: str, sources: list[Source], default_mode: ReadMode) def parse_indirect(identifier: str) -> str: - if "useradmin.comma.ai" in identifier: + if "useradmin.konik.ai" in identifier: query = parse_qs(urlparse(identifier).query) identifier = query["onebox"][0] - elif "connect.comma.ai" in identifier: + elif "stable.konik.ai" in identifier: path = urlparse(identifier).path.strip("/").split("/") path = ['/'.join(path[:2]), *path[2:]] # recombine log id diff --git a/tools/replay/api.h b/tools/replay/api.h index dff59c065..1a1fd62be 100644 --- a/tools/replay/api.h +++ b/tools/replay/api.h @@ -8,7 +8,7 @@ namespace CommaApi2 { -const std::string BASE_URL = util::getenv("API_HOST", "https://api.commadotai.com").c_str(); +const std::string BASE_URL = util::getenv("API_HOST", "https://api.konik.ai").c_str(); std::string create_token(bool use_jwt, const json11::Json& payloads = {}, int expiry = 3600); std::string httpGet(const std::string &url, long *response_code = nullptr); diff --git a/tools/scripts/fetch_image_from_route.py b/tools/scripts/fetch_image_from_route.py index 77bf48f94..1e17d4e46 100755 --- a/tools/scripts/fetch_image_from_route.py +++ b/tools/scripts/fetch_image_from_route.py @@ -24,7 +24,7 @@ segment = int(sys.argv[2]) frame = int(sys.argv[3]) camera = cameras[sys.argv[4]] if len(sys.argv) > 4 and sys.argv[4] in cameras else "cameras" -url = f'https://api.commadotai.com/v1/route/{route}/files' +url = f'https://api.konik.ai/v1/route/{route}/files' r = requests.get(url, headers={"Authorization": f"JWT {jwt}"}, timeout=10) assert r.status_code == 200 print("got api response")