Tags: profullstack/tronbrowser.dev
Tags
TronBrowser's own Web Push service (a setting, defaulting to tronbrow… …ser.dev) (#120) * Give TronBrowser its own Web Push service, and make it a setting ungoogled-chromium ships without a push service and a page cannot choose one, so pushManager.subscribe() failed on every site with 'Registration failed - push service error' (reproduced in the bundled 152 engine). - services/api: an RFC 8030 push service at /api/1/push. Site servers send standard aes128gcm + VAPID pushes (the sender's key must match the one the site subscribed with); ciphertext is queued until the browser acks it and delivered live over a WebSocket. 404/410/413/415/429 as senders expect. - extension: push-page.js (MAIN world) replaces PushManager.subscribe / getSubscription / permissionState; push-client.js holds the subscription keys, registers, decrypts (RFC 8291, WebCrypto) and shows the notification. - setting: Settings -> Push notifications. Default tronbrowser.dev, any compatible https URL (checked against GET / first), or off (engine's own). - /push docs page, privacy entry, migration 0007. Verified end to end in the real engine: subscribe returns a PushSubscription, a real sendPush gets 201, the notification is created with its click URL and the message is acked over the socket within 3s. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Declare the chrome global in the push client test Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Make browser automation work on real ATS forms (upload, custom select… …s, stable refs) (#113) Dogfooding `tron automate` on Greenhouse and Ashby job applications hit seven problems; each one broke form filling: - No way to set a file input. Add browser_upload (MCP), `tron upload` (CLI) and Page.upload, via DOM.setFileInputFiles. Snapshots now list file inputs as role "file" even when an Attach button hides them. - browser_select only handled native <select>. It now also drives custom comboboxes (react-select, ARIA listboxes) with trusted CDP mouse and text input, then clicks the matching [role=option]. [role=option]/[role=combobox] are collectable in snapshots. - browser_press dispatched untrusted KeyboardEvents that widgets ignore. It now uses Input.dispatchKeyEvent. Adds `tron press`. - Every snapshot renumbered all refs, and every mutating tool takes one, so opening a dropdown shifted later refs and the next fill hit the wrong field. Refs are now stable per element; new elements get new numbers and a vanished element's ref is never reused. - scrollIntoView under scroll-behavior:smooth measured mid-animation, so trusted clicks landed off-screen. Scroll instantly. - extract text used body.textContent: script source filled the 20k cap before visible words, hiding "Thanks for applying" on Ashby. Use rendered text. - Snapshots carry `required` (attribute or aria-required), since ATS forms mark it outside the label; fill on a file input now says to upload instead of throwing InvalidStateError. Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
PreviousNext