You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Add CI/CD quality gates and Dependabot config
Enforce coverage thresholds in CI and publish, add security audit,
version-tag validation, GitHub Release creation, and Dependabot for
automated dependency updates targeting develop.
* Split CI into separate lint, audit, and test jobs
* Remove redundant push trigger for develop in CI
* Add Node.js version label to test job names
* Bump actions/setup-node from 4 to 6 (#3)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@v4...v6)
---
updated-dependencies:
- dependency-name: actions/setup-node
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Bump actions/checkout from 4 to 6 (#4)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v4...v6)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Bump esbuild from 0.25.12 to 0.27.3 in the dev-deps group (#5)
Bumps the dev-deps group with 1 update: [esbuild](https://github.com/evanw/esbuild).
Updates `esbuild` from 0.25.12 to 0.27.3
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG.md)
- [Commits](evanw/esbuild@v0.25.12...v0.27.3)
---
updated-dependencies:
- dependency-name: esbuild
dependency-version: 0.27.3
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: dev-deps
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Bump koa and @types/koa (#6)
Bumps [koa](https://github.com/koajs/koa) and [@types/koa](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/koa). These dependencies needed to be updated together.
Updates `koa` from 2.16.3 to 3.1.1
- [Release notes](https://github.com/koajs/koa/releases)
- [Changelog](https://github.com/koajs/koa/blob/master/History.md)
- [Commits](koajs/koa@v2.16.3...v3.1.1)
Updates `@types/koa` from 2.15.0 to 3.0.1
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/koa)
---
updated-dependencies:
- dependency-name: koa
dependency-version: 3.1.1
dependency-type: direct:production
update-type: version-update:semver-major
- dependency-name: "@types/koa"
dependency-version: 3.0.1
dependency-type: direct:development
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Add GPU detection via WebGL renderer string (#7)
* Add GPU detection via WebGL renderer string
Detect GPU capabilities using the UNMASKED_RENDERER_WEBGL string from
WebGL debug info. Classifies GPUs into none/low/mid/high tiers and
derives a disable3dEffects rendering hint for apps serving 3D or
GPU-intensive content.
* Harden GPU detection, add thresholds, extract shared demo template
- Fix probe bundle size references (762 B -> 988 B) across README, docs, examples
- Add WebGL context cleanup via loseContext() to free GPU resources
- Use failIfMajorPerformanceCaveat to detect software renderers even
when WEBGL_debug_renderer_info is blocked by privacy settings
- Add GpuThresholds (softwarePattern, highEndPattern) to TierThresholds
for API consistency with CPU/memory/connection thresholds
- Extract duplicated HTML template from 4 example servers into
examples/shared/demo-template.ts (~1000 lines removed)
- Fix misaligned ASCII diagram in README
- Update API docs with GPU threshold documentation
- Add tests for loseContext, failIfMajorPerformanceCaveat fallback,
and custom GPU thresholds
* Fix ASCII diagram box alignment in README
* Fix prettier formatting
* Add Battery API signal to constrain rendering hints (#8)
* Add Battery API signal to constrain hints on low power
Battery is transient state (not a device capability), so it bypasses
tier classification and feeds directly into deriveHints(). When the
device is unplugged and below 15% charge, deferHeavyComponents,
reduceAnimations, and disableAutoplay are forced on.
Probe collects battery via navigator.getBattery() (Chromium-only),
silently skipped on Firefox/Safari. Bundle stays at 1024 bytes gzipped
by reclaiming bytes from cookie handling code.
* Fix prettier formatting
* Fix stale docs, add package READMEs, patch minimatch CVE (#10)
* Replace stale probe byte counts with ~1 KB
Exact byte counts (988 B, 901 B) went stale after battery signal
landed. Use ~1 KB in all display references — the actual limit is
enforced at build time in bundle.js and ci.yml.
* Fix minimatch ReDoS vulnerability (high)
Override minimatch <10.2.1 → ^10.2.1 via pnpm overrides.
Vulnerable 9.0.6 was pulled in transitively by typescript-eslint.
* Add README to each package for npm
npm shows the README from the package directory at publish time.
Each package now has a detailed README covering installation, usage,
API surface, options, and compatibility.
* Link npm badge to scope search page
* Update README and CHANGELOG for v0.2.0
- Add battery row to signals table
- Update 3 hint descriptions to mention low battery
- Fix classify step to mention GPU tier
- Add 0.2.0 changelog entry (GPU, battery, validation, deps, CI)
* Fix prettier formatting
* Bump version to 0.2.1
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
-**Battery API signal** — Collect battery level and charging status via `navigator.getBattery()` (Chromium-only, silently skipped elsewhere). When unplugged and below 15%, `deferHeavyComponents`, `reduceAnimations`, and `disableAutoplay` are forced on
9
+
-**Signal validation** — New `isValidSignals()` type guard for validating incoming probe payloads
10
+
-**Custom GPU thresholds** — `softwarePattern` and `highEndPattern` are configurable via `GpuThresholds`
11
+
12
+
### Dependencies
13
+
14
+
- Bump `esbuild` from 0.25.12 to 0.27.3
15
+
- Bump `koa` and `@types/koa`
16
+
- Bump `actions/checkout` from v4 to v6
17
+
- Bump `actions/setup-node` from v4 to v6
18
+
19
+
### Infrastructure
20
+
21
+
- Split CI into separate lint, audit, and test jobs
22
+
- Add Dependabot config for automated dependency updates
Stop guessing what your users' devices can handle. DeviceRouter detects real device capabilities — CPU cores, memory, network speed, and more — and gives your server the intelligence to adapt responses instantly.
13
13
14
-
A **988-byte** client probe. One middleware call. Full device awareness on every request.
14
+
A **~1 KB** client probe. One middleware call. Full device awareness on every request.
15
15
16
16
## Why DeviceRouter?
17
17
@@ -27,7 +27,7 @@ No user-agent sniffing. No guesswork. Real signals from real devices, classified
0 commit comments