Adapted from commit 6bf706c
 - dependecies set to 6.1.19 values

From 6bf706c9b09ba41beb245b608e63e52578f83c06 Mon Sep 17 00:00:00 2001
From: Ivan Kravets <me@ikravets.com>
Date: Thu, 11 Jun 2026 14:05:43 +0300
Subject: [PATCH] Add support for stable Starlette 1.0 // Resolve #5350 ,
 Resolve #5423

--- a/platformio/dependencies.py
+++ b/platformio/dependencies.py
@@ -42,8 +42,8 @@ def get_pip_dependencies():
     home = [
         # PIO Home requirements
         "ajsonrpc == 1.2.*",
-        "starlette >=0.19, <0.53",
-        "uvicorn >=0.16, <0.41",
+        "starlette < 2",
+        "uvicorn < 1",
         "wsproto == 1.*",
     ]
 
--- a/platformio/home/run.py
+++ b/platformio/home/run.py
@@ -14,6 +14,7 @@
 
 import asyncio
 import os
+from contextlib import asynccontextmanager
 from urllib.parse import urlparse
 
 import click
@@ -86,16 +87,18 @@ def run_server(host, port, no_open, shutdown_timeout, home_url):
     if path != "/":
         routes.append(Route("/", protected_page))
 
+    @asynccontextmanager
+    async def app_lifespan(_):
+        click.echo("PIO Home has been started. Press Ctrl+C to shutdown.")
+        if not no_open:
+            click.launch(home_url)
+        yield
+
     uvicorn.run(
         Starlette(
             middleware=[Middleware(ShutdownMiddleware)],
             routes=routes,
-            on_startup=[
-                lambda: click.echo(
-                    "PIO Home has been started. Press Ctrl+C to shutdown."
-                ),
-                lambda: None if no_open else click.launch(home_url),
-            ],
+            lifespan=app_lifespan,
         ),
         host=host,
         port=port,
