TensorPM v1.5.1-beta.1 (Beta)
Pre-releaseChangelog - v1.5.1-beta.1
A patch release that re-ships v1.5.0-beta.1 to platforms that didn't
actually receive it — most importantly macOS — together with a small
Telegram polish and a hardening fix to the release pipeline itself.
If you're on v1.3.0-beta.1 (the last build with a successfully signed
and notarized macOS DMG) and your update check has been telling you you
"have the latest version", this release is the one that gets you back
onto the current train.
📝 Why this release exists
v1.4.0-beta.1, v1.4.0-beta.2, and v1.5.0-beta.1 all completed
their macOS notarization, but the subsequent electron-builder --mac zip
step ran into the 20-minute step timeout on the CI runner. The build job
failed without producing a .dmg / .zip, but the release job ran
anyway (it was wired to !cancelled()), so the GitHub Release was
published with Windows and Linux assets and no macOS bundle.
The proxy update feed served the macOS YAML from the last release that
actually had a DMG, which was v1.3.0-beta.1 — so the desktop app's
update checker correctly reported "no newer version" to every Mac user
on ≥ v1.3.0-beta.1.
This release fixes both halves:
- Hardened CI pipeline — see "Build & Release Pipeline" below.
- A fresh tag that actually ships on every platform — once this
build is green, the proxy update feed picks up the new macOS DMG and
v1.3+Mac users start seeing the update.
🎉 Carry-forward from v1.5.0-beta.1
For users on v1.3.0-beta.1 (or v1.4.x on Windows / Linux) this is
their first time seeing these changes. The full v1.5.0-beta.1 changelog
applies as-is:
- Telegram connector — the second full citizen of the connector
framework (alongside Email). Bot-per-workspace setup, project-scoped
invite links, self-introduction handshake, per-link tool policies,
slash commands, full DE/EN UI. Migration030-add-telegram-intake
adds three local-only tables (telegram_invites,telegram_links,
telegram_messages_local) — allexcludeFromSync: true, so no
TensorPMSync schema change is required. - Default model bumped to Gemini 3.5 Flash (GA) for both BYOK
Google and the proxy backend. Stalegemini-3-flash-previewand
gemini-3.1-flash-lite-previewpreferences are silently migrated to
the new default byAppSettingsRepository. - Credit summary moved into Redux (
creditsSlice+
creditsListenermiddleware). The header credit pill now refreshes
itself when a chat stream finishes; no more stale balance after
checkout or after a long chat session. Eliminates the
"credit-summary 401 storm on logout" pattern previously observed in
dev logs. - Telegram-aware chat rendering — messages originating from
Telegram get the contact's avatar + display name, and a small
"Telegram" source indicator, without confusing the alignment of the
streaming-message component. - Connector framework un-frozen —
ConnectorTypewidened to
'email' | 'telegram',ConnectorConfigis now a discriminated
union, intake routing and the IntakeIndicator handle cross-connector
grouping. The next connector (PlanRadar / Capmo / Procore / Slack /
Calendar) no longer needs a framework rewrite.
For the full per-area breakdown — security model, agent prompt
generators, tool registration, follow-up gaps — see
CHANGELOG-v1.5.0-beta.1.md. Nothing in
that document was rolled back; everything in it ships here.
The v1.4.0-beta.2 content (Materials, Distiller review-flow
stabilisation, AI smoke gate, additional Distiller proposals for
Decisions) also ships here for any platform that missed it — see
CHANGELOG-v1.4.0-beta.2.md.
🏗️ Improvements
Telegram Message Markdown — Rendering & Stripping
TelegramConnectorService learned to handle Markdown on the wire more
gracefully:
- Outbound agent replies are rendered through a Telegram-flavoured
Markdown formatter so headings, bold, lists, code blocks, and links
arrive on the user's phone as proper Telegram-formatted messages
instead of raw**foo**artefacts. - Inbound user messages have Markdown control characters stripped
before they enter the intake pipeline, so a copy-pasted email or a
formatted note from another tool doesn't confuse downstream
distillation. - New unit coverage in
telegramConnectorService.test.ts(53 lines)
locks down both directions.
Build & Release Pipeline
The CI pipeline that ships the desktop binaries got two fixes that
should prevent another silent-Mac-failure pattern:
- macOS build step timeout raised from 20 → 30 minutes in
.github/workflows/build.yml. The notarization itself only takes a
couple of minutes, but the post-notarization
electron-builder --mac zip --prepackagedstep on the GitHub-hosted
macos-latestrunner has been running close to (and occasionally
past) the 20-minute mark for the larger binary the Telegram
connector and the vendored sandbox libs have produced. Windows is on
30 minutes already; macOS now matches. - Release job is gated on
success()instead of!cancelled().
Previously the workflow would publish the GitHub Release even when
the macOS matrix entry timed out, leaving Mac users on a stale DMG
while Windows / Linux moved on. From this release onward, a failed
matrix build means no release — the release pipeline either ships on
every platform or nothing.
These changes do not affect the desktop binary at runtime; they only
affect how the binary gets built and published.
🐛 Bug Fixes
- Mac update check stuck on
v1.3.0-beta.1. Indirect: by making
this release ship a real macOS DMG, the proxy update feed
(/update/beta-mac.yml,/update/beta-mac-arm64.yml) now advertises
a version> v1.3.0-beta.1again. Mac users on theautoorbeta
update channel start seeing the update on the next check. - Telegram replies arriving as raw Markdown. Bold, code blocks,
and bullet lists generated by the project agent for a Telegram
contact now render as actual Telegram formatting instead of literal
**foo**and backticks.
📦 Database & Sync
No schema changes in this release. Migration 030-add-telegram-intake
from v1.5.0-beta.1 is still the latest local migration; no
TensorPMSync *.sql to apply on the sync backend.
📝 Notes
Update Path
| Coming from | What you see |
|---|---|
v1.3.0-beta.1 |
The full carry-forward content from v1.4 + v1.5 + this patch — Telegram connector, Materials, Gemini 3.5 Flash default, credits-in-Redux, etc. |
v1.4.0-beta.x |
Telegram connector, Gemini 3.5 Flash default, credits-in-Redux, plus this patch. |
v1.5.0-beta.1 |
Telegram Markdown polish + pipeline hardening only. |
Linux users on v1.5.0-beta.1 were not affected by the pipeline
breakage; they get the smallest delta. Windows users likewise.
No Stripe / Billing / API Changes
The proxy and the website are untouched by this release. No webhook
re-deploy, no proxy restart, no website prebuild flip needed.
Known Follow-Ups (unchanged from v1.5.0-beta.1)
- Voice / audio Telegram messages are received and queued, but
Whisper-style transcription of voice notes is still the next obvious
win. /newresets conversational context but does not clear pending
proposed updates from earlier in the thread.- Connector framework abstraction (parameterising the bot watcher
loop and ConnectorIndicator routing into a fully type-parameterised
base) remains open.
📅 Release Info
- Version: 1.5.1-beta.1
- Release Date: May 20, 2026
- Previous Version: 1.5.0-beta.1 (Windows / Linux only; macOS
effectivelyv1.3.0-beta.1) - Type: Patch Beta — re-ships
v1.5.0-beta.1on every platform,
Telegram Markdown polish, CI/release-pipeline hardening.