Files
fusion/packages/dashboard/app/components/ActivityLogModal.css
Fusion Agent dfa25335d0 FN-066: add task-ID search to Activity Log
Add task-ID filtering across the Activity Log data, API, and dashboard UI.\n\n- Index and expose task IDs in central activity audit queries.\n- Add API, hook, modal, styling, localization, and regression-test coverage for search.\n- Include the published-package changeset and PostgreSQL migration.\n\nFiles changed:\n .changeset/fn-066-activity-log-task-search.md      |  7 +++\n .../postgres/activity-log-parity.pg.test.ts        | 20 ++++++-\n .../postgres/central-core-backend.test.ts          | 16 +++++\n .../src/__tests__/postgres/schema-applier.test.ts  |  4 +-\n .../core/src/async-stores/async-central-core.ts    | 16 ++++-\n packages/core/src/central/central-core.ts          |  5 +\n .../core/src/postgres/migrations/0000_initial.sql  |  2 +\n .../0061_fn_066_activity_log_task_id_index.sql     |  7 +++\n packages/core/src/postgres/schema-applier.ts       | 13 ++++\n packages/core/src/postgres/schema/central.ts       |  1 +\n packages/core/src/store.ts                         |  2 +\n packages/core/src/task-store/async/async-audit.ts  | 19 +++--\n packages/dashboard/README.md                       |  1 +\n .../app/__tests__/activity-log-layout.test.ts      |  5 ++\n .../dashboard/app/__tests__/api-projects.test.ts   |  4 +\n packages/dashboard/app/api/projects/projects.ts    |  4 +\n packages/dashboard/app/api/system/scheduling.ts    |  3 +\n .../dashboard/app/components/ActivityLogModal.css  | 14 +++++\n .../dashboard/app/components/ActivityLogModal.tsx  | 68 +++++++++++-------\n packages/dashboard/app/components/ScriptsModal.css | 21 +++++++\n .../components/__tests__/ActivityLogModal.test.tsx | 58 ++++++++++++++++++\n .../app/hooks/__tests__/useActivityLog.test.ts     | 35 +++++++++++\n packages/dashboard/app/hooks/useActivityLog.ts     | 14 +++--\n .../src/__tests__/activity-log-route.test.ts       | 35 +++++++++++\n .../src/routes/register-setup-activity-routes.ts   | 28 +++++---\n packages/i18n/locales/en/app.json                  |  5 +\n packages/i18n/locales/es/app.json                  |  5 +\n packages/i18n/locales/fr/app.json                  |  5 +\n packages/i18n/locales/ko/app.json                  |  5 +\n packages/i18n/locales/pt-BR/app.json               |  5 +\n packages/i18n/locales/zh-CN/app.json               |  5 +\n packages/i18n/locales/zh-TW/app.json               |  5 +\n packages/i18n/src/resources.d.ts                   |  3 +\n 33 files changed, 384 insertions(+), 56 deletions(-)

Fusion-Task-Id: FN-066

Fusion-Task-Lineage: 055e2383-9701-4b7e-9f7d-92c2fe175049

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 04:32:52 +00:00

145 lines
5.4 KiB
CSS

/*
FNXC:RightDockEmbedded 2026-06-22-12:00:
Activity Log embedded (right-dock) styles live here with the ActivityLogModal component. These rules were previously appended to ScriptsModal.css by mistake; the gm/automation rules stay in ScriptsModal.css. The base .activity-log-* modal rules still live in ScriptsModal.css (imported by ActivityLogModal.tsx) pending a full extraction.
*/
/*
FNXC:RightDockEmbedded 2026-06-22-00:00:
Right-dock redesign renders the activity log inline inside the dock container instead of as a fixed popup overlay.
The embedded root is a plain flow box that fills the dock; the inner panel sheds overlay chrome (fixed sizing, shadow, radius, resize) and fills 100% of the host so the dock owns the frame and its own header/close.
FNXC:RightDockEmbedded 2026-06-23-20:45:
When Activity Log is popped out into the resizable right-dock window, the floating shell owns resizing and borders. The embedded Activity Log must stay min-size:0 and borderless so the window can remain at the user's resized dimensions and no extra right-side border appears inside the expanded panel.
*/
.activity-log-embedded.right-dock-embedded-view {
display: flex;
width: 100%;
height: 100%;
min-width: 0;
min-height: 0;
}
.activity-log-modal--embedded {
flex: 1 1 auto;
width: 100%;
height: 100%;
min-width: 0;
min-height: 0;
max-width: none;
max-height: none;
box-shadow: none;
border: 0;
border-radius: 0;
resize: none;
/*
FNXC:RightDockEmbedded 2026-06-22-00:00:
The dock is narrow (~280-420px) while the viewport stays desktop, so the view's @media (max-width:768px) mobile
rules never fire. Make the embedded panel an inline-size query container so the dock width — not the viewport —
drives the mobile single-column layout below. See the @container activity-log-embedded block below.
*/
container-type: inline-size;
container-name: activity-log-embedded;
}
/*
FNXC:RightDockEmbedded 2026-06-22-19:05:
In the right dock the tab strip already labels the view, and in the pop-out the RightDockExpandModal supplies its own header — so the embedded variant's inner "Activity Log" header row (.activity-log-header) is redundant chrome there. Hide it by default in the embedded variant. The header stays in the DOM (not unmounted) so query-by-text/test hooks still resolve; only display is suppressed. The body's flex column fills the freed space since the header was flex-shrink:0.
*/
.activity-log-modal--embedded .activity-log-header {
display: none;
}
/*
FNXC:RightDockEmbedded 2026-06-22-19:05:
On real mobile-narrow the view goes full-screen with no dock tab strip or pop-out header, so it must own its own title again. The viewport @media (max-width:768px) fires only on a true narrow viewport (never inside the desktop dock/pop-out, where the @container query drives layout instead), so restoring the header here brings the title back exactly when the chrome is gone.
*/
@media (max-width: 768px) {
.activity-log-modal--embedded .activity-log-header {
display: flex;
}
.activity-log-task-search {
flex-basis: 100%;
}
}
/*
FNXC:RightDockEmbedded 2026-06-22-00:00:
Mirror the phone-width (@media max-width:768px) activity-log layout-stacking rules for the narrow dock, scoped to the
embedded variant. Header wraps (title + close on top row, actions/filters stack full-width), filters/selects go 100%,
the active-filters bar wraps, and entry headers/details/text wrap instead of overflowing horizontally. Only layout
stacking is mirrored; behavior and the real @media rules are untouched.
*/
@container activity-log-embedded (max-width: 560px) {
.activity-log-modal--embedded .activity-log-header {
flex-wrap: wrap;
gap: var(--space-sm);
padding: var(--space-md) var(--space-lg);
}
.activity-log-modal--embedded .activity-log-title {
flex: 1 1 auto;
order: 0;
}
.activity-log-modal--embedded .activity-log-actions {
flex: 1 1 100%;
flex-wrap: wrap;
gap: var(--space-xs);
order: 2;
}
.activity-log-modal--embedded .activity-log-filter,
.activity-log-modal--embedded .activity-log-filter--project {
flex: 1 1 0;
min-width: 0;
}
.activity-log-modal--embedded .activity-log-filter-select {
width: 100%;
}
.activity-log-modal--embedded .activity-log-active-filters {
flex-wrap: wrap;
padding: var(--space-sm) var(--space-lg);
gap: var(--space-xs);
}
.activity-log-modal--embedded .activity-log-task-search {
flex: 1 1 100%;
min-width: 0;
}
.activity-log-modal--embedded .activity-log-clear-filters {
margin-left: 0;
}
/* FNXC:ActivityLogTaskSearch 2026-08-20-04:17: narrow docks keep the durable task-ID control reachable without horizontal overflow. */
.activity-log-modal--embedded .activity-log-task-search-label {
flex: 0 0 auto;
}
/*
FNXC:ActivityFeedMobile 2026-07-16-00:00:
FN-8122 keeps the narrow right-dock Activity Log aligned with the mobile modal so
wrapped entries retain a larger right inset when the container, not viewport, is narrow.
*/
.activity-log-modal--embedded .activity-log-content {
padding: var(--space-md) var(--space-xl);
}
.activity-log-modal--embedded .activity-log-entry-header {
flex-wrap: wrap;
gap: var(--space-xs);
}
.activity-log-modal--embedded .activity-log-entry-details {
flex-wrap: wrap;
word-break: break-word;
}
.activity-log-modal--embedded .activity-log-entry-text {
word-break: break-word;
}
}