Skip to content

Standards

foonerd edited this page Oct 2, 2026 · 12 revisions

Standards

Glass uses three public specifications.

The current version is the newest section of CHANGELOG.md in the code repository, the release marked latest on its releases page (a newer one there may be a test release, see Test releases on the Manager page), and what an installed Glass shows at the top of its Manager. Every cut bumps the patch number. The minor number moves only for a major functional change. The number is workspace.package.version in the code repository; every crate and every binary share it, and the plugin's package.json is given the same one when the zip is packaged. Nothing is published to a crate registry.

A released version is a git tag, v0.8.0, on the commit that carries that number; a section in CHANGELOG.md; and a GitHub release, published as a pre-release and made the latest once it has been tried, with the plugin zip, the remotes' archives for Linux and Windows and the Android app signed with the project's key, its notes the changelog's section. The repository's automation builds it from that tag, which must name the workspace's version; how a release is built is on the Tests page.

Once a minor line is superseded, its releases are taken down and the tags of its patch cuts are removed; the tag of the line's first cut (v0.6.0) and every changelog section remain, so the history is complete in the repository and the releases page shows the current line only. An installed Glass upgrades to the latest release, or with "Offer test releases" on to the newest published, never to an earlier one, so nothing depends on an old release.

Commits

<type>(<scope>): <description>

<body>

<footer>

The scope is optional. When present it names what the commit is about: a crate (lead, intake, plot, expose, pane, tap, bank, controls, overlay, page, logline), a binary (glass, glass-serve, glasstap, glass-remote, glass-face, glass-android), or a part of the whole (plugin, manager, screen, display, face, remote, remotes, analyser, spectrum, tailor, catalog, artwork, fonts, logging, performance, screensaver, alsa, transition, install, builder, release).

The description is imperative, lowercase, and has no trailing period.

Type Use
feat New behavior on the line
fix A correction to behavior that was already claimed
docs Wiki or README only
style Formatting only. No behavior change
refactor A restructure that does not change behavior
perf A faster path with the same result
test Tests or recorded frames only
build Cargo, toolchain, or dependencies
ci Automation
chore Anything else that does not belong above
revert A revert of an earlier commit

A breaking change uses ! after the type or scope, and a BREAKING CHANGE: footer.

feat(plot)!: replace bar height with a step count

BREAKING CHANGE: Scene.bar_height is removed. Scene.steps is the height.

While the version is 0.x, a breaking change still uses that footer so the changelog can see it. The version number follows the rules below, not the ! by itself.

Versions

The minor number is the line's history. Each row is what that number brought; the patch cuts within it are in CHANGELOG.md.

Version Meaning
0.0.z Initial. The line exists, reads nothing and draws nothing.
0.1.0 The first frame: the pipeline reads a measurement and writes a picture.
0.2.0 A window. The frame is shown on a display at the configured frame rate.
0.3.0 The frame size follows the theme, and the theme's background is drawn at its own resolution.
0.4.0 The meter indicator moves with the channel level. The first cuts delivered to a Volumio display.
0.5.0 Glass is a Volumio plugin, replacing PeppyMeter Screensaver, with the audio path, the settings page, the artwork and the backups.
0.6.0 The Glass Manager: themes, previews, the catalog, artwork, backups and status on the plugin's own port.
0.7.0 Remote displays: the frames daemon, the channel over TCP, the beacon, and glass --remote on another machine. The remote's own settings page, logging, performance profiles and the frame rate governor followed as patch cuts of this line.
0.8.0 glass-evo: the Glass interface for the player's own screen, got and chosen from the Manager, the screen handed to it and back. Test releases, and the face in the Face tab, in Anymote and on remotes, followed as patch cuts of this line.
1.0.0 Reserved: the tap's ring, the channel, the wire to remotes and the Scene are frozen for the plugin and for remotes.

The patch number moves with every cut. The minor number moves only for a major functional change.

CHANGELOG.md has one section per version. The section heading is the version and the date of the tag, ## [0.8.0] - 2026-10-01.

Clone this wiki locally