8000 Releases Β· glzr-io/zebar Β· GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Releases: glzr-io/zebar

v3.1.0

31 May 15:17
Compare
Choose a tag to compare

Zebar v3 - Production Release πŸŽ‰

We're excited to announce the first official, production-ready release of Zebar v3!

The following is a summary of the changes introduced in v3.0.0 through to the hotfix releases afterwards.

🌟 Major new features

Widget marketplace

Discover and share widgets with the community through our new integrated marketplace. Browse widget packs, install them with one click, and publish your own creations for others to try out.

πŸ“– Publishing guide

2025-03-27_15-35-07.mp4

Demo of live previewing marketplace widgets.

System tray provider (Windows)

Display and interact with your system tray icons directly within your widgets using the new systray provider. This feature required extensive reverse engineering and wouldn't have been possible without the incredible work by @HolbyFPV.

πŸ“– System tray docs

Widget packs architecture

The config system has been redesigned around "widget packs" - collections of related widgets that can be easily shared and managed together. This replaces the previous individual <name>.zebar.json file approach and enables the marketplace functionality.

Automatic migration: Your existing v2 configurations will be automatically upgraded to the new widget pack format when you launch v3. Note that downgrading to v2 is not supported after migration.

✨ Additional Features

  • Configurable logging verbosity with --quiet and --verbose CLI flags.
  • Support for fractional units in widget width, length, and offset (e.g. 90.5%).
  • New tauriWindow getter and close function on currentWidget for interacting with the underlying window.
    // Example: Auto-close widgets when they lose focus (perfect for calendar/volume popups).
    // Best used with "Focus on launch" option enabled for widgets.
    
    zebar.currentWidget().tauriWindow.listen("tauri://blur", () => {
      zebar.currentWidget().close();
    });
  • Added isMuted state and setMute to audio provider (#212).
  • Automatically switch between a light/dark mode theme based on system settings in glzr-io.starter config (#213).
  • Added error logging to a dedicated file at ~/.glzr/zebar/errors.log.

πŸ› Bug fixes

  • Fixed memory buildup from debug logs (#226).
  • Fixed z-order handling for always-on-top/bottom positioning.
  • Added missing isPaused to type definition of GlazeWmOutput (#222).
  • Fixed wm-toggle-pause command in glzr-io.starter config (#190).
  • Improved compatibility with proprietary VPN clients in network provider (#200).
  • Fixed stale values in keyboard provider (#197).

⚠️ Deprecations

// ❌ Old (deprecated)
const tauriWindow = currentWidget().window.tauri; 

// βœ… New
const tauriWindow = currentWidget().tauriWindow;

Big thanks to @HolbyFPV, @Katona, @Video-Nomad, @xytaglyph, @qwbarch, @5I-I5, and @mPyKen for contributing to this release πŸ’›

/ @lars-berger

v3.0.3 (preview)

22 May 18:24
Compare
Choose a tag to compare
v3.0.3 (preview) Pre-release
Pre-release

πŸ› Bug fixes

  • Fix issue where the logo image and marketplace thumbnails weren't getting displayed.
  • Update startup config correctly on toggle of "Run on start-up" in system tray menu.
  • Show error message when zebar publish fails.

Check out the prior release notes for more details on the v3 changes

v3.0.2 (preview)

22 May 17:56
Compare
Choose a tag to compare
v3.0.2 (preview) Pre-release
Pre-release
fix: remove correct startup config on toggle of "run on start-up"

v3.0.1 (preview)

21 May 10:19
Compare
Choose a tag to compare
v3.0.1 (preview) Pre-release
Pre-release

Finally ready for public testing πŸŽ‰

v3 introduces a marketplace where widgets can be published and downloaded. Check out the publishing docs if you want to share your creations.

The config has changed in order to make the marketplace possible. Instead of individual <name>.zebar.json files, v3 introduces "widget packs" which contain multiple widgets at once. Configs from v2 will be automatically migrated to the new format on launch.

A new systray provider has been added as well, which makes it possible to display your system tray icons (Windows-only). This took loads of reverse engineering to figure out - a huge thank you to @HolbyFPV. Docs


If you come across any bugs, please share them in the #zebar-dev channel on Discord. I'll try to get around to as many as possible, and then do a more formal release in a week's time.

v3.0.0 (preview)

21 May 09:30
Compare
Choose a tag to compare
v3.0.0 (preview) Pre-release
Pre-release
chore: revert overridden starter config changes

v2.7.0

27 Jan 16:01
df23221
Compare
Choose a tag to compare

πŸŽ‰ New features

Offline support (#141)

Zebar already works totally fine without an internet connections, but the current starter configs make web requests for their assets (e.g. CSS files, fonts, etc.). These requests will now be cached so that they don't have to be re-fetched on the next launch (also improving performance!). The default caching duration is 1 week and can be configured in the widget's settings.

Since some requests should not be cached, there's also a way to add rules for URL's that match a given regex. For example, if you make a fetch for stock market data or social feeds, you'd likely want to cache it for less time than something like a font file.

caching

Running shell commands (#160)

It’s now possible to run shell commands! This means you can now launch programs and scripts programmatically. There’s 2 new API’s:

  • shellExec - Executes a program and waits till exit. Returns its stdout, stderr, and exit status.
  • shellSpawn - Executes a program without waiting for exit. Allows for interaction with the spawned process (e.g. listening to stdout/stderr, writing to stdin, and killing the process).
import * as zebar from 'zebar';

const curl = await zebar.shellExec('curl', 'https://www.google.com');
console.log(curl.stdout);

const ping = await zebar.shellSpawn('ping', '127.0.0.1 -n 10 -w 3000');
ping.onStdout(output => console.log('stdout', output));
ping.onStderr(output => console.log('stderr', output));
ping.onExit(output => console.log('exit', output));

// Interacting with the spawned process:
ping.write('hello world!');
ping.kill();

Since shell commands can run destructive actions, there’s a UI to configure which commands a widget is allowed to run. This is mainly for the sake of an upcoming feature (see below!), so that if a widget is shared with others, they can check what shell privileges it uses.

shell

Other features

  • Add pause button to with-glazewm starter config (#180).
  • Make the text in the starter examples non-selectable (#176).

πŸ› Bug fixes

  • Export audio provider TypeScript types.

πŸ“˜ Docs improvements

  • Add docs for media provider functions.
  • Add docs for isPaused to glazewm provider (#182).

Upcoming feature: community/marketplace πŸš€

Currently in development is a new community/marketplace feature where you can download and run widgets that other people submit. Widgets would be uploadable through a community GitHub repo. And then through the settings UI, there will be a tab where all widgets are listed and instantly downloadable.

If you have ideas/feedback on the feature, drop a message in the #zebar-chat channel on Discord!


Big thanks to @HolbyFPV, @michidk, and @veryard for contributing to this release πŸ’›

/ @lars-berger

v2.6.1

03 Dec 08:21
Compare
Choose a tag to compare

πŸ› Bug fixes

  • Hotfix to crash due to paused state unavailable on glazewm provider.

/ @lars-berger

v2.6.0

02 Dec 19:52
Compare
Choose a tag to compare

πŸŽ‰ New features

Media controls (#158) - Docs

  • Full media playback control (play, pause, skip) for all active sessions in media provider.
    • play, pause, togglePlayPause, next, and previous.
  • Add all active sessions (not just the currently playing session) via allSessions.
media-functions.mp4

New audio provider (#154, #170) - Docs

  • List all audio input/output devices via playbackDevices, recordingDevices, and allDevices.
  • Get the default input and output device via defaultPlaybackDevice and defaultRecordingDevice.
  • Adjust the volume of a device via setVolume function.

New widget APIs

  • New startWidget function for programmatically starting a widget at a given position.
  • Access the underlying window via currentWidget().window.

Misc features

  • Add new system tray "Edit" menu option for quickly accessing widget config (#163).
  • Real-time widget count display in settings UI sidebar.
  • Unique widget window titles - allows targeting with GlazeWM window rules (#164).
  • Add binding mode toggle to with-glazewm starter configuration (#155).
  • New WM pause state in glazewm provider (#167).

πŸ› Bug fixes

  • Fix issue where CPU usage would sometimes get incorrectly reported as 100%.
  • Fix issue where keyboard and media providers would emit duplicate outputs (#162).

πŸ› οΈοΈ Internal changes

  • Add dev:local npm command (#171).
  • Structural changes to support functions on providers (#156).

Big thanks to @HolbyFPV and @michidk for contributing to this release πŸ’›

/ @lars-berger

v2.5.1

14 Nov 17:44
Compare
Choose a tag to compare

πŸ› Bug fixes

  • Hotfix to media provider for handling null sessions (#153).
  • Corrections to return types on new disk provider. Docs.

/ @lars-berger

v2.5.0

14 Nov 01:41
485b3bc
Compare
Choose a tag to compare

πŸŽ‰ New features

  • New media provider for currently playing media info like song, album, artist, etc. (#136). Docs
  • New disk provider for hard-drive and storage capacity info (#138). Docs
  • Config option to dock Zebar windows to monitor edge (#131, #150). Only available on Windows for now.
dock-to-edge.mp4
  • Set "Open settings" as the default system tray menu option.
  • Add allWindows to glazewm provider (#149).

πŸ› Bug fixes

  • Fix incorrect version number shown in system tray and CLI.

Big thanks to @HolbyFPV, @veryard, and @fooooooooooooooo for contributing to this release πŸ’›

/ @lars-berger

0