-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
116 lines (116 loc) · 4.63 KB
/
Copy pathindex.html
File metadata and controls
116 lines (116 loc) · 4.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<!doctype html>
<html lang="en" class="h-full">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, viewport-fit=cover"
/>
<meta
name="theme-color"
media="(prefers-color-scheme: light)"
content="#eef1f5"
/>
<meta
name="theme-color"
media="(prefers-color-scheme: dark)"
content="#020617"
/>
<meta name="color-scheme" content="light dark" />
<title>
Brushlog — Oral-B toothbrush history & live coaching, no account
</title>
<meta
name="description"
content="Sync the history your Oral-B iO already stores, see live pressure, brush-head wear, streaks and trends. In Chrome over Web Bluetooth — no Oral-B account, no cloud."
/>
<link rel="canonical" href="https://libreble.github.io/brushlog/" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="libreble" />
<meta
property="og:title"
content="Brushlog — Oral-B toothbrush history & live coaching, no account"
/>
<meta
property="og:description"
content="Sync the history your Oral-B iO already stores, see live pressure, brush-head wear, streaks and trends. In Chrome over Web Bluetooth — no Oral-B account, no cloud."
/>
<meta property="og:url" content="https://libreble.github.io/brushlog/" />
<meta
property="og:image"
content="https://libreble.github.io/og/brushlog.png"
/>
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta
property="og:image:alt"
content="Brushlog — Oral-B toothbrush history & live coaching, no account"
/>
<meta name="twitter:card" content="summary_large_image" />
<meta
name="twitter:title"
content="Brushlog — Oral-B toothbrush history & live coaching, no account"
/>
<meta
name="twitter:description"
content="Sync the history your Oral-B iO already stores, see live pressure, brush-head wear, streaks and trends. In Chrome over Web Bluetooth — no Oral-B account, no cloud."
/>
<meta
name="twitter:image"
content="https://libreble.github.io/og/brushlog.png"
/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Brushlog",
"url": "https://libreble.github.io/brushlog/",
"description": "Sync the history your Oral-B iO already stores, see live pressure, brush-head wear, streaks and trends. In Chrome over Web Bluetooth — no Oral-B account, no cloud.",
"applicationCategory": "HealthApplication",
"operatingSystem": "Chrome on Android, Windows, macOS, Linux, ChromeOS",
"browserRequirements": "Requires a Chromium browser with Web Bluetooth (Chrome or Edge)",
"offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD" },
"isAccessibleForFree": true,
"license": "https://opensource.org/licenses/MIT",
"publisher": {
"@type": "Organization",
"name": "libreble",
"url": "https://libreble.github.io/"
},
"image": "https://libreble.github.io/og/brushlog.png"
}
</script>
<!--
Apply the persisted/system theme before first paint so there's no flash of the wrong
theme (FOUC). Reads the same localStorage key useTheme uses; default is system.
-->
<script>
(function () {
try {
var choice = localStorage.getItem("brushlog.theme"); // 'light' | 'dark' | 'system'
var dark =
choice === "dark" ||
((choice === "system" || !choice) &&
window.matchMedia("(prefers-color-scheme: dark)").matches);
document.documentElement.classList.toggle("dark", dark);
} catch (e) {
/* storage/matchMedia unavailable — fall back to CSS default (light) */
}
})();
</script>
</head>
<body class="h-full">
<div id="root" class="h-full"></div>
<noscript>
<h1>Brushlog — Oral-B toothbrush history & live coaching</h1>
<p>
Sync the brushing history your Oral-B iO already stores, see live pressure, brush-head
wear, streaks and trends — over Web Bluetooth, with no Oral-B account and no cloud. It
needs JavaScript and Chrome on Android or Chrome/Edge on desktop.
</p>
<p><a href="https://github.com/libreble/brushlog">Source and protocol documentation</a></p>
</noscript>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>