@llblab/pi-telegram 0.27.12 → 0.29.0
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/AGENTS.md +152 -258
- package/BACKLOG.md +1 -169
- package/CHANGELOG.md +398 -443
- package/README.md +10 -7
- package/api/updates.ts +5 -0
- package/docs/architecture.md +73 -28
- package/docs/multi-instance-bus.md +23 -5
- package/docs/outbound.md +2 -2
- package/docs/public-api.md +8 -7
- package/docs/ui-style.md +6 -6
- package/docs/updates.md +29 -11
- package/index.ts +358 -246
- package/lib/activity-verbosity.ts +26 -0
- package/lib/bindings.ts +240 -5
- package/lib/bus-follower.ts +436 -238
- package/lib/bus-leader.ts +395 -42
- package/lib/bus.ts +994 -153
- package/lib/commands.ts +184 -30
- package/lib/config.ts +23 -2
- package/lib/journal.ts +3140 -0
- package/lib/lifecycle.ts +4 -0
- package/lib/locks.ts +4 -2
- package/lib/media.ts +71 -32
- package/lib/menu-queue.ts +31 -17
- package/lib/menu.ts +5 -3
- package/lib/model.ts +51 -24
- package/lib/ownership.ts +42 -7
- package/lib/paths.ts +35 -0
- package/lib/polling.ts +591 -106
- package/lib/prompts.ts +20 -89
- package/lib/queue.ts +732 -143
- package/lib/routing.ts +291 -64
- package/lib/runtime.ts +26 -10
- package/lib/skills.ts +21 -0
- package/lib/status.ts +257 -18
- package/lib/sync.ts +131 -5
- package/lib/telegram-api.ts +41 -11
- package/lib/text-groups.ts +75 -35
- package/lib/threads.ts +112 -4
- package/lib/turns.ts +79 -14
- package/lib/updates.ts +3771 -223
- package/package.json +7 -3
- package/scripts/check-downgrade.mjs +435 -0
- package/skills/button-console/SKILL.md +139 -0
- package/skills/telegram-bridge/SKILL.md +138 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,447 +1,435 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
> Each release keeps at most 8 outcome records of at most 512 characters.
|
|
4
|
+
|
|
5
|
+
## 0.29.0: Skill-First Agent Operation
|
|
6
|
+
|
|
7
|
+
- `Bundled Skills`: Added discoverable `telegram-bridge` and `button-console` Skills through package metadata and source-checkout resource discovery. Stable turn, delivery, action, Threaded Mode, formatting, handler, and diagnosis guidance now lives in the bridge Skill, while Button Console provides optional evidence-backed CLI navigation.
|
|
8
|
+
- `Model Context Contraction`: Removed the redundant `telegram_help` model tool and its repeated guidance implementation. Compact authority-aware prompts route agents to the bundled Skill, while disconnect/recovery now suppresses and restores only the two delivery tools without affecting foreign tools.
|
|
9
|
+
|
|
10
|
+
## 0.28.0: Durable Inbound And Protocol Reconstruction
|
|
11
|
+
|
|
12
|
+
- `Owned Polling Request`: Only `getUpdates` gets an automatic budget: Telegram long-poll timeout plus 10 seconds. Poller abort settles requests and API retry waits; broad ordinary, media, and follower budgets were removed.
|
|
13
|
+
- `Polling Diagnostics`: Polling now reports exact phases, timestamps, current update, last response, and stop reason. `pollingActive` remains lifecycle evidence rather than a health heuristic.
|
|
14
|
+
- `Inbound Command Admission`: Menu commands finish required local mutation before fenced best-effort rendering and command sync. Unsettled `/start` effects and unauthorized capability probes no longer retain polling.
|
|
15
|
+
- `Durable Inbound Admission`: Polling journals before offset commit and drains independently. Queue ownership, handoff, single-flight, and fences prevent loss or stale effects. Failures retry forever with a 60-second cap; tri-state proof recovers only proven-dead owners. Revision snapshots survive crashes and downgrade preflight fails closed. Duplicate transitions skip serialization/projection; grouped receipt matching and bounded worker eligibility/retry/failure/diagnostics use indexed or single-pass scans.
|
|
16
|
+
- `Local Protocol Identity`: Registration exchanges protocol v1, build, and capabilities; compatible builds may skew. A non-owner refreshes owner mode before connect: enabled registers without takeover, disabled uses classic confirmation. Durable forwarding uses stable binding/source IDs and explicit settlement; only an authenticated exact receipt completes leader authority. Missing, negative, stale, or mismatched ACKs stay durable and replay idempotently across registration replacement.
|
|
17
|
+
- `Queue Scheduling`: One disposition mutation serves reactions and queue-menu priority while publishing sorted state once. Removal and dispatch partition in one pass; admission dedupe indexes receipt identity once. Exact receipt replays and repeated no-op reaction snapshots no longer clone or republish unchanged queue state. Removal suppresses, priority promotes, neither restores default, and removal wins when both exist. Suppressed turns retain authority and survive handoff.
|
|
18
|
+
- `Async Ownership And Composition`: Long-lived owners serialize in-flight acts and retained reruns. Journal/admission/polling, queue dispatch/handoff, activity, thread/status/cleanup, and agent-message assembly moved from `index.ts` into owning domains. The entrypoint retains visible construction, cross-domain port wiring, and registration without local mutable adapters.
|
|
19
|
+
- `Restart-Preserving Quit`: Graceful quit separates durable restart ownership from Telegram tab cleanup: the owner slot remains reclaimable by a reopened same-directory session even when automatic cleanup deletes the tab. Confirmed `/telegram-disconnect` still clears both. Full-suite concurrency is capped at four so process/timer integration evidence is not starved by unrelated test files.
|
|
20
|
+
|
|
3
21
|
## 0.27.12: Windows Log Serialization Hotfix
|
|
4
22
|
|
|
5
|
-
- `Windows Log Serialization`:
|
|
6
|
-
- `Transaction Coverage`: A deterministic regression injects a vanished-path `EPERM` during guard publication and requires the transaction operation to run exactly once after retry. Impact: cross-process diagnostics retain all lines without weakening guard ownership or recovery fencing.
|
|
23
|
+
- `Windows Log Serialization`: Retried transient guard-publication errors even when a competing path vanished, preserving exactly-once transaction execution and complete concurrent JSONL batches.
|
|
7
24
|
|
|
8
25
|
## 0.27.11: Follower Connection Notice Hotfix
|
|
9
26
|
|
|
10
|
-
- `Follower
|
|
11
|
-
- `Handoff Coverage`: A regression now exercises fresh thread provisioning followed by exact session handoff and requires one visible connected notice plus a non-message visibility probe. Impact: target validation and stale-thread recovery remain intact without reintroducing duplicate chat bubbles.
|
|
27
|
+
- `Follower Handoff`: Immediate session handoff verifies the carried target with a chat action instead of repeating the connection notice, while stale-target recovery remains covered.
|
|
12
28
|
|
|
13
29
|
## 0.27.10: Leader Thread Rebind Hotfix
|
|
14
30
|
|
|
15
|
-
- `
|
|
16
|
-
- `Rebind Coverage`: The explicit new-slot reroute regression now requires the durable record, live leader target, slot, and thread name to converge before old-thread cleanup. Impact: future Thread reconciler changes cannot update persisted state while leaving agent-message routing on a stale target.
|
|
31
|
+
- `Leader Rebind`: Reclaiming or replacing the leader thread updates live identity after durable commit, keeping agent routing aligned before old-thread cleanup.
|
|
17
32
|
|
|
18
33
|
## 0.27.9: Symmetric Agent-Turn Metadata Hotfix
|
|
19
34
|
|
|
20
|
-
- `Agent-Turn
|
|
21
|
-
- `Transport Preservation`: Source-thread metadata travels as an internal serialized message field so leader-to-follower bus forwarding preserves it across the local IPC boundary. Focused regressions prove synthetic construction and final prompt formatting.
|
|
35
|
+
- `Agent-Turn Metadata`: Cross-instance prompts use one trusted Telegram prefix with source-thread attribution, preserved through serialized bus forwarding without enabling user impersonation.
|
|
22
36
|
|
|
23
37
|
## 0.27.8: Bidirectional Thread Routing Hotfix
|
|
24
38
|
|
|
25
|
-
- `Directional Ownership`:
|
|
26
|
-
- `Regression Coverage`: Focused tests independently prove source-message ownership bypass, destination-thread ownership forwarding with exact registration generation, and preservation of the internal agent-turn marker. Impact: both routing directions remain explicit instead of one fix silently disabling the opposite direction.
|
|
39
|
+
- `Directional Ownership`: Agent turns bypass ownership only for the already-sent source message while retaining destination-thread routing and exact follower generation checks.
|
|
27
40
|
|
|
28
41
|
## 0.27.7: Bidirectional Thread Messaging Hotfix
|
|
29
42
|
|
|
30
|
-
- `Follower-to-Leader
|
|
43
|
+
- `Follower-to-Leader Turns`: Follower-originated agent turns retain reply context but bypass source-message ownership, reaching the leader instead of bouncing back to the sender.
|
|
31
44
|
|
|
32
45
|
## 0.27.6: Autonomous Follow-Up Delivery Hotfix
|
|
33
46
|
|
|
34
|
-
- `Follow-Up Finals`:
|
|
35
|
-
- `Safety and Coverage`: Telegram-originated finals remain exclusively owned by active-turn settlement, while unclassified output still requires Proactive Push policy plus fresh direct/follower transport authority. Regression coverage proves unclassified finals deliver once when enabled and remain suppressed when disabled.
|
|
47
|
+
- `Follow-Up Finals`: Unclassified completed assistant blocks now use Proactive Push with fresh authority, while Telegram-originated finals remain exclusively owned by active-turn settlement.
|
|
36
48
|
|
|
37
49
|
## 0.27.5: Cross-Instance Agent Turns
|
|
38
50
|
|
|
39
|
-
- `Live Thread Addressing`: `telegram_message`
|
|
40
|
-
- `Agent Turn Routing`:
|
|
41
|
-
- `Compatibility and Coverage`: Existing default and `chat_id` / `thread_id` behavior remains compatible; active-turn cross-thread sends gain agent routing when available. Regressions cover protocol parsing, stale generations, name resolution, ambiguity, attribution, preflight ordering, and tool delivery.
|
|
51
|
+
- `Live Thread Addressing`: `telegram_message` accepts a live thread name or id and rejects unknown, ambiguous, same, offline, or cross-chat targets before visible mutation.
|
|
52
|
+
- `Agent Turn Routing`: Targeted sends route one attributed turn through authenticated generation-fenced IPC while preserving the existing visible message and default `chat_id` behavior.
|
|
42
53
|
|
|
43
54
|
## 0.27.4: Disconnect Leadership Release Hotfix
|
|
44
55
|
|
|
45
|
-
- `Leadership Release`:
|
|
46
|
-
- `Successor Recovery`: Incomplete
|
|
47
|
-
- `Regression Coverage`: Added exact promoted-leader and epoch-loss disconnect regressions proving cleanup diagnostics remain visible while `stopPolling` still runs. Impact: future cleanup hardening cannot silently restore the lock-hostage failure mode.
|
|
56
|
+
- `Leadership Release`: Disconnect persists cleanup intent, attempts fenced thread cleanup, then releases polling and ownership even when Telegram cleanup fails or the epoch changes.
|
|
57
|
+
- `Successor Recovery`: Incomplete cleanup remains exact-generation recovery work for the next leader; manual followers still require authenticated live-leader teardown.
|
|
48
58
|
|
|
49
59
|
## 0.27.3: Follower Cross-Thread Delivery Hotfix
|
|
50
60
|
|
|
51
|
-
- `Follower Cross-Thread Delivery`:
|
|
52
|
-
- `Authorization Coverage`: Focused regressions cover follower marker admission, assigned-target rejection, wrong-chat rejection, unmarked rejection, transport metadata stripping, and Rich-message marking while preserving the existing target-aware active-turn guard. Impact: the outbound policy and bus trust boundary now agree end to end instead of allowing a request locally and rejecting it at leader transport.
|
|
61
|
+
- `Follower Cross-Thread Delivery`: A scoped internal marker permits follower sends only to a different thread in the paired chat, then is stripped before Bot API transport; arbitrary cross-chat access remains denied.
|
|
53
62
|
|
|
54
63
|
## 0.27.2: Target-Aware Direct Message Guard
|
|
55
64
|
|
|
56
|
-
- `Direct Message Guard`: `telegram_message`
|
|
57
|
-
- `Boundary Coverage`: Focused regressions distinguish implicit, same-target, and different-thread direct messaging while retaining the existing active-turn attachment queue contract. Impact: future duplicate protection cannot silently collapse all direct delivery into a coarse active-turn ban.
|
|
65
|
+
- `Direct Message Guard`: `telegram_message` rejects implicit or active-turn targets to prevent duplicate replies, while explicit different targets, local sends, and Proactive Push remain available.
|
|
58
66
|
|
|
59
67
|
## 0.27.1: Humanized Tool Labels Hotfix
|
|
60
68
|
|
|
61
|
-
- `Tool Labels`: Tool
|
|
69
|
+
- `Tool Labels`: Tool roots replace underscores with spaces and capitalize words while preserving recognizable uppercase prefixes such as `FF`.
|
|
62
70
|
|
|
63
71
|
## 0.27.0: Telegram Commentary Delivery
|
|
64
72
|
|
|
65
|
-
- `Telegram Commentary`: Completed intermediate assistant
|
|
66
|
-
- `Delivery Ordering`:
|
|
73
|
+
- `Telegram Commentary`: Completed intermediate assistant segments arrive once on the immutable originating target before the final, with ordering, rendering, authority, and no-replay guarantees.
|
|
74
|
+
- `Delivery Ordering`: Final delivery waits for admitted activity and commentary inside background delivery without blocking Pi lifecycle completion.
|
|
67
75
|
|
|
68
76
|
## 0.26.16: Follower Edit Normalization Hotfix
|
|
69
77
|
|
|
70
|
-
- `Follower
|
|
78
|
+
- `Follower Edits`: Bus-routed `editMessageText` treats “message is not modified” as unchanged, matching direct transport and preventing false activity failure.
|
|
71
79
|
|
|
72
80
|
## 0.26.15: Follower Bus Timeout Hotfix
|
|
73
81
|
|
|
74
|
-
- `Follower Bus Timeout`: Restored the 30-second
|
|
82
|
+
- `Follower Bus Timeout`: Restored the shared 30-second follower-client default after a one-second fallback caused forwarded updates to time out and replay under load.
|
|
75
83
|
|
|
76
84
|
## 0.26.14: Reasoning Activity Throttle
|
|
77
85
|
|
|
78
|
-
- `Reasoning Throttle`:
|
|
86
|
+
- `Reasoning Throttle`: Reasoning edits now wait at least 1.2 seconds and 160 characters after the first frame; terminal flushes and the 24-frame cap remain unchanged.
|
|
79
87
|
|
|
80
88
|
## 0.26.13: Entrypoint Compression And BotFather Prerequisites
|
|
81
89
|
|
|
82
|
-
- `Entrypoint Compression`: Moved
|
|
83
|
-
- `
|
|
84
|
-
- `Setup Documentation`: Documented the BotFather prerequisites for guest mode, private-chat Threaded Mode, and queue-reaction admin rights in the Quick Start. Impact: operators can enable the capabilities a feature needs instead of discovering that a disabled capability silently never triggers.
|
|
90
|
+
- `Entrypoint Compression`: Moved constants, generation policy, capability answers, and follower/lifecycle assembly into owning domains, leaving `index.ts` as named port wiring.
|
|
91
|
+
- `Setup Documentation`: Documented BotFather prerequisites for Guest Mode, private-chat Threaded Mode, and queue-reaction administration.
|
|
85
92
|
|
|
86
93
|
## 0.26.12: Monospaced Tool Evidence Keys
|
|
87
94
|
|
|
88
|
-
- `Tool Evidence Typography`:
|
|
95
|
+
- `Tool Evidence Typography`: Nested `arguments`, `update`, `result`, and `error` summaries render as lowercase inline code without changing disclosure or delivery behavior.
|
|
89
96
|
|
|
90
97
|
## 0.26.11: Compact Tool Hierarchy And Ordered Settings Copy
|
|
91
98
|
|
|
92
|
-
- `Tool
|
|
93
|
-
- `
|
|
94
|
-
- `
|
|
95
|
-
- `Windows Release Gates`: Rechecked the generic integration predicate at its deadline, gave only queued model-menu completion a five-second budget, and allowed the full-Pi parent fixture ten seconds for graceful shutdown. Impact: loaded Windows runners can complete the asserted event-loop and process-cleanup paths while genuine hangs, exit failures, and child polling remain bounded failures.
|
|
99
|
+
- `Tool Hierarchy`: Evidence children use plain lowercase labels; roots preserve recognizable uppercase prefixes while retaining sentence casing elsewhere.
|
|
100
|
+
- `Settings Copy`: Detail descriptions now follow visible control order, including Draft previews `on` before `off (default)`.
|
|
101
|
+
- `Windows Gates`: Narrow test budgets cover queued model-menu completion and graceful child shutdown while retaining bounded failure detection.
|
|
96
102
|
|
|
97
103
|
## 0.26.10: Windows Graceful Disconnect Test Budget
|
|
98
104
|
|
|
99
|
-
- `Windows CI`:
|
|
105
|
+
- `Windows CI`: Raised only graceful follower-disconnect test response time from 500 ms to 5 s; production transport and cleanup semantics are unchanged.
|
|
100
106
|
|
|
101
107
|
## 0.26.9: Windows Filesystem And Timer Resilience
|
|
102
108
|
|
|
103
|
-
- `Config Persistence`:
|
|
104
|
-
- `Ownership Regression`:
|
|
109
|
+
- `Config Persistence`: Atomic config replacement retries bounded transient Windows sharing errors and removes failed temporary files without non-atomic fallback.
|
|
110
|
+
- `Ownership Regression`: Test scheduling headroom changed without altering one-second ownership checks or heartbeat behavior.
|
|
105
111
|
|
|
106
112
|
## 0.26.8: Windows Process-Startup Timing
|
|
107
113
|
|
|
108
|
-
- `Windows CI`:
|
|
114
|
+
- `Windows CI`: Raised full-Pi child readiness to 10 seconds and its watchdog to 15 seconds while still rejecting leaked polling and genuine hangs.
|
|
109
115
|
|
|
110
116
|
## 0.26.7: macOS Follower Reload Identity
|
|
111
117
|
|
|
112
|
-
- `macOS Identity`:
|
|
113
|
-
- `Follower Handoff`:
|
|
114
|
-
- `Regression Depth`: Replaced the helper-only handoff check with a runtime-level registration regression covering failed-attempt retention, serialized envelope evidence, successful acknowledgement, and handoff consumption. Impact: the test now exercises the race-fixing boundary rather than its projection helper.
|
|
118
|
+
- `macOS Identity`: Darwin follower identity derives from parent process start time, preserving a stable durable profile across extension reloads.
|
|
119
|
+
- `Follower Handoff`: Registration carries prior runtime and target until acknowledged, preventing refresh races from provisioning duplicate threads.
|
|
115
120
|
|
|
116
121
|
## 0.26.6: Windows Poll-Wait Boundary Fix
|
|
117
122
|
|
|
118
|
-
- `Windows CI`:
|
|
123
|
+
- `Windows CI`: Rechecks the final marker at the polling deadline so boundary-time success passes while genuinely missing evidence still fails.
|
|
119
124
|
|
|
120
125
|
## 0.26.5: Quieter Scoped Model Labels
|
|
121
126
|
|
|
122
|
-
- `Model Microcopy`:
|
|
127
|
+
- `Model Microcopy`: Scoped model buttons show optional thinking metadata as `provider/model (level)` instead of a middle-dot segment.
|
|
123
128
|
|
|
124
129
|
## 0.26.4: Quieter Update Omission Labels
|
|
125
130
|
|
|
126
|
-
- `Tool Microcopy`:
|
|
131
|
+
- `Tool Microcopy`: Retained tool updates now show omission evidence as `Update N (K earlier omitted)`.
|
|
127
132
|
|
|
128
133
|
## 0.26.3: One-Tap Tool Arguments
|
|
129
134
|
|
|
130
|
-
- `Tool Inspection`:
|
|
131
|
-
- `Test Housekeeping`: Removed redundant negative guards against historical activity icons and headers while retaining positive structure, routing, ordering, redaction, and fallback assertions. Impact: the suite expresses current contracts instead of preserving implementation archaeology.
|
|
135
|
+
- `Tool Inspection`: Opening a tool root now reveals Arguments immediately; secondary updates and results remain collapsed.
|
|
132
136
|
|
|
133
137
|
## 0.26.2: Iconless Tool Roots
|
|
134
138
|
|
|
135
|
-
- `Tool Density`: Removed
|
|
136
|
-
- `Compatibility`: Preserved Arguments/Update/Result/Error nesting, multi-tool coalescing, bounds, redaction, truncation, ordering, authority fencing, fallback, and ambiguous-send no-replay behavior. Impact: only the redundant marker disappears; transport and evidence guarantees remain unchanged.
|
|
139
|
+
- `Tool Density`: Removed redundant tool-root emoji while preserving native chevrons, labels, evidence nesting, bounds, redaction, fencing, fallback, and no-replay behavior.
|
|
137
140
|
|
|
138
141
|
## 0.26.1: Compact Activity Trees
|
|
139
142
|
|
|
140
|
-
- `Thinking Density`: Removed the standalone
|
|
141
|
-
- `Tool Density`:
|
|
142
|
-
- `Safety`:
|
|
143
|
+
- `Thinking Density`: Removed the standalone thinking header so persistent reasoning uses only its bounded expandable quote.
|
|
144
|
+
- `Tool Density`: Each tool is one closed Rich root with nested arguments, retained updates, and result or error evidence.
|
|
145
|
+
- `Safety`: Coalescing, bounds, redaction, ordering, fencing, fallback, and ambiguous-send no-replay guarantees remain unchanged.
|
|
143
146
|
|
|
144
147
|
## 0.26.0: Rich Tool Activity
|
|
145
148
|
|
|
146
|
-
- `Tool Presentation`:
|
|
147
|
-
- `Activity Safety`: Preserved
|
|
148
|
-
- `
|
|
149
|
+
- `Tool Presentation`: Completed tool batches use native Rich details with separate Arguments, Update, and Result/Error JSON nodes; thinking remains an HTML expandable quote.
|
|
150
|
+
- `Activity Safety`: Preserved ordering, coalescing, redaction, bounds, fencing, final ordering, and one safe fallback from Rich rejection to HTML.
|
|
151
|
+
- `Defaults`: Fresh installs default Activity to `verbose` and time injection to `interval`; explicit stored settings are unchanged.
|
|
149
152
|
|
|
150
153
|
## 0.25.7: Multi-Instance Activity Isolation Hotfix
|
|
151
154
|
|
|
152
|
-
- `Activity Config`:
|
|
153
|
-
- `Activity Labels`:
|
|
155
|
+
- `Activity Config`: Every process reloads file-backed Activity at agent start and fails closed for that run on refresh failure, preventing stale mode leakage across instances.
|
|
156
|
+
- `Activity Labels`: Thinking and tool headers use sentence-case operator labels.
|
|
154
157
|
|
|
155
158
|
## 0.25.6: Same-Profile Thread Reuse Hotfix
|
|
156
159
|
|
|
157
|
-
- `Leader Restart`:
|
|
160
|
+
- `Leader Restart`: A replacement with the same stable profile restores the reusable leader binding before cancelling superseded cleanup, avoiding needless thread recreation.
|
|
158
161
|
|
|
159
162
|
## 0.25.5: Thinking HTML Rendering Hotfix
|
|
160
163
|
|
|
161
|
-
- `Thinking Presentation`:
|
|
164
|
+
- `Thinking Presentation`: Provider reasoning renders Markdown emphasis and code as safe Telegram HTML while links remain inert and URL previews stay suppressed.
|
|
162
165
|
|
|
163
166
|
## 0.25.4: Technical Link Preview Hotfix
|
|
164
167
|
|
|
165
|
-
- `Activity Evidence`:
|
|
168
|
+
- `Activity Evidence`: Thinking and tool sends disable previews and neutralize HTTP(S) auto-linking, preventing technical URLs from creating cards.
|
|
166
169
|
|
|
167
170
|
## 0.25.3: Thinking Density Header Hotfix
|
|
168
171
|
|
|
169
|
-
- `Thinking Activity`:
|
|
172
|
+
- `Thinking Activity`: Thinking headers show the active Pi thinking level instead of `running` or `done`, and current disclosures skip no-op completion edits.
|
|
170
173
|
|
|
171
174
|
## 0.25.2: Persistent Thinking Activity Hotfix
|
|
172
175
|
|
|
173
|
-
- `Activity Modes`:
|
|
176
|
+
- `Activity Modes`: Added `quiet`, `thinking`, `tools`, and `verbose`; thinking became persistent bounded HTML evidence while tools retained their disclosures and previews stayed disabled.
|
|
174
177
|
|
|
175
178
|
## 0.25.1: Config And Activity Presentation
|
|
176
179
|
|
|
177
|
-
- `Time Injection Config`: Moved the
|
|
178
|
-
- `
|
|
180
|
+
- `Time Injection Config`: Moved the mode to `assistant.timeInjection`; `time.interval` remains independent and legacy `time.injectionMode` is ignored without migration.
|
|
181
|
+
- `Tool Evidence`: Compacted multi-entry JSON evidence while preserving fields, ordering, redaction, truncation, and delivery bounds.
|
|
179
182
|
|
|
180
183
|
## 0.25.0: Configurable Activity
|
|
181
184
|
|
|
182
|
-
- `Activity`: Added
|
|
183
|
-
- `Settings Ordering`:
|
|
185
|
+
- `Activity`: Added persisted Activity controls for fenced reasoning drafts and bounded executed-tool evidence, with ordered coalescing and final delivery behind admitted activity. Legacy verbosity is read only when canonical config is absent.
|
|
186
|
+
- `Settings Ordering`: Built-in Settings are grouped by operator meaning; extension settings retain explicit order and stable id tie-breaks.
|
|
184
187
|
|
|
185
188
|
## 0.24.11: Assistant Action Markup Hotfix
|
|
186
189
|
|
|
187
|
-
- `
|
|
188
|
-
- `Composition Root
|
|
190
|
+
- `Action Markup`: Standardized button and voice actions on JSON or double-quoted attributes with optional colons. Removed shorthand, body, paired-comment, unquoted, and single-quoted variants.
|
|
191
|
+
- `Composition Root`: Moved bus identity defaults and generated-button edits into owning domains and removed a dormant bus callback.
|
|
189
192
|
|
|
190
193
|
## 0.24.10: Compact Thread Role Hotfix
|
|
191
194
|
|
|
192
|
-
- `Status`: Threaded Mode status again appends only `@leader` or `@follower
|
|
193
|
-
- `Validation`: Graceful
|
|
195
|
+
- `Status`: Threaded Mode status again appends only `@leader` or `@follower`, avoiding a duplicate visible thread-name row.
|
|
196
|
+
- `Validation`: Graceful cleanup accepts committed removal or the safe fenced state retaining exact target plus cleanup intent.
|
|
194
197
|
|
|
195
198
|
## 0.24.9: Button-Only Heading Hotfix
|
|
196
199
|
|
|
197
|
-
- `Prompt Buttons`:
|
|
200
|
+
- `Prompt Buttons`: Automatic button-only parent text now follows dialog grammar as `☑️ **Choose an option:**`.
|
|
198
201
|
|
|
199
202
|
## 0.24.8: Prompt Button Reliability Hotfix
|
|
200
203
|
|
|
201
|
-
- `Prompt Buttons`: Button-only
|
|
202
|
-
- `Status`: Threaded
|
|
204
|
+
- `Prompt Buttons`: Button-only replies gain visible fallback text; accepted choices support `primary`, `success`, or `danger` styles while preserving labels and prompt admission.
|
|
205
|
+
- `Status`: Threaded identity moved to a dedicated thread-and-role row, keeping execution status unambiguous.
|
|
203
206
|
|
|
204
207
|
## 0.24.7: Thread Cleanup Hotfix
|
|
205
208
|
|
|
206
|
-
- `Thread Cleanup`:
|
|
207
|
-
- `
|
|
208
|
-
- `
|
|
209
|
+
- `Thread Cleanup`: Graceful teardown persists exact cleanup intent before deletion; successors retry only with stale, dead-process, generation, endpoint, and replacement checks. The setting remains `threads.automaticCleanup`.
|
|
210
|
+
- `Button Feedback`: Only the selected prompt button turns green after admission; follower ownership permits the non-fatal markup update.
|
|
211
|
+
- `Audit Boundary`: Release audit covers shipped dependencies; host-selected Pi peers remain visible through a separate full-host audit.
|
|
209
212
|
|
|
210
213
|
## 0.24.6: README Positioning Hotfix
|
|
211
214
|
|
|
212
|
-
- `README
|
|
215
|
+
- `README`: Removed duplicate thread-cleanup prose while retaining the canonical lifecycle and configuration explanation.
|
|
213
216
|
|
|
214
217
|
## 0.24.5: Unclean-Shutdown Recovery Hotfix
|
|
215
218
|
|
|
216
|
-
- `
|
|
217
|
-
- `Composition Root
|
|
219
|
+
- `Shutdown Recovery`: Connect can quarantine only unverifiable disposable ownership artifacts, retry once, and preserve config and diagnostics; blocked recovery gives one restart instruction.
|
|
220
|
+
- `Composition Root`: Follower auth and election state moved into one testable follower-control runtime.
|
|
218
221
|
|
|
219
222
|
## 0.24.4: Context And Thread Lifecycle Hotfix
|
|
220
223
|
|
|
221
|
-
- `
|
|
222
|
-
- `Graceful
|
|
223
|
-
- `Temporary
|
|
224
|
+
- `Capability Context`: Telegram tools and prompt metadata now follow effective owner or registered-follower authority and restore the operator’s prior tool subset after reconnect.
|
|
225
|
+
- `Graceful Teardown`: Normal Pi quit performs fenced cleanup when enabled; manual disconnect still confirms, session replacement preserves bindings, and hard kills remain recoverable.
|
|
226
|
+
- `Temporary Routing`: Unbound temporary threads support forward, replace, restore, and cleanup-only retry without redispatching already delivered work.
|
|
224
227
|
|
|
225
228
|
## 0.24.3: Queue And Typing Reliability Hotfix
|
|
226
229
|
|
|
227
|
-
- `Typing Backpressure`: Serialized
|
|
228
|
-
- `Queue Lifecycle`:
|
|
229
|
-
- `Dependency Audit`: Added a fail-closed exception
|
|
230
|
+
- `Typing Backpressure`: Serialized chat actions and shared 429 suppression prevent direct/follower activity from amplifying Telegram throttling.
|
|
231
|
+
- `Queue Lifecycle`: Stale status cleanup is isolated and control settlement is fenced to its originating dispatch generation.
|
|
232
|
+
- `Dependency Audit`: Added a fail-closed, expiring exception for two exact upstream shrinkwrap advisories; unknown or drifting findings still fail.
|
|
230
233
|
|
|
231
234
|
## 0.24.2: Context Compression Hotfix
|
|
232
235
|
|
|
233
|
-
- `Project Context`: Consolidated
|
|
236
|
+
- `Project Context`: Consolidated release context, reduced open work, and made minimum-Node Ubuntu, macOS, and Windows CI a durable contract.
|
|
234
237
|
|
|
235
238
|
## 0.24.1: Persistence I/O And Cross-Platform Validation Hotfix
|
|
236
239
|
|
|
237
|
-
- `Cross-Platform Validation`: Added minimum-Node Ubuntu, macOS, and Windows CI for typecheck, tests,
|
|
238
|
-
- `Test Cooling`:
|
|
239
|
-
- `
|
|
240
|
-
- `
|
|
241
|
-
- `
|
|
242
|
-
- `
|
|
243
|
-
- `
|
|
240
|
+
- `Cross-Platform Validation`: Added minimum-Node Ubuntu, macOS, and Windows CI for typecheck, tests, package shape, and one Ubuntu audit.
|
|
241
|
+
- `Test Cooling`: Shared bounded process fixtures and timing controls reduced lock-suite cost; 19 unreachable exports were removed after reachability proof.
|
|
242
|
+
- `Config Concurrency`: Transactional recursive deltas preserve unrelated writes and monotonic offsets; same-leaf conflicts follow serialized commit order.
|
|
243
|
+
- `Diagnostics I/O`: Same-turn JSONL batches preserve order and bounded rotation while isolating failures and respecting owner-only reset authority.
|
|
244
|
+
- `State I/O`: Snapshot writes coalesce for 100 ms and skip observationally equivalent replacements while retaining exact-owner fencing.
|
|
245
|
+
- `Ownership I/O`: One-second owner checks remain; durable heartbeat writes occur every two seconds with an eight-second stale boundary.
|
|
246
|
+
- `Release History`: Consolidated historical chronology while preserving versions, contracts, migrations, limitations, and material outcomes.
|
|
244
247
|
|
|
245
248
|
## 0.24.0: Canonical Profiles And Extension-Local Ownership
|
|
246
249
|
|
|
247
|
-
- `Canonical
|
|
248
|
-
- `
|
|
250
|
+
- `Canonical Profiles`: Bot/session identity moved under `profiles.default` and named siblings; unambiguous legacy root identity migrates atomically and conflicts fail closed.
|
|
251
|
+
- `Transport Ownership`: Ownership moved from shared `locks.json` to profile-scoped `tmp/telegram/owners.json`. Breaking: legacy ownership is not migrated, so upgrade may require reconnect.
|
|
249
252
|
|
|
250
253
|
## 0.23.3: Thread-Scoped Settings Hotfix
|
|
251
254
|
|
|
252
|
-
- `
|
|
255
|
+
- `Settings Rehydration`: Expired or reloaded Settings state preserves `message_thread_id`, so callbacks reopen on the exact Threaded Mode target.
|
|
253
256
|
|
|
254
257
|
## 0.23.2: Voice Policy And Turn Delivery Hotfix
|
|
255
258
|
|
|
256
|
-
- `Settings
|
|
257
|
-
- `
|
|
258
|
-
- `
|
|
259
|
-
- `
|
|
260
|
-
- `
|
|
259
|
+
- `Settings Race`: Polling now persists only monotonic offset deltas into the live config snapshot, preventing stale polling state from erasing newer Settings writes.
|
|
260
|
+
- `Forward Pairing`: One adjacent owner annotation and forward coalesce in either order while preserving separate owner, source, caption, and media attribution.
|
|
261
|
+
- `Voice Policy`: Removed redundant `manual`; absent config is `hidden`, `mirror` follows voice input, and `always` covers every turn. Legacy `manual` resolves to `hidden`.
|
|
262
|
+
- `Provider Retry`: Active turns survive retryable low-level agent errors until successful result or settlement, delivering one final outcome to the original target.
|
|
263
|
+
- `Status`: TUI error projection is compact; full provider and transport details remain in diagnostics.
|
|
261
264
|
|
|
262
265
|
## 0.23.1: Context Budget And Runtime Simplification
|
|
263
266
|
|
|
264
|
-
- `Bus
|
|
265
|
-
- `
|
|
266
|
-
- `Destination Resolution`:
|
|
267
|
-
- `Agent Context
|
|
267
|
+
- `Bus Simplification`: Removed dormant follower recovery helpers and duplicate prune callbacks while retaining accurate heartbeat diagnostics and durable bindings.
|
|
268
|
+
- `Reconciliation Safety`: Removed unreachable destructive cleanup paths; explicit deletion paths retain confirmation and epoch fencing.
|
|
269
|
+
- `Destination Resolution`: Unified proactive and activity targets on active turn, assigned thread, then paired chat.
|
|
270
|
+
- `Agent Context`: Added compact validation, bounded log inspection, search-first large-file rules, and stable-gate validation guidance.
|
|
268
271
|
|
|
269
272
|
## 0.23.0: Telegram Bot API 10.2 Rich Output And Proactive Projection
|
|
270
273
|
|
|
271
|
-
- `Follower
|
|
272
|
-
- `
|
|
273
|
-
- `
|
|
274
|
-
- `
|
|
275
|
-
- `
|
|
276
|
-
- `
|
|
277
|
-
- `
|
|
278
|
-
- `Verification`: Deterministic direct/follower, stale-generation, multipart, ordering, privacy, and recovery regressions plus two-/three-instance and Telegram-client smokes confirmed follower restoration, bidirectional promotion/disconnect/re-registration, promoted reload reuse, ordered proactive blocks, forwarded media attribution, and one composite result without duplicate final or upload. Impact: the release records final operator evidence while omitting repeated preflight chronology.
|
|
274
|
+
- `Follower Recovery`: Visibility probes, exact generations, serialized lifecycle, and bounded promotion preserve recognizable targets without routing to absent or replaced followers.
|
|
275
|
+
- `Inbound Attribution`: Adjacent owner comments, forwarded Rich media, attachments, replies, and transcription retain distinct ordered provenance.
|
|
276
|
+
- `Proactive Projection`: Default-enabled `assistant.proactivePush` sends deduplicated local/autonomous public blocks through fenced ordered delivery, excluding Telegram turns and technical deltas.
|
|
277
|
+
- `Rich Results`: Bot API 10.2 can combine final Markdown, reply/thread metadata, keyboard, and one supported photo, video, or audio artifact with safe fallback and no replay after ambiguity.
|
|
278
|
+
- `Rendering And Reference`: Rich normalization preserves structured Markdown; local Bot API 10.2 references and capability docs define the supported surface.
|
|
279
|
+
- `Architecture`: Config reads avoid transaction churn; concurrent writes remain guarded and projection, config, and sync adapters moved to owners.
|
|
280
|
+
- `Verification`: Deterministic and live multi-instance evidence covered restoration, promotion, attribution, proactive ordering, and composite results.
|
|
279
281
|
|
|
280
282
|
## 0.22.1: Termux-Compatible Filesystem Transactions
|
|
281
283
|
|
|
282
|
-
- `Filesystem Transactions`: Replaced hard-link
|
|
283
|
-
- `Diagnostics`:
|
|
284
|
+
- `Filesystem Transactions`: Replaced hard-link guards with private staged directories and generation files published by atomic rename, preserving exactly-one ownership on Android/Termux.
|
|
285
|
+
- `Diagnostics`: JSONL persistence failures remain contained and do not poison later queued records.
|
|
284
286
|
|
|
285
287
|
## 0.22.0: Concurrency And Runtime Ownership Hardening
|
|
286
288
|
|
|
287
|
-
- `
|
|
288
|
-
- `Lock
|
|
289
|
-
- `Leader
|
|
290
|
-
- `Reconciliation
|
|
291
|
-
- `
|
|
292
|
-
- `
|
|
293
|
-
- `
|
|
294
|
-
- `Idempotent Inbound Admission`: Retained handled update ids until polling-offset commit and preserved exact deferred album/split-text message sets across admission failure and session replacement. Suspended groups rebind to the replacement context and retry until dispatch succeeds. Impact: config retries and transient queue failures do not duplicate accepted prompts or silently lose grouped input.
|
|
295
|
-
- `Method-Aware Retry Safety`: Classified retry-safe Bot API methods separately from non-idempotent sends, uploads, and topic creation. The local bus memoizes request results, rejects id collisions, preserves ambiguity, maps missing non-idempotent acknowledgements to `TelegramApiCommitUnknownError`, and exposes `commit-unknown` with recoverable partial handles. Impact: response loss cannot authorize blind replay of messages, media, registrations, forwarded updates, or topic creation.
|
|
296
|
-
- `Live Runtime Evidence`: After a clean restart, local `/reload` retained the assigned leader thread, restored Telegram automatically, and accepted the next message without reconnect, follower fallback, or takeover. A private Guest Mode exchange preserved guest attribution and delivered generated voice plus a requested attachment through the one-result path. Impact: live evidence confirmed generation recovery, thread identity, Guest routing, voice, and artifact delivery after the hardening refactor.
|
|
289
|
+
- `Architecture`: Moved runtime policy from `index.ts` into flat owners and added structural guards for cycles, entrypoint logic, Pi imports, and leaf drift.
|
|
290
|
+
- `Lock Fencing`: Cross-process transactions, collision-resistant epochs, and monotonic generations fence ownership, refresh, release, takeover, transport, and reload handoff.
|
|
291
|
+
- `Leader And Followers`: Immediate heartbeat, cleanup-on-start-failure, exact lease checks, atomic promotion, and re-registration prevent split-brain polling and stranded followers.
|
|
292
|
+
- `Reconciliation`: Epoch checks guard destructive calls and persistence; recoverable provisioning intents let successors adopt created targets without duplicate creation.
|
|
293
|
+
- `Shared State`: Transactional config, immutable profile stamps, revisioned snapshots, serialized logs, and process-birth identity prevent stale writers and PID reuse.
|
|
294
|
+
- `Session And Delivery`: Session, target, message, and transport generations fence callbacks, continuations, handles, edits, deletes, and final delivery.
|
|
295
|
+
- `Retry Safety`: Inbound admission stays idempotent through offset failure, while method-aware memoization prevents unsafe replay. Live reload and Guest smoke confirmed recovery, attribution, voice, and attachment delivery.
|
|
297
296
|
|
|
298
297
|
## 0.21.1: Runtime And Session Semantics Hotfix
|
|
299
298
|
|
|
300
|
-
- `Runtime Semantics`:
|
|
301
|
-
- `Session
|
|
302
|
-
- `Context Cost`:
|
|
303
|
-
- `Prompt Guidance`:
|
|
304
|
-
- `Diagnostics Identity`:
|
|
299
|
+
- `Runtime Semantics`: Telegram targets follow running Pi instances and their active session; the bridge is not a remote terminal or permanent session-file binding.
|
|
300
|
+
- `Session Controls`: Telegram can compact but cannot create, resume, fork, browse, or switch sessions until Pi exposes safe public APIs.
|
|
301
|
+
- `Context Cost`: Telegram turns use the active session context and do not promise isolation or token cost proportional only to the new mobile message.
|
|
302
|
+
- `Prompt Guidance`: Current prompts use a small transient suffix plus on-demand help; older session history may still contain legacy large guidance.
|
|
303
|
+
- `Diagnostics Identity`: Pi session JSONL and shared Telegram diagnostics are distinct; connect never launches hidden Pi processes.
|
|
305
304
|
|
|
306
305
|
## 0.21.0: Activity And Delivery Extension Platform
|
|
307
306
|
|
|
308
|
-
- `Activity API`: Added
|
|
309
|
-
- `Activity Lifecycle`:
|
|
310
|
-
- `Delivery API`: Added
|
|
311
|
-
- `Platform Boundary`:
|
|
312
|
-
- `
|
|
313
|
-
- `
|
|
314
|
-
- `
|
|
307
|
+
- `Activity API`: Added ordered, failure-isolated public lifecycle/activity signals with evidence-based identities and fresh Delivery contexts, without exposing Pi contexts or raw provider messages.
|
|
308
|
+
- `Activity Lifecycle`: Session generations fence registrations and compaction; adjacent deltas may coalesce, but queue telemetry and broad drop policy are not promised.
|
|
309
|
+
- `Delivery API`: Added ownership-gated target delivery with per-target ordering, chunk handles, follower routing, generation invalidation, and partial-failure recovery.
|
|
310
|
+
- `Platform Boundary`: Sections own managed callbacks, Activity stays non-interactive, and raw updates remain the low-level escape hatch.
|
|
311
|
+
- `Compatibility`: Raised Pi/core/AI floor to `0.80.6`, consumed typed settlement, and added `max` thinking support.
|
|
312
|
+
- `Guest Identity`: Private Guest Mode prefers strong remote-peer evidence and keeps reply-source attribution separate.
|
|
313
|
+
- `Verification`: Public-boundary and full-runtime tests cover roles, targets, authorization, stale generations, ordering, recovery, cleanup, and non-blocking lifecycle hooks.
|
|
315
314
|
|
|
316
315
|
## 0.20.6: Guest Attribution And Voice Action Hotfix
|
|
317
316
|
|
|
318
|
-
- `Voice
|
|
319
|
-
- `Guest Attribution`: Private Guest Mode
|
|
317
|
+
- `Voice Syntax`: Added paired voice comments alongside inline forms while preserving visible prose; generated audio still uses the established delivery path.
|
|
318
|
+
- `Guest Attribution`: Private Guest Mode identifies the remote peer rather than the paired owner, with username, display-name, and numeric fallbacks.
|
|
320
319
|
|
|
321
320
|
## 0.20.5: Guest Media And Runtime Recovery Hotfix
|
|
322
321
|
|
|
323
|
-
- `Setup Persistence`:
|
|
324
|
-
- `Guest Media`:
|
|
325
|
-
- `Guest Voice`:
|
|
326
|
-
- `Leader Endpoint Recovery`:
|
|
327
|
-
- `Profile Diagnostics`:
|
|
328
|
-
- `Compaction Presence`:
|
|
322
|
+
- `Setup Persistence`: Validated bot identity enters live config before atomic persistence and rolls back on failure, preventing unsaved-success states.
|
|
323
|
+
- `Guest Media`: Guest answers support one bounded cached media result with caption, staging cleanup, and no replay after ambiguous one-shot delivery.
|
|
324
|
+
- `Guest Voice`: Explicit or policy-selected TTS uses the provider chain and returns one cached voice result with visible text as caption.
|
|
325
|
+
- `Leader Endpoint Recovery`: A live leader can recreate an externally unlinked Unix socket without changing epoch, polling, or bindings; forced takeover stays denied.
|
|
326
|
+
- `Profile Diagnostics`: Profile logs use unambiguous current and `_prev` paths; profile names are lowercase alphanumeric.
|
|
327
|
+
- `Compaction Presence`: Native typing represents compaction across assigned and aggregate targets; Pi remains the terminal status owner.
|
|
329
328
|
|
|
330
329
|
## 0.20.4: Thread State Ownership Hotfix
|
|
331
330
|
|
|
332
|
-
- `State Ownership`:
|
|
333
|
-
- `Follower Recovery`:
|
|
334
|
-
- `Thread Identity`:
|
|
335
|
-
- `Live
|
|
336
|
-
- `Validation`: Added deterministic coverage for stale status writers, denied follower writes, promotion-time write authority, carried identity metadata, exact live-target recovery, collision-safe slot recovery, and status/prompt identity convergence. The full release validation passes with one platform-only named-pipe skip. Impact: the original corruption and cross-surface mismatch scenarios are release-gated.
|
|
331
|
+
- `State Ownership`: Only the active transport owner writes profile-shared state; followers read until promotion and status writes refresh disk bindings first.
|
|
332
|
+
- `Follower Recovery`: Re-registration carries exact target, slot, and name so missing local state can recover the live thread without duplicate provisioning.
|
|
333
|
+
- `Thread Identity`: One target-aware resolver aligns prompt tags and terminal status, preferring live leader/follower metadata over stale snapshots.
|
|
334
|
+
- `Live Evidence`: Multi-process Linux and deterministic regressions confirmed unique slots, denied stale writers, promotion authority, and identity convergence.
|
|
337
335
|
|
|
338
336
|
## 0.20.3: Persistent Threads And Activity
|
|
339
337
|
|
|
340
|
-
- `Follower Sessions`:
|
|
341
|
-
- `Thread Identity`:
|
|
342
|
-
- `Native Activity`:
|
|
343
|
-
- `Live
|
|
344
|
-
- `Validation`: Relaxed the process-shutdown child harness timeout from 2 to 5 seconds after full-suite concurrency exceeded the old wall-clock bound while the isolated shutdown suite remained green. Impact: process ownership regressions still fail on leaked handles but no longer flake solely from parallel test-runner load.
|
|
338
|
+
- `Follower Sessions`: Session replacement snapshots follower identity and automatically re-registers through the leader, preserving exact target, slot, and thread name.
|
|
339
|
+
- `Thread Identity`: Stable follower identity and refreshed recovery timestamps prevent reload overlap from rotating names or creating duplicate tabs.
|
|
340
|
+
- `Native Activity`: Every connected instance shows native typing for Telegram, local, and autonomous work on its assigned target and aggregate `All`.
|
|
341
|
+
- `Live Evidence`: Leader and follower reload/new paths preserved threads; test harness timing changed only to avoid loaded-suite false failures.
|
|
345
342
|
|
|
346
343
|
## 0.20.2: Live Thread Reality
|
|
347
344
|
|
|
348
|
-
- `Profile Activation`:
|
|
349
|
-
- `Profile Diagnostics`: Status and
|
|
350
|
-
- `Bus Composition`:
|
|
351
|
-
- `Slot Ring`:
|
|
352
|
-
- `Reality Reconciliation`: After
|
|
353
|
-
- `
|
|
354
|
-
- `Validation Hygiene`: Enabled `noUnusedLocals` and `noUnusedParameters` in the standard typecheck gate. Impact: abandoned imports and adapters fail locally and in CI instead of accumulating silently.
|
|
345
|
+
- `Profile Activation`: Validate and start a named profile before committing the switch; cancellation, bad token, missing profile, or startup failure leaves healthy transport unchanged.
|
|
346
|
+
- `Profile Diagnostics`: Status and help show exact selected-profile state and log paths.
|
|
347
|
+
- `Bus Composition`: Profile IPC, follower lifecycle, leader provisioning, and reconciliation moved into cohesive owners with import guards.
|
|
348
|
+
- `Slot Ring`: Allocation now follows a true `A…Z → A` cursor from fresh reality without unrelated high-slot drift.
|
|
349
|
+
- `Reality Reconciliation`: After bounded grace, live roster and persisted bindings converge without deleting tabs or overriding pending and reserved guards.
|
|
350
|
+
- `Validation`: Live reload and deterministic recovery evidence passed; strict unused-local and unused-parameter checks joined typecheck.
|
|
355
351
|
|
|
356
352
|
## 0.20.1: Profile IPC Isolation Hotfix
|
|
357
353
|
|
|
358
|
-
- `Runtime Isolation`:
|
|
359
|
-
- `Profile Switching`:
|
|
360
|
-
- `Validation`: Added Unix and Windows endpoint-isolation regressions plus runtime restart coverage, and documented global, profile-scoped, and session-local runtime surfaces. Impact: profile reality boundaries are explicit and deterministic without making scratch attachments or extension registries routing authority.
|
|
354
|
+
- `Runtime Isolation`: Unix sockets and Windows pipes are profile-scoped while default-profile endpoints remain compatible.
|
|
355
|
+
- `Profile Switching`: Servers, clients, diagnostics, and follower registration resolve endpoints from the active profile at operation time.
|
|
361
356
|
|
|
362
357
|
## 0.20.0: Pi-Compatible Multi-Profile Runtime
|
|
363
358
|
|
|
364
|
-
- `Profiles`: Added named
|
|
365
|
-
- `Runtime Isolation`:
|
|
366
|
-
- `Pi Compatibility`: Centralized agent-dir
|
|
367
|
-
- `Prompt Context`:
|
|
368
|
-
- `Threaded Mode`:
|
|
369
|
-
- `Reliability`: Hardened Windows lock
|
|
370
|
-
- `Validation`:
|
|
359
|
+
- `Profiles`: Added named bot/session profiles while preserving top-level default identity and paths; activation is session-local and shared bridge settings remain global.
|
|
360
|
+
- `Runtime Isolation`: Locks, owner keys, logs, previous logs, and Threaded Mode state are profile-scoped.
|
|
361
|
+
- `Pi Compatibility`: Centralized agent-dir resolution with `PI_CODING_AGENT_DIR`; queued prompts again enter Pi as normal scheduled turns.
|
|
362
|
+
- `Prompt Context`: Telegram surface, reply, forward, and attachment provenance use distinct compact metadata layers.
|
|
363
|
+
- `Threaded Mode`: Reload, reconnect, disconnect, and registration races now preserve explicit follower lifecycle without duplicate tabs.
|
|
364
|
+
- `Reliability`: Hardened Windows lock writes, virtual prompt-template filtering, and non-idempotent topic creation.
|
|
365
|
+
- `Validation`: Local and live evidence covered profile isolation, OMP-style dispatch, follower churn, status, and slot wraparound.
|
|
371
366
|
|
|
372
367
|
## 0.19.2: Draft And Rendering Isolation Hotfix
|
|
373
368
|
|
|
374
|
-
- `Config`:
|
|
375
|
-
- `Preview`:
|
|
376
|
-
- `
|
|
377
|
-
- `Rendering`: Removed the thread-reply special case that forced anchored thread assistant replies through legacy Markdown-to-HTML. Impact: `assistant.rendering: "rich"` now uses native Rich Markdown for final assistant replies in Threaded Mode too, while `assistant.rendering: "html"` remains the only path that selects legacy HTML rendering.
|
|
378
|
-
- `Tests`: Updated reply regressions to assert native Rich Markdown delivery for anchored thread replies.
|
|
369
|
+
- `Config`: Assistant rendering and draft previews moved under `assistant`, with legacy keys read and cleaned for compatibility.
|
|
370
|
+
- `Preview`: Disabled previews create no state; enabled previews use the selected Rich or HTML renderer consistently.
|
|
371
|
+
- `Rendering`: Thread-anchored final replies now respect explicit Rich versus HTML selection instead of forcing HTML.
|
|
379
372
|
|
|
380
373
|
## 0.19.1: Settings Layer Hotfix
|
|
381
374
|
|
|
382
|
-
- `Settings`: Split
|
|
383
|
-
- `Rendering`:
|
|
384
|
-
- `Preview`: Kept `richDraftPreviews` as the stored draft-preview flag for compatibility, but renamed the Settings UI to `Draft previews`. Impact: existing configs keep working while the product vocabulary moves toward the preview feature boundary.
|
|
385
|
-
- `Validation`: Updated menu/settings/reply regressions for the two-axis configuration model.
|
|
375
|
+
- `Settings`: Split Draft previews from Assistant rendering so operators control streaming visibility independently from final format.
|
|
376
|
+
- `Rendering`: Native Rich Markdown is the default; persisted HTML remains the explicit compatibility path and legacy preview config still loads.
|
|
386
377
|
|
|
387
378
|
## 0.19.0: Telegram Companion Hub
|
|
388
379
|
|
|
389
|
-
- `Rendering Boundary`:
|
|
390
|
-
- `Draft Preview
|
|
391
|
-
- `Product Entrypoint`:
|
|
392
|
-
- `Guest Mode`:
|
|
380
|
+
- `Rendering Boundary`: Model and Guest answers use Rich Markdown; bridge-owned menus, status, controls, diagnostics, and technical UI retain HTML or plain rendering.
|
|
381
|
+
- `Draft Preview`: Added opt-in Rich drafts without changing final native rendering.
|
|
382
|
+
- `Product Entrypoint`: Reframed README around the companion runtime, operating model, feature catalogue, safety boundary, extension platform, and docs.
|
|
383
|
+
- `Guest Mode`: Unauthorized guest queries now include the standard denied-action marker.
|
|
393
384
|
|
|
394
385
|
## 0.18.6: Threaded Mode parity hotfix
|
|
395
386
|
|
|
396
|
-
- `Follower
|
|
397
|
-
- `Follower
|
|
398
|
-
- `Promotion And Reload`: Snapshotted
|
|
399
|
-
- `
|
|
400
|
-
- `Unbound
|
|
401
|
-
- `
|
|
387
|
+
- `Follower Ownership`: Target evidence routes edits, reactions, callbacks, queue controls, and menu cleanup to the correct follower even when thread identity is absent.
|
|
388
|
+
- `Follower Parity`: Followers can register commands and publish bounded thread plus aggregate activity with accurate active/compacting precedence.
|
|
389
|
+
- `Promotion And Reload`: Snapshotted bindings and exact profile conversion preserve visible threads across election and replacement.
|
|
390
|
+
- `Restoration`: Reused follower targets require a visibility probe; only explicit stale evidence authorizes recreation.
|
|
391
|
+
- `Unbound Routing`: One current-roster chooser can replace or restore any live instance target.
|
|
392
|
+
- `Evidence`: Capability matrix, deterministic tests, and live Linux smoke established leader/follower parity.
|
|
402
393
|
|
|
403
394
|
## 0.18.5: Windows Threaded Mode stabilization hotfix
|
|
404
395
|
|
|
405
|
-
- `Bus Transport`:
|
|
406
|
-
- `Windows IPC`:
|
|
407
|
-
- `Capability Switching`:
|
|
408
|
-
- `Diagnostics`:
|
|
409
|
-
- `Previews`: Native
|
|
410
|
-
- `Validation`: Native Windows smoke
|
|
396
|
+
- `Bus Transport`: Added transport-owned endpoint, retry, timeout, reachability, event, and handler-ACK policy for Unix sockets and Windows pipes.
|
|
397
|
+
- `Windows IPC`: Deterministic follower endpoints and a longer prune window reduce false disconnects; debug status identifies pipes versus sockets.
|
|
398
|
+
- `Capability Switching`: Hot downgrade preserves the current leader as classic poller and disconnects followers only after confirmed capability loss.
|
|
399
|
+
- `Diagnostics`: Log reset preserves the prior session as `logs.previous.jsonl`.
|
|
400
|
+
- `Previews`: Native previews suppress syntax-only prefixes and removed dormant throttle/clear branches.
|
|
401
|
+
- `Validation`: Native Windows smoke covered classic ownership, hot upgrade, follower delivery, and hot downgrade.
|
|
411
402
|
|
|
412
403
|
## 0.18.4: Windows Threaded Mode hotfix
|
|
413
404
|
|
|
414
|
-
- `Windows IPC`: Follower registration
|
|
415
|
-
- `Queue`: A session-bound
|
|
405
|
+
- `Windows IPC`: Follower registration retries transient local endpoint startup failures.
|
|
406
|
+
- `Queue`: A session-bound watchdog retries dispatch while Telegram work remains queued.
|
|
416
407
|
|
|
417
408
|
## 0.18.3: Threaded Mode live hotfix
|
|
418
409
|
|
|
419
|
-
- `
|
|
420
|
-
- `Thread Lifecycle`:
|
|
421
|
-
- `
|
|
422
|
-
- `Status`: Leader
|
|
423
|
-
- `Model Menu`: The Telegram model menu now hides one-page pagination controls and keeps scope tabs hidden unless scoped models exist. Impact: the minimal model menu shows only main-menu navigation and the available models.
|
|
410
|
+
- `Dispatch`: Inbound prompts request immediate and deferred dispatch so readiness gaps do not require reload.
|
|
411
|
+
- `Thread Lifecycle`: Reconciliation avoids cosmetic renames and refuses to auto-claim unknown threads while another live target exists.
|
|
412
|
+
- `Follower API`: Safe identity reads and chat-level activity are allowed while thread-scoped writes remain restricted.
|
|
413
|
+
- `Status And Menus`: Leader names persist in status; one-page model pagination and empty scope tabs stay hidden.
|
|
424
414
|
|
|
425
415
|
## 0.18.2: Setup pairing start hotfix
|
|
426
416
|
|
|
427
|
-
- `Setup`:
|
|
417
|
+
- `Setup`: Live config updates after token persistence and before polling, so first setup can receive `/start` without restarting Pi.
|
|
428
418
|
|
|
429
419
|
## 0.18.1: Windows setup transport hotfix
|
|
430
420
|
|
|
431
|
-
- `Setup`:
|
|
432
|
-
- `
|
|
433
|
-
- `Docs`: Normalized Threaded Mode language across README, architecture docs, prompt guidance, and changelog: `Threaded Mode` is the mode name, `thread` is the user-visible Telegram surface, and BotFather is only the bot configuration tool. Impact: release docs no longer imply BotFather owns runtime Threaded Mode behavior.
|
|
421
|
+
- `Setup Transport`: Token validation uses normal fallback-aware transport and reports retryable connectivity failures as setup notifications.
|
|
422
|
+
- `Terminology`: Docs consistently reserve Threaded Mode for the runtime mode, threads for the client surface, and BotFather for bot configuration.
|
|
434
423
|
|
|
435
424
|
## 0.18.0: Threaded Mode
|
|
436
425
|
|
|
437
|
-
- `
|
|
438
|
-
- `Capability And Recovery`:
|
|
439
|
-
- `Thread State
|
|
440
|
-
- `Target
|
|
441
|
-
- `
|
|
442
|
-
- `
|
|
443
|
-
- `
|
|
444
|
-
- `Diagnostics And Architecture`: Added role, roster, capability, reservation, reconciliation, and transport-health projections to `/telegram-status`, observational `state.json`, and redacted `logs.jsonl`; diagnostics never become routing authority. Split bus protocol, leader/follower runtimes, thread state, sync, capability switching, and reconciliation into focused domains with matching regressions. Impact: operators can inspect Threaded Mode health while the public surface and composition root remain bounded.
|
|
426
|
+
- `Mode`: Added private-chat threads as the automatic multi-instance mode; one leader owns polling and Bot API transport, followers join explicitly, and Telegram never spawns Pi.
|
|
427
|
+
- `Capability And Recovery`: Evidence-driven hot switching and lifecycle recovery preserve bindings across reload, reconnect, election, disconnect, and stale cleanup.
|
|
428
|
+
- `Thread State`: Explicit owners, slots, names, reservations, reroute/restore, notices, and proof-before-delete reconciliation avoid duplicate or uncertain cleanup.
|
|
429
|
+
- `Target Runtime`: `{ chatId, threadId? }` now scopes routing, queues, models, replies, previews, media, controls, and follower API calls.
|
|
430
|
+
- `Delivery`: Native activity, first-block reply anchoring, asynchronous side effects, and proactive follower delivery preserve responsiveness and target identity.
|
|
431
|
+
- `Transport Security`: Redacted network fallback, leader secrets, private endpoints, owner checks, target allowlists, Unix sockets, and Windows pipes secure local IPC. Windows live smoke remained pending.
|
|
432
|
+
- `Diagnostics`: Status, state, and logs expose role, roster, capability, reconciliation, and health without becoming routing authority.
|
|
445
433
|
|
|
446
434
|
## 0.17.5: Screenshot Refresh
|
|
447
435
|
|
|
@@ -449,396 +437,363 @@
|
|
|
449
437
|
|
|
450
438
|
## 0.17.4: Native Rich Markdown Splitter Hotfix
|
|
451
439
|
|
|
452
|
-
- `Rich Markdown`:
|
|
453
|
-
- `Tests`: Added regressions for oversized fenced code, display math, and inline formatting split behavior. Impact: future native splitter changes must preserve structurally valid chunks beyond Telegram's single-message size limit.
|
|
440
|
+
- `Rich Markdown`: Oversized code, display-math, and wrapped inline blocks are rewrapped at transport splits so each chunk stays structurally valid.
|
|
454
441
|
|
|
455
442
|
## 0.17.3: Native Draft Preview Hotfix
|
|
456
443
|
|
|
457
|
-
- `Rich Markdown`:
|
|
458
|
-
- `Preview`: Removed
|
|
459
|
-
- `Validation`: Live
|
|
444
|
+
- `Rich Markdown`: Multiline `$$` math normalizes to supported math fences while literal delimiters inside code remain untouched.
|
|
445
|
+
- `Preview`: Removed plain fallback bubbles and emits only structurally closed native Markdown prefixes; invalid intermediate frames wait for a safe boundary.
|
|
446
|
+
- `Validation`: Live smoke covered drafts and finals with lists, code, links, display math, and buttons.
|
|
460
447
|
|
|
461
448
|
## 0.17.2: Indented List Rich Markdown Hotfix
|
|
462
449
|
|
|
463
|
-
- `Rich Markdown`:
|
|
464
|
-
- `
|
|
465
|
-
- `Tests`: Added regression coverage for the discovered formatting-only and truncation-risk fixtures, including payload-tail preservation through native Markdown splitting and send delivery. Impact: future Rich Markdown parser changes are less likely to reintroduce partial Telegram messages.
|
|
450
|
+
- `Rich Markdown`: Indented list markers are neutralized consistently across drafts, edits, and finals while top-level lists remain native.
|
|
451
|
+
- `Validation`: Regression fixtures preserve formatting and payload tails through splitting and send delivery.
|
|
466
452
|
|
|
467
453
|
## 0.17.1: Rich Markdown Parser Hotfix
|
|
468
454
|
|
|
469
|
-
- `Rich Markdown`:
|
|
455
|
+
- `Rich Markdown`: Normalized fragile blockquotes and dollar-prefixed atoms, preferred Rich reply plaintext, and kept copyability guidance generic.
|
|
470
456
|
|
|
471
457
|
## 0.17.0: Native Rich Markdown Delivery
|
|
472
458
|
|
|
473
|
-
- `Rich Markdown`: Assistant and
|
|
474
|
-
- `Preview UX`:
|
|
475
|
-
- `UI Boundary`: Bridge-owned
|
|
476
|
-
- `
|
|
477
|
-
- `Docs And Tests`:
|
|
459
|
+
- `Rich Markdown`: Assistant and Guest answers use Telegram Rich Message APIs for finals, drafts, edits, and guest content instead of legacy HTML conversion.
|
|
460
|
+
- `Preview UX`: Rich Draft lifecycle uses serialized flushes without default debounce, rendering dependency, or post-final clearing.
|
|
461
|
+
- `UI Boundary`: Bridge-owned UI remains HTML/plain, while companion sections may choose Markdown, HTML, or plain text.
|
|
462
|
+
- `Limits`: Typed Rich helpers disable entity detection and split at character/block limits, keeping replies on the first and keyboards on the last chunk.
|
|
463
|
+
- `Docs And Tests`: Documented and covered native delivery, guest replies, preview lifecycle, splitting, formulas, and UI compatibility.
|
|
478
464
|
|
|
479
465
|
## 0.16.6: Telegram Review Hardening Hotfix
|
|
480
466
|
|
|
481
|
-
- `Guest Pairing`:
|
|
482
|
-
- `Lifecycle
|
|
483
|
-
- `Reply
|
|
484
|
-
- `
|
|
485
|
-
- `
|
|
486
|
-
- `Boundary Verification`: Added regressions for shutdown during pending control/long-text/media-group work, Settings voice/time persistence, malformed/boundary Markdown, and transient outbound API retry; documented environment-driven transport defaults that must exist before module load. Impact: the reviewed queue, timer, config, renderer, and API boundaries remain explicit without preserving review/backlog chronology.
|
|
467
|
+
- `Guest Pairing`: Guest updates are rejected until an owner pairs through DM.
|
|
468
|
+
- `Lifecycle`: Shutdown ordering, unrefed compaction fallback, retained poll abort state, and contained typing cleanup prevent leaked or reordered teardown.
|
|
469
|
+
- `Reply And Button Safety`: Reply dedupe is chat-scoped; button actions are one-shot and callback byte limits fail locally.
|
|
470
|
+
- `Diagnostics`: Callback acknowledgement failures are non-fatal and visible in runtime evidence.
|
|
471
|
+
- `Verification`: Focused boundary tests cover shutdown, Settings, Markdown, and outbound retry behavior.
|
|
487
472
|
|
|
488
473
|
## 0.16.5: Context-Aware Prompt Guidance Hotfix
|
|
489
474
|
|
|
490
|
-
- `Prompt Guidance`:
|
|
491
|
-
- `
|
|
475
|
+
- `Prompt Guidance`: Unconfigured sessions get no bridge suffix, local turns get direct-delivery guidance, and Telegram turns retain the full mobile contract.
|
|
476
|
+
- `Product Boundary`: The bridge is a companion for a live Pi session, not a terminal or process launcher; session replacement awaits a supported Pi API.
|
|
492
477
|
|
|
493
478
|
## 0.16.4: Follow-Up And Runtime Mode Hotfix
|
|
494
479
|
|
|
495
|
-
- `Runtime`:
|
|
496
|
-
- `Queue`:
|
|
480
|
+
- `Runtime`: `print` and `json` modes remain passive when detectable; `tui`, `rpc`, and older Pi runtimes preserve polling behavior.
|
|
481
|
+
- `Queue`: Telegram prompts and unknown callbacks use explicit follow-up delivery semantics during busy Pi runs.
|
|
497
482
|
|
|
498
483
|
## 0.16.3: Ownership And Shutdown Hotfix
|
|
499
484
|
|
|
500
|
-
- `Ownership`:
|
|
501
|
-
- `Shutdown`:
|
|
502
|
-
- `
|
|
503
|
-
- `
|
|
504
|
-
- `Docs`: Documented ownership, proactive-push, timer/shutdown, and multi-extension prompt-boundary contracts in README and `/docs`. Impact: companion extensions get clearer boundaries without adding a core question/prompt-mirroring API.
|
|
485
|
+
- `Ownership`: Only the current connect owner can proactively push non-Telegram finals; accepted Telegram turns still finish session-locally after ownership moves.
|
|
486
|
+
- `Shutdown`: Retry waits are abort-aware, non-critical timers are unrefed, and composed lifecycle cleanup clears direct-delivery context.
|
|
487
|
+
- `Status`: A configured token without username reports bot identity as `unknown`, not `not configured`.
|
|
488
|
+
- `Verification`: Process, lock, queue, ownership, abort, shutdown, and headless regressions protect the boundary.
|
|
505
489
|
|
|
506
490
|
## 0.16.2: Screenshot Refresh Hotfix
|
|
507
491
|
|
|
508
|
-
- `Docs`: Refreshed the package screenshot
|
|
492
|
+
- `Docs`: Refreshed the package screenshot without runtime changes.
|
|
509
493
|
|
|
510
494
|
## 0.16.1: Disconnected Queue Status Hotfix
|
|
511
495
|
|
|
512
|
-
- `Status`:
|
|
496
|
+
- `Status`: Local queue count remains visible after polling ownership moves to another Pi instance.
|
|
513
497
|
|
|
514
498
|
## 0.16.0: Telegram Extension Commands
|
|
515
499
|
|
|
516
|
-
- `API`: Added `registerTelegramCommand()`
|
|
500
|
+
- `Command API`: Added public `registerTelegramCommand()` with reserved built-ins, safe names, duplicate rejection, optional menu visibility, required emoji for visible commands, isolated handlers, and defined routing precedence.
|
|
517
501
|
|
|
518
502
|
## 0.15.1: Typing Keepalive Cadence
|
|
519
503
|
|
|
520
|
-
- `Typing Status`:
|
|
504
|
+
- `Typing Status`: Set native typing keepalive to 2.5 seconds with a 250 ms idle-drain cap.
|
|
521
505
|
|
|
522
506
|
## 0.15.0: Companion Status Lines
|
|
523
507
|
|
|
524
|
-
- `API`: Added
|
|
525
|
-
- `Docs`: Documented the
|
|
508
|
+
- `Status API`: Added synchronous, model-aware, failure-isolated `registerTelegramStatusLineProvider()` rows for companion extensions without transport ownership.
|
|
509
|
+
- `Docs`: Documented the provider through an abstract example and listed the concrete quota companion separately.
|
|
526
510
|
|
|
527
511
|
## 0.14.0: Direct Telegram Delivery, Queue Semantics, And Section Diagnostics
|
|
528
512
|
|
|
529
|
-
- `Prompt Guidance`:
|
|
530
|
-
- `Command Templates`: Synced
|
|
531
|
-
- `Tools`:
|
|
532
|
-
- `Status`:
|
|
533
|
-
- `Queue`:
|
|
534
|
-
- `Sections`: Section
|
|
513
|
+
- `Prompt Guidance`: Agents use visible Markdown plus top-level button comments, avoiding standalone actions and comments inside code or nested structures.
|
|
514
|
+
- `Command Templates`: Synced the local portable template standard with risk labels, recipe context, short-flag detection, and trusted-executable guidance.
|
|
515
|
+
- `Tools`: `telegram_attach` and `telegram_message` support explicit local delivery with ownership checks; active-turn replies remain on normal final delivery.
|
|
516
|
+
- `Status`: Compaction reads as active; typing cleanup gives the last in-flight action a bounded drain before final delivery.
|
|
517
|
+
- `Queue`: Queue and replies remain per Pi instance when transport ownership moves; abort-history applies only to Telegram-owned runs.
|
|
518
|
+
- `Sections`: Section failures are source-scoped, recover independently, and keep Settings-level navigation.
|
|
535
519
|
|
|
536
520
|
## 0.13.2: Config Recovery And Inbound Output Bounds Hotfix
|
|
537
521
|
|
|
538
|
-
- `Config`: Invalid
|
|
539
|
-
- `Inbound`:
|
|
540
|
-
- `Diagnostics`:
|
|
522
|
+
- `Config`: Invalid config is renamed to a recovery file on startup, safe defaults load, and diagnostics remain available for setup repair.
|
|
523
|
+
- `Inbound Bounds`: Handler, transcription, and built-in text outputs are bounded before entering prompts.
|
|
524
|
+
- `Diagnostics Bounds`: Event details and handler stdout/stderr are truncated with explicit evidence.
|
|
541
525
|
|
|
542
526
|
## 0.13.1: Rendering, Typing, And Continue Queue Hotfix
|
|
543
527
|
|
|
544
|
-
- `Rendering`:
|
|
545
|
-
- `Typing
|
|
546
|
-
- `Continue Queue`: `/continue`
|
|
528
|
+
- `Rendering`: Markdown emphasis spanning soft line breaks now renders as Telegram HTML instead of raw markers.
|
|
529
|
+
- `Typing`: Preview and provider transport failures no longer break active-turn typing keepalive.
|
|
530
|
+
- `Continue Queue`: `/continue` enters the control lane, clears abort history, and runs before waiting prompt work.
|
|
547
531
|
|
|
548
532
|
## 0.13.0: Command Template Standard, Voice Hardening, And Domain Cleanup
|
|
549
533
|
|
|
550
|
-
- `Command Templates`:
|
|
551
|
-
- `Voice Providers`:
|
|
552
|
-
- `Outbound Actions`:
|
|
553
|
-
- `Menus
|
|
554
|
-
- `Architecture And Security`:
|
|
555
|
-
- `Public
|
|
556
|
-
- `
|
|
534
|
+
- `Command Templates`: Breaking 0.x update adopted portable parallel, condition, duration, retry, fallback, flag, and failure semantics, replacing local `mode`, `critical`, and `pipe` shapes.
|
|
535
|
+
- `Voice Providers`: Monotonic generated ids, registry probing, and exact-instance disposers preserve provider lifecycle and re-registration.
|
|
536
|
+
- `Outbound Actions`: Voice markup, button planning, and delivery moved into acyclic owners while public behavior remained compatible.
|
|
537
|
+
- `Menus And Diagnostics`: Direct domain tests cover menu/setup contracts and status category summaries.
|
|
538
|
+
- `Architecture And Security`: Restored acyclic imports, centralized Pi SDK access, clarified Bot API naming, and enforced private temp and ownership modes.
|
|
539
|
+
- `Public Guidance`: Stable membranes now own extension examples and callback/navigation contracts; internal `/lib` imports were removed from guidance.
|
|
540
|
+
- `Verification`: Long-session queue, model-switch, markup, split-text, provider, menu, setup, and migration risks received focused coverage.
|
|
557
541
|
|
|
558
542
|
## 0.12.0: Public API Membranes, Telegram UX Safety, And Extension Interop
|
|
559
543
|
|
|
560
|
-
- `Breaking
|
|
561
|
-
- `Interop
|
|
562
|
-
- `
|
|
563
|
-
- `Compaction
|
|
564
|
-
- `
|
|
565
|
-
- `Config Defaults`: Hidden Time Injection
|
|
544
|
+
- `Breaking API`: Replaced published `./lib/*.ts` paths with stable sections, updates, inbound, outbound, voice, and keyboard membranes.
|
|
545
|
+
- `Interop`: Named the low-level update registry, defined stable versus id-less identities, rejected duplicate section ids, and enforced callback byte limits.
|
|
546
|
+
- `Architecture`: Separated updates from polling and Pi bindings from runtime domains; public API and ownership docs map the boundaries.
|
|
547
|
+
- `Compaction`: Manual compaction confirms first and uses native typing with settlement, timeout, and shutdown cleanup.
|
|
548
|
+
- `UI Standard`: Standardized toggle, tab, option, navigation, and confirmation language.
|
|
549
|
+
- `Config Defaults`: Hidden Time Injection removes its key, matching absent-key Voice defaults.
|
|
566
550
|
|
|
567
551
|
## 0.11.2: Queue Continuation, Compaction Safety, And Settings Polish
|
|
568
552
|
|
|
569
|
-
- `
|
|
570
|
-
- `Continue Queue`:
|
|
571
|
-
- `Compaction Safety`:
|
|
572
|
-
- `Command Templates`: Added typed
|
|
573
|
-
- `Public Boundary`: Removed root
|
|
574
|
-
- `Documentation`: Split oversized architecture material
|
|
553
|
+
- `Settings`: Disabled time injection became absent-key `hidden`; legacy values remain readable and details show current state.
|
|
554
|
+
- `Continue Queue`: `/continue` adds one priority prompt without folding waiting prompts into hidden history.
|
|
555
|
+
- `Compaction Safety`: Dispatch pauses across native compaction hooks and resumes after settlement.
|
|
556
|
+
- `Command Templates`: Added typed/index placeholders, repeat fanout, failure/recover, unbounded default timeout, and trusted-command warnings.
|
|
557
|
+
- `Public Boundary`: Removed root API re-exports so `index.ts` remains default-only composition.
|
|
558
|
+
- `Documentation`: Split oversized architecture material and aligned operator labels and reactions.
|
|
575
559
|
|
|
576
560
|
## 0.11.1: Time Context And Settings Polish
|
|
577
561
|
|
|
578
|
-
- `Time Context`: Added optional `
|
|
579
|
-
- `Settings UI`:
|
|
562
|
+
- `Time Context`: Added optional `off`, `always`, or per-chat `interval` time context after attachments, outputs, and voice metadata.
|
|
563
|
+
- `Settings UI`: Proactive push, time, and voice controls gained aligned emoji labels and state text.
|
|
580
564
|
|
|
581
565
|
## 0.11.0: Voice Provider Platform
|
|
582
566
|
|
|
583
|
-
- `
|
|
584
|
-
- `Voice Policy
|
|
585
|
-
- `
|
|
586
|
-
- `Native Delivery
|
|
587
|
-
- `Handler Matrix`:
|
|
588
|
-
- `
|
|
589
|
-
- `
|
|
567
|
+
- `Provider APIs`: Added provider-owned STT/TTS registration and explicit precedence behind configured and programmatic handlers.
|
|
568
|
+
- `Voice Policy`: Added bridge-owned `manual`, `mirror`, and `always` reply policy with compact prompt context and explicit-action priority.
|
|
569
|
+
- `Settings Interop`: Built-in controls and a narrow live-config port let providers reflect policy without owning it.
|
|
570
|
+
- `Native Delivery`: OGG/Opus voice uses native delivery and falls back to markup-stripped text when safe.
|
|
571
|
+
- `Handler Matrix`: Programmatic inbound handlers joined configured commands and provider fallback in one precedence model.
|
|
572
|
+
- `Lifecycle`: Registries own independent globals and cleanup; session shutdown cannot erase unrelated extension registrations.
|
|
573
|
+
- `Docs And Tests`: Added native-format, policy, provider, fallback, prompt, and lifecycle contracts.
|
|
590
574
|
|
|
591
575
|
## 0.10.8: Compact Typing Timing Hotfix
|
|
592
576
|
|
|
593
|
-
- `Compaction`:
|
|
577
|
+
- `Compaction`: `/compact` starts typing only after its start notice and stops on completion or failure.
|
|
594
578
|
|
|
595
579
|
## 0.10.7: Stale Context Hardening Hotfix
|
|
596
580
|
|
|
597
|
-
- `Session Reloads`: Context-sensitive
|
|
598
|
-
- `Runtime Status`:
|
|
599
|
-
- `Release`:
|
|
600
|
-
- `Tests`: Added focused regressions proving the newly guarded call sites tolerate stale context errors and still rethrow unrelated failures.
|
|
581
|
+
- `Session Reloads`: Context-sensitive paths ignore only recognized stale-context failures; unrelated errors remain visible.
|
|
582
|
+
- `Runtime Status`: Status failures propagate to existing safety wrappers for structured diagnostics.
|
|
583
|
+
- `Release`: Tag-triggered GitHub Actions verifies version parity and publishes the matching changelog section.
|
|
601
584
|
|
|
602
585
|
## 0.10.6: Native Typing Keepalive Hotfix
|
|
603
586
|
|
|
604
|
-
- `Typing`:
|
|
605
|
-
- `Queue Menu`: Empty queue refresh
|
|
606
|
-
- `Tests`: Added coverage for the default native typing keepalive cadence.
|
|
587
|
+
- `Typing`: Native typing refresh moved from 4 seconds to 2.5 seconds for better visibility during long work.
|
|
588
|
+
- `Queue Menu`: Empty queue refresh rotates through additional compact status phrases.
|
|
607
589
|
|
|
608
590
|
## 0.10.5: Queue Continuity And Input Resilience Hotfix
|
|
609
591
|
|
|
610
|
-
- `Compaction`:
|
|
611
|
-
- `Text Groups`: Long-text
|
|
612
|
-
- `Runtime Status`: Typing
|
|
613
|
-
- `Tests`: Added regressions for deferred compact dispatch, stale status failures in typing/dispatch paths, and many-part split-text grouping.
|
|
592
|
+
- `Compaction`: Completion and failure schedule deferred queue dispatch after Pi state settles.
|
|
593
|
+
- `Text Groups`: Long-text coalescing keeps a conservative start threshold but tolerates wider message-id drift across likely Telegram chunks.
|
|
594
|
+
- `Runtime Status`: Typing and dispatch status are best-effort with structured stale-context diagnostics.
|
|
614
595
|
|
|
615
596
|
## 0.10.4: Polling Status Resilience Hotfix
|
|
616
597
|
|
|
617
|
-
- `Polling`:
|
|
618
|
-
- `Tests`: Added stale-context polling regressions for startup, cleanup, and retry status updates. Impact: the external PR #43 fix is now covered by maintainer-side tests and kept aligned with local style.
|
|
598
|
+
- `Polling`: Stale-context status updates cannot crash polling; failures record `phase: status-update` without changing API or config behavior.
|
|
619
599
|
|
|
620
600
|
## 0.10.3: Dependency Audit Hotfix
|
|
621
601
|
|
|
622
|
-
- `Dependencies`: Refreshed
|
|
602
|
+
- `Dependencies`: Refreshed transitive development dependencies to clear current protobuf audit findings without runtime API changes.
|
|
623
603
|
|
|
624
604
|
## 0.10.2: Delete Message Port Hotfix
|
|
625
605
|
|
|
626
|
-
- `
|
|
627
|
-
- `
|
|
628
|
-
- `Demo`: Confirmation dialog in `pi-telegram-extension-demo` now deletes itself on answer (`ctx.deleteMessage()`) and posts a follow-up result message (`ctx.open()`).
|
|
629
|
-
- `Docs`: Updated context port listings and interactive-messages section in `extension-sections.md` with `deleteMessage()`.
|
|
606
|
+
- `Section API`: Added `ctx.deleteMessage()` for callback-triggered cleanup, backed by Bot API deletion and error recording.
|
|
607
|
+
- `Docs And Demo`: Interactive confirmation examples now delete their dialog and open a follow-up result.
|
|
630
608
|
|
|
631
609
|
## 0.10.1: Navigation Abstraction Hotfix
|
|
632
610
|
|
|
633
|
-
- `ctx.open()`:
|
|
634
|
-
- `Platform Docs`:
|
|
611
|
+
- `ctx.open()`: New chat messages no longer receive an automatic Back row; `ctx.edit()` retains context-aware menu navigation.
|
|
612
|
+
- `Platform Docs`: Added interactive out-of-menu confirmation and approval patterns.
|
|
635
613
|
|
|
636
614
|
## 0.10.0: Extension Sections Platform
|
|
637
615
|
|
|
638
|
-
- `
|
|
639
|
-
- `Menu
|
|
640
|
-
- `Navigation`:
|
|
641
|
-
- `Companion Demo`: Published
|
|
642
|
-
- `Operator UI`: Standardized model labels and
|
|
643
|
-
- `Verification`:
|
|
616
|
+
- `Sections API`: Added tokenized extension views and narrow callback contexts for answer, edit, open, prompt enqueue, callback creation, and diagnostics.
|
|
617
|
+
- `Menu Integration`: Extension rows and Settings compose before built-ins; stale tokens fail safely and unclaimed callbacks retain fallback behavior.
|
|
618
|
+
- `Navigation`: Context-correct Main menu and Back rows are deduplicated automatically.
|
|
619
|
+
- `Companion Demo`: Published a standalone example extension with Explorer, prompt enqueueing, and Settings state.
|
|
620
|
+
- `Operator UI`: Standardized model labels and removed redundant terminal `/telegram-settings` while retaining Telegram `/settings`.
|
|
621
|
+
- `Verification`: Registry, ordering, parsing, fallback, stale token, open/edit, and navigation contracts gained direct coverage.
|
|
644
622
|
|
|
645
623
|
## 0.9.9: Guest Mode HTML Rendering
|
|
646
624
|
|
|
647
|
-
- `Guest
|
|
648
|
-
- `
|
|
649
|
-
- `API`:
|
|
650
|
-
- `API`: Removed `replyMarkup` parameter from `answerGuestQuery` — inline keyboards are not supported in guest mode because `callback_query` from inline results carries `inline_message_id` instead of `chat_id`/`message_id`, which the existing callback routing cannot handle.
|
|
625
|
+
- `Guest Rendering`: Guest replies use the normal Markdown-to-HTML renderer, matching DM formatting.
|
|
626
|
+
- `Reply Domain`: Guest Markdown delivery moved behind a replies-domain sender.
|
|
627
|
+
- `Guest API`: Answer titles are fixed and keyboards are omitted because inline callback routing lacks chat/message identity.
|
|
651
628
|
|
|
652
629
|
## 0.9.8: Guest Mode Context
|
|
653
630
|
|
|
654
|
-
- `Guest
|
|
655
|
-
- `
|
|
656
|
-
- `Guest Mode`: Formatted guest prompt text identically to regular DMs through buildTelegramTurnPrompt, including [attachments] and [outputs] sections with file downloads and inbound handler processing.
|
|
657
|
-
- `Prompts`: Added compact agent guidance explaining guest-mode prefix suffixes (|from:, |guest:) and reply-from context.
|
|
631
|
+
- `Guest Context`: Prompt prefixes identify sender and source group, replies preserve author attribution, and media uses the normal attachment/output turn builder.
|
|
632
|
+
- `Prompt Guidance`: Added compact explanation of Guest Mode source and reply metadata.
|
|
658
633
|
|
|
659
634
|
## 0.9.7: Bot API 10.0 Alignment
|
|
660
635
|
|
|
661
|
-
- `Runtime Baseline`: Migrated Pi
|
|
662
|
-
- `Guest Mode`:
|
|
663
|
-
- `Draft API`:
|
|
664
|
-
- `
|
|
636
|
+
- `Runtime Baseline`: Migrated Pi peers to `@earendil-works/*` and declared Node `>=22.0.0`.
|
|
637
|
+
- `Guest Mode`: Added authorized `guest_message` routing and Bot API 10.0 `answerGuestQuery` delivery without joining the source chat.
|
|
638
|
+
- `Draft API`: Drafts accept empty text, entities, parse mode, and optional thread id.
|
|
639
|
+
- `Presence And Tests`: Guest sentinel targets suppress typing; focused coverage protects guest and draft boundaries.
|
|
665
640
|
|
|
666
641
|
## 0.9.6: Runtime Adapter Positioning
|
|
667
642
|
|
|
668
|
-
- `Package`: Repositioned the
|
|
669
|
-
- `Telegram API`:
|
|
670
|
-
- `Dependencies`: Refreshed
|
|
671
|
-
- `README`:
|
|
672
|
-
- `Context`: Promoted the runtime-adapter/operator-console README rhythm, `/start` menu emphasis, and environment-only configuration rule into `AGENTS.md`. Impact: future documentation edits preserve the same positioning and env-knob coverage instead of drifting back toward a narrow bridge metaphor.
|
|
643
|
+
- `Package`: Repositioned the project as a Telegram runtime adapter for Pi.
|
|
644
|
+
- `Telegram API`: Added configurable API base and documented native environment-proxy support; SOCKS5 remains outside zero-dependency core.
|
|
645
|
+
- `Dependencies`: Refreshed transitive packages to restore a clean audit.
|
|
646
|
+
- `README And Context`: Rebuilt the install-to-operation entrypoint and made its runtime-adapter, `/start`, and env-config rhythm durable.
|
|
673
647
|
|
|
674
648
|
## 0.9.5: Telegram Delivery Resilience Hotfix
|
|
675
649
|
|
|
676
|
-
- `Preview Delivery`:
|
|
677
|
-
- `
|
|
678
|
-
- `
|
|
679
|
-
- `
|
|
680
|
-
- `Extension Sections Draft`: Added a draft design note for pi-native Telegram extension sections, reserved the future `section:` callback prefix, linked the draft from docs, and recorded the project philosophy that `pi-telegram` should inherit Pi's extensibility model as a shared Telegram shell for loaded extensions. Impact: the future 0.10.0 extension platform direction is documented without exposing a stable API yet.
|
|
681
|
-
- `Docs Formatting`: Normalized project Markdown so prose paragraphs stay as single logical lines and Markdown tables remain narrow instead of using artificial hard wraps. Impact: editors and viewers can handle visual wrapping naturally while fixed-width structures stay readable.
|
|
682
|
-
- `Settings Copy`: Tightened the proactive-push settings text by removing redundant persistence/default wording.
|
|
650
|
+
- `Preview And Final Delivery`: Telegram transport failures are recorded and contained so cleanup, attachments, and queue dispatch continue.
|
|
651
|
+
- `Diagnostics`: Preview and final errors carry compact phase metadata.
|
|
652
|
+
- `Sections Draft`: Reserved the future Sections namespace and documented the shared Telegram-shell direction without exposing an API.
|
|
653
|
+
- `Docs`: Normalized Markdown shape and tightened proactive-push copy.
|
|
683
654
|
|
|
684
655
|
## 0.9.4: Temp Dir And Command Template Hotfix
|
|
685
656
|
|
|
686
|
-
- `
|
|
687
|
-
- `Command Templates`:
|
|
688
|
-
- `Queue Menu`:
|
|
657
|
+
- `Temp Dir`: API temporary files honor `PI_CODING_AGENT_DIR` with the standard agent-dir fallback.
|
|
658
|
+
- `Command Templates`: Documented portable mode, delay, repeat, placeholder, padding, and limited arithmetic semantics.
|
|
659
|
+
- `Queue Menu`: Refresh remains in a stable position and empty states rotate through compact headings.
|
|
689
660
|
|
|
690
661
|
## 0.9.3: External Handlers Rename
|
|
691
662
|
|
|
692
|
-
- `External Handlers`: Renamed the
|
|
693
|
-
- `Breaking`: Removed
|
|
663
|
+
- `External Handlers`: Renamed the domain and docs from `external-update-handlers` to `external-handlers`.
|
|
664
|
+
- `Breaking`: Removed old module paths and aliases; consumers must use the new path and `TelegramExternalHandler*` names.
|
|
694
665
|
|
|
695
666
|
## 0.9.2: External Update Interceptors
|
|
696
667
|
|
|
697
|
-
- `
|
|
698
|
-
- `
|
|
699
|
-
- `
|
|
700
|
-
- `Security`: Refreshed the lockfile to resolve the transitive `basic-ftp` audit advisory. Impact: release validation returns to a clean npm audit state.
|
|
668
|
+
- `Update Interceptors`: Added a validated versioned global registry for same-process extensions to observe or consume updates before default routing without another poller.
|
|
669
|
+
- `Queue Menu`: Non-empty queue lists retain a Refresh row below items.
|
|
670
|
+
- `Security`: Refreshed the lockfile to clear a transitive audit advisory.
|
|
701
671
|
|
|
702
672
|
## 0.9.1: Model Detail Hotfix
|
|
703
673
|
|
|
704
|
-
- `Model Menu`: Detail
|
|
705
|
-
- `
|
|
706
|
-
- `
|
|
707
|
-
- `Queue Reactions`: Added `🔥` as a priority reaction and `🗑` as a queue-removal reaction. Impact: the intuitive fire/removal gestures now work alongside the existing reaction controls.
|
|
708
|
-
- `Docs`: Updated the status-bar example to match the compact active/queued display.
|
|
674
|
+
- `Model Menu`: Detail activation preserves scoped thinking and reapplies it even when selecting the already active model.
|
|
675
|
+
- `Proactive Push`: Removed an unused reply-target store; proactive local results send without reply anchoring.
|
|
676
|
+
- `Queue Reactions`: Added fire priority and wastebasket removal gestures.
|
|
709
677
|
|
|
710
678
|
## 0.9.0: Hidden Settings And Proactive Push
|
|
711
679
|
|
|
712
|
-
- `Settings
|
|
713
|
-
- `Proactive Push`:
|
|
714
|
-
- `Queue UI`:
|
|
715
|
-
- `Model Menu`: Model
|
|
716
|
-
- `Status
|
|
717
|
-
- `Prompt Guidance`: Telegram prompt injection now asks agents to target 37 visible cells for tables, dense list items, and compact text blocks. Impact: replies better fit narrow mobile Telegram screens, especially when emoji or wide glyphs are present.
|
|
680
|
+
- `Settings`: Added hidden Telegram Settings and terminal controls for proactive push.
|
|
681
|
+
- `Proactive Push`: Optional successful local finals reach the paired chat only under current ownership; local prompt text is never mirrored.
|
|
682
|
+
- `Queue UI`: Refined empty/non-empty icons, item position, priority tabs, reaction markers, and active status after queue mutation.
|
|
683
|
+
- `Model Menu`: Model details provide activation and scoped/all membership controls.
|
|
684
|
+
- `Status And Guidance`: Compaction appears in the menu and prompt guidance targets narrow mobile layouts.
|
|
718
685
|
|
|
719
686
|
## 0.8.2: Lock-Safe Delivery
|
|
720
687
|
|
|
721
|
-
- `Lock Safety`: Active
|
|
722
|
-
- `Inbound Handlers`:
|
|
723
|
-
- `Menu UI`: Model and Thinking
|
|
688
|
+
- `Lock Safety`: Active turns recheck singleton ownership before preview and final delivery, silencing displaced owners.
|
|
689
|
+
- `Inbound Handlers`: First composition steps receive the full configured timeout before elapsed accounting.
|
|
690
|
+
- `Menu UI`: Model and Thinking headings gained matching icons.
|
|
724
691
|
|
|
725
692
|
## 0.8.1: Outbound Voice Translation Hotfix
|
|
726
693
|
|
|
727
|
-
- `Outbound Voice`:
|
|
728
|
-
- `Queue Menu`:
|
|
729
|
-
- `
|
|
730
|
-
- `
|
|
731
|
-
- `
|
|
732
|
-
- `Outbound Docs`: Tightened voice-handler critical-step wording around transform → TTS → conversion pipelines and handler-level fallbacks. Impact: docs now match translated voice pipelines without implying provider-specific TTS fallbacks.
|
|
733
|
-
- `Command Template Docs`: Updated `docs/command-templates.md` to the current portable standard. Impact: the documented standard now includes retry, fail-open composition, critical-step abort semantics, and the 30s default timeout without requiring cross-extension references.
|
|
734
|
-
- `Lock Docs`: Synchronized `docs/locks.md` bit-for-bit with the extension-neutral Locks Standard shared by `pi-wakeup`. Impact: singleton ownership documentation no longer carries project-specific examples that prevent exact reuse across extensions.
|
|
694
|
+
- `Outbound Voice`: The first voice pipeline step receives original hidden text on stdin, enabling translation before TTS.
|
|
695
|
+
- `Queue Menu`: Raw bounded prompt previews, clearer waiting icons, explicit deletion confirmation, and preserved priority emoji improve queue control.
|
|
696
|
+
- `Configuration Docs`: Advanced config remains agent-assisted rather than gaining premature UI.
|
|
697
|
+
- `Handler Docs`: Voice pipelines and the portable command-template standard now describe retry, critical failure, and default timeouts accurately.
|
|
698
|
+
- `Lock Docs`: Synchronized the extension-neutral lock standard.
|
|
735
699
|
|
|
736
700
|
## 0.8.0: Handler Bus
|
|
737
701
|
|
|
738
|
-
- `Inbound
|
|
739
|
-
- `Text Attachments`:
|
|
740
|
-
- `
|
|
741
|
-
- `
|
|
742
|
-
- `
|
|
743
|
-
- `
|
|
744
|
-
- `Outbound Handlers`: Added `outboundHandlers` support for `type: "text"`; final text/Markdown replies can be transformed before Telegram rendering and delivery. Impact: translation-back or other outbound text normalization can be configured without hard-coded providers.
|
|
745
|
-
- `Outbound Text Preview`: Finalized rich preview messages now pass through outbound `type: "text"` handlers before Telegram edit/delivery, with expanded README/docs examples for machine translation, final text rewrites, composed translated voice-over, and inline-button compatibility. Impact: outbound text transforms apply even when the final answer reuses an existing preview instead of falling back to a separate send path, while inline buttons remain attached and visible labels are transformed without changing callback prompts.
|
|
702
|
+
- `Inbound Bus`: Added provider-neutral text/media transformations with selector matching, stdin/placeholders, ordered fallback, and output replacement.
|
|
703
|
+
- `Text Attachments`: Built-in fail-open UTF-8 reading makes ordinary text files available without custom handlers.
|
|
704
|
+
- `Domain Names`: Renamed inbound and outbound attachment modules to match their unified responsibilities.
|
|
705
|
+
- `Compatibility`: Deprecated `attachmentHandlers` remains appended after canonical `inboundHandlers`.
|
|
706
|
+
- `Outbound Text`: Added final text transformations, including preview finalization, without changing button callback prompts.
|
|
707
|
+
- `Docs`: Consolidated inbound handler documentation and added translation and composed voice examples.
|
|
746
708
|
|
|
747
709
|
## 0.7.2: Split Text Coalescing Hotfix
|
|
748
710
|
|
|
749
|
-
- `Text Coalescing`:
|
|
750
|
-
- `
|
|
751
|
-
- `
|
|
711
|
+
- `Text Coalescing`: Likely near-limit Telegram chunks from one sender are short-debounced into one prompt; commands, media, captions, bots, and normal follow-ups bypass it.
|
|
712
|
+
- `Callback Namespaces`: Current navigation emits `menu:` while legacy `status:` remains reserved but no longer generated.
|
|
713
|
+
- `Runtime Tests`: Removed timing races in media-group and reaction-priority coverage.
|
|
752
714
|
|
|
753
715
|
## 0.7.1: Layered Callback Interop
|
|
754
716
|
|
|
755
|
-
- `Callback Interop`:
|
|
756
|
-
- `Prompt Templates`:
|
|
717
|
+
- `Callback Interop`: Unowned callback namespaces fall back to Pi as `[callback] <data>` after bridge handlers decline them, enabling layered extensions without another poller.
|
|
718
|
+
- `Prompt Templates`: Template aliases remain in `/start` but no longer clutter Telegram’s global command menu.
|
|
757
719
|
|
|
758
720
|
## 0.7.0: Unified App Menu & Command Template Hardening
|
|
759
721
|
|
|
760
|
-
- `
|
|
761
|
-
- `Queue
|
|
762
|
-
- `Prompt Templates`: Discovered
|
|
763
|
-
- `Menu Domains
|
|
764
|
-
- `Runtime Safety`:
|
|
765
|
-
- `Command Templates`:
|
|
766
|
-
- `
|
|
722
|
+
- `Commands`: Reduced visible commands while keeping compatibility shortcuts; start, help, and status share one operator surface and continue enters priority control flow.
|
|
723
|
+
- `Queue Controls`: Added queue inspection, item actions, reactions, refresh, and direct entry with control-safe ordering.
|
|
724
|
+
- `Prompt Templates`: Discovered conflict-safe aliases and expanded template files plus arguments before queueing.
|
|
725
|
+
- `Menu Domains`: Split queue, model, thinking, and status views into owners with consistent navigation and paging.
|
|
726
|
+
- `Runtime Safety`: Atomic config, first-block reply anchoring, typing diagnostics, and typed preview markup harden delivery.
|
|
727
|
+
- `Command Templates`: Standardized 30-second timeout and fail-open composition with optional critical abort.
|
|
728
|
+
- `Verification`: Focused coverage protects menus, queue mutation, continuation, templates, replies, composition, and preview markup.
|
|
767
729
|
|
|
768
730
|
## 0.6.3: Outbound Action Syntax & Prompt Guidance
|
|
769
731
|
|
|
770
|
-
- `
|
|
771
|
-
- `
|
|
772
|
-
- `
|
|
773
|
-
- `
|
|
774
|
-
- `Architecture`: Entrypoint wiring now names inbound routing, queue session lifecycle, agent lifecycle hooks, outbound reply collaborators, and repeated pi context ports before registration. Impact: `index.ts` remains the composition root while the final hook/polling registration blocks are easier to scan.
|
|
775
|
-
- `Config`: Missing `telegram.json` is now handled with an explicit existence check before reading. Impact: first-run config loading keeps the empty-config fallback without using read failures as control flow.
|
|
732
|
+
- `Action Syntax`: Added label-only buttons and explicit one-line voice/button attributes; hidden bodies remain attached inside parser recovery windows.
|
|
733
|
+
- `Prompt Guidance`: Reorganized Telegram guidance around inbound context, visible output, and native actions with less duplication.
|
|
734
|
+
- `Architecture`: Named major runtime collaborators before entrypoint registration.
|
|
735
|
+
- `Config`: Missing config now uses an explicit existence check instead of read exceptions as normal flow.
|
|
776
736
|
|
|
777
737
|
## 0.6.2: Reload-Stale Queue Dispatch Hotfix
|
|
778
738
|
|
|
779
|
-
- `Queue Dispatch`: Deferred
|
|
780
|
-
- `
|
|
781
|
-
- `Lock Watcher Safety`: Ownership-loss watchers now retain only the snapshotted lock identity and stop polling without a captured live context. Impact: singleton takeover cleanup no longer needs stale-prone status refreshes from watcher callbacks.
|
|
782
|
-
- `Media Group Safety`: Media-group debounce timers now flush through controller state instead of closure-capturing the inbound context. Impact: album coalescing keeps the same behavior while reducing stale-context retention in timer callbacks.
|
|
739
|
+
- `Queue Dispatch`: Deferred dispatch is session-bound and cancelled on shutdown.
|
|
740
|
+
- `Timer Safety`: Typing, lock watchers, and media-group timers no longer retain stale live contexts; diagnostics and controller state own late work.
|
|
783
741
|
|
|
784
742
|
## 0.6.1: Outbound Action & Command Timeout Hardening
|
|
785
743
|
|
|
786
|
-
- `Command
|
|
787
|
-
- `Outbound Buttons`:
|
|
788
|
-
- `
|
|
789
|
-
- `
|
|
744
|
+
- `Command Runtime`: Timed-out child commands escalate from `SIGTERM` to `SIGKILL`.
|
|
745
|
+
- `Outbound Buttons`: Button bodies are optional when prompt and label are equal.
|
|
746
|
+
- `Comment Parsing`: Native actions after valid closing code fences are recognized without executing code examples.
|
|
747
|
+
- `Template Docs`: Documented the strict `timeout` and string-array `args` contract; legacy shapes are not presented as supported.
|
|
790
748
|
|
|
791
749
|
## 0.6.0: Command Templates & Assistant-Authored Outbound Actions
|
|
792
750
|
|
|
793
|
-
- `Outbound Actions`:
|
|
794
|
-
- `Outbound Semantics`:
|
|
795
|
-
- `Command
|
|
796
|
-
- `
|
|
797
|
-
- `Docs`:
|
|
751
|
+
- `Outbound Actions`: Hidden voice and button comments create native audio or queued prompts while visible Markdown remains the answer.
|
|
752
|
+
- `Outbound Semantics`: One owner plans voice, buttons, artifacts, callback prompts, reply metadata, and post-result delivery.
|
|
753
|
+
- `Command Templates`: Added a shell-free portable contract for strings/sequences, declarations, defaults, timeout, piping, and artifact output.
|
|
754
|
+
- `Domain Boundaries`: Split inbound preprocessing, outbound actions, and reusable template mechanics into mirrored owners.
|
|
755
|
+
- `Docs`: Replaced host-local commands with portable placeholders and consolidated template guidance.
|
|
798
756
|
|
|
799
757
|
## 0.5.2: Telegram Reply Context
|
|
800
758
|
|
|
801
|
-
- `
|
|
802
|
-
- `
|
|
803
|
-
- `Docs & Tests`: Updated README, architecture/context notes, package metadata, and media/turn regressions for reply-context forwarding, truncation, queued edits, and command-safe raw text extraction. Impact: the feature is documented and covered without weakening the existing queue/command split.
|
|
759
|
+
- `Reply Context`: Normal prompts include bounded replied text or caption, while slash-command parsing still uses only the new message.
|
|
760
|
+
- `Docs And Tests`: Documented and covered truncation, queued edits, command safety, and reply forwarding.
|
|
804
761
|
|
|
805
762
|
## 0.5.1: Stop Queue Reset Hotfix
|
|
806
763
|
|
|
807
|
-
- `Queue Safety`:
|
|
808
|
-
- `Docs
|
|
764
|
+
- `Queue Safety`: `/stop` clears waiting prompt/control work, model-switch and abort-history state, then aborts the active run when possible.
|
|
765
|
+
- `Docs And Tests`: Updated the high-risk stop and queue contract.
|
|
809
766
|
|
|
810
767
|
## 0.5.0: Command Templates, Domain Boundaries & Queue UX
|
|
811
768
|
|
|
812
|
-
- `Queue UX`:
|
|
813
|
-
- `Attachment Handlers`:
|
|
814
|
-
- `Domain Boundaries`:
|
|
815
|
-
- `telegram_attach`:
|
|
816
|
-
- `Docs
|
|
769
|
+
- `Queue UX`: Immediate controls, settled-idle retry, specific busy labels, and local reaction priority keep text and attachment turns ordered.
|
|
770
|
+
- `Attachment Handlers`: Portable templates, defaults, and fallback chains support configured preprocessing without private tool registries.
|
|
771
|
+
- `Domain Boundaries`: Registration responsibilities moved to attachment, command, lifecycle, and prompt owners.
|
|
772
|
+
- `telegram_attach`: Outbound staging, limits, failure events, and tool results moved into the attachment owner.
|
|
773
|
+
- `Docs And Validation`: User docs, architecture, focused coverage, and repository contents aligned with the new domains.
|
|
817
774
|
|
|
818
775
|
## 0.4.0: Singleton Locks & Attachment Handlers
|
|
819
776
|
|
|
820
|
-
- `Locks`: Added
|
|
821
|
-
- `Attachment Handlers`: Added
|
|
822
|
-
- `
|
|
777
|
+
- `Locks`: Added shared singleton ownership with stale replacement, confirmed takeover, explicit disconnect, session suspension, and same-directory resume, separate from bot config.
|
|
778
|
+
- `Attachment Handlers`: Added MIME/type preprocessing with safe placeholders, compact attachment/output prompt sections, and fail-open empty results.
|
|
779
|
+
- `Routing`: Extracted cohesive inbound route composition from `index.ts` while preserving paired updates, controls, media, queueing, and edits.
|
|
823
780
|
|
|
824
781
|
## 0.3.0: Modular Runtime, Queue Controls, Diagnostics
|
|
825
782
|
|
|
826
|
-
- `
|
|
827
|
-
- `Queue
|
|
828
|
-
- `
|
|
829
|
-
- `Rendering
|
|
830
|
-
- `Files
|
|
831
|
-
- `Diagnostics`:
|
|
832
|
-
- `Packaging
|
|
833
|
-
- `Maintenance Compression`: Consolidated repeated runtime/menu/media/attachment/API/model/queue test fixtures and tightened owning-domain contracts without changing Telegram behavior. Impact: the modular baseline remained extensible while the release history records the resulting boundaries rather than every intermediate extraction and cast cleanup.
|
|
783
|
+
- `Domain DAG`: Established one composition root over flat acyclic owners; session coordination remains in runtime instead of absorbing domain policy.
|
|
784
|
+
- `Queue Lifecycle`: Added typed lanes, active-turn state, readiness, abort and compaction guards, immediate controls, serialized control work, and reaction priority.
|
|
785
|
+
- `Controls`: Unified model, thinking, command, menu, callback, and in-flight model-switch policy; removed Telegram `/debug` in favor of local diagnostics.
|
|
786
|
+
- `Rendering`: Consolidated safe narrow-client HTML/Markdown rendering, splitting, tables, lists, quotes, code, previews, finals, and reply metadata.
|
|
787
|
+
- `Files And Setup`: Separated API retries/downloads, media grouping, attachment staging, config, pairing, authorization, and token setup.
|
|
788
|
+
- `Diagnostics`: Added grouped status plus a redacted runtime/API event ring across transport, dispatch, controls, typing, setup, and files.
|
|
789
|
+
- `Packaging`: Added package allowlists, lockfile, validation scripts, CI, broad regressions, and structural architecture guards.
|
|
834
790
|
|
|
835
791
|
## 0.2.x: Fork Genesis
|
|
836
792
|
|
|
837
|
-
- `Fork Identity
|
|
838
|
-
- `Domain Runtime`: Split the
|
|
839
|
-
- `Queue
|
|
840
|
-
- `Polling And Updates`:
|
|
841
|
-
- `Telegram Transport`: Added
|
|
842
|
-
- `Rendering And
|
|
843
|
-
- `
|
|
844
|
-
- `Regression Foundation`: Added focused domain and integration coverage for rendering/chunking, queue and control ordering, polling/update admission, edited turns, media groups, attachments, previews/finals, compaction, model switching, registration, setup, and Telegram API behavior. Impact: the fork's initial architecture and high-risk mobile-runtime flows gained repeatable protection without preserving intermediate refactor chronology.
|
|
793
|
+
- `Fork Identity`: Established the maintained package metadata and predictable saved-token, environment-token, then placeholder setup flow.
|
|
794
|
+
- `Domain Runtime`: Split the monolith into flat queue, replies, polling, updates, media, controls, API, setup, and status owners with mirrored tests.
|
|
795
|
+
- `Queue Lifecycle`: Added typed lanes, delayed admission, reactions, media groups, abort history, attachment-preserving edits, and compaction gates.
|
|
796
|
+
- `Polling And Updates`: Offsets follow successful handling, poisoned updates are bounded, and edits update queued turns instead of duplicating them.
|
|
797
|
+
- `Telegram Transport`: Added structured errors, retry/backoff, bounded streaming downloads, file-backed uploads, safe temp names, and cleanup.
|
|
798
|
+
- `Rendering And Controls`: Added safe narrow-client rendering, serialized previews, status/model/thinking menus, scoped models, and tool-safe switching.
|
|
799
|
+
- `Regression Foundation`: Established focused coverage for architecture, transport, rendering, queueing, media, previews, setup, controls, and lifecycle.
|