Open
Conversation
b4cb6cc to
a37b1ac
Compare
cb4cba0 to
d3c3464
Compare
After running a speed test, results are now displayed in a lightweight Canvas-based chart (4.5KB JS) instead of raw JSON. The webview shows throughput over time with hover tooltips, a summary header, and a "View JSON" button for the raw data. - Add `packages/speedtest/` webview (vanilla TS, no framework) - Extract `createBaseWebviewConfig` from the React-specific variant so lightweight webviews can reuse the shared Vite config - Add typed IPC via `SpeedtestApi` in `@repo/shared` - Accept duration as seconds, show real-time progress bar - Expose `extensionUri` through `ServiceContainer`
- Time-proportional x-axis with dashed leader line from t=0 - Uniform tick labels with smart unit selection (s/m/h) that scale from seconds to hours - Dynamic y-axis padding based on measured label width - Binary search hit-test with crosshair-snap for dense data - ResizeObserver debounced via requestAnimationFrame - Tooltip clamped to container bounds - General cleanup: named constants, single-pass data prep, responsive layout, safer error handling, input validation, missing dependency
- Plumb workspaceName from the command through to the panel title and the in-chart heading; drop the generic "Speed Test Results" label. - Read chart accent from the theme's button color so it tracks the active theme instead of being stuck on blue. - Re-send data on active-theme change so canvas pixels repaint against the new theme (DOM CSS vars update live, canvas doesn't). - Restructure chart.ts into readTheme/layoutChart/drawAxes/drawSeries, export niceStep/formatTick for testing. - Rename the panel viewType to coder.speedtestPanel to match the tasks/chat conventions. - Clean up the duration prompt and tests.
781bd7a to
8c6204a
Compare
Validate CLI output with Zod on the extension side so the webview trusts typed data and stops hand-parsing JSON. Share SpeedtestResult types via @repo/shared and flatten the message payload. Webview cleanup: newspaper-ordered index.ts with a main() entrypoint, em-scaled chart layout, named constants in place of magic numbers, empty samples handled with a message, and a subscribeNotification helper that useIpc now delegates to. Protocol: buildApiHook and useIpc now take RequestDef, CommandDef, and NotificationDef directly in both overloads, no casts needed. Platform: move toError into shared with a serialize hook so the extension keeps util.inspect output, rename createBaseWebviewConfig to createWebviewConfig, add createReactWebviewConfig, extract reportElapsedProgress for reuse by other long running commands, and drop the createWebviewConfig eslint ignore.
f0b417b to
4c8eb27
Compare
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.
Closes #888