{
  "schemaVersion": "1.0",
  "item": {
    "slug": "compaction-ui-enhancements",
    "name": "Better Chat Compaction + WebUI",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/maverick-software/compaction-ui-enhancements",
    "canonicalUrl": "https://clawhub.ai/maverick-software/compaction-ui-enhancements",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/compaction-ui-enhancements",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=compaction-ui-enhancements",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/auto-compaction.ts",
      "references/chat-filters.diff.md",
      "references/compact-summary-injection.ts",
      "references/compaction-rpc.ts",
      "references/compaction-settings-view.ts"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/compaction-ui-enhancements"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/compaction-ui-enhancements",
    "agentPageUrl": "https://openagent3.xyz/skills/compaction-ui-enhancements/agent",
    "manifestUrl": "https://openagent3.xyz/skills/compaction-ui-enhancements/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/compaction-ui-enhancements/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Compaction UI v2.1.0",
        "body": "Memory compaction system for the OpenClaw Control UI — background execution with toast notifications, auto-trigger at configurable token thresholds, conversation summary paragraphs in compacted output, dedicated settings tab with model selector, and result history."
      },
      {
        "title": "Status: ✅ Active",
        "body": "ComponentStatusContext Gauge Button✅ WorkingBackground Compaction (toast)✅ WorkingAuto-Compaction Trigger✅ WorkingConversation Summary Paragraph✅ WorkingSettings Tab (plugin-registered)✅ WorkingModel Selector✅ WorkingLast Result Storage + Viewer✅ WorkingSettings Persistence & Reload✅ WorkingAuth Hierarchy (OAuth > API > Fallback)✅ WorkingChat History Filters✅ WorkingFull Background Isolation (no chat interference)✅ Working"
      },
      {
        "title": "1. Context Gauge Button (app-render.helpers.ts)",
        "body": "A circular SVG progress ring in the chat toolbar that doubles as the manual compact trigger.\n\nPlacement: After session selector dropdown in renderChatControls()\nData source: sessionsResult.sessions[].totalTokens and contextTokens from session rows\nColors: Green (<60%), Yellow (60-85%), Red (≥85%)\nDisabled: When utilization <20% or during active compaction\nTooltip: Shows \"Context: XK / YK tokens (Z%)\""
      },
      {
        "title": "2. Background Compaction (Toast)",
        "body": "On click (or auto-trigger), compaction runs in the background using the standard bottom-right toast system — no blocking modal. The UI remains fully interactive.\n\nRunning toast: Shows \"Memory Compaction\" with spinner\nComplete toast: Shows \"Compacted: XK → YK\" with checkmark (auto-dismisses after 5s)\nError toast: Shows failure message (auto-dismisses after 5s)\nUses backgroundJobToasts system consistent with all other background processes (cron, knowledge extraction, etc.)"
      },
      {
        "title": "3. Auto-Compaction",
        "body": "After every chat response (final event), the UI checks token usage against the configured threshold. If exceeded:\n\nBackground compaction triggers automatically\nToast shows \"Auto-Compacting (X%)\" with the current utilization\n5-minute debounce prevents repeated triggers\nChat refreshes automatically after successful compaction\nSilent toast removal if nothing was compacted"
      },
      {
        "title": "4. Conversation Summary Paragraph",
        "body": "Every compaction output now begins with a ## Conversation Summary section before the structured ## Goal section. This is a 3-6 sentence natural language paragraph that:\n\nDescribes the overall topic(s) of the conversation\nExplains the flow of discussion and key transitions\nSummarizes how the conversation progressed\nWritten in past tense as a narrative overview\n\nImplementation: Custom instructions are injected into the upstream compaction LLM call via compact.ts. The instruction is prepended to any user-provided custom instructions (from /compact [instructions]), so both coexist.\n\nExample output:\n\n## Conversation Summary\nThe conversation began with the user requesting improvements to the compaction\nsystem, specifically moving from a blocking modal to background toasts. Discussion\nthen shifted to adding a settings tab with auto-compaction controls. After\nimplementing and testing those features, the user noticed settings weren't\npersisting across tab navigations, which led to a fix for the module-level\nstate cache. Finally, the user requested adding a narrative summary paragraph\nto the compaction output for better context.\n\n## Goal\n..."
      },
      {
        "title": "5. Settings Tab (Plugin-Registered)",
        "body": "A dedicated Compaction tab under the Agent navigation group, registered via the Plugin UI architecture.\n\nRegistration: plugins-ui.ts → BUILTIN_UI_VIEWS with id: \"compaction\", group: \"agent\", position: 7, icon: \"archive\"\n\nCards:\n\nAuto-Compaction Card\n\nToggle: Enable/disable automatic compaction\nThreshold slider: 10% to 95% (default: 60%)\nColor-coded: Green (<60%), Yellow (60-85%), Red (≥85%)\n\nModel Card\n\nDropdown: Select a specific model for compaction or use session default\nGrouped by provider with context window sizes shown\nWarning callout when custom model selected (API key reminder)\nFallback: If custom model fails, automatically falls back to session default\n\nResult Storage Card\n\nToggle: Opt-in to save the compacted summary text for review\n\nLast Compaction Card\n\nBefore/After: Large styled token counts in a 2-column grid\nStats: Tokens saved, percent reduction, trigger type, timestamp, session key\nView Results: Expandable summary viewer (when storage is enabled)\nClear: Reset stored result\nHint: Shows \"Enable Store Results\" message when storage is off\n\nState Management:\n\nModule-level state persists across re-renders within a session\nSettings reload from backend every time the tab is visited (2-second staleness threshold)\nresetCompactionSettingsState() exported for tests and tab switches"
      },
      {
        "title": "6. Auth Hierarchy",
        "body": "Compaction uses resolveApiKeyForProvider via getApiKeyForModel — the same auth chain as chat:\n\nOAuth → API Key → Fallback\n\nNo separate configuration needed. If OAuth (Claude Max) is configured as the primary auth profile, compaction uses it automatically. Custom model selection uses this same auth chain independently."
      },
      {
        "title": "7. Result Storage",
        "body": "When enabled, the most recent compaction result is persisted to {agentDir}/compaction-config.json:\n\n{\n  \"settings\": {\n    \"autoEnabled\": true,\n    \"autoThresholdPercent\": 60,\n    \"storeLastResult\": true,\n    \"compactionModel\": \"anthropic/claude-sonnet-4-6\"\n  },\n  \"lastResult\": {\n    \"timestamp\": 1709283600000,\n    \"trigger\": \"manual\",\n    \"tokensBefore\": 50614,\n    \"tokensAfter\": 4766,\n    \"tokensSaved\": 45848,\n    \"percentReduction\": 91,\n    \"sessionKey\": \"agent:main:main\",\n    \"summary\": \"## Conversation Summary\\nThe conversation focused on...\\n\\n## Goal\\n...\"\n  }\n}\n\nWhen storage is disabled, metadata (timestamps, token counts) is still saved but the summary text is omitted."
      },
      {
        "title": "8. Chat History Filters",
        "body": "NO_REPLY/HEARTBEAT_OK filtering: Skips assistant messages with these exact texts\nCompaction divider: Renders labeled divider line for __openclaw.kind === \"compaction\" messages"
      },
      {
        "title": "Backend RPCs",
        "body": "MethodDescriptionsessions.compactExecute compaction (records result after completion)compaction.getSettingsRead settings from config filecompaction.saveSettingsUpdate settings (threshold auto-clamped 10-95%)compaction.getLastResultGet stored last compaction resultcompaction.clearLastResultClear stored result"
      },
      {
        "title": "Files Modified",
        "body": "FilePurposesrc/gateway/server-methods/compaction.tsSettings RPCs, config I/O, result recordingsrc/gateway/server-methods/sessions.tssessions.compact RPC (records result after compaction)src/gateway/server-methods/plugins-ui.tsPlugin view registrationsrc/gateway/server-methods.tsHandler wiringsrc/gateway/server-methods-list.tsMethod registrationsrc/gateway/method-scopes.tsScope registrationsrc/agents/pi-embedded-runner/compact.tsChat summary instruction injectionui/src/ui/app-render.helpers.tsContext gauge + background toast triggerui/src/ui/app-gateway.tsAuto-compaction check after final eventui/src/ui/views/compaction-settings.tsSettings tab viewui/src/ui/app-render.tsView wiring + importui/src/ui/views/chat.tsChat history filters"
      },
      {
        "title": "Config File",
        "body": "{agentDir}/compaction-config.json — per-agent, created on first settings save."
      },
      {
        "title": "Plugin Registration",
        "body": "The compaction tab is registered as a builtin plugin view in plugins-ui.ts:\n\n{\n  id: \"compaction\",\n  label: \"Compaction\",\n  subtitle: \"Memory Management\",\n  icon: \"archive\",\n  group: \"agent\",\n  position: 7,\n  pluginId: \"compaction-ui\",\n}"
      },
      {
        "title": "Known Gotchas",
        "body": "Settings not persisting across tab visits: Fixed in v2.1.0. The module-level _state.loaded flag was preventing reloads. Now reloads every 2 seconds when re-entering the tab.\nModel selector requires API keys: If you select a custom model, make sure the provider's API key is configured. The UI shows a warning callout.\nCompaction model format: Must be \"provider/model\" format (e.g. \"anthropic/claude-sonnet-4-6\"). Invalid formats are silently ignored and fall back to session default.\nparentId skip-set propagation must be message-only: When filtering memory flush messages from readSessionMessages, the skip set must ONLY propagate through entries with a message field. Non-message protocol entries (type:\"custom\") bridge between logical turns — if their IDs enter the skip set, the entire remaining conversation gets hidden. The fix: only check parsed?.message entries against the skip set, and only add their IDs to it.\nNo blocking modal — ever: The gauge button in app-render.helpers.ts must NEVER render a full-screen overlay modal. Compaction is a background process; all status is communicated via the bottom-right toast system. Remove any position:fixed; inset:0 overlay conditioned on compactState.phase. The button may show a spinner icon while running, but must not block the UI."
      },
      {
        "title": "v2.1.0",
        "body": "Conversation summary paragraph: Compaction output now starts with a ## Conversation Summary narrative paragraph before structured sections\nModel selector: Choose a specific model for compaction or use session default, with provider-grouped dropdown\nSettings reload fix: Tab now reloads settings from backend every 2s instead of caching forever\nReference files updated: Synced references/ with current source"
      },
      {
        "title": "v2.0.0",
        "body": "Background compaction: Replaced blocking full-screen modal with background job toast\nAuto-compaction: Triggers after chat response when token usage exceeds threshold (configurable, default 60%, 5-minute debounce)\nSettings tab: Plugin-registered Compaction tab under Agent nav group\nResult recording: sessions.compact records before/after token counts and optional summary\nAuth hierarchy: Same OAuth → API → Fallback chain as chat\nSettings RPCs: compaction.getSettings, compaction.saveSettings, compaction.getLastResult, compaction.clearLastResult"
      },
      {
        "title": "v1.0.0",
        "body": "Initial release: Context gauge button, blocking modal with animated phases, sessions.compact RPC with LLM summarization, chat history NO_REPLY/HEARTBEAT_OK filtering, compaction divider lines"
      }
    ],
    "body": "Compaction UI v2.1.0\n\nMemory compaction system for the OpenClaw Control UI — background execution with toast notifications, auto-trigger at configurable token thresholds, conversation summary paragraphs in compacted output, dedicated settings tab with model selector, and result history.\n\nStatus: ✅ Active\nComponent\tStatus\nContext Gauge Button\t✅ Working\nBackground Compaction (toast)\t✅ Working\nAuto-Compaction Trigger\t✅ Working\nConversation Summary Paragraph\t✅ Working\nSettings Tab (plugin-registered)\t✅ Working\nModel Selector\t✅ Working\nLast Result Storage + Viewer\t✅ Working\nSettings Persistence & Reload\t✅ Working\nAuth Hierarchy (OAuth > API > Fallback)\t✅ Working\nChat History Filters\t✅ Working\nFull Background Isolation (no chat interference)\t✅ Working\nFeatures\n1. Context Gauge Button (app-render.helpers.ts)\n\nA circular SVG progress ring in the chat toolbar that doubles as the manual compact trigger.\n\nPlacement: After session selector dropdown in renderChatControls()\nData source: sessionsResult.sessions[].totalTokens and contextTokens from session rows\nColors: Green (<60%), Yellow (60-85%), Red (≥85%)\nDisabled: When utilization <20% or during active compaction\nTooltip: Shows \"Context: XK / YK tokens (Z%)\"\n2. Background Compaction (Toast)\n\nOn click (or auto-trigger), compaction runs in the background using the standard bottom-right toast system — no blocking modal. The UI remains fully interactive.\n\nRunning toast: Shows \"Memory Compaction\" with spinner\nComplete toast: Shows \"Compacted: XK → YK\" with checkmark (auto-dismisses after 5s)\nError toast: Shows failure message (auto-dismisses after 5s)\nUses backgroundJobToasts system consistent with all other background processes (cron, knowledge extraction, etc.)\n3. Auto-Compaction\n\nAfter every chat response (final event), the UI checks token usage against the configured threshold. If exceeded:\n\nBackground compaction triggers automatically\nToast shows \"Auto-Compacting (X%)\" with the current utilization\n5-minute debounce prevents repeated triggers\nChat refreshes automatically after successful compaction\nSilent toast removal if nothing was compacted\n4. Conversation Summary Paragraph\n\nEvery compaction output now begins with a ## Conversation Summary section before the structured ## Goal section. This is a 3-6 sentence natural language paragraph that:\n\nDescribes the overall topic(s) of the conversation\nExplains the flow of discussion and key transitions\nSummarizes how the conversation progressed\nWritten in past tense as a narrative overview\n\nImplementation: Custom instructions are injected into the upstream compaction LLM call via compact.ts. The instruction is prepended to any user-provided custom instructions (from /compact [instructions]), so both coexist.\n\nExample output:\n\n## Conversation Summary\nThe conversation began with the user requesting improvements to the compaction\nsystem, specifically moving from a blocking modal to background toasts. Discussion\nthen shifted to adding a settings tab with auto-compaction controls. After\nimplementing and testing those features, the user noticed settings weren't\npersisting across tab navigations, which led to a fix for the module-level\nstate cache. Finally, the user requested adding a narrative summary paragraph\nto the compaction output for better context.\n\n## Goal\n...\n\n5. Settings Tab (Plugin-Registered)\n\nA dedicated Compaction tab under the Agent navigation group, registered via the Plugin UI architecture.\n\nRegistration: plugins-ui.ts → BUILTIN_UI_VIEWS with id: \"compaction\", group: \"agent\", position: 7, icon: \"archive\"\n\nCards:\n\nAuto-Compaction Card\nToggle: Enable/disable automatic compaction\nThreshold slider: 10% to 95% (default: 60%)\nColor-coded: Green (<60%), Yellow (60-85%), Red (≥85%)\nModel Card\nDropdown: Select a specific model for compaction or use session default\nGrouped by provider with context window sizes shown\nWarning callout when custom model selected (API key reminder)\nFallback: If custom model fails, automatically falls back to session default\nResult Storage Card\nToggle: Opt-in to save the compacted summary text for review\nLast Compaction Card\nBefore/After: Large styled token counts in a 2-column grid\nStats: Tokens saved, percent reduction, trigger type, timestamp, session key\nView Results: Expandable summary viewer (when storage is enabled)\nClear: Reset stored result\nHint: Shows \"Enable Store Results\" message when storage is off\n\nState Management:\n\nModule-level state persists across re-renders within a session\nSettings reload from backend every time the tab is visited (2-second staleness threshold)\nresetCompactionSettingsState() exported for tests and tab switches\n6. Auth Hierarchy\n\nCompaction uses resolveApiKeyForProvider via getApiKeyForModel — the same auth chain as chat:\n\nOAuth → API Key → Fallback\n\nNo separate configuration needed. If OAuth (Claude Max) is configured as the primary auth profile, compaction uses it automatically. Custom model selection uses this same auth chain independently.\n\n7. Result Storage\n\nWhen enabled, the most recent compaction result is persisted to {agentDir}/compaction-config.json:\n\n{\n  \"settings\": {\n    \"autoEnabled\": true,\n    \"autoThresholdPercent\": 60,\n    \"storeLastResult\": true,\n    \"compactionModel\": \"anthropic/claude-sonnet-4-6\"\n  },\n  \"lastResult\": {\n    \"timestamp\": 1709283600000,\n    \"trigger\": \"manual\",\n    \"tokensBefore\": 50614,\n    \"tokensAfter\": 4766,\n    \"tokensSaved\": 45848,\n    \"percentReduction\": 91,\n    \"sessionKey\": \"agent:main:main\",\n    \"summary\": \"## Conversation Summary\\nThe conversation focused on...\\n\\n## Goal\\n...\"\n  }\n}\n\n\nWhen storage is disabled, metadata (timestamps, token counts) is still saved but the summary text is omitted.\n\n8. Chat History Filters\nNO_REPLY/HEARTBEAT_OK filtering: Skips assistant messages with these exact texts\nCompaction divider: Renders labeled divider line for __openclaw.kind === \"compaction\" messages\nArchitecture\nBackend RPCs\nMethod\tDescription\nsessions.compact\tExecute compaction (records result after completion)\ncompaction.getSettings\tRead settings from config file\ncompaction.saveSettings\tUpdate settings (threshold auto-clamped 10-95%)\ncompaction.getLastResult\tGet stored last compaction result\ncompaction.clearLastResult\tClear stored result\nFiles Modified\nFile\tPurpose\nsrc/gateway/server-methods/compaction.ts\tSettings RPCs, config I/O, result recording\nsrc/gateway/server-methods/sessions.ts\tsessions.compact RPC (records result after compaction)\nsrc/gateway/server-methods/plugins-ui.ts\tPlugin view registration\nsrc/gateway/server-methods.ts\tHandler wiring\nsrc/gateway/server-methods-list.ts\tMethod registration\nsrc/gateway/method-scopes.ts\tScope registration\nsrc/agents/pi-embedded-runner/compact.ts\tChat summary instruction injection\nui/src/ui/app-render.helpers.ts\tContext gauge + background toast trigger\nui/src/ui/app-gateway.ts\tAuto-compaction check after final event\nui/src/ui/views/compaction-settings.ts\tSettings tab view\nui/src/ui/app-render.ts\tView wiring + import\nui/src/ui/views/chat.ts\tChat history filters\nConfig File\n\n{agentDir}/compaction-config.json — per-agent, created on first settings save.\n\nPlugin Registration\n\nThe compaction tab is registered as a builtin plugin view in plugins-ui.ts:\n\n{\n  id: \"compaction\",\n  label: \"Compaction\",\n  subtitle: \"Memory Management\",\n  icon: \"archive\",\n  group: \"agent\",\n  position: 7,\n  pluginId: \"compaction-ui\",\n}\n\nKnown Gotchas\nSettings not persisting across tab visits: Fixed in v2.1.0. The module-level _state.loaded flag was preventing reloads. Now reloads every 2 seconds when re-entering the tab.\nModel selector requires API keys: If you select a custom model, make sure the provider's API key is configured. The UI shows a warning callout.\nCompaction model format: Must be \"provider/model\" format (e.g. \"anthropic/claude-sonnet-4-6\"). Invalid formats are silently ignored and fall back to session default.\nparentId skip-set propagation must be message-only: When filtering memory flush messages from readSessionMessages, the skip set must ONLY propagate through entries with a message field. Non-message protocol entries (type:\"custom\") bridge between logical turns — if their IDs enter the skip set, the entire remaining conversation gets hidden. The fix: only check parsed?.message entries against the skip set, and only add their IDs to it.\nNo blocking modal — ever: The gauge button in app-render.helpers.ts must NEVER render a full-screen overlay modal. Compaction is a background process; all status is communicated via the bottom-right toast system. Remove any position:fixed; inset:0 overlay conditioned on compactState.phase. The button may show a spinner icon while running, but must not block the UI.\nChangelog\nv2.1.0\nConversation summary paragraph: Compaction output now starts with a ## Conversation Summary narrative paragraph before structured sections\nModel selector: Choose a specific model for compaction or use session default, with provider-grouped dropdown\nSettings reload fix: Tab now reloads settings from backend every 2s instead of caching forever\nReference files updated: Synced references/ with current source\nv2.0.0\nBackground compaction: Replaced blocking full-screen modal with background job toast\nAuto-compaction: Triggers after chat response when token usage exceeds threshold (configurable, default 60%, 5-minute debounce)\nSettings tab: Plugin-registered Compaction tab under Agent nav group\nResult recording: sessions.compact records before/after token counts and optional summary\nAuth hierarchy: Same OAuth → API → Fallback chain as chat\nSettings RPCs: compaction.getSettings, compaction.saveSettings, compaction.getLastResult, compaction.clearLastResult\nv1.0.0\nInitial release: Context gauge button, blocking modal with animated phases, sessions.compact RPC with LLM summarization, chat history NO_REPLY/HEARTBEAT_OK filtering, compaction divider lines"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/maverick-software/compaction-ui-enhancements",
    "publisherUrl": "https://clawhub.ai/maverick-software/compaction-ui-enhancements",
    "owner": "maverick-software",
    "version": "2.3.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/compaction-ui-enhancements",
    "downloadUrl": "https://openagent3.xyz/downloads/compaction-ui-enhancements",
    "agentUrl": "https://openagent3.xyz/skills/compaction-ui-enhancements/agent",
    "manifestUrl": "https://openagent3.xyz/skills/compaction-ui-enhancements/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/compaction-ui-enhancements/agent.md"
  }
}