@gw-tools/gw 0.63.0-beta.73.3 → 0.63.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +0 -114
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -25,7 +25,6 @@ A command-line tool for managing git worktrees, built with Deno.
25
25
  - [Auto-Detection](#auto-detection)
26
26
  - [Example Configuration](#example-configuration)
27
27
  - [Configuration Options](#configuration-options)
28
- - [Telemetry (OpenTelemetry & Dash0)](#telemetry-opentelemetry--dash0)
29
28
  - [Commands](#commands)
30
29
  - [checkout](#checkout)
31
30
  - [Arguments](#arguments)
@@ -386,7 +385,6 @@ All fields are optional and safe to commit — no machine-specific paths or runt
386
385
  - **cleanThreshold**: Number of days before worktrees are considered stale for `gw clean` (defaults to 7, set via `gw init --clean-threshold`)
387
386
  - **autoClean**: Silently remove stale worktrees in the background when running `gw checkout` or `gw list` (defaults to false, set via `gw init --auto-clean`)
388
387
  - **updateStrategy**: Default strategy for `gw update` command: "merge" or "rebase" (defaults to "merge", set via `gw init --update-strategy`)
389
- - **telemetry**: Opt-in OpenTelemetry / Dash0 telemetry (disabled by default). See [Telemetry](#telemetry-opentelemetry--dash0)
390
388
 
391
389
  ### Local Overrides (`config.local.json`)
392
390
 
@@ -401,118 +399,6 @@ Create `.gw/config.local.json` to override any config value for your machine onl
401
399
 
402
400
  Local config is merged on top of `config.json` (shallow merge, local wins). Useful for adding personal files to `autoCopyFiles` without modifying the team config.
403
401
 
404
- ## Telemetry (OpenTelemetry & Dash0)
405
-
406
- `gw` can send anonymous usage data to the maintainer's
407
- [Dash0](https://www.dash0.com/) instance so aggregate usage can be observed and
408
- releases correlated with error spikes. Telemetry is **opt-in and disabled by
409
- default** — nothing leaves your machine until you explicitly enable it.
410
-
411
- ### Opting in and out
412
-
413
- ```bash
414
- gw telemetry on # enable on this machine
415
- gw telemetry off # disable on this machine
416
- gw telemetry status # show current effective state
417
- ```
418
-
419
- `gw telemetry on/off` writes to `.gw/config.local.json`, which is gitignored,
420
- so your choice stays local and never affects other people who clone the repo.
421
-
422
- You can also use the env var `GW_TELEMETRY=1` to enable or `GW_TELEMETRY=0` to
423
- disable for a single session without touching any config file.
424
-
425
- `gw init` writes a `"telemetry": { "enabled": false }` block into your
426
- `.gw/config.json` so the option is easy to discover. Note that `enabled` in the
427
- committed `config.json` has no effect — opt-in is per-machine only (use
428
- `gw telemetry on` or `GW_TELEMETRY=1`).
429
-
430
- ### What gets sent
431
-
432
- When enabled, each command emits **one span** and **one log record** via
433
- OTLP/HTTP to the maintainer's Dash0 instance:
434
-
435
- - **Span attributes:** `gw.command`, `gw.command.exit_code`,
436
- `gw.command.duration_ms`, `service.version`
437
- - **Log level:** `INFO` on success, `ERROR` on failure (with a redacted
438
- `error.message`)
439
- - **Resource attributes:** `service.name`, `service.version`,
440
- `deployment.environment.name` (if configured)
441
-
442
- **What is NOT sent:** branch names, repository paths, file names, user identity,
443
- or any personally identifiable information. Error messages are client-side
444
- redacted before transmission — absolute paths, git refs, long hex SHAs, and
445
- `KEY=value` patterns are replaced with `<path>`, `<ref>`, `<sha>`, and
446
- `KEY=<redacted>` respectively.
447
-
448
- > **Fail-open design:** any export error is silently swallowed and never slows
449
- > down or breaks a command. Nothing is ever written to stdout (so shell-eval
450
- > commands like `gw cd` stay safe).
451
-
452
- ### Privacy and the threat model
453
-
454
- The compiled `gw` binary bundles the maintainer's Dash0 ingest endpoint and a
455
- scoped ingest token. This is the same approach used by Sentry DSNs, Vercel CLI
456
- analytics, and Deno's own telemetry. The token is scoped to the `gw-cli`
457
- dataset and subject to ingest quotas — it cannot read back data or access other
458
- Dash0 resources. Anyone who disassembles the binary could extract the token, but
459
- the worst-case impact is noise in a single dataset, not a data breach.
460
-
461
- To completely opt out: `gw telemetry off` (or `GW_TELEMETRY=0`). The telemetry
462
- code path is never entered when disabled.
463
-
464
- ### Routing to your own backend
465
-
466
- Power users can override the maintainer's endpoint and route telemetry to their
467
- own OTel backend instead. The precedence is: \*\*env vars > `.gw/config.local.json`
468
-
469
- > committed `.gw/config.json` > build defaults\*\*.
470
-
471
- ```bash
472
- # Route to a local Collector
473
- export OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4318"
474
- export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer <token>,Dash0-Dataset=my-dataset"
475
- gw telemetry on
476
- ```
477
-
478
- Or in `.gw/config.local.json` (gitignored):
479
-
480
- ```jsonc
481
- {
482
- "telemetry": {
483
- "enabled": true,
484
- "endpoint": "http://localhost:4318",
485
- "headers": { "Authorization": "Bearer <token>", "Dash0-Dataset": "my-dataset" },
486
- },
487
- }
488
- ```
489
-
490
- **Note:** `telemetry.enabled` in the committed `.gw/config.json` has no effect.
491
- Opt-in is per-machine only (local config or env var). This prevents repo
492
- maintainers from silently enrolling everyone who clones the repo.
493
-
494
- ### Configuration reference
495
-
496
- | Setting | `config.local.json` key | Env override | Default |
497
- | ------------- | ----------------------- | ----------------------------- | ----------------- |
498
- | Enable | `telemetry.enabled` | `GW_TELEMETRY` (`1`/`0`) | `false` |
499
- | Endpoint | `telemetry.endpoint` | `OTEL_EXPORTER_OTLP_ENDPOINT` | _(build default)_ |
500
- | Environment | `telemetry.environment` | `OTEL_RESOURCE_ATTRIBUTES` | _(unset)_ |
501
- | Service name | `telemetry.serviceName` | `OTEL_SERVICE_NAME` | `gw` |
502
- | Headers | `telemetry.headers` | `OTEL_EXPORTER_OTLP_HEADERS` | _(build default)_ |
503
- | Flush timeout | `telemetry.timeoutMs` | — | `1500` |
504
-
505
- `OTEL_SDK_DISABLED=true` is honoured as a hard kill switch regardless of other
506
- settings. Set `GW_TELEMETRY_DEBUG=1` to log export problems to stderr.
507
-
508
- ### Correlating deployments with errors
509
-
510
- The release pipeline (`scripts/release-ci.sh`) sends a `deployment.success`
511
- event to Dash0 after each publish, tagged with `service.version` and the git
512
- commit SHA. Because runtime error signals carry the same `service.version`,
513
- Dash0 can display a deployment marker on the error timeline and compare error
514
- rates before and after each release.
515
-
516
402
  ## Commands
517
403
 
518
404
  ### checkout
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gw-tools/gw",
3
- "version": "0.63.0-beta.73.3",
3
+ "version": "0.63.0",
4
4
  "description": "A command-line tool for managing git worktrees - copy files between worktrees with ease",
5
5
  "keywords": [
6
6
  "git",