@squirreljetpack/im-dynamic 0.2.9 → 0.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,73 @@
1
+ ## [0.2.11] - 2026-11-02
2
+
3
+ ### 🚀 Features
4
+
5
+ - `im :c mm` opens the matchmaker render config (`mm.toml`) in
6
+ `$VISUAL`/`$EDITOR`, alongside the config, `moods` and `colors` targets.
7
+ - Log entries (moods, trackers, todo completions) store the UTC offset and
8
+ the location string (the system IANA name, or empty when it has none) in
9
+ effect where they were written. The today view groups log entities by their
10
+ recorded **civil day** and renders their recorded civil time; ordering stays
11
+ absolute. Mood/tracker previews show the differing location and wall-clock
12
+ shift under the timestamp; task previews append the same parts inline to
13
+ `last:` as `prev:`.
14
+ - Tracker interval anchors are unzoned civil datetimes resolved in the current
15
+ local zone. Replace-mode slots and cumulative sums assign foreign logs by
16
+ their recorded wall clock, so an entry stays in the same civil slot when
17
+ viewed from another zone.
18
+ - Replace-mode null trackers store their absolute seconds from the interval
19
+ start in the entry payload; color and the strict when-zone use that stored
20
+ position.
21
+ - Explicit todo completions join the today view on their civil completion day.
22
+ `B` now merges explicitly completed scheduled tasks on that day instead of on
23
+ an overlapping availability window.
24
+
25
+ ### 💥 Breaking changes
26
+
27
+ - Sync vocabulary is version 4: `tz_offset` (required int) and `location`
28
+ (required text; empty when the system has no name) on mood, tracker and
29
+ completion. Pre-v4 creates lack the
30
+ location or offset and are intentionally unbuildable; reset the sync log
31
+ when replaying one.
32
+ - Databases from earlier builds are not migrated. Delete the database file and
33
+ sign in to rebuild from the log. Tracker configs must drop the `Z`/numeric
34
+ offset from interval anchors.
35
+
36
+ ## [0.2.10] - 2026-10-31
37
+
38
+ ### 🚀 Features
39
+
40
+ - `im :sync --reset` asks before it discards local changes the server never
41
+ received; `--force` skips the question, and an idle database rebuilds without
42
+ a prompt.
43
+ - Sync is versioned end to end. A cursor names the log it indexes, and the
44
+ client and worker exchange the envelope `protocol` and cell `version` on
45
+ every round: a cursor minted by another log, one past the end of this log, or
46
+ a peer that speaks another version is refused instead of merging unrelated
47
+ histories or skipping what it cannot read. `im :sync status` prints the log,
48
+ cursor version and both protocol numbers.
49
+
50
+ ### 🐛 Bug Fixes
51
+
52
+ - A task's start time is required, and an edit can no longer clear the column
53
+ that defines a task's kind. A scheduled task's window opens at that start, a
54
+ recurring task's intervals tile from it, and a oneshot is stamped with it at
55
+ creation; clearing the duration or interval that goes with it is refused
56
+ instead of silently reclassifying the task (and with it its availability,
57
+ view membership and completion scope).
58
+ - An end time is cleared by a blank answer (or `never`/`none`) in both the
59
+ create and edit menus; a blank previously kept the old value.
60
+
61
+ ### 💥 Breaking changes
62
+
63
+ - A task create must carry `start_time`, so the cell vocabulary is now version
64
+ 2. A peer that speaks another version refuses the round rather than skip the
65
+ cell, and v0.2.9 and earlier clients send no version at all: redeploy the
66
+ worker and upgrade the client together.
67
+ - Databases from earlier builds are not migrated: a schema change means
68
+ deleting the database file, then signing in to rebuild from the log.
69
+
70
+
1
71
  ## [0.2.9] - 2026-10-30
2
72
 
3
73
  ### 🚀 Features
package/README.md CHANGED
@@ -76,8 +76,8 @@ Usage:
76
76
  (optionally attached to a mood)
77
77
 
78
78
  im ! [name] [@<time>] create a task (interactive without a name)
79
- im ! %[<interval>] [[:]name] create a recurring task (interactive)
80
- im ! @[<time>] [:<name>] [%<duration>] scheduled a task (interactive if partial)
79
+ im ! %[interval] [[:]name] create a recurring task (interactive)
80
+ im ! @[time] [:<name>] [%<duration>] scheduled a task (interactive if partial)
81
81
  im +[task] [count] edit or update a task by its reference
82
82
  (see `im -vh`)
83
83
 
@@ -96,11 +96,11 @@ Trackers and grids:
96
96
 
97
97
  Other:
98
98
  im :tool embed|mood|clear|.. (see `im :tool --help`)
99
- im :tool config | :c [moods|colors] open the config in $VISUAL / $EDITOR
99
+ im :tool config | :c [moods|colors|mm] open the config in $VISUAL / $EDITOR
100
100
  im - browse trackers
101
101
  im :db prune|backfill|doctor database utilities
102
102
 
103
- im :sync [register|login|status|logout] setup/manage/run sync
103
+ im :sync [register|login|status|logout] setup/authenticate/run sync
104
104
 
105
105
 
106
106
  Flags:
@@ -149,10 +149,14 @@ Trackers are defined in your configuration (`im :tool config`); each `[tracker.<
149
149
  section is logged through `im -<name> <value>` (no value for `null` trackers):
150
150
 
151
151
  - Kinds: `text`, `integer`, `float`, `duration` (strings like `6m 30s`), `null` (timestamp/count markers — requires an interval).
152
- - `interval = { anchor = "2026-01-01T00:00:00-04:00", span = "1 day" }` bins
153
- entries into calendar slots. By default, a new log in a slot
154
- replaces the slot's previous entry; `interval.cumulative = true` keeps every log and
155
- the slot's grid dot shows the aggregate.
152
+ - `interval = { anchor = "2026-01-01T00:00:00", span = "1 day" }` bins
153
+ entries into calendar slots. The anchor is an unzoned civil datetime (no `Z`
154
+ or numeric offset) resolved in your current local zone. By default, a new log
155
+ in a slot replaces the slot's previous entry; `interval.cumulative = true`
156
+ keeps every log and the slot's grid dot shows the aggregate. Logs record the
157
+ UTC offset and location string (the system IANA name, or empty) they were
158
+ written in, so they stay on their recorded civil day and interval slot when
159
+ viewed from another zone.
156
160
 
157
161
  ## FAQ
158
162
 
@@ -18,7 +18,7 @@
18
18
  },
19
19
  "hasInstallScript": true,
20
20
  "name": "@squirreljetpack/im-dynamic",
21
- "version": "0.2.9"
21
+ "version": "0.2.11"
22
22
  },
23
23
  "node_modules/detect-libc": {
24
24
  "engines": {
@@ -47,5 +47,5 @@
47
47
  }
48
48
  },
49
49
  "requires": true,
50
- "version": "0.2.9"
50
+ "version": "0.2.11"
51
51
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "artifactDownloadUrls": [
3
- "https://github.com/Squirreljetpack/im/releases/download/v0.2.9"
3
+ "https://github.com/Squirreljetpack/im/releases/download/v0.2.11"
4
4
  ],
5
5
  "bin": {
6
6
  "im-dynamic": "run-im-dynamic.js"
@@ -87,7 +87,7 @@
87
87
  "zipExt": ".tar.xz"
88
88
  }
89
89
  },
90
- "version": "0.2.9",
90
+ "version": "0.2.11",
91
91
  "volta": {
92
92
  "node": "18.14.1",
93
93
  "npm": "9.5.0"