Releases: glanceapp/glance
v0.7.2
v0.7.1
Fixed an error when using the new playlists
property in the videos widget (thanks corbin)
v0.7.0
Jump to section
- Docker container breaking changes
- CLI breaking changes
- New widgets
- Docker containers
- Custom API
- Server stats
- Split column
- Calendar (reworked)
- New features
- New styles
- Widget enhancements
- [Twitch channels] stream preview on hover
- [RSS] request headers,
limit
per feed,preserve-order
- [Videos]
playlists
- [Group] support for
title-url
- [Monitor]
alt-status-codes
,error-url
- [Extension] specify if content should have no frame
- [Bookmarks]
target
for links,same-tab
andhide-arrow
for groups - [Reddit]
proxy
- [Search]
placeholder
and clear input on search - [Markets]
chart-link-template
,symbol-link-template
andsort-by
- [Releases]
include-prereleases
- [DNS stats]
hide-graph
,hide-top-domains
andallow-insecure
- [Clock] now displays exact time difference for timezones
- Fixes
- Been a while
- Community overhaul
- Thank you
Docker container breaking changes
Until now, setting up Glance using its Docker container involved a somewhat unusual step where the config file was solely mounted as a volume. This tripped up some users and caused unnecessary confusion due to a few odd behaviors.
The default location of the config file has now been changed to /app/config/glance.yml
from /app/glance.yml
. That means your docker-compose.yml
file should now look like the following:
services:
glance:
image: glanceapp/glance
volumes:
- ./config:/app/config
This also requires that you place your glance.yml
file in a config
directory in the same location as your docker-compose.yml
file. If you're unsure what changes you need to make, there is an upgrade guide available here as well as a new recommended docker compose directory structure available here.
CLI breaking changes
Previously, you could run the following to validate your config file without starting Glance:
glance --config /path/to/config.yml --check-config
For the sake of consistency with the few new added comands (and because this shouldn't have been a flag in the first place), this has now been changed to:
glance --config /path/to/config.yml config:validate
New widgets
Docker containers
Display the status of your Docker containers along with an icon and an optional short description.
- type: docker-containers
hide-by-default: false
Note
The widget requires access to docker.sock
. If you're running Glance inside a container, this can be done by mounting the socket as a volume:
services:
glance:
image: glanceapp/glance
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Configuration of the containers is done via labels applied to each container:
jellyfin:
image: jellyfin/jellyfin:latest
labels:
glance.name: Jellyfin
glance.icon: si:jellyfin
glance.url: https://jellyfin.domain.com
glance.description: Movies & shows
For services with multiple containers you can specify a glance.id
on the "main" container and glance.parent
on each "child" container:
View docker-compose.yml
services:
immich-server:
image: ghcr.io/immich-app/immich-server
labels:
glance.name: Immich
glance.icon: si:immich
glance.url: https://immich.domain.com
glance.description: Image & video management
glance.id: immich
redis:
image: docker.io/redis:6.2-alpine
labels:
glance.parent: immich
glance.name: Redis
database:
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0
labels:
glance.parent: immich
glance.name: DB
proxy:
image: nginx:stable
labels:
glance.parent: immich
glance.name: Proxy
This will place all child containers under the Immich
container when hovering over its icon:
If any of the child containers are down, their status will propagate up to the parent container:
(thanks @baranovskis & @reality-exe, inspired by https://github.com/DVDAndroid/glance-docker-container-ext)
Custom API
Display data from any JSON API in an entirely customizable template.
Note
With great power come great requirements.
The configuration of this widget requires some basic knowledge of programming, HTML, CSS, the Go template language and Glance-specific concepts.
View glance.yml
- type: custom-api
title: Random Fact
cache: 6h
url: https://uselessfacts.jsph.pl/api/v2/facts/random
template: |
<p class="size-h4 color-paragraph">{{ .JSON.String "text" }}</p>
View glance.yml
- type: custom-api
title: Immich stats
cache: 1d
url: https://${IMMICH_URL}/api/server/statistics
headers:
x-api-key: ${IMMICH_API_KEY}
Accept: application/json
template: |
<div class="flex justify-between text-center">
<div>
<div class="color-highlight size-h3">{{ .JSON.Int "photos" | formatNumber }}</div>
<div class="size-h6">PHOTOS</div>
</div>
<div>
<div class="color-highlight size-h3">{{ .JSON.Int "videos" | formatNumber }}</div>
<div class="size-h6">VIDEOS</div>
</div>
<div>
<div class="color-highlight size-h3">{{ div (.JSON.Int "usage" | toFloat) 1073741824 | toInt | formatNumber }}GB</div>
<div class="size-h6">USAGE</div>
</div>
</div>
View glance.yml
- type: custom-api
title: Steam Specials
cache: 12h
url: https://store.steampowered.com/api/featuredcategories?cc=us
template: |
<ul class="list list-gap-10 collapsible-container" data-collapse-after="5">
{{ range .JSON.Array "specials.items" }}
<li>
<a class="size-h4 color-highlight block text-truncate" href="https://store.steampowered.com/app/{{ .Int "id" }}/">{{ .String "name" }}</a>
<ul class="list-horizontal-text">
<li>{{ div (.Int "final_price" | toFloat) 100 | printf "$%.2f" }}</li>
{{ $discount := .Int "discount_percent" }}
<li{{ if ge $discount 40 }} class="color-positive"{{ end }}>{{ $discount }}% off</li>
</ul>
</li>
{{ end }}
</ul>
(thanks @reality-exe)
Server stats
There are other projects dedicated to providing this kind of functionality and this is not meant to be a replacement for any of them, it's intended for people who just want the most basic information about their server without setting up a separate monitoring solution. Things will get improved based on feedback, but the goal is to keep it simple and minimal. If you're looking for a more feature-rich server monitoring solution, Beszel looks like a good choice. With that out of the way:
- type: server-stats
servers:
- type: local
name: Services
# optionally override the sensor used to determine CPU temperature
# cpu-temp-sensor: thermal_zone0
# optionally hide swap
# hide-swap: true
# optionally hide or rename mountpoints
# mountpoints:
# "/boot/efi":
# hide: true
# name: EFI
There's a bunch of bars and their purpose might not be immediately obvious:
- CPU - 1m and 15m average load
- RAM - RAM and SWAP
- Disk – the two mountpoints with the highest usage percentages
If your CPU is feeling a little spicy (assuming Glance was able to determine your CPU sensor) and reaches >=80°C, you'll see a little flame icon next to it. The progress indicators will also turn red (or the equivalent of your negative color) to hopefully grab your attention if anything is unusually high:
![server-stats-preview-1](https://github.com/user-attachments/assets/40597baf-e6e6-4d9c-be3b...
v0.6.4
Security
- Updated dependencies to address a security vulnerability in golang.org/x/net.
Fixes
- Fixed broken thumbnails of Reddit posts marked NSFW and those containing videos
v0.6.3
Changes
- Changed simple icons provider from
cdnjs.cloudflare.com
tocdn.jsdelivr.net
and switched to always using the latest version (was previously stuck on 11.14.0, plenty of icons have been added/updated since)
Fixes
- Fixed a couple of graphical bugs such as the rain indicator in the weather widget not showing as well as the DNS stats widget having its graph displayed incorrectly
- Fixed a bug with the weather widget graph in instances where the temperature for the entire day was the same
Heads up
v0.7.0 will likely come with a backwards-incompatible change in the Docker image which will require a slight tweak to your docker-compose file.
v0.6.2
New
- Added
/api/healthz
endpoint that just returns a status code 200, useful for checking if Glance is running and is reachable (thanks @xunleii)
Fixes
- Fixed a bug with the collapsing behavior of the videos widget using grid-cards style inside of a group widget on chromium based browsers (thanks Atlas)
- Fixed a bug with the dns-stats widget for Pi-hole instances where the privacy setting was used to hide domain names (thanks @SimJunYou)
- Fixed a bug with the bookmarks widget where icons for links with long titles were unintentionally shrinking (thanks @cody-at-ats)
v0.6.1
New
- [Releases widget] Added the ability to fetch releases from Codeberg via
codeberg:
prefix (thanks @micash545 #210)
Fixed
- [DNS stats widget] Fixed AdGuard not displaying graph data when statistics retention isn't set to 24 hours (thanks @samcro1967 #211)
- Mobile navigation links wrapping
v0.6.0
More information about each new widget and property can be found in the configuration docs.
New
Preconfigured pages
There's a new document with a couple of example preconfigured pages for those who are looking for inspiration or just want to copy-paste something without going through the effort of configuring entire pages from scratch. Pull requests are welcome if you'd like to share your page configs!
Group widget
- type: group
widgets:
- type: reddit
subreddit: gamingnews
show-thumbnails: true
- type: reddit
subreddit: games
show-thumbnails: true
- type: reddit
subreddit: pcgaming
show-thumbnails: true
Grouping widgets of any type is possible, not just reddit. It also works for both small
and full
columns! The only exception is that you can't have a group within a group, for those who were going to be cheeky and try that.
(thanks @VeryEvilHumna #169)
DNS stats widget
Supports showing stats from both AdGuard Home and Pi-hole.
- type: dns-stats
service: adguard
url: https://adguard.domain.com/
username: ...
password: ...
- type: dns-stats
service: pihole
url: https://pihole.domain.com/
token: ...
Branding customization
You can now change things such as the logo, favicon, footer, etc through the new top level branding
property:
branding:
# With support for HTML
custom-footer: |
<p>Powered by <a href="https://github.com/glanceapp/glance">Glance</a></p>
# Or remove the footer entirely
hide-footer: true
logo-url: /assets/logo.png
favicon-url: /assets/logo.png
(thanks @realdavidops #75)
Releases widget now supports showing releases from Docker Hub and GitLab
To help distinguish the source of each repository, there is also a new show-source-icon
property:
- type: releases
show-source-icon: true
repositories:
- go-gitea/gitea
- jellyfin/jellyfin
- glanceapp/glance
- gitlab:fdroid/fdroidclient
- dockerhub:gotify/server
(thanks @bigsk1 #120 & @Fumesover #165)
New customization properties for pages
You can now change the maximum width of pages with the new width
property:
- name: Startpage
width: slim
Possible options are slim
and wide
. The maximum width for each is:
- default:
1600px
- slim:
1100px
- wide:
1920px
Note that when set to slim
, the maximum number of columns you can have goes down from 3 to 2.
You can now hide the desktop navigation for individual pages, useful for creating minimalsitic pages:
- name: Startpage
hide-desktop-navigation: true
You can now vertically center the content on the page:
- name: Startpage
center-vertically: true
Combining all 3 properties can give you a pretty clean startpage:
The config for this page is available in the preconfigured pages doc.
New base-url
property under server
This allows you to host Glance behind a reverse proxy and under a path rather than having to give Glance its own subdomain:
server:
base-url: /glance
Without base-url
:
https://glance.yourdomain.com/
With base-url
(assuming you have your reverse proxy setup correctly):
https://yourdomain.com/glance/
(thanks @fenying #125 & @CremaLuca #167)
New commits-limit
property for the Repository widget
Along with showing the latest issues and pull requests, you can also show the latest commits made to the main branch of a repository:
- type: repository
commits-limit: 3
New new-tab
and autofocus
properties for the Search widget
- type: search
# defaults to showing results in a new tab when pressing Enter and same tab when pressing Ctrl + Enter
new-tab: true
# Automatically focuses the search input on page load so you can start typing immediately
autofocus: true
(thanks @ralphocdol #137 & @tversteeg #170)
New instance-url
and custom-url
properties for the Lobsters widget
- type: lobsters
instance-url: # lobsters instance hosted somewhere other than https://lobste.rs/
custom-url: # custom URL to a lobsters instance that returns posts in JSON format
New title-url
and css-class
properties for all widgets
You can now set links for widget titles:
- type: calendar
title-url: https://calendar.google.com/calendar/u/0/r
- type: weather
title-url: # link to your favorite weather provider
Some widgets (hacker-news
, lobsters
, reddit
, twitch-channels
and twitch-top-games
) have sensible URLs set by default, though they can be changed to whatever you like.
To help with styling specific widgets using custom CSS, you can now add your own CSS classes to individual widgets:
- type: rss
css-class: my-custom-class-that-makes-links-glow
(thanks @DickenSerm #147)
New check-url
for the Monitor widget
- type: monitor
sites:
- title: Jellyfin
# this is the URL that will open when you click on the title
url: https://jellyfin.yourdomain.com
# this is the URL that will be requested to determine the status
check-url: https://jellyfin.yourdomain.com/healthcheck
(thanks @MrExplode #154)
New show-flairs
property for the Reddit widget
When set to true
, shows post flairs.
New show-failing-only
property for the Monitor widget
When set to true
shows only the sites which were unreachable or returned an error response. Useful if you're monitoring a lot of sites and only want to look for issues.
- type: monitor
show-failing-only: true
sites:
...
New single-line-titles
property for the RSS widget with default styling
When set to true
, truncates titles if they are longer than a single line. Useful if you're using the RSS widget with default styling in a small column and are unreasonably annoyed by frequent orphans.
Changed
Removed style: dynamic-columns-experimental
and made it the default behavior
You no longer need to specify the style in order to have the bookmarks, monitor and markets widgets scale in full
sized columns.
(thanks @DVDAndroid)
Shorts are now removed by default from the Videos widget
You can revert to showing them again using the new include-shorts
property:
- type: videos
include-shorts: true
channels:
...
(thanks @3rd #176 & @bigsk1 #106)
You can now use custom bangs in the Search widget without a query
Before, if you had a custom bang that simply takes you to a link rather than perform a search, you couldn't use it unless you entered something after it:
doesn't work:
"!jellyfin"
works:
"!jellyfin 123"
This has now been changed and you can simply enter "!jellyfin"
with nothing else and it will open the link for you.
(thanks @dracarys18 #163)
Twitch avatars are now clickable
... and they open the channel in a new tab. Neat.
(thanks @DVDAndroid #172)
RSS feeds without any items will no longer show an error
Before, if your RSS feeds didn't return any items you'd get a scary looking error message telling you no content could be fetched. This has now been changed for a more neutral message.
(thanks @DickenSerm #156)
Fixes
- [Reddit widget] fixed crossposts so that they now show the subreddit of the original post in place of the link domain
- [RSS widget] fixed feeds without titles so that the descriptions are used instead (thanks @ssrtw #145)
- [RSS widget] fixed additional instances where the thumbnail wasn't showing when it should have
- [RSS widget] fixed a crash when items had an empty link (thanks @ccjjxl #197)
- [Releases widget] fixed instances where the version would include an extra
v
in the beginning (thanks @jbonadiman #202) - [Twitch channels widget] fixed streams without a category showing incorrect live since (thanks @DVDAndroid #171)
Notable community contributions
DVDAndroid/glance-docker-container-ext - a Glance extension that shows the status of Docker containers:
Milestones
Glance has surpassed 100,000 downloads on Docker Hub. I did not expect my little side project to grow this much in the span of a couple of months. Thank you so much to everyone who's helped by contributing or simply spreading the word.
Sponsors
A special thank you to the people who have sponsored Glance:
If you'd also like to sponsor the project you can do so here. Thank you!
v0.5.1
v0.6.0-beta.2
More information about the configuration for this release can be found here.
New
- Added
group
widget that allows grouping multiple widgets into one via tabs (thanks @VeryEvilHumna) - [Monitor widget] Added
check-url
property which allows having a different URL that gets pinged versus the one in the UI (thanks @MrExplode) - Added
width
property for each page with optionsslim
andwide
- Added
base-url
property toserver
which allows serving Glance behind a proxy and under a directory rather than a subdomain (thanks @CremaLuca) - Added
hide-desktop-navigation
property for each page which hides the desktop navigation for that page when set totrue
Changed
- [Videos widget] Shorts from YouTube channels are now filtered by default, to include them again use
include-shorts: true
(thanks @3rd)
Fixes
- Fixed crash when using
custom-css-file
(thanks @DVDAndroid) - [Twitch channels widget] Fixed Twitch streams that don't have a category (thanks @DVDAndroid)