mirror of
https://github.com/HeyPuter/puter.git
synced 2026-10-25 16:21:54 +00:00
Notify HeyPuter / notify (push) Canceled after 0s
release-please / release-please (push) Canceled after 0s
Backend Tests / changes (push) Canceled after 0s
Backend Tests / typecheck (push) Canceled after 0s
Backend Tests / test shard 1/4 (push) Canceled after 0s
Backend Tests / test shard 2/4 (push) Canceled after 0s
Backend Tests / test shard 3/4 (push) Canceled after 0s
Backend Tests / test shard 4/4 (push) Canceled after 0s
Backend Tests / test (main) (push) Canceled after 0s
Backend Tests / coverage (push) Canceled after 0s
Maintain Release Merge PR / update-release-pr (push) Canceled after 0s
* chore(dashboard): add the standard file header where it was missing * fix(dashboard): rename editor keeps entity-like names; rows follow remote renames The name editor decoded its already-decoded value a second time, so opening it on a file such as "R&D.txt" and clicking away renamed it to "R&D.txt". A rename or update from another tab only patched a row's attributes, while its open/copy/share handlers kept using the entry they were rendered with; the row now keeps that entry current and refits its name. * fix(dashboard): Files selection, preview and Trash/Shared edge cases - A marquee drag without modifiers now replaces a selection made by click, Ctrl+A or the arrow keys instead of adding to it. - With the image preview open, clicking another image switches to it, and moving onto a non-image closes it instead of keeping the old image up. - Cut (Ctrl+X, multi-select menu) skips trashed items, which leave the Trash through Restore; Ctrl+V refuses the Trash and the Shared view like the Paste menu item does. - Drops on the Shared sidebar entry or breadcrumb are refused (the drag snaps back) instead of sending writes to a path that isn't a folder. - The Trash selection bar shows Delete permanently again after a selection elsewhere had hidden it. * fix(dashboard): keep an open rename across refreshes; re-sort renamed rows A same-folder refresh (an upload or paste finishing, a sort change) rebuilt every row and silently dropped a rename in progress; the editor now comes back on the same item with the text and caret the user left. A renamed row whose new name sorts last stayed where its old name was. * fix(dashboard): Files columns follow the room the listing has - Resizing a column past the listing's width clamps it instead of resetting every column to the defaults; a window too narrow for the saved widths lays out at the defaults but keeps the saved widths for when it widens. - Columns and grid names re-fit when the window or sidebar resizes the listing, not only on the next navigation, and grid names hidden behind another tab are fitted when the Files tab is shown. - Names are measured in the font they render in (the compact grid's is smaller), and a column drag relayouts at most once a frame. * fix(dashboard): Files keyboard and touch edge cases - The marquee selects file rows only, not the Shared/Trash place rows Home shows on narrow screens. - Row shortcuts stand aside while the touch action sheet is open. - Breadcrumb long-press opens its menu on iPadOS too. - A folder rendered before the saved view preferences load uses the defaults instead of throwing and blocking navigation. * fix(dashboard): share and properties modals — focus, Escape, link state Share modal: - Escape pressed in a window opened over the modal (a verification or upgrade gate) no longer closes the modal underneath. - Turning the link on or off for a selection too large to list now shows the result instead of leaving the control on its old state. - Opening the link up starts at view access; it no longer reuses a hidden mode left over from earlier, which could hand out edit access. - Focus returns to the select the user changed. Properties modal: - Takes focus when it opens, keeps Tab inside, gives focus back on close, and leaves Escape to a window opened over it. - Shows a loading state, and opening Versions on a folder before its details load no longer leaves an empty body. - Disassociate is a real button, ignores repeat clicks while pending, reports a failure, and keeps the website badge while other sites remain. - Tabs carry tab/tabpanel roles; transitions respect reduced motion. * fix(dashboard): account dialogs, avatar saves and usage figures - A form dialog ignores Escape and backdrop clicks while its request runs, so the outcome isn't lost behind a closed dialog; the close button still works. - A new API token, shown only once, survives a stray click outside the card. - Copy token works on origins without navigator.clipboard (plain-http self-hosts) instead of throwing, falling back to a selected field. - Saving one profile picture and then another before the first finished can no longer leave the first one's picture or failure on screen. - The storage host bar is clamped to the room left beside Puter's share and hides its label when there is no host figure. - Sub-cent dollar costs read "<$0.01" rather than "$0.00", and the usage meter reads 99% until the allowance is actually spent. * fix(dashboard): Apps folder drag, search, keys and loading - A drag inside an open folder that is cancelled (Escape, blur) or dropped back in place puts the tiles back in their saved order; the cached panel markup used to skip the rebuild, and the next drag then saved the cancelled move too. - Search no longer matches substrings of generated app ids, so "app" or a single hex letter stops returning every website shortcut. - Arrow keys and Enter stay with the notifications panel, an account dialog or the touch action sheet while one is open over the grid. - The grid shows after 1.5s even if an icon host never answers. - Refreshing a grid already on screen keeps the page and skips the fade. - Rename from a folder's menu focuses the name on touch devices too, and the folder dialog's label follows renames and counts the apps shown. - i18n inserts %% values literally, so a name containing $& or $' no longer comes out mangled. * fix(dashboard): shell navigation, a11y and notification sync - Missed notifications replayed on load toast as one burst (a few, then a summary) instead of one toast each. - A notification read in another tab while this tab's first listing is in flight is no longer shown as unread when that listing lands. - Focus stays in the notifications panel when Mark all read or Retry hides the button that had it. - The active sidebar tab carries aria-current, and the account button is named by the username even while the collapsed sidebar hides it. - Landing with ?ref= replaces the history entry, so one Back leaves. - Ctrl/Cmd/Shift-click on a sidebar tab opens it in a new browser tab. - Recently used keeps the newest list when refreshes overlap, and app names are URL-encoded in the links it opens. * fix(dashboard): focus rings, dark-mode contrast and reduced motion - App tiles show a focus ring, not only the hover enlargement; Home card headers get an inset ring the card's rounded clip can't cut off; the Delete account button gets the settings cards' ring. - Pager arrows are mouse-only (the dots page by keyboard), so invisible arrows are no longer Tab stops, and an arrow with no page leaves the accessibility tree. - Dark mode: the Files toolbar's action icons match the nav arrows and stay readable on the hover chip, hovered breadcrumbs keep their contrast, and the shared-item dot's ring follows the row background. - The row '⋯' button is visible at rest on touch screens. - A long username or email wraps inside the profile card. - The touch action sheet, the Files selection bar and the app feedback modal stop scaling/sliding under reduced motion. * fix(gui): desktop rows store remote renames raw; column resize stays in bounds - The desktop's item.renamed/item.updated handlers wrote HTML-escaped names into data-name, the title and the name editor (and titled windows by an undefined uid). They store the raw name now, as rename_file does, so the editor shows the real name now that it no longer decodes a second time. - Resizing a Files column while saved widths are too wide for the listing starts from the widths on screen, and a width is held at its column's minimum, so a drag or auto-fit can't save a negative width. - Double-clicking a row closes the image preview, which would otherwise float above the app window it opens.