---
key: spa.datetime-local-input
title: 2026-07-09 — datetime-local instead of Chronic natural-language start parsing
status: active
since: '2026-07-09'
supersedes: none
superseded-by: none
rule: The channel-mode date/time input uses a native `<input type="datetime-local">` instead of free-text Chronic natural-language parsing.
signals: '`playback.m3u8` `start` param, ISO-8601 round-trip · paths: none beyond the screen itself · issues: none cited'
mechanics: playback-troubleshooting screen, `playback.m3u8` `start` param
---

The channel-mode "Date and Time" input in the SPA playback-troubleshooting screen uses a native
`<input type="datetime-local">`, a **deliberate deviation** from the Blazor page, which parsed a
free-text field with `Chronic.Core.Parser` (natural language like "yesterday at 8pm"). The SPA has no
Chronic dependency and a picker is unambiguous; the selected local datetime is sent to
`playback.m3u8` as an ISO-8601 `start` param via `new Date(value).toISOString()`, which the
controller binds to `DateTimeOffset?` exactly as the Blazor round-trip (`"o"`) format did.
