Skip to content

Redesign panel activity feed and fix attribute list editing UX#2574

Merged
glennjacobs merged 1 commit into
2.xfrom
feat/panel-activity-and-attribute-ux
Jul 21, 2026
Merged

Redesign panel activity feed and fix attribute list editing UX#2574
glennjacobs merged 1 commit into
2.xfrom
feat/panel-activity-and-attribute-ux

Conversation

@glennjacobs

Copy link
Copy Markdown
Contributor

Panel UI tweaks to the record edit pages (products, variants, brands, product types, collections, customers).

Activity timeline

  • Per-user avatars (Gravatar, with a colour-keyed initials fallback) replace the event-type icons; rows lead with the actor, show relative time, and a See all link to the filtered activity log.
  • "What changed" is now accurate:
    • Empty-aware comparison drops logOnlyDirty false positives (e.g. an unchanged status cast) and empty JSON shapes ([] vs {"specs":[]}).
    • attribute_data is diffed per attribute handle, so the feed names the attributes that actually changed instead of a vague "Attributes".
  • The activity→array mapping is centralised in a new TimelineActivity support class (was duplicated across six controllers).

Gravatar

  • Shared Gravatar helper (d=404 so a missing Gravatar falls back to initials rather than a placeholder image).
  • Also applied to the logged-in user in the profile menu; the avatar URL now rides the shared auth prop.

Attribute list field

  • Plain lists render an always-present trailing input: typing adds an entry inline (dirty-on-type), no + button; empty rows are pruned on blur. This removes the empty-list "I typed but nothing saved" trap.
  • Keyed lists auto-commit a complete key+value draft on blur (Enter / + still work).

i18n

  • Adds side_activity_see_all / activity_see_all across all 16 locales.

Tests

  • New TimelineActivityTest (change detection) and additional AttributeFields cases (empty-list append, blur prune, keyed auto-commit).
  • Verified locally: Pint, PHPStan, vue-tsc, npm run build, 210 vitest, 680 panel PHP tests.

🤖 Generated with Claude Code

Activity timeline (sidebar on product/variant/brand/product-type/collection/
customer edit pages):
- Show per-user avatars (Gravatar with an initials fallback) instead of
  event-type icons, actor-led rows, relative time, and a "See all" link.
- Report only fields that genuinely changed: empty-aware comparison drops
  logOnlyDirty false positives (unchanged casts) and empty JSON shapes
  ([] vs {"specs":[]}), and attribute_data is diffed per handle so the feed
  names the actual attributes that changed.
- Centralise the activity->array mapping in a TimelineActivity support class.

Gravatar:
- Extract a shared Gravatar helper (d=404 so missing avatars fall back to
  initials) and use it for the logged-in user in the profile menu too.

Attribute list field:
- Plain lists render an always-present trailing input, so typing adds an entry
  inline (dirty-on-type) with no + button; empty rows pruned on blur. This
  removes the empty-list "type but nothing happens" trap.
- Keyed lists auto-commit a complete key+value draft on blur.

Adds side_activity_see_all / activity_see_all across all 16 locales.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-project-automation github-project-automation Bot moved this to Todo in Roadmap Jul 21, 2026
@glennjacobs
glennjacobs merged commit a7df861 into 2.x Jul 21, 2026
23 checks passed
@glennjacobs
glennjacobs deleted the feat/panel-activity-and-attribute-ux branch July 21, 2026 17:47
@github-project-automation github-project-automation Bot moved this from Todo to Done in Roadmap Jul 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant