Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ running statistics, and export the result to CSV — no backend, no installation

**<https://fyfar.github.io/multimeter-live/>**

Open it in a Chromium-based browser, connect your meter, and click **Connect**.
Open it in a supported browser (Chrome, Edge, Opera, or Firefox 151+), connect
your meter, and click **Connect**.
Everything runs locally in your browser — no data leaves your machine.

### Install & offline
Expand Down Expand Up @@ -56,8 +57,10 @@ update.
## Requirements

- A **ZOYI ZT703s** multimeter connected over USB serial (see device note above).
- A **Chromium-based browser** (Chrome, Edge, Opera). The Web Serial API is not
available in Firefox or Safari.
- A browser with the **Web Serial API**: any **Chromium-based browser** (Chrome,
Edge, Opera) or **Firefox 151+** on desktop ([added May 2026](https://hacks.mozilla.org/2026/05/web-serial-support-in-firefox/)).
Safari is not supported. On Firefox Enterprise builds, Web Serial is disabled by default
and must be enabled via the `DefaultSerialGuardSetting` policy.
- A served origin of **`https://` or `localhost`** — Web Serial requires a secure
context. The live demo is served over HTTPS, so it works out of the box.

Expand Down
1 change: 1 addition & 0 deletions app/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -468,6 +468,7 @@ export default function Home() {
stats={sessionStats}
unit={chartUnit}
decimals={statDecimals}
canRecord={status === 'connected'}
onExportCsv={exportCsv}
onToggleRecord={handleToggleRecord}
onClear={flushSession}
Expand Down
11 changes: 7 additions & 4 deletions components/DataLog.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use client';

import { memo, useMemo, useState } from 'react';
import { Search, Download, Pause, Play, Trash2 } from 'lucide-react';
import { Search, Download, Square, Play, Trash2 } from 'lucide-react';
import { clsx } from 'clsx';
import { MODE_LABELS, type Reading } from '@/lib/parser';
import { StatisticsPanel, type SessionStats } from '@/components/StatisticsPanel';
Expand All @@ -27,6 +27,7 @@ export function DataLog({
stats,
unit,
decimals,
canRecord,
onExportCsv,
onToggleRecord,
onClear,
Expand All @@ -38,6 +39,7 @@ export function DataLog({
stats: SessionStats | null;
unit: string;
decimals?: number;
canRecord: boolean;
onExportCsv: () => void;
onToggleRecord: () => void;
onClear: () => void;
Expand Down Expand Up @@ -179,9 +181,10 @@ export function DataLog({
<div className="space-y-1.5">
<ActionButton
onClick={onToggleRecord}
icon={recording ? <Pause size={12} /> : <Play size={12} />}
label={recording ? 'Pause Logging' : 'Resume Logging'}
variant={recording ? 'active' : 'default'}
icon={recording ? <Square size={12} /> : <Play size={12} />}
label={recording ? 'Stop Logging' : 'Start Logging'}
variant={recording ? 'danger' : 'success'}
disabled={!recording && !canRecord}
/>
<ActionButton
onClick={onClear}
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "multimeter-live",
"version": "1.0.3",
"version": "1.0.4",
"private": true,
"description": "Real-time browser dashboard for the ZOYI ZT703s multimeter over the Web Serial API — live readings, trend chart, session stats, and CSV export. No backend.",
"license": "MIT",
Expand Down
Loading