Repository navigation
0.1.0-alpha
Pre-releaseThe first public build of JoyChromium: a web browser for the TV, driven with a game controller from the couch. Windows 10/11 only; macOS, Linux and Steam Deck are on the roadmap.
Download
JoyChromium-0.1.0-alpha-win-x64.exe: most PCs (Intel and AMD)JoyChromium-0.1.0-alpha-win-arm64.exe: Snapdragon (ARM) PCsJoyChromium-0.1.0-alpha-win.exe: one installer for both
Before you install
- This is an alpha: expect rough edges, and tell us what breaks.
- It does not update itself yet. Watch the repo's releases to hear about new versions.
- Netflix, Prime and other Widevine services do not play yet: the DRM module is not signed in this build.
- The installer is not code-signed, so SmartScreen may warn you: More info → Run anyway.
Novidades
- controller: one pointer over the whole window, an ad-blocker menu and a new onboarding (#117)
- controller: new tabs start on the address bar, an arrow-and-hand pointer, a smooth glide (#105)
- keyboard: an Xbox-style controller keyboard (#104)
- controller: a pointer on the left stick, clicks with A, the wheel on the right stick (#103)
- favicons: site icons on the tabs and the new tab, kept inside the app (#100)
- newtab: send arrow instead of OK on the search box (#98)
- integrations: launch flags, joychromium:// links and quick tasks (#97)
- appearance: new tab backdrop, quick-links switch and four themes (#96)
- newtab: a simpler new tab with only the user's own sites (#95)
- ui: Edge-style chrome in the blue brand (#93)
- drm: sign the Widevine CDM through castLabs EVS when the account exists (E10-02) (#87)
- shell: translate the short messages and pin the test language (#84)
- tools: measure the per-service resolution from the repository (#80)
- flatpak: package the app as a Flatpak and build it in CI (#70)
- chrome: show and navigate the address bar suggestions (#69)
- adblock: pick block lists per tracking-prevention level (#64)
- controller: haptic confirmation and error cues (#62)
- shell: open and close picture-in-picture from the quick menu (#58)
- release: write the release notes from the commits (#63)
- controller: the last gamepad used takes the input (#61)
- diagnostics: report boot, memory and tab count in the zip (#60)
- shell: send state to the chrome as per-area patches (#59)
- controller: spatial navigation inside subframes (#56)
- drm: per-site user agent for streaming hosts (#57)
- update: finish a deb/rpm update while the window is still open (#53)
- controller: media keys and mediaSession through the controller (#50)
- build: arm64 installers for Windows and Linux (#52)
- a11y: audit every screen with axe and fix what it found (#51)
- shell: add the design system catalog page (#49)
- drm: castLabs content-security build, fuses and media keys (#42)
- privacy: opt-in crash reports and a complete 'clear data' (#43)
- ui: Preact shell, redesigned pages and two languages (#40)
- platform: Windows, macOS and Linux with TV mode by default (#37)
- electron: phase 1 — full shell ported to Electron (#22)
- electron: phase 0 proof of concept with TV identity and ad blocking (#21)
- shell: app icon, per-tab mute with audio indicator, tab menu, keep display awake during media (#18)
- controller: spatial navigation, virtual cursor and per-site input modes (#16)
- favorites, history, address suggestions, favicons, find, zoom, fullscreen, reopen tab (#15)
- robustness: crash recovery, tab sleeping, periodic session save, logs and UI smoke test (#14)
- update: self-update, uBlock Origin auto-update and signed remote policy (#13)
- security: baseline protections, permission prompt, downloads and private tabs (#12)
- new tab page, startup/home settings and session restore (#10)
- bundle uBlock Origin, configurable search engine and first-run onboarding (#9)
- theme: customizable shell colors with internal settings page (#8)
- shell: add Edge-style title bar with tabs (#5)
Correções
- release: a VMP signing refusal no longer stops the Windows build (#119)
- controller: the D-pad's focus stays visible after a mouse click (#107)
- controller: the pointer stays on screen across pages (#106)
- controller: A types in a field, the keyboard keys move, and up reaches the toolbar (#101)
- ci: the EVS signup passes first name, last name and organization (#111)
- controller: click of the right stick reaches Cursor mode (#90)
- search: open addresses typed without a scheme; keyboard no longer blurs the bar (#99)
- ui: overlays show above the page, plus Edge polish (#94)
- controller: read the pad at 60 Hz so the D-pad meets its latency budget (E11) (#86)
- policy: read the minimum runtime version the published policy ships (#78)
- mac: make the unsigned disk image installable and verify its seal in CI (#76)
- update: point alpha builds at the release list instead of the update channel (#74)
- a11y: expose the search flow to screen readers (#67)
- deps: pin http-cache-semantics past the cached-response advisory (#72)
- controller: stop polling the controller while the window is off screen (#68)
- drm: read the Widevine status the way the ECS reports it (#48)
- tabs: queue navigations so the newest one wins (#45)
- shell: target Windows 10 SDK so WebView2CompositionControl loads (#2)
Por dentro
- core: services, typed IPC, atomic store and tab sleeping (#38)
- shell: split MainWindow into partial files by concern; move P/Invoke to NativeInput (#17)
Documentação
- status: publish where the app stands, with evidence and owners (#89)
- cost: make the no-paid-services decision explicit and drop the paid paths (#88)
- release: spell out the macOS install path in every release body (#77)
- prd: correct the Could total once E9-05 landed (#75)
- prd: record what is delivered item by item (#66)
- the release, the signing key and the TV checklist (#55)
- prd: alinhar a arquitetura descrita com o que foi construído (#46)
- PRD 2.0 — arquitetura, multiplataforma, redesign e backlog (#36)
- update checklist with status after PRs #12-#19 (#20)
- add essentials checklist and update strategy (#11)
CI
- metrics: measure the PRD section 11 boot and D-pad budgets on every run (#81)
- install the packaged app and prove it starts (#54)
- electron: phase 2 — automated update pipeline and packaging (#23)
Manutenção
- release: Windows-only 0.1.0-alpha, Electron 44.9.3 and a public README (#118)
- ci: Bump actions/setup-python from 6 to 7 (#115)
- deps: Bump preact from 11.0.1 to 11.0.2 in /app (#116)
- deps: Bump undici from 7.30.0 to 7.30.1 in /app (#114)
- deps: Bump the npm-minor-patch group in /app with 2 updates (#113)
- claude: wire the lippstack plugins into the project (#92)
- brand: adopt the new joystick logo (#91)
- release: move the project to 0.1.0 and publish pre-1.0 builds as pre-releases (#73)
- deps: typescript 7 and the compiler options it asks for (#47)
- ci: Bump actions/setup-node from 4 to 7 (#25)
- ci: Bump actions/checkout from 4 to 7 (#4)
- deps: Bump preact from 10.29.8 to 11.0.1 in /app (#44)
- deps: Bump the npm-minor-patch group in /app with 2 updates (#34)
- deps: Bump electron from 44.7.0 to 44.8.0 in /app (#35)
- deps: Bump vitest in /app in the npm-minor-patch group (#33)
- deps: Bump electron from 44.5.1 to 44.7.0 in /app (#32)
- deps: Bump the npm-minor-patch group in /app with 4 updates (#31)
- deps: Bump electron from 44.4.5 to 44.5.1 in /app (#30)
- deps: Bump the npm-minor-patch group in /app with 2 updates (#29)
- deps: Bump @types/node from 24.10.0 to 26.6.3 in /app (#26)
- phase 3 — retire the C#/WebView2 shell; Electron app is the product (#28)
- ci: Bump actions/upload-artifact from 4 to 7 (#24)
- add repo conventions, analyzers and format check (#1)
Outros
- capture what Orca says through speech-dispatcher (#85)
- hold a synthetic pad press until the shell has read it (#82)
- cover the PRD acceptance journeys end to end (#83)
- cover the popup limit, the scheme guard and the blocked download (#79)
- boot the app on a native Wayland compositor in every pull request (#71)
- poll for the tab switcher focus instead of reading it once (#65)
- migrate smoke checks to xUnit; cache NuGet and uBlock download in CI (#19)
- Add controller-first Windows browser prototype
- Initialize JoyChromium project
Instaladores
Windows (.exe, x64 e arm64), macOS (.dmg/.zip, x64 e arm64) e Linux (.AppImage, .deb, .rpm, x64 e arm64).
Os builds não são assinados (ADR-010): o Windows mostra o SmartScreen e o macOS recusa a instalação de um clique.
macOS: a imagem de disco traz LEIA-ME.txt e install-macos.command. Abra o .dmg e dê dois cliques em install-macos.command — ele copia o app para Aplicativos e limpa a quarentena. Na mão: arraste o JoyChromium para Aplicativos e abra uma vez com botão direito → Abrir; se essa opção não aparecer, rode xattr -dr com.apple.quarantine /Applications/JoyChromium.app. O aviso "Este Mac não conseguiu verificar o app" é falta de notarização, não app danificado: codesign --verify --deep --strict passa neste build.
As versões instaladas se atualizam sozinhas, exceto no macOS (o app avisa e abre esta página) e nas versões abaixo de 1.0, que saem como pré-release e se atualizam à mão.
Guia de instalação: https://github.com/lippdev/joychromium/blob/main/docs/INSTALL.md