Repository navigation
Releases: pfoltynek/LayerPeek
Release list
LayerPeek 0.4.0
Added
- Always on top pin in the camera window (Windows and macOS): a pin button at the right end of the window buttons,
in the normal window and in the mini preview (not in full screen), shows and toggles "Always on top". When it is on,
the filled pin stays visible, dimmed, even without the mouse over the window; when it is off, the outlined pin
appears only with the other buttons. The picture's context menu has the same choice as Always on top, now also
in the mini preview (there it is its only item; the layout is still edited only in the normal window). A click
switches the window at once and saves the choice of that printer for the current mode (normal window or mini
preview), the same option as in the settings; an open settings window shows the new value and keeps your other
unsaved changes. If saving fails, the window goes back to the saved choice. The taskbar button (Windows) and the
Dock icon (macOS) follow the change as they do for the option in the settings. Screen readers announce the pin as a
toggle with its state, and it works with the keyboard. - Mini preview: a thin light grey outline around the borderless window (picture and strip), so that a dark preview
no longer blends into a dark desktop or window behind it. With the mouse over the preview it gets brighter, to show
that its edges can be dragged. Windows and macOS; the normal window and full screen are unchanged.
Changed
- The printer menu item that brings an open camera window to the front (added in 0.3.1 as Show camera) is now
called Bring camera to front in all languages, so that it no longer looks like the opposite of Hide camera
next to it. It works as before on Windows and macOS. - Windows: in the context menu of the camera window (right click, the Menu key or Shift+F10) the underlined letter
alone runs an item and closes the menu, as in the notification area menu and other Windows menus; Alt+letter still
works. macOS is unchanged.
Fixed
- Windows: choosing Bring camera to front in the notification area menu, or choosing Settings, Diagnostics or
About again while that window is open, now really brings the window to the front; before, Windows often refused and
the window stayed behind other apps (at most its taskbar button flashed). In the rare case that Windows still keeps
another app in the foreground, the window ends up right below that app, above all other windows. "Always on top"
of the window does not change, and a minimized window is restored as before. - Windows: after switching back to a camera window (e.g. with Alt+Tab), a window button pressed with Enter or Space
is treated as pressed from the keyboard again, so the keyboard focus stays in the row of window buttons instead of
being left on a button that has just hidden itself. - macOS: turning on "Always on top" of a camera window (with the pin, Space or Return) no longer leaves LayerPeek
inactive with no keyboard focus; the window keeps the focus, so Return on the pin turns it off again. - macOS: Control-click (left button with Control held, e.g. on a trackpad) in a camera window opens its context menu,
like a right click, instead of starting a window drag. - macOS: Command-period (⌘.) now works like Esc in all windows: it leaves full screen of a camera window, cancels
Settings and closes Diagnostics, About and Licenses.
Removed
- Windows ARM64 (
win-arm64): no longer planned. The release scripts refuse it and Windows is built and released as
win-x64only. No release ever shipped awin-arm64build.
LayerPeek 0.3.1
macOS 0.3.0: that version cannot update itself: drag the new LayerPeek.app from the 0.3.1 disk image over the old
one once (settings and saved passwords stay). From 0.3.1 on, LayerPeek updates itself.
Added
-
Update check (Windows and macOS): shortly after the start and then once a day LayerPeek asks GitHub whether a new
version was released (anonymously, one request a day). A newer version appears as New version X.Y.Z available in
the tray / menu bar menu (above About) and once per version as a notification. A click does the update: the
installed Windows version and LayerPeek.app on macOS download it, quit normally and start the new version; the ZIP
version and development builds open the release page. The Startup and updates tab has Check for updates
automatically (on by default), Offer pre-release versions (now also in the ZIP version and on macOS) and Check
now with its result next to it. A LayerPeek.app that runs straight from the disk image or Downloads is told to move
to Applications first. Failures (no network, the GitHub limit) are only logged. Settings:checkForUpdates
(older files load with the check on); what the check remembers is inupdate-state.jsonnext to the settings. -
macOS: the printer items of the menu bar menu show the printer's picture, like on Windows (the model illustration or
the custom picture, in colour, 18 × 18 points as macOS menus draw item images, made for Retina). -
macOS: keyboard shortcuts as on other Mac apps. Camera window: ⌃⌘F toggles full screen (F11, which macOS
reserves for Show Desktop and Mac keyboards send only with fn, stays as a fallback), and the full screen button and
the image description name ⌃⌘F. Settings: ⌘⇧] / ⌘⇧[ switch the tabs, ⌘⌥→ / ⌘⌥← the tabs of a
printer (Ctrl+Tab and Ctrl+PageDown still work). Every auxiliary window (Settings, Diagnostics, About, licences,
camera) closes with ⌘W, and ⌘. works like Esc (in Settings both are Cancel; with a drop-down list open in
Settings or Diagnostics, ⌘. first closes only the list, as Esc does). Windows is unchanged. -
Send test notification on the General tab of the settings (Windows and macOS): shows a sample notification
the way printer events are shown, with the sound unless Sound is set to Off (the choice shown in the window counts,
even unsaved), also while Show notifications is unchecked. A new test notification replaces the previous one, and a
click on it brings the settings window to the front on the General tab. The result is shown next to the button:
sent (with a hint to check Focus / Do not disturb if nothing appears) or failed. On macOS, when LayerPeek has not
asked yet, the button asks for permission first (macOS asks only once; after a denial the tab offers System Settings
→ Notifications). -
Windows: when LayerPeek's notifications are turned off in Settings → System → Notifications, the General tab says
so and offers to open that page (checked every time the settings window opens or comes back to the front, as on
macOS); when a policy of the organization turned them off, the tab says that instead. -
macOS: while a window is open (Settings, Diagnostics, About, licences, a camera window that is not always on top),
LayerPeek has a Dock icon and is in the ⌘Tab switcher, so a window that fell behind other apps can be brought back
(clicking the Dock icon, or the window list of its menu); with only always-on-top windows (the mini preview by
default) or no window it is back in the menu bar only. -
The menu of a printer with an open camera window (menu bar on macOS, notification area on Windows) has Show
camera, which brings the window to the front, restoring it when minimized; also a window that is always on top and
so has no Dock icon or taskbar button. -
Mini preview: the strip below the image shows when the print finishes, after a flag next to the remaining time:
"Done at 7:50 PM" when there is room, otherwise only "7:50 PM" (on another day of the week "Fri 7:50 PM"), and
in the narrowest window only in the tooltip. The time is never cut off. Only while printing (not while paused). -
Mini preview: after a print the bar on the top edge of the strip shows how far the nozzle has cooled down (blue),
and once it has cooled it is full and green and the strip says "Cooled down – safe to turn off" like the Cool-down
widget (in a narrow window "Cooled down · 48 °C"; the tooltip always has both). While cooling, a narrow strip drops
the word "Cooling down…" (the snowflake icon stands for it) before the estimate. -
Mini preview: choose what its info strip shows, per printer, under Mini preview at the end of the list on the
Widgets tab of the settings: the progress bar at the top, the percentage, the time remaining, the finish time, the
cool-down after printing, and the print name and temperature chart rows (all on by default, as before). The printer
state is always shown. A row that is switched off has no button in the strip, which leaves more room for the rest
(e.g. without the remaining time the finish time fits even the narrowest window); the tooltip names only what is on.
An open mini preview changes as soon as the settings are saved. Restore defaults and Use layout for all printers
include these choices. Settings: stored asprinters[*].camera.miniStrip(only the items that are off); older
settings files load unchanged.
Changed
- Settings: a field with an invalid value now has a red outline (2 px, also in the dark theme), so it is clear which
field "Fix the highlighted fields" means, e.g. the nozzle or the bed threshold of the Cool-down widget, which share
one message. After Save (and Apply of the camera window, and Test connection / Test camera refused
because of a field) the keyboard focus moves to the first invalid field, and screen readers (Narrator, NVDA,
VoiceOver) read its error as the help text of the field; a valid field gives its hint. The fields keep their size,
so the window still fits without scrolling. - Windows: Start automatically when I sign in to Windows is on by default: the installer switches it on. Updates
keep your choice (an existing installation does not change). - macOS: LayerPeek.app is packed and signed by Velopack (still ad hoc, with the hardened runtime and the entitlements of
0.3.0), so that it can update itself; the release also carries the Velopack package and update feed ofosx-arm64.
The.dmgand.tar.gzstay; there is no.pkg. - macOS: the help text of Open System Settings under Open at login (shown when LayerPeek is turned off in System
Settings > General > Login Items & Extensions) now only says to allow it there; saving again is not needed, because
an unchanged Open at login option takes over the state of macOS when the settings window comes back to the front. - Cool-down: a printer now counts as cooled down only when both the nozzle and the bed are at or below their
thresholds (before, only the nozzle decided). Each printer has a nozzle and a bed threshold, 40 °C each by default,
set in the Cool-down widget on the Widgets tab of the settings for the printer selected there, with Use
thresholds for all printers. The estimate ("about 6 min") and the progress bar follow the slower of the two. The
Cool-down widget names both thresholds, the "Printer cooled down" notification shows both temperatures, and the mini
preview strip shows the temperature that is still holding it up (both in its tooltip). A heater switched on again,
also the bed's, ends the cool-down. Settings: the former nozzle threshold is not taken over; every printer starts
with 40 °C / 40 °C (the log notes it once; older settings files still load). - Cool-down widget, small (S) size: while cooling, the temperature has the icon of its sensor in front of it (the
nozzle cone or a heated bed with heat waves, in their colours), so it is clear whether the nozzle or the bed is
holding the cool-down up. - Windows: a camera window has a taskbar button exactly when it is not always on top. With the default options nothing
changes (the mini preview is on top and has none); a normal window with "Always on top" now has no taskbar button, a
mini preview without it now has one. Changing "Always on top" of an open window may make it disappear and reappear
once (how Avalonia moves a window off the taskbar). - macOS: the camera mini preview with Always on top is now shown on every desktop (Space) and above apps in full
screen, like a picture-in-picture window. The normal camera window and full screen are unchanged; the preview without
Always on top stays on its desktop. - The small temperature charts in the camera window (the Temperatures widget and the chart row of the mini preview)
no longer look like flat lines: the nozzle and the bed each get their own band (nozzle on top, bed below), scaled to
their own values over the last 60 minutes with at least 6 °C, so a fluctuation of 1–2 °C is visible while sensor
noise is not. A target line is drawn only where it falls within its band. In the large (L) Temperatures widget
each band shows its range next to the chart (e.g. "212–218 °C"). The chart in the Diagnostics window keeps its axis
from 0 °C. Windows and macOS. - Update check of the ZIP version and of LayerPeek.app outside Applications: a release is offered only when it already
has the files of the operating system LayerPeek runs on (itsSHA256SUMS-windows.txt/SHA256SUMS-macos.txt), so
the Windows ZIP version is no longer told about a version that so far has only macOS files, and the other way round.
The installed versions (Velopack) already skipped such a release. - Releases: the Windows and macOS files of ...
LayerPeek 0.3.0
Added
- macOS (Apple Silicon):
LayerPeek.appwithout a Dock icon (menu bar only), ad-hoc signed, distributed as a.dmg
(drag the app to Applications) and a.tar.gz. The builds are not notarized: the first start has to be allowed in
System Settings → Privacy & Security → Open Anyway (see the README). - macOS: Open at Login in the settings (tab Startup and updates), using the system Login Items. Off by default.
When LayerPeek was turned off in System Settings → General → Login Items, the tab says so under the option (checked
every time the settings window opens or comes back to the front) and offers to open System Settings; saving then
reports that Open at login has to be allowed there. - macOS: windows opened from the menu bar (Settings, Diagnostics, About, camera) come to the front with the keyboard focus.
- macOS: the app icon follows Apple's app icon grid (a margin around the rounded square with Apple's continuous corners
and a soft drop shadow), so in Finder, Launchpad and System Settings it is as large as the other apps' icons; the 16
and 32 px sizes use the simplified design, like on Windows. The Windows icon is unchanged. - macOS: system notifications (User Notifications) with the same texts, sound setting and click target as on Windows; a
click opens the printer's web interface. macOS asks for permission with the first notification. When notifications
are turned off in System Settings, the General tab of the settings says so and offers to open System Settings →
Notifications. - macOS: the live camera stream (RTSP/H.264, e.g. Buddy3D). The app bundles its own LGPL build of FFmpeg 9.0.2,
compiled from the official source (software decoding), and needs no FFmpeg from Homebrew. The third-party licences
window links the source release and the build script used, at the release tag of the app version. Building on a Mac
for the first time needs the Xcode Command Line Tools (a clear build error says so when they are missing). - macOS 15+: the Local Network permission dialog explains why LayerPeek connects to printers and cameras on the local
network, in all eight app languages. When a connection to a printer or camera on the local network fails with
"no route to host" (what a denied permission looks like), the diagnostics window, the connection and camera tests
and the camera window say that Local Network access may be turned off in System Settings → Privacy & Security →
Local Network, and the log says so once per printer or camera. The diagnostics window, the connection test and
the camera test offer an Open System Settings button next to that message. - macOS: when LayerPeek starts while no display is active (display asleep, lid closed without a monitor, Open at Login
while the display sleeps), it waits and appears in the menu bar once a display wakes, instead of quitting at start.
Printer monitoring and notifications already run while it waits (a click on a notification opens the printer's web
interface); the menu bar item then shows the current state at once. Opening the app again while it waits does what
it always does (the last window or the settings) once the menu bar item is there. - Maintainers:
build/update-ffmpeg.ps1verifies a new FFmpeg version for both platforms before it is pinned (macOS:
official source tarball against the Homebrew formula and the GPG signature; Windows: the BtbN zip against the
release'schecksums.sha256, its folder, LGPL licence and libraries) and with-Updatewrites the pinned values. - macOS: the monitor chosen for a camera window is recognised by the display's persistent identifier, so the window
still opens on the right one of two identical monitors after macOS numbers them differently ("(1)", "(2)") at the
next start or reconnect, and on the built-in display after the system language changed.
Fixed
- macOS: the borderless mini camera preview can be resized with its edges and corners (the window follows the
pointer itself; macOS offers no resize for borderless windows there). The height follows the width when the edge is
released, as on Windows.
LayerPeek 0.2.0
Added
- Camera overlay widgets instead of a single text block: Status (printer name, state, progress), Times (remaining,
finish time, print time), Temperatures (nozzle and bed with a small chart), Print name (title and material chips
read from the PrusaSlicer file name, the G-code thumbnail and the slicer estimate) and Cool-down. Each widget can be
shown or hidden, has a size S/M/L and can be emphasized. - Layout mode in the camera window: drag the widgets to one of six anchors, change their size, reset to the default
layout. Works with the keyboard too. - New Widgets tab in the settings: visibility and settings of each widget, card background opacity, "Edit layout in
the camera window…", reset, and applying the layout to all printers. - Cool-down after a finished or stopped print: the Cool-down widget shows the nozzle and bed temperatures, the
progress to the threshold and an estimate, then "Cooled down – you can switch it off". An optional "Printer cooled
down" notification (off by default). The nozzle threshold is set per printer (default 50 °C) and can be applied to
all printers. - Mini preview info strip below the image (progress bar, percentage and remaining time) instead of text over the
image. The print name row and a temperature chart row can be expanded or collapsed right in the mini window and stay
as you left them. - The Settings and Diagnostics windows can be maximized and remember their size and maximized state.
Changed
- The camera overlay settings moved from the printer's Overlay sub-tab to the new Widgets tab. Existing overlay
settings (items and corner) are converted to the widget layout automatically. The settings file format is now
version 2. If you go back to LayerPeek 0.1.0, it only logs a warning and drops the widget layout when it saves the
settings. - Settings and Diagnostics windows are a little taller by default (780 × 532).
- Numbers and their units (
50 °C,2 h 35 min,960 × 540) are never split across lines.
Fixed
- The mini preview size box offers its own presets (320 × 180, 480 × 270, 640 × 360, 960 × 540). Before, the default
320 × 180 disappeared from the list once another size was picked.
LayerPeek 0.1.0
First public preview. Windows x64 only, PrusaLink only, builds are not code-signed.
The project was called Prusa Tray Diagnostic (PrusaTrayDiagnostic) during development and was renamed to
LayerPeek before this first release, so that the name does not start with the Prusa trademark. No earlier version was
released, so the app does not migrate anything; developers who ran the old builds can use the one-time script
tools/migrate-from-prusatraydiagnostic.ps1.
Added
- Tray-only app for Windows: the tray icon shows the printer state and print progress, and the tooltip shows the
details. - Monitoring of multiple printers over PrusaLink, with one combined icon and a submenu for each printer.
- Windows toast notifications for print events (started, finished, paused, resumed, stopped, error, attention,
offline, minutes remaining), with configurable sounds. - Diagnostics window with printer and firmware information, temperatures, fans, speed, flow and Z height, and a
temperature chart for the last 30 minutes, 2 hours or 24 hours. - Printer picture chosen by the printer model reported by PrusaLink, or a custom image.
- Camera window for RTSP/H.264 cameras (e.g. Buddy3D) through FFmpeg, with automatic reconnection and full-screen,
normal and mini (always on top) modes. - Camera overlay with configurable items (name, state, progress, temperatures, remaining time, finish time, print
time, file name) and corner. - Camera window settings for each printer: start mode, size, position, monitor and always on top.
- PrusaLink web opened already signed in through a local proxy. The password never reaches the browser.
- Settings window: printers, connection test, camera with a live preview, notifications, polling interval and
language. - Passwords stored in the Windows Credential Manager.
- Localization: English, Czech, Slovak, German, Spanish, French, Italian and Polish.
- App icon for the executable, the windows and the tray. On Windows 11 the tray icon is shown in the visible part of
the taskbar instead of the hidden-icons area. - File logging with a "Detailed logging (Debug)" setting. Unhandled exceptions are written to the log before the app
ends. - About window with the third-party licences and a "Report a problem" group: save a diagnostic bundle (ZIP without
passwords), copy a short report to the clipboard, open the log folder. - Single instance: starting the app again doesn't open a second tray icon.
- Native AOT publishing (single executable, no .NET runtime required).
- Windows installer (Velopack): installs for the current user without administrator rights, adds a Start menu
shortcut, and its uninstall removes the app's notifications, notification settings and system registrations (settings
and passwords stay). A ZIP is still available. - "Start automatically when I sign in to Windows" option (installed version only, off by default) and "Offer
pre-release versions" option in the new Startup and updates tab of the settings.
Fixed
- Settings, camera window positions and printer images are saved even when another program (antivirus, backup)
briefly holds the file. A detected printer model that still can't be saved is tried again every minute, up to five
times. - The monitor chosen for the camera window is found again after it is plugged into another connector, and its new
connector is remembered. A switched-off monitor is still not confused with an identical one next to it.
Security
- FFmpeg accepts only RTSP over TCP with H.264, nothing else.
- The PrusaLink web proxy rejects write requests from other origins.
- Native libraries are loaded only from the application folder and the system folder.