Releases: AS-CoreAI/Ascora-ADE
Releases · AS-CoreAI/Ascora-ADE
Release list
Ascora ADE 1.3.0
What's new?
Added
- Built-in Wandrounik VPN — a new VPN activity in the left rail connects through the Wandrounik service over WireGuard or OpenVPN. The view shows live connection state, public IP, country, current server and driver status; lists servers with availability, load and measured TCP latency; and lets you pick a protocol, a preferred server (Premium) or automatic best-server mode. Anonymous connections work without an account with a locally enforced 100 MB daily allowance; signing in or registering a Wandrounik account (tokens stored encrypted via
safeStorage) unlocks Free/Premium plans, manual server selection, and account-side traffic statistics (today/week/month/all-time with limits and reset times). Sessions survive app restarts, stale tunnels are cleaned up on launch, and the tunnel is torn down cleanly on disconnect. - Bundled VPN backends — no separate installs on Windows — Windows builds now ship both VPN engines: the official signed
wireguard.exe(drivers embedded) and a self-contained OpenVPN runtime with its OpenSSL dependencies and official Wintun driver. Both run directly from Ascora's resources and their actual Ascora paths are shown in the VPN view; system installations remain fallback options. VPN operations that need administrator rights (tunnel service install/remove, OpenVPN start/stop) transparently elevate through UAC instead of requiring the app to run as administrator. Artifacts are vendored from official sources with pinned versions and enforced SHA-256 hashes (scripts/vpn/vendor.mjs), and WireGuard (MIT) / OpenVPN (GPLv2) / Wintun notices were added to THIRD_PARTY_NOTICES.md. Linux continues to use the distro'swg-quick/openvpnpackages. - Public IP indicator in the status bar — the status bar now shows your current public IP and country (Cloudflare trace with a country.is fallback, cached for five minutes and re-checked after VPN state changes). When the detected egress country is Belarus or Russia, the indicator warns that a VPN is recommended and opens the VPN view in one click.
- Guided OmniRoute provider registration wizard — Providers now offers a polished four-step flow for API-key, custom compatible, and OAuth connections. The wizard includes searchable provider selection, OpenAI/Anthropic/Claude Code protocol choices, credential validation, connection testing, clear success/error results, responsive layouts, keyboard/backdrop dismissal, and localized Russian/English copy while reusing the existing secure provider APIs and specialized OAuth/device-code/import flows.
- Native Agentic Features workspace — OmniRoute navigation now includes a collapsible, color-accented Agentic Features group with localized two-line entries and native Ascora pages for Memory, Agent Skills, Chaos Mode, Omni Skills, MCP, A2A, and Plugins. The pages expose live gateway metrics, engine and protocol health, task/activity summaries, searchable skill and MCP tool catalogs, installed/marketplace content, responsive cards, and explicit empty/error states without embedding the upstream dashboard.
- Interactive memory, agent-skill, and A2A controls — Agent Skill cards can open a full detail modal with metadata, API/CLI contracts, and the complete
SKILL.md; Memory has a real enable/disable switch plus a validated modal for creating factual, episodic, procedural, or semantic entries; and A2A has a persisted server switch that reflects its live online/disabled state. All actions use the bundled OmniRoute management API, report progress and failures in-app, and preserve safe defaults. - Claude effort level selector — the composer and the Claude panel in agent backend settings now offer the same effort cycle as the Claude Code VS Code extension (Low, Medium, High, Very high, Max, or Auto for Claude's own default), passed to the CLI as
--effort. The choice is persisted globally and per workspace, and the level labels are localized by reusing the existing reasoning vocabulary. - Thinking switch for Claude — a lightbulb toggle next to the Claude permission selector (and a matching switch in settings) turns extended thinking on or off per run. The CLI has no thinking flag, so the toggle passes
--settings '{"alwaysThinkingEnabled":…}'— the same key the VS Code extension flips — and is authoritative in both directions over the user's global Claude Code configuration. Enabled by default. - Versioned Claude model labels — the model picker, settings datalist, status bar, and chat headers now show what each alias currently resolves to (
fable-5,opus-4-8,sonnet-5,haiku-4-5) while the CLI still receives the plain alias, so the list keeps auto-tracking the newest model of each family. - Plan approval cards for Claude plan mode — when Claude finishes planning (ExitPlanMode), the plan markdown now renders as a dedicated card with the VS Code extension's choices: accept with auto-edits, accept with manual approval, or reject and keep planning. Accepting switches the permission mode, marks the card, and resumes the same CLI session with an approval message so the implementation starts with full context; approval state is persisted with the conversation, and the headless CLI's inability to self-approve plans is handled gracefully.
- Agent to-do checklist cards — Claude's TodoWrite calls now render as a live checklist card instead of an empty generic tool row: completed items are checked and struck through, the in-progress item is highlighted with an arrow, pending items show empty boxes. The card updates in place as the agent progresses and the snapshot persists with the task.
- Clickable file references in chat — markdown links (
[runner.ts:321](src/main/claude/runner.ts#L321)), code spans likesrc/main/foo.ts:120, and bare paths with a line number in any agent reply are now rendered as chips that open the file in the built-in Monaco editor and jump to the referenced line. Relative paths resolve against the workspace root, Windows drive letters are never mistaken for line numbers, broken paths are ignored silently, and plainhttps://links now open in the system browser. - Side-by-side diffs for file edits — edit cards now show a split view like the VS Code extension: old code on the left with removed-line tinting, new code on the right with added-line tinting, paired changes aligned opposite each other and uneven runs padded with hatched filler cells. Claude's Edit/Write/MultiEdit calls now carry their actual hunk contents (previously only +N/−M counts survived), and the local LM Studio write/edit approval cards use the same renderer.
- Cross-platform developer tools installer — a new terminal button in the left-rail footer opens a responsive installer for ripgrep, fd, jq, 7-Zip, LLVM, Pandoc, LibreOffice, ImageMagick, QPDF, Poppler, Graphviz, and Tesseract OCR. Windows, Linux, and macOS tabs show the exact native command for every package; the current platform supports one-click installation per tool or for every missing tool at once through winget, Homebrew, apt, dnf, or pacman. Ascora detects the active package manager and already installed packages, reports progress and failures, disables installation commands for non-current operating systems, uses Polkit elevation on Linux, and exposes only a strict allowlist over IPC so the renderer cannot execute arbitrary commands. The complete flow is localized in all six interface languages.
Changed
- Version bump to 1.3.0 — package metadata and the About section now report version 1.3.0.
- Unified appearance and language settings — the separate gear and globe controls in the left-rail footer are replaced by one compact settings button and a shared popover. Theme and language choices stay visible together, update immediately, retain their persisted behavior, and expose grouped accessible radio controls without consuming an extra footer slot.
- Bundled OmniRoute gateway — OmniRoute 3.8.48 now ships as a zero-install, managed sidecar with automatic startup, health monitoring, crash recovery, persistent configuration, and clean shutdown.
- Native OmniRoute management pages — the dashboard, endpoints, API Manager, providers, combos and Combo Studio, provider quotas, compression studio, CLI tools, traffic inspector, and model playground now run as Ascora React views backed by the loopback OmniRoute API. The main editors expose access policies, provider health and model sync, full combo strategies and route steps, recording sessions, host rules, filters, replay, annotations, and HAR export; Combo Studio receives authenticated live events through an Electron IPC bridge. Navigation is grouped into sections, stays usable in narrow windows, and supports wheel, trackpad, arrow-button, and automatic active-tab scrolling. No upstream iframe or separate dashboard is required.
- Full native provider catalog — Providers now includes all 256 OmniRoute provider types in nine categories with 211 bundled brand icons, provider/model search, capability filters, responsive scrolling, configured/compact views, connection and model details, credential validation, test/sync/edit/delete and bulk actions. API-key, local, web-session, compatible-node, device-code and browser OAuth setup are handled inside Ascora, including the dedicated Cursor, Trae, and secure two-step Zed import flows.
- OmniRoute chat backend — select routed models from the composer, use native tool calls, and track OmniRoute turns in Analytics.
- OmniRoute composer model picker — the composer's OmniRoute model selector is now a searchable dropdown grouped by provider, driven live from the gateway's model list, with a shortcut to the provider catalog. The agent-backend settings replace the custom "add provider" form with a button that opens the same catalog, so connections are managed in one place. The provider-catalog detail panel now also stays in view while scrolling in narrow layouts, and pressing Test...
Ascora ADE 1.2.4
What's new?
Added
- Collapsible reasoning for WProvider replies — providers that expose their reasoning (Grok's thinking pane, DeepSeek's and Qwen's "think" stream) now stream it live into a collapsible block above the answer bubble, mirroring the provider's own UI: a lightbulb toggle labeled "Thought for 2m" (duration measured from the first visible reasoning to the first answer token, localized in all six languages) expands the captured thoughts. The reasoning text is persisted with the task, resent at most every 300 ms in transport, and kept out of the model conversation context.
- Unauthorized services are visible in the WProvider models table — the authorized-models card now lists every web service with an explicit Authorized / Not authorized status per row instead of hiding services without a confirmed session. The header badge still counts only confirmed sign-ins, and any row can be selected as the active WProvider.
- Live Preview launch target selector — the status-bar Go Live control now has a compact split-button menu for opening the active HTML file either inside Ascora ADE or directly in the system browser. The selected target is remembered, menu actions launch immediately, and switching to the browser closes any embedded preview while keeping Live Server running.
- Authorized WProvider models table — selecting Ascora WProvider now shows a compact persisted list of web models with confirmed sign-in sessions. On first entry (and again after a short reopen cooldown), all services are checked sequentially with live progress so the table fills immediately without racing the shared browser; active chats, manual login and logout can still enter the queue between checks. External-driver services are checked last and the UI explicitly notes when the real browser is involved. Each authorized row can switch the active WProvider immediately.
- Restorable project archive — projects can now be removed from the workspace through a dedicated confirmation modal without deleting their folders or conversation history. Archiving soft-deletes the project and all of its chats, stops any active runs, and groups the complete project under the rail's Archive button; restoring brings the project back with every chat and its saved history. SQLite and JSON fallback stores both preserve the project tombstone, and reopening the same folder also restores its archived record instead of creating a duplicate.
- Markdown emphasis in agent replies — text responses from every backend, including DeepSeek through WProvider and Claude CLI, now render
**bold**/__bold__, inline backtick code, and fenced code blocks. The renderer creates React elements directly instead of accepting model-generated HTML, while user messages remain literal text. - Blueprint deletion confirmation modal — deleting a Blueprint now opens an in-app destructive confirmation dialog with the scenario name and description, a clear warning about schedules and run history, safe initial focus on Cancel, Escape/backdrop dismissal, and disabled controls while removal is in progress.
Fixed
- Grok's extended thinking no longer times out the turn — both capture paths (the hidden Electron window and the real-browser driver) previously required the first answer text within 60 seconds, so Grok turns that reason for minutes were aborted with "did not render an answer" while the site was still visibly thinking. A rendered reasoning pane that differs from the pre-send baseline now proves the provider accepted the prompt and is working: it holds off the no-answer deadline and the inactivity abort while present (even when only a static "Thinking" label is shown), a five-minute zero-change stall cap and the existing 15-minute hard cap still bound a genuinely dead page, and Grok's answer capture excludes markdown nodes inside the thinking pane so thoughts are never mistaken for the reply.
- Mistral WProvider tool calls are captured and executed correctly —
run_typescriptis now a supported, approval-aware workspace tool (including SSH and Blueprint agent runs), with a bounded one-shot runtime that invokes the suppliedmain()function. Mistral/workreplies now preserve and combine the prose and tool parts of the current turn instead of letting the newest tool card overwrite text that was already written. Unknown or malformed calls are still removed from the answer bubble and returned as compact protocol errors, while payloads persisted by older builds remain hidden. WProvider replies also no longer trigger Copilot or Claude authorization actions merely because captured source code contains authentication-related strings; new assistant messages retain their originating backend for reliable provider-specific UI. - Google sign-in for every WProvider now runs in a real browser — interactive provider login opens the provider's own page in an installed Chrome or Edge window with a dedicated persistent Ascora profile, so Google popup, opener, PKCE, passkey, and 2FA flows no longer run in Electron or depend on a spoofed Firefox fingerprint. The broker uses a random nonzero loopback-only DevTools port (leaving
navigator.webdriverfalse), copies only provider-allowlisted cookies and web storage back to Electron, and verifies the resulting composer before accepting the login. The existing WProvider chat driver remains the primary path; only a session that the provider binds to the real browser through device-bound cookies or non-transferable storage stays in that browser as a compatibility fallback. Login errors are now shown in settings, and the obsolete Firefox UA/client-hint/global masking and diagnostic DevTools window have been removed. - Localized Claude re-authentication in chat — expired Claude OAuth sessions now produce one localized error card instead of duplicate assistant/result/stderr messages. The original CLI output remains available under Technical details, and an inline Sign in to Claude again button launches the existing
claude /loginterminal flow directly from the failed chat. The structured error identity is persisted, so the message follows the selected interface language after reopening the task. - OpenRouter is available for initial setup again — the Agent backend settings always show OpenRouter, so it can be selected, enabled, and given an API key on a fresh installation. The regular chat provider picker still hides it until setup is complete.
Changed
- Real-browser WProvider automation no longer pops a window — chat turns and sign-in status probes that need the external Chrome/Edge driver now launch it parked off-screen (still a normal windowed browser for anti-bot fingerprinting, with occlusion/backgrounding throttling disabled so pages keep streaming) instead of opening a maximized window over the user's work. Interactive sign-in still opens a visible browser for OAuth and challenge flows.
- Version bump to 1.2.4 — package metadata and the About section now report version 1.2.4.
Ascora ADE 1.2.3
What's new?
Added
- Attachment chips and image previews in chat — files attached to a message now appear as visual chips instead of pasted
@pathtext: image attachments (PNG, JPEG, WebP, GIF, BMP, ICO, AVIF) render as thumbnails generated by the main process, other files show a type icon with the filename. Chips appear in the composer while drafting and are persisted inside the sent user bubble. The@pathreference block is appended to the transport prompt only at send time, so the visible message stays clean; a message can be sent with attachments and no text (the task title then falls back to the attachment names). Duplicate sources are de-duplicated (case-insensitively on Windows), attachment state resets when switching tasks, imports into.ascora-attachmentsare race-free (COPYFILE_EXCL), and Linux thumbnailing validates PNG/JPEG dimensions with size caps before decoding. - Sign-in, sign-out, and account display for Codex and Claude CLI backends — the Codex and Claude panels in agent backend settings now show which account is authorized: Codex decodes the email and ChatGPT plan from
~/.codex/auth.json(or reports "API key"), Claude reads the email and organization from~/.claude.json. New Sign in / Sign out buttons complete the flow: sign-in opens an external terminal runningcodex loginorclaude /loginand the panel re-checks automatically on window focus and every few seconds until the account appears (the same watcher pattern as Copilot); sign-out runscodex logout, or removes the stored Claude Code credentials and theoauthAccountmarker while preserving every other setting in~/.claude.json. Claude's signed-in detection now requires actual credentials or a recorded account instead of the mere existence of~/.claude.json, so the status genuinely flips after sign-out. The external-terminal login launcher was extracted into a shared module now used by Copilot, Codex, and Claude alike. - Syntax-highlighted Git diff viewer — the Git panel renders unified diffs through a dedicated viewer instead of a plain text block. Each file's changed lines are colorized by Monaco according to the file's language (detected from its extension or well-known filenames like
Dockerfile/Makefile), with separate old/new line-number gutters, tinted add/delete/context rows, and hunk/meta rows kept distinct. The parser handles quoted and renamed paths, octal-escaped filenames,\ No newline at end of filemarkers, and binary patches; while Monaco language services are still loading, the diff falls back to plain text safely. - Per-file change counts in Git history — commit file lists now show
+added/−removedline counts (fromgit diff-tree --numstat, merged with rename detection by path identity) or aBINbadge for binary files, and the open diff's header shows the file path with total additions and deletions for the visible diff. - File, Command, and HTTP request Blueprint actions — three new node types are available from the graph toolbar, the List mode, and every node's type selector. File reads a project file into the step output or writes interpolated content to it (defaulting to
{{last}}, creating missing folders, with paths confined to the selected project root). Command runs a one-shot shell command in the project root with a 60-second timeout; stdout becomes the step output, while a non-zero exit code or timeout fails the step with the exit code and stderr sofailed/containsroutes can react. HTTP request extends the outgoing-only webhook with GET/POST/PUT/PATCH/DELETE and returns the response body as the step output, enabling conditional routing on API responses (the body field is hidden and omitted for GET/DELETE, and headers default to empty instead of forced JSON). All text fields support Blueprint variables; File and Command steps use the same project as Agent mode, the project picker now appears whenever such a step exists, and a missing project fails the step with an actionable error. - Blueprint canvas notes — Unreal-style non-executable sticky comments can be pinned to the graph from a new toolbar button. Notes are amber cards with an editable text area, draggable by the same grip as action nodes, selectable, removable via the trash button or the Delete key, and sit visually behind action nodes. They persist with the graph (normalized in the main process with a 4,000-character text cap, coordinate clamping, and id de-duplication), are completely ignored by compilation and execution, survive step add/remove operations, and are included in fit-to-view bounds.
- Conditional Blueprint routing — Every graph wire can now be unconditional, fallback (
Otherwise), status-based, or compare the source action's output with contains/equality operators. All matching routes execute, enabling one review result to fan out to multiple agents, Telegram deliveries, and webhooks. A collapsible route editor is available on each card in Graph and List modes. Conditional paths can feed the existing bounded Repeat input for reviewer/fixer loops that stop early on success, while missing conditions preserve existing Blueprint behavior. - Visual node graph for Blueprints — Scenario steps can now be arranged on an Unreal-style dotted canvas with draggable action nodes, a protected Start node, Bézier execution wires, selection/deletion, pan, zoom, fit-to-view, and a List/Graph switch. Regular connections form a validated dependency graph: fan-out branches execute in stable order, fan-in waits for every connected predecessor, and disconnected nodes remain draft-only. A dedicated Repeat input can return one structured path for 2–20 bounded passes (one feedback edge per graph, with a 2,000-action-attempt safety cap), while legacy Blueprints without graph data keep their original ordered-step behavior.
- Agent mode for Blueprints — a global opt-in checkbox, explicitly marked as applying to all agents, runs every Blueprint WProvider participant through the same bounded text-tool loop as regular chats; each agent step also has an independent opt-in in both Graph and List views. Agents can iterate for up to 16 model turns with
web_searchandweb_fetch; selecting a local project also enables the standard file, search, edit, write, and shell tools for manual and scheduled runs. Project-changing tools run autonomously, while existing Blueprints remain in single-turn mode until either option is enabled. - Blueprint agent tool audit trail — Every agent-mode tool call is persisted in the execution log with its status, bounded arguments, result or error, and timestamps. Malformed tool requests are shown as failures and returned to the agent for a corrected retry, while raw tool-call JSON stays out of the live answer.
- Web tools for the built-in agent loop — local and web-chat backends (LM Studio, Ollama, OpenRouter, and Ascora WProvider) can now reach the internet through two new read-only tools:
web_search(query)runs a DuckDuckGo query and returns a ranked list of title/URL/snippet results, andweb_fetch(url)downloads a page and returns its readable text (HTML stripped, size- and time-capped). Both surface as tool cards in the chat with a globe/search icon. Search uses DuckDuckGo's HTML endpoint over GET with an automatic fallback to the lite endpoint, and unwraps DuckDuckGo redirect links to the real target. - ripgrep-style workspace search — the agent's
search_filestool gainedregex(treat the query as a regular expression instead of a literal),glob(limit the scan to matching paths, e.g.**/*.tsorsrc/**, with{a,b}alternation and basename matching at any depth),context(include up to 10 surrounding lines per match, shown with>/-gutters), andcase_sensitiveoptions. Defaults are unchanged (literal, case-insensitive, whole workspace), and the SSH-backed search path mirrors the same options viagrep. - Workspace projects can be renamed from the rail — right-clicking a project now opens a context menu with Rename; the name is edited inline and persisted without changing the underlying folder path.
- Blueprint automation studio — a new dockable Blueprint activity, plus a Blueprint section between Projects and SSH, creates project-independent scenarios with persistent definitions, manual runs, interval scheduling, bounded repeats, delays, Telegram delivery, webhooks, and a live execution log.
- Multi-agent WProvider teams — every Blueprint can define several named agents with independent roles, instructions, web services, and conversation sessions. Ordered steps automatically pass completed team results to the next agent, enabling researcher/reviewer/editor-style collaboration without a workspace or SSH context.
- Blueprint Hub and shared scenario chat — the Blueprint activity button now opens a catalog where one or several scenarios can be connected to a shared prompt. Each selected Blueprint runs its own agent pipeline and streams its status and latest result into one team-chat view; connected scenarios persist between launches, while the existing scenario editor remains available from the left rail.
- Archived task browser and restore flow — the Archive button now lists soft-deleted tasks across workspaces, highlights them with archived styling and deletion time, and opens their preserved conversation history in a strict read-only view. Archived tasks can be restored to the regular task list with one click. SQLite and JSON fallback stores both expose dedicated archive/read-only and restore operations without changing normal task queries.
- German, French, and Italian interface options — the existing
de,fr, andittranslation catalogs are now registered in the language switcher alongside English, Russian, and Ukrainian. - Ukrainian language option — Ukrainian is now available in the left-rail language menu alongside English and Russian. Core language controls and the Analytics...
Ascora ADE 1.2.2
What's new?
Added
- Reopened CLI chats resume their server-side session — each task now persists its CLI-agent session handles (Codex thread, Copilot, Claude, Gemini, and GLM session ids) in a new
sessions_jsontask column, and restores them when the chat is reopened. A reopened Codex/Copilot/Claude/Gemini/GLM chat continues its existing agent session instead of starting fresh; older records and non-CLI (local/web) backends have no handles and keep restoring their context fromconvo.
Changed
- Version bump to 1.2.2 — the About section in the left-rail footer now reports version 1.2.2 (English and Russian).
- WProvider sign-in checks run through the shared browser queue — availability checks are now serialized on the same queue as chat turns (via a shared
enqueueWProviderOphelper), so acheckWProvidernavigation can no longer collide with an in-flight generation in the single hidden browser window. - Clearer Claude permission-mode labels — the Claude permission selector now reads Plan mode / Manual / Edit automatically / Auto mode (localized in English and Russian) instead of the generic Plan only / Ask / Auto-edit / Full access wording.
- Alice sign-in status is now real — the availability check no longer unconditionally reports Alice as signed in; it detects the logged-out state from the visible «Войти» controls on
alice.yandex.ru, and the sign-in window now closes only once the account is actually logged in. - Richer WProvider "no answer" diagnostics — when a web chat fails to render a reply, the diagnostics blob now includes the last message-like DOM elements (
assistantCandidateswith tag, classes, and text head) so frontend class-name changes on provider sites can be identified from the error alone.
Fixed
- Mistral and ChatGPT sign-in windows no longer close before you log in — ChatGPT shows its real composer to anonymous visitors and Mistral's login screen carries a stray textarea, so the "composer present = signed in" heuristic reported a successful login the moment the sign-in window opened. For these two services the check now also requires that the page is not an auth screen and shows no visible Log in / Sign up controls; the sign-in window stays open until the account is actually logged in, and the availability check no longer reports a logged-out Mistral/ChatGPT session as signed in. Other services keep their existing composer-based detection.
- Mistral sign-in detection no longer depends on the interface language — Mistral's UI locale rotates per session (Russian, Ukrainian, German, and English all observed), so matching translated "Log in"/"Sign up" button text could still miss a signed-out session and close the sign-in window before the user could act (including before the "Vibe" terms-of-use dialog had a chance to appear). Mistral now checks for the account sidebar (
data-sidebar="menu-button") as a language-independent, structural proof of being signed in instead of matching button text. - WProvider page checks can no longer hang forever on "Checking …" — every sign-in/composer/send-button probe runs a snippet of JavaScript on the provider's page with no timeout; if the page navigated or re-rendered mid-probe, Electron could leave that call pending indefinitely, stalling the check past its own retry deadline. Page probes are now bounded by an 8-second timeout each, so a stuck page falls back to a safe result instead of hanging the sign-in/status UI.
- Mistral replies in Work mode are captured, and "no answer" diagnostics are more useful — Mistral's
/work("Vibe") agent surface renders replies with different markup than the classic/chatview, so the existing answer selector matched nothing there and every Work-mode turn timed out with "did not render an answer" even after the reply had rendered. The reply selector now also matches genericdata-message-part-type/text-message-part/.proseelements, and the diagnostics dumped on failure now include each candidate element'sdata-*/roleattributes so a future markup change can be diagnosed straight from the error message. - WProvider no longer re-verifies every web service on each chat switch — the sign-in check now probes only the currently selected service instead of looping over all of them, and reuses a prior result on ordinary provider/chat switches. Switching between chats or creating a new chat within a workspace (e.g. with DeepSeek pinned) no longer re-drives the hidden browser, and selecting WProvider no longer forces a Qwen check before you can pick another model. Sign-in, sign-out, and the explicit Re-check button still force a fresh probe, and the composer picker only greys out services actually probed as signed-out (un-probed ones stay selectable so picking one runs its own check).
- Alice replies are captured again after the Yandex UI redesign — Alice's chat moved to a new component set and dropped the
MarkdownTextbubble class the reply capture relied on, so every turn timed out with "did not render an answer". Assistant messages are now read fromMessageBubble-Containerbubbles that lack the_from-usermodifier (the legacy selector is kept as a fallback), and the "Развернуть" collapser overlay on long replies is stripped from the extracted text. - WProvider no longer cancels a reply by re-clicking the send control — while waiting for the first answer text, the driver retried the send click every second even after the message had already gone out. On Alice the same Oknyx button means "stop generation" while answering and toggles voice input when idle, so the retry aborted the reply and could start the microphone. The retry click now fires only while the prompt is still sitting in the composer.
- Copilot replies are no longer duplicated or garbled — the Copilot JSONL parser now reads payloads wrapped in
data, treatsassistant.messageas the one completed answer, and ignores streaming*_delta/*_startpartials,assistant.reasoningchunks, session events, and the echoeduser.messageso only the finished reply becomes a chat bubble. Usage and error extraction also read thedata-wrapped shape, and the original defensive guesser remains as a fallback for older schemas.
Ascora ADE 1.2.1
What's new?
Added
- Explorer drag-and-drop file moves — files can now be dragged into folders, and folders can be dragged into other folders directly in the Explorer tree. The move flow updates open editor tabs, refreshes the source and target folders, highlights the drop target, and blocks unsafe moves such as moving a folder into itself or over an existing name.
- Expandable task lists in the left rail — workspace task lists now show the five most recent tasks by default, with localized Show more / Show less controls for longer histories.
- Update badge opens a changelog modal — clicking the title-bar "Update" badge now opens a modal listing every published release newer than the running build (version, publish date, and release notes), with localized loading/failure states, the current version, and an Update button that opens the download page.
- GitHub Releases fallback for update checks — when the site's release feed is unreachable, the update check and the changelog list fall back to the public GitHub Releases feed, and the modal's Update button follows whichever source actually answered.
- Claude web-chat support in Ascora WProvider — WProvider can now drive
claude.aifromhttps://claude.ai/new, detect signed-in Claude sessions through the ready composer, type into Claude's ProseMirror prompt box, capture rendered Claude responses, and resume site-side conversations from/chat/<id>URLs. - Alice and Mistral web-chat support in Ascora WProvider — WProvider service metadata now includes Alice (
alice.yandex.ru) and Mistral (chat.mistral.ai) alongside Qwen, DeepSeek, and Claude. - Grok, Gemini, and ChatGPT web-chat support in Ascora WProvider — WProvider can now drive
grok.com,gemini.google.com/app, andchatgpt.com, detect their signed-in composer states, resume Grok/ChatGPT/c/<id>conversations and Gemini/app/<id>conversations, and capture rendered assistant Markdown from each site. - Rendered-response capture for non-SSE web chats — Alice, Mistral, Claude, Grok, Gemini, and ChatGPT use rendered Markdown snapshots as the primary capture path when their private web stream formats are less stable than OpenAI-style SSE.
Changed
- Analytics model donut is interactive — hovering a model segment or model row now highlights that model and shows its token share and count in the donut center. The hovered model's row in the legend is highlighted too: it gets a hover background, a subtle scale-up with an accent glow, and its name turns bold in the accent color.
- Version bump to 1.2.1 — the About section in the left-rail footer now reports version 1.2.1 (English and Russian).
- WProvider composer handling now supports contenteditable prompts — the hidden web-chat driver can clear, focus, type into, and validate ProseMirror, Quill, and other contenteditable composers as well as textarea-based inputs.
- WProvider send-control detection handles more localized labels — send-button lookup now covers English and Russian submit labels used by the newly supported web chats.
- WProvider sign-in checks now run sequentially — the renderer probes each web service one at a time so services that need the shared hidden browser do not navigate it concurrently during availability checks.
- WProvider diagnostics include contenteditable inputs — failed composer/send detection now reports visible contenteditable prompt boxes in addition to textareas and send controls.
Fixed
- DeepSeek WProvider replies are no longer garbled or truncated — the stream parser now implements DeepSeek's patch protocol: bare
{"v": "token"}continuation frames append at the last declared path instead of being dropped, and non-answer updates (chat title, thinking summaries, statuses) are classified by path/fragment type and kept out of the reply. Qwen's OpenAI-style stream parsing is unchanged. - DeepSeek WProvider replies no longer lose their first characters — SET/PATCH snapshot frames (which often carry the first tokens of the answer and of each reasoning block) are now reconciled against the text already streamed and the missing head is emitted, instead of the frames being dropped wholesale.
- Text-protocol tool calls are parsed more tolerantly — a
tool_callblock still runs when the opening backticks were lost in transit (baretool_calllabel or fence-less{"tool": ...}JSON found via a balanced-brace scan) and when the model put literal newlines inside JSON string args (control characters inside strings are escaped on a retry). Fence remnants are still stripped from the chat bubble.
Ascora ADE 1.2.0
What's new?
Added
- Ascora WProvider — web-chat backend (Qwen + DeepSeek) — a new agent backend that "emulates an API" on top of a provider's web chat, driven inside a hidden Electron browser window. Sign in to the site once in a visible window (the login persists in a dedicated session partition); afterwards each agent turn is typed into the site's own composer and the reply is captured from the site's streaming response (DOM scraping only as a fallback). Each ADE chat maps to its own web-chat conversation and only not-yet-seen messages are relayed per turn. Includes sign-in/sign-out and status in Connection Settings, status-bar state, streaming with abort, and tool use via the agent loop's text protocol. Works over SSH alongside LM Studio.
- DeepSeek web-chat support in WProvider — WProvider now supports
chat.deepseek.comalongside Qwen, with a selectable web service in Agent backend settings and the composer. DeepSeek responses, reasoning chunks, chat URLs, composer/send controls, and rendered-message fallback selectors are handled separately from Qwen. - Per-service WProvider sign-in checks — the app now probes every supported WProvider service so the composer can show which web chats are signed in and disable unsigned-in quick-switch options with provider-specific hints.
- Chat history for SSH hosts — each SSH connection in the left rail now keeps its own list of saved chats, just like workspace tasks (an SSH host can hold many chats). Chats are persisted under the host's pseudo-workspace, loaded at app start (visible before ever connecting), and reopening one reconnects to the host, restores the transcript and the chat's pinned model/provider. The host row gains a collapse twisty, a "new chat" button, and per-chat delete; deleting a connection also removes its saved chats.
- New backend dropdown (
ProviderSelect) — the provider pickers in the composer and status bar are now a custom accessible dropdown with per-option disabled states and native tooltips (a plain<select>can't hint why an option is unavailable). - UI localization (English + Russian) — the interface is now fully translatable via a central catalog (
src/renderer/src/language), with a language picker in the left-rail footer next to the theme selector. Hardcoded strings across every renderer component (rail, title bar, composer, chat, connection/usage/SSH/skills modals, editor, explorer, Git, status bar, terminals, home view) are routed through atr()helper. The choice is persisted (appearance.language), restored on launch, applied to<html lang>, and used for locale-aware date/time formatting. - Ollama backend — Ollama is now a selectable local OpenAI-compatible provider with its own saved base URL (
http://localhost:11434/v1by default), model refresh, model selection, streaming chat, tool-call loop, status-bar state, usage analytics, and Git AI commit-message support. - Google Gemini CLI backend — the
geminiCLI is now a selectable agent provider (gemini -p --output-format stream-json), with an optional binary path and--modeloverride,--approval-modeselection (plan/default/auto_edit/yolo), a reachability check, and--resumesession continuation. It reuses the normalized Codex event/item pipeline so every CLI backend shares one renderer code path. - File & image attachments in the composer — attach files/images to a prompt via a multi-select picker (
dialog:openFiles); the selection is imported into the workspace with duplicate-name de-duplication (fs:importFiles) and exposed to the agent as workspace-relative paths. - Per-task (per-chat) model/provider pinning — each chat/task now remembers its own model/provider selection independently of the workspace default. Opening a task restores its pinned model; new chats inherit the workspace default until the user picks a model, then that choice is pinned to that chat.
- Task-specific model/provider is persisted per task (
task.llmsettings) and restored when opening a task, even after switching workspaces or restarting the app. - New task's model selection is pinned on first user message (first submit), so a brand-new chat gets its own pinned model from the first interaction.
- Deleting a task also removes its pinned model/provider selection from settings.
- Workspace LLM persistence (
persistWorkspaceLlm) now also pins the current selection to the active task, so each chat keeps its own model.
Changed
- WProvider selection is persisted per workspace/task — the selected web service (Qwen or DeepSeek) is saved with workspace and task LLM settings, restored when reopening chats, and shown in the status bar as the active
{provider} Webbackend. - WProvider network capture is more robust — the hidden browser now taps both
fetchand XHR streaming responses, recognizes multiple chat-completion endpoint shapes, and falls back to any POST response that declarestext/event-stream. - WProvider sign-in windows stay closer to a normal browser tab — visible login windows no longer install the network-tapping preload, reducing provider bot/challenge interference during web sign-in.
- Provider pickers respect the SSH context — while an SSH host is the active context, backends that cannot drive a remote host (Ollama, OpenRouter, Codex, Copilot, Claude, Gemini, GLM) are disabled in the pickers with a "can't work from SSH" hint; the SSH-capable set (LM Studio, Ascora WProvider) stays selectable and is switched to automatically.
- Deleting the currently open chat of an SSH host now stays on that host with a blank composer (the terminal is still connected) instead of returning to the home view.
- Local OpenAI-compatible backend handling now supports separate LM Studio and Ollama URLs/models so switching providers does not overwrite the other local backend's saved model.
- Provider pickers now keep LM Studio and Ollama visible but disabled while the corresponding local server is unreachable; both are probed in the background every 5 seconds (new
llm:checkOllamaIPC alongside the existing LM Studio probe). - Claude model presets now include the
fablealias alongsidedefault/opus/sonnet/haiku. Aliases are resolved by the Claude Code CLI to the newest model of each family, so new model releases within a family are picked up automatically without an app update. - Version bumped to 1.2 in
package.jsonand the About menu (left rail). - Simplified workspace model sync —
syncWorkspaceLlmnow delegates to a sharedapplyLlmhelper, reducing duplication and ensuring consistent provider/model/permission handling across workspaces and tasks. - Opening a task in a different workspace now restores that task's own pinned model/provider (falling back to the workspace default only if the task has no saved selection).
- Deleting a running task now also removes its pinned model/provider from settings.
- Workspace LLM persistence (
persistWorkspaceLlm) now also pins the current selection to the active task, so each chat keeps its own model.
Fixed
- DeepSeek WProvider auth no longer closes too early — DeepSeek is now considered ready only after both its persisted token and a visible, stable prompt composer are available. The visible sign-in window stays open through sign-in/verifying/loading states and remains open for manual close after the prompt appears, preventing the "Checking DeepSeek..." flow from closing before the user can enter data.
- DeepSeek WProvider checks no longer hang indefinitely — DeepSeek session probes now use bounded page-load waits, so the settings status can recover instead of staying on "Checking DeepSeek..." if the provider page stalls during login verification.
- Stale DeepSeek tokens no longer count as a usable login — DeepSeek's
userTokenis treated as necessary but not sufficient; redirects back to/sign_inand missing prompt input keep the session marked as not ready. - Edit/delete buttons on SSH host rows in the left rail were effectively invisible (the hover-reveal CSS rule only covered task rows); they now appear on hover and on the active host.
- Backend-picker availability tooltip no longer shows a generic "The application is not running." over the whole provider list. The tooltip now names the specific unavailable server ("LM Studio is not running." / "Ollama is not running.", localized), appears only when at least one local server is actually down, and each disabled option in the open dropdown carries its own native hint.
- Ollama can no longer be selected as the agent backend while its server is not running (previously the option was always selectable and failed only after switching).
- Deleting a running task now correctly removes its pinned model/provider from settings, preventing stale selections from persisting.
- Switching to a task in a different workspace now correctly restores that task's own model/provider instead of always switching to the workspace default.
Downloads
Windows
Ascora-ADE-Setup-1.2.0.exe— installer (NSIS)Ascora-ADE-Portable-1.2.0.exe— portable
Linux
Ascora-ADE-1.2.0-amd64.deb— Debian/UbuntuAscora-ADE-1.2.0-x86_64.rpm— Fedora/RHEL/openSUSEAscora-ADE-1.2.0-x64.pacman— Arch/Manjaro
SHA-256 checksums for all assets are in SHA256SUMS.txt.
Ascora ADE 1.1.0
What's new?
Added
- OpenRouter can now be enabled as a cloud OpenAI-compatible backend with a saved local API key, provider picker entry, model refresh, chat streaming, and OpenRouter-specific connection status.
- OpenRouter model selection is persisted with workspace LLM settings and used consistently for agent chat, Git branch naming, Git commit message generation, and usage analytics.
- Agent backend settings are now reachable from the left rail.
- Agent runs can now keep progressing in the background when switching workspaces, tasks, SSH terminals, or starting a new task, then restore their live state when reopened.
- Claude usage now opens an in-app breakdown modal from the status bar with per-window bars, reset times, refresh, and a detailed usage link.
- LM Studio reachability is now probed in the background so provider pickers can reflect whether the local server is available even when another backend is selected.
- New Composer component for chat input with enhanced UI.
- AgentChat view for interactive agent communication.
- Copilot authentication modal and IPC support for Copilot integration.
- Expanded global styling with new UI tweaks.
- Updated ConnectionSettings component with additional provider options and UI improvements.
- UsageModal enhancements for better usage analytics display.
- Store extended with new slices for Copilot and UI state.
- New IPC modules for Copilot handling.
Fixed
- OpenRouter API keys pasted as
Authorization:orBearer ...values are normalized before saving and sending requests. - OpenRouter falls back to LM Studio when it is disabled or missing an API key, and reports clearer connection/authentication errors.
- OpenRouter model dropdowns keep the selected model and default
openrouter/freeoption visible even when the remote model list changes. - Codex change summaries now fill per-file
+N/-Nline counts in the changes popover when the CLI does not report them directly, using git stats as a fallback. - Local and SSH terminals now copy selected text with
Ctrl/Cmd+C; right-click also copies the current selection. - OpenRouter API key normalization is now shared between main and renderer processes (moved to
@shared/ipc.ts), with improved parsing forAuthorization: Bearer <key>,Bearer <key>, and quoted keys. - OpenRouter request header uses correct casing (
Authorizationinstead ofauthorization). - Renderer normalizes and displays the cleaned API key immediately after saving.
- Stopping a task or rejecting Ask-mode approvals now only affects the targeted run instead of any other task that is still running.
- Deleting a running task now stops that run, removes its live snapshot, and prevents a late save from restoring the deleted task.
- Agent runs now keep the provider, model, permission mode, workspace, and SSH context captured at submit time so later UI switches do not change an in-flight task.
- Failed model refreshes now clear stale model lists and update LM Studio availability instead of showing models from a previous backend.
- Various UI glitches and TypeScript type issues across renderer components.
Changed
- LM Studio is shown in backend pickers only while it is reachable or already selected, and OpenRouter setup controls only appear when OpenRouter is active.
- Version bumped to 1.1 in the About menu (left rail).
- StatusBar component updated to reflect new connection status indicators.
- ConnectionSettings UI now dynamically shows backend availability.
- Global CSS updated with new layout rules and theme adjustments.
- Store logic refined for better state persistence and performance.
Downloads
Windows
Ascora-ADE-Setup-1.1.0.exe— installer (NSIS)Ascora-ADE-Portable-1.1.0.exe— portable
Linux
Ascora-ADE-1.1.0-amd64.deb— Debian/UbuntuAscora-ADE-1.1.0-x86_64.rpm— Fedora/RHEL/openSUSEAscora-ADE-1.1.0-x64.pacman— Arch/Manjaro
SHA-256 checksums for all assets are in SHA256SUMS.txt.
Ascora ADE 1.0.0
Agentic Development Environment — a cross-platform desktop IDE with an AI agent inside it. Describe a task in plain language; Ascora ADE reads your code, plans, edits files, runs commands, and shows a diff before applying — powered by the models you run yourself. Local-first, offline-capable, and entirely in your control.
Backends — one agent, every model
- LM Studio (local, OpenAI-compatible) — default, fully offline
- Claude Code — Opus · Sonnet · Haiku
- Codex — OpenAI GPT-5.x
- GLM / ZCode — Zhipu
Downloads
Windows (x64)
Ascora-ADE-Setup-1.0.0.exe— NSIS installerAscora-ADE-Portable-1.0.0.exe— portable, no install
Linux (x64)
Ascora-ADE-1.0.0-amd64.deb— Ubuntu / DebianAscora-ADE-1.0.0-x86_64.rpm— Fedora / CentOS / RHELAscora-ADE-1.0.0-x64.pacman— Arch
Windows builds are not code-signed yet — SmartScreen warns on first run (More info → Run anyway).
Verify your download againstSHA256SUMS.txt.
🔗 Live demo: https://ade.ascoreai.com/