Skip to content

Releases: glanceapp/glance

v0.6.2

29 Sep 23:54
Compare
Choose a tag to compare

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

10 Sep 04:45
Compare
Choose a tag to compare

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

08 Sep 03:30
066e512
Compare
Choose a tag to compare

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

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

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

releases-widget

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:

startpage-preview

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

(thanks @aharivel #77)

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

(thanks @bersace #129)

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:

docker-containers-extension

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

09 Aug 15:13
b37f8a8
Compare
Choose a tag to compare

This is a small release that backports fixes from beta v0.6.0

Fixes

  • [Releases widget] fixed missing latest releases for repositories with lots of pre-releases (thanks @wfg)
  • [RSS widget] fixed missing thumbnails in a lot of scenarios
  • [Search widget] fixed input color when using light theme

v0.6.0-beta.2

07 Aug 18:05
Compare
Choose a tag to compare
v0.6.0-beta.2 Pre-release
Pre-release

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 options slim and wide
  • Added base-url property to server 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 to true

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)

v0.6.0-beta.1

16 Jul 09:18
Compare
Choose a tag to compare
v0.6.0-beta.1 Pre-release
Pre-release

More information about the configuration for this release can be found here.

New

  • Added new-tab property to the search widget which opens results in a new tab by default (thanks @ralphocdol)
  • Added css-class property for every widget which allows setting custom CSS classes for that specific widget (thanks @DickenSerm)
  • Added instance-url and custom-url properties to the lobsters widget (thanks @bersace)
  • Added autofocus property to the search widget which when set to true automatically focuses the search on page load (thanks @tversteeg)
  • Added title-url property for every widget which allows setting a custom link for the widget's title
  • Added default title URLs for hacker-news, lobsters, reddit, twitch-channels and twitch-top-games widgets

Fixes

  • Fixed an issue in the releases widget where latest releases sometimes couldn't be fetched (thanks @wfg)
  • Fixed search widget text color when using a light theme (thanks @knhash)
  • Fixed an issue in the RSS widget for feeds without titles so that item descriptions are used instead (thanks @ssrtw)
  • Fixed RSS feeds not having thumbnails in a lot of cases (thanks @Generator)

v0.5.0

02 Jun 19:20
b83bf9b
Compare
Choose a tag to compare

You can discuss this release here.

Complete information about each new widget and property can be found in the configuration docs.

New

Search widget

search-widget-preview

search-widget-bangs-preview

- type: search
  search-engine: duckduckgo
  bangs:
    - title: YouTube
      shortcut: "!yt"
      url: https://www.youtube.com/results?search_query={QUERY}

Yes, there's support for custom bangs! If you don't know what bangs are, you can learn about them here. In short, you can easily specify where to search depending on how your query starts. With the above configuration, the query "!yt good mythical morning" will search in YouTube.

You can also use a custom search engine:

- type: search
  search-engine: https://whoogle.your-domain.com/search?q={QUERY}

Tip

Pressing S anywhere on the page will focus the search input.

Pressing Enter will show search results in the same tab.

Pressing Ctrl + Enter will show search results in a new tab.

(thanks for contributing @chand1012)

Clock widget

clock-widget-preview

- type: clock
  hour-format: 24h
  timezones:
    - timezone: Europe/Paris
      label: Paris
    - timezone: America/New_York
      label: New York
    - timezone: Asia/Tokyo
      label: Tokyo

The timezones are optional.

(thanks for contributing @yardenshoham)

Lobsters widget

lobsters-widget-preview

- type: lobsters
  sort-by: hot

(thanks for contributing @jonasknobloch)

changedetection.io widget

change-detection-widget-preview

- type: change-detection
  instance-url: changedetection.your-domain.com
  token: <your API token>

(thanks for contributing @knhash)

Extension widget

While I will continue adding new widgets, I won't be able to add every single requested widget. To alleviate this, if you know how to setup an HTTP server and a bit of HTML and CSS, you can now develop your own widgets:

extension-example

- type: extension
  url: http://localhost:9001
  allow-potentially-dangerous-html: true
  parameters:
    name: David

Regardless of whether you know PHP:

<?php
header('Widget-Title: My first extension');
header('Widget-Content-Type: html');
?>

<p>Hello, <span class="color-primary"><?= $_GET['name'] ?>!</span></p>

JavaScript:

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.set('Widget-Title', 'My first extension');
  res.set('Widget-Content-Type', 'html');

  res.send(`<p>Hello, <span class="color-primary">${req.query.name}!</span></p>`);
});

app.listen(9001);

Or any other programming language. You can learn more about building your own extensions here.

Note that the API for this is not set in stone and may change in the future.

What's with the scary looking allow-potentially-dangerous-html?

In its current state, the extension widget is meant to be used by developers who want to add their own widgets to Glance but may not want to build and deploy their own fork (or may not know/want to learn Go). As we know, with great power comes great responsibility and being able to insert any HTML into your dashboard means you can also run any JavaScript. Do not use this widget with this property enabled and point to random URLs you may find online.

The long-term goal is to have extensions return generic content types such as videos, forum-posts, markets, streams, etc. in JSON format and then displayed by Glance using existing styles and functionality, allowing extension developers to achieve a native look while only focusing on providing data from their preferred source. This will allow for safe use of publicly hosted extensions.

HTML widget

For when you want to insert something a little more custom:

- type: html
  source: |
    <p>Hello, <span class="color-primary">World</span>!</p>

(thanks for the suggestion @yefoenix)

Glance can now be installed as a PWA

There are currently no major benefits to installing Glance as a PWA, however it does give you a dedicated app icon as well as remove the URL bar for a cleaner look.

(thanks for contributing @medinnna)

detailed-list style for the RSS widget

moving a little closer towards being worthy of being called an RSS reader

rss-widget-detailed-list-preview

- type: rss
  style: detailed-list

(thanks for the suggestion @carlyman)

collapse-after-rows for Videos widget when using grid-cards style

You can now choose how many rows of videos are visible when using the grid-cards style, defaulting to 4:

- type: videos
  style: grid-cards
  collapse-after-rows: 2

(thanks for the suggestion @MKwareContributions)

Simple icons for the monitor widget

Just like with the bookmarks widget, you can now use simple icons for your monitored sites using the si: prefix:

- type: monitor
  sites:
    - title: Jellyfin
      url: https://jellyfin.your-domain.com/
      icon: si:jellyfin

(thanks for the suggestion @github-random-827495)

Insecure requests for the monitor widget

You can now make insecure requests to your monitored sites which is helpful for those who use self-signed certificates:

- type: monitor
  sites:
    - title: Jellyfin
      url: https://localhost:8080/
      icon: si:jellyfin
      allow-insecure: true

(thanks for the suggestion @Petbotson)

24-hour format for the weather widget

weather-widget-24-hour-preview

- type: weather
  hour-format: 24h
  location: London, UK

(thanks for contributing @tarikcoskun)

item-link-prefix for RSS feeds

Some (naughty) RSS feeds don't return full links for each post, omitting the domain and only providing the path. Glance will now try to automatically correct such links by prepending the feed domain, however in cases where it gets this wrong you can override the prefix with the new item-link-prefix property:

- type: rss
  feeds:
    - url: https://www.bungie.net/en/rss/News
      item-link-prefix: https://www.bungie.net/
      title: Bungie

(thanks for reporting the issue @SapphicMoe)

Changed

Weather widget no longer prevents app startup

Previously, the weather widget would make an HTTP request to validate the provided location which occurred during app startup, meaning that if you had no internet connection you couldn't start Glance. This also meant that the --check-config option wouldn't work if you had no internet connection. This has now been changed and the validation of the location is done on page load.

(thanks for reporting this issue @msfjarvis & @Jerakin)

Stocks widget is now Markets

Initially the stocks widget was intended for, well, stocks. This quickly stopped being the case as it was being used for all kinds of different markets. To better reflect this, it will now be referred to as "Markets" within the configuration as well as the docs. To retain backwards compatibility you don't have to change anything and you can still use this in your configuration:

- type: stocks
  stocks:
    - symbol: SPY
      name: S&P 500

However the preferred way of configuring it will now be the following:

- type: markets
  markets:
    - symbol: SPY
      name: S&P 500

(thanks for the suggestion @0x3e4)

v0.5.0-beta.1

18 May 10:09
21909e0
Compare
Choose a tag to compare
v0.5.0-beta.1 Pre-release
Pre-release

What's Changed

Full Changelog: v0.4.0...v0.5.0-beta.1

v0.4.0

12 May 21:28
7743664
Compare
Choose a tag to compare

New

Repository widget

For those who like keeping an eye on their open source projects:

repository-overview-preview

- type: repository
  repository: glanceapp/glance
  pull-requests-limit: 3
  issues-limit: 3

Hiding the pull requests or issues is possible by setting their limit to -1.

Experimental dynamic columns style for the bookmarks, monitor and stocks widgets

The three widgets have so far been primarily built to fit inside a small column, leaving lots to be desired when placed inside of a full column. There is now an experimental dynamic-columns-experimental style for all 3, giving you more flexibility in how you build your pages:

Note

Because this is experimental, the looks or behavior of this may change in the future depending on feedback.

dynamic-columns.mp4
- size: full
  widgets:
    - type: monitor
      style: dynamic-columns-experimental
      ...

    - type: stocks
      style: dynamic-columns-experimental
      ...

    - type: bookmarks
      style: dynamic-columns-experimental
      ...

(thanks for the idea @igeekbb & @allardhs)

RSS widget: horizontal-cards-2 style

For when the thumbnail is the main attraction:

rss-widget-horizontal-cards-2-preview

You can adjust the height of the cards (for just this style) using the new card-height property:

- type: rss
  style: horizontal-cards-2
  card-height: 25 # in rems, where 1rem = 10px, so this would be 250px tall
  feeds: ...

A similar and newly added thumbnail-height can also be used to change the height of just the thumbnail for the horizontal-cards style.

Videos widget: grid-cards style

videos-widget-grid-cards-preview

Mobile header

Phones have gotten fairly tall, so tall in fact that trying to reach a link at the top of the page can sometimes be a pain. The new show-mobile-header property, available for each page, can help push the content down and make it easier to get to:

mobile-header-preview

- name: Homelab
  show-mobile-header: true
  columns: ...

Sorting options for Reddit and Hacker News

- type: reddit
  title: Cool projects from /r/selfhosted this month
  subreddit: selfhosted
  sort-by: top
  top-period: month
  search: flair:"Release"
  show-thumbnails: true

(results are not rigged, I swear)

Hacker news is a little more limited for now, allowing you to specify just sort-by with either top, new or best:

- type: hacker-news
  sort-by: new

(thanks for the suggestion @NoxesP & @knhash)

Symbol and chart links for stocks

You can now set a custom link for when you click on either the symbol or the chart of a stock:

- type: stocks
  stocks:
    - symbol: AAPL
      name: Apple
      symbol-link: https://www.google.com/search?tbm=nws&q=apple
      chart-link: https://www.tradingview.com/chart/?symbol=NASDAQ:AAPL

(thanks for the idea @0x3e4)

Specifying URLs for the Monitor widget from environment variables

- type: monitor
  sites:
    - title: Jellyfin
      url: ${URL_TO_JELLYFIN}

(thanks for the idea @devsjc)

Changed

Sort order for Reddit and Hacker News

You've probably noticed that Glance doesn't return posts in the order you'd find them in either Reddit or Hacker news. This was undocumented bevahior which attempted to place posts with above average points and comments higher, since by default you only see up to 5 posts. This sorting behavior is no longer the default and you'll now see posts in the exact order they are found on each site.

If you liked the way posts were being ordered you can still use the same sorting algorithm via the new extra-sort-by property which is available for both the Reddit and Hacker News widgets:

extra-sort-by: engagement

Note that engagement is currently the only possible option and other sorting algorithms may get added in the future.

Images now fade in when they load

If you're a Firefox user you may have noticed the jarring way in which it loads images, where it sometimes places a white background behind the image as it gets loaded:

(connection speed throttled to exaggerate issue)

image-loading-before.mp4

To make the experience a little more pleasant, images will now be hidden until they've loaded completely and then fade in:

image-loading-after.mp4

v0.3.0

03 May 04:50
7b444b8
Compare
Choose a tag to compare

New

Custom URLs

The reddit, hacker-news and videos widgets can now have custom URLs for the comments if you prefer using, or host alternative front-ends. Example:

- type: hacker-news
  comments-url-template: https://www.hckrnws.com/stories/{POST-ID}
- type: reddit
  comments-url-template: https://old.reddit.com/{POST-PATH}
- type: videos
  video-url-template: https://invidious.your-domain.com/watch?v={VIDEO-ID}

(thanks for the idea @AlissonSantos95)

In addition, if you're hosting Glance on a VPS you may have noticed that the Reddit widget doesn't work due to Reddit blocking VPS IPs. As a workaround, you can now set a custom URL for the requests, routing them through an HTTP proxy. Example:

- type: reddit
  request-url-template: https://your-proxy.com/{REQUEST-URL}

(thanks for contributing @jarylc and for reporting the issue @Iliannnn & @imjuzcy)

Thumbnails for Reddit posts

You can now show thumbnails for Reddit posts (for the default style) using the new show-thumbnails property:

- type: reddit
  subreddit: technology
  show-thumbnails: true

Preview:

reddit-widget-vertical-list-thumbnails

Note

Thumbnails are disabled by some subreddits and aren't available for others due to limitations in Reddit's API but should work in most cases.

More control over the Weather widget location

Previously, you could only specify the city name and country for the location, however that made it impossible to set your location if the name of your city was used across multiple US states. You can now optionally select the state as the middle value:

location: Greenville, North Carolina, United States
# or 
location: Greenville, South Carolina, United States
# or
location: Greenville, Mississippi, United States

(thanks for reporting @mikesellt)

Additionally, you can now choose to show the state in the location using the new show-area-name property.

Opening links in the same tab

The bookmarks as well as monitor widgets now have a same-tab property for each entry which allows you to specify whether to open the link in the same or a new tab. Example:

- type: bookmarks
  groups:
    - title: Entertainment
      links:
        - title: YouTube
          url: https://www.youtube.com/
          same-tab: true
- type: monitor
  sites:
    - title: Jellyfin
      url: https://your-domain.com/
      same-tab: true

(thanks for the idea @Rinnray)

Hiding the arrow of bookmark links

You can now hide the arrow for each link in the bookmarks widget using the new hide-arrow property:

- type: bookmarks
  groups:
    - title: Entertainment
      links:
        - title: YouTube
          url: https://www.youtube.com/
          hide-arrow: true

Preview:

image

Icons for bookmark links

You can now add icons to bookmark links using the new icon property on each link:

- type: bookmarks
  groups:
    - title: General
      links:
        - title: Gmail
          url: https://mail.google.com/mail/u/0/
          icon: /assets/path/to/icon.png

Preview, combined with hide-arrow: true:

image

(thanks for the idea @Rinnray)

Additionally, you can now directly use Simple Icons for each bookmark icon using the si: prefix:

icon: si:gmail
icon: si:youtube
icon: si:reddit

Warning

Simple Icons are loaded externally and are hosted on cdnjs.cloudflare.com, if you do not wish to depend on a 3rd party you are free to download the icons individually and host them locally.

Changed

Stocks widget sort order

Previously, the stocks widget would order the stocks based on their price change for the day, placing the ones with the highest % change at the top. As this was somewhat unexpected and potentially confusing, it will now display stocks in the order which they were defined by default. To go back to the old behavior, use the sort-by property:

- type: stocks
  sort-by: absolute-change

(thanks for reporting @allardhs)

Fixed

  • The stocks widget now displays the proper currency symbol for prices (thanks for reporting @Iliannnn)