update todo

This commit is contained in:
PROFERIS - Mi³osz Stocki
2026-07-06 15:47:02 +02:00
parent f652b741ae
commit a6aa6f00df
3 changed files with 172 additions and 177 deletions
+1 -1
View File
@@ -1 +1 @@
Implement mechanical stall homing I want you to implement proper motor homing. I think the original used stall homing, please look it up and reimplement it properly. Make sure map on the website starts in proper place. Please update both web (kinematics.js and stepper-test.js) and mcu (main.cpp) code and make sure we are updated on this topic in gemini.md. I have had some desync issues with agent before so there may be some remnants.
+32 -37
View File
@@ -1,10 +1,12 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>WijiBoard Control Dashboard</title> <title>WijiBoard Control Dashboard</title>
<meta name="description" content="WijiBoard SCARA arm control dashboard. Web Bluetooth interface for the ESP32-S3 stepper controller." /> <meta name="description"
content="WijiBoard SCARA arm control dashboard. Web Bluetooth interface for the ESP32-S3 stepper controller." />
<!-- Shared styles --> <!-- Shared styles -->
<link rel="stylesheet" href="web/styles/base.css" /> <link rel="stylesheet" href="web/styles/base.css" />
@@ -12,7 +14,7 @@
</head> </head>
<body> <body>
<div class="app-shell"> <div class="app-shell">
<!-- ── Sidebar overlay (click to close) ──────────────────────── --> <!-- ── Sidebar overlay (click to close) ──────────────────────── -->
<div class="sidebar-overlay" id="sidebar-overlay"></div> <div class="sidebar-overlay" id="sidebar-overlay"></div>
@@ -22,26 +24,23 @@
<span class="sidebar-section-label">Navigation</span> <span class="sidebar-section-label">Navigation</span>
<a class="sidebar-nav-item active" id="nav-home" <a class="sidebar-nav-item active" id="nav-home" href="#home" data-route="home" role="button"
href="#home" data-route="home" aria-label="Go to Home">
role="button" aria-label="Go to Home"> <svg class="nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
<svg class="nav-icon" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round"> stroke-linecap="round" stroke-linejoin="round">
<path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/> <path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" />
<polyline points="9 22 9 12 15 12 15 22"/> <polyline points="9 22 9 12 15 12 15 22" />
</svg> </svg>
Home Home
</a> </a>
<a class="sidebar-nav-item" id="nav-stepper-test" <a class="sidebar-nav-item" id="nav-stepper-test" href="#stepper-test" data-route="stepper-test" role="button"
href="#stepper-test" data-route="stepper-test" aria-label="Go to Stepper Test">
role="button" aria-label="Go to Stepper Test"> <svg class="nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
<svg class="nav-icon" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round"> stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="3"/> <circle cx="12" cy="12" r="3" />
<path d="M12 1v4M12 19v4M4.22 4.22l2.83 2.83M16.95 16.95l2.83 2.83M1 12h4M19 12h4M4.22 19.78l2.83-2.83M16.95 7.05l2.83-2.83"/> <path
d="M12 1v4M12 19v4M4.22 4.22l2.83 2.83M16.95 16.95l2.83 2.83M1 12h4M19 12h4M4.22 19.78l2.83-2.83M16.95 7.05l2.83-2.83" />
</svg> </svg>
Stepper Test Stepper Test
</a> </a>
@@ -52,19 +51,17 @@
<span class="sidebar-section-label">Coming Soon</span> <span class="sidebar-section-label">Coming Soon</span>
<div class="sidebar-nav-item" style="opacity:0.35;cursor:default" aria-disabled="true"> <div class="sidebar-nav-item" style="opacity:0.35;cursor:default" aria-disabled="true">
<svg class="nav-icon" viewBox="0 0 24 24" fill="none" <svg class="nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
stroke="currentColor" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round"> stroke-linecap="round" stroke-linejoin="round">
<path d="M12 20h9M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"/> <path d="M12 20h9M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z" />
</svg> </svg>
Board Control Board Control
</div> </div>
<div class="sidebar-nav-item" style="opacity:0.35;cursor:default" aria-disabled="true"> <div class="sidebar-nav-item" style="opacity:0.35;cursor:default" aria-disabled="true">
<svg class="nav-icon" viewBox="0 0 24 24" fill="none" <svg class="nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
stroke="currentColor" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round"> stroke-linecap="round" stroke-linejoin="round">
<path d="M3 3h7v7H3zM14 3h7v7h-7zM14 14h7v7h-7zM3 14h7v7H3z"/> <path d="M3 3h7v7H3zM14 3h7v7h-7zM14 14h7v7h-7zM3 14h7v7H3z" />
</svg> </svg>
Sequence Editor Sequence Editor
</div> </div>
@@ -76,8 +73,8 @@
<!-- Top bar --> <!-- Top bar -->
<header class="topbar" role="banner"> <header class="topbar" role="banner">
<!-- Hamburger --> <!-- Hamburger -->
<button class="hamburger" id="hamburger-btn" <button class="hamburger" id="hamburger-btn" aria-label="Toggle sidebar" aria-expanded="true"
aria-label="Toggle sidebar" aria-expanded="true" aria-controls="sidebar"> aria-controls="sidebar">
<div class="hamburger-bar"></div> <div class="hamburger-bar"></div>
<div class="hamburger-bar"></div> <div class="hamburger-bar"></div>
<div class="hamburger-bar"></div> <div class="hamburger-bar"></div>
@@ -87,9 +84,8 @@
<div class="topbar-brand"> <div class="topbar-brand">
<div class="brand-icon" aria-hidden="true"> <div class="brand-icon" aria-hidden="true">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none">
<path d="M12 2L3 7v10l9 5 9-5V7L12 2Z" <path d="M12 2L3 7v10l9 5 9-5V7L12 2Z" stroke="#448aff" stroke-width="1.5" stroke-linejoin="round" />
stroke="#448aff" stroke-width="1.5" stroke-linejoin="round"/> <circle cx="12" cy="12" r="2.5" fill="#448aff" opacity="0.7" />
<circle cx="12" cy="12" r="2.5" fill="#448aff" opacity="0.7"/>
</svg> </svg>
</div> </div>
WijiBoard WijiBoard
@@ -104,13 +100,11 @@
</div> </div>
<!-- Connect / Disconnect button --> <!-- Connect / Disconnect button -->
<button class="btn btn-sm btn-primary" id="btn-ble-connect" <button class="btn btn-sm btn-primary" id="btn-ble-connect" aria-label="Connect to WijiBoard via Bluetooth">
aria-label="Connect to WijiBoard via Bluetooth"> <svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"
<svg width="13" height="13" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2.5"
stroke-linecap="round" stroke-linejoin="round"> stroke-linecap="round" stroke-linejoin="round">
<path d="M6.5 6.5l11 11M17.5 6.5l-5 5 5 5"/> <path d="M6.5 6.5l11 11M17.5 6.5l-5 5 5 5" />
<path d="M6 17.5l5-5-5-5"/> <path d="M6 17.5l5-5-5-5" />
</svg> </svg>
<span class="btn-text">Connect</span> <span class="btn-text">Connect</span>
</button> </button>
@@ -123,10 +117,10 @@
</main> </main>
</div> </div>
</div> </div>
<!-- ── App bootstrap (ES module entry point) ─────────────────── --> <!-- ── App bootstrap (ES module entry point) ─────────────────── -->
<script type="module"> <script type="module">
const V = Date.now(); // cache-buster ensures fresh module load on every page refresh const V = Date.now(); // cache-buster ensures fresh module load on every page refresh
const { default: Router } = await import(`./web/js/router.js?v=${V}`); const { default: Router } = await import(`./web/js/router.js?v=${V}`);
const { default: BLE } = await import(`./web/js/ble.js?v=${V}`); const { default: BLE } = await import(`./web/js/ble.js?v=${V}`);
@@ -199,6 +193,7 @@
UI.log('⚠ Web Bluetooth not available. Use Chrome or Edge on localhost/HTTPS.', 'error'); UI.log('⚠ Web Bluetooth not available. Use Chrome or Edge on localhost/HTTPS.', 'error');
}, 600); }, 600);
} }
</script> </script>
</body> </body>
</html> </html>