feat(tasks): due dates with optional time; alarms at the right moment
Due dates can carry a time (YYYY-MM-DDTHH:MM). Alarms fire at that time,
or 09:00 for all-day tasks, minus the user's lead time, in TZ (default
Europe/Berlin, tzdata embedded). A new due date or reopening a task
re-arms the alarm. Recurrence keeps the time; Markdown export/import
carry it. The UI shows relative labels ("Heute, 14:30"), marks overdue
tasks to the minute and groups by local day instead of the UTC date.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
300fd6a7be
commit
344f5e4ab2
21 files changed
+391
-50
No files matched your search
@@ -11,6 +11,7 @@ import (
|
||||
"os/signal"
|
||||
"syscall"
|
||||
"time"
|
||||
_ "time/tzdata" // time zones without system tzdata (scratch/alpine images)
|
||||
|
||||
"github.com/sandrodach/mindsift/internal/api"
|
||||
"github.com/sandrodach/mindsift/internal/config"
|
||||
@@ -22,6 +23,12 @@ import (
|
||||
var embeddedDist embed.FS
|
||||
|
||||
func main() {
|
||||
// Due dates and alarms use the server's local time; without TZ that is Europe/Berlin
|
||||
if os.Getenv("TZ") == "" {
|
||||
if loc, err := time.LoadLocation("Europe/Berlin"); err == nil {
|
||||
time.Local = loc
|
||||
}
|
||||
}
|
||||
cfg := config.Load()
|
||||
|
||||
level := cfg.SlogLevel()
|
||||
|
||||
Reference in new issue
Block a user