@ssheleg/sheleg-dev 0.9.0 → 0.9.2
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.
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,41 @@ All notable changes to this project are documented here.
|
|
|
4
4
|
Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
5
5
|
Versioning: [SemVer](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## v0.9.2 — the README stops claiming a command the package cannot run
|
|
8
|
+
|
|
9
|
+
The README told a reader to run commands the published package cannot run: it ships no
|
|
10
|
+
`test/` directory, so `npm test` resolves in a clone and nowhere else. Measured against the
|
|
11
|
+
published tarball on 2026-08-25. Shipping the suite does not fix it — the plants live in
|
|
12
|
+
`.github/workflows/`, which no packaging npm can express puts in a tarball — so the document
|
|
13
|
+
now names where the command runs instead of claiming it, beside a marker the umbrella's
|
|
14
|
+
validator reads. Naming a dead command is this family's own rule; claiming one is the defect.
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## v0.9.1 — 2026-08-24
|
|
18
|
+
|
|
19
|
+
### The skill was wrong at the exact place its author then tripped
|
|
20
|
+
|
|
21
|
+
`error-tracking` shipped telling readers to take the release version from
|
|
22
|
+
`HEROKU_SLUG_COMMIT`. Using it on a real project the same evening produced the
|
|
23
|
+
failure it exists to prevent: that variable is **not a config var** — it is dyno
|
|
24
|
+
metadata, injected only when the `runtime-dyno-metadata` labs feature is on, and
|
|
25
|
+
absent in silence otherwise. With the feature off, the SDK reported no release at
|
|
26
|
+
all while Sentry held a release with a deploy nothing would ever attach to.
|
|
27
|
+
Nothing errored.
|
|
28
|
+
|
|
29
|
+
Two more measurements from the same hour: `heroku config:get` never prints it,
|
|
30
|
+
even when it is working, because it is never a config var; and enabling the
|
|
31
|
+
feature takes effect on the next **release**, not on a restart.
|
|
32
|
+
|
|
33
|
+
`references/releases.md` now names the trap, gives the three commands that tell
|
|
34
|
+
you which state you are in, and recommends not depending on the variable alone —
|
|
35
|
+
set `RELEASE` from the deploy, which needs no platform feature and cannot drift
|
|
36
|
+
because one command produces both sides.
|
|
37
|
+
|
|
38
|
+
Also added, from the same mistake one level up: create the Sentry release for the
|
|
39
|
+
**deployed** commit, not for local HEAD. They differ the moment commits are
|
|
40
|
+
pushed but not deployed, and the result is a release nobody's events belong to.
|
|
41
|
+
|
|
7
42
|
## v0.9.0 — 2026-08-24
|
|
8
43
|
|
|
9
44
|
### The pack that wires integrations had nothing about knowing when they break
|
package/README.md
CHANGED
|
@@ -222,6 +222,10 @@ correctly. It does not tell you which one to trust.
|
|
|
222
222
|
|
|
223
223
|
## Verify
|
|
224
224
|
|
|
225
|
+
<!-- commands-run-in: a clone -->
|
|
226
|
+
These run **in a clone of this repository**. The published npm package ships no
|
|
227
|
+
`test/` directory, so from an install they are names, not commands.
|
|
228
|
+
|
|
225
229
|
```bash
|
|
226
230
|
npm test # the validator, the manual gate's 65 fixtures, the money fixtures' 13 checks
|
|
227
231
|
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ssheleg/sheleg-dev",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.2",
|
|
4
4
|
"description": "Six integration skills for the layer a product reaches once it has users: Stripe subscription billing, crypto payments, ad and conversion tracking under Consent Mode v2, Google sign-in and the wider Google auth surface, and Core Web Vitals. This package is the installer CLI.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"sheleg-dev": "bin/sheleg-dev.js"
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "sheleg-dev",
|
|
4
4
|
"displayName": "Sheleg Dev",
|
|
5
5
|
"description": "The integration layer a product needs once it has users: Stripe subscription billing reconciled into your own database, crypto payments that survive over-payment and duplicate webhooks, ad and conversion tracking under Consent Mode v2, Google sign-in with the account-linking guards, the wider Google auth surface, and Core Web Vitals work that moves the score, and Sentry error tracking wired so it does not forward your own credentials to a third party and so a stack trace names the commit that caused it.",
|
|
6
|
-
"version": "0.9.
|
|
6
|
+
"version": "0.9.2",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "ssheleg",
|
|
9
9
|
"url": "https://x.com/sshlg93"
|
|
@@ -6,6 +6,7 @@ commits, or when a service reports healthy while serving nobody.
|
|
|
6
6
|
## Contents
|
|
7
7
|
|
|
8
8
|
- [The version contract](#the-version-contract)
|
|
9
|
+
- [The Heroku trap](#the-heroku-trap-the-variable-is-absent-unless-you-turned-it-on)
|
|
9
10
|
- [The four release commands](#the-four-release-commands)
|
|
10
11
|
- [In a deploy script, non-fatally](#in-a-deploy-script-non-fatally)
|
|
11
12
|
- [What set-commits --auto needs](#what-set-commits---auto-needs)
|
|
@@ -24,7 +25,7 @@ Pick one source and use it on both sides.
|
|
|
24
25
|
|
|
25
26
|
| Platform | The value | Read in the app as |
|
|
26
27
|
|---|---|---|
|
|
27
|
-
| Heroku | slug commit | `os.getenv("HEROKU_SLUG_COMMIT")` |
|
|
28
|
+
| Heroku | slug commit | `os.getenv("HEROKU_SLUG_COMMIT")` — **see the trap below** |
|
|
28
29
|
| Vercel | commit SHA | `os.getenv("VERCEL_GIT_COMMIT_SHA")` |
|
|
29
30
|
| GitHub Actions | `github.sha` | `os.getenv("GITHUB_SHA")` |
|
|
30
31
|
| Anywhere | `git rev-parse HEAD` | inject it at build time |
|
|
@@ -41,6 +42,40 @@ VERSION="$(git rev-parse HEAD)" # the same string, on the other side
|
|
|
41
42
|
`sentry release propose-version` will invent one, which is convenient and
|
|
42
43
|
exactly the thing that drifts. Prefer an explicit value both sides can derive.
|
|
43
44
|
|
|
45
|
+
### The Heroku trap: the variable is absent unless you turned it on
|
|
46
|
+
|
|
47
|
+
`HEROKU_SLUG_COMMIT` is **not a config var**. It is dyno metadata, injected into
|
|
48
|
+
the dyno only when the `runtime-dyno-metadata` labs feature is enabled, and
|
|
49
|
+
absent in silence otherwise. Three consequences, all measured on 2026-08-24:
|
|
50
|
+
|
|
51
|
+
- `heroku config:get HEROKU_SLUG_COMMIT` prints nothing **even when it is
|
|
52
|
+
working** — it is never a config var. Read it from inside a dyno instead.
|
|
53
|
+
- With the feature off, `release=os.getenv("HEROKU_SLUG_COMMIT")` is `None`, so
|
|
54
|
+
the SDK reports no release at all while Sentry holds a release with a deploy
|
|
55
|
+
that nothing will ever attach to. Nothing errors.
|
|
56
|
+
- Enabling it takes effect on the **next release**, not on a restart.
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
heroku labs -a <app> | grep runtime-dyno-metadata # is it on?
|
|
60
|
+
heroku labs:enable runtime-dyno-metadata -a <app>
|
|
61
|
+
heroku run -a <app> -- printenv HEROKU_SLUG_COMMIT # from INSIDE a dyno
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Do not depend on it alone. Set the value from the deploy itself, which needs no
|
|
65
|
+
platform feature and cannot drift because one command produces both sides:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
heroku config:set RELEASE="$(git rev-parse HEAD)" -a "$APP" # inside the down window
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Then read `HEROKU_SLUG_COMMIT or RELEASE`: the platform's answer when it is
|
|
72
|
+
available, because it names the commit actually running, and the deploy's answer
|
|
73
|
+
otherwise.
|
|
74
|
+
|
|
75
|
+
**And create the Sentry release for the DEPLOYED commit, not for local HEAD.**
|
|
76
|
+
They differ the moment you have commits pushed but not deployed — the same
|
|
77
|
+
mistake one level up, and it produces a release nobody's events belong to.
|
|
78
|
+
|
|
44
79
|
## The four release commands
|
|
45
80
|
|
|
46
81
|
```bash
|