Skip to content

v0.7.0-alpha

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 05 Nov 23:05
· 5 commits to master since this release

What's new in 0.7.0-alpha

  • Layouts follow you, per console and shape of device. PUT /consoles/{console}/controls keeps a layout for a phone upright or sideways, a tablet upright or sideways, a computer or a TV, and saved.layouts gives them all back. A layout places the on-screen controls, the menu button, the shortcuts bar and the picture, or each screen of a DS or 3DS apart, and null puts it back as it came. The server checks it itself. A two-screen console says where each screen sits in the frame (pad.screens, capabilities.screens.frame). WittyPlay's Edit layout uses all of this.

  • A game's settings open where you press for them. "Settings for this game" on a game's page opened far down the page, away from its button, with nothing to take you there. It now opens in a sheet over the page: from the side on a wide screen, up from the bottom on a phone, with focus in it. It closes with ×, Esc, a controller's B, a tap outside, or Back (a phone's gesture or the browser's button, which no longer leaves the page), and focus goes back to its button. A console's Look and settings opens that console's settings, not every game's. Every menu over a game is easy to leave as well, from WittyPlay's next version: Back and × Back to the game stay in view, and a phone's Back gesture closes a menu instead of leaving the game.

  • Films get posters without a TMDB key, where a free one exists. A film matched through Wikidata gets its poster from Wikimedia Commons: the film poster Wikidata names, or its picture when that's plainly a poster. That's mostly older and public-domain films, as most posters aren't free. They show in Fix matches, a title's match and Artwork tabs, and on films after a scan or Check for changes. Each one's licence and author are listed under Settings → Legal, Posters from Wikimedia Commons. A TMDB key, when set, still comes first. TV shows already get posters, backdrops and episode pictures from TVmaze without a key.

  • Choosing a core is one picker. On a game's page, Change core beside the core that plays it; in Settings → Consoles & cores, Change core on each console. Each core says what it's good at (accuracy, speed or a balance of the two), where it runs and how it draws on your server, whether it needs a BIOS file of your own and whether it's installed. Choosing one that isn't installed installs it, with its progress, then uses it. It works on a phone, with a mouse, and with a TV remote or controller, and closes with ×, Escape, B or Back, or a tap outside. A game's own core is set the same way, or left to its console's. During a game, the player can open the same picker (chooseCore), which offers to restart on the new core: in-game saves stay, and save states stay with the core that made them.

  • Nine more cores to choose from, each offered only where a build is published: QuickNES for NES; today's bsnes for Super Nintendo; Gearboy for Game Boy; VBA-M and gpSP for Game Boy Advance; Beetle PCE and Beetle SuperGrafx for PC Engine; Beetle Lynx for Lynx (which needs your own lynxboot.img); and RACE for Neo Geo Pocket. They come with the next WittyPlay. bsnes played 16 retail Super Nintendo games here, special chips included, with no firmware files.

  • For apps: GET /gaming/consoles/{console}/core and GET /gaming/games/{id}/core give the picker's choices, and GET /gaming/cores/{id}/install how far an install has got. GET /games/consoles gives each core's coreAbout. See Choosing a core.

  • WittyTV keeps playing in the background. Switching to another tab or minimising the window no longer stops a channel: the guide's preview carries on with its sound, and a player that goes quiet in the background tells the server it's still there, so the channel isn't stopped behind it. Keep playing when this tab is in the background, in WittyTV's look and in the player's settings, turns it off for one device; then a channel stops when you switch away, freeing a tuner, and starts again when you come back. Administrators choose what new devices start with under Options. Apps get the same default as backgroundPlay in the guide and tune answers.

  • On a Mac whose WittyPlay can use the graphics card, PlayStation 2 plays on Play!, on the card. LRPS2 comes first for PlayStation 2, but can't use a Mac's card, so it would still have drawn on the processor, which can't keep a Gran Turismo 4 race at full speed. A game Play! can't open still goes on to LRPS2, and someone who chose LRPS2 keeps it.

  • Comics whose pages are PNGs called .jpg get their cover. Several public-domain comics name their PNG pages 000.jpg, and the server's picture tool chose how to read a picture by its name, so their covers failed during scans ("bits 193 is invalid", "unsupported coding type") and the comics had none. It now reads what a picture really is from its first bytes, for every book and comic cover.

  • A theme made with the theme maker shows again. The server's own security policy refused the stylesheet the page made for it, so the page fell back to the plain built-in look, in every browser. It's now applied in a way the policy allows.

  • On a big screen, the account menu opens and the sign-in screen fits. At 2200 pixels wide and more the page was enlarged with CSS zoom, which Firefox and Chrome also apply to positions on the screen and to the window's height: the account menu opened off the right edge, so clicking your name seemed to do nothing, and the sign-in screen was a quarter taller than the window, so it scrolled and sat low. Big screens now grow their text, spacing and frame instead, and look much the same.

  • Menus always open on screen, and stay open. A menu from a button, such as the account menu, is placed wholly on the screen even when its button can't be measured, and a list or row scrolling elsewhere on the page no longer closes it as it opens; the page scrolling its button away still does.

  • WittyPlay's games home is shelves. Each console is a shelf, and its games stand on it as their console's own kind of case, covers showing (a box, a clamshell, a jewel case, a keep case), as cartridges, cards or discs, or as spines on a bookshelf: a switch above the shelves, kept on each device. Where you left off leads the page with the picture you stopped at; a console's page opens with its collection band; a game playing on another of your devices offers Continue here. A game's page says Moments for its save states.

  • Rewind is on by default for the 8-bit, 16-bit and older handheld consoles, whose games take little memory to rewind. An administrator can still turn it off for everyone, and anyone for themselves.

  • Play one game from several devices. The host of a game makes a four-letter code that lasts ten minutes, and anyone signed in to the server joins with it, if their profile may open that game. Saving, loading and stopping stay the host's.

  • Apps learn what each console can do from GET /games/consoles: its era, its screens, its controls, discs and memory cards, its starting look and its case and cartridge, so they can build their menus from data. See Games: the API for clients.

  • With a WittyPlay older than 0.3.5, version 2 of the game stream says it needs an update (needs-update), rather than failing with an error, and isn't offered. Version 1, which every app and the website use with that WittyPlay, plays as before.

  • A game on several discs starts sooner. Its archived discs are unpacked side by side instead of one after another. Final Fantasy VII, with its first disc as .bin/.cue and two more as .7z, waited two minutes to start from a USB drive before its first disc could play.

  • An encrypted 3DS game's page says so before Play is pressed, in the same words as Play: no server can play that copy, so it comes before anything this server lacks. A copy you decrypted yourself, from a console you own, will play.

  • Ready for a Mac's graphics card. When WittyPlay's runner can draw on a Mac's card, PSP, PlayStation and PlayStation 2 games on Play! use it, at full speed on a fraction of a processor core. Nintendo 64 and LRPS2 stay drawn by the processor there, as their card renderers draw black pictures or nothing on a Mac, and the game page says why.

  • On a phone, the website and the apps are one design. The row of sections at the top gains a frosted surface once the page scrolls under it, instead of floating over the cards, and the activity button no longer cuts off its last name. Pages below Home, a library or a tab have a round Back button in its place. A film's or show's page has one row of actions, Play, Save and "⋯" for the rest, and its picture fades into the page with no line under it. A library's tools (All films, Fix matches, Categories, Scan) are behind one "⋯" beside Filters instead of taking two rows. Search shows three posters across. The avatar in the bar opens You, as in the apps: your name and Switch profile, then everything about your account, this device and, for an owner, the server, as grouped lists that lead to each page, then this server and Sign out. Settings is a grouped list with coloured icons. Pages load as grey shapes of what's coming, and a title with no picture shows its name on its own colour. Wider screens are unchanged.

  • Every core says which server platforms it runs on, and how it draws on yours. Settings → Consoles & cores shows it for each core, the core choices say how each draws here, and a game the server can't run says which servers would. Every device plays what the server can run, since the server streams it.

  • No more broken core downloads. A core that isn't published for your server's platform isn't offered to install, and says what plays the same console instead: Beetle Supafaust has no macOS build, so a Mac suggests bsnes 2014 Performance. A weekly check finds a download that's gone before anyone meets it.

  • PlayStation 2 plays on a Mac, drawn by the processor like Nintendo 64 and PSP, with your own BIOS. On an Apple M3 Pro it ran mostly at full speed, slower in places, and the game's page says so first.

  • BIOS files are found by what they are, not what they're called. Keep them in a BIOS folder beside your games under any name: the server recognises each by its checksum after a library scan or when you press Play, copies what a core needs to its own BIOS folder, and never uses a file whose contents don't match. Settings → Consoles & cores shows each one's region, where it came from and which is in use, and a game's page names the file. A PlayStation 2 game starts on a BIOS from its own region when there's one.

  • The game page no longer says a PlayStation 2 BIOS is missing when it's there under another name than scph39001.bin.

  • An encrypted game says what would play: a copy you decrypted yourself, from a console you own. Nothing here decrypts a game or looks for keys.

  • Nintendo 64 and PSP play on a Mac. A server without a graphics card games can use, such as a Mac, now has its processor draw these two consoles, at their own resolution. A game's page says so before you press Play, as they can run slower and keep several processor cores busy. On an Apple M3 Pro, Nintendo 64 games ran at full speed, and a demanding PSP game mostly did.

  • Games that can't play on this server say so, and why, instead of crashing. On a Mac or any server without a usable graphics card, PlayStation 2, Dreamcast and 3DS games now show Not on this server with the reason on their page, in the library and in Settings, and Play turns them away before anything starts. Apps get the same answer from the API: reason: "gpu" with message and gpuMissing.

  • One console's games failing no longer takes every game away. Three games in a row that couldn't start, such as Nintendo 64, PlayStation 2 and PSP on a Mac, counted against WittyPlay itself, which then went out of use for every game on every device. Now only WittyPlay's own helper failing counts. A game that won't start is recorded against its core, and every other console keeps playing. A version that went out of use this way is put back in use once.

  • Stopping the server waits for what it was doing by itself, such as looking for BIOS files, checking the graphics card or noting channel logos, and for activity still being saved, before it closes its database.

  • Stopping the server waits for Live TV's work too, such as a channel scan, a guide update or a recording, before it closes its database. Anything still going after 10 seconds is left, and the log says what it was. A recording the stop cuts short keeps what it recorded and says the server stopped during it, where it could look finished before.

  • One way to stream a game to every device. Browsers, the Apple app and the Android app can all connect to a game through one route, /play/{id}/stream, with the same messages over WebRTC and, where UDP can't get through, over a WebSocket. It's version 2 of the stream, chosen from measurements on real games and simulated networks: docs/GAMING-STREAM.md has the decision, the numbers and the wire protocol. Several devices of one account can play one game, each holding its own players, and a phone can join as a controller with no picture. The website's player uses it with WittyPlay 0.3.5. Version 1's routes keep working until the apps have moved.

  • TV mode. The website can be laid out and driven like the Apple TV and Android TV apps, for a TV across the room: Home, Libraries, Games, Live TV and Search along the top with You at the right, a Search with letters on the screen, You in two columns, and Who's watching with large faces. It works with a TV remote, a game controller (the bumpers change tab, Start opens a page's options), a keyboard, and still a mouse or touch. Turn it on in Settings → Appearance, with TV mode in the account menu, or with ?tv=1, which the desktop app on a TV and Plasma Bigscreen already use; Leave TV mode is in You. It replaces Big screen mode, which only made the words larger: anyone who had that on gets TV mode. With TV mode off, nothing changes.

  • Record is offered only where a channel can be recorded, the same in every app. The server decides it once and sends canRecord, true or false, wherever it describes a channel: the guide, a channel's details, search, reminders and the channel lists. Only channels from a tuner can be recorded, never channels made from your library, and not encrypted channels or ones marked not to be recorded. Recording and series recording refuse anything else with a plain reason, and on the website R no longer tries to record a programme that has finished.

  • Games start on a Mac. Every game failed with "The emulator crashed while running this game", whatever the core. The server put WittyPlay's helper in Apple's sandbox, and a Mac won't start one sandbox inside another, so the sandbox each game gets of its own couldn't start, and neither could the game. On a Mac, WittyPlay's helper now runs outside the server's sandbox, and each game keeps its own, which is the stricter: no network, no other programs, and nothing to write but its saves. Settings → Modules says so. After three such failures the server had taken the WittyPlay version out of use, so games answered "WittyPlay isn't on this server". The first time a Mac server starts with this fix, it puts back in use, once, any version taken out of use because its game runner kept stopping, and the module's history says so. A version that fails that way again stays out of use. Tried on macOS 27 on Apple silicon with the app as the build makes it: a Game Boy game on Gambatte and an NES game on FCEUmm started, and one played in a browser.

  • The Mac app's server can be found and reached on your network. macOS's Local Network privacy blocked it without asking, so phones, TVs and other computers never listed it under On your network. The app and its server had only the signature the linker gives every program, all called "a.out", which macOS can't ask about by name. They're now signed as WittyMediaServer, in the .pkg and the .tar.gz, and the first time the server reaches the network macOS asks whether it may: choose Allow.

  • Apps on the server's own computer find it. The server's announcements on the home network never reached the computer it runs on, so an app there, or the iPhone simulator on that Mac, could miss it under On your network, lose it after a couple of minutes, or keep showing it once it had stopped. Other devices on the network weren't affected.

  • On a Mac, choosing Allow is enough: no restart. When macOS asks whether the server may use the local network, what it had opened before the answer stayed blocked after Allow, so nothing found it until it was restarted. It now notices it can hear nothing and opens again, within a minute, and its log says when it can't hear the local network.

Which file to download

These files are the server, for the computer that holds your media. Most people want the installer for their system:

System File
Windows .msi
macOS .pkg
Debian, Ubuntu and relatives .deb
Fedora, RHEL and relatives .rpm
FreeBSD .pkg

amd64 is most computers, and arm64 is Apple silicon and many small boards. The install guide covers the rest, and Docker. A server already installed finds the new version by itself: Settings, About, Updates has the right file for it.

For phones, TVs and other computers, you don't need anything here. Open the server's address in a web browser, or use the app, WittyMediaClient, which has its own releases.

WittyMediaClient adds Android, Android TV, iOS, tvOS and Plasma Big Screen. Android has been run on emulators only, and iOS and tvOS have never been built. A web browser is the way to reach everything today. See Apps and devices.

What's Changed

  • CI: the executable-bit check runs on its own, in seconds, and anyone can run it by @wittywilla in #131
  • CONTRIBUTING: running the tests on Windows, and telling when Smart App Control blocks them by @wittywilla in #147
  • Server tests: cheap password hashes in tests, and the slowest three run side by side by @wittywilla in #149
  • Flaky tests under load: the causes, two conversion faults fixed, and a clearer segment timeout by @wittywilla in #190
  • A clear MKV no longer called copy-protected by chance; two tests that failed under load by @wittywilla in #243
  • A refused Blu-ray's disc session closes cleanly by @wittywilla in #242
  • Tray: keep-running state under the lock, and a server that stopped answering says so by @wittywilla in #148
  • The formats page no longer searches PATH for DjVuLibre on every visit by @wittywilla in #146
  • Start-up starts FFmpeg once, not twice by @wittywilla in #226
  • Settings are read in one statement, not one for each setting by @wittywilla in #214
  • The same request at the same moment is sent once by @wittywilla in #229
  • Library grids: cards draw again only when their title changes by @wittywilla in #212
  • A fault in the graphics card check or an update install no longer leaves it busy by @wittywilla in #157
  • A scan whose folder walk fails on a fault ends, and keeps that folder's items by @wittywilla in #122
  • Lyrics: a source that can't be reached is left alone for 15 minutes by @wittywilla in #132
  • Dead code: one album check for a shared link, no placeholder functions, a cue sheet's file checked again by @wittywilla in #181
  • A module's release notes say "Bug fixes and improvements" whenever there's no news by @wittywilla in #188
  • Player: the controls stay on screen while a video is paused by @wittywilla in #162
  • Empty pages title themselves one level under the page's heading by @wittywilla in #163
  • Top bar over a big picture: links readable on any picture by @wittywilla in #165
  • Add a library: focus follows what happens by @wittywilla in #166
  • Slow pages are announced and focused once they've loaded by @wittywilla in #168
  • Music, Audiobooks and Podcasts: the cover flow no longer widens the page by @wittywilla in #180
  • Square icon buttons keep their size in a crowded row by @wittywilla in #219
  • Reader: a remote goes between the top and bottom toolbars by @wittywilla in #220
  • Music player: the Visualizer button's label is readable in every theme by @wittywilla in #221
  • Posters, backdrops and show art asked for ?w= come smaller for every kind of title by @wittywilla in #199
  • After a reset, thumbnails work without a restart (#66) by @wittywilla in #230
  • Discovery: the server's own machine hears it, and on a Mac Allow works without a restart by @wittywilla in #246
  • TV channels that copy their picture start in 3 seconds, not 10 by @wittywilla in #225
  • Docs check: the plans are in docs/plans with what's done, and the docs match the code by @wittywilla in #125
  • Issues are for faults; ideas and feature requests go to Discussions by @wittywilla in #75
  • Keep the packages meant to leave the server free of the rest of it by @wittywilla in #117
  • Read disc images with WittyDisc's isofs instead of the server's copy by @wittywilla in #124
  • A second start of the same data folder opens the running server instead of failing on the port by @wittywilla in #135
  • Live TV: each channel session has its own folder, so one tuned again just after it stopped keeps its stream by @wittywilla in #143
  • WittyTV: the preview and the watch view are one stream, so going full screen never tunes again by @wittywilla in #156
  • WittyTV: back from a channel, the guide highlights the channel you were watching by @wittywilla in #183
  • WittyTV: the guide's preview shows "We'll be right back" too, so a slate doesn't look broken by @wittywilla in #227
  • WittyTV: custom channels on a page of their own (/tv/channels) by @wittywilla in #155
  • WittyTV: commercial breaks keep to the schedule, and bumpers and commercials stay apart (#76) by @wittywilla in #159
  • Appearance in one place, settings search, and contents on long settings pages by @wittywilla in #144
  • Photos, radio, channels, gaming PCs and games use the one library header by @wittywilla in #191
  • Robust streaming: a selectable mode for poor connections by @wittywilla in #185
  • Docker: hardware transcoding works, and the server says why a device can't be used by @wittywilla in #158
  • Accessibility and controller pass: Joy-Con pairs, Nintendo pads, page titles, big screen side menu, and a keyboard walk of every page by @wittywilla in #236
  • Remote Access says who can connect, never a bare on or off by @wittywilla in #153
  • Unencrypted connections from away, for an owner who accepts the risk by @wittywilla in #254
  • A scan shows one bar across named stages, and pausing takes effect at the next file by @wittywilla in #187
  • WittyTV's preview can have its controls over the picture instead of in a bar by @wittywilla in #189
  • Photos: the world map works again (#69) by @wittywilla in #202
  • A crash report is written whole or not at all by @wittywilla in #209
  • Docker: any user, locked down, health check, compose examples and a guide for each NAS by @wittywilla in #213
  • README: how to install on every platform, on the first screen by @wittywilla in #216
  • WittyTV: Add live TV, a step-by-step setup for tuners and IPTV, found or typed in by hand by @wittywilla in #217
  • A repeatable FFmpeg benchmark by @wittywilla in #222
  • Scheduled backup test: checks the old backups by name, and has no package variable to race on by @wittywilla in #248
  • TV guide: rows read as "101 Movie Channel", and "Tuning…" isn't spoken on every move by @wittywilla in #249
  • Activity stream test reads updates until the change reaches it by @wittywilla in #251
  • A missing server theme no longer leaves links failing contrast by @wittywilla in #253
  • WittyTV: commercial breaks don't count as watching the programme (#121) by @wittywilla in #255
  • Music: tie songs to their music videos (matching, suggestions, API) by @wittywilla in #256
  • Music: a Music videos section in the music library by @wittywilla in #257
  • Music: Watch the video from a song, Play the song from a video by @wittywilla in #258
  • Music: a song's lyrics shared with its music video by @wittywilla in #259
  • Copy-protection check reads a Matroska track list wherever the file puts it; tests for #184 by @wittywilla in #267
  • Plan: modules that stand on their own (survey, design, order of work) by @wittywilla in #116
  • Support bundle: says what it holds, notes no crashes, takes in the logs from before a reset (#73) by @wittywilla in #231
  • Name Windows Smart App Control: show its state, check signatures before installing, report a block as one by @wittywilla in #223
  • Windows tests: FuzzSheet's paths, and backup checks without journal files by @wittywilla in #268
  • libtranscode real tests: a subtest's failure is reported in that subtest by @wittywilla in #274
  • Updates show what's new, and a button that downloads the right installer by @wittywilla in #169
  • WittyTV: the TV player has Audio and Subtitles menus, and A and S, for what the stream carries by @wittywilla in #232
  • Pictures come at the size they're shown: posters and backdrops for cards, pages and lists by @wittywilla in #272
  • Ready for the macOS port: Mac CI, docs/MACOS.md and a hand-over by @wittywilla in #99
  • Online lyrics can't make the server seem to stop, and a hang now leaves evidence (#17) by @wittywilla in #228
  • WittyTV: everyone on a channel sees the same moment (live sync) by @wittywilla in #278
  • A long soak run before each release: hours of real use, failing on leaks and slow answers (#115) by @wittywilla in #264
  • The design check counts 59 problems, not 289: the player's colours use tokens, drawings say so once by @wittywilla in #192
  • A guide to what hardware the server needs, from measured figures by @wittywilla in #269
  • Mac app: signed as WittyMediaServer, so Local Network privacy lets its server on the network by @wittywilla in #247
  • DVD and Blu-ray sessions are swept only while a disc is open by @wittywilla in #218
  • 3D viewing is kept for one disc, and the top bar says when it's on by @wittywilla in #277
  • Streams on big machines use half the memory: decoder and libx264 threads capped by @wittywilla in #250
  • 4K HDR shown at 1080p is tone-mapped at 1080p: a third less processor time by @wittywilla in #261
  • A poster picker you can see, and title posters by @wittywilla in #224
  • A repeatable benchmark for the server, and 0.7.0-alpha's numbers by @wittywilla in #279
  • Smaller backdrops, show art and remote art, and a small poster opened once by @wittywilla in #286
  • Home reads the progress of its recently added rows in one statement by @wittywilla in #273
  • Add live TV checks a source before saving it, tries one channel, and is in first-time setup by @wittywilla in #282
  • WittyTV: Reset channel rebuilds its schedule now, from its current settings and media by @wittywilla in #186
  • Logs say why the server stopped and how the last run ended by @wittywilla in #233
  • A renamed server keeps the two-colour name (every other word in the theme colour) by @wittywilla in #260
  • Games start on a Mac: WittyPlay's helper runs outside the launcher's sandbox by @wittywilla in #276
  • The port: settings.ini beside the program, Settings → Network and the setup wizard (#150) by @wittywilla in #275
  • Radio directory click takes its servers and client when it starts by @wittywilla in #291
  • A module helper that's slow to start, or crashes once, no longer loses discs until reinstalled (#265) by @wittywilla in #289
  • Master's module tests pass again: the start-up repair leaves the game runner's block to the Mac fix (#294) by @wittywilla in #295
  • CI: a newer commit on a pull request replaces its older runs by @wittywilla in #290
  • WittyTV: one server rule for canRecord, sent everywhere and enforced by @wittywilla in #283
  • PlayStation 2 plays on a Mac; BIOS files are found by their checksums by @wittywilla in #298
  • TV mode: the website as the Apple TV and Android TV apps are, driven by remote or controller by @wittywilla in #297
  • Controllers: Android's pad layout is decided on each read again, and CI runs the pad tests by @wittywilla in #305
  • One stream for every device: /play/{id}/stream, version 2 (measured decision, protocol, server and website player) by @wittywilla in #296
  • TV remotes: Up with nothing above tells an app around the page, as Back does by @wittywilla in #306
  • Games a server can't draw say so up front; one console's failures no longer take WittyPlay away; N64 and PSP play on a Mac by @wittywilla in #293
  • Every core says which platforms it runs on; no core is offered where it has no build by @wittywilla in #303
  • Discs: the remote on every DVD and Blu-ray form, on every screen by @wittywilla in #302
  • On a phone, the website and the apps are one design by @wittywilla in #270
  • Live TV's Close ends the work it started on its own and waits for it by @wittywilla in #308
  • WittyPlay with real games: discs unpack side by side, encrypted 3DS says so first, a Mac's card draws only what it draws right by @wittywilla in #309
  • Version 2 of the game stream says it needs a newer WittyPlay, rather than failing (fixes with-modules) by @wittywilla in #311
  • A diagnoser job keeps its own copy of each finding's lists, so it can be read while it adds more by @wittywilla in #312
  • TestARestEnds no longer races the clock by @wittywilla in #310
  • WittyPlay on the website: Shelves with cases, cartridges or spines; seats; what each console can do by @wittywilla in #301
  • TestDiagnoseJobIsReadWhileItAddsFindings waits until it has seen the job running with findings by @wittywilla in #313
  • Big screens: the account menu opens and sign-in fits; theme maker themes apply under the CSP by @wittywilla in #314
  • Covers: a picture is read as what it is, not what its name says; one app context across hot updates by @wittywilla in #316
  • On a Mac with a graphics card, PlayStation 2 plays on Play!, on the card by @wittywilla in #317
  • WittyTV keeps playing in the background, with a per-device toggle by @wittywilla in #319
  • One core picker on every screen, and nine more cores to choose from by @wittywilla in #318
  • Films get free posters from Wikimedia Commons when there is no TMDB key by @wittywilla in #320
  • A game's settings open where you press for them, and close every way by @wittywilla in #315

Full Changelog: v0.6.2-alpha...v0.7.0-alpha