mirror of
https://github.com/penpot/penpot.git
synced 2026-05-11 19:13:49 +00:00
The workspace Actions history panel previously showed the operation icon and a one-line message for each undo entry with no indication of when the action happened, any stable way to refer to it, or who made the change. The reporter of issue #7660 (and @Takhoffman's follow-up comment) asked for a git-like display: `<hash> · <time> by <name>`. This change stamps each undo entry with its creation timestamp and author at the moment it lands on the undo stack and surfaces three extra pieces of information in the history sidebar: - A short 7-character identifier derived from the entry's existing `:undo-group` UUID. Hovering shows the full UUID. - A relative timestamp (e.g. `just now`, `5 minutes ago`, `2 hours ago`, `3 days ago`) rendered via `app.common.time/timeago` so it matches the formatting already used for comments and the dashboard. - The display name of the profile that created the entry, rendered as `by <Name>` in the same metadata row. The undo stack is client-side per profile, so every entry is always the current user; the author is stored on the entry anyway so the UI does not need to reach into profile state while rendering and so the data stays correct if the stack shape ever changes. Changes at a glance: - `data/workspace/undo.cljs`: extend `schema:undo-entry` with an optional `:timestamp` and `:by`; new `profile-display-name` helper that falls back from full name to email to nil; `stamp-entry` now takes state and fills in both fields on entries that do not already carry them. Pre-stamped entries (e.g. coming out of an accumulated transaction) keep their original values. - `ui/workspace/sidebar/history.cljs`: propagate `:timestamp`, `:undo-group`, and `:by` through `parse-entries`; add `short-id` helper; render the metadata row in `history-entry` using `app.common.time/timeago` against `:timestamp`; skip the author span entirely when `:by` is nil. - `ui/workspace/sidebar/history.scss`: styling for the new metadata row (monospace hash, muted separator, truncated time/author). - `translations/en.po`: 1 new string for `by %s`. Existing undo entries created before this change have neither timestamp nor author; the UI is defensive about both, so old entries simply render with whatever data they have (and often the plain title on its own). Github #7660 Signed-off-by: FairyPigDev <luislee3108@gmail.com> Signed-off-by: FairyPiggyDev <luislee3108@gmail.com> Co-authored-by: Andrey Antukh <niwi@niwi.nz>