Repository navigation
Feat/UI plugin port - #56
Merged
Merged
Conversation
MCP Apps plugin pages, Gen UI and the bundled visualize plugin on top of the v3.14.3 base, with CCbuddy identity and data rules kept: no official MCP auth wiring, no cloud help config, no CDN icon, output under ~/.ccbuddy. Re-pins runtime-manifest hashes for the rebranded assets. Skips upstream screenshots, README/notices edits and an unreferenced patch. Adds docs/specs/plugin-ui-and-gen-ui.md and docs/ui-plugin.md.
Footer logo tile and pill share one radius (the 2xl left corners were for the upstream round avatar). Model settings show an empty state with an add action instead of an endless loading card when no provider exists. The add-provider list is one vendor-neutral list: DeepSeek, Alibaba Model Studio, Zhipu first, the rest in template order, custom last.
…Cbuddy The history catalog now includes CCbuddy's own agent sessions (one entry per row of ~/.ccbuddy/cli/db/db.sqlite via a verified snapshot), scans CLAUDE_CONFIG_DIR and detected Claude profile directories, and accepts user-added read-only roots stored as historyExtraRoots; the snapshot reports every root with origin and availability. "Continue in CCbuddy" imports any external session into a new CCbuddy session through the agent's importedHistory contract (new externalHistory variant): tool calls fold into assistant turns with bounded payloads, control blocks and reasoning are dropped, same-role turns merge, and re-importing reopens the existing task. CCbuddy's own sessions open their task directly. List: date groups, source chips with counts, project filter, sort, relative time, duration and model per row. Reader: facts header with the continue/open action, role accents, tool-call previews. Timeline: source colors, legend, today marker, hover card. Partial scan failures show as a status note instead of a failure banner. Specs and docs updated.
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
MCP tool refresh can retain stale schemas, imported task IDs can collide across workspace identities, and plugin derivation state is unbounded.
Review effort: Balanced
Findings: 1
Open (3)
What changed in this PR
Adds MCP plugin UI and Gen UI sandbox support across protocol, services, desktop, and shared UI, alongside history import and provider-setting improvements.
Changes:
- Introduces sandboxed MCP App/Gen UI rendering, messaging, sampling, and side-pane integration.
- Extends protocol/runtime support for plugin events, progress, generated UI, and history imports.
- Adds history roots, provider empty states/template ordering, tests, docs, and build assets.
| File | Description |
|---|---|
README.md |
Links plugin UI documentation. |
README.en.md |
Links plugin UI specification. |
packages/ui/vitest.config.ts |
Adds UI test alias configuration. |
packages/ui/src/WorkspaceSidebarFooter.tsx |
Adjusts profile logo styling. |
packages/ui/src/v4/WorkbenchPane.tsx |
Documents workflow/plugin routing. |
packages/ui/src/v4/toolCallRowAdapter.ts |
Projects tool progress. |
packages/ui/src/v4/conversationTurnWorkSegments.ts |
Keeps pinned plugin rows visible. |
packages/ui/src/v4/conversationTurnRenderUnits.ts |
Propagates plugin pin policy. |
packages/ui/src/v4/conversationRowContext.ts |
Documents plugin side-pane callback. |
packages/ui/src/v4/conversationProjectionStore.ts |
Exposes live-only deltas. |
packages/ui/src/ToolCallBlocks/ToolCallProgressIndicator.tsx |
Adds MCP progress indicator. |
packages/ui/src/ToolCallBlocks/resolveRenderer.ts |
Selects plugin UI renderer. |
packages/ui/src/ToolCallBlocks/renderers/mcp.tsx |
Displays MCP progress. |
packages/ui/src/ToolCallBlocks/fileSummaryTypes.ts |
Adds plugin binding context. |
packages/ui/src/ToolCallBlocks.tsx |
Injects plugin bindings. |
packages/ui/src/styles.css |
Adds progress animation. |
packages/ui/src/settings/ModelProviderSection.tsx |
Wires add-provider action. |
packages/ui/src/settings/model-provider-section/StatusCards.tsx |
Adds provider empty state. |
packages/ui/src/settings/model-provider-section/providerTemplateOrder.ts |
Orders preferred templates. |
packages/ui/src/settings/model-provider-section/providerTemplateOrder.test.ts |
Tests template ordering. |
packages/ui/src/settings/model-provider-section/Detail.tsx |
Shows provider empty state. |
packages/ui/src/root/RootShell.tsx |
Mounts plugin follow-up dialog. |
packages/ui/src/plugin-ui/sidePane/pluginUiSidePaneTab.ts |
Creates plugin side-pane tabs. |
packages/ui/src/plugin-ui/PluginUiToolCallBlock.tsx |
Adds plugin tool renderer. |
packages/ui/src/plugin-ui/PluginUiSidePane.tsx |
Connects side-pane model and view. |
packages/ui/src/plugin-ui/module.ts |
Declares plugin UI module. |
packages/ui/src/plugin-ui/index.ts |
Exposes plugin UI API. |
packages/ui/src/plugin-ui/hostPrimitives.ts |
Exposes host primitives. |
packages/ui/src/plugin-ui/domain/readPluginUiPresentation.ts |
Parses plugin presentation metadata. |
packages/ui/src/plugin-ui/domain/pluginUiRowPolicy.ts |
Defines row pinning policy. |
packages/ui/src/plugin-ui/domain/pluginUiLogicalScope.ts |
Resolves shared widget scope. |
packages/ui/src/plugin-ui/domain/pluginUiLogicalScope.test.ts |
Tests scope isolation. |
packages/ui/src/plugin-ui/domain/pluginUiFollowUp.ts |
Builds bounded follow-up prompts. |
packages/ui/src/plugin-ui/domain/pluginDisplayName.ts |
Formats plugin names. |
packages/ui/src/plugin-ui/contract.example.ts |
Demonstrates plugin contracts. |
packages/ui/src/plugin-ui/components/PluginUiSidePane.tsx |
Renders side-pane card. |
packages/ui/src/plugin-ui/app/pluginUiWidgetStateStore.ts |
Stores widget state. |
packages/ui/src/plugin-ui/app/pluginUiSurfaceStore.ts |
Tracks active surfaces. |
packages/ui/src/plugin-ui/app/pluginUiSurfaceFeedStore.ts |
Retains surface result feeds. |
packages/ui/src/plugin-ui/app/pluginUiInstanceStore.ts |
Stores timeline derivations. |
packages/ui/src/plugin-ui/app/pluginUiHostTeardown.ts |
Coordinates host teardown. |
packages/ui/src/plugin-ui/app/pluginUiFollowUpDialogStore.ts |
Queues follow-up confirmations. |
packages/ui/src/plugin-ui/app/pluginUiDisclosureStore.ts |
Stores manual disclosure state. |
packages/ui/src/plugin-ui/adapters/sandboxPageOwners.ts |
Shares sandbox page capacity. |
packages/ui/src/plugin-ui/adapters/sandboxPageOwners.test.ts |
Tests page capacity. |
packages/ui/src/plugin-ui/adapters/readPluginUiStyleVariables.ts |
Reads host theme variables. |
packages/ui/src/plugin-ui/adapters/pluginUiSessionBinding.ts |
Adapts session commands. |
packages/ui/src/plugin-ui/adapters/pluginUiSessionActions.ts |
Registers session actions. |
packages/ui/src/plugin-ui/adapters/pluginUiResourceDeltaFeed.ts |
Routes live plugin deltas. |
packages/ui/src/plugin-ui/adapters/messagePortTransport.ts |
Implements MessagePort transport. |
packages/ui/src/lib/workspaceSidePane.ts |
Adds plugin tab support. |
packages/ui/src/lib/taskSidePaneMemory.ts |
Remembers plugin auto-open state. |
packages/ui/src/lib/taskSidePaneMemory.test.ts |
Tests auto-open isolation. |
packages/ui/src/lib/assistantDirectiveParser.ts |
Supports custom parameter prefixes. |
packages/ui/src/hooks/useAppPanels.ts |
Opens plugin side panes. |
packages/ui/src/history/index.ts |
Exposes expanded history APIs. |
packages/ui/src/history/HistoryReview.test.tsx |
Updates history fixture. |
packages/ui/src/history/contract.ts |
Adds roots and session actions. |
packages/ui/src/gen-ui/module.ts |
Declares Gen UI module. |
packages/ui/src/gen-ui/index.ts |
Exposes Gen UI UI API. |
packages/ui/src/gen-ui/host.ts |
Exposes Gen UI host API. |
packages/ui/src/gen-ui/contract.ts |
Defines page contracts. |
packages/ui/src/gen-ui/CONTRACT.md |
Documents Gen UI behavior. |
packages/ui/src/gen-ui/contract.example.ts |
Adds contract example. |
packages/ui/src/gen-ui/adapters/theme.ts |
Maps Gen UI theme variables. |
packages/ui/src/app-shell/WorkspaceShellLayout.tsx |
Enables opening history tasks. |
packages/ui/src/app-shell/SidePaneTabTrigger.tsx |
Presents plugin tabs. |
packages/ui/src/app-shell/sidePaneTabPresentation.ts |
Adds plugin tab search metadata. |
packages/ui/package.json |
Adds MCP UI dependencies. |
packages/shared/src/validationAppSettings.ts |
Validates history roots. |
packages/shared/src/test-ids.ts |
Adds plugin UI test IDs. |
packages/shared/src/task-realtime-core.ts |
Adds external-history migration source. |
packages/shared/src/protocol.ts |
Adds history-root settings types. |
packages/shared/src/platform.ts |
Adds sandbox platform port. |
packages/shared/src/node/genUiPaths.ts |
Derives isolated Gen UI paths. |
packages/shared/src/node/genUiPaths.test.ts |
Tests path isolation. |
packages/shared/src/node.ts |
Exports Gen UI paths. |
packages/shared/src/mcp-apps/module.ts |
Declares MCP Apps protocol module. |
packages/shared/src/mcp-apps/instance.ts |
Defines instance credentials. |
packages/shared/src/mcp-apps/index.ts |
Exposes MCP Apps contracts. |
packages/shared/src/mcp-apps/hostContract.ts |
Defines host payloads and limits. |
packages/shared/src/mcp-apps/content.ts |
Concatenates text content. |
packages/shared/src/gen-ui/module.ts |
Declares Gen UI protocol module. |
packages/shared/src/gen-ui/index.ts |
Exposes Gen UI contracts. |
packages/shared/src/gen-ui/CONTRACT.md |
Documents Gen UI protocol. |
packages/shared/src/gen-ui/contract.example.ts |
Adds protocol examples. |
packages/shared/src/ccbuddy-task-types.ts |
Defines history import DTOs. |
packages/shared/src/ccbuddy-task-types-core.ts |
Adds external history source. |
packages/shared/src/ccbuddy-protocol-v4/toolDisplay.ts |
Adds UI metadata and progress. |
packages/shared/src/ccbuddy-protocol-v4/snapshot.ts |
Documents removed widget state. |
packages/shared/src/ccbuddy-protocol-v4/rows.ts |
Projects input source and progress. |
packages/shared/src/ccbuddy-protocol-v4/input-intent.ts |
Defines structured input sources. |
packages/shared/src/ccbuddy-protocol-v4/command.ts |
Accepts input source metadata. |
packages/shared/src/ccbuddy-protocol-v4/apply.ts |
Handles live plugin deltas. |
packages/shared/package.json |
Exposes new protocol subpaths. |
packages/services/src/session/history-import/historyImportTaskId.ts |
Derives imported task IDs. |
packages/services/src/session/ccbuddyTaskService.ts |
Adds history import service. |
packages/services/src/plugin-ui-bridge/samplingContract.ts |
Defines sampling service. |
packages/services/src/plugin-ui-bridge/sampling.test.ts |
Tests sampling boundary. |
packages/services/src/plugin-ui-bridge/pluginUiSamplingService.ts |
Implements sampling forwarding. |
packages/services/src/plugin-ui-bridge/pluginUiAppToolsService.ts |
Implements app-tool forwarding. |
packages/services/src/plugin-ui-bridge/module.ts |
Declares bridge module. |
packages/services/src/plugin-ui-bridge/instanceAccounts.ts |
Binds instances to accounts. |
packages/services/src/plugin-ui-bridge/instanceAccounts.test.ts |
Tests account invalidation. |
packages/services/src/plugin-ui-bridge/index.ts |
Exposes bridge services. |
packages/services/src/plugin-ui-bridge/CONTRACT.md |
Documents bridge boundaries. |
packages/services/src/plugin-ui-bridge/contract.example.ts |
Adds bridge examples. |
packages/services/src/index.ts |
Exports new services. |
packages/services/src/gen-ui/node.ts |
Exposes Node service factory. |
packages/services/src/gen-ui/module.ts |
Declares Gen UI service module. |
packages/services/src/gen-ui/index.ts |
Exposes Gen UI service. |
packages/services/src/gen-ui/contract.ts |
Defines Gen UI service contract. |
packages/services/src/gen-ui/CONTRACT.md |
Documents service ownership. |
packages/services/src/gen-ui/contract.example.ts |
Adds service example. |
packages/services/src/gen-ui/app/ports.ts |
Defines state storage port. |
packages/services/src/ccbuddy-agent/genUiOutputEnv.test.ts |
Tests Agent output environment. |
packages/services/src/ccbuddy-agent/ccbuddyAgentProcessManager.ts |
Supplies Gen UI output root. |
packages/services/src/accessor.ts |
Adds optional service accessors. |
packages/history/test/history-library.test.ts |
Updates discovery fixtures. |
packages/history/src/module.ts |
Resolves dynamic history roots. |
packages/history/src/domain/value.ts |
Filters control blocks. |
packages/history/src/domain/candidate.ts |
Supports database sessions. |
packages/history/src/app/source-adapter.ts |
Returns root statuses. |
packages/history/src/app/history-library.ts |
Refreshes dynamic roots. |
packages/history/src/adapters/history-source-repository.ts |
Reads CCbuddy history. |
packages/history/src/adapters/antigravity.ts |
Reuses SQLite snapshot helper. |
packages/desktop/vite.config.ts |
Adds sandbox renderer entry. |
packages/desktop/src/renderer/src/plugin-sandbox/openaiAlias.ts |
Adds OpenAI compatibility alias. |
packages/desktop/src/renderer/src/plugin-sandbox/genUiTweakRuntime.d.ts |
Types tweak runtime. |
packages/desktop/src/renderer/src/desktopPlatform.ts |
Installs sandbox platform. |
packages/desktop/src/renderer/plugin-sandbox.html |
Adds trusted sandbox shell. |
packages/desktop/src/preload/pluginSandbox/retainedMoves.ts |
Preserves moved webviews. |
packages/desktop/src/preload/pluginSandbox/retainedMoves.test.ts |
Tests retained moves. |
packages/desktop/src/preload/pluginSandbox/index.ts |
Transfers guest ports. |
packages/desktop/src/preload/pluginSandbox/hostBridge.ts |
Exposes sandbox operations. |
packages/desktop/src/preload/index.ts |
Installs sandbox bridge. |
packages/desktop/src/main/pluginSandbox/module.ts |
Declares sandbox module. |
packages/desktop/src/main/pluginSandbox/index.ts |
Exposes sandbox API. |
packages/desktop/src/main/pluginSandbox/genUiVendor.ts |
Resolves bundled vendor assets. |
packages/desktop/src/main/pluginSandbox/contract.test.ts |
Tests sandbox identity. |
packages/desktop/src/main/pluginSandbox/contract.example.ts |
Adds registration example. |
packages/desktop/src/main/pluginSandbox/capture.ts |
Validates image capture. |
packages/desktop/src/main/pluginSandbox/capture.test.ts |
Tests capture scaling. |
packages/desktop/src/main/localMediaPreviewProtocol.ts |
Registers additional schemes. |
packages/desktop/src/main/historyReviewIpc.ts |
Configures history roots. |
packages/desktop/src/main/desktopCommandHandlers.ts |
Clears sandbox browser data. |
packages/desktop/src/host/pluginSandbox/contract.ts |
Defines registration bridge. |
packages/desktop/scripts/run-production-build.mjs |
Cleans sandbox output. |
packages/desktop/scripts/prepare-agent-node-bundle.mjs |
Bundles visualize plugin. |
packages/desktop/scripts/mcp-apps-host-fixture/sampling-database.mjs |
Verifies sampling persistence. |
packages/desktop/scripts/mcp-apps-host-fixture/preload.ts |
Exposes fixture bridge. |
packages/desktop/scripts/mcp-apps-host-fixture/guest-evaluation.ts |
Evaluates fixture guests safely. |
packages/desktop/scripts/gen-ui-runtime-assets.mjs |
Copies pinned Gen UI assets. |
packages/desktop/scripts/gen-ui-fixture/preload.ts |
Exposes Gen UI fixture bridge. |
packages/desktop/scripts/gen-ui-fixture/output-files.ts |
Prepares isolated fixture output. |
packages/desktop/package.json |
Adds MCP dependencies. |
packages/client/src/remoteServiceAccess.ts |
Proxies new services. |
packages/client/src/remoteServiceAccess.sampling.test.ts |
Tests sampling proxy. |
packages/client/src/globals.d.ts |
Types sandbox preload API. |
package.json |
Adds root Vitest dependency. |
apps/ccbuddy-cli/packages/visualize-plugin/skills/visualize/references/styles.md |
Documents runtime styles. |
apps/ccbuddy-cli/packages/visualize-plugin/skills/visualize/LICENSE.md |
Documents asset licensing. |
apps/ccbuddy-cli/packages/visualize-plugin/skills/visualize/examples/calendar.html |
Adds calendar example. |
apps/ccbuddy-cli/packages/visualize-plugin/skills/visualize/assets/vendor/floating-ui-dom-1.7.4.min.js.LICENSE |
Adds Floating UI DOM license. |
apps/ccbuddy-cli/packages/visualize-plugin/skills/visualize/assets/vendor/floating-ui-core-1.7.3.min.js.LICENSE |
Adds Floating UI Core license. |
apps/ccbuddy-cli/packages/visualize-plugin/skills/visualize/assets/vendor/d3-7.9.0.min.js.LICENSE |
Adds D3 license. |
apps/ccbuddy-cli/packages/visualize-plugin/skills/visualize/assets/runtime-manifest.json |
Pins runtime asset hashes. |
apps/ccbuddy-cli/packages/visualize-plugin/package.json |
Defines visualize package. |
apps/ccbuddy-cli/packages/visualize-plugin/.ccbuddy-plugin/plugin.json |
Defines visualize plugin. |
apps/ccbuddy-cli/packages/core/src/tool/executor/types.ts |
Adds app-tool authorization hook. |
apps/ccbuddy-cli/packages/core/src/system-reminder/source.ts |
Documents removed plugin state. |
apps/ccbuddy-cli/packages/core/src/runtime/types.ts |
Adds Gen UI output root. |
apps/ccbuddy-cli/packages/core/src/runtime/methods/turn-loop.ts |
Refreshes MCP tools per turn. |
apps/ccbuddy-cli/packages/core/src/runtime/methods/session-persistence-concurrency.test.ts |
Tests concurrent persistence. |
apps/ccbuddy-cli/packages/core/src/runtime/methods/model-status.ts |
Supports non-persisted status. |
apps/ccbuddy-cli/packages/core/src/runtime/methods/input-intent-persistence.ts |
Persists input source. |
apps/ccbuddy-cli/packages/core/src/runtime/methods/index.ts |
Installs new runtime methods. |
apps/ccbuddy-cli/packages/core/src/runtime/methods/events.ts |
Coalesces session persistence. |
apps/ccbuddy-cli/packages/core/src/runtime/methods/context.ts |
Initializes Gen UI output. |
apps/ccbuddy-cli/packages/core/src/runtime/internal.ts |
Tracks MCP tool revisions. |
apps/ccbuddy-cli/packages/core/src/runtime/internal-turn-methods.ts |
Extends status options. |
apps/ccbuddy-cli/packages/core/src/runtime/internal-methods.ts |
Declares MCP refresh method. |
apps/ccbuddy-cli/packages/core/src/runtime/helpers/gen-ui-output.ts |
Creates Gen UI directories. |
apps/ccbuddy-cli/packages/core/src/runtime/agent-runtime.ts |
Adds sampling runtime API. |
apps/ccbuddy-cli/packages/core/src/plugin-reference/catalog.ts |
Includes plugin UI surfaces. |
apps/ccbuddy-cli/packages/core/src/context/types.ts |
Adds visualization directory context. |
apps/ccbuddy-cli/packages/core/src/context/sections/desktop.ts |
Advertises Gen UI support. |
apps/ccbuddy-cli/packages/core/src/context/builder.ts |
Passes Gen UI directory. |
apps/ccbuddy-cli/packages/contracts/src/plugins/index.ts |
Defines plugin surfaces. |
apps/ccbuddy-cli/packages/contracts/src/interfaces/session.port.ts |
Adds input source metadata. |
apps/ccbuddy-cli/packages/cli/scripts/build.mjs |
Adds MCP Apps build alias. |
apps/ccbuddy-cli/packages/bootstrap/src/ccbuddy-protocol/transport.ts |
Allows concurrent MCP UI calls. |
apps/ccbuddy-cli/packages/bootstrap/src/ccbuddy-protocol/plugin-ui-surfaces.ts |
Lists plugin surfaces. |
apps/ccbuddy-cli/packages/bootstrap/src/ccbuddy-protocol/mcp-ui/module.ts |
Declares MCP UI module. |
apps/ccbuddy-cli/packages/bootstrap/src/ccbuddy-protocol/mcp-ui/index.ts |
Exposes MCP UI handlers. |
apps/ccbuddy-cli/packages/bootstrap/src/ccbuddy-protocol/mcp-ui/contract.test.ts |
Tests server scoping. |
apps/ccbuddy-cli/packages/bootstrap/src/ccbuddy-protocol/mcp-ui/contract.example.ts |
Adds MCP UI example. |
apps/ccbuddy-cli/packages/bootstrap/src/ccbuddy-protocol/mcp-ui/appToolsContract.ts |
Defines app-tool protocol. |
apps/ccbuddy-cli/packages/bootstrap/src/ccbuddy-protocol-v4/transcript-hydration.ts |
Restores input source metadata. |
apps/ccbuddy-cli/packages/bootstrap/src/ccbuddy-protocol-v4/projection-state.ts |
Exempts live plugin deltas. |
apps/ccbuddy-cli/packages/bootstrap/src/ccbuddy-protocol-v4/event-normalizer.ts |
Normalizes input source. |
apps/ccbuddy-cli/packages/bootstrap/src/ccbuddy-protocol-v4/commands/input-intent.ts |
Propagates input source. |
apps/ccbuddy-cli/packages/bootstrap/src/ccbuddy-protocol-v4/commands/handlers/session-flow.ts |
Sends source metadata. |
apps/ccbuddy-cli/packages/bootstrap/src/ccbuddy-protocol-v4/cold-event-merge.ts |
Drops live-only cold events. |
apps/ccbuddy-cli/packages/bootstrap/src/ccbuddy-protocol-entrypoint.ts |
Routes MCP notifications. |
apps/ccbuddy-cli/packages/bootstrap/src/app/runtime-config.ts |
Reads Gen UI output environment. |
apps/ccbuddy-cli/.gitignore |
Includes visualize vendor assets. |
.oxfmtrc.json |
Excludes generated/runtime assets. |
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+8
to
+16
| export function buildImportedHistoryTaskId(params: { | ||
| producer: CCbuddyHistoryImportProducer; | ||
| producerSessionId: string; | ||
| workspacePath: string; | ||
| }): string { | ||
| const digest = createHash("sha256") | ||
| .update(`history:${params.producer}:${params.producerSessionId}:${params.workspacePath}`) | ||
| .digest("hex") | ||
| .slice(0, 24); |
Comment on lines
+191
to
+196
| function mcpToolsSignature(descriptors: readonly McpToolDescriptor[]): string { | ||
| return descriptors | ||
| .map((tool) => `${tool.serverName}\u0001${tool.toolName}\u0001${tool.description ?? ""}`) | ||
| .sort() | ||
| .join("\n"); | ||
| } |
Comment on lines
+11
to
+14
| const derivations = new Map<string, PluginUiInstanceDerivation>(); | ||
| const listeners = new Set<() => void>(); | ||
|
|
||
| export function setPluginUiInstanceDerivation( |
Derive import task IDs from the canonical workspace key while preserving existing local IDs. Add adapter-level coverage for idempotent imports and independent model routing across workspaces.
Compare canonical descriptor content at the existing turn boundary so schema, visibility, timeout and UI changes refresh registrations and provider caches. Preserve object-order equivalence and schema array semantics, with 13 regression cases.
Keep row derivations and disclosure pins in one workspace-scoped cache with mounted leases and at most 30 inactive sessions. Defer page-owner cleanup until the last view releases, preserving current projections and sandbox retention. Cover eviction, stale cleanup and real Electron row and retention flows.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


No description provided.