Changelog
Track all updates, new features, and improvements to TensorPM. Stay informed about what's new in each release.
v1.10.0-beta.2
BetaLatestTensorPM v1.10.0-beta.2 (Beta)
June 13, 2026
Changelog - v1.10.0-beta.2
New Features
Microsoft 365 connector
TensorPM can now connect to Microsoft 365 work and school accounts through Microsoft Graph. This adds a first-class path for teams that keep their project communication in Outlook and Microsoft calendars.
What Changed:
- New Microsoft 365 connector in the connector setup flow
- Secure Microsoft sign-in with OAuth and MSAL
- Mail sync through Microsoft Graph, alongside the existing email connector
- Microsoft 365 connector status is visible in the project connector overview
- Admin-consent guidance is included for organizations with restrictive Microsoft tenant policies
- Tokens are stored locally on the device; TensorPM never stores a Microsoft password
User Benefit: Connect TensorPM to a Microsoft work account without IMAP setup. Project mail can flow into the same intake pipeline users already know, with a setup flow that matches enterprise Microsoft environments.
Calendar-aware TensorPM agent
The TensorPM agent can now work with Microsoft 365 calendars when calendar access is enabled for a project connector.
What Changed:
- New optional calendar capability for Microsoft 365 connectors
- Calendar access uses incremental Microsoft consent for calendar permissions
- The agent can inspect real calendar availability before suggesting dates
- The agent can prepare new calendar events or changes to existing events
- Calendar proposals appear directly in chat with event details and an "Approve & Apply" action
- TensorPM applies calendar changes only after explicit user approval
- Failed calendar updates can be retried from the proposal state
User Benefit: Ask the agent to find a meeting slot, prepare a project review, or adjust an event without manually checking the calendar first. TensorPM keeps the final write under user control, so calendar changes are never silently pushed.
Graph reply threading for mail
Mail replies created through the agent now use the Microsoft Graph reply path for Microsoft 365 messages.
What Changed:
- Reply drafts are associated with the original Microsoft 365 message
- Sent replies stay in the correct mail conversation where Graph metadata is available
- Mail and calendar agents share the same connector availability model, so tools appear only when the project actually has the required connector role
User Benefit: AI-assisted mail replies fit back into the original Outlook conversation instead of becoming detached follow-up messages.
Project creation from prompts and documents
The welcome/onboarding flow can now create a project from a description, attached documents, or both at the same time.
What Changed:
- Add documents directly in the first project creation screen
- Combine a written project description with PDFs, Word files, spreadsheets, or other supported documents
- See selected documents, token usage, and token-limit feedback before generating the project
- Remove or add more documents before starting generation
- Document-only project creation is supported when the files already contain enough context
- The project generation prompt now receives both the typed description and the extracted document context
User Benefit: Start from real project material instead of a blank form: upload a brief, proposal, protocol, or spreadsheet, add a short instruction if needed, and let TensorPM build the initial project context from both sources.
Independent panel and dashboard chats
The AI panel chat and dashboard chat now maintain separate active chat surfaces.
What Changed:
- Panel and dashboard chat selection are tracked independently
- Streaming state, cancellation, rate-limit banners, and background updates are associated with the correct chat instance
- Chat selection persists per project, so reopening a project restores the right conversation surface
- Background chat events no longer take over the visible chat unexpectedly
User Benefit: Use the dashboard assistant and the side panel assistant without losing context or having one surface interrupt the other.
Improvements
Connector architecture prepared for more integrations
- Connector handling now uses a registry-style abstraction for connector types, roles, credentials, intake sources, and availability checks
- IMAP email and Microsoft 365 mail share more of the same intake path
- Connector credentials are handled through a dedicated service
- Project-scoped connector roles make it clearer which tools are available for each project
User Benefit: Microsoft 365 lands as a real connector family, not a one-off integration. This keeps setup, status, intake, and future connector capabilities more consistent.
Calendar proposal safety
- Calendar create and update requests are stored as local proposals first
- The approval system blocks calendar writes unless the user approved the exact proposal
- Repeated apply attempts are guarded so a proposal is not applied twice
- Calendar Graph errors are shown on the proposal state
- The calendar agent cannot bypass the chat approval step
User Benefit: The agent can help with scheduling, but users stay in control of the real calendar.
Better chat attachment handling
- Chat file attachments received a visual and interaction refresh
- PDF attachments can be opened in a lightweight chat preview
- Attachment validation now recognizes additional document file types
- Chat input tests cover the updated attachment behavior
User Benefit: Files attached to AI conversations are easier to inspect and harder to send in an invalid state.
Window and chat state resilience
- Window state is saved and restored more deliberately
- Chat streaming events are routed by chat instance, reducing stale or cross-surface updates
- Cancelled streams clean up their callbacks more reliably
- Rate-limit messages stay attached to the chat instance that caused them
User Benefit: TensorPM feels steadier during long AI runs, window restores, and multi-chat workflows.
Bug Fixes
- Fixed cases where dashboard and panel chat state could interfere with each other during streaming, cancellation, or background updates
- Fixed Microsoft Graph token refresh handling so a Graph operation can retry once after a 401 with a fresh token
- Fixed connector availability checks so mail and calendar tools are hidden when the current project has no active matching connector
- Fixed calendar update handling so empty or whitespace-only updates do not produce invalid Graph patch requests
- Fixed calendar proposal failure handling so rejected Graph writes mark the proposal as failed with a visible error
- Fixed onboarding generation paths so document-only and prompt-plus-document project creation both reach the project generator correctly
Internal Quality
- Added unit coverage for Microsoft OAuth descriptors, token cache handling, OAuth service behavior, Graph request handling, and connector IPC
- Added tests for Microsoft 365 mail sync, ingest, connector configuration, and built-in connector registration
- Added calendar service, calendar agent, calendar executor, proposal storage, and calendar approval tests
- Added an integration test that verifies calendar proposals cannot reach Microsoft Graph before user approval
- Added onboarding and wizard tests for document-backed project creation
- Added chat state and chat selection storage tests for independent chat surfaces
- Added a developer smoke script for Microsoft sign-in flows
Notes
- This release supersedes v1.10.0-beta.1. The beta.1 tag was created, but the GitHub release workflow did not complete because the CI typecheck process ran out of memory on the runner.
- Microsoft 365 calendar support is opt-in per connector. Users must enable the calendar capability before the TensorPM agent can access calendar data.
- Organizations with strict Microsoft tenant policies may require an IT admin to grant admin consent before users can connect TensorPM.
- Calendar delete operations are not included in this release. The new calendar capability covers reading availability, creating events, and updating events.
- This release includes a local database migration for calendar event proposals.
- The release typecheck now runs with a larger Node heap to avoid CI runner out-of-memory crashes during the TypeScript check.
Release Info
- Version: 1.10.0-beta.2
- Release Date: 2026-06-13
- Previous Version: 1.10.0-beta.1
- Type: Patch (Beta) Release
v1.9.1-beta.1
BetaTensorPM v1.9.1-beta.1 (Beta)
June 12, 2026
Changelog - v1.9.1-beta.1
New Features
Images go straight to the AI
Pictures you attach in chat are now sent to the AI as actual images — not just a text description. Vision-capable models can read screenshots, photos of plans, whiteboards and documents directly.
What Changed:
- Images attached or pasted into the project chat are delivered natively to every vision-capable provider, including the built-in TensorPM AI
- Images attached to your messages are shown right in the conversation
- Email attachments and Telegram photos arriving through intake are stored with the message and reach the AI as real images too
- Models without vision keep working exactly as before — they receive the familiar text description as a fallback
User Benefit: Show the AI what you see: a marked-up site plan, an error screenshot or a photographed protocol — no retyping, no detail lost in translation.
Description column in task lists
The list view can now show each task's description as its own column.
What Changed:
- New optional "Description" column in the action list (enable it via the column settings)
- Descriptions are editable directly in the row — click to edit, with full rich-text support
- Filtering and sorting by description text is supported, so long lists can be narrowed by what tasks actually say
User Benefit: Scan and groom large task lists without opening every item — the context you need is right there in the list.
Select multiple projects at once
The project browser now supports multi-selection.
What Changed:
- Ctrl/Cmd-click adds or removes projects from the selection
- Archive, unarchive and delete now apply to the whole selection, with clear bulk wording in tooltips and confirmation dialogs
User Benefit: Cleaning up after a busy quarter takes seconds: select the finished projects and archive them in one go.
Improvements
More reliable project insights
- Daily project metrics now use your local calendar day consistently, so charts no longer shift entries across midnight in some timezones
- Metric history updates in place, keeping synced workspaces stable instead of rewriting rows on every recalculation
- Status-over-time lookups got a dedicated database index, making the insights view snappier on large projects
Visual polish
- Rich-text content (descriptions, notes, chat) renders with consistent styling across the app
- Chart tooltips in Project Insights are easier to read
Internal test coverage
- New integration tests for the demo intake seed against the real database schema
- New wire-format tests covering image delivery for every AI provider SDK
- End-to-end tests for the new description column and CSS scoping probes
Release Info
- Version: 1.9.1-beta.1
- Release Date: 2026-06-12
- Previous Version: 1.9.0-beta.1
- Type: Patch (Beta) Release
v1.9.0-beta.1
BetaTensorPM v1.9.0-beta.1 (Beta)
June 10, 2026
Changelog - v1.9.0-beta.1
New Features
Archive completed projects
Projects can now be archived from the project browser. An archived project stays fully readable — every action item, decision and document remains in place — but nothing can change it anymore.
What Changed:
- Archived projects become read-only end to end: the editor surfaces are dimmed, write attempts are blocked at the database level, and the AI assistant switches to a read-only chat mode instead of promising edits it cannot make
- Connected agents (Claude Code, Codex and friends) see archived projects marked as such; write tools are withheld and MCP write calls answer with a clear "project archived" response
- Email intake skips archived projects, so old projects no longer collect new inbox items
- Search includes the archive: the project browser auto-expands archived matches and global search labels archived results
- Unarchiving instantly restores full editing — the assistant picks up the active state right away
User Benefit: Finished work gets out of the way without losing anything: the full project history stays readable and searchable, protected from accidental edits.
Business tier support
This release teaches the desktop app the new Business plan — pricing per active project with unlimited members and AI credits pooled across the whole organization (contact sales to get set up).
What Changed:
- Business workspaces show a BUSINESS badge, and members draw from the organization's shared credit pool — a "Team Pool" chip on the usage badge shows when pooled billing is active
- The project browser shows a proactive "7 of 10 active projects" badge for Business accounts, so the plan limit is visible before it is reached
- If the active-project limit is hit, the server declines the new activation and the app handles it gracefully: the project is kept safe in a local workspace with all its content — nothing is ever deleted — and a toast explains what happened
- A new 10M credit top-up pack (Business only) is available alongside the existing packs
- Plan-aware polish throughout: upgrade notifications name the actual plan, the People view labels Business members correctly, and trial Business accounts show their badge
User Benefit: Teams can run TensorPM org-wide with one pooled credit budget and clear, non-destructive limit handling — your data is never at risk when a plan limit is reached.
Improvements
Quicker category creation in lists
Pressing Enter in the new-item input now confirms the highlighted category directly — no extra click needed.
Internal test coverage
Added unit tests for the propose-updates, reorder and timer executors that back the assistant's project edits.
Release Info
- Version: 1.9.0-beta.1
- Release Date: 2026-06-10
- Previous Version: 1.8.14-beta.1
- Type: Minor (Beta) Release
v1.8.14-beta.1
BetaTensorPM v1.8.14-beta.1 (Beta)
June 10, 2026
Changelog - v1.8.14-beta.1
Bug Fixes
Rejected file uploads no longer clog cloud sync
When the sync server turned down a file upload (for example because of a permission or validation problem), the app kept retrying the same upload in the background, which could hold up everything else waiting in the queue.
What Changed:
- The app now understands the server's answer and treats "this upload was rejected" differently from "the connection hiccuped"
- Rejected files are set aside instead of retried forever, so the rest of your changes keep syncing
- Together with a server-side fix, two collaborators can now attach an identical document without their uploads colliding
User Benefit: Cloud sync keeps flowing even when a single file can't be accepted — no more silently stuck upload queues.
Improvements
Cleaner filenames for generated documents
Files produced by the assistant's code execution (presentations, exports and other artifacts) now get short, human-readable names that match what you see on disk — no more timestamp tails.
Sturdier tool calls from connected agents
The MCP tool schemas were hardened and action item statuses sent by external agents (Claude Code, Codex and friends) are now normalized automatically. Slightly off-spec requests get coerced into the right shape instead of being rejected.
Smoother chat rendering
Streamed AI replies render their final lines more smoothly, and rapid project updates from agents are bundled so the project view refreshes once instead of flickering through every intermediate step.
Dependency updates
Updated third-party dependencies (including security bumps for shell-quote and concurrently).
Release Info
- Version: 1.8.14-beta.1
- Release Date: 2026-06-10
- Previous Version: 1.8.13-beta.1
- Type: Patch (Beta) Release
v1.8.13-beta.1
BetaTensorPM v1.8.13-beta.1 (Beta)
June 9, 2026
Changelog - v1.8.13-beta.1
Bug Fixes
Project kickoff greeting no longer appears twice
When you opened a freshly created project, the assistant's welcome message could briefly show up a second time while it was still being typed out, and then disappear.
What Changed:
- The chat now shows a single, smoothly streamed greeting — the saved copy is never rendered in the list while the same message is still being typed
- The greeting opens with a short "thinking" indicator before it types, just like a normal AI reply
User Benefit: The first thing you see in a new project is clean: one greeting, typed out once, with no flicker or duplicate line.
Improvements
Clearer Mistral model options
Updated the Mistral model limits and descriptions so the available models read more clearly when you pick a provider.
Release Info
- Version: 1.8.13-beta.1
- Release Date: 2026-06-09
- Previous Version: 1.8.12-beta.1
- Type: Patch (Beta) Release
v1.8.12-beta.1
BetaTensorPM v1.8.12-beta.1 (Beta)
June 9, 2026
Changelog - v1.8.12-beta.1
New Features
Create a project from a prompt and documents together
The new-project wizard can now seed a project from a written prompt and attached documents in one combined pass, instead of choosing one or the other.
What Changed:
- Added a creation-mode selector in the wizard so you can combine a prompt with uploaded documents as a single generation input
- Generation parameters now carry both the prompt text and the document set through to the project builder
- Tightened the relevance pre-check so combined inputs are scoped correctly
User Benefit: Kick off a new project with everything you already have, your own description plus the source documents, and let TensorPM distill them into a project graph in one step.
Improvements
Clearer Trail change history
The Trail now shows status indicators and renders action-item changes as a structured text diff instead of a flat dump.
What Changed:
- Added status indicators to Trail entries
- New structured renderer for action-item field changes with readable before/after text-diff formatting
User Benefit: It is easier to see at a glance what changed in your project and how, especially for action-item edits.
Faster, cheaper proxy AI in longer conversations
When you use TensorPM's hosted AI (Pro/Cloud proxy path), the stable project context is now reused across turns of the same chat via provider-side prompt caching.
What Changed:
- The desktop app forwards a stable per-session cache key to the proxy so the large system + project-graph prefix can be reused across turns
- Cached input is billed at a fraction of fresh input, so multi-turn chats cost fewer AI credits and respond faster
User Benefit: Back-and-forth conversations on the hosted AI feel snappier and consume fewer credits, because the project context no longer has to be re-read from scratch every turn.
Notes
- No database migration is included.
- This release command intentionally skips full Playwright E2E via
--skip-e2e, consistent with prior beta releases. TypeScript, ESLint, unit tests, and the real-AI release smoke test still run. - Internal: added real SQLite integration tests for the intake relevance-check service.
Release Info
- Version: 1.8.12-beta.1
- Previous Version: 1.8.11-beta.1
- Type: Patch (Beta) Release
v1.8.11-beta.1
BetaTensorPM v1.8.11-beta.1 (Beta)
June 8, 2026
Changelog - v1.8.11-beta.1
Bug Fixes
Browser agent returns useful chat results again
TensorPM's Browser Use flow now treats the agent's final answer as the primary
handoff again instead of requiring an extracted.json file.
What Changed:
- Removed the mandatory structured extraction contract from Browser Use prompts
- Kept artifact files optional and only for explicit evidence/debugging needs
- Prevented empty
about:blankbrowser runs from being reported as successful - Fixed the inactivity watchdog so heartbeat messages no longer mask a stalled browser agent
- Preserved readable page snapshots as a fallback when the browser reached a real web page but the final response is sparse
User Benefit: Browser Use should again behave like an interactive web agent: open the browser, navigate, and return the useful content directly in chat. If the browser opens but the agent never makes a second real step, TensorPM now surfaces that as a failure instead of appearing stuck.
Improvements
Real browser-agent release coverage
The Browser Use smoke tests now validate chat output rather than requiring an extraction file.
What Changed:
- Updated the real Browser Use smoke test to assert returned content
- Added a real Electron UI E2E spec for Browser Use that can be run manually
with
TENSORPM_E2E_REAL_BROWSER_AGENT=1 - Allows real Browser Use E2Es to keep direct-provider API keys in the Electron E2E environment
User Benefit: The release path can verify the real browser-agent behavior without forcing a file-extraction workflow that users do not need.
Notes
- This release command intentionally skips full Playwright E2E via
--skip-e2e. - No database migration is included.
Release Info
- Version: 1.8.11-beta.1
- Release Date: 2026-06-08
- Previous Version: 1.8.10-beta.1
- Type: Patch (Beta) Release
v1.8.10-beta.1
BetaTensorPM v1.8.10-beta.1 (Beta)
June 8, 2026
Changelog - v1.8.10-beta.1
Bug Fixes
More resilient background network handling
TensorPM now handles transient socket failures from background services more gracefully.
What Changed:
- IMAP email connector socket errors such as connection resets and timeouts are logged without crashing the app
- Benign network exceptions are filtered consistently in the main crash handler and crash recovery monitor
- Network timeouts no longer create misleading "TensorPM closed unexpectedly" recovery reports when the app can keep running
User Benefit: Temporary mail server, network, or socket interruptions should no longer take down the whole desktop app or show a false crash banner on the next launch.
Browser agent extraction fallback
The browser agent now has a stronger fallback path when a browser-use run
finishes without writing its structured extracted.json handoff file.
What Changed:
- Captures readable page content snapshots during browser sessions
- Uses the latest readable page snapshot as fallback extracted content
- Keeps page snapshot work in the background so browser-agent step updates are not blocked by content extraction
- Preserves the last meaningful page URL/title if the browser closes before the final result is emitted
- Avoids stopping the agent just because a browser-stopped event is observed during normal browser-use shutdown
User Benefit: Browser-agent results are more likely to include useful readable page content instead of only a generic final answer or artifact reference.
GitHub Copilot CLI detection improvements
The GitHub Copilot integration is more careful about Windows installations that only expose a VS Code shim.
What Changed:
- Improved Copilot CLI detection to avoid treating VS Code-only shim paths as a working standalone CLI
- Clarified diagnostics for the Windows shim-only case
- Added review fixes around detection and CI cache behavior
User Benefit: TensorPM is less likely to offer or invoke a Copilot CLI path that cannot run outside VS Code.
Improvements
Safer release validation
The release script now includes a non-skippable Node ESM import verification gate.
What Changed:
- Builds the backend like the production pipeline before release tagging
- Verifies compiled Node ESM imports so missing file extensions or broken module specifiers are caught before shipping
- Added a dedicated
--skip-ai-smokerelease option so maintainers can run TypeScript, lint, Node import verification, and unit/integration tests without running real-AI or Playwright E2E smoke tests
User Benefit: Release builds have stronger protection against packaged-app launch failures while still supporting faster patch releases when E2E and real-AI checks are intentionally skipped.
Lower-cost CI caching
Release-build CI cache behavior was adjusted to avoid dead cache work and reduce runner cost.
What Changed:
- Fixed ineffective cache usage in release build workflows
- Added a warm-build-caches workflow for reusable dependency/build caches
- Reduced unnecessary runner time in release-oriented CI jobs
User Benefit: No direct app behavior change, but release builds should be cheaper and more predictable for maintainers.
Dependency updates
Production and development dependencies were refreshed.
What Changed:
- Updated 7 production-minor dependencies
- Updated 21 development dependencies
- Refreshed package lockfiles, including E2E package metadata
User Benefit: TensorPM stays current with maintenance updates while preserving the existing application behavior.
Notes
- This release intentionally skips Playwright E2E and real-AI smoke tests during the release command. Unit and integration tests remain part of the release gate.
- No database migration is included.
Release Info
- Version: 1.8.10-beta.1
- Release Date: 2026-06-08
- Previous Version: 1.8.9-beta.3
- Type: Patch (Beta) Release
v1.8.9-beta.3
BetaTensorPM v1.8.9-beta.3 (Beta)
June 8, 2026
Changelog - v1.8.9-beta.3
Bug Fixes
App failed to start in v1.8.9-beta.2
v1.8.9-beta.2 crashed on launch with an "Uncaught Exception" module error and has been pulled from distribution.
What Changed:
- Fixed a missing file extension in an internal import that made the packaged
app fail to load (
ERR_MODULE_NOT_FOUND) - Fixed the build verification step so it reliably catches this class of error before a release ships
User Benefit: The app starts again. All changes from v1.8.9-beta.2 (GitHub Copilot fix and ~30% smaller download) are included in this release.
Notes
- If you installed v1.8.9-beta.2 and the app does not start, install this version over it — no data is affected.
Release Info
- Version: 1.8.9-beta.3
- Release Date: 2026-06-08
- Previous Version: 1.8.9-beta.2 (pulled)
- Type: Patch (Beta) Release
v1.8.8-beta.1
BetaTensorPM v1.8.8-beta.1 (Beta)
June 7, 2026
Changelog - v1.8.8-beta.1
New Features
Sent email search for the mail agent
TensorPM can now import and search sent emails from connected IMAP mailboxes, not just received inbox messages.
What Changed:
- Added local mailbox and direction metadata for email messages
- Sync now imports INBOX and the detected Sent mailbox when available
- The mail agent can search sent, received, or all messages with an explicit direction filter
- Sent messages are excluded from pending intake so outgoing mail does not show up as work to process
User Benefit: You can ask TensorPM about messages you sent, not only messages you received. That makes mail-based project context more complete and avoids confusing sent mail with incoming tasks.
Browser agent steering from the main chat
The main agent can now steer an active browser-agent session while it is running in its own parallel chat.
What Changed:
- Added the
steer_browser_agent_sessiontool for follow-up instructions - Browser-agent session availability now respects the active chat context
- Tool names and user-facing labels were updated for the new steering flow
User Benefit: You can keep one main conversation active while the browser agent researches in parallel, then redirect it when new constraints or follow-up questions come up.
Improvements
Richer browser-agent handoff output
Browser-agent runs now save structured extraction output and artifacts under a TensorPM-managed project folder.
What Changed:
- Browser runs write structured extraction data such as summaries, key points, links, tables, forms, and artifacts
- Completion reports include extracted content directly instead of only pointing at screenshots or saved files
- Local browser-agent run artifacts are stored under
.tensorpmand filtered out of normal project intake - Browser-agent artifact path generation now uses a shared helper across manual and agent-spawned sessions
User Benefit: Browser-agent results are easier to review and reuse because the important content is returned in the chat, while supporting files stay organized in the project folder.
Notes
- This is a beta release for users on the beta update channel.
- The full Playwright E2E suite is intentionally skipped for this release; type checks, lint, unit tests, and the release AI smoke test remain enabled.
Release Info
- Version: 1.8.8-beta.1
- Release Date: 2026-06-07
- Previous Version: 1.8.7-beta.1
- Type: Patch (Beta) Release
v1.8.7-beta.1
BetaTensorPM v1.8.7-beta.1 (Beta)
June 7, 2026
Changelog - v1.8.7-beta.1
🎉 New Features
Minimize the browser agent while it keeps working
The browser agent session card can now be minimized to a compact chip instead of being closed entirely. The agent keeps working in the background and you can bring the card back at any time.
What Changed:
- ✅ The close button on the browser agent card now minimizes it to a small pulsing chip while the session stays active
- ✅ Clicking the chip restores the full session card
- ✅ Stopping the agent remains an explicit action via the Stop button
- ✅ When a new browser agent session starts, the card automatically reappears
User Benefit: You can keep chatting or working in TensorPM while the browser agent researches in the background — without losing track of it or accidentally stopping it.
Project generation status survives restarts
TensorPM now tracks whether a project is still being generated by AI and recovers cleanly if the app closes mid-generation.
What Changed:
- ✅ Projects being generated show a clear generating state, persisted in the database
- ✅ If TensorPM is interrupted during generation, the project is marked as failed on the next start instead of appearing stuck forever
- ✅ Generation status is reported consistently across the desktop app, MCP, and A2A interfaces
User Benefit: No more half-generated projects that look like they are loading forever — you always see whether generation finished, failed, or is still running.
🐛 Bug Fixes
New projects keep their workspace assignment in settings
Project settings created during project creation now store the workspace they belong to, matching all other settings write paths.
Stuck browser agent sessions can no longer block a chat
If a browser agent process refuses to shut down, TensorPM now force-terminates it and marks the session as stopped instead of leaving the chat blocked while waiting for a result that would never arrive.
🏗️ Improvements
Smoother UI while a browser agent is active
Internal state handling was optimized so unrelated updates no longer cause the AI panel and dashboard chat to re-render while a browser agent session is shown.
📝 Notes
- This is a beta release and is delivered only to users on the beta update channel.
- The full Playwright E2E suite was skipped for this release; type checks, lint, unit tests, and the real-AI smoke test all passed.
📅 Release Info
- Version: 1.8.7-beta.1
- Release Date: 2026-06-07
- Previous Version: 1.8.6-beta.1
- Type: Patch (Beta) Release
v1.8.6-beta.1
BetaTensorPM v1.8.6-beta.1 (Beta)
June 7, 2026
Changelog - v1.8.6-beta.1
🐛 Bug Fixes
More accurate API key validation states
TensorPM now distinguishes between invalid API keys and keys that cannot be checked right now because the provider is unavailable or rate-limited.
What Changed:
- ✅ Brave Search rate limits are shown as a temporary validation state instead of marking the key invalid
- ✅ Unknown validation results are stored safely so old valid or invalid states do not leak into backend availability checks
- ✅ Replacing an API key clears stale validation timestamps before the new key is checked
User Benefit: Valid keys are less likely to be rejected just because a provider quota or network check failed at the wrong moment.
Smoother streaming chat updates
Streaming markdown output now keeps its rendered tail stable while TensorPM moves between answer, tool-call, and final-response phases.
What Changed:
- ✅ The streaming response no longer remounts during tool phase transitions
- ✅ Tail reveal behavior is covered by focused regression tests
- ✅ Tool-call progress can update without disrupting visible response text
User Benefit: AI answers feel steadier while TensorPM is using tools or preparing the final response.
🏗️ Improvements
Clearer update restart flow
The in-app update UI now gives better feedback while TensorPM prepares a restart after an update is installed.
What Changed:
- ✅ Restart actions are locked while an update restart is already in progress
- ✅ Update notifications show clearer progress and disabled states
- ✅ Browser-agent shutdown handling is more robust during app lifecycle changes
User Benefit: Updating TensorPM is less confusing and less likely to trigger duplicate restart actions.
📝 Notes
- This is a beta release and is delivered only to users on the beta update channel.
- This release includes full quality gates, including the full Playwright E2E release suite.
📅 Release Info
- Version: 1.8.6-beta.1
- Release Date: 2026-06-07
- Previous Version: 1.8.5-beta.1
- Type: Patch (Beta) Release
v1.8.5-beta.1
BetaTensorPM v1.8.5-beta.1 (Beta)
June 6, 2026
Changelog - v1.8.5-beta.1
🐛 Bug Fixes
Safer project chat switching
Project chat content is now kept scoped to the active project, including during fast project switches and background browser-agent sessions.
What Changed:
- ✅ Chat messages, streaming state, and browser-agent panels are hidden when they belong to a different project than the active one
- ✅ Recent chat lists in the dashboard now only show chats from the active project
- ✅ Returning from browser-agent chats no longer falls back to a stale chat from another project
User Benefit: Switching projects no longer risks showing chat content or active stream state from the previously selected project.
More reliable empty-project kickoff chat
The first AI kickoff message for a newly completed empty project is now persisted before the typing animation starts.
What Changed:
- ✅ Kickoff messages survive project switches during the typing animation
- ✅ The kickoff animation no longer creates a duplicate visible message
- ✅ Failed kickoff persistence cleans up the empty chat so TensorPM can retry later
User Benefit: The first project chat is less likely to get stuck as an empty conversation if you switch away while the greeting is still appearing.
📝 Notes
- This is a beta release and is delivered only to users on the beta update channel.
- Full Playwright E2E is intentionally skipped for this release per release instruction; type checking, linting, unit tests, and the release AI smoke test remain part of the release gate.
📅 Release Info
- Version: 1.8.5-beta.1
- Release Date: 2026-06-06
- Previous Version: 1.8.4-beta.2
- Type: Patch (Beta) Release
v1.8.4-beta.2
BetaTensorPM v1.8.4-beta.2 (Beta)
June 5, 2026
Changelog - v1.8.4-beta.2
🏗️ Improvements
Clearer Wizard feedback layout
Wizard AI feedback is now shown in a cleaner card layout that keeps questions, suggestions, and issues easier to scan.
What Changed:
- ✅ Feedback sections now use a consistent responsive grid
- ✅ Multi-item feedback no longer changes section width unexpectedly
- ✅ Reviewed Wizard steps keep their feedback when the field value did not actually change
User Benefit: Wizard review results stay easier to read and are less likely to disappear after a no-op save or duplicate field flush.
Better chat tool-call summaries
Chat history and streaming messages now show richer, localized descriptions for agent tool calls.
What Changed:
- ✅ Tool-call display labels were expanded for clearer user-facing summaries
- ✅ English and German translations were updated
- ✅ Unit coverage was extended for the tool display formatting
User Benefit: Agent activity in chat is easier to understand without opening technical details.
📝 Notes
- This is a beta release and is delivered only to users on the beta update channel.
- Full Playwright E2E is intentionally skipped for this release per release instruction; type checking, linting, unit tests, and the release AI smoke test remain part of the release gate.
📅 Release Info
- Version: 1.8.4-beta.2
- Release Date: 2026-06-05
- Previous Version: 1.8.4-beta.1
- Type: Patch (Beta) Release
v1.8.4-beta.1
BetaTensorPM v1.8.4-beta.1 (Beta)
June 5, 2026
Changelog - v1.8.4-beta.1
🐛 Bug Fixes
Wizard feedback now reviews the latest edits
Wizard AI feedback now uses the content currently visible in the Wizard, even when the field editor still has pending local changes.
What Changed:
- ✅ Rich-text Wizard fields flush pending edits before AI feedback starts
- ✅ Table fields commit pending cell edits before review, step navigation, or finish
- ✅ Empty edited values are respected instead of falling back to older saved content
- ✅ Existing feedback is cleared when a field changes, so stale reviews are not shown
User Benefit: When you edit a Wizard field and immediately run feedback, the review now reflects the new content instead of commenting on an older project state.
📝 Notes
- This is a beta release and is delivered only to users on the beta update channel.
- Full Playwright E2E was skipped for this patch release; type checking, linting, unit tests, and the release AI smoke test remain part of the release gate.
📅 Release Info
- Version: 1.8.4-beta.1
- Release Date: 2026-06-05
- Previous Version: 1.8.3-beta.1
- Type: Patch (Beta) Release
v1.8.3-beta.1
BetaTensorPM v1.8.3-beta.1 (Beta)
June 3, 2026
Changelog - v1.8.3-beta.1
🏗️ Improvements
See which context an AI answer used
Chat replies now show a small routing indicator that tells you whether the assistant loaded your full project or just a handful of specific fields for that answer. Hover it for the details: which fields were loaded, or — when the whole project was used — a short reason why (open-ended question, compact project, first message in the chat, selective context turned off, or a fallback when picking fields wasn't possible).
User Benefit: More transparency about what the AI "saw" before answering, which makes it easier to understand and trust each reply.
Credit badge explains how credits are calculated
The usage badge gained an info tooltip that spells out the credit formula directly in the app:
- ✅ Input tokens count 1×, cached input 0.2×, output tokens 4×
- ✅ A worked example (1,000 input + 500 output = 3,000 credits)
- ✅ A clearer "{used} of {total} used" label and a tidied-up progress bar
User Benefit: No more guessing why a request cost what it did — the math is right where you see your balance.
📝 Notes
- This is a beta release and is delivered only to users on the beta update channel.
- Internal test infrastructure was hardened (Vitest split into separate node/jsdom projects); no user-facing effect.
📅 Release Info
- Version: 1.8.3-beta.1
- Release Date: 2026-06-03
- Previous Version: 1.8.2-beta.1
- Type: Patch (Beta) Release
v1.8.2-beta.1
BetaTensorPM v1.8.2-beta.1 (Beta)
June 1, 2026
Changelog - v1.8.2-beta.1
🐛 Bug Fixes
AI replies no longer hide their answer inside a "thinking" block
Some AI responses could be replayed in a way that conditioned the model to wrap its
output in an internal <thinking> block — occasionally leaving the visible answer
empty or truncated. Reasoning is now reliably stripped from replayed history across
all AI backends (OpenAI, Anthropic, Gemini, and the built-in proxy), so you always
see the actual answer.
What Changed:
- ✅ Internal
<thinking>reasoning is removed from replayed chat history before it is sent back to the model - ✅ Messages that contained only reasoning no longer produce an empty AI turn
- ✅ Gemini streaming now repairs unbalanced reasoning tags and only shows an "interrupted" note when the response was actually interrupted
User Benefit: Cleaner, more reliable AI answers — no more replies that appear blank or collapse into a hidden reasoning block.
🏗️ Improvements
Reworked onboarding tutorial
The guided tutorial now matches the current layout: the bug-report and theme controls moved into the sidebar footer, and the tour gained dedicated "restart tutorial" and settings steps so you can find these actions where they actually live.
Sidebar remembers its compact state
The sidebar's compact/expanded preference is now persisted, so the app reopens the way you left it.
Smarter dashboard chat start
Opening a project dashboard now decides more intelligently between showing the daily welcome context and restoring your in-session chat, so you land where you expect.
UI polish
- ✅ Cleaner project summary cards (removed the accent border on the AI reasoning boxes)
- ✅ The chat stop button now correctly labels whether it stops a response or a context refresh
- ✅ Removed an unused header time element
📝 Notes
- This is a beta release and is delivered only to users on the beta update channel.
- Includes routine dependency updates (development and production-minor groups).
📅 Release Info
- Version: 1.8.2-beta.1
- Release Date: 2026-06-01
- Previous Version: 1.8.1-beta.1
- Type: Patch (Beta) Release
v1.8.1-beta.1
BetaTensorPM v1.8.1-beta.1 (Beta)
May 30, 2026
Changelog - v1.8.1-beta.1
This patch beta covers all changes since v1.8.0-beta.1. It improves connector
project assignment, intake exclusions, Distiller review fidelity, local agent
execution, demo data quality, and release-readiness fixes.
New Features
Multi-Project Email Connectors
- Email connectors now use
projectIdsinstead of a singleprojectId, so one mailbox can be assigned to multiple projects. - Existing email connectors with legacy
projectIddata are migrated in memory into the newprojectIdsshape when loaded. - Duplicate email connector detection now checks overlapping project assignments instead of blocking every connector with the same email address.
- Email connector sync, ingest, mail context, setup forms, connector overview, and connector status indicators all understand multi-project assignments.
- The email connector setup form now shows project checkboxes instead of a single project select.
- Connector overview details can display multiple assigned project names.
- A renderer helper normalizes connector project IDs before UI components use them.
Local Gmail Connector Bootstrap
- Added a development-only connector bootstrap service that can create or update a Gmail connector from environment variables.
- Gmail app passwords from the environment are imported into secure storage rather than persisted in connector JSON.
- Existing matching connectors can have their project assignments reconciled from the environment.
- Packaged builds explicitly skip this bootstrap path to avoid surprising end-user connector provisioning.
.env.exampledocuments the Gmail connector bootstrap variables.
Folder-Level Intake Exclusions
- File Explorer can now exclude an entire folder from distillation.
- Files nested under an excluded folder are hidden from pending distillation queries.
- Folder ignores support workspace/private ignore semantics through the same intake ignore path as files, emails, documents, and Telegram messages.
- Ignored folders show visual ignored-status badges in list and grid views.
- Including a file or folder now targets the deepest matching ignore entry, so nested folder ignores can be removed correctly.
- Intake ignored-item lists now display folder names and include folders under the file source filter.
Structured Distiller Review Cards
- Distiller can present newly proposed action items, people, and material items as structured entity cards instead of plain text.
- Entity cards show a title plus typed attributes such as status, due date, owner, and priority.
- Status attributes reuse the same visual status symbols as the action item list.
- Table-like fields, including requirements, technologies/methods, milestones, and risks, now render as compact green/red table diffs.
- Prose fields such as description, goal, scope, and dependencies now render as stacked text diffs instead of squeezed inline pills.
- Source review cards now show clearer source type badges for files, documents, emails, MCP updates, chat updates, and other sources.
- Image sources can render inline previews when the local source file is available.
- File-like sources can be opened from the Distiller review card when TensorPM can resolve the source path.
- Long source quotes collapse when the proposal already has visible structured content.
Brave Search Key Management
- Brave Search now participates in the shared API key initialization/checking flow.
BRAVE_SEARCH_API_KEYcan be imported into secure storage at startup.- The all-provider API key check now includes Brave.
- Environment logging now reports Mistral and Brave key presence without exposing secrets.
- Brave Search availability now depends on a validated stored Brave key, matching the secure-storage behavior used by other providers.
Construction Demo Metrics
- The construction SharePoint demo seed now assigns role groups based on seeded person roles.
- Demo projects now include AI+ project health and progress evaluations with status, percentage, trends, confidence, and reasoning.
- Seeded projects and action items now default to the AI+ view where appropriate.
- The demo seed can read
.envand.env.local, supporting the new local Gmail connector bootstrap workflow.
Improvements
Distiller Proposal Fidelity
- The Distiller tool schema now documents when to use
proposedEntity,proposedChanges,decisionPlan, and free text. proposedEntityis accepted only for action items, people, and material items.- Table fields are rejected when sent as generic entity cards and receive a clear
repair message telling the model to use cell-level
proposedChanges. - Structured entity proposals are flattened into readable legacy trail text when a plain-content fallback is needed.
- Distiller prompt guidance was tightened so table rows and cells stay in the review format users expect.
- The review carousel fingerprints structured proposals with
operationandproposedEntity, so changed cards reset stale approval decisions correctly. - Hidden approval payloads now preserve
operationandproposedEntitythrough the apply phase. - Backend history enrichment now merges missing proposal payload fields from the
original
present_distillatecall into partial hidden approval payloads. - Decision-plan proposals continue to preserve their write-plan details through the approval flow.
Distiller and Trail Rendering
- Structured Distiller proposal objects no longer fall back to raw JSON display.
- Action item diff cards strip rich-text HTML from description-like fields before showing changes.
- Action item assignment diffs render avatar stacks where possible.
- Action item deletion trail events now include deleted item summaries when the tool response provides them.
- People edit proposals highlight newly added labels and custom roles.
- Person fields with structured changes avoid duplicate full-person rendering.
- Empty placeholders such as
-,(), and[]are treated as missing values instead of being shown as removed content. - Distiller card action menus now size to localized labels and include the localized Skip label in English and German.
- Approved, appended, skipped, and rejected Distiller cards now use full-card state tinting rather than only a left border.
Intake and File Review Usability
- Pending file rows in the intake indicator now use a stable two-line layout with the file name above the date.
- Long file names now show ellipses correctly instead of being hard-cut.
- File hover tooltips show the full filename, date, size, and description.
- File icons are vertically centered against the updated two-line layout.
- Virtualized pending-file row estimates were adjusted to reduce resize flicker.
- Folder ignore helpers centralize path normalization and folder containment checks so File Explorer, status hooks, and store updates share the same semantics.
- Dashboard chat and welcome-context layout were adjusted to work with the new intake state.
Local Agent Execution
- Local Codex standard runs now use the current workspace-write sandbox flag and approval mode expected by the current Codex CLI.
- Full Codex runs still use the explicit bypass mode selected by the user.
- Headless Codex runs continue to capture the final answer through the last message output file.
- Interactive Codex argument generation is exposed for compatibility coverage.
- Local CLI smoke coverage now checks Codex and Claude Code command generation.
AI Tooling and Prompt Context
- Person updates now accept common field aliases such as role, roleGroups, email, phone, labels, and German phone labels.
- Person update arguments are normalized so scalar, array, role group, and influence values are coerced before persistence.
- Person references can be resolved by name or ID before updates are applied.
- Action item deletion responses now include deleted item summaries for better audit trail output.
- Tool name aliases are resolved before tool trace and trail tracking, so aliased tool calls are tracked under their canonical tool names.
- Project/user prompt context now resolves the current language from explicit UI settings, Electron locale, process locale, or Intl locale.
- German language preference now emits a stronger instruction to write all user-facing text in German.
- Project welcome context cache invalidation now compares against the resolved
language rather than the raw
systemsetting. - Connector/project context in prompts now reflects the new multi-project email connector model.
Runtime and Document Processing
- The renderer now displays a clear Electron-runtime-required screen when opened without the preload IPC API, instead of failing silently from a plain Vite URL.
- SheetJS document processing now binds Node filesystem APIs for ESM usage, which fixes spreadsheet reads that previously failed with "Cannot access file" for valid paths.
- MCP action item updates no longer re-apply the
[AI]creation prefix when editing an existing item.
Fixes
- Fixed folder-source matching for Windows-style backslash paths in intake pending-file queries.
- Fixed an escaped-character lint issue in an intake SQL comment.
- Fixed Distiller approvals that could show structured entity details in review but drop the structured payload before applying.
- Fixed schema/prompt drift where table fields could be proposed as generic entities even though they must be reviewed as row/cell diffs.
- Fixed connector status and sync blocking logic for email connectors assigned to multiple projects.
- Fixed connector repository duplicate checks so connectors with the same email are allowed when their project assignments do not overlap.
- Fixed project welcome context language handling for
systemlanguage mode. - Fixed Brave Search error guidance to point to validated settings or startup environment import.
Tests
Added or updated regression coverage for:
- Multi-project connector config normalization, duplicate detection, IPC, sync, ingest, mail service, connector overview, connector indicator, and email setup behavior.
- Connector environment bootstrap creation, credential import, reconciliation, incomplete environment handling, and packaged-build safety.
- Folder ignore visibility in pending email/file intake queries.
- Distiller prompt guidance, structured entity approval payload preservation,
partial hidden approval payload enrichment, decision-plan preservation, and
invalid table-field
proposedEntityrejection. - Distiller executor support for entity-only action item/person/material proposals.
- Distiller carousel behavior and Trail rendering for action item and people diffs.
- Brave API key initialization, availability, and executor behavior.
- Document processor ESM filesystem binding.
- Person executor argument normalization and alias handling.
- Tool name alias tracking.
- User language resolution from settings and locale fallbacks.
- Material panel and connector frontend behavior touched by the connector model change.
- Local Codex and Claude Code CLI compatibility.
Notes
- No explicit database migration is required; legacy email connector
projectIdvalues are normalized when connector configs are loaded. - This beta release intentionally skips the full Playwright E2E suite during release, per release request.
- Unit tests, typecheck, lint, and the release AI smoke test remain part of the release gate.
- The local release baseline is
v1.8.0-beta.1; no separatev1.8.0tag exists in this checkout.
Release Info
- Version: 1.8.1-beta.1
- Release Date: May 30, 2026
- Previous Version: 1.8.0-beta.1
- Type: Patch Beta
v1.8.0-beta.1
BetaTensorPM v1.8.0-beta.1 (Beta)
May 29, 2026
Changelog - v1.8.0-beta.1
This beta makes the project chat and Distiller noticeably smoother to work with, adds pop-out guidance cards with live synchronization, and lands a large internal reliability pass across the app's backend communication layer.
New Features
Distiller Messages in Chat
- The Distiller now speaks directly inside the project chat: its proposals and status appear as dedicated chat messages instead of only living in a separate panel.
- Distillate proposals are easier to review, with a refreshed carousel and clearer tool-call display showing exactly what the agent wants to change before you confirm.
- As always, nothing is applied automatically: you see the proposed updates and confirm them yourself.
Pop-Out Guidance Cards
- Guidance cards can now be opened in their own window, so you can keep a recommendation visible while you work elsewhere in the project.
- Card windows stay in sync with the main app in real time, so dismissing or acting on a card is reflected everywhere immediately.
Smarter Intake Indicator
- The intake indicator now shows clearer progress while documents and raw updates are being processed, including paginated results when there is a lot to review.
Improvements
Chat Experience
- Long conversations now restore your scroll position reliably when you switch between chats or come back to a project, so you no longer lose your place.
- Streaming agent responses render more smoothly and handle interruptions (canceling mid-answer) more gracefully.
- Stale messages left over from a previous chat session are now cleaned up, so the conversation you see always matches the project you are in.
- Guidance card styling and the in-chat Distiller styling were polished for better readability and a more consistent look.
Agent Approval Flow
- The MCP tool-approval flow continues to use a shared renderer store, making pending approvals more stable when parts of the UI mount and unmount.
Demo & Onboarding Safety
- The construction demo seeding script now confirms before running and validates the workspace folder name, preventing accidental overwrites when setting up demo projects.
Reliability (Under the Hood)
- A large internal pass standardized how the app's backend handlers report errors and name their communication channels. This reduces inconsistencies that could cause hard-to-trace failures and makes future fixes faster and safer to ship.
- JSON returned by AI tools is parsed more robustly, reducing rare cases where a malformed response could disrupt a chat or distillation.
- Priority handling for action items was made more consistent across the app.
- The bundled
tmpdependency was updated to pick up upstream fixes.
Fixes
- Switching projects or chats no longer leaves behind messages from the previous conversation.
- Canceling a streaming response now stops the in-flight work cleanly instead of only hiding it in the UI.
Notes
- No database migration is required.
- This is a beta release and will use the beta update channel.
Release Info
- Version: 1.8.0-beta.1
- Release Date: May 29, 2026
- Previous Version: 1.7.0-beta.1
- Type: Minor Beta
v1.7.0-beta.1
BetaTensorPM v1.7.0-beta.1 (Beta)
May 25, 2026
Changelog - v1.7.0-beta.1
This beta improves the project dashboard experience, adds faster access to the Distiller, and refines several agent and release reliability paths.
New Features
Dashboard Chat and Distiller
- The project dashboard now supports switching from the welcome view into the project chat without leaving the dashboard.
- A round Distiller shortcut is available in the dashboard controls and can also be reached from chat.
- Clicking the active Distiller shortcut returns the dashboard to the welcome view.
Project Welcome Context
- The dashboard welcome content now follows the app language setting more consistently.
- Stale welcome content from another language is ignored so German and English project views stay aligned.
Improvements
Dashboard Experience
- The welcome box no longer fades in with the previous top-to-bottom loading animation.
- Loading the dashboard welcome context no longer briefly shows cancellation or generation controls when cached content is being checked.
- The dashboard chat layout has tighter spacing, rounded controls, and clearer Distiller active-state styling.
Agent Approval Flow
- MCP tool approval requests now use a shared renderer store, reducing duplicate subscriptions and making pending approvals more stable across UI mounts.
- Resolved approval requests are kept out of the list even if an initial hydration response arrives late.
Release and Dependency Reliability
- Development and production dependencies were refreshed.
- Windows release signing and bundled Deno release metadata received additional reliability updates.
- File copy handling and tool progress tracking were improved.
Fixes
- German dashboard welcome content now stays German when TensorPM is set to German.
- The Distiller shortcut only uses the purple active color while the Distiller is actually active.
- Canceling welcome context generation now cancels the in-flight backend work instead of only hiding the frontend state.
Notes
- No database migration is required.
- This is a beta release and will use the beta update channel.
Release Info
- Version: 1.7.0-beta.1
- Release Date: May 25, 2026
- Previous Version: 1.6.0-beta.1
- Type: Minor Beta
v1.6.0-beta.1
BetaTensorPM v1.6.0-beta.1 (Beta)
May 22, 2026
Changelog - v1.6.0-beta.1
This beta expands TensorPM Skills with safer local execution controls, clearer catalog compatibility checks, and a refreshed Windows signing pipeline.
New Features
Safer Skill Capabilities
- Skills can now request scoped access to project files, such as reading meeting recordings and writing generated transcripts.
- Skills can declare exact local executable grants for approved helper binaries, instead of receiving broad system access.
- TensorPM now shows skill permission details before approval, including project file access, network access, and local executable usage.
Skill Catalog Compatibility
- Catalog entries can now declare supported desktop platforms.
- Catalog entries can require a minimum TensorPM version.
- Incompatible catalog skills are shown as unavailable before install, with a reason users can act on.
Improvements
Sandbox Guardrails
- Project-file write grants are bounded by a disk-growth limit to reduce the risk of runaway skill output.
- Skill run permissions are validated against exact, contained paths.
- Project roots are exposed to approved skills only when file permissions require them.
Windows Artifact Signing
- The release workflow now uses Microsoft Azure Artifact Signing.
- Windows signing and signature verification are temporarily non-blocking so macOS and Linux artifacts can still ship if Azure rejects a signing request.
- APPX publisher generation now supports the GitHub
APPX_PUBLISHERsecret, matching the current Azure certificate subject.
Fixes
- Catalog installs now reject unsupported platform or TensorPM-version combinations before downloading payloads.
- Skill approval UI now surfaces higher-risk permission grants more clearly.
Notes
- No database migration is required.
- Windows signing was smoke-tested successfully in GitHub Actions with the new TensorPM organization certificate.
Release Info
- Version: 1.6.0-beta.1
- Release Date: May 22, 2026
- Previous Version: 1.5.1-beta.2
- Type: Minor Beta
v1.5.1-beta.1
BetaTensorPM v1.5.1-beta.1 (Beta)
May 19, 2026
Changelog - 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. Migration
030-add-telegram-intakeadds 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. Stale
gemini-3-flash-previewandgemini-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-notarizationelectron-builder --mac zip --prepackagedstep on the GitHub-hostedmacos-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 theautoorbetaupdate 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
effectively
v1.3.0-beta.1) - Type: Patch Beta — re-ships
v1.5.0-beta.1on every platform, Telegram Markdown polish, CI/release-pipeline hardening.
v1.5.0-beta.1
BetaTensorPM v1.5.0-beta.1 (Beta)
May 19, 2026
Changelog - v1.5.0-beta.1
The first beta after v1.4.0-beta.2. The headline change is TensorPM's
second connector — Telegram — which graduates the connector framework
from "email-only, hardcoded" to a real multi-connector surface and lets
project participants interact with the in-app TensorPM agent over a chat
they already use every day.
This release also brings a proxy / BYOK Gemini upgrade (Google's freshly-GA Gemini 3.5 Flash replaces the preview Flash models and becomes the default), and a tidy-up of how credits are handled in the renderer.
🎉 New Features
Telegram Connector — Chat with Your Project Agent from Telegram
Project participants can now talk to the TensorPM agent from inside Telegram. The connector is the second full citizen of the connector framework (alongside Email) — same intake pipeline, same human-in-the-loop distillation, same per-link tool policies — without needing the desktop app open in front of you.
What users can do:
- Set up a bot once per workspace. A new connector type "Telegram" in
the Wizard takes a Telegram bot token (created via Telegram's
@BotFather), validates it againsthttps://api.telegram.org/getMe, stores it under the existing encrypted credential service, and starts a long-poll watcher on the desktop main process. - Invite contacts via deep link. Each project (or workspace, for
shared scope) can mint short, single-use Telegram invite codes with an
expiry. Sharing the generated
https://t.me/<bot>?start=<code>link drops the recipient straight into a chat session that's already bound to the right project. - Self-introduction handshake. On first contact, the bot greets the
user, asks how they'd like to be addressed (label + role), and stores
the link in
pending. The owner approves or revokes from the Telegram panel before anything reaches the project context. - Talk to the project agent in natural language. Approved links can send text, photos (with or without captions), documents, voice notes, and audio. Photos and documents land in the project intake just like email attachments.
- Per-link tool policies. Each approved contact gets a tool allowlist
configured by the owner. Defaults are conservative — only
propose_updates(intake) is enabled out of the box, but the owner can selectively enable:generateActionItems— create action itemsupdateActionItemFields— status / assignee / dates / effortrecord_decision— write decisions into the trailupdateProjectSections— edit description, goal, scope, dependenciesupdateTable— requirements, milestones, risks, methodsadd_person— add people to the projectweb_search— search the web while answering
- Slash commands inside Telegram:
/new— start a fresh chat without dragging in the prior context/help— re-show the help text/stop— revoke your own link with the bot
- DE / EN UI for the whole panel: invite list, link approval queue, active links, sync status, tool-permission editor.
Architecture (where to look in code):
- Migration
030-add-telegram-intakeadds three new local tables:telegram_invites— pending / redeemed / expired / cancelled invite codes, scoped private or workspacetelegram_links— approved relationships between a Telegram user and a project, with status (pending / approved / revoked) and the self-introduction texttelegram_messages_local— local message queue with dedupe keys,pending/processing/distilled/rejected/ignoredstatuses, and a claim/lease mechanism for the watcher
- All three tables are
excludeFromSync: true— Telegram identifiers and message content do not flow to PowerSync. The connector lives on the local-first side of the boundary and no cloud sync schema change is required to ship this release. - Services:
TelegramConnectorService— long-poll watcher with reconnect back-off (5 s base, 5 min cap), bot validation, invite/link CRUD, HELP //new//stophandling.TelegramChatBridgeService— routes incoming Telegram messages into the chat service with the right project/link context, builds attachment manifests, owns the prompt envelope.TelegramIPCHandler+telegramSlice/telegramThunks— full typed IPC namespace (window.api.telegram.*) plus Redux store bindings.
- Agent prompts: new
TelegramAgentPromptGenerator(parallel to the Email/Distiller generators) carries link metadata, tool policy, and the self-introduction into the system prompt without bleeding it into other chats. - Intake & tool surface:
- New
ProposeUpdatesExecutorandpropose_updatestool type — the locked, always-on tool that books raw Telegram messages intoproject_updatesfor human review through the existing Distiller. ConnectorCredentialServiceextended to handle bot-token secrets alongside IMAP/SMTP passwords.
- New
Security & guardrails:
- Bot token never leaves the desktop main process. Renderer only sees a
hasCredentialsflag. - Long-poll uses
allowed_updates: ['message']; no inline-queries, no channel posts, no member-update side channels. - Invite codes are short-lived, single-use, and bound to either a
specific project (
scope: 'private') or workspace (scope: 'workspace'). - Per-link tool policies are server-side enforced at the chat service layer — toggling a switch in the UI changes which executors the agent is even allowed to call for that contact.
- Messages from
pendingandrevokedlinks never reach the agent. The agent's only response to a non-approved chat is the introduction prompt or a hard "you're not currently linked" message. IntakeRepositoryandIntakeServicegainedtelegram-aware queries so the Distiller IntakeIndicator surfaces Telegram messages with the right icon, source label, and routing.
Connector Framework: From "Email Only" to Multi-Connector
Telegram is the first real second connector, so the framework itself was unfrozen.
ConnectorTypewidened from'email'to'email' | 'telegram'.ConnectorConfigis now a discriminated union ofEmailConnectorConfig+TelegramConnectorConfig. Email config keeps its existing shape; Telegram config carries bot identity (botUsername,botUserId,botFirstName), the credential flag, the per-bot tool allowlist, and sync status.ConnectorConfigRepositorylearned how to round-trip both shapes, including the JSON-encoded tool allowlist.- The Wizard's
ConnectorOverviewPanelandConnectorListnow render both types side-by-side, with a dedicatedTelegramConnectorPanel(962 lines of UI + a 590-line stylesheet) for setup, invite generation, link approval, and tool policy. EmailConnectorSetupFormgot matching visibility-label/hint copy updates so the two connectors feel like siblings, not stepchildren.IntakeIndicatorwas upgraded with cross-connector grouping so a project that's receiving both email and Telegram traffic shows a unified pending queue.
The internal contract (ConnectorCredentialService, intake routing,
distillation hand-off) is now general enough that the next connector
(PlanRadar / Capmo / Procore / Slack / Calendar) can be added without
another framework rewrite.
Default Model: Gemini 3.5 Flash (GA)
Google's Gemini 3.5 Flash (GA on 2026-05-19) replaces the preview-channel Flash models everywhere in the app.
- BYOK Google users get
gemini-3.5-flashas the new default model for both the primary and the "small" / utility slot. - Proxy backend advertises the same model as the default chat model (the Vertex AI proxy backend was already shipping Gemini 3.5 Flash — this aligns the BYOK side with proxy reality).
gemini-3-flash-previewandgemini-3.1-flash-lite-previeware removed fromPROVIDER_CONFIGS.google.modelsandMODEL_CAPABILITIES.gemini-3.1-pro-previewstays as the heavy option.MODEL_LIMITSupdated:gemini-3.5-flash= 1,048,576 input / 65,535 output tokens. Vision capability flag set on the new model.GeminiProvidernow decides whether to attachthinkingConfigbased on the new model identifier (3.5 Flash has the thinking knob; older preview models did not). The proxy provider follows the same logic.ClaudeProviderships a small refactor along the way to centralise thinking-config decisions across providers.
Migration safety net: AppSettingsRepository.getSettings() now
validates each stored preferred_models[provider] against the current
PROVIDER_CONFIGS[provider].models list and falls back to the
provider's default if the stored model is no longer supported. So an
existing user whose preferences were last persisted as
gemini-3-flash-preview gets seamlessly upgraded to
gemini-3.5-flash on next launch — no orphaned setting, no broken
provider call.
Credit Summary Lives in Redux
The proxy credit balance (used by the AI Panel header pill and the
credit budget views) moved from a per-component useProxyCredits hook
that spoke directly to IPC, into a proper Redux slice.
- New
creditsSlicewithsummary,isLoading,error,lastFetchedAt,activeRequestId. - New
creditsThunks.fetchCreditSummarywith request-id de-duping so rapid renders don't pile up parallel API calls. - New
creditsListenermiddleware: whenever a chat stream finishes (chatSlice.streamFinishedaction), the credit summary refreshes automatically — the header pill catches up without users having to open Settings. useProxyCreditsis now a thin selector over the slice, with login gating: if the user isn't authenticated to the proxy, no fetch is scheduled. Eliminates the "credit-summary 401 storm on logout" issue observed in dev logs.subscriptionThunkstriggers a credit refresh after subscription state changes so the UI stays consistent post-checkout.
Telegram Messages in Chat UI
When the project ChatPanel surfaces a chat thread that originated from Telegram, individual messages now render with their Telegram identity:
- Avatar + display name pulled from the
TelegramLink(label,telegram_first_name,telegram_username). - A small "Telegram" source indicator on the message row.
- The streaming-message component handles the case where the inbound half of the turn is a Telegram message and the outbound half is the agent reply, without confusing the alignment / avatar logic.
🏗️ Improvements
Iterative Chat Prompt Generator
The shared iterativeChatPromptGenerator was extended to be
language-aware in the same way baseChatPromptGenerator already was, and
to handle tool-call lists more deterministically. New unit coverage in
iterativeChatPromptGenerator.test.ts (87 lines) locks down both behaviours.
Renderer State Wiring
rootReducernow mounts the newcreditsandtelegramslices.chatSliceexposes astreamFinishedaction that other listeners (credits, intake) can subscribe to without poking into chat internals.intakeSlice/intakeThunkslearned thetelegramsource so the Distiller indicator badge counts Telegram messages alongside email.
Backend Cleanups Bundled with the Feature
ChatRepositorygot minor query additions for cross-connector chat retrieval.IntakeServiceandchatServicewere refactored to accept a generic external-source descriptor instead of the email-shaped one — required by Telegram but useful for any future connector.coreToolModuleregisters the newpropose_updatestool centrally, rather than each connector having to wire it up.- All five primary AI providers (
ChatGPTProvider,ClaudeProvider,GeminiProvider,LocalAIProvider,MistralProvider, plus the proxyproxyProvider) had a small symmetric tidy of how they consume thinking-config / tool-result shape, removing the last Gemini-preview-only conditionals.
🐛 Bug Fixes
- Credit pill spam on logout / startup.
useProxyCreditsno longer fetches before the user is authenticated to the proxy, and the slice swallows the inevitable startup 401s instead of surfacing them as a toast. - Interrupt rendering for Telegram bridged messages.
ChatMessagecorrectly suppresses the stop-marker when a Telegram-originated user message follows an interrupted assistant message (mirrors the fix shipped for normal chat in beta.2). - Stale model preferences. Users who had
gemini-3-flash-previewsaved as a preference no longer hit a "model not available" error on startup — the AppSettingsRepository validator now silently substitutes the new default. - ConnectorIndicator label drift. Visibility labels and hints in the Email connector setup form were briefly worded inconsistently with the Telegram panel; they now share copy.
- IntakeIndicator pending-queue sort. Pending-queue sort now
reliably orders mixed-source items (email + Telegram) by received-at,
with deterministic tiebreaks. New
pendingQueueSort.test.ts.
📦 Database & Sync
New Migration: 030-add-telegram-intake
Adds three local-only tables:
| Table | Purpose |
|---|---|
telegram_invites |
Single-use invite codes (private / workspace scope) |
telegram_links |
Telegram user ↔ project relationships and tool policy |
telegram_messages_local |
Inbound message queue with dedupe + claim/lease state |
All three are excludeFromSync: true. Telegram identifiers, message
text, and attachments are local-only by design — they never reach
the PowerSync cloud. The desktop binary is the source of truth for this
connector.
No Cloud Sync Migration Required
Unlike v1.4.0-beta.2 (which needed add-material-items.sql applied to
the sync backend before shipping the desktop release), this release
does not require a TensorPMSync schema change. The release pipeline
order simplifies:
- Ship the desktop binary.
- (No sync side-step.)
If a future Telegram-via-cloud-workspace feature is built, the schema
will need to be opened up at that point — but as of 1.5.0-beta.1 the
intent is to keep Telegram identifiers and message contents on-device.
📝 Notes
Bot Setup Prerequisite
Telegram setup requires the user to create a bot via Telegram's official
@BotFather flow and paste the bot token into TensorPM. There is no
TensorPM-owned default bot — every workspace runs its own. This avoids:
- Centralised token compromise blast radius
- TensorPM seeing third-party message content
- Telegram rate-limit cross-talk between unrelated workspaces
The Wizard surface includes a one-click open of the @BotFather
conversation and a short setup checklist in both DE and EN.
Tool Policy Defaults
Out of the box, the only tool a freshly-approved Telegram contact can
trigger is propose_updates — i.e. drop their message into the project
intake queue for the owner to review through the Distiller. Everything
else (action items, decisions, project edits, web search) requires the
owner to explicitly opt that contact in. This matches the "distillation
is always human-in-the-loop" guardrail; a Telegram message is treated
as a raw signal, not as direct authority to mutate the project graph.
MCP / Skills Surface Unchanged
This release does not change the Skill manifest format, the Skill
catalog endpoint, the trust model, the sandbox limits, or the
describe_skill / execute_code tools. It also does not change the
MCP write tools (decisions, action items, project, workspace, billing,
feedback, etc.). External MCP and A2A clients require no migration.
Provider Vision-Loop Scope
Still limited to Anthropic and Gemini wire formats, as in v1.4.0-beta.2.
The newly-default gemini-3.5-flash continues to fully support the
render → inline-image → vision-loop pattern, including via proxy.
Known Follow-Ups
Not blockers for this beta:
- Voice/audio Telegram messages are received and queued, but the out-of-the-box Distiller pipeline still treats them primarily as "raw text via caption / transcription stub". Richer voice-note handling (Whisper-style transcription) is the next obvious win.
- The connector framework now has email + Telegram. The next abstraction step — pulling the bot watcher loop and the ConnectorIndicator routing into a fully type-parameterised base — remains open.
/newresets conversational context but does not clear pending proposed updates from earlier in the thread; those still go through normal Distiller review.
📅 Release Info
- Version: 1.5.0-beta.1
- Release Date: May 19, 2026
- Previous Version: 1.4.0-beta.2
- Type: Beta Minor Release (new Telegram connector, default Gemini
model bump to GA
gemini-3.5-flash, credits-Redux refactor)
v1.4.0-beta.2
BetaTensorPM v1.4.0-beta.2 (Beta)
May 18, 2026
Changelog - v1.4.0-beta.2
This is a broad product beta, not a narrow patch. It bundles everything that
landed between v1.3.0-beta.1 and today — including the work that had been
drafted for a separate v1.3.0-beta.2 language-hint release and the larger
feature set that briefly carried a v1.4.0-beta.1 working version.
🎉 New Features
Project Skills with Sandboxed Code Execution
TensorPM Skills are now a first-class, project-local extension surface. Skills package instructions, scripts, and templates that the in-app TensorPM agent can invoke against the current project, sandboxed in a deny-by-default Deno runtime.
What users can do now:
- Ask the agent in chat to compute over project data ("how much effort is still open in this sprint?") — the agent writes a small TypeScript snippet that runs locally in an isolated Deno subprocess.
- Install skills from an online catalog via the File Explorer context menu ("Install skill from catalog…"). The new Skill Catalog modal shows a clear permission diff before anything is installed.
- See generated artifacts (PowerPoint, Word, Excel, PDF, images) inline on
chat messages and reuse them from
<project>/exports/<skill-id>/. - See trust badges in the File Explorer when a skill needs re-approval — e.g. after an update that asks for new permissions.
Architecture:
- Lives under
src/backend/services/codeExecution/:ExecutionService,DenoEngine,SkillRegistry,SchemaValidator,PermissionMapper,TpmContextSnapshot,ArtifactStore. - Each run spawns a fresh Deno subprocess (no shared REPL state). The Deno
binary is fetched per platform/arch (
scripts/fetch-deno.mjs) and code-signed on macOS during packaging (scripts/afterPack-sign-deno.cjs). - Skills use Anthropic-compatible
SKILL.mdYAML frontmatter (name,description,version,runtime.engine,permissions,limits) plus the TensorPMscripts:extension where each entry is its own callable operation. - A single chat tool,
execute_code, accepts either ad-hoccodeor askillId + scriptId + inputs. A companiondescribe_skillexposes installed skills for discovery. - A new
@tensorpm/sdk(src/shared/tpm-sdk/) is auto-generated for the sandbox; skills read a filtered project snapshot fromTPM_IN_PATHand write outputs/artifacts toTPM_OUT_PATH.
Security model (deny-by-default):
- No
--allow-run,--allow-ffi,--allow-sys,--allow-import.--allow-envis restricted toTPM_RUN_DIR/TPM_IN_PATH/TPM_OUT_PATH. - Default policy for ad-hoc code: read-only on
tpmInDir, write-only ontpmOutDir, no network, 30 s CPU cap, 256 MB memory cap. - Two-tier trust:
- Install-time trust: clicking "Install" in the catalog auto-approves the skill, bound to a sha256 hash of the whole skill folder plus a permissions fingerprint. Manually copied skills are never auto-trusted.
- Runtime trust: every
execute_codere-checks the hash + fingerprint and rejects with "skill is not approved" on mismatch.
- Chrome-style update behavior: when an update widens permissions, the new version is installed but trust is revoked — the user must explicitly re-approve before the new version can run.
- Symlinks are rejected at every walk (
assertSkillFolderStructure,SkillApprovalStore.walkSync). - The skill manifest
namemust match the folder name, so catalog uninstalls can't hit the wrong folder. - Catalog payloads: HTTPS-only, sha256 must match the catalog entry, hard
50 MiB cap (enforced during streaming against Content-Length spoofing),
extraction via system
tarwith no path-escape. - Output disk cap:
DenoEngine.measureDirBytespollsout/every 100 ms and SIGKILLs onSANDBOX_OUTPUT_CAPS.totalArtifactBytes(~50 MiB).
Catalog & install flow:
CatalogServicefetchescatalog.jsonfromraw.githubusercontent.com/Neo552/TensorPM-DesktopSkills/main/(overridable viaTPM_REMOTE_CATALOG_URL).- Layered source: remote → on-disk cache
(
<userData>/skills-catalog.cache.json). ETag-basedIf-None-Matchconditional fetch; 6-hour cache freshness window; 4 s network timeout for fast boot; offline empty-state when both fail. - Phase-1 refactor removed the legacy SkillSeeder. There are no built-in
default skills — all skills must be installed from the catalog or placed
manually in
<project>/skills/.
Vendored sandbox libraries:
Four MIT-licensed npm libraries ship as offline ESM bundles in
resources/sandbox-libs/, built via scripts/build-sandbox-libs.mjs. Deno
imports them through an import map as @tensorpm/<id>:
| Import | Library | Purpose |
|---|---|---|
@tensorpm/pptx |
PptxGenJS | .pptx presentations |
@tensorpm/docx |
docx (dolanmiu) | .docx with tables/lists/styles |
@tensorpm/pdf |
pdf-lib | Create / modify PDFs |
@tensorpm/xlsx |
write-excel-file | .xlsx workbooks with formulas |
The chat agent's system prompt advertises these via
formatSandboxLibsPromptSection(), so the agent knows without a tool call
what's available offline.
Post-review hardening:
.git/directories are now rejected inside skill payloads (previously silently skipped, which would have let hostile skills hide files outside the trust hash).- Manifest
nameis validated against the catalog skill ID before the atomic rename into<project>/skills/<id>/, so a mismatched catalog entry can't overwrite an existing installation. describe_skillis now gated on trust state. Untrusted skills no longer leak theirinstructions(SKILL.md body) into agent context — closing a prompt-injection path where catalog content could reach the agent before user approval.
Material Management
Material is now a first-class project area for procurement-heavy work (construction, renovation). A new "Material" tab lives in the Budget area alongside the existing Budget tab.
What users see:
- Create / edit / delete materials, including sub-materials of arbitrary
depth (expand/collapse via chevron,
parentItemId). - Columns: Name, Quantity, Status, NeededBy, EstimatedCost, Supplier — with drag-and-drop reordering, hide/show, and resizing.
- Full-text search and filters by Status (multi-select), Supplier, NeededBy range, EstimatedCost range.
- Sort ascending/descending on all columns.
- Inline edit drafts per item, quantity mode
fixedvs.dynamic(e.g.participants * 1.1). - Full DE/EN i18n under
material.*.
Data model (src/types/Material.ts):
Roughly 25 fields per MaterialItem:
- Identity:
id,projectId,parentItemId - Description:
name,description,productCode,manufacturer,revision - Quantity:
quantity,unit,quantityMode,quantityFormula,wasteFactor - Status (10 values, CHECK-constrained):
planned,quoteRequested,quoted,approved,ordered,partiallyDelivered,delivered,installed,blocked,cancelled - Dates:
neededBy,deliveryDate,leadTimeDays,lastVerifiedAt - Cost:
estimatedCost/actualCostasMonetaryValuein project storage currency - Other:
supplier,location,categoryId,notes,sourceFileId
Hierarchy is FK-validated, including cycle detection
(assertNoParentCycle in MaterialRepository).
Redux & IPC:
- Slice:
materialSlice.ts, state shape{ [projectId]: ProjectMaterialContainer }. - Thunks:
fetchProjectMaterialContainer,saveMaterialItem,removeMaterialItem. - IPC:
material.loadProjectContainer,material.saveItem,material.deleteItemvia the new typedwindow.api.materialnamespace.
AI integration:
Material has its own subagent (MaterialAgentService) running a 6-iteration
tool loop with dedicated prompts. Tool definitions:
- Top-level:
material_agent(the main chat agent delegates to it) - Internal:
material_list_items,material_save_item,material_delete_item - Result submit:
submit_material_agent_result(outcomes:answer,materials_updated,needs_clarification,no_material_data)
changeMode gates writes: direct (chat command, may mutate) vs. propose
(connector/PDF extraction, returns proposedChanges only) — matching the
"distillation is always human-in-the-loop" guardrail.
Distiller path: the Distiller's Phase-2 (apply after user approval) calls
the atomic material_save_item / material_delete_item tools directly,
bypassing the subagent loop. Stale-id writes now hard-error instead of
silently creating a new row, so the Distiller can't "finalize" a write that
never happened.
Schema & sync:
- Migration
027-add-material-items,028-add-material-item-hierarchy,029-add-material-settings. material_itemsis added to the unified schema withsoftDelete: true,synced_atclear-on-update trigger, and fulle2e.sensitiveFieldscoverage — every content field is client-side encrypted in E2E-encrypted cloud workspaces.
Distiller v2 Review Flow
The Distiller pipeline is significantly stronger and now runs as a five-phase HITL loop instead of three phases.
The new flow per signal:
- Phase 0 — Pre-check (new): a cheap small-model call decides whether
the signal is project-relevant at all. For projects above the
safeBudgetTokensthreshold, the pre-check can also returnfieldHintsso Phase 1 only loads the relevant project sections. - Phase 1 — Present: the Distiller analyses the signal against the
project graph and emits one
present_distillateper affected field. The user clicks Approve / Append / Reject / Skip on each carousel card. Forfield: "decisions", Append is disabled because decisions flow through dedicated write tools. - Phase 2 — Apply: only the write tools for approved fields are offered to the model. The system enriches the batch decision with the original proposal payload and strips proposal payloads for rejected/skipped cards, so nothing can be applied that the user didn't approve.
- Phase 3 — Verify/Complete:
mark_update_completeis now position- guarded — it must be the last tool call of the turn, and is blocked if a prior tool call failed. - Final closing turn (new): a tools-free mini-turn writes a short user- facing summary, without re-shipping the full project graph.
Routing improvements:
safeBudgetFractionis wired into actual routing — safe budget is now the active model's context window × the configured fraction, instead of a fixed 160k threshold.- Per-update review-context isolation: proposal cards from one raw update no longer leak into the next update's context.
- Deterministic no-signal handling: if no signal or batch decision is pending, the system responds with a fixed message and skips the LLM entirely.
parseDistillerBatchDecisionis now set-based: a field with conflicting approve/reject actions is treated as skipped, and the chat appends a system note asking the user to re-present a consolidated proposal.mark_update_completeafter a failure now triggers a repair turn instead of being silently accepted.- Material items are stripped from normal-chat context (they must go
through
material_agent), but remain available to Distiller Phase 2.
Prompt caching:
The full Distiller prompt was restructured into static prelude + phase
block + memory + signal + project graph, with stable promptCacheKeys
(distiller:<projectId>:<chatInstanceId> vs.
chat:<projectId>:<chatInstanceId>) and an Anthropic-specific
SYSTEM_PROMPT_PRELUDE_END_SENTINEL marking the cache boundary. Memory-field
notes are sorted to stop insertion-order drift from invalidating the cache.
Decisions in Distiller and Trail
Decisions become a first-class Distillate field type.
- New
field: "decisions"inContextChangeProposalFieldType,DISTILLER_TOOLS.field.enum, and the field label map. - New
DecisionFieldRendererfor Trail rendering: each plan entry maps to one of five tool actions (record,supersede,withdraw,link,unlink) with its own badge (ScrollText, GitBranch, XCircle, Link2, Link2Off), and shows the status transition (Active → Superseded/Active → Withdrawn) and meta table. - Phase-2 write tools for decisions are unlocked via
getDistillerPhase2WriteToolswhen the user approves thedecisionsfield; the actual write goes throughrecord_decision,supersede_decision,withdraw_decision,link_decision,unlink_decision. trackableWriteToolsinchatServicenow includes the five decision tools, so decision writes land indistiller_tool_traceand produce Trail events.
MCP shape: the old list_decisions lookup tool is removed. Decisions
are project context; agents read them through get_project and write via
the explicit decision tools. External MCP clients that relied on
list_decisions need to migrate.
AI Panel: Docking & History
The AI panel turns from a right-only sidebar into a four-position dock.
- Dock positions: left, right, top, bottom. Each dock remembers its own
size (horizontal: 300–800 px; vertical: 180–700 px), persisted to
localStorage(aiPanelPosition,aiPanelSizes), with a migration path from the oldaiPanelWidthkey. - Layout state survives project switches: position, sizes, and the
maximized flag are intentionally preserved on
RESET_STATE. - Side rail for top/bottom docks: when the panel is horizontal, header controls move to a vertical strip on the right and the top header is hidden.
- History drawer: horizontal docks expose a History button that opens recent chats in a slide-out aside; vertical docks keep the existing inline welcome-screen history.
- Distiller button (Droplets icon) is now in the panel header. Toggles in/out of distiller mode and shows a pending-count badge.
- Fullbleed layout: top/bottom docks share the 760 px centered chat look with the maximized mode.
Image Processing and Tool Call Persistence
- Images in the Distiller:
DistillerServicenow detects image files and runsImageAnalyzerwith OCR + object detection, feeding description, extracted text, and detected elements into the distillation context. Screenshots and photos now contribute meaningfully to raw updates. - Tool calls survive cancel/reload: previously, cancelling a chat
stream lost any tool-call results that had already executed. Tool calls
are now persisted alongside the partial AI message, with frontend merge
logic in
chatSlicethat re-attaches tool pills and interrupt markers when messages are reloaded from the DB. - Cleaner interrupt UI: the stop-marker is suppressed when a user message already follows the interrupted assistant message.
Render, HTML, Inline Image, and Vision Tooling
A new render_html tool lets the agent emit HTML and have it rendered into
PNG (preview) or PDF (saved under <project>/exports/render/) inside an
isolated offscreen BrowserWindow with a strict network allowlist and
sandbox: true / contextIsolation: true.
- Pool max 2, 30 s timeout, 5 MB HTML / 4 MB PNG / 25 MB PDF caps.
- Vision loop: for providers that accept tool-result images (Anthropic, Gemini), the rendered PNG is returned inline so the model can iterate on what it produced. For providers that don't (OpenAI / Mistral / Proxy / Ollama), the agent gets the saved path and a hint instead.
- Capability map: new
MODEL_CAPABILITIESinaiConfig.tsandproviderSupportsToolResultImage()whitelist make the vision-loop decision explicit per provider and per model.
Today's vision-loop reality:
| Provider | Vision-capable models | Inline tool-result image | Effect in render loop |
|---|---|---|---|
| Anthropic (BYOK) | Opus 4.7/4.6, Sonnet 4.6, Haiku 4.5 | Yes | Full vision loop |
| Google Gemini | 3.x family | Yes | Full vision loop |
| OpenAI (BYOK) | GPT-5.5/Pro, GPT-5.4 family | No (tool-role text-only) | Text-only fallback |
| Mistral | Medium/Small | No | Text-only fallback |
| Kimi K2.6 (Cloudflare proxy) | yes per map | No (OpenAI-compatible) | Text-only fallback |
| Ollama / Local | default false | No | Text-only fallback |
Proxy/Free/Cloud/Pro users therefore do not yet get the vision iteration in the render loop. That stays open until the proxy transport carries multimodal tool results.
Preferred Language Hint
When you've selected German as your TensorPM UI language, the AI now picks up that preference and replies in German for short or ambiguous messages without overriding messages that have a clear language signal.
| Your message | Reply |
|---|---|
| "Hallo, wie geht's?" | German (clear German) |
| "Hi, how do I do X?" | English (clear English wins) |
| "hi" / "ok" / "thanks" | German (preference breaks the tie) |
How it works: a new getLanguageDirective() helper adds the line
[User] Preferred language: German to chat and action-item system prompts
only when language === 'de'. The existing "respond in the user's language"
core instruction continues to drive clear-signal cases. English-UI users
see no change. No DB or sync changes.
🏗️ Improvements
Architecture: Typed IPC Domain Namespaces
The renderer/preload boundary was fully migrated from stringly-typed
window.electron.ipcRenderer.invoke('channel-string', …) to typed domain
namespaces under window.api.<namespace>.<method>().
- 138/138 invoke channels, 40/40 event channels, and 2/2 send channels migrated. 6365 tests green.
- Three new type-registry files under
src/types/electron/:domainChannels.ts,domainService.ts,eventChannels.ts. - Implementation in
src/preload/services/domainService.tsbuilds the namespaces over a genericinvoke<TChannel>helper that pairs args ↔ result on the type level. Event handlers track wrappers in a WeakMap sooff*finds the same listener — fixing a recurring subscription leak. - 23 namespaces:
project,actionItems,people,settings,ai,projectSettings,files,shell,wizard,proxyAuth,updates,theme,app,apiKeys,trail,distiller,budget,material,browserUse,githubCopilot,localCodingAgents,testRecorder,e2e,events. - Backend cleanup:
ApiKeyIPCHandlercollapses 10 per-provider channels (save-openai-api-key,get-openai-api-key, …) into two genericapi-key:get/api-key:savechannels. Brave-specific channels removed (no remaining consumers). - CI gate:
scripts/check-renderer-ipc-boundaries.tsscanssrc/frontend,e2e/, andtests/unit/frontend/for rawipcRenderer.invoke(, removedwindow.electron.<namespace>access, and dynamic API-key channel templates. Reintroduction now fails CI.
This does not affect skills or the @tensorpm/sdk — those run in the Deno
sandbox and communicate via JSON files, not IPC.
Shared Guidance Type Foundations
The four guidance types (Context, Strategic, Coverage, Execution)
moved from src/backend/services/ai/Guidance/guidanceTypes.ts to
src/shared/types/guidance.ts. Renderer code can now consume them with
type safety without backend-path hacks. The same commit also relocates
aiConfig, markdownConverter, aiTextFormatter, extracts
rootReducer.ts from store.ts, and pulls chat-context filters,
history-sanitizer, and token-accounting helpers out of chatService.ts
into chat/.
Proxy 5xx Error Handling
Two related fixes in the Kimi-K2.6-via-Cloudflare-Workers pipeline:
ProxyHttpClient: forstatusCode >= 500, the error message preference now flips toerrorData.message || errorData.error || …, because the proxy puts the human-readable text inmessageand only the class name ("ServerError") inerror.proxyErrorHandler: fallback detection now also matcheserrorMessage === 'ServerError'anderrorMessage.startsWith('Cloudflare Workers AI server error').
All three paths now reliably yield the same toast: "The AI service is temporarily unavailable. Please try again in a few moments."
Documentation Screenshot E2E Coverage
A new Playwright suite (e2e/specs/docs-screenshots.spec.ts) writes
screenshots directly into the sibling TensorPMWebsite/public/images/docs
folder. Onboarding, project-context dashboard, action items, timeline,
guidance, people, budget, files, trail, and AI integration settings are
all auto-shot from a seeded createDocumentationProject() with realistic
categories, dates, budget buckets, expenses, context-change proposals, and
a seeded decision row. Docs images can no longer drift behind the UI.
Coverage Split Layout Margin
The Guidance Coverage split layout was edge-to-edge on desktop and mobile. Margins are now symmetric: 1.5 rem desktop, 1 rem mobile (top margin unchanged).
Prettier Formatting Sweep
A repository-wide prettier reformat (138 files) was committed separately to keep the IPC refactor's review surface smaller. Touches SKILL.md, older changelogs, MCP tool definitions, several Trail/Budget/Wizard components, and the four vendored sandbox bundles. No behavior change.
🐛 Bug Fixes
Distiller
- Stale review cards no longer leak into later apply/final turns.
- Skipped updates now get a fresh revisit memory.
- Final-completion wording no longer frames normal completion as a repair-only step.
- Material write tools are no longer offered by Phase 2 only to be rejected at execution. They're also no longer visible in normal chat.
- Normal chat no longer reintroduces raw material items after a write refresh.
- Distiller routing now uses dynamic model-aware safe budgets instead of a fixed token threshold.
- Pre-check token/credit logging uses the actual provider/model metadata.
safeBudgetFractionis now actually used.- Unsupported Mistral prompt-cache-key expectations removed.
- First-token timeout raised centrally for longer Distiller/Claude turns.
- ActionItems proposals with unresolvable rows now fall back to
originalChangesso the review card remains visible.
Materials
- Partial material updates no longer wipe existing metadata (category, waste factor, revision, source file, verification timestamp).
- Empty-string material IDs during approved creates now generate a UUID instead of failing as a missing ID.
- Material context filtering is preserved across project refreshes.
- New regression tests cover direct material tool execution and metadata preservation.
Skills
- Install-time trust boundaries tightened (
.git/rejected; manifest name validated against catalog ID before atomic rename). - Runtime trust gating extended to
describe_skill(no leaking of untrusted SKILL.md bodies into agent context). - Vendored sandbox bundles reformatted for consistent diff output.
- Additional skill lifecycle, catalog, installer, trust, and artifact- export coverage.
UI
- Coverage split layout margin fix (desktop and mobile).
- AI panel docking layout and history behavior reworked.
- Material Panel styling.
- Distiller decision/proposal styling.
- Trail rendering for decisions.
- File Explorer skill badge/status rendering.
Tests & Infrastructure
ActionItemExecutortest suite split from one mega-file into focused files:delete,generate,reEvaluate,split,updateFields.- New
ActionItemExecutor.updateFields.test.ts(24 tests, 1208 lines) covers the previously-untested update path with focus on assignee resolution (ambiguity, email/name case-folding, unknown agent providers), dependency validation, effort range, budget sanitization. - New provider-cache integration tests for ChatGPT, Claude, and Gemini
verify that
enableSystemPromptCaching/promptCacheKeyactually produce cache hits. - New helper for single-column migration tests.
- Render local-AI E2Es, Distiller full-coverage E2Es, documentation screenshot E2Es, and material UI/store coverage all added.
📦 Dependency Updates
Production:
@anthropic-ai/sdk0.92.0 → 0.96.0 (BYOK Anthropic)openai6.35.0 → 6.38.0 (BYOK OpenAI)@google/genai1.51.0 → 1.52.0@github/copilot1.0.36 → 1.0.45@powersync/common1.52.0 → 1.53.1,@powersync/node0.18.4 → 0.18.6better-sqlite312.9.0 → 12.10.0i18next26.0.10 → 26.2.0,react-i18next17.0.7 → 17.0.8mermaid11.14.0 → 11.15.0zod4.4.2 → 4.4.3
Security (isolated single-PR bumps, GHSA-style):
protobufjs7.5.5 → 7.5.8@protobufjs/utf81.1.0 → 1.1.1
Development (all SemVer minor/patch, no breaking):
- Electron 40.9.3 → 40.10.0
- TipTap suite (12 packages) 3.22.5 → 3.23.4
- Vitest /
@vitest/coverage-v84.1.5 → 4.1.6, fast-check 4.7.0 → 4.8.0 @playwright/test1.59.1 → 1.60.0@reduxjs/toolkit2.11.2 → 2.12.0,react-redux9.2.0 → 9.3.0- React / React DOM 19.2.5 → 19.2.6
@typescript-eslint8.59.1 → 8.59.3,tsx4.21.0 → 4.22.1,dompurify3.4.2 → 3.4.4, various@types/nodepatches
📝 Notes
Material Sync Deployment
material_items is a new sync table. Cloud-workspace deployments must
apply the corresponding add-material-items.sql on the
TensorPMSync/server/scripts/ side before this desktop release ships,
otherwise PowerSync upload queues will stack 500s with
relation "material_items" does not exist.
Deployment order:
- Apply material sync SQL on the sync backend.
- Compact / verify the sync deployment.
- Verify staging sync behavior.
- Ship the desktop binary.
MCP Decision API
External MCP clients should no longer rely on the removed list_decisions
tool. Decisions are part of project context — read via get_project, write
via the explicit decision tools (record_decision, supersede_decision,
withdraw_decision, link_decision, unlink_decision).
Skill Catalog: No Bundled Defaults
The Phase-1 catalog refactor removed the legacy SkillSeeder. There are no
built-in skills shipped with the desktop binary. All skills must be
installed from the remote catalog (or placed manually in
<project>/skills/).
Provider Vision-Loop Scope
Inline-image tool-result transport is currently limited to Anthropic and Gemini wire formats. OpenAI, Mistral, Kimi-via-proxy, and local Ollama models get the rendered file saved to disk plus a hint, not the actual image. The proxy multimodal path is on the roadmap.
E2E Policy for This Release
The release E2E gate now runs Playwright in fail-fast mode
(--max-failures=1). If one E2E test fails, the release process stops
immediately instead of continuing through the rest of the suite.
Known Follow-Up Areas
Not blockers, but useful:
- Cache discipline improvements for provider tool/system prompt caching.
- Further extraction of
chatService.streamInstanceMessage. - Additional unit coverage around Distiller routing branches.
- Consolidation of duplicated material status constants.
- MCP API version/changelog note for external clients affected by the decision tool changes.
📅 Release Info
- Version: 1.4.0-beta.2
- Release Date: May 18, 2026
- Previous Version: 1.3.0-beta.1
- Type: Beta Minor Release (bundles drafted
1.3.0-beta.2language work and the larger feature set that briefly carried a1.4.0-beta.1working version)
v1.4.0-beta.1
BetaTensorPM v1.4.0-beta.1 (Beta)
May 18, 2026
Changelog - v1.4.0-beta.1
This beta release contains all TensorPM desktop changes since the last existing release tag, v1.3.0-beta.1.
There is no separate local tag for v1.3.0-beta.2; the already committed
CHANGELOG-v1.3.0-beta.2.md work is therefore included in this cumulative
minor beta.
Release Scope
- Previous release tag:
v1.3.0-beta.1 - New release version:
1.4.0-beta.1 - Release type: beta minor
- Release date: May 18, 2026
- Playwright E2E policy for this release: already run manually before release;
intentionally skipped by the release script via
--skip-e2e
Highlights
What Users Will Notice
This beta is a broad product release, not a narrow patch. The biggest visible changes are:
- A new project Skills system for reusable, project-local automations.
- Sandboxed code execution for approved skills and AI-generated artifacts.
- A new Material Panel for construction/procurement style project work.
- Material-aware AI behavior that keeps normal chat lightweight while still allowing approved Distiller applies to update material items precisely.
- A much stronger Distiller v2 review workflow for raw updates.
- Decision proposals in Distiller and richer decision rendering in the Trail.
- AI panel docking/history improvements.
- Render/HTML/vision foundations for generated visual artifacts.
- Preferred-language hints so German UI users get more consistently German AI output.
- Better documentation screenshot coverage for onboarding and project views.
The internal platform also changed substantially: typed IPC/domain APIs, shared guidance types, provider context-window routing, cache/logging fixes, and broader test coverage are all part of this beta.
Project Skills and Sandboxed Code Execution
TensorPM now has a project-local Skills system backed by sandboxed Deno execution. Skills can package instructions, scripts, templates, and reusable automation in a controlled project context.
Implemented capabilities:
- Project-local skill discovery and registry support.
- Skill manifests with schema validation.
- Skill permission modeling and approval storage.
- Runtime trust checks before skill execution.
- Deno-based sandbox engine for controlled script execution.
- Code-execution AI tool module and executor.
- Artifact storage for generated files.
- Project export support for skill-generated artifacts.
- TPM SDK runtime/source generation for skills.
- Vendored sandbox libraries for document, PDF, presentation, and spreadsheet generation.
- Smoke scripts for code execution and sandbox library verification.
- Windows packaging support for Deno fetching/signing verification.
- File Explorer skill badges and validation state.
- Skill Catalog modal for install/update flows.
- Skill installation with checksum verification and bundled template support.
- Default effort-estimator skill template.
- Documentation for the code-execution and skills architecture.
Hardening added after review:
- Tighter install-time trust validation.
- Tighter runtime trust boundaries.
- Additional permission and manifest tests.
- Skill lifecycle E2E coverage.
- Catalog service tests.
- Skill installer regression tests.
- Skill trust and artifact export regression tests.
- Sandbox library metadata tests.
Render, HTML, Inline Image, and Vision Tooling
This release adds the foundation for AI-generated render artifacts and vision-assisted render review loops.
Implemented capabilities:
- Render tool definitions and render tool module.
RenderExecutorfor HTML/PDF-like render workflows.RenderServicebackend support.- CSP meta injection for rendered HTML.
- PDF margin parsing helpers.
- Inline image extraction from AI/tool content.
- Chat message conversion support for inline image handling.
- Model vision capability checks.
- Render asset directories for fonts, icons, and libraries.
- Local-AI render E2E scenarios:
- text-only HTML render
- render HTML tool flow
- render HTML plus vision loop
Test coverage added:
- Render executor unit tests.
- Inline image extraction tests.
- Chat message converter inline image tests.
- CSP injection tests.
- PDF margin parsing tests.
- Model vision support tests.
Material Management Foundation
Material management is now a first-class project area for procurement-heavy projects such as construction and renovation.
Implemented backend/data capabilities:
- New material item database schema and repository.
- Migrations:
027-add-material-items028-add-material-item-hierarchy029-add-material-settings
- Material hierarchy support.
- Material settings validation.
- Material repository CRUD support.
- Material loading through project database services.
- Material fields in
Projectand database types. - Material AI context builder.
- Material agent service.
- Material prompt generator.
- Material tool types and definitions.
- Material IPC handler.
- Material domain preload API.
- Material sync-facing metadata.
Implemented frontend capabilities:
- Budget-area Material Panel.
- Material Redux slice and thunks.
- Material item list controls.
- Material status and hierarchy UI support.
- Material-specific i18n strings in English and German.
- Material panel tests.
- Material slice tests.
- Material list Playwright coverage.
Implemented AI behavior:
- Normal chat routes material changes through
material_agent. - Distiller approved apply phases can use atomic material write tools.
- Atomic material tools are hidden from normal chat tool definitions.
- Normal chat context filtering strips raw material arrays so large material projects do not flood regular chat turns.
Material bug fixes included before release:
material_save_itemandmaterial_delete_itemare now executable when Distiller Phase 2 offers them.material_save_itempartial updates no longer wipe existing metadata such as category, waste factor, revision, source file, or verification timestamp.- Creates with an empty string
idnow generate a UUID instead of failing as a missing ID. - Post-write normal chat refreshes keep material context boundaries intact.
Distiller v2 Review Flow
The Distiller was significantly expanded into a stronger human-in-the-loop review and apply pipeline for raw updates.
Implemented flow changes:
- Pre-check phase for clearly irrelevant signals and large-project field selection.
- Hard reject remains supported for clearly irrelevant pre-check results.
- Provider-aware dynamic safe-budget routing instead of a fixed 160k token threshold.
- Safe budget now uses active provider/model context window multiplied by the configured safe-budget fraction.
- The
safeBudgetFractionsetting is now wired into actual routing behavior. - Per-update review context isolation.
- Deterministic append handling.
- Deterministic skip/reject/apply completion handling.
- Combined final review and completion gate.
- Final gate naming changed away from "repair" wording for normal completion.
- Fresh revisit memory for skipped updates.
- Stale proposal/presentation history is stripped before apply turns.
- Distiller history helpers now avoid leaking unrelated proposal cards into the next raw update's context.
- Detailed Markdown audit reports for Distiller E2E review.
- A German explanatory document for the Distiller flow.
Implemented Distiller tool and prompt changes:
- New pre-check prompt generator.
- Pre-check tool schema and parser.
- Distiller pre-check routing types.
- Project metadata summary support for routing.
- Small-model provider selection helper.
- Distiller prompt updates for multi-phase review/apply/finalization.
- Distiller tool definitions for decision proposals.
- Distiller field configuration updates.
- Strict Distiller tool definition tests.
Implemented Distiller E2E coverage:
- Full coverage local-AI scenario.
- Full coverage non-local scenario.
- Distiller decision proposal scenario.
- No-signal deterministic scenario.
- Distiller v2 scenario suite with realistic project seeds.
- Shared Distiller helper utilities.
- Distiller v2 README for scenario intent and review workflow.
Important behavior decisions:
- Raw updates are treated as isolated review units; proposal history from one raw update should not become implicit context for another.
- Append is deterministic; the AI does not need to implement append mechanics.
- If a turn only skips/appends/rejects, the flow still reaches the final review and completion gate where appropriate, without framing normal completion as a repair.
- Prompt-injection wrapping for raw signal content was intentionally not added for this local release path.
Decision Lifecycle Support
Decisions are now better represented in Distiller review and project context.
Implemented capabilities:
- Distiller decision proposals.
- Decision review card rendering.
- Trail rendering for decision fields.
- Decision field renderer.
- Distiller executor support for decision-related fields.
- Decision Trail workflow regression coverage.
- Decision field UI tests.
- Decision proposal E2E scenario.
API/MCP shape changes:
- Decision writes remain explicit write operations.
- The old
list_decisionsMCP tool path was removed; decisions are expected to be read through project context and changed through explicit decision tools. - Decision MCP/tool references were adjusted accordingly.
Typed IPC and Domain API Modernization
The renderer/preload boundary was reorganized toward typed domain namespaces.
Implemented changes:
- New domain channel definitions.
- New domain service types.
- Preload domain service implementation.
- Typed
window.apidirection for domain areas. - IPC boundary check script.
- Related updates across frontend services, thunks, settings, file explorer, sync, project settings, AI panel, and subscription flows.
Benefits:
- Clearer renderer/backend API surfaces.
- Less reliance on a large flat preload API.
- Better foundation for future IPC boundary checks.
Guidance and Shared Type Foundations
Guidance-related types and utilities were moved toward shared modules so both backend and frontend code can use the same definitions.
Implemented changes:
- Shared guidance type definitions for context, strategic, coverage, and execution guidance.
- Shared AI configuration module.
- Shared markdown converter placement.
- Backend sync preference module placement.
- Chat context filters, history sanitizer, and token accounting helpers.
- AI text formatter relocation.
- Store/root reducer type cleanup.
- Guidance validator/generator import updates.
AI Panel Docking and History
The AI panel received a larger docking/history update.
Implemented changes:
- Docked and detached AI panel state handling.
- AI panel context improvements.
- AI panel styling updates.
- Recent chat/history handling improvements.
- Chat panel integration updates.
- English/German i18n entries for the updated panel behavior.
- AI panel docking Playwright coverage.
- AI panel context unit tests.
Preferred Language Hinting
When the user selects German UI, AI prompts now receive a preferred-language hint.
Implemented changes:
- User-context directive helper for language preference.
- Base chat prompt language hinting.
- Base action-item prompt language hinting.
Image Processing and Tool Call Persistence
Chat and Distiller state handling now better preserves richer message content and interrupted tool-call state.
Implemented changes:
- Enhanced image processing in chat message handling.
- Tool call persistence improvements in chat state.
- Distiller service updates for persisted tool calls.
- Chat cancellation/stream interruption coverage.
- Chat slice tests for the persisted state shape.
Proxy and Error Handling
Proxy error behavior was tightened for server-side failures.
Implemented changes:
- Improved 5xx handling in
ProxyErrorHandler. - Improved 5xx handling in
ProxyHttpClient. - Regression coverage around proxy HTTP error handling.
Documentation Screenshot E2E Coverage
New documentation screenshot scenarios were added for product documentation and visual regression material.
Implemented coverage:
- Onboarding screenshot flow.
- Project view screenshot flow.
- Updated project data in screenshot scenarios.
- Decision handling in documentation screenshot scenarios.
Dependency and Toolchain Updates
This release includes multiple dependency maintenance batches.
Included updates:
- Development dependency group updates across root and E2E packages.
- Production-minor dependency group updates.
protobufjssecurity/patch bump.@protobufjs/utf8patch bump.mermaidbump from11.14.0to11.15.0.@github/copilotbump from1.0.36to1.0.45.- Addition of render/sandbox/build dependencies for new functionality.
- ESLint configuration changes needed by the refactors.
- TypeScript config updates for the sandbox/render additions.
Detailed Fixes
Distiller
- Fixed stale review cards leaking into later apply/final turns.
- Fixed skipped updates missing fresh revisit memory.
- Fixed final completion wording so normal final review is not described as a repair-only step.
- Fixed material write tools being offered by Phase 2 but rejected by execution validation.
- Fixed material write tools being visible in normal chat.
- Fixed normal chat reintroducing raw material items after a write refresh.
- Fixed Distiller routing to use dynamic model-aware safe budgets.
- Fixed pre-check token/credit logging to use actual provider/model metadata.
- Fixed
safeBudgetFractionbeing configured but unused. - Fixed unsupported Mistral prompt-cache-key expectations.
- Added central first-token timeout increase for longer Distiller/Claude turns.
Materials
- Fixed partial material updates causing metadata loss.
- Fixed empty-string material IDs during approved creates.
- Fixed material context filtering after project refresh.
- Added regression tests for direct material tool execution and metadata preservation.
Skills
- Fixed review issues around install-time trust boundaries.
- Fixed review issues around runtime trust checks.
- Reformatted vendored sandbox bundles consistently.
- Strengthened skill validation and lifecycle test coverage.
UI and Styling
- Fixed coverage split layout margin on desktop and mobile.
- Updated AI panel docking layout and history behavior.
- Added Material Panel styling.
- Added Distiller decision/proposal styling.
- Updated Trail rendering for decisions.
- Updated File Explorer skill badge/status rendering.
Tests and Infrastructure
- Split and expanded large ActionItemExecutor tests.
- Added focused
executeUpdateFieldsregression coverage. - Added helper for single-column migration tests.
- Reworked several legacy tests to match newer sync, IPC, and store behavior.
- Added render local-AI E2Es.
- Added Distiller full-coverage E2Es.
- Added documentation screenshot E2Es.
- Added material UI and store coverage.
- Added provider cache integration tests for ChatGPT, Claude, and Gemini.
Compatibility and Deployment Notes
Material Sync Deployment
The material database migrations introduce new material tables/settings. For any desktop build that relies on synced material data, deploy the corresponding server-side sync SQL first.
Required order:
- Apply the material sync SQL on the sync backend.
- Compact/verify sync deployment.
- Verify staging sync behavior.
- Ship the desktop binary.
MCP Decision API Shape
External MCP clients should no longer rely on the removed list_decisions
tool. Decisions are part of project context and should be changed through
explicit decision tools.
E2E Policy
Full Playwright E2E was intentionally not repeated inside the release command for this beta because the local Distiller and related E2E runs had already been performed and reviewed manually before release preparation.
Known Follow-Up Areas
These are not blockers for this beta but remain useful follow-up work:
- Cache discipline improvements for provider tool/system prompt caching.
- Further extraction of
chatService.streamInstanceMessage. - Additional unit coverage around Distiller routing branches.
- Consolidation of duplicated material status constants.
- MCP API version/changelog note for external clients affected by decision tool changes.
v1.3.0-beta.1
BetaTensorPM v1.3.0-beta.1 (Beta)
May 10, 2026
Changelog - v1.3.0-beta.1
New Features
German Language Support
TensorPM now ships with full German localization. Switch the UI language any time from Settings → General → Language.
What Changed:
- New
Languagesetting with three options: System (default), English, Deutsch. - Every user-facing surface is translated: Wizard, Onboarding, Sidebar, Action List, Trail, Budget, People, Timeline, Guidance, Settings Drawer, Modals, Notifications, Distiller, AI Activity History, indicators and tooltips.
- Live language switching: change the language and the UI re-translates immediately — no restart required.
- Locale-aware date and number formatting throughout charts, status indicators, usage badges, and tooltips.
- Backend status messages (e.g., "Analyzing your prompt…") are translated at the IPC boundary.
User Benefit:
Native German speakers get a UI that reads naturally in German — proper compound nouns, consistent du-form throughout, and tone-matched copy in onboarding, settings, and AI feedback. English-only users see no change; the system-language default detects your OS preference automatically.
Onboarding Polish
The first-run experience got a visual and conversational refresh.
What Changed:
- Welcome screen now plays a looping welcome video for a smoother first impression.
- Chat-style name handling: greetings adapt to whether you provided a name or skipped it.
User Benefit:
A warmer, more personal start when you open TensorPM for the first time.
Improvements
Connector Spelling
The German UI now uses the consistent spelling Konnector / Konnectoren across all surfaces (sidebar tooltips, wizard steps, indicator status, Tutorial, error messages). Previously a mix of "Connectoren", "Connectors", and "Konnektor" appeared in different places.
Translation Quality Pass
Several German strings were rewritten to read more naturally instead of being literal English translations:
- Wizard hero:
Schluss mit Verwalten. Anfangen zu machen.→Weniger verwalten. Mehr machen. - Onboarding tagline:
Mach jedes Projekt möglich.→Realisiere jedes Projekt. - Project creation card:
Aus Prompt→Mit Prompt(semantic: prompt is an instruction, not a source) - Document card: now plural
Aus Dokumentento match real-world multi-document upload - Reset password flow: removed awkward compounds like "Zurücksetz-Code" →
Code zum Zurücksetzen, "Passwort-Zurücksetzung fehlgeschlagen" →Passwort konnte nicht zurückgesetzt werden - Generic verbs: unified all AI creation strings on
erstellen(create) instead of the noisy mix ofgenerieren/erzeugen/erstellen - Du-form consistency: stragglers in People and Distiller views now use
du-form instead ofSie-form
Brand-Term Consistency
Workspace, Connector, Guidance are kept as brand terms in German rather than being translated — consistent with how Account, Login, Update are already used.
Notes
- New database migration:
026-add-language.ts(addslanguagecolumn toapp_settings, default'system'). Backwards-compatible, runs automatically on first launch. JWT_SECRETand other shared secrets are unchanged. No sync-protocol changes.- AI prompts in the backend (
promptGenerator/) remain in English — the AI works better with English instructions. Only user-facing UI is translated.
Release Info
- Version: 1.3.0-beta.1
- Release Date: May 10, 2026
- Previous Version: 1.2.1-beta.2
- Type: Minor Beta Release
v1.2.1-beta.2
BetaTensorPM v1.2.1-beta.2 (Beta)
May 8, 2026
Changelog - v1.2.1-beta.2
Improvements
GPT-5.5 Support
OpenAI's newly released GPT-5.5 family is now selectable in the AI provider settings.
What Changed:
- Added
GPT-5.5andGPT-5.5 Proto the OpenAI model list (1.05M context, 128k output). - GPT-5.4, GPT-5.4 Pro, and GPT-5.4 Mini remain available — the default OpenAI model is unchanged (still GPT-5.4).
User Benefit: If you bring your own OpenAI API key, you can pick GPT-5.5 for stronger coding and reasoning work without losing access to the existing 5.4 lineup.
Cleaner Goal Coverage Labels
Goal names that contained raw HTML markup (from imports or older notes) now render as plain text in the Goal Coverage view instead of leaking tags into the UI.
Notes
No migrations, no API changes, no sync-protocol changes. Safe drop-in upgrade from v1.2.1-beta.1.
Release Info
- Version: 1.2.1-beta.2
- Release Date: May 8, 2026
- Previous Version: 1.2.1-beta.1
- Type: Beta Patch Release
v1.2.1-beta.1
BetaTensorPM v1.2.1-beta.1 (Beta)
May 6, 2026
Changelog - v1.2.1-beta.1
Improvements
Refined Chat Input
The chat input area has been polished to feel calmer and more focused — both in the side panel and when the AI panel is maximized.
What Changed:
- The Send button is now a compact circular icon (upward arrow) instead of a labeled pill, matching modern chat UX conventions.
- In maximized mode, the input adopts a centered pill layout (capped at 760px) aligned with the message column, so reading width and writing width stay visually consistent.
- When you open or close the quick-actions panel, the latest message stays pinned to the bottom of the view — no more snapping or content jumping during the slide animation.
- The model selector in inline-edit mode is now transparent with a subtle hover border, so it blends with the bubble rather than competing with it.
- Quick-actions rows are tighter and the internal scrollbar is hidden, reducing visual noise.
User Benefit: Less chrome, more conversation. The chat area feels closer to what you'd expect from a polished AI workspace, especially when running TensorPM full-screen.
Internal Cleanup
Removed roughly 560 lines of orphaned utility, barrel, and UI code that no longer had any consumers. No user-visible behavior changes, but the codebase is smaller, dependency graphs are tighter, and the GitHub Copilot settings UI now lives in a single place (the unified External Agents settings) instead of two.
Notes
No migrations, no API changes, no sync-protocol changes. Safe drop-in upgrade from v1.2.0-beta.1.
Release Info
- Version: 1.2.1-beta.1
- Release Date: May 6, 2026
- Previous Version: 1.2.0-beta.1
- Type: Beta Patch Release
v1.2.0-beta.1
BetaTensorPM v1.2.0-beta.1 (Beta)
May 6, 2026
Changelog - v1.2.0-beta.1
New Features
Decisions: First-Class Commitment Tracking
TensorPM now treats project decisions as first-class records with a full audit chain — distinct from notes, action items, or chat history.
What Changed:
- Record any project commitment (stakeholder commit, top-down change, agent recommendation, user directive, or derived) with text, rationale, source actor, and timestamp.
- Decisions are append-only: when a previous commitment changes, you supersede it. The original is preserved as
supersededand the new record links back viasupersedes_idso the chain stays intact. - Withdraw an active decision when it no longer applies, and reactivate it later — both stay visible in the audit chain.
- Link decisions to the work they affect: action items, risks, or milestones. Links are workspace-scoped and idempotent.
- A new "Commitments" section in the project Trail surfaces decisions with status filters (active / superseded / withdrawn) and supersession chain navigation.
- Decisions sync across devices in Cloud and Pro workspaces. Plaintext fields (
text,rationale,source_actor) are encrypted end-to-end before leaving the device.
Agent Tools (MCP / AI):
External agents (Claude Code, Codex) and the built-in TensorPM agent get six new tools:
record_decision— capture a new commitment.supersede_decision— replace a previous commitment, preserving the chain.withdraw_decision— mark a decision as no longer applying.list_decisions— query decisions for the current project, with optional filters by status, source, or linked entity.link_decision/unlink_decision— connect or disconnect a decision from action items, risks, or milestones.
User Benefit: When a stakeholder changes a commitment ("we're going to 70% instead of 50%"), the change is recorded as a real event with provenance and rationale rather than overwriting silently. AI agents reasoning about a project can ground their suggestions in what was actually decided, not what's currently in a free-text field.
Improvements
Centralized Identity Headers in Proxy Auth
Auth requests to api.tensorpm.com now consistently include installation UUID, app version, platform, and update channel — assembled in one place rather than duplicated across each authentication flow.
What Changed:
- Introduced a single
IdentityServicethat resolves all identity headers. - Magic-link, OAuth, passkey, password, refresh, and update-token endpoints now all carry the same identity context.
- No change to token storage, refresh, or state machine — credentials and refresh logic are untouched.
User Benefit: Improves backend observability and enables version-targeted server-side behavior (e.g., progressive rollouts, deprecation notices) for future releases. No user-visible difference today.
Hardened Decision Tool Surface
Length limits and error sanitization on the new decision tools.
What Changed:
- Decision text and rationale are capped at 4,000 characters; source actor at 200. The MCP, IPC, and AI tool surfaces all enforce the same limits.
- Tool error messages are sanitized: validation errors (e.g. "Cannot supersede: status is superseded") pass through, while internal failures get a generic message instead of leaking SQL details.
- Decision-related IPC channels were trimmed to the five actually used by the renderer; cross-entity link editing now flows exclusively through the MCP/AI surface, where workspace and project scoping are enforced.
User Benefit: Less surface area for runaway agent loops to write multi-megabyte decisions, and safer error reporting if an unexpected backend error occurs.
Notes
A new SQLite migration (025) adds two tables on first launch: decisions and decision_links. The migration is idempotent and runs in a single transaction — no manual action is required, and existing project data is untouched.
For Cloud and Pro users, the corresponding sync-side schema and rules have already been deployed; clients will pick up decisions across devices automatically once this version is installed.
Release Info
- Version: 1.2.0-beta.1
- Release Date: May 6, 2026
- Previous Version: 1.1.0-beta.2
- Type: Beta Minor Release
v1.1.0-beta.2
BetaTensorPM v1.1.0-beta.2 (Beta)
May 5, 2026
Changelog - v1.1.0-beta.2
New Features
People Extraction During AI Project Creation
TensorPM can now carry named people from AI-generated projects into the project people list.
What Changed:
- AI project generation from prompts and documents can extract named team members and stakeholders.
- Extracted people are persisted when projects are created through the desktop app, MCP, or A2A.
- Action item tools can resolve assignees by person ID, email, or exact name when the match is unambiguous.
User Benefit: Projects created from briefs or documents start with more usable people data, so generated action items can be assigned with less manual cleanup.
Bug Fixes
Safer Actual Effort Updates
Actual effort now respects the split between timer-tracked work and manually entered work.
What Changed:
- AI and distillation flows now update manual effort instead of overwriting the computed total effort.
- Total effort is recomputed from tracked effort plus manual effort.
- The effort input tooltip explains when timer-tracked effort limits how far the visible total can be lowered.
User Benefit: Timer history is no longer accidentally erased or contradicted when AI updates effort values or users adjust effort totals.
More Reliable AI Tool Execution
This beta hardens several AI tool paths that previously depended on exact model output.
What Changed:
- Common AI tool-name aliases are resolved before execution.
- AI-generated completion timestamps can use a controlled clock in tests and benchmarks.
- Project status and action item updates handle more realistic model output without silently dropping valid intent.
User Benefit: AI project-management actions should be less brittle, especially when models use natural but slightly different wording.
Improvements
Better Project Content Updates
Distillation and trail review now use clearer effort fields and more consistent action item update behavior.
What Changed:
- Trail review labels manual effort explicitly.
- AI update schemas avoid writable fields that are owned by the timer backend.
- Action item field aliases now map "effort" and "actual effort" to manual effort.
User Benefit: Reviewing and accepting AI-suggested project updates should be clearer and less likely to change hidden timer-owned state.
Internal PM Benchmark Coverage
Added opt-in benchmark coverage for real-AI project-management quality.
What Changed:
- Added an internal simulation harness for PM scenarios.
- Added a real-AI local benchmark spec for project planning quality.
- Added invariant checks for simulated project dates, assignments, dependencies, budgets, and effort.
User Benefit: This improves beta validation for complex AI planning behavior before broader release.
Notes
No project data migration is required.
Release Info
- Version: 1.1.0-beta.2
- Release Date: May 5, 2026
- Previous Version: 1.1.0-beta.1
- Type: Beta Minor Release
v1.1.0-beta.1
BetaTensorPM v1.1.0-beta.1 (Beta)
May 4, 2026
Changelog - v1.1.0-beta.1
New Features
Smoother Project Editing and Navigation
This beta focuses on making large projects feel more responsive during common editing workflows.
What Changed:
- Action item text fields now grow natively with multiline content instead of relying on JavaScript height recalculation.
- Action list row heights are cached across tab switches so long items stay correctly measured after returning to the list.
- Sidebar tab changes stay responsive even when switching into heavier project views.
- Rapid sidebar tab changes now persist the last selected tab reliably.
User Benefit: Editing long action items and moving between project views should feel smoother, with less visual jumping and fewer slow tab switches.
Bug Fixes
More Reliable Success Criteria Editing
Fixed an edge case where clicking away from a success-criteria list while the rich text editor was still flushing changes could leave editing mode stuck or drop the intended cleanup.
What Changed:
- Outside-click handling now keeps the pending close action stable while rich text blur updates are applied.
- Empty success-criteria rows are cleaned up reliably when editing ends.
- Added regression coverage for the blur-and-outside-click sequence.
User Benefit: Success criteria edits are less likely to be lost or leave the field in an inconsistent editing state.
Safer Onboarding and Subscription Test Flows
The onboarding test mock layer now mirrors production login behavior more closely.
What Changed:
- A subscription refresh mock can update an existing login session.
- A subscription refresh mock no longer creates a login session by itself.
- A refresh can explicitly clear an existing mocked auth state.
User Benefit: Beta validation is less likely to pass because of unrealistic authentication state, reducing the chance of login or onboarding regressions reaching users.
Improvements
Better Crash Recovery Diagnostics
This beta includes the crash recovery hardening prepared after 1.0.1-beta.4.
What Changed:
- Added safer recovery behavior for repeated renderer crashes and main-window load failures.
- Preserves crash reports before restart or quit paths.
- Captures more context around sleep, resume, GPU, and child-process failures.
User Benefit: When TensorPM crashes in difficult system-level situations, support reports should be clearer and recovery should be safer.
Stronger Release Validation
Expanded automated coverage around the areas changed in this beta.
What Changed:
- Added unit coverage for project context and evaluation signature caching contracts.
- Added runtime render-profiler coverage for production-like profiling scenarios.
- Added E2E coverage for multiline action item growth, row-height restoration, and rapid tab switching.
- Hardened E2E welcome-flow detection so tests wait for a real app surface before continuing.
User Benefit: The beta has stronger safeguards around the exact workflows that changed.
Notes
No project data migration is required.
Release Info
- Version: 1.1.0-beta.1
- Release Date: May 4, 2026
- Previous Version: 1.0.1-beta.4
- Type: Beta Minor Release
v1.0.1-beta.4
BetaTensorPM v1.0.1-beta.4 (Beta)
May 4, 2026
Changelog - v1.0.1-beta.4
Bug Fixes
Mistral Startup Crash Fix
Fixed a startup crash that could prevent TensorPM from opening when the packaged desktop app loaded the Mistral AI provider.
What Changed:
- Fixed the Mistral SDK error import so packaged Electron builds resolve it correctly.
- Prevented the
ERR_UNSUPPORTED_DIR_IMPORTcrash during app startup.
User Benefit: Users affected by the Mistral provider startup crash can open TensorPM again after installing this version.
Notes
This is an urgent beta hotfix. No project data migration is required.
Release Info
- Version: 1.0.1-beta.4
- Release Date: May 4, 2026
- Previous Version: 1.0.1-beta.3
- Type: Beta Patch Release
v1.0.1-beta.2
BetaTensorPM v1.0.1-beta.2 (Beta)
May 3, 2026
Changelog - v1.0.1-beta.2
🏗️ Improvements
Smarter Auto-Updater Telemetry
The auto-updater now shares anonymous, per-installation events with the TensorPM update server so we can spot download problems across the fleet instead of waiting for individual bug reports.
What Changed:
- ✅ Each update check now reports
download_started,download_completed, anddownload_failedevents to the proxy update server. - ✅ Failure events include the underlying error category (network, signature, ZIP-not-found, cache, etc.) so we can tell broken releases apart from flaky networks at a glance.
- ✅ Events are de-duplicated per target version, so progress callbacks no longer fan out into duplicate pings.
User Benefit:
If a future Beta or Stable build trips on download issues for some platform / region / channel combination, we now see it in aggregate within minutes rather than days. Nothing personally identifiable is sent — just the existing installation UUID, platform, version, and channel.
Updater Requests Now Carry Version + Channel Headers
Every request the auto-updater makes (manifest probes, downloads, telemetry) now carries x-app-version and x-update-channel in addition to the existing x-installation-uuid and x-app-platform headers. Switching channels in Settings → Update Channel refreshes those headers immediately, no app restart required.
This unlocks server-side routing for the api.tensorpm.com/update proxy so it can serve different responses to Beta vs Stable clients without inferring channel from version strings.
Dependency Refresh
Routine bumps for the libraries TensorPM ships with:
- Electron 40.9.2 → 40.9.3 — upstream Chromium / Node patch level.
- Anthropic SDK 0.91.1 → 0.92.0, OpenAI SDK 6.34.0 → 6.35.0, Google GenAI SDK 1.50.1 → 1.51.0 — newer client libraries for the BYOK providers.
- TipTap 3.22.4 → 3.22.5 (editor core + extensions).
- DOMPurify 3.4.1 → 3.4.2, Zod 4.3.6 → 4.4.2, imapflow 1.3.2 → 1.3.3, officeparser 6.1.0 → 6.1.1.
No code paths needed to change for any of these; they're picked up transparently.
📝 Notes
- This is a Beta release. The desktop app's Beta and Auto update channels will pick it up automatically; users on Stable stay on
v1.0.0until the next Stable ships. - The new updater telemetry endpoint sits behind the existing update-server URL — no new domains or firewall rules required.
📅 Release Info
- Version: 1.0.1-beta.2
- Release Date: 2026-05-03
- Previous Version: 1.0.1-beta.1
- Type: Patch / Beta Release
v1.0.1-beta.1
TensorPM v1.0.1-beta.1 (Beta)
May 2, 2026
Changelog - v1.0.1-beta.1
🐛 Bug Fixes
"Auto" Update Channel Now Truly Picks the Newest Version
The "Auto" option in Settings → Update Channel used to silently route Beta builds to the Beta channel only. If you were on a Beta and a newer Stable was released, "Auto" would not show it — leaving Beta users stranded on outdated versions.
"Auto" now consistently delivers the newest version available, whether that's a Beta or a Stable.
What Changed:
- ✅ "Auto" channel always asks the server for the highest available version, merging Beta and Stable releases.
- ✅ A Beta user automatically picks up a newer Stable when one ships.
- ✅ A Stable user automatically picks up a newer Beta when one ships.
- ✅ Explicit "Stable" and "Beta" channel selections are unchanged — pick "Stable" if you only ever want Stable releases.
User Benefit:
If you've been on a Beta build for a while and didn't see the v1.0 Stable show up: your client will now find it on the next update check. No reinstall needed. Pairs with a server-side fix already deployed to api.tensorpm.com/update.
The accompanying Settings → Update Channel tooltip and the underlying UpdateChannel type docs were rewritten to match the new semantics — "Auto" is now described as "Always installs the newest available version, including pre-releases" instead of the old (and misleading) "Follows your installed version".
🎉 New Features
Submit Feedback to the TensorPM Team Directly From an Agent
A new MCP tool, submit_feedback, lets agents (or the user-via-agent) send non-bug feedback to the TensorPM team without leaving the conversation:
- Categories:
suggestion,praise,question,partnership,licensing,collaboration,other. - Optional reply email: when provided, the user receives an auto-reply confirming the feedback was received.
- Clear separation from bug reports: bugs with diagnostic logs continue to use
submit_bug_report— the new tool is for everything else (feature requests, integration inquiries, B2B/Enterprise interest, partnerships).
Useful when an agent wants to relay a structured suggestion or open a partnership/licensing conversation on your behalf.
Manual MCP Setup for Any Tool-Agnostic Client
Settings → Integrations has a new Manual MCP Setup view that generates ready-to-paste configuration snippets for any MCP-capable client outside the built-in installer matrix:
- JSON (Claude Desktop, Cursor, generic clients)
- TOML (Codex
~/.codex/config.toml) - YAML (Continue
~/.continue/config.yaml)
Each snippet uses the resolved server binary path and is one-click copy-to-clipboard. The bridge auth token continues to live on disk (~/.tensorpm/mcp-bridge-token, mode 0600) and is never copied into the client config — the MCP server reads it automatically.
🏗️ Improvements
MCP Tools Surfaced With Behavior Hints (MCP Annotations)
All 21 TensorPM MCP tools now publish standard MCP annotations to the client:
title— human-friendly name shown in tool pickers.readOnlyHint— true for read-only tools (get_project,list_*,get_billing_status, etc.).destructiveHint— true if a tool may delete or overwrite (none currently — TensorPM MCP is additive by design).idempotentHint— true if calling the tool repeatedly with the same arguments has no additional effect.openWorldHint— true if the tool reaches outside the local app (network, Stripe checkout URLs, contact endpoint, etc.).
MCP-aware clients can use these hints to render tools more clearly, gate destructive calls behind extra confirmation, or hide network-touching tools in offline modes.
MCP Server Schema Conversion Now Uses Zod 4 Native
The custom Zod-to-JSON-Schema converter has been replaced with Zod 4's built-in converter, with a small post-processing pass to flatten anyOf: [{const: x}, {const: y}, …] into the more concise enum: [x, y, …] form. Most MCP clients render enum more cleanly than anyOf, and we no longer carry custom schema-conversion code that needs to be kept in sync with new Zod features.
MCP SDK Bumped to 1.29.0
Updated @modelcontextprotocol/sdk from 1.21.1 to 1.29.0. Picks up upstream fixes and the latest annotation handling.
TensorPM Skill Description Rewritten for Better Agent Triggering
The SKILL.md description was rewritten to read as a self-contained brief for agent skill-routers: it now lists explicit trigger keywords (TensorPM, Context-Driven Project Management, CDPM, agentic project management, project memory, …), names concrete responsibilities (action items, kanban, sprint planning, decisions, history), and includes the manual-setup snippets for tool-agnostic clients inline. Easier for autonomous agents to discover and decide when to invoke.
Expanded Test Coverage
New unit suites covering the surfaces touched in this release:
submitFeedbackTool.test.ts— full call-path coverage of the new feedback tool (validation, body shape, auto-reply signaling, 5xx bubble-up, env-override).McpIntegrationInstaller.manualSetup.test.ts— verifies the JSON/TOML/YAML snippets generated for tool-agnostic MCP clients.toolRegistry.converter.test.ts— pins down the Zod 4 native conversion +anyOf-to-enumflattening behavior.registerTools.schemaCoverage.test.ts— guarantees every registered MCP tool exposes a JSON schema and standard annotations.GeminiProvider.allCalls.real.integration.test.ts— opt-in live integration suite hitting the real Gemini API to catch SDK / contract drift between mocked unit tests and production behavior.
📝 Notes
- Cloud MCP Relay — a new architecture design draft (
documents/documentation/architecture/cloud-mcp-relay.md) is included in this build. It describes how a future opt-in Cloudflare Worker + Durable Object relay could let cloud-hosted agents (Claude.ai web, ChatGPT cloud, Anthropic Connectors directory) call the same TensorPM MCP tool surface that local clients use, without copying user data into the cloud. Design-only — not implemented in this release. - This release pairs with a server-side fix already deployed to
api.tensorpm.com/update. Users on v0.8.2-beta.1 or earlier with "Auto" or "Beta" selected will see v1.0.0 (or this v1.0.1-beta.1, whichever is newer) on their next scheduled update check.
📅 Release Info
- Version: 1.0.1-beta.1
- Release Date: 2026-05-02
- Previous Version: 1.0.0
- Type: Patch Beta Release (Hotfix + MCP improvements)
v1.0.0
TensorPM v1.0.0
May 2, 2026
Changelog - v1.0.0
🎉 TensorPM 1.0 — Out of Beta
TensorPM is now stable. After eight months of beta iteration, the core product — local-first project context, the built-in TensorPM agent, MCP and A2A endpoints for external agents, and Cloud sync — is mature enough to commit to a stable major release.
What this means for you:
- ✅ Same product you have been using, now with a stability commitment
- ✅ Sync schema and credit/billing model are frozen — your data and subscriptions stay safe across upgrades
- ✅ Future breaking changes follow proper semver and migration paths
- ✅ Auto-updates continue to work seamlessly — no action needed on your end
🐛 Bug Fixes
Bug Report Button Available on Stable
The "Report a Bug" button in the header is now visible on stable releases, not just beta builds.
What Changed:
- ✅ Removed the beta-only gate on the bug report entry point
- ✅ Stable users can now submit bug reports with screenshots and support bundles directly from the app
User Benefit: You can report issues without having to switch to a beta channel — keeping a single feedback path open as TensorPM matures.
📝 Notes
- This release is purely a maturity milestone — no breaking changes from
v0.8.2-beta.1. - Update channel defaults remain
latest; existing installations upgrade automatically. - The
betaupdate channel stays available for users who want to preview future changes early.
📅 Release Info
- Version: 1.0.0
- Release Date: 2026-05-02
- Previous Version: 0.8.2-beta.1
- Type: Major Release (Stable) — End of Beta
v0.8.2-beta.1
TensorPM v0.8.2-beta.1 (Beta)
May 2, 2026
Changelog - v0.8.2-beta.1
🚀 Features
MCP Billing, Account, and Credit Tools
TensorPM now exposes agent-safe MCP tools for account and billing workflows:
get_billing_statusget_available_billing_plansopen_tensorpm_accountget_credit_balancecreate_subscription_checkoutcreate_credit_topup_checkoutopen_billing_portalcreate_support_donation_checkout
All payment-related tools only create or open browser URLs. MCP never receives passwords, payment details, or payment completion signals.
MCP Bug Reporting
Agents can now submit TensorPM bug reports through MCP with an optional support bundle. Support bundles include telemetry and app logs by default, exclude AI logs by default, and skip oversized bundles before JSON submission.
MCP-to-A2A Agent Messaging
Added message_tensorpm_agent, a narrow MCP adapter for blocking TensorPM A2A message/send calls. This gives MCP clients a direct way to ask the TensorPM project agent to handle project-context work while keeping A2A as the underlying agent protocol.
🛡️ Fixes and Hardening
- Credit top-up checkout is exposed only for logged-in Pro accounts.
- Stripe donation checkout is not advertised until a real donation route exists.
- Donation amount schemas now advertise numeric MCP enums correctly.
- A2A and bug-report bridge routes preserve non-JSON downstream errors instead of masking them as generic failures.
- Malformed A2A JSON-RPC success responses are rejected as malformed responses.
- Support bundle size is guarded before base64 JSON submission to avoid proxy parser rejection.
🧪 Tests
- Added high-coverage route, tool, and MCP HTTP integration tests for billing, credit balance, checkout, donations, bug reporting, and TensorPM agent messaging.
- Added regression tests for top-up subscription-state gating, support-bundle privacy defaults, oversized support bundles, non-JSON downstream errors, malformed A2A responses, and MCP numeric enum schema generation.
📚 Agent Docs
- Updated
SKILL.mdandreferences/mcp-tools.mdwith the new MCP tools and usage boundaries. - Documented that billing tools only return or open browser URLs and must not be interpreted as completed payments.
📅 Release Info
- Version: 0.8.2-beta.1
- Release Date: 2026-05-02
- Previous Version: 0.8.1-beta.7
- Type: Minor Release (Beta) — MCP billing, bug reporting, and agent messaging
v0.8.1-beta.7
TensorPM v0.8.1-beta.7 (Beta)
May 1, 2026
Changelog - v0.8.1-beta.7
🏗️ Improvements
Marketplace and Agent-Doc Pipeline Hardened
Behind-the-scenes consolidation of how the Claude Code plugin marketplace and agent-readable docs (SKILL.md, MCP-TOOLS.md, A2A-API.md, ACTION-ITEMS.md, AGENT-MCP-CLIENTS.md) are published and synced. No effect on desktop app behavior.
What Changed:
- ✅ Single source of truth:
SKILL.mdfrontmatter description is now the only place to edit the skill description. The release pipelinejq-injects it intomarketplace.jsonandplugin.jsonautomatically; manual edits to those JSON description fields are overwritten on every release. - ✅
AGENT-MCP-CLIENTS.md(referenced fromSKILL.mdfor external MCP server config schema and examples) is now actually published as part of the agent-doc surface — previously the link 404'd in TensorPM-Skill and TensorPM-Releases. - ✅ Beta releases now publish with
prerelease: false+make_latest: true. The Brew cask livecheck,/releases/latestAPI, and external agents see the newest beta as the current Latest release instead of falling back to ancient stable tags. - ✅ A new
validate-marketplace.ymlworkflow warns on PRs that touchSKILL.mdor the marketplace JSONs if descriptions drift.
Updated Brand Positioning
The TensorPM brand description now consistently reads:
Agentic Project Memory | AI Project Management Software. The dedicated project management subagent for Claude Code, Codex, OpenClaw and any MCP/A2A agent — manages shared project context (goals, action items, decisions, history) via MCP tools and the A2A protocol. Local-first, free.
This appears in the Claude Code marketplace (TensorPM-Skill, TensorPM-Releases), the SKILL.md frontmatter, and the website's agent-doc surface. The SKILL.md body now articulates the dual-purpose framing — TensorPM is both a desktop PM app for humans (with a built-in TensorPM agent) AND a dedicated MCP/A2A subagent for external agents, sharing the same project graph.
📝 Notes
- No application code changes. This release contains documentation, CI workflow updates, and marketplace metadata only. The desktop app, AI providers, sync, and runtime behavior are unchanged from v0.8.1-beta.6.
- Recommended for users: no action required; this is a metadata-only release.
- For agent-builders:
SKILL.mdand the website agent-doc surface (tensorpm.com/SKILL.md,MCP-TOOLS.md, etc.) are now in lockstep on every release.
📅 Release Info
- Version: 0.8.1-beta.7
- Release Date: 2026-05-02
- Previous Version: 0.8.1-beta.6
- Type: Patch Release (Beta) — Marketplace & Docs only
v0.8.1-beta.6
TensorPM v0.8.1-beta.6 (Beta)
April 30, 2026
Changelog - v0.8.1-beta.6
🐛 Bug Fixes
Trail Diff: No More Phantom "Unassigned" / "Empty" Deltas
The Trail's EDITED change card occasionally showed action item updates as if every field had gone from empty / Unassigned, even when the change was a small tweak. This was caused by the pre-tool snapshot being truncated mid-string into invalid JSON, so the diff renderer could not read the previous state at all.
What Changed:
- ✅ Snapshot fields are always written as valid JSON. Long action item descriptions are individually shortened before serialization, so a single huge item can no longer break the whole snapshot.
- ✅ The action items snapshot budget is now ten times larger, comfortably covering normal projects.
- ✅ When the upstream tool trace was already truncated by the size cap, the diff renderer falls back to the persisted post-update snapshot to recover full action item fields and deleted-person records.
User Benefit: Trail entries for AI-driven action item edits and people deletions now show real before/after values instead of misleading "from empty" deltas.
Streaming No Longer Flickers Between Thinking and Answer
Some models stream thinking tokens and answer tokens interleaved. The chat UI used to switch to the "answer" phase on every token, briefly hiding the thinking section even when more reasoning was still arriving.
What Changed:
- ✅ Phase transitions are deduplicated on the backend.
- ✅ Incoming tokens no longer force the phase back from "thinking" to "answer".
User Benefit: Smoother streaming UX — the thinking pane stays open as long as the model is still thinking.
🏗️ Improvements
Success Criteria: Wrap Long Lines and Render Inline Formatting
In the Project Profile, editing the Success Criteria list used to use a single-line text box that displayed raw HTML tags (<strong>...</strong>) and truncated long criteria at the right edge.
What Changed:
- ✅ Each criterion now uses an inline rich-text editor (the same one already used for the Action Item description).
- ✅ Long criteria wrap onto multiple lines instead of being cut off.
- ✅ Bold / italic / strike / inline code / lists work via a small floating toolbar that appears when text is selected — the same shortcuts you already use elsewhere.
- ✅ Existing criteria that had stored HTML formatting now render as formatted text in the editor instead of leaking raw tags.
User Benefit: Editing success criteria now matches the rest of the app — long, structured criteria are readable, and formatting survives the round-trip from AI to view to edit.
📝 Notes
- No data migration required: existing criteria, action items, and trail snapshots are read as-is. The Tiptap editor parses already-stored HTML correctly.
- Behavior change in Success Criteria editing: pressing
Enternow creates a line break inside the current criterion (matching the Action Item description). Add a new criterion via the+button.
📅 Release Info
- Version: 0.8.1-beta.6
- Release Date: 2026-04-30
- Previous Version: 0.8.1-beta.5
- Type: Patch Release (Beta)
v0.8.1-beta.5
BetaTensorPM v0.8.1-beta.5 (Beta)
April 29, 2026
Changelog - v0.8.1-beta.5
🏗️ Improvements
Cleaner Workspace Pipeline
Removed an unused workspace billing field (billingPlan) from the entire pipeline — local SQLite, sync upload, IPC, MCP, A2A, and proxy responses.
What Changed:
- ✅ Workspaces no longer carry a
billingPlanfield anywhere in the app - ✅ Local database migrates automatically on first launch (drops the dead column)
- ✅ Sync uploads no longer send the field; the new sync server silently ignores it for older clients still in the wild
- ✅ Subscription status continues to live where it always did — on the user account (
/auth/me→subscriptionTier), not on the workspace
User Benefit:
Pure cleanup — no behavior change. The field was never used by anything, but it was being read and written across many layers and showed up in MCP/A2A responses. Removing it makes the workspace surface match reality (subscription is per user, not per workspace) and shrinks the sync payload by one column.
📝 Notes
- Database migration: Migration v24 runs on first launch and drops
workspaces.billing_planfrom the local SQLite store. Reversible via the migration's down statement. - Backward compatibility: This release is safe to install before the proxy / sync server are upgraded. Older sync servers will still accept payloads without the field; newer sync servers also accept payloads with the field (silently stripped). No coordinated rollout required.
📅 Release Info
- Version: 0.8.1-beta.5
- Release Date: 2026-04-29
- Previous Version: 0.8.1-beta.4
- Type: Patch Release (Beta)
v0.8.1-beta.4
BetaTensorPM v0.8.1-beta.4 (Beta)
April 28, 2026
Changelog - v0.8.1-beta.4
Release date: 2026-04-28 Previous version: 0.8.1-beta.3 Type: Patch Beta Release (Build Fix)
Build
- Fixed
npm run rebuildfailure on@electron/rebuildv4: the--typesflag now requires a value. Updated to--types prod,dev,optionalto preserve the previous "rebuild all" behavior. The0.8.1-beta.3build failed in CI because of this;0.8.1-beta.4ships the same content with a working build.
Carry-over from v0.8.1-beta.3
- TensorPM desktop client is now distributed under the TensorPM Proprietary License (replaces the previous MPL-2.0). All rights reserved.
package.jsonlicense field set toUNLICENSED.- Repository policy files updated:
LICENSE,README.md,CONTRIBUTING.md,SECURITY.md. - Bug reporting consolidated to the in-app reporter (Help → Report a Bug); security reports continue to go to security@tensorpm.de.
- Separate commercial / OEM / on-premises / enterprise licenses are available on request (info@tensorpm.com).
Notes
- No application code was changed in this release. Functional behavior is identical to
0.8.1-beta.2.
v0.8.1-beta.2
BetaTensorPM v0.8.1-beta.2 (Beta)
April 25, 2026
Changelog - v0.8.1-beta.2
Release date: 2026-04-26 Previous version: 0.8.1-beta.1 Type: Patch Beta Release
Security
- Resolved npm audit findings by updating
uuidto the patched major release and constraining vulnerable transitiveminimatchusage in theunimportedtoolchain. - Ensured Mermaid uses the patched
uuidversion while keeping the current Mermaid release. - Removed the deprecated
@types/uuidstub package becauseuuidprovides its own TypeScript types.
Logging
- Masked rate-limiter API-key-derived tracking keys in AI logs.
- Replaced raw provider key logging with short SHA-256 fingerprints so rate-limit diagnostics remain useful without exposing secrets.
Validation
- Verified the dependency graph with
npm audit. - Verified TypeScript, ESLint, and the production build after the dependency and logging changes.
v0.8.1-beta.1
BetaTensorPM v0.8.1-beta.1 (Beta)
April 25, 2026
Changelog - v0.8.1-beta.1
🎉 New Features
External MCP Servers Inside TensorPM
TensorPM can now import external MCP server configuration so TensorPM's own AI chat can use additional tools from configured MCP servers.
What Changed:
- ✅ Added startup import for user-wide, project, and local MCP config files
- ✅ Added support for standard
mcpServersconfig blocks used by tools like Codex and Claude Code - ✅ Added support for TensorPM-native HTTP MCP entries
- ✅ Added a one-click Context7 MCP example in the connector overview
- ✅ Added a generated MCP config file that can be revealed directly from the UI
User Benefit: Users can make useful external MCP tools available inside TensorPM without manually recreating every connector in the app.
Agent-Friendly MCP Setup Documentation
TensorPM now ships clearer instructions and examples for agents that configure MCP servers on behalf of users.
What Changed:
- ✅ Added a dedicated Agent MCP client reference
- ✅ Added an example MCP configuration file
- ✅ Updated the TensorPM skill with guidance for writing MCP configs
- ✅ Bundled the skill and selected references with packaged app resources
User Benefit: Agents such as Codex and Claude Code have a stable place to read and write TensorPM MCP configuration, making setup more predictable across machines.
🏗️ Improvements
Safer MCP Config Sync
MCP configuration sync now separates user-managed config from UI-generated export files.
What Changed:
- ✅ User-managed imports remain in
~/.tensorpm/agent-mcps.jsonand project.tensorpmfiles - ✅ The connector UI writes its generated snapshot to
~/.tensorpm/agent-mcps.generated.json - ✅ Missing environment variables now skip the affected MCP server instead of importing incomplete secret values
- ✅ UI-generated config uses environment placeholders instead of writing secret values in plaintext
User Benefit: Users can inspect and reuse generated MCP configuration without risking accidental secret exposure or overwriting their hand-maintained config.
Better MCP Approval Flow
Approval prompts in the chat now appear more reliably when an MCP tool needs confirmation.
What Changed:
- ✅ Chat scrolls to newly inserted MCP approval prompts when the user is already near the bottom
- ✅ Approval prompt spacing was tightened so the card sits more cleanly in the conversation
User Benefit: Users are less likely to miss MCP approval requests during active AI conversations.
Project Profile Chart Polish
Project profile donut charts are easier to read in dense project summaries.
What Changed:
- ✅ Added a larger, more distinct color palette for technology category charts
- ✅ Added compact donut legends for chart-heavy views
- ✅ Improved chart spacing so cards align more consistently
User Benefit: Project summaries are easier to scan, especially when projects contain many technology or method categories.
🐛 Bug Fixes
Dependency Security Patch
Updated PostCSS from 8.5.8 to 8.5.10.
User Benefit: The app build uses the latest patched PostCSS release available for this dependency line.
📝 Notes
- This is a beta release focused on MCP configuration, agent setup, and UI polish.
- Restart TensorPM after editing imported MCP config files so startup import can run.
- No manual migration is required for normal desktop users.
📅 Release Info
- Version: 0.8.1-beta.1
- Release Date: 2026-04-26
- Previous Version: 0.8.0-beta.1
- Type: Patch Beta Release
v0.8.0-beta.1
BetaTensorPM v0.8.0-beta.1 (Beta)
April 24, 2026
Changelog - v0.8.0-beta.1
🎉 New Features
Credit-Based AI Usage
TensorPM now uses a clearer credit-based model for hosted AI usage. Users can see their remaining credits, understand when limits are reached, and continue working with one-off top-ups where available.
What Changed:
- ✅ Replaced request-count usage display with credit balance information
- ✅ Added credit summaries throughout the AI settings and chat experience
- ✅ Added one-off top-up handling for additional AI credits
- ✅ Added clearer messaging for free, Pro, and exhausted-credit states
User Benefit: AI usage is easier to understand because users see a real remaining balance instead of an abstract request counter.
Pro Auto Top-up
Pro users can now configure Auto Top-up so TensorPM can automatically buy credits when the balance gets low.
What Changed:
- ✅ Added Auto Top-up settings for Pro users
- ✅ Added configurable top-up package, warning threshold, and monthly cap
- ✅ Added safeguards so Auto Top-up pauses after the configured monthly limit
- ✅ Clarified that Auto Top-up is Pro-only because Pro is the hosted-AI tier with recurring AI usage
User Benefit: Long AI sessions are less likely to stop unexpectedly because Pro users can keep a controlled credit buffer.
Thinking Blocks from Proxy AI Streams
TensorPM can now preserve streamed thinking content from the proxy AI provider and render it as thinking content in the chat panel.
What Changed:
- ✅ Thinking events from proxy streams are preserved in final chat content
- ✅ Live thinking chunks are passed through to the chat streaming callback
- ✅ Tool-call responses can retain thinking blocks alongside structured tool data
User Benefit: When a hosted model provides thinking content, TensorPM can display it consistently instead of dropping it during streaming.
🏗️ Improvements
Better Subscription and Credit UX
The settings, onboarding, tutorial, quota modal, and usage badge now use consistent credit-focused copy.
What Changed:
- ✅ Added centralized pricing and credit copy
- ✅ Updated onboarding and tutorial text for the new credit model
- ✅ Improved the quota-limit modal with current credit balance, reset timing, and top-up guidance
- ✅ Updated subscription handling to distinguish Pro AI access from Cloud sync features more clearly
User Benefit: Users get clearer guidance about what they have, what ran out, and what options are available next.
Project Dashboard Metrics
Project health and insights now handle metric data more reliably.
What Changed:
- ✅ Added a migration for project insight metric repair
- ✅ Improved budget, burndown, and timeline chart handling
- ✅ Added focused tests for dashboard charts and project health behavior
User Benefit: Dashboard charts and health indicators are more resilient and less likely to show misleading or broken metric data.
Proxy and Platform Reliability
Several backend and IPC paths were tightened up for the credit and proxy flow.
What Changed:
- ✅ Improved proxy authentication and credit summary IPC handling
- ✅ Improved proxy HTTP error handling and response typing
- ✅ Added stronger SSL configuration coverage
- ✅ Improved platform service behavior used by desktop integrations
User Benefit: Hosted services, billing-related state, and desktop integration points should behave more consistently.
🐛 Bug Fixes
AI Credit and Rate-Limit Handling
Credit and rate-limit UI now stays closer to the real backend state.
What Changed:
- ✅ Reworked usage refresh paths to use credit summaries
- ✅ Preserved stale credit data during transient refresh failures
- ✅ Improved tests around proxy rate-limit and credit behavior
User Benefit: The app is less likely to show confusing usage information when network or proxy requests briefly fail.
Chat Stream Finalization
Proxy streams now preserve thinking content even when it arrives separately from normal answer text.
What Changed:
- ✅ Added regression coverage for thinking-only and thinking-plus-answer stream flows
- ✅ Ensured final chat content keeps thinking blocks before the visible answer
User Benefit: Streamed AI answers are saved and rendered more faithfully.
📝 Notes
- This is a major beta because the hosted AI usage model changes from request counts to credits.
- Auto Top-up is intentionally Pro-only.
- No manual migration is required for normal desktop users.
📅 Release Info
- Version: 0.8.0-beta.1
- Release Date: 2026-04-24
- Previous Version: 0.7.19-beta.4
- Type: Major Beta Release
v0.7.19-beta.4
BetaTensorPM v0.7.19-beta.4 (Beta)
April 23, 2026
Changelog - v0.7.19-beta.4
✨ Onboarding Improvements
Cleaner, Faster First Run Experience
The first-run flow has been tightened up so TensorPM feels more direct and less like a wizard. The onboarding path now moves users into the real product flow with less friction and clearer wording.
What Changed:
- ✅ The old intermediate "awake" stage has been removed from the normal path, so users move straight from the welcome screen into the conversational onboarding flow
- ✅ Key onboarding copy has been rewritten to sound clearer and more alive, including the welcome CTA, project-ready prompt, and tour actions
- ✅ The project setup step can now be skipped without skipping the entire onboarding flow
- ✅ Activity-choice text and skip messages no longer echo awkwardly into later onboarding steps
- ✅ Project-ready and tour actions now stay visually centered for a cleaner presentation
User Benefit: Getting started feels faster, more polished, and more intentional. Users can move into setup, AI access, or the product tour without redundant screens or confusing wording.
🐛 Bug Fixes
More Reliable Development Onboarding
Local development onboarding now continues cleanly even when the proxy has not registered a matching installation UUID yet.
What Changed:
- ✅ Added a development-only fallback for the onboarding proxy error
Unknown installation UUID - ✅ The fallback keeps onboarding usable in development without weakening the production proxy path
User Benefit: Developers can verify and iterate on onboarding flows locally without getting blocked by installation registration issues.
Better Name Handling During Onboarding
TensorPM now cleans up common punctuation artifacts when users introduce themselves.
What Changed:
- ✅ Inputs such as
Call me Simon.now resolve cleanly toSimon - ✅ Sanitizing was aligned across onboarding service and onboarding tool handling
User Benefit: Names feel more natural in the conversation and do not carry over stray punctuation into future messages.
📝 Notes
- This beta focuses on onboarding polish, wording, and development-flow resilience.
- No migration steps are required.
📅 Release Info
- Version: 0.7.19-beta.4
- Release Date: 2026-04-23
- Previous Version: 0.7.19-beta.3
- Type: Patch Beta Release
v0.7.19-beta.3
BetaTensorPM v0.7.19-beta.3 (Beta)
April 22, 2026
Changelog - v0.7.19-beta.3
🏗️ Improvements
Smoother Action Lists On Large Projects
Action list rendering has been reworked so typing, editing, and scrolling feel noticeably snappier when you work with projects that contain many action items or categories.
What Changed:
- ✅ Row-level state that used to be copied into every action item and category row is now shared once through a single context, so individual rows no longer re-render when unrelated settings change
- ✅ The virtualized row rendering runs in its own isolated component, keeping the surrounding list header stable while you scroll
- ✅ AI suggestion lookups per row now read from the store in a single shallow-equal subscription instead of four separate ones
User Benefit: Editing an action item, toggling a category, or scrolling a long list feels more responsive, especially on larger projects.
Natural Typewriter Effect During Onboarding
The onboarding assistant now reveals its messages word by word instead of character by character, with proper pauses at punctuation.
What Changed:
- ✅ Reveal advances on word and punctuation boundaries for more readable pacing
- ✅ Lower per-tick overhead for long messages
User Benefit: Onboarding feels more like a conversation and less like a teletype machine.
Fewer Redundant Background Calls
TensorPM no longer re-fetches project progress and project health data multiple times for the same project during rapid sidebar tab switches or component remounts.
What Changed:
- ✅
fetchProjectProgressskips while the same project already has a pending fetch in flight - ✅
loadAllProjectHealthskips when either already in flight or when the project's health view was refreshed within the last five seconds - ✅ Measured: redundant dispatches per 4-way sidebar tab-switch drop from 40 to 4 for project progress and from 35 to 0 for project health
User Benefit: Less background work on each interaction, less pressure on the proxy and sync services, and fewer loading flashes when navigating between sidebar tabs.
🐛 Bug Fixes
Stable Drag-And-Drop For Unicode Folder Names
Fixed a flaky end-to-end test that exercised dragging folders with non-ASCII names.
What Changed:
- ✅ The unicode file-explorer spec now uses the shared
moveFolderIntoFolderhelper, which performs the drag via the mouse-event sequence used by the rest of the file-explorer suite
User Benefit: Release pipelines covering internationalized file-explorer flows are now deterministic again, which shortens the time between a fix and a shippable build.
🧪 Internal Tooling
Action-Level Render Profiling
A new development-only instrumentation records which Redux action was most recently dispatched before each React commit. The render-profile aggregate report now includes a "Commit Attribution" table, and a new isolated scenarios spec measures the cost of idle, single tab switches, a four-way sidebar pingpong, and AI panel toggle independently.
- Development and test builds only — production builds remain fully inert thanks to
NODE_ENVguards - The isolated spec asserts that AppShell stays quiet during idle (no background polling regressions)
- Commit attribution tables now appear directly in
e2e/test-results/render-profiles/aggregate-report.md
📝 Notes
- This beta is a pure performance and internal-tooling release. No user-facing features were added or changed, and no data migrations are needed.
- The new action-attribution instrumentation runs only in
NODE_ENV=development|test, so it has zero impact on packaged production builds.
📅 Release Info
- Version: 0.7.19-beta.3
- Release Date: 2026-04-22
- Previous Version: 0.7.19-beta.2
- Type: Patch Beta Release (performance & tooling)
v0.7.19-beta.2
BetaTensorPM v0.7.19-beta.2 (Beta)
April 13, 2026
Changelog - v0.7.19-beta.2
🏗️ Improvements
Release Pipeline Refresh
This beta refresh keeps the current 0.7.19 feature set and focuses on getting a clean follow-up prerelease out.
What Changed:
- Cut a fresh beta build on top of the current
0.7.19-beta.1code line - Re-ran the release pipeline as a follow-up prerelease
User Benefit: This makes it easier to distribute a fresh beta package without changing the user-facing feature scope again.
📅 Release Info
- Version: 0.7.19-beta.2
- Release Date: 2026-04-13
- Previous Version: 0.7.19-beta.1
- Type: Patch Release (Beta)
v0.7.18-beta.1
BetaTensorPM v0.7.18-beta.1 (Beta)
March 26, 2026
Changelog - v0.7.18-beta.1
🎉 New Features
Interactive Browser Agent Sessions
Added a new interactive Browser Agent mode that can stay inside the current chat, stream progress, accept follow-up instructions, and post the final result back into the conversation automatically.
What Changed:
- Added start/stop browser agent session tools for in-chat browser workflows
- Added live session updates, browser status tracking, and session result continuation back into chat
- Added dedicated Browser Agent chat UI components, controls, and renderer/preload plumbing
User Benefit: You can now watch browser automation progress live, interrupt it when needed, and refine the task without starting over from scratch.
🏗️ Improvements
Expanded Browser Use Integration
Extended the existing browser-use support with richer runtime handling, improved task script management, and stronger integration across backend services, IPC, and the AI panel.
What Changed:
- Added a dedicated interactive session manager and browser-use script templates
- Improved chat state handling for browser-driven streaming and interruption flows
- Expanded automated coverage for backend services, chat flows, preload APIs, and frontend browser agent components
User Benefit: Browser automation is now more capable, more observable, and better integrated with the rest of the TensorPM chat experience.
🐛 Bug Fixes
Safer Release Integration for Browser Workflows
Resolved the integration gap between the current main branch and the latest browser workflow branch so the next beta ships the complete browser agent experience instead of a partial implementation.
User Benefit: This beta includes the full browser workflow set consistently across settings, chat, tools, and tests.
📅 Release Info
- Version: 0.7.18-beta.1
- Release Date: 2026-03-26
- Previous Version: 0.7.17-beta.2
- Type: Patch Release (Beta)
v0.7.17-beta.2
BetaTensorPM v0.7.17-beta.2 (Beta)
March 24, 2026
Changelog - v0.7.17-beta.2
🐛 Bug Fixes
Stabilized Windows File Explorer E2E Flows
Improved the timing tolerance of the critical file explorer end-to-end coverage on Windows so asynchronous UI updates no longer fail the release pipeline prematurely.
What Changed:
- Increased wait tolerance for attachment status badges after attach actions
- Increased wait tolerance for upload modal dismissal after file uploads
- Kept the assertions focused on the actual UI state transitions that must eventually happen
User Benefit: This beta is less likely to fail CI on Windows due to transient renderer timing differences during file explorer workflows.
📅 Release Info
- Version: 0.7.17-beta.2
- Release Date: 2026-03-24
- Previous Version: 0.7.17-beta.1
- Type: Patch Release (Beta)
v0.7.16-beta.3
BetaTensorPM v0.7.16-beta.3 (Beta)
March 24, 2026
Changelog - v0.7.16-beta.3
🐛 Bug Fixes
Guidance Layout Consistency In Production
Fixed a production-only layout issue in the Guidance view that could cause Coverage panels to overflow horizontally and Strategic blueprint cards to render with broken widths.
What Changed:
- Scoped Guidance-related AI panel layout rules so they no longer affect the main Guidance screen
- Restored correct width behavior for Coverage analysis panels in packaged production builds
- Fixed Strategic blueprint layout so production rendering matches development more closely
User Benefit: Guidance now renders with the expected panel widths and card layout in production, making Coverage and Strategic views easier to read and use.
🏗️ Improvements
Safer Guidance Styling Boundaries
Tightened CSS selector scope around shared Guidance container classes to reduce the risk of unrelated layouts interfering with each other in future releases.
📅 Release Info
- Version: 0.7.16-beta.3
- Release Date: 2026-03-24
- Previous Version: 0.7.16-beta.2
- Type: Patch Release (Beta)
v0.7.16-beta.2
BetaTensorPM v0.7.16-beta.2 (Beta)
March 24, 2026
Changelog - v0.7.16-beta.2
🐛 Bug Fixes
More Reliable Support Bundle Diagnostics
Improved how support bundle export and sync recovery failures are captured when something goes wrong in the desktop UI.
What Changed:
- ✅ Forwarded renderer-side diagnostic errors into the backend log pipeline for disk persistence
- ✅ Included safer log sanitization so complex error objects can be retained without breaking the UI
- ✅ Added regression coverage for support bundle export failures
User Benefit: When support bundle export or sync recovery fails, the app now keeps more useful diagnostic evidence for troubleshooting instead of losing the original renderer-side error details.
Guidance Layout Now Matches Better Between Dev and Production
Fixed Guidance rendering issues that could make production builds look different from development builds.
What Changed:
- ✅ Scoped conflicting Guidance CSS selectors more tightly to their intended components
- ✅ Improved Coverage header wrapping so summary badges and counts do not crowd or clip as easily
- ✅ Adjusted Strategic smart action layout rules so blueprint cards do not collapse based on fragile per-card sizing
User Benefit: Strategic blueprints and Coverage analysis should now render more consistently and predictably in packaged builds.
🏗️ Improvements
Clearer Distiller Proposals
Refined Distiller instructions so imported project updates stay focused on project-level decisions and outcomes.
What Changed:
- ✅ Added stronger guidance to keep implementation details in the source artifact instead of copying them into project fields
- ✅ Encouraged a smaller, more targeted proposal surface for each update
- ✅ Tightened action item proposal language toward outcomes, status changes, and blockers
User Benefit: Distiller suggestions should feel cleaner and more useful, with less noise from code-level or process-level detail.
Better Accessibility and Validation Tooling
Expanded developer checks around accessibility and validation for UI changes.
What Changed:
- ✅ Added an accessibility helper and modal accessibility coverage using
vitest-axe - ✅ Added
test:a11y,test:coverage,validate, and bundle analysis scripts - ✅ Cleaned up a few smaller typing and formatting issues across the app
User Benefit: UI regressions should be easier to catch before release, especially around accessibility and layout quality.
📅 Release Info
- Version: 0.7.16-beta.2
- Release Date: 2026-03-24
- Previous Version: 0.7.16-beta.1
- Type: Patch Release (Beta)
v0.7.16-beta.1
BetaTensorPM v0.7.16-beta.1 (Beta)
March 23, 2026
Changelog - v0.7.16-beta.1
🏗️ Improvements
Smoother Assignee Overlay
Refined the assignee popup behavior in the action list so it feels more stable while opening and searching.
What Changed:
- ✅ Reduced visible flicker when opening the assign overlay
- ✅ Improved upward-opening behavior so the popup stays anchored more naturally while filtering
- ✅ Kept search interactions focused on updating the visible results instead of visibly jumping the whole overlay
User Benefit: Assigning people and local agents now feels steadier and less distracting, especially in dense action lists.
More Reliable Interactive Local Agent Completion
Improved how interactive Codex and Claude Code runs shut down after task completion.
What Changed:
- ✅ Restored automatic interactive exit handling when the terminal returns to the prompt
- ✅ Ensured MCP completion signals close the matching interactive run instead of leaving it hanging
- ✅ Hardened the related backend flow with targeted test coverage
User Benefit: Interactive agent runs complete more cleanly and predictably, with less manual cleanup in the terminal.
More Stable Full Test Runs
Adjusted the default Vitest worker parallelism for local full-suite runs.
What Changed:
- ✅ Reduced the default worker count used by
npm test - ✅ Avoided fork worker startup timeouts seen during large local runs
User Benefit: Local verification before releases is more reliable on machines where the full test suite previously stalled or timed out.
Updated Small AI Model Defaults
Refreshed the smaller direct-provider model defaults to newer currently available variants.
What Changed:
- ✅ Updated OpenAI small-model usage to
GPT-5.4 Mini - ✅ Updated Google Flash Lite usage to
Gemini 3.1 Flash Lite (Preview) - ✅ Re-verified the real provider smoke test with live API access after the model updates
User Benefit: Fast direct AI operations now use newer small-model defaults without changing the larger default provider choices.
📅 Release Info
- Version: 0.7.16-beta.1
- Release Date: 2026-03-23
- Previous Version: 0.7.15-beta.1
- Type: Patch Release (Beta)
v0.7.15-beta.1
BetaTensorPM v0.7.15-beta.1 (Beta)
March 21, 2026
Changelog - v0.7.15-beta.1
🏗️ Improvements
Leaner Agent Assignment Prompts
Reduced the prompt sent to coding agents (Architect, Developer, Reviewer) from ~150 lines to ~20 lines.
What Changed:
- ✅ Removed inline project context (goal, description, scope, success criteria, requirements, technologies, milestones, other action items)
- ✅ Agents now fetch additional context on-demand via TensorPM MCP tools (
get_project,list_action_items, etc.) - ✅ Consolidated role instructions into compact single-paragraph format
- ✅ Eliminated redundant fields (title/description appeared twice)
User Benefit: Agents start faster with less token overhead, while still having full access to project context via MCP when needed.
Terminal Buffer Limits Increased
Increased all terminal output buffer limits for longer agent sessions.
What Changed:
- ✅ xterm scrollback: 5,000 → 50,000 lines
- ✅ IPC session buffer: 200 KB → 1 MB
- ✅ PTY pattern buffer: 24 KB → 100 KB
User Benefit: Users can scroll back through much more terminal history during and after agent runs.
Terminal Always Writable
The agent terminal no longer locks to read-only after a session completes.
What Changed:
- ✅ Removed
disableStdintoggle — terminal accepts input at all times - ✅ Removed input guard that blocked keystrokes after session end
- ✅ Updated label from "Read-only" to "Completed"
User Benefit: Users can continue interacting with the terminal after an agent session finishes — works the same for both Codex and Claude Code.
Agent Service Refactoring
Extracted action item assignment logic into dedicated service classes.
What Changed:
- ✅ New
LocalCodingAgentActionItemServicefor action item run orchestration - ✅ New
AgentContextFileManagerfor managing agent context files and user action prompts - ✅ New database migration for agent context declined paths
- ✅ Comprehensive unit tests for both new services
User Benefit: Internal architecture improvement for better maintainability and testability of the agent system.
📅 Release Info
- Version: 0.7.15-beta.1
- Release Date: 2026-03-21
- Previous Version: 0.7.14-beta.1
- Type: Patch Beta Release
v0.7.14-beta.1
BetaTensorPM v0.7.14-beta.1 (Beta)
March 20, 2026
Changelog - v0.7.14-beta.1
Faster Claude Conversations
Claude-powered chats in TensorPM are now more efficient during multi-turn conversations.
What's New
- Prompt caching for Claude chats — TensorPM now enables Anthropic prompt caching for ongoing Claude conversations, which can reduce repeated prompt costs and improve response speed on follow-up messages.
- More accurate Claude token accounting — Token usage now includes cached prompt reads and cache creation, so usage reporting better reflects the full size of each Claude request.
- Smarter follow-up context after AI edits — After AI tools update project data, TensorPM refreshes project context before the next response so follow-up reasoning stays aligned with the latest state.
Improvements
- Criteria coverage rendering now safely supports bold inline formatting without breaking header layout
- Coverage split layout uses full-width spacing for a cleaner review view
- Inline markdown parsing better handles
<strong>content coming from AI-generated guidance
Notes
- Added an internal architecture assessment document covering provider API migration strategy for OpenAI, Anthropic, Google, and Mistral.
Release Info
- Version: 0.7.14-beta.1
- Release Date: 2026-03-20
- Previous Version: 0.7.13-beta.2
- Type: Patch Release (Beta)
v0.7.13-beta.2
BetaTensorPM v0.7.13-beta.2 (Beta)
March 20, 2026
Changelog - v0.7.13-beta.2
MCP Bridge Reliability
The MCP Bridge — the connection between TensorPM and external AI tools like Claude Code, Cursor, or Windsurf — is now more reliable and communicative.
What's New
- Persistent auth tokens — TensorPM now reuses the MCP auth token across restarts instead of generating a new one each time. This means your connected AI tools (Claude Code, Cursor, etc.) no longer need to be restarted after TensorPM restarts.
- Clear status notifications — When you toggle the MCP Bridge on or off, TensorPM now shows a confirmation dialog with guidance about what to expect for connected clients.
- Startup failure detection — If the MCP Bridge fails to start (e.g., port conflict from a previous session), you now get a clear error message instead of silent failure.
Bug Fixes
- Fixed budget field display values not syncing correctly during onboarding
- Fixed project generation display not being centered
- Chat and Review buttons now consistently show their disabled state when no AI provider is configured
Release Info
- Version: 0.7.13-beta.2
- Release Date: 2026-03-20
- Previous Version: 0.7.13-beta.1
- Type: Patch Release (Beta)
v0.7.13-beta.1
BetaTensorPM v0.7.13-beta.1 (Beta)
March 19, 2026
Changelog - v0.7.13-beta.1
New Onboarding Experience
TensorPM now greets you with a fully conversational onboarding. Instead of filling out forms, you chat with TensorPM to set up your workspace and create your first project — all in one flow.
What's New
- Conversational setup — TensorPM asks your name, how hands-on you'd like the AI to be, and what your project is about
- First project generated automatically — Describe your project in a few sentences and TensorPM creates it for you, complete with structure and milestones
- Warm, human copy — Every message, button, and prompt has been rewritten for clarity and personality
- AI provider setup at the right moment — After your project is created, TensorPM explains why connecting an AI provider matters and guides you through setup
Wizard Improvements
- Chat and Review buttons are now disabled when no AI provider is configured, with a clear tooltip explaining how to connect one
- Previously, clicking these buttons without AI setup would silently fail
Bug Fixes
- Fixed lint errors in API key save handlers (ApiKeyIPCHandler)
- Removed unused Fragment wrapper in onboarding composer
- Fixed typewriter completion delay for snappier transitions
Release Info
- Version: 0.7.13-beta.1
- Release Date: 2026-03-19
- Previous Version: 0.7.12-beta.4
- Type: Minor Release (Beta)
v0.7.12-beta.3
BetaTensorPM v0.7.12-beta.3 (Beta)
March 18, 2026
Changelog - v0.7.12-beta.3
Improvements
Fixed Public Release Publishing Flow
This beta updates the release automation so packaged builds can be published more reliably to the public download repository.
What Changed:
- The GitHub release step now passes the dedicated releases token explicitly to the public release action
- Beta tags are now marked as prereleases in the public GitHub release flow
- Beta releases are no longer flagged as the latest stable release during publication
User Benefit: Beta builds can be published more consistently, and prerelease channels stay clearly separated from stable downloads.
Notes
- This beta carries forward the lockfile and Windows build reliability fixes from
0.7.12-beta.2. - The main goal of this follow-up beta is release pipeline correctness.
Release Info
- Version: 0.7.12-beta.3
- Release Date: 2026-03-18
- Previous Version: 0.7.12-beta.2
- Type: Patch Beta Release
v0.7.10-beta.2
TensorPM v0.7.10-beta.2 (Beta)
March 12, 2026
Changelog - v0.7.10-beta.2
🎉 New Features
Smarter Refresh Detection For AI Insights
TensorPM now keeps a compact signature of the project context whenever it generates AI status, progress, or guidance results.
What Changed:
- ✅ Project status and progress evaluations now store metadata that reflects the project state at generation time
- ✅ Guidance results now remember the context they were created from
- ✅ The dashboard can now tell the difference between "still fresh" and "fresh timestamp, but outdated context"
User Benefit: You get fewer misleading "up to date" states. When important project context changes, TensorPM can prompt a focused refresh instead of showing stale AI insight as current.
🐛 Bug Fixes
More Reliable Combined Status Refresh
Improved the shared project status + progress refresh flow so partial completions are handled more clearly.
What Changed:
- ✅ Partial success is now surfaced correctly when only one part of a combined AI refresh succeeds
- ✅ Daily auto-refresh no longer marks itself complete after an incomplete combined result
- ✅ Manual status saves now sign the updated status state correctly
User Benefit: Background and manual refreshes behave more predictably, especially when one AI step succeeds and another fails.
🏗️ Improvements
Cleaner AI Cards And Refresh Workflow
Several UI details were tightened up around AI output and dashboard refresh behavior.
What Changed:
- ✅ Distillate change tables render more cleanly when fields have uneven numbers of changes
- ✅ Stray text fragments next to distillate tool-call cards are suppressed
- ✅ Progress freshness is tracked separately from status freshness in the welcome context box
- ✅ Added regression coverage for migrations, IPC, guidance metadata, refresh planning, and status generation
User Benefit: The AI panel reads more cleanly, and the dashboard refresh recommendations are more precise.
📝 Notes
- This beta focuses on freshness accuracy and safer refresh behavior rather than major visible surface-area changes.
📅 Release Info
- Version: 0.7.10-beta.2
- Release Date: 2026-03-12
- Previous Version: 0.7.10-beta.1
- Type: Minor Beta Release
v0.7.10-beta.1
TensorPM v0.7.10-beta.1 (Beta)
March 11, 2026
Changelog - v0.7.10-beta.1
🎉 New Features
Conversational Onboarding Experience
TensorPM now greets you with one of five cinematic opening lines — randomly selected each time you launch the app for the first time.
What Changed:
- ✅ Five themed opening presets: The Matrix, 2001: A Space Odyssey, The Terminator, Iron Man, and Skyrim
- ✅ All texts rewritten for a more natural, conversational tone (contractions, shorter sentences)
- ✅ AI activity level descriptions simplified — no more technical "token" language
User Benefit: The first impression feels personal and fun instead of robotic. Each fresh start is a little different.
🏗️ Improvements
Enhanced Authentication & Onboarding Flow
Improved the overall onboarding process with better authentication form integration.
What Changed:
- ✅ Enhanced authentication form for smoother account setup
- ✅ Better button widths and layout for improved responsiveness
📝 Notes
- This is the first beta of the 0.7.10 cycle.
📅 Release Info
- Version: 0.7.10-beta.1
- Release Date: 2026-03-11
- Previous Version: 0.7.9-beta.14
- Type: Minor Beta Release
v0.7.9-beta.14
TensorPM v0.7.9-beta.14 (Beta)
March 9, 2026
Changelog - v0.7.9-beta.14
🎉 New Features
Daily Automatic Project AI Run
TensorPM can now run the active project's AI status automatically once per day.
What Changed:
- ✅ Added a new
Daily Auto AI Runsetting in General Settings - ✅ TensorPM now remembers whether the daily run already happened
- ✅ The setting is stored safely in app settings and covered by migration/tests
User Benefit: Your active project can receive a fresh AI status update automatically without needing a manual trigger every day.
🐛 Bug Fixes
More Reliable Windows Folder Delete Flow
This beta fixes the Windows-specific file explorer issue where deleted folders could remain visible or behave inconsistently during nested explorer flows.
What Changed:
- ✅ Stabilized folder delete handling for Windows file explorer flows
- ✅ Fixed native explorer action logging used by the Windows regression tests
- ✅ Improved delete retries and watcher coordination during directory removal
User Benefit: Deleting folders in the file explorer is now more reliable on Windows, especially in nested and fast-changing folder structures.
🏗️ Improvements
Broader UI And Explorer Regression Coverage
This beta significantly expands automated coverage across important desktop workflows.
What Changed:
- ✅ Added focused Windows file explorer race-condition and delete regression coverage
- ✅ Added new end-to-end coverage for settings, people, budget, search, priority, timeline, context menu, and project profile tabs
- ✅ Added supporting unit and integration tests for settings, subscription monitoring, and migration behavior
User Benefit: Core desktop workflows are better protected against regressions, making upcoming betas safer and more predictable.
📝 Notes
- This beta combines a new automation setting with reliability work in the desktop app and its test pipeline.
- The strongest behavioral fix in this release is the Windows file explorer delete stabilization.
📅 Release Info
- Version: 0.7.9-beta.14
- Release Date: 2026-03-09
- Previous Version: 0.7.9-beta.13
- Type: Patch Beta Release
v0.7.9-beta.7
TensorPM v0.7.9-beta.7 (Beta)
March 8, 2026
Changelog - v0.7.9-beta.7
🏗️ Improvements
Safer Dependency Refresh Without Breaking Electron Startup
This beta updates a conservative set of packages while avoiding the high-risk jumps that caused runtime instability.
What Changed:
- ✅ Refreshed a set of safe patch and minor dependencies across the app and E2E package
- ✅ Kept
better-sqlite3on its current compatible release because it is already the latest stable version for the current Node runtime - ✅ Pinned the GitHub Copilot SDK back to the known-good runtime path so Electron no longer trips over the
vscode-jsonrpc/nodeimport mismatch
User Benefit: TensorPM gets dependency maintenance improvements without introducing unnecessary packaging or startup regressions.
More Robust Windows AI Settings Validation
The Windows CI failure in the AI settings screen turned out to be a valid fallback state, not a broken UI.
What Changed:
- ✅ Updated the AI settings E2E coverage to accept both supported UI modes:
- ✅ Provider selection mode when AI providers are available
- ✅ “AI features not available” fallback mode when no provider access is configured
- ✅ Kept direct API key input validation in both cases
User Benefit: Windows release validation now treats legitimate no-provider states correctly instead of failing on a valid fallback screen.
Cleaner Playwright Typing In Electron Bridge Calls
The project-folder and Explorer diagnostics specs now use a simpler Electron bridge access pattern inside browser-side callbacks.
What Changed:
- ✅ Replaced brittle
window.electroncallback typing with a simplerglobalThisaccess pattern in the affected specs - ✅ Avoided TypeScript editor noise without changing runtime behavior
User Benefit: The E2E suite is easier to maintain and less likely to surface misleading TypeScript errors in editor tooling.
📝 Notes
- This beta is a follow-up to
0.7.9-beta.6. - ESLint remains intentionally excluded from the beta release path.
📅 Release Info
- Version: 0.7.9-beta.7
- Release Date: 2026-03-08
- Previous Version: 0.7.9-beta.6
- Type: Patch Beta Release
v0.7.8-beta.6
TensorPM v0.7.8-beta.6 (Beta)
March 4, 2026
Changelog - v0.7.8-beta.6
Automatic Crash Reporting
When TensorPM encounters a fatal error, you'll now see a dialog asking if you'd like to send an automatic bug report. This helps us identify and fix critical issues faster.
What's included in the report:
- Crash details and stack trace
- Support bundle with logs and system info (if available)
- Works even if you're not logged in (uses your device ID)
Bug Fixes
- Dashboard division-by-zero: Fixed a crash when viewing project metrics or insights on empty projects (0 total items)
- Progress view safety: The Recent Accomplishments section no longer crashes when action items, milestones, or success criteria haven't loaded yet
- Window destroy race condition: Fixed occasional crashes during app shutdown when maximize/unmaximize events fired on already-destroyed windows
- Shutdown stability: Uncaught exceptions during shutdown are now silently logged instead of triggering cascading fatal shutdowns
Improvements
- Recent Accomplishments: The list now dynamically adjusts the number of visible items based on available space using a resize observer
- Bug report success screen: Now includes a link to our Telegram community for follow-up
- Database sync flush: Improved shutdown sequence to properly flush the PowerSync database queue before closing
- Dependency updates: Security and maintenance updates for underscore, ajv, minimatch, and several dev dependencies
Release Info
- Version: 0.7.8-beta.6
- Release Date: 2026-03-04
- Previous Version: 0.7.8-beta.5
- Type: Beta Patch Release
v0.7.8-beta.5
TensorPM v0.7.8-beta.5 (Beta)
March 1, 2026
Changelog - v0.7.8-beta.5
🎉 New Features
Post-Wizard AI Kickoff
Nach dem Erstellen eines neuen Projekts über den Wizard bietet TensorPM jetzt an, automatisch erste Kategorien und Action Items per AI zu generieren. Ein modaler Dialog ("Kickstart Your Project") erscheint nach dem Abschluss des Wizards — bei Bestätigung öffnet sich der AI-Chat und sendet den Kickoff-Prompt automatisch.
Was ist neu:
- ✅ "Kickstart Your Project"-Modal nach Wizard-Abschluss (nur wenn AI-Provider konfiguriert)
- ✅ Automatisches Öffnen und Senden im AI-Chat bei Bestätigung
- ✅ Animierter "Create"-Button mit rotierendem Conic-Gradient-Border (Dark & Light Theme)
- ✅ "Not now"-Option zum Überspringen
AI Panel Prompt Launcher
Neuer generischer Hook (useAIPanelPromptLauncher) ermöglicht es, den AI-Chat programmatisch mit einem vorausgefüllten Prompt zu öffnen — inklusive Auto-Send-Option. Dieser Mechanismus ist wiederverwendbar für zukünftige Features.
🐛 Bug Fixes
SyncReplicator: Syncable-Filter vor PowerSync-Check
Der SyncReplicator prüfte bisher zuerst, ob PowerSync verfügbar ist, bevor er Records auf Sync-Fähigkeit filterte. Das führte dazu, dass Delete-Operationen mit unfilterten Records in die Queue geschrieben wurden. Jetzt wird zuerst gefiltert und dann die PowerSync-Verfügbarkeit geprüft.
Welcome Modal: Theme-Kompatibilität
Das Welcome-Modal nutzte hardcoded Farben (#1a1a1a, #ffffff), die im Light Theme schlecht aussahen. Jetzt werden CSS-Variablen und Gradients verwendet, die in beiden Themes korrekt dargestellt werden.
🏗️ Improvements
Anwendungs-Resilienz und Shutdown-Handling
Umfassende Verbesserungen der Stabilität bei unerwarteten Fehlern und Fenster-Problemen:
- ✅ Fatal Shutdown: Bei
uncaughtExceptionwird ein geordneter Shutdown eingeleitet (mit 15s Fallback-Timer) - ✅ Window Recovery: Automatische Wiederherstellung bei Renderer-Crashes (bis zu 3 Versuche mit steigendem Delay)
- ✅ Navigation Guard: Blockiert ungültige URLs und
file://-Navigation, die den Renderer zerstören könnten - ✅ Show-Timeout: Falls
ready-to-shownicht innerhalb von 15s feuert, wird das Fenster erzwungen angezeigt - ✅ Load-Retry: Bis zu 3 Versuche beim initialen Laden der App-URL mit exponentiellem Backoff
- ✅ Shutdown Exit-Code:
shutdown()akzeptiert jetzt einen Exit-Code (0 oder 1) für korrekte Prozess-Beendigung
Performance-Optimierungen
- ✅ Column Resize: Drag-Preview aktualisiert nur noch die geänderte CSS-Variable statt aller Spalten. Sticky-Position-Neuberechnung nur bei relevanten Spalten (Status)
- ✅ useChatUI: Return-Objekt mit
useMemostabilisiert — verhindert unnötige Re-Renders in abhängigen Komponenten - ✅ AIPanelContainer:
sendMessageüber Ref gelesen statt als Effect-Dependency — verhindert Effect-Retriggering - ✅ useColumnManagement: Redundante
Date.now()-Throttle entfernt (RAF begrenzt bereits auf Framerate) - ✅ StickyScrollbar:
setTimeout-basiertes Lock durchrequestAnimationFrameersetzt — flüssigeres Scrollverhalten
Z-Index und CSS
- ✅ Hardcoded z-Index-Werte durch
calc()-Ausdrücke mit CSS Custom Properties ersetzt - ✅
isolation: isolateauf Tabellen-Ebene für deterministisches Stacking - ✅ Kategorie-Zeilen explizit linksbündig (
text-align: left) als Guard gegen zentrierte Table-Zellen - ✅ Settings-Gear-Button auf kompakte 28px fixiert
- ✅ Welcome-Modal und Kickoff-Modal mit konsistentem Accent-Gradient-Design
🧪 Test Coverage
- 31 neue Tests, Gesamtanzahl: 4989 Tests in 350 Dateien
- Neue Testbereiche:
- WindowManager: Navigation Guard, Crash Recovery, Show-Timeout
- AppManager: Fatal Shutdown, Email Connector Ingest
- SyncReplicator: Syncable-Filter-Reihenfolge
- useAIPanelPromptLauncher: Prompt-Speicherung, Blank-Guard, Auto-Send
- usePostWizardAIOffer: Modal-State, Kickoff-Prompt
- WizardAIGenerationModal: Render, Escape, Button-Callbacks
- ActionListStyleGuards: CSS-Regressions-Guards für z-Index und Layout
- App Integration: End-to-End Wizard → AI Kickoff Flow
📅 Release Info
- Version: 0.7.8-beta.5
- Release Date: 2026-03-01
- Previous Version: 0.7.8-beta.4
- Type: Beta Release
v0.7.8-beta.4
TensorPM v0.7.8-beta.4 (Beta)
March 1, 2026
Changelog - v0.7.8-beta.4
🐛 Bug Fixes
Git Stories: Milestone und Date-Separator Überlappung
Milestones (z.B. "Beta Version Stabilization · in 10 days") und Date-Separatoren (z.B. "THIS WEEK", "TODAY") konkurrierten um dieselbe Linie im Git-Timeline-View und überlagerten sich visuell.
Was wurde gefixt:
- ✅ Milestones werden jetzt oberhalb des Date-Separators gestapelt statt auf derselben Linie
- ✅ Dynamische
margin-top-Berechnung wenn beide Marker gleichzeitig vorhanden sind
List View: Kategorie-Zeilen überlagern Header
Lange Kategorie-Namen in der Action-Item-Liste flossen über ihre Spalte hinaus und überlagerten den sticky Header (z.B. "Priority"-Spalte).
Was wurde gefixt:
- ✅ Kategorie-Content wird jetzt innerhalb der Zelle geclippt statt sichtbar überzulaufen
- ✅ Lange Kategorie-Namen werden mit Ellipsis ("...") abgeschnitten
- ✅ Action-Buttons (➕/➖) bleiben weiterhin sichtbar
🏗️ Improvements
Z-Index-System konsistent gemacht
Die Header-Z-Index-Werte der List View nutzten hardcoded Werte (7, 10) statt der definierten CSS-Variablen. Jetzt verwenden alle Header-Elemente das --z-sticky-header-Variablensystem.
📅 Release Info
- Version: 0.7.8-beta.4
- Release Date: 2026-03-01
- Previous Version: 0.7.8-beta.3
- Type: Beta Release
v0.7.8-beta.3
TensorPM v0.7.8-beta.3 (Beta)
February 28, 2026
Changelog - v0.7.8-beta.3
🎉 New Features
Git Commit Stories
Der File Explorer zeigt jetzt eine vollständige Git-Historie als interaktive Timeline. Commits werden als visuelle Stories dargestellt — mit Titel, Zusammenfassung, Kategorie (Feature, Fix, Improvement, etc.) und optionalen Screenshots. Ein Branch-Graph visualisiert die Repository-Struktur.
Was ist neu:
- ✅ Git Commit View mit Branch-Graph und Story-Karten
- ✅ Manuelles Erstellen und Bearbeiten von Commit Stories
- ✅ Image Carousel für Screenshots pro Commit
- ✅ Milestone- und Time-Marker zur zeitlichen Orientierung
Local Coding Agent für Git Stories
Claude Code oder Codex können jetzt lokal gestartet werden, um automatisch Commit Stories aus der Repository-Historie zu generieren. Der Agent analysiert Commits, Diffs und geänderte Dateien und erstellt daraus aussagekräftige Stories.
Was ist neu:
- ✅ Play/Stop-Button im File Explorer zum Starten und Abbrechen der Generierung
- ✅ Konfigurierbare Runtime-Optionen (Agent-Typ, Modell, Max Turns)
- ✅ Fortschrittsanzeige während der Generierung
Erweiterte Action-Item-Felder
Action Items unterstützen jetzt zusätzliche Felder für detailliertere Projektplanung:
- ✅ Block Reason — Warum ist ein Item blockiert?
- ✅ Plan Effort — Geschätzter Aufwand
- ✅ Plan Budget — Budgetierte Kosten
- ✅ Verbesserte AI-Vorschläge für alle neuen Felder
🐛 Bug Fixes
Distiller respektiert User-Korrekturen in Phase 3
Wenn der User in der Chat-Interaktion einen KI-Vorschlag korrigiert hat (z.B. 620m² → 500m²), wurde dieser korrigierte Wert in Phase 3 fälschlich wieder überschrieben. Die KI sah die User-Korrektur nicht im Kontext und schlug den Original-Wert erneut vor.
Was wurde gefixt:
- ✅ Chat-Bubble enthält jetzt die vollständige Konversation seit Phase 1 (inkl. User-Korrekturen)
- ✅ Neuer Completion-Boundary-Algorithmus verhindert Kontext-Verlust zwischen Phasen
- ✅ Prompt-Regel: User-Korrekturen haben Vorrang vor dem Quelldokument
Dev-Logs in korrektem Verzeichnis
Entwicklungs-Logs werden jetzt zuverlässig im Repository-Ordner (logs/) geschrieben statt im userData-Verzeichnis. Zusätzlich kann der Log-Pfad über TENSORPM_LOG_DIR überschrieben werden.
🏗️ Improvements
File Explorer Refactoring
- Aufspaltung in modulare Komponenten (Views, Header, Context Menus, Filter Overlay)
- Neue Hooks für Preferences, Drag & Drop, Context Menu und File Status
- Grid- und List-View mit konsistenten FileType-Icons
- Verbesserte File-Filter-Logik
Intake & File Watcher Optimierung
- Effizientere Refresh-Zyklen beim File Watcher
- Verbesserte Pending-Queue-Sortierung im Intake Indicator
- Batch-Operationen für Include/Ignore von mehreren Dateien
Trail Verbesserungen
- Snapshot-Diff-Utilities für visuelle Vergleiche
- Tool-Tracker-Normalisierung für konsistente Darstellung
- Distillate Table Viewer als eigenständige Komponente
MCP Server Erweiterungen
- Neue Routen: Git Commit Stories, Action Items, API Keys, Workspaces, Project Updates
- Git Story Tools mit automatischer Verfügbarkeitsprüfung
- Projekt-File-Path-Resolver für Sync-Funktionalität
Rate Limit Settings
Erweiterte Einstellungen für API Rate Limits mit granularer Kontrolle pro Provider.
🧪 Test Coverage
- 200+ neue Tests, Gesamtanzahl: 4958 Tests in 344 Dateien
- Neue Testbereiche: Git Commit Stories, Local Coding Agent, File Explorer Views, Intake Interactions, Distiller User Corrections, Path Config
📅 Release Info
- Version: 0.7.8-beta.3
- Release Date: 2026-02-28
- Previous Version: 0.7.8-beta.2
- Type: Beta Release
v0.7.8-beta.2
TensorPM v0.7.8-beta.2 (Beta)
February 24, 2026
Changelog - v0.7.8-beta.2
🏗️ Improvements
Improved Repository Query Efficiency
ActionItemRepositoryandPersonRepositoryqueries have been optimized with cleaner SQL and better join patternsRecurringItemRepositorynow retrieves attached files and assigned people in a single queryUploadReplicatoruses lightweight existence queries instead of full row counts for pending change detection
Content Sanitizer Fallback
Added a fallback mechanism in the content sanitizer for environments where structuredClone is unavailable, improving compatibility.
🧪 Test Coverage
- Added
DatabaseProjectService.saveProjectintegration tests (rollback on invalid categories, action item handling) - Added
FileRepository.getFilesByIdsintegration tests (active project files, corrupt JSON handling) - Added
UploadReplicator.hasPendingLocalChangesintegration tests (unsynced project row detection) - Added
DatabaseProjectService.saveProjectunit tests (dependency validation, timer management) - Added
DependencyValidatorunit tests for action item dependency validation - Added
RecurringItemRepositorytests for recurring items with files and people - Added
ActionItemRepositoryquery tests - Added
PersonRepositoryquery tests - Added
contentSanitizerstructuredClone fallback tests
📅 Release Info
- Version: 0.7.8-beta.2
- Release Date: 2026-02-24
- Previous Version: 0.7.8-beta.1
- Type: Beta Release
v0.7.8-beta.1
TensorPM v0.7.8-beta.1 (Beta)
February 23, 2026
Changelog - v0.7.8-beta.1
🎉 New Features
Project File Explorer Root Path
You can now configure a custom root path for the file explorer per project. This is especially useful for large repositories where you only want to monitor a specific subdirectory, reducing noise and improving performance.
Text Diff Viewer in Activity Trail
The activity trail now displays rich text diffs for changes, making it much easier to see exactly what changed in your action items, tables, and criteria. Changes are highlighted with clear add/remove formatting.
Action Item Display IDs in Trail
Action items now show their display ID (e.g., "AI-42") in the activity trail, making it easier to identify which item was changed at a glance.
Structured Changes for Action Items
The activity trail now renders structured changes for action items with dedicated formatting for each field type -- including tables, criteria lists, text areas, and budget timeframes.
Performance Logging
New built-in performance logging helps diagnose slow operations in file scanning and sync. Enable via environment variable for detailed timing data on file operations.
🏗️ Improvements
File System Watcher Optimization
- Improved event deduplication to prevent redundant file processing
- Custom ignored folders support via environment variables
- Better handling of large directory trees
Trail Component Refactoring
The Trail component has been significantly refactored for better maintainability. Field renderers, diff formatters, and change renderers are now modular, extracted into dedicated components. This improves rendering performance and makes future enhancements easier.
Dependency Updates
- Anthropic SDK: 0.74.0 -> 0.78.0
- Google GenAI SDK: 1.41.0 -> 1.42.0
- PowerSync Node: 0.16.0 -> 0.17.1
- Electron Builder: 26.7.0 -> 26.8.1
- Electron Updater: 6.7.3 -> 6.8.3
🧪 Test Coverage
- Added FileIPCHandler tests for project file picker
- Added ProjectSettingsIPCHandler tests for validation and error handling
- Added ProxyIPCHandler auth restore tests
- Added PowerSyncService and PowerSyncAdapter sync tests
- Added performance logging utility tests (backend + frontend)
- Added file explorer thunks tests
- Added file filter utility tests
- Added useFileSystemWatcher hook tests
- Added SyncStatusIndicator component tests
- Added Trail field content renderer tests
- Added action item diff formatter tests
- Added table diff block and renderer tests
- Added tool tracker normalization tests
- Added file repository tests
- Added migration tests for file explorer root path
📅 Release Info
- Version: 0.7.8-beta.1
- Release Date: 2026-02-23
- Previous Version: 0.7.7-beta.2
- Type: Beta Release
v0.7.7-beta.2
TensorPM v0.7.7-beta.2 (Beta)
February 23, 2026
Changelog - v0.7.7-beta.2
🎉 New Features
Gemini 3.1 Pro Support
Google's newly released Gemini 3.1 Pro model is now available as an AI provider option. This model doubles the reasoning performance of the previous Gemini 3 Pro and offers significantly more output capacity.
- Model: Gemini 3.1 Pro (Preview)
- Context window: ~1M tokens
- Max output: 65,536 tokens (8x more than Gemini 3 Pro)
🐛 Bug Fixes
Improved Subscription Quota Error Handling
Fixed an issue where quota exhaustion errors for specific subscription tiers (Pro, Cloud, Free Trial) were not always recognized correctly. Previously, only generic rate limit errors triggered the friendly quota modal — now all tier-specific quota errors are properly detected and displayed with a clear message, regardless of subscription type.
🧪 Test Coverage
- Added ProjectIPCHandler quota error handling tests
- Added ProxyProvider rate limit classification tests
- Added ProxyHttpClient quota error type recognition tests
📅 Release Info
- Version: 0.7.7-beta.2
- Release Date: 2026-02-23
- Previous Version: 0.7.7-beta.1
- Type: Beta Release
v0.7.7-beta.1
TensorPM v0.7.7-beta.1 (Beta)
February 22, 2026
Changelog - v0.7.7-beta.1
🎉 New Features
Welcome Modal for New Users
New users are now greeted with a friendly welcome modal on first launch. The modal introduces TensorPM, explains key next steps (setting up an API key, using the chat, connecting via MCP/A2A), and offers a guided tutorial to get started quickly.
- One-time display — once dismissed, it won't appear again
- Option to launch the interactive tutorial directly from the modal
- Accessible via Help menu ("Show Welcome") to revisit at any time
Antigravity MCP Integration
TensorPM can now be installed as an MCP server in Antigravity, expanding the range of AI tools that can interact with your projects.
Continue (YAML config) Support
The MCP connector installer now supports Continue's newer YAML-based configuration format (config.yaml) in addition to the legacy JSON format, ensuring seamless setup regardless of which Continue config style you use.
🐛 Bug Fixes
File Explorer Icon Fix
Fixed an issue where the grid icon in the File Explorer was not rendering correctly due to incorrect component name casing.
🏗️ Improvements
Platform Header for Cloud Services
All outgoing requests to TensorPM cloud services (authentication, subscription checks, auto-updates) now include a platform identifier header. This enables better analytics and platform-specific behavior in future updates.
🧪 Test Coverage
- Added migration tests for the new
welcome_shownsetting - Added Antigravity MCP integration detection and installation tests
- Added Continue YAML config compatibility tests
- Updated onboarding and tutorial flow tests for the welcome modal
- Added platform header assertion tests for AuthStateManager, SubscriptionWatcher, and AutoUpdateService
📅 Release Info
- Version: 0.7.7-beta.1
- Release Date: 2026-02-22
- Previous Version: 0.7.6-beta.8
- Type: Beta Release
v0.7.6-beta.8
TensorPM v0.7.6-beta.8 (Beta)
February 20, 2026
Changelog - v0.7.6-beta.8
Improvements
Windows Installer Modernization (Winget + AppX Flow)
- Added Windows AppX packaging target alongside NSIS to support modern installation paths.
- Enhanced
scripts/install.ps1to use this order:wingetfirst (silent/non-interactive by default),- direct
TensorPM.appxfallback, TensorPM-Setup.exeas final fallback.
- Updated Windows uninstall completion flow to route users to Apps & Features instead of relying on a fixed NSIS uninstaller path.
Signing and Release Pipeline
- Set AppX publisher DN to the real signing identity:
CN=Simon Schwer, O=Simon Schwer, L=Fürth, S=Bavaria, C=DE
- Updated Azure Trusted Signing filter to include both
exeandappx. - Extended release assets handling to keep and publish AppX/AppInstaller artifacts.
Test Coverage
- Added/updated installer-focused tests for:
- PowerShell installer structure and AppX fallback flow.
- Windows packaging configuration (
appxtarget and publisher assertion).
Release Info
- Version: 0.7.6-beta.8
- Release Date: 2026-02-20
- Previous Version: 0.7.6-beta.7
- Type: Beta Release
v0.7.6-beta.5
TensorPM v0.7.6-beta.5 (Beta)
February 20, 2026
Changelog - v0.7.6-beta.5
Bug Fixes
Windows NSIS Update Data Safety
- Fixed NSIS uninstall behavior during auto-update so user data is preserved when uninstall is invoked with update flags.
- Added guard logic in
installer.nshfor--updatedand/KEEP_APP_DATApaths to prevent deleting local AppData contents during upgrade flows. - Regular explicit uninstall behavior remains unchanged.
Test Coverage
- Added a dedicated unit test to verify NSIS uninstall guard behavior:
tests/unit/scripts/installerNshUninstallGuard.test.ts- Confirms update flags are detected.
- Confirms destructive AppData cleanup commands are only executed in the non-update branch.
Release Info
- Version: 0.7.6-beta.5
- Release Date: 2026-02-20
- Previous Version: 0.7.6-beta.4
- Type: Patch Release (Beta)
v0.7.6-beta.3
TensorPM v0.7.6-beta.3 (Beta)
February 20, 2026
Changelog - v0.7.6-beta.3
Bug Fixes
Guidance Layout on Windows (Production)
- Fixed Guidance panel rendering at incorrect width in production builds on Windows.
- Root cause: duplicate CSS selectors across
guidance.cssand specialized files (summary.css,container.css,controls.css,lists.css) caused unpredictable layout when Vite reordered CSS during production bundling. - Removed ~370 lines of legacy duplicate CSS rules from
guidance.css, consolidating all definitions into their canonical specialized files. - Affected components: Guidance content container, quality badges, guidance grid, group-by select, summary header, status observations, and manual mode indicators.
HTML Entity Decoding for Non-ASCII Characters
- Expanded HTML entity decoding from 6 entries to ~75, covering German umlauts (ä, ö, ü, ß), French/Romance accents (é, è, ê, ç, ñ), Nordic characters (å, ø, æ), and common symbols (€, ©, °, –, …).
- Fixed action item text showing raw entities like
Festpreisverträgeinstead ofFestpreisverträge. - Added case-sensitive entity lookup with lowercase fallback for proper upper-case handling (Ä vs ä).
Email Attachment Path Storage (Cross-Platform)
- Fixed email attachment paths being stored with OS-specific separators (backslashes on Windows).
- Paths are now always stored with forward slashes for consistent cross-platform behavior.
Cross-Platform Test Compatibility
- Fixed 35 test failures on Windows caused by Node.js >= 22 localStorage changes, Vitest environment mismatches, and TOML backslash escaping.
Test Coverage
- Added 20 unit tests for
decodeHtmlEntitiesandstripHtmlToTextcovering all entity categories, edge cases, and mixed content.
Release Info
- Version: 0.7.6-beta.3
- Release Date: 2026-02-20
- Previous Version: 0.7.6-beta.2
- Type: Patch Release (Beta)
v0.7.6-beta.2
TensorPM v0.7.6-beta.2 (Beta)
February 19, 2026
Changelog - v0.7.6-beta.2
Improvements
Anthropic Model Refresh (4.6)
- Updated Anthropic defaults to Claude Sonnet 4.6.
- Added Claude Opus 4.6 and Claude Sonnet 4.6 model entries and UI labels.
- Kept Claude Opus 4.5 available as requested.
- Removed Claude Sonnet 4.5 from selectable provider configuration.
- Added Claude 4.6-specific generation parameters:
thinking: { type: "adaptive" }output_config.effortdefaults (mediumfor Sonnet 4.6,highfor Opus 4.6)
Action Item Text Cleanup
- Added centralized HTML entity decoding for AI-generated text.
- Fixed
&style artifacts in action list and timeline item text. - Applied decoding to distillation, blueprint validation, formatter cleanup, and action item update paths.
Test Coverage
- Updated Anthropic provider/unit integration tests for Sonnet 4.6 defaults and thinking behavior.
- Added regression coverage for HTML entity decoding in AI text formatting and action item conversion paths.
- Verified relevant suite locally before release.
Release Info
- Version: 0.7.6-beta.2
- Release Date: 2026-02-19
- Previous Version: 0.7.6-beta.1
- Type: Patch Release (Beta)
v0.7.6-beta.1
TensorPM v0.7.6-beta.1 (Beta)
February 18, 2026
Changelog - v0.7.6-beta.1
New Features
Email Connector Intake
- Added email connector support for ingesting emails from IMAP mailboxes into project intake.
- Background IMAP listener maintains persistent connections with automatic reconnection and exponential backoff.
- Debounced incremental sync on INBOX changes with fallback polling every 10 minutes.
- Email deduplication via unique key prevents duplicate intake entries across synced devices.
- Claim-based locking prevents multiple devices from distilling the same update simultaneously.
- IMAP credentials securely stored via Electron safeStorage (never persisted in config JSON).
Connector Configuration UI
- Added Connector Overview Panel in the Wizard for managing email connectors.
- Configure IMAP server, port, security, and account credentials per connector.
- Assign connectors to specific projects with private or workspace-scoped intake.
- Visual connector status indicator in the header bar.
- Connection test validates IMAP credentials before saving.
Intake Ownership and Scoping
- Intake updates now support private and workspace visibility scopes.
- Owner-based filtering ensures users only see their own private intake items.
- Intake ignore/include operations respect scope and owner boundaries.
Improvements
Distiller Context Isolation
- Distiller now operates with strict context boundaries between updates, preventing stale context leakage.
- Phase 1 signal evaluation uses full project context for more accurate initial assessment.
- Backward search for signal activation prevents duplicate processing of already-handled signals.
MCP Tools Refactoring
- Extracted shared HTTP header building into reusable helper across all MCP tools.
- Added MCP client connection tracking with name and version identification.
Tutorial System Enhancements
- Added wizard and project-explorer tutorial sections for new user onboarding.
- Extended step timeout for wizard elements that require longer render times.
- Tutorial now gracefully handles optional steps that may not be visible.
Cross-Device Sync
- Claim and dedupe fields sync across devices via PowerSync for multi-user coordination.
- PostgreSQL schema updated with claim/dedupe columns on project_updates table.
- Email messages stored locally only (not synced) to respect privacy boundaries.
Test Coverage
- Added 28 new test files covering connectors, repositories, services, IPC handlers, and UI components.
- Migration 008 tested for correctness and idempotency.
- Distiller workflow end-to-end test validates full signal processing pipeline.
- Total test count increased from ~4250 to ~4460 across 291 test files.
Release Info
- Version: 0.7.6-beta.1
- Release Date: 2026-02-18
- Previous Version: 0.7.5-beta.6
- Type: Minor Beta Release
v0.7.5-beta.4
TensorPM v0.7.5-beta.4 (Beta)
February 17, 2026
Changelog - v0.7.5-beta.4
Bug Fixes
TypeScript 5.9 Compatibility
- Fixed a build failure caused by stricter control-flow analysis in TypeScript 5.9.3 that prevented CI builds on all platforms.
Improvements
Sync Reliability for AI + Workspace Switching
Further hardening of sync behavior when health checks, AI state, and workspace switching overlap.
- Health-view race fix: Eliminates a race where sync state could briefly report incorrectly in combined AI and workspace transitions.
- Coverage expansion: Adds targeted tests for AI and switching interaction paths to prevent regressions.
Sync Throughput and Upload Filtering
Refined queue handling for heavy sync scenarios.
- Rate-limit behavior improved: Better handling when sync is throttled under bursty traffic.
- Initial upload filtering: Reduces unnecessary first-pass uploads by filtering payloads more strictly.
- Additional tests: Broadens coverage around rate-limit and first-upload decisions.
Maintenance
- Dependency updates across development and production-minor groups.
- CI update for Azure trusted signing action.
Release Info
- Version: 0.7.5-beta.4
- Release Date: February 17, 2026
- Previous Version: 0.7.5-beta.3
- Type: Patch Release (Beta)
v0.7.5-beta.2
TensorPM v0.7.5-beta.2 (Beta)
February 15, 2026
Changelog - v0.7.5-beta.2
Improvements
Sync Integrity Hardening
Expanded resilience and adversarial test coverage for offline-first and reconnect flows.
- Pending delete durability: Failed pending-delete replays are retained and retried, preventing silent tombstone loss.
- Startup race guard: Idle status emission is now gated to running lifecycle state to avoid premature sync-complete signals.
- Deterministic chaos scenarios: Added scripted chaos proxy coverage for partition, drop, delay, and reorder conditions.
- Burst-load sync coverage: Added rapid-fire upload scenarios to verify no record drops under event bursts.
- User-switch safety coverage: Added tests for sidecar reset and expected-workspace wait/timeout paths.
- Realtime watermark safety coverage: Added tests for CRUD queue gating, fallback behavior, and watermark-clear conditions.
Release Info
- Version: 0.7.5-beta.2
- Release Date: February 15, 2026
- Previous Version: 0.7.5-beta.1
- Type: Patch Release (Beta)
v0.7.5-beta.1
TensorPM v0.7.5-beta.1 (Beta)
February 15, 2026
Changelog - v0.7.5-beta.1
Improvements
Distiller Skip Queue & Revisit Memory
Distiller now handles skipped proposals as explicit deferred updates with durable revisit context.
- Skip keeps full update pending: If one or more proposals are skipped, the signal is deferred to the end of the queue and re-presented later
- Per-update deferred memory: Skipped fields are persisted by update ID and automatically removed once that update is fully completed (approved or rejected)
- Revisit-aware execution: The next-signal handoff now includes a revisit hint when a deferred signal returns
- Prompt alignment: Distiller prompt guidance uses update-specific revisit context instead of showing global deferred lists
Safer Distiller Batch Decision Parsing
Batch decision handling now resolves conflicts deterministically.
- Last decision wins per field: If a field appears multiple times in one batch payload, the latest action is used
- Stable normalization: Approved/Appended/Rejected/Skipped field sets are derived from one normalized parser path
Test Coverage
Expanded test coverage for the full Distiller skip/revisit lifecycle.
- New parser unit tests for conflicting batch decisions
- New prompt unit tests for update-specific revisit context
- Extended real SQLite integration tests for deferred memory set/clear behavior and revisit hints in executor flow
Release Info
- Version: 0.7.5-beta.1
- Release Date: February 15, 2026
- Previous Version: 0.7.4-beta.1
- Type: Patch Release (Beta)
v0.7.4-beta.1
TensorPM v0.7.4-beta.1 (Beta)
February 14, 2026
Changelog - v0.7.4-beta.1
Improvements
Faster File Watching with Delta Updates
The file watcher has been significantly optimized to reduce unnecessary work when files change on disk.
- Delta updates for content changes: When a file is modified (but not added/removed), only the changed metadata (size, modified time) is sent to the UI — no full directory scan needed
- Coalesced structural changes: Multiple rapid file additions or deletions are batched together with a minimum 1.2s interval between full scans, preventing repeated expensive directory listings
- System file filtering at watcher level: Files like
.DS_Store,.git,node_modules, and temp files (~$...) are now filtered directly in the file watcher, so they never trigger events or appear in the file list - Legacy cleanup on startup: Previously registered system/temp files are automatically cleaned up when a project is opened
Reduced CPU Usage During Database Retries
SQLite busy-wait retries no longer spin the CPU. The retry delay now uses Atomics.wait for a true sleep, freeing CPU resources for other tasks.
Smarter Sync Polling
Workspace sync polling now uses adaptive intervals (starting at 250ms, scaling up to 1s) instead of a fixed 200ms poll, reducing unnecessary database queries during workspace switches.
UI Cleanup
- Removed a background interval that periodically cleared trail entries for inactive projects (unnecessary overhead)
- Minor formatting and code style improvements
Release Info
- Version: 0.7.4-beta.1
- Release Date: February 14, 2026
- Previous Version: 0.7.3-beta.2
- Type: Minor Release (Beta)
v0.7.3-beta.2
TensorPM v0.7.3-beta.2 (Beta)
February 13, 2026
Changelog - v0.7.3-beta.2
Improvements
Skill Renamed for Better Discoverability
The TensorPM agent skill has been renamed from tensorpm to tensorpm-agentic-pm to improve discoverability on skills.sh and other agent skill directories.
- Skill name updated across all SKILL.md frontmatter, marketplace.json, and plugin.json
- New description focuses on agentic project management keywords
- Positions TensorPM as the first dedicated project management skill on skills.sh
Release Info
- Version: 0.7.3-beta.2
- Release Date: February 13, 2026
- Previous Version: 0.7.3-beta.1
- Type: Patch Release (Beta)
v0.7.2-beta.8
TensorPM v0.7.2-beta.8 (Beta)
February 13, 2026
Changelog - v0.7.2-beta.8
Improvements
Canonical Skill Links in Published Agent Docs
Release automation now normalizes skill reference links for published docs so agents can load references directly from release artifacts without broken relative paths.
- Updated
.github/workflows/build.ymlto rewritereferences/*links in releaseSKILL.md SKILL.mdin release docs and Claude marketplace package now links to:MCP-TOOLS.mdA2A-API.mdACTION-ITEMS.md
- Prevents regressions where published skills referenced non-existent
references/paths
Release Info
- Version: 0.7.2-beta.8
- Release Date: February 13, 2026
- Previous Version: 0.7.2-beta.7
- Type: Patch Release (Beta)
v0.7.2-beta.5
TensorPM v0.7.2-beta.5 (Beta)
February 12, 2026
Changelog - v0.7.2-beta.5
Fixes
CI Type Safety for Release Metadata Sync Tests
Resolved a TypeScript CI error for script tests importing the release metadata sync helper:
- Added
scripts/release/syncReleaseMetadata.d.ts - Declared types for:
RELEASE_METADATA_FILESsyncReleaseMetadataVersions(...)- options/result interfaces used by tests
This ensures tsc --noEmit passes in CI for tests/unit/scripts/syncReleaseMetadata.test.ts.
Release Info
- Version: 0.7.2-beta.5
- Release Date: February 12, 2026
- Previous Version: 0.7.2-beta.4
- Type: Patch Release (Beta)
v0.7.2-beta.3
TensorPM v0.7.2-beta.3 (Beta)
February 12, 2026
Changelog - v0.7.2-beta.3
Improvements
Cross-Platform CLI Installer
TensorPM now includes install scripts for fast CLI-based setup:
scripts/install.shfor macOS and Linuxscripts/install.ps1for Windows- Linux supports package-manager mode and AppImage fallback
Agent-First MCP Integration via A2A
New A2A endpoints make MCP client setup automatable for agents:
GET /integrations/mcp/statusPOST /integrations/mcp/install- Supported clients include Claude Desktop/Code, GitHub Copilot, Cursor, Windsurf, Zed, Continue, Cline, Codex, and Codex CLI
Expanded Agent Documentation
Skill and agent docs are now structured and linked for direct consumption:
- Added
references/mcp-tools.md - Added
references/a2a-api.md - Added
references/action-items.md - Updated
SKILL.mdinstallation/runtime guidance
Release Pipeline: Publish Markdown Assets
The release workflow now uploads agent markdown docs to Neo552/TensorPM-Releases so agents can fetch them directly via release URLs.
Test Coverage for New Flows
Added targeted tests for:
- A2A MCP integration endpoints (status/install, alias handling, dispatch, failure paths)
- CLI installer behavior and script structure
Release Info
- Version: 0.7.2-beta.3
- Release Date: February 12, 2026
- Previous Version: 0.7.2-beta.2
- Type: Patch Release (Beta)
v0.7.2-beta.2
TensorPM v0.7.2-beta.2 (Beta)
February 11, 2026
Changelog - v0.7.2-beta.2
Improvements
Dev-Only Tool Tracker in Trail
Trail now shows the Tool Tracker panel only in development builds:
Tool Trackerand tool payload details are hidden in production- Development builds keep full visibility for debugging and verification
User-Locale Aware Trail Timestamps
Detected and Processed timestamps now follow the actual user locale and timezone:
- Removed forced English locale mapping for compact Trail timestamps
- Date/time output now uses the real user locale (for example
de-DEuses 24-hour format) - Explicit timezone handling remains intact
Stronger Date Formatting Test Coverage
Added focused regression tests for compact timestamp formatting:
- Locale behavior for
de-DE,en-US, anden-GB navigator.languagefallback behavior- Explicit timezone differences (
UTCvsEurope/Berlin) - Invalid/empty timestamp fallback handling
Release Info
- Version: 0.7.2-beta.2
- Release Date: February 11, 2026
- Previous Version: 0.7.2-beta.1
- Type: Patch Release (Beta)
v0.7.2-beta.1
TensorPM v0.7.2-beta.1 (Beta)
February 10, 2026
Release 0.7.2-beta.1
v0.7.1-beta.1
TensorPM v0.7.1-beta.1 (Beta)
February 10, 2026
Changelog - v0.7.1-beta.1
Bug Fixes
AI+ Priority Respects Locked State
Previously, background AI+ priority calculations were skipped entirely for locked action items. Now, AI+ values are still calculated and stored in the background, but the displayed priority remains set to 'user' while locked. When you unlock priority, the latest AI+ suggestion is immediately available.
- Fixed priority slider not syncing when AI+ updates arrive in the background
- Fixed calculating-priority spinner showing even when the displayed priority source is 'user'
- Action item text edits in the detail panel now trigger AI+ priority recalculation (previously only worked from the list row)
Priority Scale (1-10) Display Consistency
All priority displays throughout the app now correctly use the user's chosen priority scale setting (1-10 or 1-100):
- Context menu priority slider now respects the scale setting
- Kanban card priority tooltips show values in the correct scale
- Guidance cards and Smart Actions use scale-aware priority classes
- Trail / Distillator action item views display priorities in the correct scale
- Search results show priority in the user's preferred scale
- Improved band-aligned mapping between 1-100 internal and 1-10 display scales for more intuitive grouping
Action Item Row Improvements
- Action item text tooltip now shows only the display ID (cleaner, less redundant)
- Removed unnecessary priority-lock guard that prevented AI+ recalculation on text edits
Tutorial Fix
- Fixed React hooks exhaustive-deps warning in the tutorial component by stabilizing the optional steps array
Release Info
- Version: 0.7.1-beta.1
- Release Date: February 10, 2026
- Previous Version: 0.7.0-beta.1
- Type: Patch Release (Beta)
v0.7.0-beta.1
TensorPM v0.7.0-beta.1 (Beta)
February 9, 2026
Changelog - v0.7.0-beta.1
New Features
Distillator - AI-Powered Source Ingestion
The Distillator is a major new feature that lets your AI assistant process and distill information from external sources (documents, emails, MCP tools) into structured project updates.
- Proposal Cards: Each AI-suggested change is presented as a clear, reviewable card showing what will change and why
- Approve / Reject / Append / Skip: Full control over every proposed update before it touches your project
- Structured Change Views: See field-by-field diffs (status changes, priority updates, new items) in table or row layout depending on complexity
- Source Attribution: Every proposal shows its origin (email, document, MCP tool, Slack, Teams) with visual badges
- Carousel Navigation: Browse through multiple proposals from a single source with auto-advance after decisions
Quota Limit Management
Clear, informative handling when you reach your AI request limits.
- Quota Limit Modal: Friendly modal showing usage stats, progress bar, and reset date
- Inline Rate-Limit Indicators: Chat panel shows a subtle indicator when short-term rate limits are active
- Smart Error Classification: Distinguishes between monthly quota limits and short-term rate limits with appropriate messaging
- Backend Reset Date Fallback: Shows your reset date even when the usage API is temporarily unavailable
Bug Fixes
- Fixed duplicate error callbacks in streaming responses that could cause double error displays
- Fixed rate-limit UI indicator leaking across chat instances
- Fixed 5xx server error detection regex that could match unrelated numeric strings
- Added runtime type guard in Distillator status normalization to prevent crashes on unexpected data
- Fixed TipTap toolbar not wrapping properly when table control buttons are visible
Improvements
- Sidebar hover animation now smoothly expands from center outward
- Replaced magic error sentinel strings with shared constants
- Streaming error codes now propagated through Redux for reliable error classification
- Comprehensive test coverage for new Distillator and quota features (250 test files, 4137 tests)
- Updated development and production dependencies
Release Info
- Version: 0.7.0-beta.1
- Release Date: February 9, 2026
- Previous Version: 0.6.1-beta.1
- Type: Minor Release (Beta)
v0.6.1-beta.1
TensorPM v0.6.1-beta.1 (Beta)
February 7, 2026
Changelog - v0.6.1-beta.1
Bug Fixes
AI Category & People Resolution
- Fixed AI-generated action items losing their category assignment when the AI returned category names instead of internal IDs
- Fixed re-evaluated action items losing their
categoryIdandassignedPeopleafter the ForAI transformation stripped those fields - Added inverse lookup maps (
categoryNameToId,personNameToId) so AI-returned names are correctly resolved back to IDs without extra database calls
Chat Streaming Stability
- Fixed cancelled chat requests leaving ghost streaming indicators (spinner, typing dots) due to late backend events reviving the streaming state
- Fixed unexecuted tool calls (after cancel) appearing in the chat history
- Fixed tool execution continuing after user cancellation — cancelled tool calls now correctly stop the iteration loop
- Chat cancellation is now fully deterministic: no
requestIdmeans all late events are ignored
Project Profile Overlay
- Fixed the "AI is generating project structure" overlay incorrectly appearing during regular action item generation (it now only shows during project creation from prompt/document)
Wizard State Consistency
- Fixed stale wizard state causing projects to incorrectly open in wizard/interview mode by querying the database directly instead of relying on cached Redux state
- Fixed a race condition when rapidly switching projects that could create duplicate tabs
Release Info
- Version: 0.6.1-beta.1
- Release Date: 2026-02-07
- Previous Version: 0.6.0-beta.2
- Type: Patch (Bug Fixes)
v0.6.0-beta.2
TensorPM v0.6.0-beta.2 (Beta)
February 6, 2026
Changelog - v0.6.0-beta.2
Bug Fixes
- Fixed a crash on first launch for new installations caused by a missing database column (
enable_background_aiinapp_settings) - Existing users upgrading from previous versions were not affected
Release Info
- Version: 0.6.0-beta.2
- Release Date: 2026-02-06
- Previous Version: 0.6.0-beta.1
- Type: Patch (Hotfix)
v0.6.0-beta.1
TensorPM v0.6.0-beta.1 (Beta)
February 6, 2026
Changelog - v0.6.0-beta.1
New Features
Background AI Suggestions
When you type or create action items, AI now automatically suggests:
- Priority: Calculates a priority score based on your project context (existing since v0.5.x, now enhanced)
- People Assignments: Suggests team members based on their roles and the task content. Suggestions appear pre-selected in the person popup — press Enter to accept, or close to dismiss.
- Start & Due Dates: Suggests appropriate dates that appear provisionally in the date picker. Press Enter to accept, or click away to dismiss. An "AI" button in the calendar footer lets you apply the suggestion with one click.
All suggestions are non-destructive — they never overwrite values you've already set.
Background AI Toggle
You can now disable background AI suggestions entirely via Settings > App Settings > Background AI Suggestions. When disabled, no automatic AI calls are made when editing action items.
Enhanced AI Priority Explanations
AI-calculated priorities now include a human-readable reason explaining why that priority was chosen, visible in the priority tooltip.
Improvements
- Improved document handling in the project creation wizard
- Cleaned up legacy AI priority fields for a simpler, more maintainable codebase
- Added integration tests for schema constraints, sync behavior, and transaction atomicity
Release Info
- Version: 0.6.0-beta.1
- Release Date: 2026-02-06
- Previous Version: 0.5.2-beta.1
- Type: Minor (Beta) Release
v0.5.2-beta.1
TensorPM v0.5.2-beta.1 (Beta)
February 5, 2026
Changelog - v0.5.2-beta.1
New Features
Smarter AI Setup Guidance
When you try to use an AI feature without API keys configured, TensorPM now shows a friendly setup prompt instead of a confusing error message. One click takes you directly to the API key settings.
Bug Report Authentication
Submitting a bug report now asks you to create a free account or sign in before sending. This helps us follow up on your reports and provide better support. Your form data is fully preserved throughout the process, and authenticated users see no extra steps.
Improvements
Updated Onboarding Tutorial
The tutorial now includes a new step for the workspace switcher and follows the actual header button layout from right to left, making it easier to follow along.
Internal Cleanup
Removed the unused skip_ai_prompt setting from the database schema.
Release Info
- Version: 0.5.2-beta.1
- Release Date: 2026-02-05
- Previous Version: 0.5.1-beta.2
- Type: Patch (Beta)
v0.5.1-beta.2
TensorPM v0.5.1-beta.2 (Beta)
February 5, 2026
Release 0.5.1-beta.2
v0.5.1-beta.1
TensorPM v0.5.1-beta.1 (Beta)
February 5, 2026
Changelog - v0.5.1-beta.1
🐛 Bug Fixes
Support Bundle Description Always Visible
The bug report dialog now always shows what the support bundle contains, so you can make an informed decision before enabling it.
What Changed:
- The info text "The support bundle includes system information, logs, and sync status" is now always visible instead of only appearing after checking the box
- Clarified wording: sensitive data like API keys is not included (rather than "automatically removed")
🏗️ Improvements
Resizable Table Columns
Improved column resizing in table fields with better drag handles and enhanced header interactions.
Removed Skip AI Prompt Setting
The "Skip AI Key Prompt on Startup" setting has been removed from the app. The AI setup prompt now only appears when you don't have an API key configured or an active subscription — no manual toggle needed.
📅 Release Info
- Version: 0.5.1-beta.1
- Release Date: 2026-02-05
- Previous Version: 0.5.0-beta.1
- Type: Patch (Beta) Release
v0.5.0-beta.1
TensorPM v0.5.0-beta.1 (Beta)
February 5, 2026
Release 0.5.0-beta.1
v0.4.35-beta.1
TensorPM v0.4.35-beta.1 (Beta)
February 4, 2026
Release 0.4.35-beta.1
v0.4.34-beta.1
BetaTensorPM v0.4.34-beta.1 (Beta)
February 4, 2026
Release 0.4.34-beta.1
v0.4.33-beta.1
BetaTensorPM v0.4.33-beta.1 (Beta)
February 4, 2026
Release 0.4.33-beta.1
v0.4.32-beta.1
TensorPM v0.4.32-beta.1 (Beta)
February 4, 2026
Release 0.4.32-beta.1
v0.4.31-beta.1
TensorPM v0.4.31-beta.1 (Beta)
February 3, 2026
Release 0.4.31-beta.1
v0.4.30-beta.2
TensorPM v0.4.30-beta.2 (Beta)
February 3, 2026
Release 0.4.30-beta.2
v0.4.30-beta.1
BetaTensorPM v0.4.30-beta.1 (Beta)
February 3, 2026
Release 0.4.30-beta.1
v0.4.29-beta.1
BetaTensorPM v0.4.29-beta.1 (Beta)
February 3, 2026
Release 0.4.29-beta.1