Repository navigation
docs(spec): Content Drive grid view as an alternative to the table - #37959
Conversation
…37930) Spec-Kit PR 1 of 2: the feature spec alone, for review and approval before planning. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Claude finished @rjvelazco's task in 1m 36s —— View job Spec review: Content Drive grid view (#37930)This PR adds only
Reviewer points — now addressed
Verified against code
Worth flagging for the plan (non-blocking)
Verdict: the spec reads cleanly, follows the Spec-Kit format (prioritized stories, numbered FRs, Legacy Considerations), and every reviewer point is resolved. The two notes above are plan-level reconciliations, not blockers. No code and no secrets in the diff. |
nicobytes
left a comment
There was a problem hiding this comment.
Spec review: Content Drive grid view (#37930)
This PR only adds specs/37930-content-drive-grid-view/spec.md, so this is a review of the spec, not of code. I read it in full and cross-checked it against the keyboard shortcuts spec (#32591) and the Content Drive store.
Verdict: solid spec; a few changes requested before approval (1 Important to fix, 2 more to clarify). Prioritized stories, testable Given/When/Then scenarios, numbered FRs and edge cases are all in good shape. Nothing here changes the approach.
Critical
None.
Important
-
spec.md:255-257(US6 AC3 / FR-023): "after a reload the grid keeps the sort order".
Indot-content-drive.store.ts:92the sort starts atDEFAULT_SORT, and I found no persistence of it in the URL or in storage (onlypath,filtersandisTreeExpandedare read fromqueryParams,:667-689). If that holds, the table does not keep its sort on reload either, so this AC would require new behavior or is simply false. My search was not exhaustive, so please confirm.
Fix: if the table does not persist it, reword to "keeps the sort currently in effect, as the table does". If persistence is wanted, declare it as new scope (it affects the table, which contradicts "leave the table unchanged"). -
spec.md:309-310and:415(FR-032 / US7 AC10): "Enter or Space does what it does on a focused table row".
#32591 (:355) says Enter and Space are already claimed by row selection, so in the table they do not open the item. In the grid, US5 opens items by double-click or title click, but there is no keyboard counterpart.
Fix: state what Enter/Space do on a card (toggle selection), and how a keyboard-only user opens an item. This also affects SC-007 ("reach, move through and select any card without the mouse"). -
spec.md:324-329, 426-427and the PR notes: backend dependency for the owner without a constraint.
Items carry the owner as a user id only. Name, email and Gravatar may need backend changes to the Drive search. Resolving owners must be bounded per page (batched, never one request per card) and must never block rendering.
Fix: add that constraint to Assumptions or Key Entities, and mark the backend work as an open question for the plan.
Suggestions
- Click semantics (
:154-156vs:381-384): say explicitly that a body click replaces the selection while the checkbox toggles it. A double-click also fires two selection clicks before opening; a criterion for that case would help the tests. - Gravatar (FR-007): a page of cards multiplies the Gravatar lookups the toolbar does for one user. A line on de-duplicating/caching per owner, and on air-gapped installs, would help.
- Weak measurables: SC-001 ("1 second") names no dataset or percentile. SC-002 fixes 4 and 3 columns but the card width is not defined in the spec, so it cannot be verified. US2 AC4 (one card per row) coexists with "never wider than the shared size"; state the minimum card width.
- Size: 479 lines is large, but it is one logical unit and the 7 stories give a natural split for the plan. No need to divide it.
- Nit: the "item busy with a running bulk action" example is repeated in US3, US7 and FR-014/031; reference it once.
Verification
- Follows the Spec-Kit format (prioritized stories, numbered FRs, Legacy Considerations).
- No code, no secrets.
- I did not check CI status or other reviews, only the content.
nicobytes
left a comment
There was a problem hiding this comment.
Clarification questions (follow-up to the review above)
Five open questions that would change tests or UX if left unanswered. Each has a suggested answer; none are blocking if the author agrees with the suggestion.
-
Which user is "the owner"? (
spec.mdFR-006/FR-007, Key Entities) Is it the item's creator, or the last editor, and is it the same field the table's user/owner column shows today?
Why it matters: the avatar, the hover name and the Gravatar lookup all depend on it, and the grid must not disagree with the table.
Suggested: the same field the table shows. -
Do non-image files (PDF, video, documents) get a preview, or the type icon? (FR-008/FR-009, Assumptions "same image as the table's thumbnail")
US1 AC3 says "image asset, or content whose image field holds one", while the Assumptions say "whatever the table shows as a thumbnail". These can differ.
Suggested: only what the table already treats as a thumbnail; everything else shows the type icon. -
Can keyboard and touch users reach the owner name and creation date? (FR-006, FR-027)
They are shown on hover only, and nothing else on the card shows them.
Suggested: also reveal them on keyboard focus of the avatar, and on tap for touch. -
What are the card's fixed width and image height (or its min/max)? (FR-011/FR-012, SC-002, US2 AC4)
SC-002 requires at least 4 cards at 1920px and 3 at 1280px, which cannot be verified without a card size; US2 AC4 also needs a minimum width.
Suggested: take it from Content Search's card view, so the two views match. -
After switching views, where do focus and scroll go? (FR-002, FR-028)
FR-002 keeps selection, page and sort but says nothing about the focused item, the anchor, or scroll position.
Suggested: keep the focused item (and anchor) if it is on the page, and scroll it into view; otherwise fall back to the single Tab stop.
Deferred (plan-level, not spec): how owners are resolved per page (already raised in the review), and where the remembered-view key lives in browser storage.
…37930) The card shows the editor and last-edited date the table shows, not owner and creation date. Videos get a still frame. Enter/Space select, as in the table, with keyboard open left to a follow-up. A reload resets the sort in both views. Cards are at least 260px wide, as in Content Search. Editor lookups are batched per page and never block drawing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks @nicobytes, all addressed in b21a10c. Each answer is also recorded in the spec's Clarifications (Session 2026-10-09, PR #37959 review). Important
Suggestions
Clarification questions
Also tidied from the bot review: the Input paragraph no longer reads as if 🤖 Replied by Claude on behalf of @rjvelazco |
…37930) Cards drop the date and show only the last editor's avatar, with full title, editor name and content type on hover. Cards carry the lock marker and a hover "more actions" menu like the table, keep the busy row treatment, and show skeleton cards while loading. The Gravatar reuses the toolbar's directive. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Spec-Kit PR 1 of 2: this PR carries
spec.mdalone. It needs another dev's approval (not a merge) before/speckit-planruns. PR 2 will branch from here with the implementation.Spec for #37930.
Proposed Changes
specs/37930-content-drive-grid-view/spec.md, the feature spec for Add a grid view to Content Drive #37930.The feature, in short
Content Drive only has a table. This adds a grid view beside it, matching the card view Content Search already has. A two-button switcher beside the search box toggles between the views. Switching keeps the folder, filters, sort, page and selection, and the browser remembers the choice.
Each card shows an image, or the item's type icon when it has no image or the image can't load. Below the image are the title and status badge, then the owner's avatar, the language and the content type. Titles stay on one line, every card is the same size, and the grid fits as many cards per row as the width allows.
Cards act like table rows: click to select, Shift- or Ctrl/Cmd-click to extend the selection, double-click or title click to open. The right-click menu, drag to move, drop to upload and pagination all work as they do in the table.
Decisions recorded in the spec (Clarifications, 2026-10-08)
dataViewModeis out of scope. Content Drive is not opened from custom tools today, so it never receives that value. Reading it from the portlet config is a separate ticket. Until then, the Drive opens in the user's remembered view, or the table.Worth checking before approving
🤖 Generated with Claude Code
This PR fixes: #37930
This PR fixes: #37930