diff --git a/extension/.vscodeignore b/extension/.vscodeignore index 786d358a..5e7de304 100644 --- a/extension/.vscodeignore +++ b/extension/.vscodeignore @@ -3,6 +3,7 @@ # downloads from the servers on first use (ASSET_URLS in src/extension.ts). ** !package.json +!telemetry.json !README.md !CHANGELOG.md !LICENSE diff --git a/extension/CHANGELOG.md b/extension/CHANGELOG.md index ca4c4a42..6dec2b42 100644 --- a/extension/CHANGELOG.md +++ b/extension/CHANGELOG.md @@ -1,17 +1,5 @@ # Changelog -## Unreleased - -- Compiler and emulator crashes send an error report to 8bitworkshop.com, - following VS Code's `telemetry.telemetryLevel` setting. See the README. - -- The Atari 2600 now stops at breakpoints and steps by instruction, not by - frame, and can step back. -- `.s`, `.asm`, `.inc` and `.a` files in a project get the highlighting - for the platform's CPU. `.acme` files get 6502 highlighting. -- The platform list shows the 8bitworkshop book for each platform that - has one, with a button to open it. - ## 0.1.0 First preview. @@ -23,3 +11,11 @@ First preview. - Emulator panel with pause, reset, and mute. - Syntax highlighting for 6502, Z80, and 6809 assembly. - Toolchains download on first use, checked against built-in hashes. +- Compiler and emulator crashes send an error report to 8bitworkshop.com, + following VS Code's `telemetry.telemetryLevel` setting. See the README. +- The Atari 2600 now stops at breakpoints and steps by instruction, not by + frame, and can step back. +- `.s`, `.asm`, `.inc` and `.a` files in a project get the highlighting + for the platform's CPU. `.acme` files get 6502 highlighting. +- The platform list shows the 8bitworkshop book for each platform that + has one, with a button to open it. diff --git a/extension/README.md b/extension/README.md index 2c99da63..900b24d4 100644 --- a/extension/README.md +++ b/extension/README.md @@ -121,10 +121,14 @@ and Open Example lists show which platforms have one. ## Error reports When a compiler or the emulator crashes, the extension sends an error report -to 8bitworkshop.com: the error message, stack trace, platform, tool, and -VS Code and extension versions. It doesn't send your source files. Errors in your -program, like a syntax error or a crash in the emulated machine, aren't -reported. +to 8bitworkshop.com: the error message, stack trace, platform, and tool, plus +VS Code and extension versions. It doesn't send your source files, and VS Code +removes file paths from the report before it leaves. Errors in your program, +like a syntax error or a crash in the emulated machine, aren't reported. + +VS Code attaches identifiers to every report: a machine id (stable for your +VS Code install, not tied to your identity), a session id, and a device id. +These group reports from one install together. The reports follow VS Code's `telemetry.telemetryLevel` setting: set it to `off` to stop them. diff --git a/extension/telemetry.json b/extension/telemetry.json new file mode 100644 index 00000000..011e1299 --- /dev/null +++ b/extension/telemetry.json @@ -0,0 +1,44 @@ +{ + "commonProperties": {}, + "events": { + "error": { + "owner": "sehugg", + "comment": "A build tool, emulator, or extension failure, sent to 8bitworkshop.com/error.php. Gated on VS Code's telemetry.telemetryLevel through env.createTelemetryLogger; nothing is sent when telemetry is off. Uncaught errors from this extension use the same sender.", + "source": { + "classification": "SystemMetaData", + "purpose": "FeatureInsight", + "comment": "Where the failure came from: vscode, worker, emu, or ide." + }, + "msg": { + "classification": "CallstackOrException", + "purpose": "PerformanceAndHealth", + "comment": "Error message, cleaned by VS Code and truncated to 2000 characters." + }, + "stack": { + "classification": "CallstackOrException", + "purpose": "PerformanceAndHealth", + "comment": "Stack trace, with user paths scrubbed by VS Code, truncated to 2000 characters." + }, + "clientTime": { + "classification": "SystemMetaData", + "purpose": "PerformanceAndHealth", + "comment": "ISO 8601 timestamp from the client." + }, + "platform": { + "classification": "SystemMetaData", + "purpose": "FeatureInsight", + "comment": "Platform id, for example nes or c64." + }, + "tool": { + "classification": "SystemMetaData", + "purpose": "FeatureInsight", + "comment": "Build tool id, for example cc65 or dasm." + }, + "window": { + "classification": "SystemMetaData", + "purpose": "FeatureInsight", + "comment": "Window or workspace identifier, when provided." + } + } + } +}