aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
6 hoursfeat(k1c): live camera stream instead of snapshotsHEADmasterDanilo M.3-22/+30
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>
6 hoursfeat(k1c): refresh the tab and camera every secondDanilo M.1-1/+1
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>
6 hoursfix(k1c): read the part fan from Creality's output_pin fan0Danilo M.2-2/+16
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>
6 hoursperf: load and mount panels in parallelDanilo M.1-16/+19
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>
6 hoursfeat: fold dashboard cards and a reload buttonDanilo M.4-3/+112
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>
7 hoursfeat: K1C printer tab and proper cards for switched-off sourcesDanilo M.11-12/+651
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>
7 hoursfeat: keep the tablet awake while the dashboard is shownDanilo M.1-0/+14
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>
7 hoursfix: window list flicker and icons missing from the icon themeDanilo M.3-6/+24
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>
7 hoursfeat: dashboard-only mode and keystone settings integrationDanilo M.11-88/+200
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>
7 hoursfix: follow UDT's font size and live theme changesDanilo M.5-29/+87
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>
20 hourschore: GPLv2-only license, docs and source headersDanilo M.43-23/+1081
20 hoursfeat: auto-below placement re-reads the live layoutDanilo M.2-0/+21
20 hoursfix: window focus and close must call hl.dispatchDanilo M.2-1/+7
20 hoursfeat: window rows get app icons and a close/move menuDanilo M.4-21/+198
20 hoursfeat: launcher icons follow the icon theme Keystone setsDanilo M.3-4/+26
20 hoursfeat: launcher icons come from the configured icon themeDanilo M.11-61/+54
21 hoursfeat: Windows tab shows all workspaces and icon-only launchersDanilo M.11-15/+110
21 hoursfix: wifi uses an explicit address and survives adb without mDNSDanilo M.1-3/+14
21 hoursfix: wifi_connect falls back to an already-connected TCP deviceDanilo M.1-0/+4
21 hoursfeat: long-press an OBS source to open its properties; fix server detectionDanilo M.5-11/+48
21 hoursfeat: center the tabs and swipe to switch themDanilo M.4-25/+28
21 hoursfeat: PWA manifest so Chrome installs deck-it fullscreenDanilo M.5-0/+26
21 hoursfeat: fullscreen toggle for the tablet browserDanilo M.4-2/+36
21 hoursfeat: paint the virtual monitor with the first monitor's swaybg wallpaperDanilo M.3-7/+60
21 hoursfeat: move Windows to its own tabDanilo M.4-3/+20
22 hoursfeat: opencode session spend and brand marks in the LLM cardDanilo M.7-8/+46
22 hoursfeat: LLM card shows current session models with section headersDanilo M.4-12/+87
22 hourschore: drop the unused build-card metric rulesDanilo M.1-3/+0
22 hoursfeat: tablet-first dashboard tiles and match the Hyprland border speedDanilo M.5-127/+188
22 hoursfeat: animate the UDT border gradient on the cardsDanilo M.3-3/+56
22 hoursfeat: build VM card shows the real stats dashboardDanilo M.4-52/+74
22 hoursfix: scope music and build panels so their layouts applyDanilo M.3-13/+19
22 hoursfeat: tabbed layout with OBS as an icon-forward stream-deckDanilo M.5-118/+336
22 hoursfeat: card headers, music art/seek, clearer build cardDanilo M.10-58/+232
22 hoursfix: use OBS's stored password and explain auth failuresDanilo M.5-4/+58
22 hoursfix: aggregate opencode rows from /api/summaryDanilo M.3-6/+45
22 hoursfeat: Intel xe GPU stats (temp, fan, VRAM)Danilo M.5-40/+94
22 hoursfeat: vendored Gridstack for drag and free grid resizeDanilo M.7-107/+87
22 hoursfeat: browser-local panel move and resizeDanilo M.3-5/+122
23 hoursfix: user-space autostart watch-usbDanilo M.1-25/+27
23 hoursfix: add stats, music and windows panelsDanilo M.8-29/+207
23 hoursfix: OBS idle timeout, payload validation, workspace listDanilo M.10-12/+95
23 hoursfeat: sb-builder status panelDanilo M.3-0/+48
23 hoursfeat: sb-builder status moduleDanilo M.2-0/+65
23 hoursfeat: llm usage panelDanilo M.4-11/+83
23 hoursfeat: llm-cost-dashboard relay moduleDanilo M.2-0/+78
23 hoursfeat: OBS stream-deck panelDanilo M.3-0/+124
23 hoursfeat: OBS stream-deck moduleDanilo M.4-0/+202
23 hoursfeat: obs-websocket v5 clientDanilo M.2-0/+128
23 hoursfeat: windows moduleDanilo M.2-0/+115