Compare commits

..

No commits in common. "a73549539bb205169189158532c32d0fc44b104e" and "0c802ba1652296c79d26ff3e990578e67e6734b1" have entirely different histories.

2 changed files with 37 additions and 62 deletions

View File

@ -24,21 +24,12 @@ Code v99.99.999
Code v1.90.0
### Fixed
- Cache a call to get CPU information used in telemetry that could result in a
lack responsiveness if it was particularly slow.
## [4.90.0](https://github.com/coder/code-server/releases/tag/v4.90.0) - 2024-06-11
Code v1.90.0
### Changed
## Changed
- Updated to Code 1.90.0.
- Updated Node to 20.11.1.
### Added
## Added
- Send contents to the clipboard in the integrated terminal by piping to
`code-server --stdin-to-clipboard` or `code-server -c`.
@ -54,7 +45,7 @@ Code v1.90.0
Code v1.89.1
### Changed
## Changed
- Updated to Code 1.89.1.
@ -62,7 +53,7 @@ Code v1.89.1
Code v1.89.0
### Changed
## Changed
- Updated to Code 1.89.0.
@ -70,7 +61,7 @@ Code v1.89.0
Code v1.88.1
### Changed
## Changed
- Updated to Code 1.88.1.
@ -78,12 +69,12 @@ Code v1.88.1
Code v1.88.0
### Changed
## Changed
- Updated to Code 1.88.0.
- Updated Node to 18.18.2.
### Fixed
## Fixed
- Fix masking the exit code when failing to install extensions on the command
line outside the integrated terminal. Installing extensions inside the
@ -93,7 +84,7 @@ Code v1.88.0
Code v1.87.2
### Changed
## Changed
- Updated to Code 1.87.2.
- Enable keep-alive for proxy agent.
@ -102,7 +93,7 @@ Code v1.87.2
Code v1.87.0
### Changed
## Changed
- Updated to Code 1.87.0.
@ -110,7 +101,7 @@ Code v1.87.0
Code v1.86.2
### Changed
## Changed
- Updated to Code 1.86.2.
@ -118,12 +109,12 @@ Code v1.86.2
Code v1.86.1
### Changed
## Changed
- Updated to Code 1.86.1.
- Updated to Node 18.17.1.
### Added
## Added
- Docker images for Fedora and openSUSE.
@ -131,7 +122,7 @@ Code v1.86.1
Code v1.86.0
### Changed
## Changed
- Updated to Code 1.86.0.
@ -139,11 +130,11 @@ Code v1.86.0
Code v1.85.2
### Changed
## Changed
- Updated to Code 1.85.2.
### Fixed
## Fixed
- Query variables are no longer double-encoded when going over the path proxy.

View File

@ -50,66 +50,50 @@ Index: code-server/lib/vscode/src/vs/server/node/telemetryClient.ts
===================================================================
--- /dev/null
+++ code-server/lib/vscode/src/vs/server/node/telemetryClient.ts
@@ -0,0 +1,71 @@
@@ -0,0 +1,55 @@
+import { AppInsightsCore, IExtendedTelemetryItem, ITelemetryItem } from '@microsoft/1ds-core-js';
+import * as https from 'https';
+import * as http from 'http';
+import * as os from 'os';
+
+interface SystemInfo {
+ measurements: Record<string, number | undefined>;
+ properties: Record<string, string | boolean | null | undefined>;
+}
+
+export class TelemetryClient extends AppInsightsCore {
+ private readonly systemInfo: SystemInfo = {
+ measurements: {},
+ properties: {},
+ };
+
+ public constructor(
+ private readonly endpoint: string,
+ machineId: string,
+ isContainer: boolean | undefined) {
+ private readonly machineId: string,
+ private readonly isContainer: Boolean | undefined) {
+ super();
+
+ // os.cpus() can take a very long time sometimes (personally I see 1-2
+ // seconds in a Coder workspace). This adds up significantly, especially
+ // when many telemetry requests are sent during startup, which can cause
+ // connection timeouts. Try to cache as much as we can.
+ try {
+ const cpus = os.cpus();
+ this.systemInfo.measurements.cores = cpus.length;
+ this.systemInfo.properties['common.cpuModel'] = cpus[0].model;
+ } catch (error) {}
+
+ try {
+ this.systemInfo.properties['common.shell'] = os.userInfo().shell;
+ this.systemInfo.properties['common.release'] = os.release();
+ this.systemInfo.properties['common.arch'] = os.arch();
+ } catch (error) {}
+
+ this.systemInfo.properties['common.remoteMachineId'] = machineId;
+ this.systemInfo.properties['common.isContainer'] = isContainer;
+ }
+
+ public override track(item: IExtendedTelemetryItem | ITelemetryItem): void {
+ const options = item.baseData || {}
+ options.measurements = {
+ ...(options.measurements || {}),
+ ...this.systemInfo.measurements,
+ if (!options.properties) {
+ options.properties = {};
+ }
+ options.properties = {
+ ...(options.properties || {}),
+ ...this.systemInfo.properties,
+ if (!options.measurements) {
+ options.measurements = {};
+ }
+
+ try {
+ const cpus = os.cpus();
+ options.measurements.cores = cpus.length;
+ options.properties['common.cpuModel'] = cpus[0].model;
+ } catch (error) {}
+
+ try {
+ options.measurements.memoryFree = os.freemem();
+ options.measurements.memoryTotal = os.totalmem();
+ } catch (error) {}
+
+ try {
+ options.properties['common.shell'] = os.userInfo().shell;
+ options.properties['common.release'] = os.release();
+ options.properties['common.arch'] = os.arch();
+ } catch (error) {}
+
+ options.properties['common.remoteMachineId'] = this.machineId;
+ options.properties['common.isContainer'] = this.isContainer;
+
+ try {
+ const request = (/^http:/.test(this.endpoint) ? http : https).request(this.endpoint, {
+ method: 'POST',
+ headers: {