feat(studio): Cmd+K palette, recent-activity panel, icon/screenshot rendering (v0.21.0)
Three sweeps in a single bundle. Universal command palette (⌘K / ctrl+K): - Modal at top-of-window with a single search input. Indexes pages, installed modules, store entries, saved flows on open; filters client-side as the operator types. - Keyboard nav (↑/↓ + Enter), grouped sections, hover-to- highlight. Hit selection navigates / opens the right surface in one keystroke. Closes with Esc. - Designed to mirror the VSCode / Linear / 1Password ergonomics — gives non-CLI operators a "jump anywhere" affordance that scales with the number of installed modules. Modules page recent-activity panel: - Top-of-page strip lists the last 10 install / uninstall events from the audit log, color-coded by direction. Hidden when no relevant events exist (fresh installs). Same locale-unambiguous timestamp format used in audit. Store detail sheet now renders icons + screenshots: - `_ModuleIcon` widget loads the explicit `iconUrl` if provided, falls back to the category glyph on missing URL or load failure (no broken-image rectangle). - Screenshots strip below the description: 320×200 tiles, horizontally-scrollable, click opens full-size via the OS handler. Placeholder card on load failure. StoreItem extended with `iconUrl`, `screenshotUrls`, `docsUrl` so the new content paths through unchanged. Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
parent
fb7352d182
commit
11b0ac97a1
7 changed files with 803 additions and 30 deletions
|
|
@ -391,6 +391,9 @@ class HubService {
|
|||
status: e.status,
|
||||
installed: e.installed,
|
||||
featured: e.featured,
|
||||
iconUrl: e.iconUrl,
|
||||
screenshotUrls: e.screenshotUrls,
|
||||
docsUrl: e.docsUrl,
|
||||
),
|
||||
)
|
||||
.toList();
|
||||
|
|
@ -1065,6 +1068,16 @@ class StoreItem {
|
|||
/// featured (curated quarterly in the bundled seed.yaml).
|
||||
/// Drives the "Featured" strip at the top of the Store page.
|
||||
final bool featured;
|
||||
/// Optional icon URL — square PNG / SVG. Empty for entries
|
||||
/// that don't supply one; UI falls back to a category icon.
|
||||
final String iconUrl;
|
||||
/// Ordered list of screenshot URLs; empty when none. Studio
|
||||
/// renders them as a horizontally-scrollable strip in the
|
||||
/// detail sheet.
|
||||
final List<String> screenshotUrls;
|
||||
/// Explicit docs URL override. When empty, the hub falls back
|
||||
/// to the well-known raw-README paths off [repository].
|
||||
final String docsUrl;
|
||||
|
||||
const StoreItem({
|
||||
required this.name,
|
||||
|
|
@ -1082,5 +1095,8 @@ class StoreItem {
|
|||
required this.status,
|
||||
required this.installed,
|
||||
required this.featured,
|
||||
required this.iconUrl,
|
||||
required this.screenshotUrls,
|
||||
required this.docsUrl,
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue