capiumbrowser 1.1.6 → 1.1.7

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/lib/channels.json CHANGED
@@ -1,35 +1,35 @@
1
1
  {
2
- "_comment": "SINGLE SOURCE OF TRUTH for the current stable Capium browser build per OS/arch. Each OS reaches stable independently -- edit one entry without touching the others. This file ships inside the wheel (the SDK reads it to pick each host's stable build) AND is published to the download server by the release pipeline. `version` is the Chromium version (what the browser reports to the customer -- unchanged by the revision); `revision` is our packaging counter -- the served R2 folder is chromium-v<version>.<revision>/, ALWAYS dotted-suffixed starting at 1 (chromium-v<version>.1/ is the first build, .2/ a same-engine re-spin), so publishing a re-spin never overwrites the artifact older SDKs still fetch. `published: false` means the tag is declared but no artifact exists yet -- the SDK raises a clear 'not published yet' error instead of a raw 404.",
3
- "schema": 1,
4
- "updated": "2026-10-06",
5
- "channels": {
6
- "stable": {
7
- "windows-x64": {
8
- "version": "153.0.8010.53",
9
- "engine_version": "153.0.8010.52",
10
- "revision": 5,
11
- "sha256": "3f53b86f80a3b145cb75995615f19c957a74d6a1a0ae1151ff64517b3a931d67",
12
- "published": true
13
- },
14
- "macos-arm64": {
15
- "version": "153.0.8010.53",
16
- "engine_version": "153.0.8010.52",
17
- "revision": 5,
18
- "sha256": "4e65cc764eda17a5ea9a70eafdda214fccac78b8ddf4de41a05addf036006f43",
19
- "published": true
20
- },
21
- "linux-x64": {
22
- "version": "153.0.8010.52",
23
- "revision": 4,
24
- "sha256": "5968821210bb54c7003637444dbf52ccfc93e06d229d21da240b8fc3cfd35d98",
25
- "published": true
26
- },
27
- "linux-arm64": {
28
- "version": "153.0.8010.52",
29
- "revision": 1,
30
- "sha256": null,
31
- "published": false
32
- }
2
+ "_comment": "SINGLE SOURCE OF TRUTH for the current stable Capium browser build per OS/arch. Each OS reaches stable independently -- edit one entry without touching the others. This file ships inside the wheel (the SDK reads it to pick each host's stable build) AND is published to the download server by the release pipeline. `version` is the Chromium version (what the browser reports to the customer -- unchanged by the revision); `revision` is our packaging counter -- the served R2 folder is chromium-v<version>.<revision>/, ALWAYS dotted-suffixed starting at 1 (chromium-v<version>.1/ is the first build, .2/ a same-engine re-spin), so publishing a re-spin never overwrites the artifact older SDKs still fetch. `published: false` means the tag is declared but no artifact exists yet -- the SDK raises a clear 'not published yet' error instead of a raw 404.",
3
+ "schema": 1,
4
+ "updated": "2026-10-08",
5
+ "channels": {
6
+ "stable": {
7
+ "windows-x64": {
8
+ "version": "153.0.8010.53",
9
+ "engine_version": "153.0.8010.52",
10
+ "revision": 5,
11
+ "sha256": "3f53b86f80a3b145cb75995615f19c957a74d6a1a0ae1151ff64517b3a931d67",
12
+ "published": true
13
+ },
14
+ "macos-arm64": {
15
+ "version": "153.0.8010.53",
16
+ "engine_version": "153.0.8010.52",
17
+ "revision": 6,
18
+ "sha256": "eca400433d74e5ac3b59fa1764bba783674a05cfc5a34598c8c1d2f02c708e18",
19
+ "published": true
20
+ },
21
+ "linux-x64": {
22
+ "version": "153.0.8010.52",
23
+ "revision": 5,
24
+ "sha256": "f65f11a2b15dea523ee95e35cadbbd43c77aba4751cdc0f96f8c138143f041bb",
25
+ "published": true
26
+ },
27
+ "linux-arm64": {
28
+ "version": "153.0.8010.52",
29
+ "revision": 1,
30
+ "sha256": null,
31
+ "published": false
32
+ }
33
+ }
33
34
  }
34
- }
35
35
  }
package/lib/config.js CHANGED
@@ -22,11 +22,14 @@ const path = require('path');
22
22
  *
23
23
  * seed: int identity seed (a stable, coherent device per seed). Random if null.
24
24
  * platform: "windows" | "macos" | "linux" -- the spoofed OS persona.
25
- * screen: [width, height] for the spoofed screen AND the browser window, kept
26
- * equal so screen == window == viewport. Pass null to skip (rely on the
27
- * seed's device screen + fitWindow; only coherent on a real display).
25
+ * screen: DEFAULT null -> use the seed's COHERENT per-seed device screen from the binary's
26
+ * device pool (GPU-matched resolution + realistic dpr); fitWindow then sizes the window
27
+ * to it so viewport ~= screen. Passing an explicit [w,h] FORCES that resolution on every
28
+ * seed (all instances share one screen AND can pair e.g. an RTX 5080 with 1440x900) --
29
+ * only for a fixed-kiosk scenario. (Previously defaulted to [1440,900], a cross-instance
30
+ * correlation + GPU-incoherence tell -- now matches the python SDK's screen=None.)
28
31
  */
29
- function getDefaultStealthArgs(seed = null, platform = 'windows', screen = [1440, 900]) {
32
+ function getDefaultStealthArgs(seed = null, platform = 'windows', screen = null) {
30
33
  const args = [];
31
34
  if (seed !== null && seed !== undefined) {
32
35
  const s = Math.trunc(Number(seed));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "capiumbrowser",
3
- "version": "1.1.6",
3
+ "version": "1.1.7",
4
4
  "description": "Drop-in stealth browser SDK on top of Playwright or Puppeteer (Capium Chromium).",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "author": "Capzy (https://capzy.ai)",
package/playwright.js CHANGED
@@ -236,10 +236,12 @@ async function fitWindow(browser, context, page) {
236
236
  if (!scr || !scr.w || !scr.h) return;
237
237
  const aw = Math.trunc(scr.w);
238
238
  const ah = Math.trunc(scr.h);
239
- const w = Math.min(aw, 1440);
240
- const h = Math.min(ah, 900);
241
- const left = Math.max(0, Math.floor((aw - w) / 5));
242
- const top = Math.max(0, Math.floor((ah - h) / 6));
239
+ // Size the window to the FULL per-seed screen (match python _fit_window_to_screen) so
240
+ // screen ~= viewport -- avoids the browserscan "screen != viewport" VM tell. NOT a forced 1440x900.
241
+ const w = aw;
242
+ const h = ah;
243
+ const left = 0;
244
+ const top = 0;
243
245
  const pcdp = await context.newCDPSession(page);
244
246
  const { targetInfo } = await pcdp.send('Target.getTargetInfo');
245
247
  const bcdp = await browser.newBrowserCDPSession();
package/puppeteer.js CHANGED
@@ -216,10 +216,12 @@ async function fitWindow(browser, page) {
216
216
  if (!scr || !scr.w || !scr.h) return;
217
217
  const aw = Math.trunc(scr.w);
218
218
  const ah = Math.trunc(scr.h);
219
- const w = Math.min(aw, 1440);
220
- const h = Math.min(ah, 900);
221
- const left = Math.max(0, Math.floor((aw - w) / 5));
222
- const top = Math.max(0, Math.floor((ah - h) / 6));
219
+ // Size the window to the FULL per-seed screen (match python _fit_window_to_screen) so
220
+ // screen ~= viewport -- avoids the browserscan "screen != viewport" VM tell. NOT a forced 1440x900.
221
+ const w = aw;
222
+ const h = ah;
223
+ const left = 0;
224
+ const top = 0;
223
225
  const cdp = await page.createCDPSession();
224
226
  const { targetInfo } = await cdp.send('Target.getTargetInfo');
225
227
  const { windowId } = await cdp.send('Browser.getWindowForTarget',