Skip to content

Releases: zshall/program-guide

TVS 5.0.0-beta (3-30-2025)

30 Mar 23:34
ca40f79
Compare
Choose a tag to compare

Update Notes - 3-30-2025 (5.0.0)

TVS Boxart 5 0 for embed

5.0.0 is a substancial under-the-hood rewrite that updates every component in the system to upgrade the underlying frameworks TVS is built upon.

🚨 BREAKING CHANGES:

  • Removed incompatible Vime library. video@1 and video@2 have been removed and should not be used anymore. To fix your config file if it's broken, use video rather than video@1 or video@2.
  • hlsBugFix option was removed from video engine since the bug that it was fixing isn't present anymore.
  • Video game console option is no longer recognized; use core instead (https://nostalgist.js.org/apis/launch/#core)
  • The "1989" theme should be specified in quotes.
  • Disabled Nightwave Plaza API querying due to CORS blocking.

Replace this:

guide:
  theme: 1989

To this:

guide:
  theme: "1989"

📦 Dependency Updates:

  • Updated to Svelte 5 and rewrote all content engines to include better type definitions.
  • Updated Nostalgist library to 0.14 from 0.11 to fix some bugs in the VideoGame engine.

🐛 Bug Fixes:

  • Fixed invalid HTML structure in program guide tables
  • Added better teardown logic for exiting video games
  • Addressed issue where channels were not properly torn down upon channel change
  • Fixed audio volume issues with Visualizer engine
  • Fixed aspect ratio issue in Bouncing Logo engine
  • Fixed verbiage for off-air channels in Channel List engine

✨ New Features:

  • Added schema validation support for configuration files. To take advantage of this, add the following line to the top of your configuration file, including the "# " at the beginning:
# yaml-language-server: $schema=https://gcpw.art/tvs/schemas/5.0.0.json

Then open the file in Visual Studio Code with the YAML extension installed.

When new versions of the schema are released I'll call them out in the notes; you'd change the 5.0.0.json to the latest schema version to validate against it instead.

  • Added stretch aspect ratio to the Image engine. This will stretch images to the size of their container regardless of aspect ratio.
  • Added shuffle parameter to loops that allows you to shuffle them randomly or in such a way that the entire cycle gets played through once, then repeated again.
- number: 181
  name: Shuffled Loop
  abbr: LSHUF
  loop:
    shuffle: random # You can shuffle the content in a loop. Use `random` to shuffle the content randomly, or `cycle` to shuffle the content in a cycle.
    content:
    - image: placeholders/sequence/0.jpg
      duration: 3
    - image: placeholders/sequence/1.jpg
      duration: 3
    - image: placeholders/sequence/2.jpg
      duration: 3
    - image: placeholders/sequence/3.jpg
      duration: 3
    - image: placeholders/sequence/4.jpg
      duration: 3
    - image: placeholders/sequence/5.jpg
      duration: 3

- number: 182
  name: Cycled Loop
  abbr: LCYCL
  loop:
    shuffle: cycle # Cycle shuffling will play back the content in a random order but show all content before repeating.
    content:
    - image: placeholders/sequence/0.jpg
      duration: 3
    - image: placeholders/sequence/1.jpg
      duration: 3
    - image: placeholders/sequence/2.jpg
      duration: 3
    - image: placeholders/sequence/3.jpg
      duration: 3
    - image: placeholders/sequence/4.jpg
      duration: 3
    - image: placeholders/sequence/5.jpg
      duration: 3

🕶️ Aesthetics:

  • Updated the default welcome image with a new look.

TVS 4.5.0-beta (1-26-2025)

27 Jan 02:35
ca40f79
Compare
Choose a tag to compare

Update Notes 4.5.0

🐛 Bug fixes:

  • Image aspect ratio behavior was incorrectly called behavior and now is called aspectRatioBehavior.
  • Overflow scrollbars are now hidden if content overruns the screen
  • We now close an audio context when destroying it, which should help prevent issues with multiple contexts building up. Raspberry Pi 5 is confirmed to play audio better now.

✨ New features:

  • New OSD tuner theme based on mid-2010's satellite TV: sat2012! Here's an example:
osd:
  theme: sat2012
  aspectRatioBehavior: stretch # Optional. The aspect ratio behavior of the screen. Values are stretch, letterbox, or hybrid. Defaults to hybrid.
  # primaryColor: red
  # accentColor: black
  themeOptions: # certain themes have additional options that can be set like this:
    # providerLogo: placeholders/no-signal.png # Optional. The provider logo to show in the info OSD. If not set the default logo will be shown. If set to false no logo will be shown.
    extraMenuItemsBefore: # Non-functional extra menu items can be added for asthetic purposes.
      - Messages
    extraMenuItemsAfter: # More non-functional menu items.
      - CC
      - Last 4
      - Favorites
      - Audio/Video
      - Parental
  • Added a new about page to show the program version, credits, dependencies and special thanks. Press alt + v to go there.

Read this first!

Get started quickly:

  • Put the files in the root directory of a web server. For now we require serving out of the root directory.
  • Visit index.html and it should load the example configuration.

Basic keyboard controls:

  • M toggles mute
  • Up / Down control channels
  • Left / Right control volume

In the browser you need to un-mute when the page loads because of autoplay restrictions.

Edit the example configuration file (config.tvs.yml) and make it your own.

Read the documentation: https://greenhillplaza.notion.site/Television-Simulator-99-c28584f069b94f58a71b5c9fe2484dcb

Join our community on Slack to ask for help or report issues: https://join.slack.com/t/greenhillplaza/shared_invite/zt-2dq8mx6sm-3YnobHETTmxUNE02TOSPRg

TVS 4.4.0-beta (1-12-2025)

13 Jan 02:14
ca40f79
Compare
Choose a tag to compare

Update Notes - 4.4.0

⚙️ Enhancements

  • Images can now be constrained to aspect ratios if they don't fill the screen.
- number: 2
  name: Welcome
  abbr: HELLO
  image:
    src: placeholders/welcome.png # If you use more than one option for images you need to specify the source like this.
    aspectRatioBehavior: contain # Optional. The aspect ratio behavior of the image. Values are contain or cover. Defaults to cover.

✨ New features

  • Ability to play background audio in the "no signal" channel
noSignalContent: # Optional. You can specify content to show when the TV is off the air.
  image: placeholders/no-signal.png # Required. The image to show when the TV is off the air.
  backgroundAudio: placeholders/bgm-3.mp3 # Optional. You can add background audio to the no signal screen.
  • Added ability to specify custom screen dimensions in the config file. After modifying this value it will apply when your picture settings are reset.
# Screen dimensions defaults can be overridden here. If you don't specify these the TV will be 640x480 by default.
# Not all channel content will scale to fit the screen; some content will always render at its native resolution (640x480)
# **Note**: If you change these values, be sure to reset your picture settings using `alt + r` or you won't see the changes.
dimensions:
  screenWidth: 1280 # Optional. The width of the screen in pixels.
  screenHeight: 720 # Optional. The height of the screen in pixels.
  # scaleX: 100 # Optional. The scale of the screen percentage-wise on the X axis. Default is 100.
  # scaleY: 100 # Optional. The scale of the screen percentage-wise on the Y axis. Default is 100.
  • Added customizable OSD behavior when displaying on different screen sizes:
    • Hybrid (default): centers the OSD where a standard 4:3 screen would be, with tasteful overflow for background graphics.
    • Stretch: fills the entire available space with the OSD.
    • Letterbox: centers and crops the OSD to 4:3 screen.
osd:
  theme: sat2007
  aspectRatioBehavior: stretch # Optional. The aspect ratio behavior of the screen. Values are stretch, letterbox, or hybrid. Defaults to hybrid.
  themeOptions: # certain themes have additional options that can be set like this:
    showMessageIcon: true
    showChannelLockIcon: true

Read this first!

Get started quickly:

  • Put the files in the root directory of a web server. For now we require serving out of the root directory.
  • Visit index.html and it should load the example configuration.

Basic keyboard controls:

  • M toggles mute
  • Up / Down control channels
  • Left / Right control volume

In the browser you need to un-mute when the page loads because of autoplay restrictions.

Edit the example configuration file (config.tvs.yml) and make it your own.

Read the documentation: https://greenhillplaza.notion.site/Television-Simulator-99-c28584f069b94f58a71b5c9fe2484dcb

Join our community on Slack to ask for help or report issues: https://join.slack.com/t/greenhillplaza/shared_invite/zt-2dq8mx6sm-3YnobHETTmxUNE02TOSPRg

TVS 4.3.0-beta (1-5-2025)

06 Jan 04:17
ca40f79
Compare
Choose a tag to compare

Update Notes - 4.3.0

🐛 Bug fixes

  • Fixed bug with TVS overrunning the screen by a pixel or two on certain screen sizes triggering scroll bars.
  • Fixed bug with background audio that would cause audio to sometimes fail on page load.
  • Fixed layout bug in examples page
  • Fixed default program guide font on examples page
  • Fixed bug involving screen bezel size on hard page reload

⚙️ Enhancements

  • Gave OSD a very slight blur effect when global blurring is on.

✨ New features

  • New OSD theme based on mid-2000's satellite TV: sat2007! Here's an example:
osd:
  theme: sat2007
  # primaryColor: "rebeccapurple" # Optional color overrides
  # accentColor: "white"
  themeOptions: # certain themes have additional options that can be set like this:
    showMessageIcon: true # Show the message icon in the top bar
    showChannelLockIcon: true # Show the channel lock icon in the top bar
  • Added channel icon support. For now only the new sat2007 theme supports them but you can add channel icons like this:
- number: 44
  name: 44cast
  abbr: WX
  icon: placeholders/weather.png # Optional. Icon to show in the info OSD (if applicable theme applied)
  • Custom "no signal" overrides for channels without content.
noSignalContent: # Optional. You can specify content to show when a channel is off the air.
  image: placeholders/no-signal.png

The ability to play background audio isn't present yet here, I plan on adding it in the future.

  • New engine that shows a channel slideshow: channel-list. Here's an example of using the default options:
- number: 171
  name: Channel List
  abbr: LIST
  channel-list: true

More complex examples are available in the example config.tvs.yml file.

Read this first!

Get started quickly:

  • Put the files in the root directory of a web server. For now we require serving out of the root directory.
  • Visit index.html and it should load the example configuration.

Basic keyboard controls:

  • M toggles mute
  • Up / Down control channels
  • Left / Right control volume

In the browser you need to un-mute when the page loads because of autoplay restrictions.

Edit the example configuration file (config.tvs.yml) and make it your own.

Read the documentation: https://greenhillplaza.notion.site/Television-Simulator-99-c28584f069b94f58a71b5c9fe2484dcb

Join our community on Slack to ask for help or report issues: https://join.slack.com/t/greenhillplaza/shared_invite/zt-2dq8mx6sm-3YnobHETTmxUNE02TOSPRg

TVS 4.2.2-beta (12-22-2024)

23 Dec 04:07
ca40f79
Compare
Choose a tag to compare

📣 New to TVS? Watch the Quick Start on Windows tutorial to get going with a static web server. I'll be making more videos (as time permits) on setting up a full Linux server with Docker and all of the external systems that TVS can use to support live video streams and live radio, as well as configuration guides. Stay tuned!

Update Notes - 4.2.2

🐛 Bug fixes

  • Fixed weather icons not loading when in a subdirectory.
  • Fixed issues where a long Feed Reader title or article would push the entire page off-screen; long titles now scroll horizontally.
  • Updated Nostalgist.js library to 0.11.0
  • Fixed issue in Video Game engine where megadrive wasn't a supported core despite appearing in documentation. genesis and megadrive now point to the same core.
  • Fixed bug where webhook wasn't fired on channel up or down events.
  • Mitigated bug in YouTube Playlist engine when playing private or removed videos that would crash the player by reloading the playlist from the next video.

🧪 Experimental:

  • length property added to YouTube Playlist engine to specify the number of videos in the playlist manually without needing a YouTube API key for shuffled playlists. I'm still working on trying to figure out why shuffle isn't right and may change the way this engine works in the future.
- number: 17
  name: Youtube Playlist Shuffled
  abbr: YTSFL
  youtube-playlist:
    src: PLU1WjbywtZxEGdTPm-qB0KzPGkRPw6npl
    shuffle: true # Optionally you can shuffle playlists this way. You need to specify the playlist ID above using src if you include more options.
    length: 13 # Optionally manually specify the length of the playlist so that no API key is needed to determine it.

Read this first!

Get started quickly:

  • Put the files in the root directory of a web server. For now we require serving out of the root directory.
  • Visit index.html and it should load the example configuration.

Basic keyboard controls:

  • M toggles mute
  • Up / Down control channels
  • Left / Right control volume

In the browser you need to un-mute when the page loads because of autoplay restrictions.

Edit the example configuration file (config.tvs.yml) and make it your own.

Read the documentation: https://greenhillplaza.notion.site/Television-Simulator-99-c28584f069b94f58a71b5c9fe2484dcb

Join our community on Slack to ask for help or report issues: https://join.slack.com/t/greenhillplaza/shared_invite/zt-2dq8mx6sm-3YnobHETTmxUNE02TOSPRg

TVS 4.2.1-beta (12-21-2024)

21 Dec 23:20
ca40f79
Compare
Choose a tag to compare

Update Notes - 12-21-2024 (4.2.1)

🐛 Bug fixes

  • Fixed bug in weather engine where radar station was being used for observations when observation stations should be used instead.

Read this first!

Get started quickly:

  • Put the files in the root directory of a web server. For now we require serving out of the root directory.
  • Visit index.html and it should load the example configuration.

Basic keyboard controls:

  • M toggles mute
  • Up / Down control channels
  • Left / Right control volume

In the browser you need to un-mute when the page loads because of autoplay restrictions.

Edit the example configuration file (config.tvs.yml) and make it your own.

Read the documentation: https://greenhillplaza.notion.site/Television-Simulator-99-c28584f069b94f58a71b5c9fe2484dcb

Join our community on Slack to ask for help or report issues: https://join.slack.com/t/greenhillplaza/shared_invite/zt-2dq8mx6sm-3YnobHETTmxUNE02TOSPRg

TVS 4.2.0-beta (12-19-2024)

20 Dec 02:52
ca40f79
Compare
Choose a tag to compare

Update Notes - 12-19-2024 (4.2.0)

✨ New features

  • Added channel permalinks. By default now TVS will populate the document hash with the channel number. When you refresh TVS the previous channel will be loaded. You can change the way this works by using persistCurrentChannel: localstorage to save the current channel to local storage instead of URL on change, or persistCurrentChannel: false to use the old behavior of not saving the channel on change. Permalinks will work regardless.
  • Added toggle for animated channel change. In the config file set animateChannelChange: false to disable the "shake" effect when the screen changes.
  • Added cache busting for the config file, since often this file is often cached more aggressively than we want. To disable this feature you'll need to edit the environment file under _app/env.js: use export const env={"PUBLIC_USE_CACHE_BUSTER":"false"} instead of true.
  • Added webhook support for external integrations. This is for receiving data from TVS, not sending to it. TVS will call these webhooks when channel, volume or mute events occur to let your service know it. This is useful if you want to show the channel or volume information on an external display.
    • All webhooks are sent as GET requests.
    • The bracketed variables will be replaced at the time that the webhook is fired. If TVS is showing channel 12 then channel={channel} will become channel=12.
# webhooks: # Optional. You can set up webhooks to send data to external services when certain events happen.
#   channelChange: http://your-server/receive_update?channel={channel}&manual={isManualInput} # Optional. This is the URL that will be called when the channel changes. The channel number and whether it was a manual input will be sent as query parameters.
#   volumeChange: http://your-server/receive_update?volume={volume} # Optional. This is the URL that will be called when the volume changes. The volume level will be sent as a query parameter.
#   muteChange: http://your-server/receive_update?isMuting={isMuting} # Optional. This is the URL that will be called when the muting or unmuting. The mute state will be sent as a query parameter.

🐛 Bug fixes

  • Fixed bug in bouncing logo engine where the logo wouldn't draw on load.
  • Fixed bug with audio blips on channel changes when muted
  • Fixed screen stretching function so that the entire TV container stretches, not the inside contents of the container.

Read this first!

Get started quickly:

  • Put the files in the root directory of a web server. For now we require serving out of the root directory.
  • Visit index.html and it should load the example configuration.

Basic keyboard controls:

  • M toggles mute
  • Up / Down control channels
  • Left / Right control volume

In the browser you need to un-mute when the page loads because of autoplay restrictions.

Edit the example configuration file (config.tvs.yml) and make it your own.

Read the documentation: https://greenhillplaza.notion.site/Television-Simulator-99-c28584f069b94f58a71b5c9fe2484dcb

Join our community on Slack to ask for help or report issues: https://join.slack.com/t/greenhillplaza/shared_invite/zt-2dq8mx6sm-3YnobHETTmxUNE02TOSPRg

TVS 4.1.0-beta (12-02-2024)

03 Dec 01:37
ca40f79
Compare
Choose a tag to compare

Update Notes - 12-02-2024 (4.1.0)

  • Added ability to disable the on-screen display entirely, or parts of it.
osd: false # You can disable the on-screen displays entirely by setting this to false.
# You can also disable parts of the OSD individually. The following options are available:
osd:
  tuner: false # You can disable the tuner OSD by setting this to false.
  info: false # You can disable the info OSD by setting this to false.
  receiver: false # You can disable the receiver OSD by setting this to false.

Read this first!

Get started quickly:

  • Put the files in the root directory of a web server. For now we require serving out of the root directory.
  • Visit index.html and it should load the example configuration.

Basic keyboard controls:

  • M toggles mute
  • Up / Down control channels
  • Left / Right control volume

TVS 4.0.1-beta (11-23-2024)

24 Nov 00:29
ca40f79
Compare
Choose a tag to compare

Update Notes - 11-23-2024

  • Fixed zoom bug on small window sizes introduced in previous update.
  • Beginning to update TVS's versions to use semantic versioning so that they show up correctly in GitHub releases and make it easier on users to tell when breaking changes occur.

Read this first!

Get started quickly:

  • Put the files in the root directory of a web server. For now we require serving out of the root directory.
  • Visit index.html and it should load the example configuration.

Basic keyboard controls:

  • M toggles mute
  • Up / Down control channels
  • Left / Right control volume

v2 Public Beta 9-25-2024 (3.4.0)

26 Sep 00:53
6d3a5f3
Compare
Choose a tag to compare
Pre-release

Television Simulator '99 Public Beta

2017-2024 Zach Hall

Always up to date list of 3rd party credits / contributors:

https://www.notion.so/greenhillplaza/Television-Simulator-99-c28584f069b94f58a71b5c9fe2484dcb?pvs=4#8c122c36557a4710bdc938172aa883d7

Update Notes - 9-25-2024

🔧 Hotfix to address bug surfaced in newest Chromium version (129) related to overflow.

TV screen is now overflow: hidden.

Read this first!

Get started quickly:

  • Put the files in the root directory of a web server. For now we require serving out of the root directory.
  • Visit index.html and it should load the example configuration.

Basic keyboard controls:

  • M toggles mute
  • Up / Down control channels
  • Left / Right control volume

In the browser you need to un-mute when the page loads because of autoplay restrictions.

Edit the example configuration file (config.tvs.yml) and make it your own.

Read the documentation: https://greenhillplaza.notion.site/Television-Simulator-99-c28584f069b94f58a71b5c9fe2484dcb

Join our community on Slack to ask for help or report issues: https://join.slack.com/t/greenhillplaza/shared_invite/zt-2dq8mx6sm-3YnobHETTmxUNE02TOSPRg