aimeat 1.16.2 → 1.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.env.example +6 -1
- package/dist/locales/en.json +166 -4
- package/dist/locales/fi.json +166 -4
- package/dist/public/components/Card.js +17 -3
- package/dist/public/components/Collapsible.js +39 -0
- package/dist/public/components/CopyButton.js +55 -24
- package/dist/public/components/DataTable.js +57 -0
- package/dist/public/components/EmptyState.js +28 -0
- package/dist/public/components/KeyValueRow.js +37 -0
- package/dist/public/components/Modal.js +22 -5
- package/dist/public/components/Pagination.js +70 -0
- package/dist/public/components/SearchBar.js +44 -0
- package/dist/public/components/StatusDot.js +29 -0
- package/dist/public/components/TagList.js +53 -0
- package/dist/public/components/ToggleSwitch.js +28 -0
- package/dist/public/components/index.js +41 -1
- package/dist/public/css/components/tags.css +24 -0
- package/dist/public/css/style-testbed.css +135 -0
- package/dist/public/css/theme.css +556 -34
- package/dist/public/css/views/admin-agent-integration.css +2 -33
- package/dist/public/css/views/admin.css +730 -686
- package/dist/public/css/views/agents-detail.css +402 -14
- package/dist/public/css/views/help.css +2 -1
- package/dist/public/css/views/hobbies.css +53 -33
- package/dist/public/css/views/marketplace.css +73 -60
- package/dist/public/css/views/openclaw.css +12 -6
- package/dist/public/css/views/portal-classic.css +34 -26
- package/dist/public/css/views/portal-dev.css +41 -32
- package/dist/public/css/views/portal.css +14 -18
- package/dist/public/css/views/profile.css +252 -164
- package/dist/public/css/views/public-knowledge-viewer.css +18 -6
- package/dist/public/css/views/scheduler.css +100 -0
- package/dist/public/js/format.js +41 -0
- package/dist/public/js/services/agent-tasks.js +14 -1
- package/dist/public/js/services/generator-spec-validate.js +5 -1
- package/dist/public/js/services/schedules.js +53 -0
- package/dist/public/js/style-testbed.js +170 -0
- package/dist/public/js/theme.js +114 -0
- package/dist/public/spa.html +74 -16
- package/dist/public/style-testbed.html +420 -0
- package/dist/public/views/admin/agent-integration-tab.js +23 -38
- package/dist/public/views/admin/agent-tasks-tab.js +14 -21
- package/dist/public/views/admin/chat-instances-tab.js +1 -1
- package/dist/public/views/admin/config-tab.js +7 -2
- package/dist/public/views/admin/cortex-tab.js +20 -14
- package/dist/public/views/admin/csm-tab.js +22 -18
- package/dist/public/views/admin/directory-tab.js +3 -3
- package/dist/public/views/admin/email-tab.js +23 -28
- package/dist/public/views/admin/federation-tab.js +15 -5
- package/dist/public/views/admin/generator-debug-tab.js +10 -8
- package/dist/public/views/admin/genesis-tab.js +4 -4
- package/dist/public/views/admin/ghii-tab.js +3 -3
- package/dist/public/views/admin/knowledge-tab.js +15 -5
- package/dist/public/views/admin/matching-tab.js +3 -3
- package/dist/public/views/admin/memory-tab.js +16 -20
- package/dist/public/views/admin/msm-tab.js +30 -17
- package/dist/public/views/admin/overview-tab.js +7 -7
- package/dist/public/views/admin/packages-tab.js +10 -9
- package/dist/public/views/admin/portal-tab.js +14 -4
- package/dist/public/views/admin/prompts-tab.js +5 -5
- package/dist/public/views/admin/push-tab.js +15 -4
- package/dist/public/views/admin/realtime-tab.js +3 -3
- package/dist/public/views/admin/services-tab.js +18 -27
- package/dist/public/views/admin/shared.js +48 -58
- package/dist/public/views/admin/sharing-groups-tab.js +5 -10
- package/dist/public/views/admin/stats-tab.js +3 -3
- package/dist/public/views/guides.js +9 -13
- package/dist/public/views/help.js +3 -24
- package/dist/public/views/hobbies.js +47 -41
- package/dist/public/views/marketplace.js +42 -34
- package/dist/public/views/openclaw.js +0 -1
- package/dist/public/views/portal-classic.js +4 -15
- package/dist/public/views/portal-dev.js +28 -30
- package/dist/public/views/portal.js +16 -21
- package/dist/public/views/portfolio.js +11 -12
- package/dist/public/views/profile/access-tab.js +250 -1
- package/dist/public/views/profile/agents/agent-card.js +75 -4
- package/dist/public/views/profile/agents/tab-activity.js +15 -13
- package/dist/public/views/profile/agents/tab-agent-config.js +60 -6
- package/dist/public/views/profile/agents/tab-integration.js +37 -60
- package/dist/public/views/profile/agents/tab-messages.js +10 -1
- package/dist/public/views/profile/agents/tab-quality.js +25 -19
- package/dist/public/views/profile/agents/tab-schedules.js +110 -0
- package/dist/public/views/profile/agents-activity-subtab.js +4 -4
- package/dist/public/views/profile/agents-services-subtab.js +5 -4
- package/dist/public/views/profile/agents-tab.js +141 -37
- package/dist/public/views/profile/agents-tasks-subtab.js +221 -26
- package/dist/public/views/profile/calibrator-batch.js +5 -11
- package/dist/public/views/profile/calibrator-tab.js +4 -9
- package/dist/public/views/profile/chat-sessions-tab.js +9 -5
- package/dist/public/views/profile/email-tab.js +2 -2
- package/dist/public/views/profile/extensions-tab.js +27 -22
- package/dist/public/views/profile/federation-tab.js +4 -1
- package/dist/public/views/profile/foundry-detail.js +22 -23
- package/dist/public/views/profile/foundry-tab.js +12 -13
- package/dist/public/views/profile/generator-dashboard/DebugPanel.js +4 -7
- package/dist/public/views/profile/generator-dashboard/use-dashboard-core.js +4 -1
- package/dist/public/views/profile/generator-dashboard/use-edit-mode.js +3 -2
- package/dist/public/views/profile/generator-detail.js +26 -30
- package/dist/public/views/profile/generator-tab.js +5 -5
- package/dist/public/views/profile/knowledge-tab.js +12 -12
- package/dist/public/views/profile/landing-page.js +100 -149
- package/dist/public/views/profile/memory-tab.js +15 -11
- package/dist/public/views/profile/node-stats-tab.js +3 -3
- package/dist/public/views/profile/nodes-tab.js +10 -3
- package/dist/public/views/profile/notifications-tab.js +3 -3
- package/dist/public/views/profile/packages-tab.js +14 -14
- package/dist/public/views/profile/scheduler-tab.js +340 -0
- package/dist/public/views/profile/services-tab.js +1 -1
- package/dist/public/views/profile/shared.js +16 -12
- package/dist/public/views/profile/wallet-tab.js +27 -50
- package/dist/public/views/profile/work-tab.js +29 -31
- package/dist/public/views/profile.js +24 -0
- package/dist/public/views/public-knowledge-viewer.js +9 -18
- package/dist/src/auth/middleware.d.ts +3 -2
- package/dist/src/auth/middleware.d.ts.map +1 -1
- package/dist/src/auth/middleware.js +78 -3
- package/dist/src/auth/middleware.js.map +1 -1
- package/dist/src/cli/init-wizard.d.ts.map +1 -1
- package/dist/src/cli/init-wizard.js +13 -1
- package/dist/src/cli/init-wizard.js.map +1 -1
- package/dist/src/config.d.ts +6 -0
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +12 -1
- package/dist/src/config.js.map +1 -1
- package/dist/src/generated/api-types.d.ts +708 -8
- package/dist/src/generated/api-types.d.ts.map +1 -1
- package/dist/src/mcp/agent-schedules.d.ts +23 -0
- package/dist/src/mcp/agent-schedules.d.ts.map +1 -0
- package/dist/src/mcp/agent-schedules.js +175 -0
- package/dist/src/mcp/agent-schedules.js.map +1 -0
- package/dist/src/mcp/annotations.d.ts.map +1 -1
- package/dist/src/mcp/annotations.js +6 -0
- package/dist/src/mcp/annotations.js.map +1 -1
- package/dist/src/mcp/catalog/definitions.d.ts.map +1 -1
- package/dist/src/mcp/catalog/definitions.js +55 -0
- package/dist/src/mcp/catalog/definitions.js.map +1 -1
- package/dist/src/mcp/catalog/scopes.d.ts.map +1 -1
- package/dist/src/mcp/catalog/scopes.js +12 -0
- package/dist/src/mcp/catalog/scopes.js.map +1 -1
- package/dist/src/mcp/catalog/surfaces.d.ts.map +1 -1
- package/dist/src/mcp/catalog/surfaces.js +2 -0
- package/dist/src/mcp/catalog/surfaces.js.map +1 -1
- package/dist/src/mcp/index.d.ts.map +1 -1
- package/dist/src/mcp/index.js +2 -0
- package/dist/src/mcp/index.js.map +1 -1
- package/dist/src/models/agent-task-schemas.d.ts +6 -0
- package/dist/src/models/agent-task-schemas.d.ts.map +1 -1
- package/dist/src/models/agent-task-schemas.js +6 -0
- package/dist/src/models/agent-task-schemas.js.map +1 -1
- package/dist/src/models/schemas.d.ts +1 -0
- package/dist/src/models/schemas.d.ts.map +1 -1
- package/dist/src/models/schemas.js +4 -0
- package/dist/src/models/schemas.js.map +1 -1
- package/dist/src/routes/access-tokens.d.ts +17 -0
- package/dist/src/routes/access-tokens.d.ts.map +1 -0
- package/dist/src/routes/access-tokens.js +164 -0
- package/dist/src/routes/access-tokens.js.map +1 -0
- package/dist/src/routes/agent-tasks.d.ts +2 -0
- package/dist/src/routes/agent-tasks.d.ts.map +1 -1
- package/dist/src/routes/agent-tasks.js +118 -23
- package/dist/src/routes/agent-tasks.js.map +1 -1
- package/dist/src/routes/agents.d.ts.map +1 -1
- package/dist/src/routes/agents.js +46 -0
- package/dist/src/routes/agents.js.map +1 -1
- package/dist/src/routes/ai.d.ts +6 -9
- package/dist/src/routes/ai.d.ts.map +1 -1
- package/dist/src/routes/ai.js +26 -175
- package/dist/src/routes/ai.js.map +1 -1
- package/dist/src/routes/apps.d.ts.map +1 -1
- package/dist/src/routes/apps.js +104 -34
- package/dist/src/routes/apps.js.map +1 -1
- package/dist/src/routes/auth.d.ts.map +1 -1
- package/dist/src/routes/auth.js +77 -4
- package/dist/src/routes/auth.js.map +1 -1
- package/dist/src/routes/cortex.d.ts +2 -1
- package/dist/src/routes/cortex.d.ts.map +1 -1
- package/dist/src/routes/cortex.js +13 -8
- package/dist/src/routes/cortex.js.map +1 -1
- package/dist/src/routes/extensions.d.ts.map +1 -1
- package/dist/src/routes/extensions.js +85 -51
- package/dist/src/routes/extensions.js.map +1 -1
- package/dist/src/routes/generator.d.ts.map +1 -1
- package/dist/src/routes/generator.js +109 -43
- package/dist/src/routes/generator.js.map +1 -1
- package/dist/src/routes/ghii.d.ts.map +1 -1
- package/dist/src/routes/ghii.js +34 -13
- package/dist/src/routes/ghii.js.map +1 -1
- package/dist/src/routes/libs.d.ts +15 -0
- package/dist/src/routes/libs.d.ts.map +1 -1
- package/dist/src/routes/libs.js +178 -55
- package/dist/src/routes/libs.js.map +1 -1
- package/dist/src/routes/portal.d.ts.map +1 -1
- package/dist/src/routes/portal.js +1 -0
- package/dist/src/routes/portal.js.map +1 -1
- package/dist/src/routes/schedules.d.ts +33 -0
- package/dist/src/routes/schedules.d.ts.map +1 -0
- package/dist/src/routes/schedules.js +380 -0
- package/dist/src/routes/schedules.js.map +1 -0
- package/dist/src/server-bootstrap/config-init.js +2 -2
- package/dist/src/server-bootstrap/config-init.js.map +1 -1
- package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
- package/dist/src/server-bootstrap/routes-loader.js +7 -0
- package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
- package/dist/src/server-bootstrap/service-init.d.ts.map +1 -1
- package/dist/src/server-bootstrap/service-init.js +2 -1
- package/dist/src/server-bootstrap/service-init.js.map +1 -1
- package/dist/src/services/access-token.d.ts +28 -0
- package/dist/src/services/access-token.d.ts.map +1 -0
- package/dist/src/services/access-token.js +37 -0
- package/dist/src/services/access-token.js.map +1 -0
- package/dist/src/services/ai-completion.d.ts +83 -0
- package/dist/src/services/ai-completion.d.ts.map +1 -0
- package/dist/src/services/ai-completion.js +187 -0
- package/dist/src/services/ai-completion.js.map +1 -0
- package/dist/src/services/config-schema.d.ts.map +1 -1
- package/dist/src/services/config-schema.js +3 -0
- package/dist/src/services/config-schema.js.map +1 -1
- package/dist/src/services/generator-prompt-seeds.d.ts.map +1 -1
- package/dist/src/services/generator-prompt-seeds.js +6 -3
- package/dist/src/services/generator-prompt-seeds.js.map +1 -1
- package/dist/src/services/generator-prompts/spec-validate.d.ts.map +1 -1
- package/dist/src/services/generator-prompts/spec-validate.js +6 -2
- package/dist/src/services/generator-prompts/spec-validate.js.map +1 -1
- package/dist/src/services/generator-registration.d.ts +12 -4
- package/dist/src/services/generator-registration.d.ts.map +1 -1
- package/dist/src/services/generator-registration.js +71 -0
- package/dist/src/services/generator-registration.js.map +1 -1
- package/dist/src/services/generator-validate.d.ts +10 -0
- package/dist/src/services/generator-validate.d.ts.map +1 -1
- package/dist/src/services/generator-validate.js +180 -36
- package/dist/src/services/generator-validate.js.map +1 -1
- package/dist/src/services/owner-session.d.ts +43 -0
- package/dist/src/services/owner-session.d.ts.map +1 -0
- package/dist/src/services/owner-session.js +175 -0
- package/dist/src/services/owner-session.js.map +1 -0
- package/dist/src/services/schedule-constraints.d.ts +65 -0
- package/dist/src/services/schedule-constraints.d.ts.map +1 -0
- package/dist/src/services/schedule-constraints.js +106 -0
- package/dist/src/services/schedule-constraints.js.map +1 -0
- package/dist/src/services/scheduler.d.ts +34 -0
- package/dist/src/services/scheduler.d.ts.map +1 -1
- package/dist/src/services/scheduler.js +266 -22
- package/dist/src/services/scheduler.js.map +1 -1
- package/dist/src/services/skill-bundle/generator.js +19 -0
- package/dist/src/services/skill-bundle/generator.js.map +1 -1
- package/dist/src/storage/interface.d.ts +48 -4
- package/dist/src/storage/interface.d.ts.map +1 -1
- package/dist/src/storage/interface.js.map +1 -1
- package/dist/src/storage/providers/mongodb/index.d.ts +31 -0
- package/dist/src/storage/providers/mongodb/index.d.ts.map +1 -1
- package/dist/src/storage/providers/mongodb/index.js +187 -9
- package/dist/src/storage/providers/mongodb/index.js.map +1 -1
- package/dist/src/storage/providers/sqlite/index.d.ts +31 -0
- package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/index.js +131 -8
- package/dist/src/storage/providers/sqlite/index.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/agent-task.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/agent-task.js +6 -4
- package/dist/src/storage/providers/sqlite/repos/agent-task.js.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.js +79 -8
- package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
- package/dist/src/storage/repositories/pat.repository.d.ts +40 -0
- package/dist/src/storage/repositories/pat.repository.d.ts.map +1 -0
- package/dist/src/storage/repositories/pat.repository.js +14 -0
- package/dist/src/storage/repositories/pat.repository.js.map +1 -0
- package/dist/src/storage/repositories/scheduler.repository.d.ts +2 -0
- package/dist/src/storage/repositories/scheduler.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/session.repository.d.ts +51 -0
- package/dist/src/storage/repositories/session.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/session.repository.js +12 -0
- package/dist/src/storage/repositories/session.repository.js.map +1 -1
- package/dist/src/utils/env-config.d.ts.map +1 -1
- package/dist/src/utils/env-config.js +25 -1
- package/dist/src/utils/env-config.js.map +1 -1
- package/dist/src/utils/env-validator.d.ts.map +1 -1
- package/dist/src/utils/env-validator.js +4 -0
- package/dist/src/utils/env-validator.js.map +1 -1
- package/package.json +1 -1
- package/prisma/schema.prisma +48 -0
|
@@ -4,6 +4,18 @@
|
|
|
4
4
|
* Uses agd- prefix to avoid collisions with other profile styles.
|
|
5
5
|
* All colors use CSS variables from theme.css.
|
|
6
6
|
* @version-history
|
|
7
|
+
* v1.9.0 -- 2026-06-02 -- Component unification (#24 search bar): tokenize the
|
|
8
|
+
* hardcoded hex fallbacks in .pf-agd-search-input (var(--border, #E5E7EB) ->
|
|
9
|
+
* var(--border); var(--card-bg, #FFFFFF) -> var(--card); var(--text, #1A1A2E)
|
|
10
|
+
* -> var(--text)) so the task search input flips in dark mode. Markup left in
|
|
11
|
+
* place (view-scoped task filter state; not migrated to canonical SearchBar).
|
|
12
|
+
* v1.8.0 -- 2026-06-02 -- Component unification (#21 key/value rows): tokenize the
|
|
13
|
+
* hardcoded hex fallbacks in .pf-agd-info-label/.pf-agd-info-value
|
|
14
|
+
* (var(--text-dim, #6B7280) -> var(--text-dim); var(--text, #1A1A2E) ->
|
|
15
|
+
* var(--text)) so the agent-detail info rows flip in dark mode. Markup left
|
|
16
|
+
* in place (borderless look differs from canonical .kv-row).
|
|
17
|
+
* v1.7.0 -- 2026-06-02 -- Component unification (#6 stat cards): remove .agd-stat*/
|
|
18
|
+
* .pf-agd-stat*; agent activity/quality stats use canonical .stat-card family.
|
|
7
19
|
* v1.0.0 -- 2026-05-21 -- Initial creation for Agent Dashboard Phase 1
|
|
8
20
|
* v1.1.0 -- 2026-05-22 -- Add capability badge styles for Capabilities sub-tab
|
|
9
21
|
* v1.2.0 -- 2026-05-22 -- Add Activity sub-tab styles (stats cards, chart, jobs, event log)
|
|
@@ -27,6 +39,16 @@
|
|
|
27
39
|
* v2.12.0 -- 2026-05-31 -- Add deliverable rating control styles (star picker, current-rating row, rate modal fields)
|
|
28
40
|
* v2.13.0 -- 2026-05-31 -- Add Quality-tab "Rate deliverables" pending-list row styles
|
|
29
41
|
* v2.14.0 -- 2026-06-01 -- Add Tasks-tab max-concurrent-tasks config row styles
|
|
42
|
+
* v2.15.0 -- 2026-06-01 -- Blur-title eye is now hover-only (revealed on task-row hover/focus) to de-clutter the list; blurred rows keep their eye visible
|
|
43
|
+
* v2.16.0 -- 2026-06-01 -- Add Tasks-tab triage UI styles (bucket segments + counts, search bar, time chips, per-task triage buttons)
|
|
44
|
+
* v2.17.0 -- 2026-06-01 -- Add per-task memory entries list styles (expanded task)
|
|
45
|
+
* v2.18.0 -- 2026-06-01 -- Per-task memory entries are collapsible with pretty-printed JSON bodies
|
|
46
|
+
* v2.19.0 -- 2026-06-01 -- Structured JSON view for memory values (key/value rows, indented nested blocks, type colours)
|
|
47
|
+
* v2.20.0 -- 2026-06-01 -- Tab bar wraps (flex-wrap) instead of horizontal scroll so all 10 tabs stay visible on two rows
|
|
48
|
+
* v2.21.0 -- 2026-06-02 -- Unseen-change badges: collapsed-card mini-badge (pf-agd-change-badge) + per-tab number badges (pf-agd-tab-badge)
|
|
49
|
+
* v2.22.0 -- 2026-06-02 -- Add divider line above the tab bar (border-top + spacing) so tabs don't blend with the status row above
|
|
50
|
+
* v2.23.0 -- 2026-06-02 -- Compact .md-body styles for agent message bubbles (Markdown-rendered outbound replies)
|
|
51
|
+
* v2.24.0 -- 2026-06-02 -- Compact .md-body styles for Markdown-rendered non-JSON task memory values (pf-agd-task-memory-md)
|
|
30
52
|
* v2.11.0 -- 2026-05-31 -- Widen the solo pop-out window (and pf-agd-solo max-width) so the agent card matches the list-view width and the full tab bar fits
|
|
31
53
|
* v2.12.0 -- 2026-05-31 -- Add completed-task deliverable styles (pf-agd-deliverable*) linking a task to its agent-memory output key
|
|
32
54
|
* v2.13.0 -- 2026-05-31 -- Add per-task blur-title toggle styles (pf-agd-blur-toggle, pf-agd-task-title--blurred) for hiding sensitive titles in screen recordings
|
|
@@ -267,7 +289,7 @@
|
|
|
267
289
|
margin-top: 0.15rem;
|
|
268
290
|
}
|
|
269
291
|
.pf .agd-task-actions ,
|
|
270
|
-
.pf .pf-agd-task-actions { display: flex; gap: 0.5rem; margin-top: 0.5rem; }
|
|
292
|
+
.pf .pf-agd-task-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; margin-top: 0.5rem; }
|
|
271
293
|
|
|
272
294
|
.pf .agd-event-log ,
|
|
273
295
|
.pf .pf-agd-event-log { max-height: 200px; overflow-y: auto; margin-top: 0.5rem; }
|
|
@@ -570,15 +592,9 @@
|
|
|
570
592
|
|
|
571
593
|
/* ── Activity sub-tab ── */
|
|
572
594
|
|
|
573
|
-
/* Activity stats cards
|
|
574
|
-
.
|
|
575
|
-
|
|
576
|
-
.pf .agd-stat-card ,
|
|
577
|
-
.pf .pf-agd-stat-card { flex: 1; background: var(--card-bg, #FFFFFF); border: 1px solid var(--border, #E5E7EB); border-radius: 8px; padding: 12px; text-align: center; }
|
|
578
|
-
.pf .agd-stat-value ,
|
|
579
|
-
.pf .pf-agd-stat-value { font-size: 1.5rem; font-weight: 600; color: var(--text, #1A1A2E); }
|
|
580
|
-
.pf .agd-stat-label ,
|
|
581
|
-
.pf .pf-agd-stat-label { font-size: 0.75rem; color: var(--text-muted, #9CA3AF); }
|
|
595
|
+
/* Activity stats cards — .agd-stat*/.pf-agd-stat* removed; agent activity/quality
|
|
596
|
+
stats use canonical .stat-grid / .stat-card / .stat-card-value / .stat-card-label.
|
|
597
|
+
Unified 2026-06-02 (#6). */
|
|
582
598
|
|
|
583
599
|
/* Activity chart area */
|
|
584
600
|
.pf .agd-chart-container ,
|
|
@@ -1699,9 +1715,19 @@
|
|
|
1699
1715
|
|
|
1700
1716
|
.pf .pf-agd-tabs {
|
|
1701
1717
|
display: flex;
|
|
1718
|
+
/* Wrap to a second row instead of scrolling horizontally: with 10 tabs the
|
|
1719
|
+
bar no longer fits one line on the card width. TABS (agent-card.js) is
|
|
1720
|
+
ordered by owner usage frequency so the most-used tabs land on the top row
|
|
1721
|
+
and the rarely-touched setup tabs fall to the second. */
|
|
1722
|
+
flex-wrap: wrap;
|
|
1702
1723
|
gap: 0;
|
|
1724
|
+
row-gap: 2px;
|
|
1725
|
+
/* Divider above the bar too, so the tabs read as their own block and don't
|
|
1726
|
+
blend into the status row (Polling | Last seen | Today: N done) above. */
|
|
1727
|
+
border-top: 1px solid var(--border, #E5E7EB);
|
|
1728
|
+
margin-top: 0.5rem;
|
|
1729
|
+
padding-top: 0.25rem;
|
|
1703
1730
|
border-bottom: 1px solid var(--border, #E5E7EB);
|
|
1704
|
-
overflow-x: auto;
|
|
1705
1731
|
}
|
|
1706
1732
|
.pf .pf-agd-tab {
|
|
1707
1733
|
padding: 0.5rem 0.875rem;
|
|
@@ -1726,6 +1752,47 @@
|
|
|
1726
1752
|
min-height: 150px;
|
|
1727
1753
|
}
|
|
1728
1754
|
|
|
1755
|
+
/* ── Unseen-change badges ──
|
|
1756
|
+
Collapsed-card mini-badge (total new across Tasks/Messages/Memory) + per-tab
|
|
1757
|
+
number badges. Both use the accent colour so "something changed" reads at a
|
|
1758
|
+
glance. Counts come from the localStorage last-seen baseline (agents-tab.js). */
|
|
1759
|
+
.pf .pf-agd-change-badge {
|
|
1760
|
+
display: inline-flex;
|
|
1761
|
+
align-items: center;
|
|
1762
|
+
justify-content: center;
|
|
1763
|
+
min-width: 18px;
|
|
1764
|
+
height: 18px;
|
|
1765
|
+
padding: 0 5px;
|
|
1766
|
+
margin-left: 6px;
|
|
1767
|
+
border-radius: 9px;
|
|
1768
|
+
background: var(--accent, #E8564A);
|
|
1769
|
+
color: #fff;
|
|
1770
|
+
font-size: 0.68rem;
|
|
1771
|
+
font-weight: 700;
|
|
1772
|
+
line-height: 1;
|
|
1773
|
+
flex-shrink: 0;
|
|
1774
|
+
}
|
|
1775
|
+
.pf .pf-agd-tab {
|
|
1776
|
+
/* allow the inline count badge to sit beside the label */
|
|
1777
|
+
display: inline-flex;
|
|
1778
|
+
align-items: center;
|
|
1779
|
+
gap: 5px;
|
|
1780
|
+
}
|
|
1781
|
+
.pf .pf-agd-tab-badge {
|
|
1782
|
+
display: inline-flex;
|
|
1783
|
+
align-items: center;
|
|
1784
|
+
justify-content: center;
|
|
1785
|
+
min-width: 16px;
|
|
1786
|
+
height: 16px;
|
|
1787
|
+
padding: 0 4px;
|
|
1788
|
+
border-radius: 8px;
|
|
1789
|
+
background: var(--accent, #E8564A);
|
|
1790
|
+
color: #fff;
|
|
1791
|
+
font-size: 0.62rem;
|
|
1792
|
+
font-weight: 700;
|
|
1793
|
+
line-height: 1;
|
|
1794
|
+
}
|
|
1795
|
+
|
|
1729
1796
|
/* ── README tab (rendered from agents.<name>.readme markdown) ── */
|
|
1730
1797
|
.pf .pf-agd-readme {
|
|
1731
1798
|
/* Comfortable reading width that still fits ~80-col ASCII art in code fences. */
|
|
@@ -1793,6 +1860,75 @@
|
|
|
1793
1860
|
color: var(--text, #1A1A2E);
|
|
1794
1861
|
}
|
|
1795
1862
|
|
|
1863
|
+
/* ── Markdown inside agent (outbound) message bubbles ──
|
|
1864
|
+
Agent replies render through the shared Markdown component. The README
|
|
1865
|
+
.md-body rules are scoped to .pf-agd-readme only, so message bubbles need
|
|
1866
|
+
their own compact variant: no outer margins (the bubble padding handles
|
|
1867
|
+
spacing), modest headings, bordered code chips (the bubble surface is grey,
|
|
1868
|
+
so a plain grey code background would blend). */
|
|
1869
|
+
.pf .pf-agd-msg-bubble .md-body > :first-child { margin-top: 0; }
|
|
1870
|
+
.pf .pf-agd-msg-bubble .md-body > :last-child { margin-bottom: 0; }
|
|
1871
|
+
.pf .pf-agd-msg-bubble .md-body p { margin: 0.35rem 0; }
|
|
1872
|
+
.pf .pf-agd-msg-bubble .md-body h1,
|
|
1873
|
+
.pf .pf-agd-msg-bubble .md-body h2,
|
|
1874
|
+
.pf .pf-agd-msg-bubble .md-body h3,
|
|
1875
|
+
.pf .pf-agd-msg-bubble .md-body h4 {
|
|
1876
|
+
margin: 0.5rem 0 0.25rem;
|
|
1877
|
+
line-height: 1.3;
|
|
1878
|
+
font-size: 0.95rem;
|
|
1879
|
+
}
|
|
1880
|
+
.pf .pf-agd-msg-bubble .md-body h1 { font-size: 1.05rem; }
|
|
1881
|
+
.pf .pf-agd-msg-bubble .md-body h2 { font-size: 1rem; }
|
|
1882
|
+
.pf .pf-agd-msg-bubble .md-body ul,
|
|
1883
|
+
.pf .pf-agd-msg-bubble .md-body ol { margin: 0.35rem 0; padding-left: 1.4rem; }
|
|
1884
|
+
.pf .pf-agd-msg-bubble .md-body li { margin: 0.15rem 0; }
|
|
1885
|
+
.pf .pf-agd-msg-bubble .md-body a { color: var(--accent, #E8564A); }
|
|
1886
|
+
.pf .pf-agd-msg-bubble .md-body blockquote {
|
|
1887
|
+
margin: 0.4rem 0;
|
|
1888
|
+
padding: 0.2rem 0.6rem;
|
|
1889
|
+
border-left: 3px solid var(--border, #E5E7EB);
|
|
1890
|
+
color: var(--text-dim, #6B7280);
|
|
1891
|
+
}
|
|
1892
|
+
.pf .pf-agd-msg-bubble .md-body .md-code {
|
|
1893
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
1894
|
+
font-size: 0.8rem;
|
|
1895
|
+
background: var(--card, #FFFFFF);
|
|
1896
|
+
border: 1px solid var(--border, #E5E7EB);
|
|
1897
|
+
padding: 0.02rem 0.3rem;
|
|
1898
|
+
border-radius: 4px;
|
|
1899
|
+
}
|
|
1900
|
+
.pf .pf-agd-msg-bubble .md-body .md-pre {
|
|
1901
|
+
margin: 0.45rem 0;
|
|
1902
|
+
padding: 0.6rem;
|
|
1903
|
+
background: var(--card, #FFFFFF);
|
|
1904
|
+
border: 1px solid var(--border, #E5E7EB);
|
|
1905
|
+
border-radius: 6px;
|
|
1906
|
+
overflow-x: auto;
|
|
1907
|
+
}
|
|
1908
|
+
.pf .pf-agd-msg-bubble .md-body .md-pre .md-code {
|
|
1909
|
+
display: block;
|
|
1910
|
+
white-space: pre;
|
|
1911
|
+
background: none;
|
|
1912
|
+
border: none;
|
|
1913
|
+
padding: 0;
|
|
1914
|
+
tab-size: 4;
|
|
1915
|
+
font-size: 0.78rem;
|
|
1916
|
+
line-height: 1.35;
|
|
1917
|
+
color: var(--text, #1A1A2E);
|
|
1918
|
+
}
|
|
1919
|
+
.pf .pf-agd-msg-bubble .md-body table {
|
|
1920
|
+
border-collapse: collapse;
|
|
1921
|
+
margin: 0.4rem 0;
|
|
1922
|
+
font-size: 0.8rem;
|
|
1923
|
+
}
|
|
1924
|
+
.pf .pf-agd-msg-bubble .md-body th,
|
|
1925
|
+
.pf .pf-agd-msg-bubble .md-body td {
|
|
1926
|
+
border: 1px solid var(--border, #E5E7EB);
|
|
1927
|
+
padding: 0.25rem 0.5rem;
|
|
1928
|
+
text-align: left;
|
|
1929
|
+
}
|
|
1930
|
+
.pf .pf-agd-msg-bubble .md-body th { background: var(--card-bg-alt, #F3F4F6); }
|
|
1931
|
+
|
|
1796
1932
|
/* ── Integration tab: Onboarding checklist ── */
|
|
1797
1933
|
|
|
1798
1934
|
.pf .pf-agd-checklist {
|
|
@@ -1859,11 +1995,11 @@
|
|
|
1859
1995
|
.pf .pf-agd-info-label {
|
|
1860
1996
|
font-weight: 500;
|
|
1861
1997
|
min-width: 120px;
|
|
1862
|
-
color: var(--text-dim
|
|
1998
|
+
color: var(--text-dim);
|
|
1863
1999
|
flex-shrink: 0;
|
|
1864
2000
|
}
|
|
1865
2001
|
.pf .pf-agd-info-value {
|
|
1866
|
-
color: var(--text
|
|
2002
|
+
color: var(--text);
|
|
1867
2003
|
word-break: break-all;
|
|
1868
2004
|
}
|
|
1869
2005
|
|
|
@@ -2545,11 +2681,19 @@
|
|
|
2545
2681
|
font-size: 0.95rem;
|
|
2546
2682
|
line-height: 1;
|
|
2547
2683
|
cursor: pointer;
|
|
2548
|
-
|
|
2684
|
+
/* Hidden by default to keep the task list uncluttered; revealed when the row
|
|
2685
|
+
is hovered or the button is focused. opacity (not display) so the title
|
|
2686
|
+
never shifts when the eye appears. A row whose title is currently hidden
|
|
2687
|
+
keeps its eye visible (see --on) so the hidden state stays discoverable. */
|
|
2688
|
+
opacity: 0;
|
|
2549
2689
|
transition: opacity 0.15s ease;
|
|
2550
2690
|
}
|
|
2691
|
+
.pf .pf-agd-task-item:hover .pf-agd-blur-toggle { opacity: 0.55; }
|
|
2551
2692
|
.pf .pf-agd-blur-toggle:hover { opacity: 0.9; }
|
|
2693
|
+
.pf .pf-agd-blur-toggle:focus-visible { opacity: 0.9; }
|
|
2694
|
+
/* A blurred (hidden-title) row shows its 🙈 at all times, hover or not. */
|
|
2552
2695
|
.pf .pf-agd-blur-toggle--on { opacity: 0.85; }
|
|
2696
|
+
.pf .pf-agd-task-item:hover .pf-agd-blur-toggle--on { opacity: 0.95; }
|
|
2553
2697
|
|
|
2554
2698
|
.pf .pf-agd-task-title--blurred {
|
|
2555
2699
|
filter: blur(5px);
|
|
@@ -2934,3 +3078,247 @@
|
|
|
2934
3078
|
color: var(--text-muted, #9CA3AF);
|
|
2935
3079
|
font-size: 0.75rem;
|
|
2936
3080
|
}
|
|
3081
|
+
|
|
3082
|
+
/* ── Tasks-tab triage: bucket segments + search + time chips ── */
|
|
3083
|
+
.pf .pf-agd-bucket-bar {
|
|
3084
|
+
display: flex;
|
|
3085
|
+
align-items: center;
|
|
3086
|
+
gap: 0.25rem;
|
|
3087
|
+
border-bottom: 1px solid var(--border, #E5E7EB);
|
|
3088
|
+
margin: 0.25rem 0 0.75rem;
|
|
3089
|
+
}
|
|
3090
|
+
.pf .pf-agd-bucket {
|
|
3091
|
+
background: none;
|
|
3092
|
+
border: none;
|
|
3093
|
+
border-bottom: 2px solid transparent;
|
|
3094
|
+
padding: 0.35rem 0.75rem;
|
|
3095
|
+
font-size: 0.85rem;
|
|
3096
|
+
color: var(--text-dim, #6B7280);
|
|
3097
|
+
cursor: pointer;
|
|
3098
|
+
transition: color 0.15s, border-color 0.15s;
|
|
3099
|
+
}
|
|
3100
|
+
.pf .pf-agd-bucket:hover { color: var(--text, #1A1A2E); }
|
|
3101
|
+
.pf .pf-agd-bucket--active {
|
|
3102
|
+
color: var(--accent, #E8564A);
|
|
3103
|
+
border-bottom-color: var(--accent, #E8564A);
|
|
3104
|
+
font-weight: 600;
|
|
3105
|
+
}
|
|
3106
|
+
.pf .pf-agd-bucket-count {
|
|
3107
|
+
display: inline-block;
|
|
3108
|
+
min-width: 1.1rem;
|
|
3109
|
+
font-size: 0.7rem;
|
|
3110
|
+
color: var(--text-muted, #9CA3AF);
|
|
3111
|
+
}
|
|
3112
|
+
.pf .pf-agd-bucket--active .pf-agd-bucket-count { color: var(--accent, #E8564A); }
|
|
3113
|
+
.pf .pf-agd-bucket-spacer { flex: 1; }
|
|
3114
|
+
.pf .pf-agd-search-toggle {
|
|
3115
|
+
background: none;
|
|
3116
|
+
border: none;
|
|
3117
|
+
cursor: pointer;
|
|
3118
|
+
font-size: 0.95rem;
|
|
3119
|
+
padding: 0.25rem 0.4rem;
|
|
3120
|
+
opacity: 0.6;
|
|
3121
|
+
border-radius: 6px;
|
|
3122
|
+
}
|
|
3123
|
+
.pf .pf-agd-search-toggle:hover { opacity: 1; }
|
|
3124
|
+
.pf .pf-agd-search-toggle--on { opacity: 1; background: var(--bg-dim, #F3F4F6); }
|
|
3125
|
+
|
|
3126
|
+
.pf .pf-agd-search-bar {
|
|
3127
|
+
display: flex;
|
|
3128
|
+
align-items: center;
|
|
3129
|
+
flex-wrap: wrap;
|
|
3130
|
+
gap: 0.5rem;
|
|
3131
|
+
margin-bottom: 0.75rem;
|
|
3132
|
+
}
|
|
3133
|
+
.pf .pf-agd-search-input {
|
|
3134
|
+
flex: 1;
|
|
3135
|
+
min-width: 12rem;
|
|
3136
|
+
padding: 0.35rem 0.6rem;
|
|
3137
|
+
border: 1px solid var(--border);
|
|
3138
|
+
border-radius: 8px;
|
|
3139
|
+
background: var(--card);
|
|
3140
|
+
color: var(--text);
|
|
3141
|
+
font-size: 0.85rem;
|
|
3142
|
+
}
|
|
3143
|
+
.pf .pf-agd-time-chips { display: flex; gap: 0.25rem; }
|
|
3144
|
+
.pf .pf-agd-time-chip {
|
|
3145
|
+
background: var(--bg-dim, #F3F4F6);
|
|
3146
|
+
border: 1px solid var(--border, #E5E7EB);
|
|
3147
|
+
border-radius: 999px;
|
|
3148
|
+
padding: 0.15rem 0.6rem;
|
|
3149
|
+
font-size: 0.75rem;
|
|
3150
|
+
color: var(--text-dim, #6B7280);
|
|
3151
|
+
cursor: pointer;
|
|
3152
|
+
}
|
|
3153
|
+
.pf .pf-agd-time-chip--on {
|
|
3154
|
+
background: var(--accent, #E8564A);
|
|
3155
|
+
border-color: var(--accent, #E8564A);
|
|
3156
|
+
color: #fff;
|
|
3157
|
+
}
|
|
3158
|
+
|
|
3159
|
+
/* Triage buttons pushed to the right of the task action row */
|
|
3160
|
+
.pf .pf-agd-task-actions-spacer { flex: 1; }
|
|
3161
|
+
|
|
3162
|
+
/* Per-task memory entries (expanded task) -- collapsible per entry */
|
|
3163
|
+
.pf .pf-agd-task-memory { margin: 0.5rem 0; }
|
|
3164
|
+
.pf .pf-agd-task-memory-list {
|
|
3165
|
+
display: flex;
|
|
3166
|
+
flex-direction: column;
|
|
3167
|
+
gap: 0.3rem;
|
|
3168
|
+
margin-top: 0.4rem;
|
|
3169
|
+
}
|
|
3170
|
+
.pf .pf-agd-task-memory-entry {
|
|
3171
|
+
border: 1px solid var(--border, #E5E7EB);
|
|
3172
|
+
border-radius: 8px;
|
|
3173
|
+
background: var(--card-bg, #FFFFFF);
|
|
3174
|
+
overflow: hidden;
|
|
3175
|
+
}
|
|
3176
|
+
.pf .pf-agd-task-memory-head {
|
|
3177
|
+
display: flex;
|
|
3178
|
+
align-items: center;
|
|
3179
|
+
gap: 0.4rem;
|
|
3180
|
+
width: 100%;
|
|
3181
|
+
background: none;
|
|
3182
|
+
border: none;
|
|
3183
|
+
cursor: pointer;
|
|
3184
|
+
text-align: left;
|
|
3185
|
+
padding: 0.4rem 0.55rem;
|
|
3186
|
+
font-size: 0.78rem;
|
|
3187
|
+
}
|
|
3188
|
+
.pf .pf-agd-task-memory-head:hover { background: var(--bg-dim, #F3F4F6); }
|
|
3189
|
+
.pf .pf-agd-task-memory-caret {
|
|
3190
|
+
color: var(--text-muted, #9CA3AF);
|
|
3191
|
+
font-size: 0.65rem;
|
|
3192
|
+
flex-shrink: 0;
|
|
3193
|
+
}
|
|
3194
|
+
.pf .pf-agd-task-memory-key {
|
|
3195
|
+
color: var(--text-dim, #6B7280);
|
|
3196
|
+
font-family: var(--font-mono, monospace);
|
|
3197
|
+
overflow: hidden;
|
|
3198
|
+
text-overflow: ellipsis;
|
|
3199
|
+
white-space: nowrap;
|
|
3200
|
+
flex: 1;
|
|
3201
|
+
min-width: 0;
|
|
3202
|
+
}
|
|
3203
|
+
.pf .pf-agd-task-memory-badge {
|
|
3204
|
+
flex-shrink: 0;
|
|
3205
|
+
font-size: 0.62rem;
|
|
3206
|
+
font-weight: 600;
|
|
3207
|
+
letter-spacing: 0.5px;
|
|
3208
|
+
color: var(--accent, #E8564A);
|
|
3209
|
+
border: 1px solid var(--accent, #E8564A);
|
|
3210
|
+
border-radius: 4px;
|
|
3211
|
+
padding: 0.02rem 0.3rem;
|
|
3212
|
+
}
|
|
3213
|
+
.pf .pf-agd-task-memory-body {
|
|
3214
|
+
padding: 0.5rem 0.6rem;
|
|
3215
|
+
border-top: 1px solid var(--border, #E5E7EB);
|
|
3216
|
+
background: var(--bg-dim, #F3F4F6);
|
|
3217
|
+
color: var(--text, #1A1A2E);
|
|
3218
|
+
font-size: 0.75rem;
|
|
3219
|
+
line-height: 1.5;
|
|
3220
|
+
max-height: 340px;
|
|
3221
|
+
overflow: auto;
|
|
3222
|
+
}
|
|
3223
|
+
/* Raw (non-JSON) memory value: keep formatting, wrap long lines. */
|
|
3224
|
+
.pf .pf-agd-task-memory-raw {
|
|
3225
|
+
margin: 0;
|
|
3226
|
+
white-space: pre-wrap;
|
|
3227
|
+
word-break: break-word;
|
|
3228
|
+
font-family: var(--font-mono, monospace);
|
|
3229
|
+
}
|
|
3230
|
+
|
|
3231
|
+
/* Markdown-rendered non-JSON memory values (e.g. an agent's latest_output).
|
|
3232
|
+
Compact, mirroring the message-bubble .md-body variant. The memory body
|
|
3233
|
+
background is grey (--bg-dim), so code chips get a border + light fill for
|
|
3234
|
+
contrast. */
|
|
3235
|
+
.pf .pf-agd-task-memory-md .md-body > :first-child { margin-top: 0; }
|
|
3236
|
+
.pf .pf-agd-task-memory-md .md-body > :last-child { margin-bottom: 0; }
|
|
3237
|
+
.pf .pf-agd-task-memory-md .md-body p { margin: 0.3rem 0; }
|
|
3238
|
+
.pf .pf-agd-task-memory-md .md-body h1,
|
|
3239
|
+
.pf .pf-agd-task-memory-md .md-body h2,
|
|
3240
|
+
.pf .pf-agd-task-memory-md .md-body h3,
|
|
3241
|
+
.pf .pf-agd-task-memory-md .md-body h4 {
|
|
3242
|
+
margin: 0.45rem 0 0.2rem;
|
|
3243
|
+
line-height: 1.3;
|
|
3244
|
+
font-size: 0.85rem;
|
|
3245
|
+
}
|
|
3246
|
+
.pf .pf-agd-task-memory-md .md-body h1 { font-size: 0.95rem; }
|
|
3247
|
+
.pf .pf-agd-task-memory-md .md-body h2 { font-size: 0.9rem; }
|
|
3248
|
+
.pf .pf-agd-task-memory-md .md-body ul,
|
|
3249
|
+
.pf .pf-agd-task-memory-md .md-body ol { margin: 0.3rem 0; padding-left: 1.3rem; }
|
|
3250
|
+
.pf .pf-agd-task-memory-md .md-body li { margin: 0.12rem 0; }
|
|
3251
|
+
.pf .pf-agd-task-memory-md .md-body a { color: var(--accent, #E8564A); }
|
|
3252
|
+
.pf .pf-agd-task-memory-md .md-body blockquote {
|
|
3253
|
+
margin: 0.35rem 0;
|
|
3254
|
+
padding: 0.15rem 0.55rem;
|
|
3255
|
+
border-left: 3px solid var(--border, #E5E7EB);
|
|
3256
|
+
color: var(--text-dim, #6B7280);
|
|
3257
|
+
}
|
|
3258
|
+
.pf .pf-agd-task-memory-md .md-body .md-code {
|
|
3259
|
+
font-family: var(--font-mono, ui-monospace, Menlo, Consolas, monospace);
|
|
3260
|
+
font-size: 0.72rem;
|
|
3261
|
+
background: var(--card-bg, #FFFFFF);
|
|
3262
|
+
border: 1px solid var(--border, #E5E7EB);
|
|
3263
|
+
padding: 0.02rem 0.3rem;
|
|
3264
|
+
border-radius: 4px;
|
|
3265
|
+
}
|
|
3266
|
+
.pf .pf-agd-task-memory-md .md-body .md-pre {
|
|
3267
|
+
margin: 0.4rem 0;
|
|
3268
|
+
padding: 0.55rem;
|
|
3269
|
+
background: var(--card-bg, #FFFFFF);
|
|
3270
|
+
border: 1px solid var(--border, #E5E7EB);
|
|
3271
|
+
border-radius: 6px;
|
|
3272
|
+
overflow-x: auto;
|
|
3273
|
+
}
|
|
3274
|
+
.pf .pf-agd-task-memory-md .md-body .md-pre .md-code {
|
|
3275
|
+
display: block;
|
|
3276
|
+
white-space: pre;
|
|
3277
|
+
background: none;
|
|
3278
|
+
border: none;
|
|
3279
|
+
padding: 0;
|
|
3280
|
+
tab-size: 4;
|
|
3281
|
+
font-size: 0.72rem;
|
|
3282
|
+
line-height: 1.35;
|
|
3283
|
+
color: var(--text, #1A1A2E);
|
|
3284
|
+
}
|
|
3285
|
+
.pf .pf-agd-task-memory-md .md-body table {
|
|
3286
|
+
border-collapse: collapse;
|
|
3287
|
+
margin: 0.35rem 0;
|
|
3288
|
+
font-size: 0.72rem;
|
|
3289
|
+
}
|
|
3290
|
+
.pf .pf-agd-task-memory-md .md-body th,
|
|
3291
|
+
.pf .pf-agd-task-memory-md .md-body td {
|
|
3292
|
+
border: 1px solid var(--border, #E5E7EB);
|
|
3293
|
+
padding: 0.2rem 0.45rem;
|
|
3294
|
+
text-align: left;
|
|
3295
|
+
}
|
|
3296
|
+
.pf .pf-agd-task-memory-md .md-body th { background: var(--card-bg, #FFFFFF); }
|
|
3297
|
+
|
|
3298
|
+
/* Structured JSON view: key/value rows, nested blocks indented with a guide line. */
|
|
3299
|
+
.pf .pf-agd-json-block { display: flex; flex-direction: column; gap: 0.05rem; }
|
|
3300
|
+
.pf .pf-agd-json-row {
|
|
3301
|
+
display: flex;
|
|
3302
|
+
gap: 0.45rem;
|
|
3303
|
+
align-items: baseline;
|
|
3304
|
+
padding: 0.05rem 0;
|
|
3305
|
+
}
|
|
3306
|
+
.pf .pf-agd-json-row--nested { display: block; }
|
|
3307
|
+
.pf .pf-agd-json-row--nested > .pf-agd-json-block {
|
|
3308
|
+
margin: 0.1rem 0 0.2rem 0.3rem;
|
|
3309
|
+
padding-left: 0.65rem;
|
|
3310
|
+
border-left: 1px solid var(--border, #E5E7EB);
|
|
3311
|
+
}
|
|
3312
|
+
.pf .pf-agd-json-key {
|
|
3313
|
+
font-weight: 600;
|
|
3314
|
+
color: var(--text-dim, #6B7280);
|
|
3315
|
+
font-family: var(--font-mono, monospace);
|
|
3316
|
+
white-space: nowrap;
|
|
3317
|
+
flex-shrink: 0;
|
|
3318
|
+
}
|
|
3319
|
+
.pf .pf-agd-json-key::after { content: ':'; color: var(--text-muted, #9CA3AF); font-weight: 400; }
|
|
3320
|
+
.pf .pf-agd-json-str { color: var(--text, #1A1A2E); word-break: break-word; }
|
|
3321
|
+
.pf .pf-agd-json-num { color: var(--info, #3B82F6); font-family: var(--font-mono, monospace); }
|
|
3322
|
+
.pf .pf-agd-json-bool { color: var(--accent, #E8564A); font-family: var(--font-mono, monospace); }
|
|
3323
|
+
.pf .pf-agd-json-null,
|
|
3324
|
+
.pf .pf-agd-json-empty { color: var(--text-muted, #9CA3AF); font-style: italic; }
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* DM Sans body text, JetBrains Mono for the prompt code block.
|
|
5
5
|
* @version-history
|
|
6
6
|
* v1.0.0 — 2026-03-23 — Initial implementation
|
|
7
|
+
* v1.1.0 — 2026-06-02 — Copied-state selector .hlp-copied → .copied (CopyButton component migration)
|
|
7
8
|
*/
|
|
8
9
|
|
|
9
10
|
/* ── Container ── */
|
|
@@ -114,7 +115,7 @@
|
|
|
114
115
|
}
|
|
115
116
|
|
|
116
117
|
/* ── Copied state ── */
|
|
117
|
-
.hlp-copy-btn.
|
|
118
|
+
.hlp-copy-btn.copied {
|
|
118
119
|
background: linear-gradient(135deg, #10B981, #059669);
|
|
119
120
|
box-shadow: 0 4px 12px rgba(16, 185, 129, 0.25);
|
|
120
121
|
}
|
|
@@ -1,67 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file hobbies.css
|
|
3
|
+
* @description Styles for the Hobbies directory view (home, search, profile, join, me, matches). All classes scoped under the .hb- prefix.
|
|
4
|
+
* @version-history
|
|
5
|
+
* v1.1.0 — 2026-06-02 — Phase 5: tokenize for dark mode (replaced bare light-only color literals with theme tokens)
|
|
6
|
+
* v1.2.0 — 2026-06-02 — Component unification (#4 buttons): remove .hb-btn* family;
|
|
7
|
+
* hobbies buttons use canonical theme.css .btn-primary / .btn-outline / .btn-danger / .btn-sm.
|
|
8
|
+
* v1.3.0 — 2026-06-02 — Component unification (#5 inputs): remove .hb-form-input/
|
|
9
|
+
* -textarea/-select; fields use canonical .input-field (kept hb-form-group/-label/-hint).
|
|
10
|
+
* v1.4.0 — 2026-06-02 — Component unification (#6 stat cards): remove .hb-stat*;
|
|
11
|
+
* stats use canonical .stat-grid / .stat-card / .stat-card-value.accent / .stat-card-label.
|
|
12
|
+
* v1.5.0 — 2026-06-02 — Component unification (#19): tokenize .hb-alert-success/-error
|
|
13
|
+
* (hardcoded rgba/#ef4444 → --success/-danger -bg/-fg/-border) — dark-mode fix.
|
|
14
|
+
* v1.6.0 — 2026-06-02 — Component unification (#15 headers): tokenize .hb-page-title
|
|
15
|
+
* gradient (hardcoded #E8564A → var(--accent-deep)); now token-equivalent to
|
|
16
|
+
* canonical theme.css .page-title/.page-subtitle (candidates for future deletion).
|
|
17
|
+
* v1.7.0 — 2026-06-02 — Component unification (#18 category cards): remove .hb-category-card/
|
|
18
|
+
* -icon/-name/-count; tiles use canonical theme.css .category-card (kept .hb-categories-grid
|
|
19
|
+
* wrapper — 200px columns differ from marketplace's 160px). Removed hardcoded hover #E8564A
|
|
20
|
+
* and rgba(0,0,0,0.06) shadow (now tokenized in the canonical class) — dark-mode fix.
|
|
21
|
+
* v1.8.0 — 2026-06-02 — Component unification (#17 pagination): tokenize
|
|
22
|
+
* .hb-pagination .active background (hardcoded rgba(232,86,74,0.06) →
|
|
23
|
+
* var(--accent-subtle)) — dark-mode fix. Numbered markup left in place (scoped
|
|
24
|
+
* .hb-, different UI from the canonical prev/page/next Pagination).
|
|
25
|
+
* v1.9.0 — 2026-06-02 — Component unification (#16 tags): tokenize .hb-tag
|
|
26
|
+
* (rgba(232,86,74,0.06)/0.2 + #E8564A → --accent-subtle/--accent-border/--accent)
|
|
27
|
+
* and .hb-tag-shared (rgba(34,197,94,.12)/.3 → --success-bg/-border/-fg) —
|
|
28
|
+
* dark-mode fix. Markup left as .hb-tag (rounded-20px pill, bespoke vs .tag-pill).
|
|
29
|
+
*/
|
|
1
30
|
/* hobbies view — scoped under .hb */
|
|
2
31
|
.hb-wrap { position: relative; z-index: 1; max-width: 900px; margin: 0 auto; padding: 24px 16px 80px; }
|
|
3
|
-
.hb-nav { display: flex; align-items: center; justify-content: space-between; padding: 12px 0; margin-bottom: 24px; border-bottom: 1px solid
|
|
32
|
+
.hb-nav { display: flex; align-items: center; justify-content: space-between; padding: 12px 0; margin-bottom: 24px; border-bottom: 1px solid var(--border); }
|
|
4
33
|
.hb-nav-brand { color: var(--accent); font-weight: 700; font-size: 1rem; cursor: pointer; letter-spacing: .05em; }
|
|
5
34
|
.hb-nav-brand:hover { color: #E8564A; }
|
|
6
35
|
.hb-nav-links { display: flex; gap: 16px; align-items: center; }
|
|
7
36
|
.hb-nav-links a { color: var(--text-dim); text-decoration: none; font-size: .85rem; cursor: pointer; transition: color .2s; }
|
|
8
37
|
.hb-nav-links a:hover { color: var(--accent); }
|
|
9
38
|
.hb-lang-toggle { display: flex; margin-left: 8px; }
|
|
10
|
-
.hb-lang-btn { padding: 4px 10px; border: 1px solid
|
|
39
|
+
.hb-lang-btn { padding: 4px 10px; border: 1px solid var(--border); background: transparent; color: var(--text-muted); cursor: pointer; font-size: .75rem; font-weight: 700; transition: all .2s; }
|
|
11
40
|
.hb-lang-btn:first-child { border-radius: 4px 0 0 4px; }
|
|
12
41
|
.hb-lang-btn:last-child { border-radius: 0 4px 4px 0; }
|
|
13
42
|
.hb-lang-btn.active { background: var(--accent); color: #fff; border-color: var(--accent); }
|
|
14
|
-
|
|
43
|
+
/* hb-page-title is token-equivalent to canonical theme.css .page-title (candidate for future deletion → use .page-title). */
|
|
44
|
+
.hb-page-title { font-size: 1.8rem; font-weight: 700; background: linear-gradient(135deg, var(--accent), var(--accent-deep)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; margin-bottom: 8px; }
|
|
15
45
|
.hb-page-subtitle { color: var(--text-dim); font-size: 1rem; margin-bottom: 32px; }
|
|
16
|
-
.hb-card { background:
|
|
17
|
-
.hb-card:hover { background:
|
|
46
|
+
.hb-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 24px; margin-bottom: 16px; transition: background .2s, border-color .2s, box-shadow .2s; }
|
|
47
|
+
.hb-card:hover { background: var(--bg-surface); border-color: #E8564A; box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
|
|
18
48
|
.hb-card-link { display: block; text-decoration: none; color: inherit; cursor: pointer; }
|
|
19
49
|
.hb-card-title { font-size: 1.1rem; font-weight: 600; color: var(--text); margin-bottom: 8px; }
|
|
20
50
|
.hb-card-meta { color: var(--text-dim); font-size: .85rem; margin-bottom: 8px; }
|
|
21
51
|
.hb-tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; }
|
|
22
|
-
.hb-tag { display: inline-block; padding: 4px 12px; background:
|
|
23
|
-
.hb-tag-shared { background:
|
|
24
|
-
.hb-btn
|
|
25
|
-
|
|
26
|
-
.hb-btn-primary:hover { opacity: .9; box-shadow: 0 2px 8px rgba(232,86,74,0.2); }
|
|
27
|
-
.hb-btn-secondary { background: #F3F4F6; border: 1px solid #E5E7EB; color: var(--text); }
|
|
28
|
-
.hb-btn-secondary:hover { background: #E5E7EB; border-color: var(--accent); color: var(--accent); }
|
|
29
|
-
.hb-btn-danger { background: rgba(239,68,68,.15); border: 1px solid rgba(239,68,68,.3); color: #ef4444; }
|
|
30
|
-
.hb-btn-danger:hover { background: rgba(239,68,68,.25); }
|
|
31
|
-
.hb-btn-sm { padding: 6px 14px; font-size: .8rem; }
|
|
52
|
+
.hb-tag { display: inline-block; padding: 4px 12px; background: var(--accent-subtle); border: 1px solid var(--accent-border); border-radius: 20px; font-size: .8rem; color: var(--accent); white-space: nowrap; }
|
|
53
|
+
.hb-tag-shared { background: var(--success-bg); border-color: var(--success-border); color: var(--success-fg); }
|
|
54
|
+
/* .hb-btn* removed — hobbies uses canonical theme.css .btn-primary / .btn-outline /
|
|
55
|
+
.btn-danger (tokenized) / .btn-sm (anchor-safe). Unified 2026-06-02 (#4 buttons). */
|
|
32
56
|
.hb-form-group { margin-bottom: 16px; }
|
|
33
57
|
.hb-form-label { display: block; font-size: .85rem; color: var(--text-dim); margin-bottom: 6px; font-weight: 500; }
|
|
34
|
-
.hb-form-input
|
|
35
|
-
|
|
36
|
-
.hb-form-textarea { min-height: 80px; resize: vertical; }
|
|
37
|
-
.hb-form-select { appearance: auto; }
|
|
58
|
+
/* .hb-form-input/-textarea/-select removed — hobbies form fields use canonical
|
|
59
|
+
theme.css .input-field (focus ring added). Unified 2026-06-02 (#5). */
|
|
38
60
|
.hb-form-hint { font-size: .78rem; color: var(--text-muted); margin-top: 4px; }
|
|
39
|
-
.hb-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
.hb-stat-label { font-size: .78rem; color: var(--text-muted); margin-top: 4px; }
|
|
61
|
+
/* .hb-stat* removed — hobbies stats use canonical .stat-grid / .stat-card /
|
|
62
|
+
.stat-card-value.accent / .stat-card-label. Unified 2026-06-02 (#6). */
|
|
63
|
+
/* Grid wrapper kept per-view: hobbies uses 200px min-width columns (marketplace 160px). */
|
|
43
64
|
.hb-categories-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; margin-bottom: 32px; }
|
|
44
|
-
.hb-category-card
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
.hb-category-count { font-size: .78rem; color: var(--text-muted); margin-top: 4px; }
|
|
65
|
+
/* .hb-category-card/-icon/-name/-count removed — hobbies interest tiles use canonical
|
|
66
|
+
theme.css .category-card / -icon / -name / -count. The former rules were token-
|
|
67
|
+
equivalent; the hover #E8564A and rgba(0,0,0,0.06) shadow are now tokenized
|
|
68
|
+
(var(--accent)/var(--shadow-md)) — dark-mode fix. Unified 2026-06-02 (#18). */
|
|
49
69
|
.hb-empty { text-align: center; padding: 48px 16px; }
|
|
50
70
|
.hb-empty-icon { font-size: 3rem; margin-bottom: 16px; opacity: .4; }
|
|
51
71
|
.hb-empty-text { color: var(--text-dim); font-size: 1rem; }
|
|
52
72
|
.hb-alert { padding: 12px 16px; border-radius: var(--radius-sm); margin-bottom: 16px; font-size: .9rem; }
|
|
53
|
-
.hb-alert-success { background:
|
|
54
|
-
.hb-alert-error { background:
|
|
73
|
+
.hb-alert-success { background: var(--success-bg); border: 1px solid var(--success-border); color: var(--success-fg); }
|
|
74
|
+
.hb-alert-error { background: var(--danger-bg); border: 1px solid var(--danger-border); color: var(--danger-fg); }
|
|
55
75
|
.hb-facets { margin-bottom: 24px; }
|
|
56
76
|
.hb-facet-group { margin-bottom: 12px; }
|
|
57
77
|
.hb-facet-label { font-size: .78rem; color: var(--text-muted); text-transform: uppercase; letter-spacing: .05em; margin-bottom: 6px; }
|
|
58
78
|
.hb-facet-items { display: flex; flex-wrap: wrap; gap: 6px; }
|
|
59
|
-
.hb-facet-item { padding: 4px 10px; background:
|
|
79
|
+
.hb-facet-item { padding: 4px 10px; background: var(--bg-surface); border: 1px solid var(--border); border-radius: 20px; font-size: .78rem; color: var(--text-dim); cursor: pointer; transition: all .2s; }
|
|
60
80
|
.hb-facet-item:hover { border-color: var(--accent); color: var(--accent); }
|
|
61
81
|
.hb-pagination { display: flex; gap: 8px; justify-content: center; margin-top: 24px; }
|
|
62
|
-
.hb-pagination a { padding: 8px 16px; background:
|
|
82
|
+
.hb-pagination a { padding: 8px 16px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text); text-decoration: none; font-size: .85rem; cursor: pointer; }
|
|
63
83
|
.hb-pagination a:hover { border-color: var(--accent); color: var(--accent); }
|
|
64
|
-
.hb-pagination .active { border-color: var(--accent); color: var(--accent); background:
|
|
84
|
+
.hb-pagination .active { border-color: var(--accent); color: var(--accent); background: var(--accent-subtle); }
|
|
65
85
|
.hb-profile-header { display: flex; align-items: center; gap: 16px; margin-bottom: 24px; }
|
|
66
86
|
.hb-profile-avatar { font-size: 2.5rem; }
|
|
67
87
|
.hb-profile-name { font-size: 1.5rem; font-weight: 700; color: var(--text); }
|