Releases: WebSummoner/images
Release list
Video Recorder 1.0.0
🎥 images — release video-recorder-1.0.0
The container the hub starts next to a browser when enableVideo is set: websummoner/video-recorder:1.0.0, latest-release (the hub's default -video-recorder-image) and latest, published by the images workflow on this tag. The base image, the browser image sources and the build tool are covered by browser-base-1.0.0.
🎥 Changes
- Waits for the browser's PulseAudio — up to 25 attempts, 200 ms apart — instead of probing once at start-up; a browser container still bringing the daemon up no longer silently costs the recording its audio track.
- The audio track is encoded explicitly as AAC at 128 kb/s;
+faststartmoves the index to the front of the file so recordings stream; aCRFoption joinsPRESETforlibx264;DISABLE_AUDIO=truerecords video only. Maintainer changed in theAPKBUILD.
🚀 Publishing
Published only on a video-recorder-<version> tag, or a manual run of the images workflow naming one. A version with a pre-release suffix (1.2.0-rc1) publishes that exact tag only, so a release candidate never becomes the recorder every hub pulls by default. Without a pullable recorder the hub cannot record video, which is why this image is published by GitHub Actions and not by hand.
Part of WebSummoner 1.0.0 · 📖 Documentation · 💬 Discussions
WebSummoner is developed and maintained by RIADVICE under Apache-2.0. It builds on Selenoid by Aerokube and Ivan Krutov, and on the original UI by Kirill Merkushev.
Browser Base 1.0.0
🐳 images — release browser-base-1.0.0
The browser image sources and the Go tool that builds them. This repository publishes two images itself, each on its own release tag, so it has two releases: this one for websummoner/browser-base:1.0.0, which also carries the notes for the browser image sources and the build tool, and video-recorder-1.0.0 for the recorder. There is no plain 1.0.0 release here.
🧱 Base image
websummoner/browser-base:1.0.0on Ubuntu 26.04 LTS, WebSummoner's own base line. Full font coverage (Noto core, CJK and colour emoji, Indic, Thai, WQY Zen Hei, Liberation, DejaVu, Microsoft core fonts),DBUS_SESSION_BUS_ADDRESSpointed at/dev/nullso Chromium stops logging bus errors, and the fluxbox style renamed with the brand — the wallpaper had fallen back to black because the config referenced a style file that no longer existed.- No default
LANGon purpose; language is per session through theenvcapability.
🌐 Browsers
| Browser | Version | Driver |
|---|---|---|
| Chrome | 152.0.7977.75 | ChromeDriver 152.0.7977.75 |
| Firefox | 155.0.0 | geckodriver 0.37.1 |
| Edge | 152.0.4191.62 | msedgedriver 152.0.4191.62 |
| Opera | 135.0.5973.76 (Chromium 151) | OperaDriver 151.0.7922.176 |
| Brave | 1.94.119 (Chromium 152) | ChromeDriver 152.0.7977.75 |
| Yandex | 26.6.1.1083 | yandexdriver |
| Safari | WebKitGTK 2.52.6 | WebKitWebDriver |
- Brave is a new image (
websummoner/brave), with a DevTools proxy like Chrome's. The build tool starts the dev image, reads the embedded Chromium version from the browser and fetches the matching chromedriver. - Chrome drivers come from the Chrome-for-Testing endpoints (
last-known-good-versionsandstorage.googleapis.com/chrome-for-testing-public);chromedriver.storage.googleapis.comstopped serving new versions in 2023. Stable, Beta and Dev channels resolve correctly. Chromedriver download is shared with Brave. - Edge:
latestresolves through theLATEST_STABLEpointer, downloads come frommsedgedriver.microsoft.com, and the package's deb822 sources migration is worked around inpostinst. - Firefox installs from Mozilla's official APT repository (the Ubuntu Mozilla-team PPAs are end-of-life), resolves
libavcodecdynamically, and no longer embeds the hub binary: the image runsgeckodriver --host 0.0.0.0with--allow-hostsfor the container hostname, andbrowsers.jsonuses"path": "/". The Selenium-JAR variant for Firefox ≤ 48 is removed. - Opera: the driver is resolved from Opera's Chromium line (Opera N is Chromium N+16, and
operachromiumdrivertags follow Chromium). When no driver exists for that line yet, the newest published operadriver is used — never a chromedriver, which crashes onwindow.open. The image label records the driver actually used. - Yandex: PulseAudio was started under
HOME=$HOME/pulse, so the browser never found the daemon's cookie and recordings were silent. Fixed. - Safari: WebKitGTK 2.52.6 built from source on Ubuntu 26.04, with the MiniBrowser patched so media playback does not require a user gesture at the engine level;
WEBKIT_VERSIONbaked into the image and reported as the browser version; PulseAudio added to the image and started before Xvfb, like every other image; and theprismshim sends a click after every navigation whenENABLE_AUDIO=true, which is the gesture WebKit demands before it plays anything. - All entrypoints wait for the PulseAudio daemon before loading the TCP module and unload
module-suspend-on-idle, so the recorder never attaches to a daemon that is not ready or has gone idle. The VNC password iswebsummoner. - APT keys use
signed-bykeyrings everywhere;apt-keyis gone since Ubuntu 24.04. - Removed:
chromium,android(with its automation scripts),opera_presto,phantomjs.
🛠️ Build tool
pkgeris gone; the build context is copied from the realstatic/directory, because some subdirectories are nested Go modules thatgo:embedcannot include. The tool must run from the repository root and says so.- Cross-compiled with plain
go buildfor linux, darwin and windows;goxremoved. Extraction errors (gzip,MkdirAll) are no longer ignored. bravecommand added,chromiumremoved; default tests directory is../websummoner-container-tests.- Go 1.27,
golangci-lint, workflows with build permissions fixed, Codecov, DeepSource, Dependabot (Docker files deliberately excluded; Docker Hub scanning covers them). - Starlight documentation site at websummoner.riadvice.com/images with a reference page per browser and a building guide; README with a Docker Hub badge.
🚀 Publishing
This repository owns two images and publishes them itself, only on their own release tags. The images workflow runs when a tag named browser-base-<version> or video-recorder-<version> is pushed — or on a manual run given such a tag — and builds and pushes exactly that image:
| Tag | Image | Docker Hub tags |
|---|---|---|
browser-base-1.0.0 |
websummoner/browser-base (what every browser Dockerfile is built FROM) |
1.0.0, latest |
video-recorder-1.0.0 |
websummoner/video-recorder |
1.0.0, latest-release (the hub's default), latest |
An ordinary push builds nothing, so neither image is rebuilt unless a release for it was cut. A version with a pre-release suffix (1.2.0-rc1) publishes that exact tag only, so a release candidate never becomes the recorder every hub pulls by default. ci/docker-push.sh <tag> runs the same steps locally, DRY_RUN=1 prints them without building, and UBUNTU_VERSION overrides the base's distribution. Without a pullable recorder the hub cannot record video, and without the base no browser image can be built, so both are guaranteed to exist the moment their tag lands.
The seven browser images are not built in GitHub Actions. Each needs the vendor's package for one exact version, a driver resolved against it at build time, for Safari a WebKitGTK compile that takes hours, and a run of the container suite before it is tagged. RIADVICE builds and publishes them from these public sources with the public images tool, following each vendor release; anyone can reproduce an image with the same tool.
🏷️ Tags
Chrome, Firefox, Edge and Opera publish three tags — line (firefox:155), alias (firefox:155.0) and immutable full version (firefox:155.0.0). Brave and Yandex have no separate alias level and publish line and full version (brave:1.94, brave:1.94.119); Safari carries the WebKitGTK version only (safari:2.52.6).
Part of WebSummoner 1.0.0 · 📖 Documentation · 💬 Discussions
WebSummoner is developed and maintained by RIADVICE under Apache-2.0. It builds on Selenoid by Aerokube and Ivan Krutov, and on the original UI by Kirill Merkushev.