feat(plan): dagens plan står på I dag, og ikke kun i en besked

Planen var en notifikation og ikke andet. Klokken klippede den af efter
én linje — "2 forfalder i dag, 1 er sprun…" — og klikket førte ingen
steder hen, fordi en plan hverken er en note, en opgave eller et projekt.
Det eneste sted, den landede hel, var push-beskeden på telefonen.

Nu står den som et kort øverst på I dag, dér hvor man kigger, når man
starter dagen. Beskeden er påmindelsen; kortet er stedet, den bliver.

Teksten er gemt for dagen frem for regnet forfra, hver gang nogen kigger.
En model pr. sidevisning er dyr for noget, der ikke har ændret sig — og
vigtigere: en plan, der siger noget andet, når man kigger på den, end den
sagde, da den kom, er værre end begge dele hver for sig. Kortet siger
også, hvornår den blev lavet: en plan fra klokken syv er en anden slags
oplysning klokken fire end klokken otte.

En plan fra i går sendes ikke med. Et kort, der viser gårsdagens plan
under overskriften "i dag", er værre end et tomt kort.

"Forny planen" laver en ny, når dagen har flyttet sig, og sender ikke en
besked om noget, man står og kigger på — den slags lærer folk at ignorere
klokken. Og for den, der har morgenbeskeden slået fra, tilbyder kortet at
lave planen på stedet, så funktionen ikke kun findes for dem, der vil
vækkes.

Klokken fører nu til I dag, og planen fylder de tre linjer, den er, i
stedet for at blive klippet af.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
kristianwind
2026-09-09 10:22:27 +02:00
co-authored by Claude Opus 5
parent 3c14906db2
commit 6cf184caa6
11 changed files with 419 additions and 18 deletions
+29 -3
View File
@@ -3688,7 +3688,21 @@ paths:
/api/v1/ai/plan/now:
post:
tags: [integrations]
summary: Send today's plan now, to whoever asks.
summary: Make today's plan now, to whoever asks.
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
silent:
type: boolean
description: >
Make and store it without sending a notification — the card on
Today asking for a plan while somebody is looking at it. A
notification about something in front of you is the kind that
teaches people to ignore the bell.
description: |
The counts come from the database and the sentence from the model, in that
order: a model that counted for itself would sometimes count wrong, and a
@@ -4545,8 +4559,9 @@ components:
DailyPlanSettings:
type: object
description: >
One person's morning plan. Off by default — a notification at seven in the
morning that nobody asked for is not a help.
One person's morning plan, and today's plan itself. One resource, because
it is one thing: the plan is the resource and the setting is when it gets
made.
properties:
enabled: { type: boolean }
hour:
@@ -4555,6 +4570,17 @@ components:
last_sent:
type: string
description: The date it last went out, in that person's own timezone.
plan:
type: string
description: >
Today's plan as it was sent — kept rather than recomputed on every
look. A plan that says something different when you look at it than it
said when it arrived is worse than either. Absent when the stored plan
is from another day.
plan_date: { type: string }
plan_at:
type: integer
description: Unix seconds. Shown on the card, because a plan made at seven reads differently at four.
AISuggestion:
type: object