TVS 6.0.0 (2026-07-14)
Update Notes - 6.0.0 (2026-07-14)
✨ New Features
Audio Routing
Component-level audio routing now lives under _component.audio.
- Add
srcto play a dedicated audio file or stream while the component is mounted. - Omit
srcif the component already has its own audio and you only want it to duck or mute other managed audio. - Use
group,priority, andinterruptsto control which lower-priority audio groups are muted or ducked.
backgroundAudio: placeholders/bgm-3.mp3
backgroundAudioOptions:
group: music
video:
provider: youtube
src: yXkIHyBfns8
_component:
audio:
group: voice
priority: 10
interrupts:
- groups:
- music
behavior: mutePower-On Channel
Added the ability to revert to a default channel whenever the TV's power state changes.
startup:
powerOnChannel: 1 # any time the power is turned off and back on again, jump to this channel.Hidden Channels
Added the ability to hide a channel. Hidden channels won't be displayed in guides and channel lists, but can be accessed directly via number inputs.
- number: 280
name: Hidden Channel
abbr: HIDE
hidden: true # Set a channel as `hidden` and it won't show up in the guide or channel lists.
color: redSubchannels
Added the ability to have subchannels; e.g. channels like 2.1 or 4.10. Subchannels are required to be in quotes when defined in the channel guide:
- number: "3.14"
name: Pi Channel
abbr: PI
image: placeholders/apple-pie.jpgSubchannels are not decimals. 1.1, 1.10 and 1.100 are three different channels:
- Channel 1, subchannel 1
- Channel 1, subchannel 10
- Channel 1, subchannel 100
Negative subchannels and subchannels on channel zero are not allowed. Subchannels are shown in the guide and channel listings after their primary channels.
Layout updates
The mix layout has been reworked to accept an array of components stacked on top of each other rather than just a and b components, and per-component options like mixMode and opacity are now in a _mix section instead of in the top level. Read the upgrade guide below to learn how to migrate. h-split and v-split also accept arrays now and you can specify a weight for each component now rather than one splitPercentage.
‼️ Breaking Changes
- The external listings feature of the program guide has been replaced with a new
infosystem. Theguide.externalListingsoption has been removed. - Channel
titleanddescriptionhave been removed in favor of theinfosystem. - The
video-gameengine has been moved out of TVS and into its own open source project mixlayout uses an array rather thanaandbcomponents. Options formixModeandopacityare now under_mix.modeand_mix.opacity.h-splitandv-splitlayouts use an array rather thanaandbcomponents.
🚚 Backwards Compatibility
To help ease the transition to the new version, limited backwards compatibility has been added. If your configuration file has a 5.x schema like this at the top:
# yaml-language-server: $schema=https://gcpw.art/tvs/schemas/5.11.0.jsonWe'll load your config file in compatibility mode, which will translate your config file on-the-fly to work around breaking changes. Some things like removed / moved engines (basic-text and video-game) will not load but channels that can be loaded with modifications will load.
When you're ready to upgrade from 5.x to 6.x you can follow the steps below:
Upgrade Guide 5.x -> 6.0
- Change the schema line to the 6.0 schema:
# yaml-language-server: $schema=https://gcpw.art/tvs/schemas/6.0.0.json- Replace any
basic-textengine usage withcharacter-generator. I've prepared a template that looks the same as basic-text's defaults that you can drop in:
- number: 1
name: Basic Text backwards compatibility
abbr: TEXT
character-generator:
src: placeholders/config-examples/bulletins/basic-text.json
lines:
line:
- text: First line of text # put your text here
- text: Second line of text- Replace any
video-gameengine usage with the newiframeversion. You can self-host it or use the hosted version:
- number: -1
iframe:
src: http://gcpw.art/tvs/engines/video-game # replace with your own server if self-hosting
options:
game: flappybird.nes # Required. The game library by default is from `retrobrews.github.io`. You can specify a game from there directly. Set to false to use a core that doesn't require a game.
core: fceumm # Required. The system to emulate.
# The video game engine doesn't support granular volume adjustment right now, but mute and unmute work.
# BREAKING CHANGE since v6.0.0: Only game controller inputs are accepted to free up reserved keyboard keys for future use.- Change usage of
mixfrom the old to new syntax:
- Use a list rather than
aandb mixMode:becomes_mix.modeopacity:becomes_mix.opacity
Old syntax:
- number: 133
name: Mix Layout
mix:
a:
opacity: 0.6
image: placeholders/example-program.webp
b:
mixMode: difference
generator: test-patternNew syntax:
- number: 133
name: Mix Layout
mix:
- image: placeholders/example-program.webp
_mix:
opacity: 0.6
- generator: test-pattern
_mix:
mode: difference- Change usage of
v-splitandh-splitfrom the old to new syntax:
Old syntax:
- number: 139
name: V-Split
v-split:
a:
color: red
b:
color: blueNew syntax:
- number: 139
name: V-Split
v-split:
- color: red
- color: bluesplitPercentage can continue to be used but only if you have two components. The new equivalent is _split.weight:
- number: 139
name: V-Split
v-split:
- color: red
- color: blue
_split:
weight: 2 # This component will take up two units of weight compared to the others. The default is to distribute each component equally (1 weight per component)
- color: green- Move channel
titleanddescriptiontoinfosection
Anywhere where you have a channel with title and description attributes, move these to the info section and replace description with summary.
Old syntax:
- number: 2
name: Welcome
abbr: WELCOME
title: Thanks for testing Television Simulator!
description: Welcome to TVS 6.0!New syntax:
- number: 2
name: Welcome
abbr: WELCOME
info:
title: Thanks for testing Television Simulator!
summary: Welcome to TVS 6.0!Thanks to all users and supporters!
Television Simulator 6.0 has been in development for about 9 months and has undergone 188 commits, 253 files changed, +26,049, -15,436 code lines changed, and 28 prereleases. Lots of features that haven't been documented previously are now documented and there's a new video tutorial on custom themes. Whether you are new to TVS or a long-time user, thanks for checking it out!