polygram 0.8.0-rc.31 → 0.8.0-rc.32

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://anthropic.com/claude-code/plugin.schema.json",
3
3
  "name": "polygram",
4
- "version": "0.8.0-rc.31",
4
+ "version": "0.8.0-rc.32",
5
5
  "description": "Telegram integration for Claude Code that preserves the OpenClaw per-chat session model. Migration target for OpenClaw users. Multi-bot, multi-chat, per-topic isolation; SQLite transcripts; inline-keyboard approvals. Bundles /polygram:status|logs|pair-code|approvals admin commands and a history skill.",
6
6
  "keywords": [
7
7
  "telegram",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "polygram",
3
- "version": "0.8.0-rc.31",
3
+ "version": "0.8.0-rc.32",
4
4
  "description": "Telegram daemon for Claude Code that preserves the OpenClaw per-chat session model. Migration path for OpenClaw users moving to Claude Code.",
5
5
  "main": "lib/ipc-client.js",
6
6
  "bin": {
package/polygram.js CHANGED
@@ -2414,36 +2414,24 @@ async function handleMessage(sessionKey, chatId, msg, bot) {
2414
2414
  availableEmojis,
2415
2415
  logError: (m) => console.error(`[${label}] ${m}`),
2416
2416
  });
2417
- // Start at QUEUED (👀) so user sees their message was received but
2418
- // not yet being worked on. pm calls context.onActivate when this
2419
- // pending becomes the queue head (Claude is actually starting it),
2420
- // at which point we flip to THINKING (🤔).
2421
- // 0.7.4 (item G): if voice ack (👂) was just emitted by
2422
- // transcribeVoiceAttachments, skip QUEUED — its 👀 would overwrite the
2423
- // ack within milliseconds, wasting an API call and flickering. Let 👂
2424
- // stay until THINKING flips it to 🤔 when Claude actually starts work.
2425
- if (!voiceAck.ackEmitted) {
2426
- reactor.setState('QUEUED');
2427
- }
2428
-
2429
- // rc.31: timer-based 👀 → 🤔 transition. After 300ms in QUEUED,
2430
- // promote to THINKING regardless of whether the SDK has emitted
2431
- // any stream events yet. Reasoning: THINKING is "the bot is
2432
- // working on your reply" — a generic processing signal, NOT
2433
- // specifically about extended-thinking content blocks. Pre-rc.31
2434
- // we waited for first text/tool_use, which under effort=high
2435
- // could mean 10+ s sitting at 👀 with no visible progress.
2417
+ // rc.32: skip QUEUED (👀) entirely for first-message-in-chain. Go
2418
+ // straight to THINKING (🤔). The 👀 🤔 two-hop didn't add
2419
+ // user-readable signal Telegram's ✓✓ already conveys "delivered",
2420
+ // and the technical "received-but-not-started vs thinking"
2421
+ // distinction is operator-debugging context, not user UX.
2436
2422
  //
2437
- // Guarded on `currentState === 'QUEUED'` so we don't downgrade
2438
- // a more-specific state (CODING/TOOL/...) if a tool fires
2439
- // within 300ms of pm.send.
2423
+ // Follow-up messages during an in-flight turn still go through the
2424
+ // autosteer path (✍ AUTOSTEERED state) that's the visual that
2425
+ // means "captured while bot is busy, will incorporate." This
2426
+ // change ONLY affects the trigger message of a fresh turn:
2427
+ // previously 👀 → (300ms timer) → 🤔, now just 🤔 immediately.
2440
2428
  //
2441
- // unref() so a long-pending timer doesn't keep the event loop
2442
- // alive past shutdown drain.
2443
- const thinkingPromote = setTimeout(() => {
2444
- if (reactor.currentState === 'QUEUED') reactor.setState('THINKING');
2445
- }, 300);
2446
- thinkingPromote.unref?.();
2429
+ // 0.7.4 (item G) voice-ack guard preserved: if 👂 is up from
2430
+ // voice transcription, don't overwrite it. Let onFirstStream
2431
+ // promote to 🤔 when Claude actually starts work.
2432
+ if (!voiceAck.ackEmitted) {
2433
+ reactor.setState('THINKING');
2434
+ }
2447
2435
 
2448
2436
  // Mark the inbound row terminal so boot replay doesn't pick it up
2449
2437
  // again. Must fire down EVERY non-throwing exit path (early returns