What's Changed
✨ Added
**Console & Workspaces**
- Add six theme palettes and custom colors and corner radii, with live preview and saved preferences ([7741](https://github.com/agentscope-ai/QwenPaw/pull/7741))
- Add an authenticated, multi-tab terminal inside Chat, with a working directory for each conversation ([7861](https://github.com/agentscope-ai/QwenPaw/pull/7861))
- Allow Console font size to be adjusted from 12 to 20 pixels across chat and settings ([8005](https://github.com/agentscope-ai/QwenPaw/pull/8005))
- Save multi-folder workspaces as an Agent’s default for future tasks ([7789](https://github.com/agentscope-ai/QwenPaw/pull/7789))
- Show files delivered by the Agent directly below its reply for easier preview and download ([7750](https://github.com/agentscope-ai/QwenPaw/pull/7750))
**QwenPaw-Flash**
- Recommend QwenPaw-Flash 9B, 27B, and 35B-A3B locally: update the 9B recommendation and add 27B and 35B-A3B options ([8155](https://github.com/agentscope-ai/QwenPaw/pull/8155))
**PawPort**
- Add PawPort to import supported conversations, memory, Skills, plugins, MCP settings, projects, and scheduled tasks from Codex and Qoder, with compatibility checks and selective retries ([6960](https://github.com/agentscope-ai/QwenPaw/pull/6960))
**QwenPaw Creator & Data**
- Upgrade Creator to 2.0.1: review scripts before media production, keep manual regenerations from triggering paid downstream steps, and recover stalled projects ([8121](https://github.com/agentscope-ai/QwenPaw/pull/8121))
- Upgrade QwenPaw Data to 0.3.0 with an integrated analysis workspace, interactive clarification, inline HTML reports, and `/data` and `/datasource` commands in chat channels ([7637](https://github.com/agentscope-ai/QwenPaw/pull/7637))
**Models & Memory**
- Unify model discovery, pricing, and selection, with a candidate model pool and per-conversation model and thinking controls ([7899](https://github.com/agentscope-ai/QwenPaw/pull/7899))
- Configure a custom provider’s name, endpoint, protocol, and API key in one dialog ([7826](https://github.com/agentscope-ai/QwenPaw/pull/7826))
- Configure ReMe search reranking in the Console, including the model, endpoint, candidate multiplier, and timeout ([6399](https://github.com/agentscope-ai/QwenPaw/pull/6399))
**Hub**
- Add a Hub model gateway with centrally managed organization models, member token budgets, usage dashboards, and invitation-based registration ([7779](https://github.com/agentscope-ai/QwenPaw/pull/7779))
- Support initializing the first Hub administrator from the command line, including Local-only deployments without the Docker SDK ([7696](https://github.com/agentscope-ai/QwenPaw/pull/7696))
**Skills, Tools, Automation & Channels**
- Add a `view_audio` tool so Agents can understand audio files through the existing transcription pipeline ([8083](https://github.com/agentscope-ai/QwenPaw/pull/8083))
- Configure scheduled tasks with plain-text instructions and a chosen model, preserve history after interruptions, and inspect timeout results and sessions from the Inbox ([7776](https://github.com/agentscope-ai/QwenPaw/pull/7776))
- Distribute selected Skills from the Skill pool to workspaces in batches ([7852](https://github.com/agentscope-ai/QwenPaw/pull/7852))
- Allow Skills to be assigned to custom channels as well as built-in channels ([7782](https://github.com/agentscope-ai/QwenPaw/pull/7782))
- Install or remove Skill Market sources as plugins, including QwenPaw, ClawHub, ModelScope, and Aliyun ([8128](https://github.com/agentscope-ai/QwenPaw/pull/8128))
- Add collapsible thinking panels in Feishu, with optional automatic collapse after generation ([7685](https://github.com/agentscope-ai/QwenPaw/pull/7685))
- Render Markdown tables as native Telegram Rich Messages in replies and completed streams, with fallback when unsupported ([7713](https://github.com/agentscope-ai/QwenPaw/pull/7713))
🔄 Changed
- Improve model settings and selection interactions in the Console ([8017](https://github.com/agentscope-ai/QwenPaw/pull/8017))
- Improve Settings navigation and search, add clearer runtime configuration tabs, and smooth conversation switching ([7956](https://github.com/agentscope-ai/QwenPaw/pull/7956))
- Unify memory commands under `/reme <action> key=value`, replacing `/dream`, `/memorize`, and `/reme_status` ([7444](https://github.com/agentscope-ai/QwenPaw/pull/7444))
- Limit visual compaction to older conversation history, preserve the latest two user turns, and retrieve original passages with `recall_context` ([7703](https://github.com/agentscope-ai/QwenPaw/pull/7703))
- Reduce delays in long conversations by avoiding repeated full history-database checks on every request ([7639](https://github.com/agentscope-ai/QwenPaw/pull/7639))
- Redesign conversation history with time, source, or ungrouped views, more room on small screens, richer session details, and conversation ID copying ([7665](https://github.com/agentscope-ai/QwenPaw/pull/7665), [#7688](https://github.com/agentscope-ai/QwenPaw/pull/7688), [#7788](https://github.com/agentscope-ai/QwenPaw/pull/7788), [#7846](https://github.com/agentscope-ai/QwenPaw/pull/7846))
- Use source grouping by default for the conversation list ([7972](https://github.com/agentscope-ai/QwenPaw/pull/7972))
- Move the chat file drawer to the right side ([7704](https://github.com/agentscope-ai/QwenPaw/pull/7704))
- Reduce initial Console downloads by loading chat dependencies and language resources on demand ([7829](https://github.com/agentscope-ai/QwenPaw/pull/7829))
- Stream background tool output only while its task panel is expanded, reducing idle connections ([7831](https://github.com/agentscope-ai/QwenPaw/pull/7831))
- Upgrade Make Skill to 2.1 with more reliable planning, argument validation, and evaluation guidance ([7753](https://github.com/agentscope-ai/QwenPaw/pull/7753))
- Report daily runtime activity when Agents execute, including scheduled tasks, while honoring existing telemetry consent and opt-out settings ([7802](https://github.com/agentscope-ai/QwenPaw/pull/7802))
🐛 Fixed
**PawPort**
- Show the exact asset and cause when a PawPort import fails so failed items can be retried ([7953](https://github.com/agentscope-ai/QwenPaw/pull/7953))
**Console, Chat & Files**
- Keep chat terminal tabs working on HTTP deployments that assign UUID session IDs ([8144](https://github.com/agentscope-ai/QwenPaw/pull/8144), [#8146](https://github.com/agentscope-ai/QwenPaw/pull/8146))
- Keep chat input controls usable when the window is narrow ([8145](https://github.com/agentscope-ai/QwenPaw/pull/8145))
- Keep files sent by the Agent visible after a conversation is restored from history ([7949](https://github.com/agentscope-ai/QwenPaw/pull/7949))
- Allow users to interrupt navigation between conversations while messages are loading ([8214](https://github.com/agentscope-ai/QwenPaw/pull/8214))
- Ignore replayed QQ gateway events to prevent duplicate handling of messages ([8006](https://github.com/agentscope-ai/QwenPaw/pull/8006))
- Keep queued messages bound to their original Agent and conversation, and prevent delayed chat creation or history loading from disrupting navigation and cancellation ([7382](https://github.com/agentscope-ai/QwenPaw/pull/7382))
- Preserve unsent drafts when pasting long text into Chat ([8119](https://github.com/agentscope-ai/QwenPaw/pull/8119))
- Mark interrupted tool calls correctly after stopping a reply instead of leaving them stuck in a running state ([7345](https://github.com/agentscope-ai/QwenPaw/pull/7345))
- Restore assistant reply timestamps and the correct visibility of response actions ([7851](https://github.com/agentscope-ai/QwenPaw/pull/7851))
- Run `/compact` in the current conversation instead of opening a new session ([7834](https://github.com/agentscope-ai/QwenPaw/pull/7834))
- Refresh cached text and CSV tabs when reopened or activated while preserving unsaved edits ([7902](https://github.com/agentscope-ai/QwenPaw/pull/7902))
- Move Skill pool downloads off the request path and clear unfinished temporary files ([8055](https://github.com/agentscope-ai/QwenPaw/pull/8055))
- Refresh expanded file directories without losing the current pagination state ([8149](https://github.com/agentscope-ai/QwenPaw/pull/8149))
- Render LaTeX formulas in Console release notes and Markdown file previews ([7909](https://github.com/agentscope-ai/QwenPaw/pull/7909))
- Recover from failed Console code downloads after the local service is available again, without exhausting reload attempts too early ([8154](https://github.com/agentscope-ai/QwenPaw/pull/8154), [#8219](https://github.com/agentscope-ai/QwenPaw/pull/8219))
- Make project directory selection clearer and allow applying a directory directly from the browser ([7897](https://github.com/agentscope-ai/QwenPaw/pull/7897))
- Improve loading on slow networks with smaller API responses and more resilient Skill list requests ([7917](https://github.com/agentscope-ai/QwenPaw/pull/7917))
- Limit background polling and keep the model picker responsive during slow requests ([8221](https://github.com/agentscope-ai/QwenPaw/pull/8221))
- Save model-routing changes together with other Agent settings ([7747](https://github.com/agentscope-ai/QwenPaw/pull/7747))
- Show inherited thinking settings correctly, allow direct model selection from an empty model pool, and provide Kilo free-model defaults for fresh installations ([7920](https://github.com/agentscope-ai/QwenPaw/pull/7920))
- Restore Vietnamese and Brazilian Portuguese language selection ([7752](https://github.com/agentscope-ai/QwenPaw/pull/7752))
- Preserve the sidebar’s collapsed state across reloads ([7681](https://github.com/agentscope-ai/QwenPaw/pull/7681))
- Keep Settings colors and menu typography consistent with the rest of the Console ([7682](https://github.com/agentscope-ai/QwenPaw/pull/7682), [#7805](https://github.com/agentscope-ai/QwenPaw/pull/7805))
- Restore visible keyboard-focus indicators on links ([7759](https://github.com/agentscope-ai/QwenPaw/pull/7759))
- Restore the PawPort entry in Agent configuration ([7770](https://github.com/agentscope-ai/QwenPaw/pull/7770))
**Models, Runtime & Security**
- Preserve photo orientation when resizing images that contain EXIF rotation data ([8136](https://github.com/agentscope-ai/QwenPaw/pull/8136))
- Validate Hub model settings against the model’s resolved context limit ([8168](https://github.com/agentscope-ai/QwenPaw/pull/8168))
- Keep cancellation reasons visible and continue the Agent loop when a tool is stopped ([8183](https://github.com/agentscope-ai/QwenPaw/pull/8183))
- Respect provider-resolved context windows to avoid premature conversation compaction ([7652](https://github.com/agentscope-ai/QwenPaw/pull/7652))
- Use daylight-saving-aware time zones when displaying conversation transcript timestamps ([8050](https://github.com/agentscope-ai/QwenPaw/pull/8050))
- Prevent PDFs returned by tools from breaking subsequent requests to Chat Completions models, including multimodal models ([7636](https://github.com/agentscope-ai/QwenPaw/pull/7636))
- Recover when a provider rejects unsupported `input_audio` content in conversation history ([7886](https://github.com/agentscope-ai/QwenPaw/pull/7886))
- Recover conversations after a model rejects an image or other media payload instead of replaying the rejected block on every turn ([8010](https://github.com/agentscope-ai/QwenPaw/pull/8010))
- Filter historical images according to the selected model’s resolved capabilities, including text-only models ([8190](https://github.com/agentscope-ai/QwenPaw/pull/8190))
- Keep optional tool parameters optional for Responses API models unless strict validation is explicitly enabled ([7915](https://github.com/agentscope-ai/QwenPaw/pull/7915))
- Accept newer GPT token-limit parameters used by model providers ([8090](https://github.com/agentscope-ai/QwenPaw/pull/8090))
- Correct Agent token-budget accounting and loop warnings, and recover from context overflow at the start of a streamed reply ([7748](https://github.com/agentscope-ai/QwenPaw/pull/7748))
- Reclaim older media and tool results earlier so long conversations stay within the model context window ([7965](https://github.com/agentscope-ai/QwenPaw/pull/7965), [#8193](https://github.com/agentscope-ai/QwenPaw/pull/8193))
- Prevent loop protection from terminating a task without new repeated tool calls ([7919](https://github.com/agentscope-ai/QwenPaw/pull/7919))
- Prevent duplicate or fragmented ACP replies and enforce workspace protections for external runners with different tool argument formats ([7783](https://github.com/agentscope-ai/QwenPaw/pull/7783))
- Recognize ACP permission choices by their protocol-defined kind to avoid unnecessary prompts in trusted sessions ([7732](https://github.com/agentscope-ai/QwenPaw/pull/7732))
- Find user-installed command-line tools when running as a service or inside a container ([7057](https://github.com/agentscope-ai/QwenPaw/pull/7057))
- Recover model responses after a provider stalls while closing a stream ([7960](https://github.com/agentscope-ai/QwenPaw/pull/7960))
- Prevent Windows shell commands from propagating console control events that terminate the QwenPaw server ([7910](https://github.com/agentscope-ai/QwenPaw/pull/7910))
- Reduce command-line startup time by loading initialization code only when needed ([8004](https://github.com/agentscope-ai/QwenPaw/pull/8004))
- Handle compressed MCP error responses without breaking connection negotiation ([7787](https://github.com/agentscope-ai/QwenPaw/pull/7787))
- Restrict overly broad master-key file permissions when reading existing keys on Unix systems ([7699](https://github.com/agentscope-ai/QwenPaw/pull/7699))
- Validate Skill names before using them as installation paths ([8065](https://github.com/agentscope-ai/QwenPaw/pull/8065))
- Return a validation error instead of a server error for NaN and infinite numeric inputs ([7677](https://github.com/agentscope-ai/QwenPaw/pull/7677))
**Memory, Hub & Deployment**
- Show the specific reason when redeeming a Hub invitation fails ([7952](https://github.com/agentscope-ai/QwenPaw/pull/7952))
- Close Hub database connections after transactions to avoid exhausting connections ([8038](https://github.com/agentscope-ai/QwenPaw/pull/8038))
- Allow pending memory jobs to finish during graceful shutdown, including Windows desktop shutdown ([7760](https://github.com/agentscope-ai/QwenPaw/pull/7760))
- Repair damaged history search indexes and recover retention cleanup without discarding conversation history ([7655](https://github.com/agentscope-ai/QwenPaw/pull/7655))
- Strengthen history database writes, backups, and restores to reduce data loss after interrupted or failed operations ([6459](https://github.com/agentscope-ai/QwenPaw/pull/6459))
- Distinguish failed memory jobs with empty error details from successful empty results in Inbox notifications ([7756](https://github.com/agentscope-ai/QwenPaw/pull/7756))
- Restore the memory runtime after rolling back a failed backend change ([7893](https://github.com/agentscope-ai/QwenPaw/pull/7893))
- Validate embedding-service timeouts consistently when saving settings or testing the connection ([7758](https://github.com/agentscope-ai/QwenPaw/pull/7758))
- Require confirmation before processing more than 50 pending emails and pause after three consecutive failures, with resume controls in the Inbox ([7690](https://github.com/agentscope-ai/QwenPaw/pull/7690))
- Keep approval decisions through timeout races so pending tool requests resolve consistently ([8188](https://github.com/agentscope-ai/QwenPaw/pull/8188))
- Fix Hub Local runtime initialization, CLI access, and persistent workspaces, and restore authenticated PawApp access with correct model limits ([7833](https://github.com/agentscope-ai/QwenPaw/pull/7833))
- Honor administrator overrides when checking member token permissions in Hub ([8169](https://github.com/agentscope-ai/QwenPaw/pull/8169))
- Restore file previews through the Hub personal-runtime proxy ([7766](https://github.com/agentscope-ai/QwenPaw/pull/7766))
- Record login attempts and denied runtime creation in Hub audit logs ([7683](https://github.com/agentscope-ai/QwenPaw/pull/7683))
- Handle interrupted plugin catalog downloads without returning an internal server error ([7763](https://github.com/agentscope-ai/QwenPaw/pull/7763))
- Restore loading of the bundled omp-roles Skill when it appears installed but cannot be used ([7922](https://github.com/agentscope-ai/QwenPaw/pull/7922))
- Release PawApp streaming resources reliably and prevent cancellation from leaving tasks waiting indefinitely ([7488](https://github.com/agentscope-ai/QwenPaw/pull/7488))
- Include the Console channel in desktop packages so the application can start correctly ([7816](https://github.com/agentscope-ai/QwenPaw/pull/7816))
- Restore approval and denial of tool requests when the desktop pet is enabled ([7933](https://github.com/agentscope-ai/QwenPaw/pull/7933))
- Use the same pinned application Python runtime in Docker and desktop builds ([7751](https://github.com/agentscope-ai/QwenPaw/pull/7751))
- Stop repeated output errors after the terminal that launched QwenPaw has closed ([6569](https://github.com/agentscope-ai/QwenPaw/pull/6569))
New Contributors
- [Wiziechen](https://github.com/Wiziechen)
- [TerebiSAMA](https://github.com/TerebiSAMA)
- [yang0228](https://github.com/yang0228)
- [lorenzozanee](https://github.com/lorenzozanee)
- [BeiMu-new](https://github.com/BeiMu-new)
- [fanghua-ai](https://github.com/fanghua-ai)
- [iluv7](https://github.com/iluv7)
- [shuziP](https://github.com/shuziP)
- [sdxwmlyl](https://github.com/sdxwmlyl)
- [Xinji-Mai](https://github.com/Xinji-Mai)
- [96loveslife](https://github.com/96loveslife)
**Full Changelog**: [v2.2.1...v2.2.2](https://github.com/agentscope-ai/QwenPaw/compare/v2.2.1...v2.2.2)