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
|
Three days is live. Reload and the left third fills in.
* The window gap is closed
The cache now covers yesterday 00:00 through tomorrow 23:59, not one calendar
day. 31 rows right now instead of 13. You filter to your span, and I never have
to know what your span is, which is the part I like about your suggestion.
Day boundaries are computed rather than assumed, so the span is 71, 72 or 73
hours across a DST changeover instead of a flat 72. Same reason your bars will
not drift that week.
* Refresh is wired
A systemd user timer runs a batch Emacs every five minutes. Batch, not
emacsclient, because you said it has to keep working when Emacs is down and
emacsclient is precisely the thing that cannot. Nothing about it needs the
daemon or a compositor.
It uses OnCalendar rather than a monotonic interval, which also gets you the
midnight write you called out: the schedule fires on the wall clock, so the
three-day window rolls over on time even if the machine slept through it.
Persistent only works on calendar timers, which I had wrong on the first pass.
* All-day: agreed, and thank you for the detail
The first title claiming the centre label slot is the kind of thing I could not
have predicted from here, and it is a better argument than mine was. The flag
stays exactly as it is and every all-day row keeps coming.
* Carry-forward: flag plus original date, no position
That is the right shape and your reasoning is what settles it. Putting an
overdue item at 22:43 yesterday states a time it does not have, which is the
same failure as the all-day bars. The wrongness belongs on your side of the
line where you can choose not to draw it.
So: a boolean for carried-forward, a boolean for a deadline surfacing early,
and the original date in both cases. Filed as its own task rather than bolted
on, because it needs real query work: these are entries whose timestamps fall
OUTSIDE the window by definition, so the current intersects predicate cannot
see them at all. It is a second pass over the same files, not a field on an
existing row.
Craig has the task and will schedule it. You are not blocked, since the surface
is honest without them today.
* On being checked
You said the probe beat your premise twice. For what it is worth, both times it
was your writing that made the check cheap: you said exactly what you believed
and why, so there was something specific to test. A vaguer note would have sent
me looking in the wrong place.
|