| Age | Commit message (Collapse) | Author | Files | Lines |
|
The camera was a snapshot reloaded on every poll. It is now the
webcam's MJPEG stream_url, which an <img> plays by itself at the
camera's own rate (15 fps on the K1C). The stream connects only while
the K1C tab is on screen and the page visible, and disconnects
otherwise, so a hidden tab does not keep the printer streaming. A
dropped stream hides the image and reconnects on the next poll. The
image is shown as soon as its source is set, since a never-ending
stream may never fire load.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The camera snapshot reloads once per poll, so the 2s interval made it
choppy. A skipped reload while one is still loading keeps a slow
snapshot from piling up requests.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Creality's K1C firmware drives the part cooling fan as `output_pin fan0`
and reports the standard `fan` object with speed null, so the tab showed
no fan speed. The standard object still wins when it has a value.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Boot imported, mounted and awaited the first poll of each panel in turn,
so one slow source (the build VM over ssh, a printer that is off) held
back every panel after it, and tabs appeared one by one. All panel code
is now imported at once, panels mount in the server's order so cards and
tabs do not shuffle, and first polls run without being awaited.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Each Dashboard card gets a fold button in its title bar. Folded, it
shrinks to one grid row ending at the title bar and cannot be resized;
its height is kept in localStorage (deckit.folded) and restored on
unfold. The grid floats, so nothing moved into the rows a folded card
gave back: cards below it in its columns are pulled up as far as the
space is free, on fold and again once every card has mounted, since a
card restored folded from storage never folds at runtime. Unfolding
needs no mirror; the grid pushes down whatever the regrown card hits.
The installed web app has no browser chrome and so no pull-to-refresh,
which left no way to load new page code on the tablet. A reload button
sits at the top right; JS and CSS are served no-store, so it always
fetches the current code.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
A K1C tab follows a Klipper printer through Moonraker ([k1c] url):
state, file, progress with elapsed, left and finish time, layer, the
slicer's model thumbnail, nozzle and bed with target and power, fan,
speed, position, filament, and the camera snapshot. It is read-only bar
one action, the emergency stop (M112), behind a press-and-hold button so
a stray touch on an always-on tablet cannot kill a print. Klipper being
down (after a stop) shows its message in a red banner.
The printer is often off, so a failed poll backs off 10s instead of
costing every tick a timeout. File metadata is fetched once per job; the
slicer's estimate covers the start of a print until the file-position
estimate settles. The tablet loads the camera and the thumbnail straight
from the printer, so both need it on the printer's LAN.
OBS, the build VM and LLM usage showed raw text when their source was
off ("OBS offline: [Errno 111] ..."). They now share static/offline.js:
a greyed app icon, what is off, what brings it back, and a pulsing
"checking" note, with the raw error in the tooltip. OBS hides its empty
blocks while off. The card is not rebuilt on every poll.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The page takes a Screen Wake Lock while visible and again whenever it
comes back to the front, so the tablet neither dims nor starts its
screensaver over the dashboard. It changes no tablet setting, and the
screen goes back to its own timeout when the page is hidden. 127.0.0.1
is a secure context, which the API requires.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The Windows tab rebuilt every row once a second, and each rebuild walked
every window icon through its fallback names again, so the rows blinked.
It now re-renders only when the state changed.
Icon lookup only searched the configured theme, so an app the theme
lacks (pcmanfm-qt under candy-icons) lost its icon and showed its label.
It now falls back to hicolor, as the icon theme spec does, in hicolor's
size/category layout.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The second display is now optional: [display] enabled = false skips the
headless output, wayvnc, AVNC and the VNC tunnel, so the tablet runs the
dashboard alone. `deck-it env` reports it as EXTEND.
Keystone's new deck-it page (quickshell, desktop/modules/deckit) edits
the config and the autostart line, which needed:
- The user config is merged over the shipped config.toml key by key
within each table instead of replacing it whole, so the page writes a
sparse file and an unset key falls back to the default.
- `deck-it defaults` prints the shipped config as JSON for the page's
placeholders, so keystone never copies the defaults.
- `deck-it status` prints one JSON line (server, display, waiting,
tablet, extend) for the page's status line and restart check.
- [launch] is now `apps`, a list of desktop ids run with gtk-launch,
with name and icon read from the .desktop file, so the page can pick
launchers from the installed apps. The old command tables are gone;
the client still sends only an id, which must be listed and installed.
A launcher whose icon the theme lacks shows its name.
- [wifi] address gives the tablet's address in config. The last address
that worked is kept in ~/.config/deck-it/last-wifi: `stop` deletes the
runtime serial file, so a restart from the page used to wait forever.
- `stop` also ends a login's `wifi --wait`, matched by its own command
line only, so repeated restarts do not pile up waiters.
Also fixed: `deck-it env` fell through into the usage text, and the
usage text printed the license header since the header was added.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
UDT gives font sizes to keystone's fonts page, which writes
~/.config/keystone/fonts.json. deck-it hardcoded px sizes, so changing
the size on the fonts page did nothing on the tablet. theme.css now
carries --udt-font-size (override.deckit, else base, 8 to 40px, as
quickshell checks) on html, and deck.css sizes text in rem, scaled from
the old 14px design.
The page loaded theme.css once, so a scheme, wallpaper or size change
reached the tablet only after a reload. The shell now re-reads it every
5s and on visibility, swapping it into a <style> only when it changed,
and sets meta theme-color from --udt-base instead of Macchiato's
hardcoded base.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|