feat(daily): ship daily detection off, and say it's experimental

Dailiness is guessed from the source's wording, which is a weak signal
and wrong in both directions. Guessing on a reader's behalf and hoping
they notice is the wrong default for a checklist they may build a streak
on, so `detectDaily` now starts false and the control carries an
Experimental tag saying what it does and doesn't know.

The default applies to new readers only — a stored `prefs` keeps its
value, because switching it off under someone who has been ticking
auto-detected checklists would pull those chips out of the strip with no
explanation. Nothing is deleted either way.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This commit is contained in:
Lucas Winther
2026-08-16 20:57:26 +02:00
co-authored by Claude Opus 5
parent 3a70672d22
commit 3434ac02cf
4 changed files with 28 additions and 10 deletions
+9 -5
View File
@@ -87,9 +87,9 @@ export function Controls({
</label>
{/* Detection reads the source's wording and is wrong in both
directions. Off leaves only the events the reader marked, and
discards nothing every mark and logged day survives, so it can
be switched back on. */}
directions, so it ships off and says so. Off leaves only the
events the reader marked, and discards nothing every mark and
logged day survives, so it can be switched back on. */}
<label className="flex cursor-pointer select-none items-start gap-2 text-xs text-muted">
<input
type="checkbox"
@@ -99,9 +99,13 @@ export function Controls({
/>
<span>
Spot daily events automatically
<span className="ml-1.5 rounded-full border border-hairline px-1.5 py-0.5 align-[1px] text-[0.5625rem] font-medium uppercase tracking-wider text-faint">
Experimental
</span>
<span className="mt-0.5 block max-w-xs leading-relaxed text-faint">
Off, only events you mark yourself get a checklist. Your ticks
and streaks are kept either way.
Guessed from what the source wrote, so it misses some and
invents others. Off, only events you mark yourself get a
checklist. Your ticks and streaks are kept either way.
</span>
</span>
</label>
+5 -1
View File
@@ -23,6 +23,10 @@ export interface Prefs {
* Whether to guess which events repeat daily from what the source printed.
* Off leaves only the ones the reader marked themselves; it never discards a
* mark or a logged day, so it is reversible.
*
* Off by default: the guess reads source wording and is wrong in both
* directions, so a reader starts with only the dailies they chose. Readers
* who already switched it on keep it — stored prefs win over this default.
*/
detectDaily: boolean;
showCompleted: boolean;
@@ -40,7 +44,7 @@ function defaults(): Prefs {
hiddenGames: [],
focusGame: null,
sort: "ending",
detectDaily: true,
detectDaily: false,
showCompleted: true,
showIgnored: false,
regionConfirmed: false,