From a869086ce9d585ab13546d16b4cf0c7e79f44df1 Mon Sep 17 00:00:00 2001 From: "Calum H." Date: Tue, 20 Jan 2026 19:56:24 +0000 Subject: [PATCH] polish(frontend): technical review QA (#5097) * feat: filtering + sorting alignment * polish: malicious summary modal changes * feat: better filter row using floating panel * fix: re-enable request * fix: lint * polish: jump back to files tab qol * feat: scroll to top of next card when done * fix: show lock icon on preview msg * feat: download no _blank * feat: show also marked in notif * feat: auto expand if only one class in the file * feat: proper page titles * fix: text-contrast typo * fix: lint * feat: QA changes * feat: individual report page + more qa * fix: back btn * fix: broken import * feat: quick reply msgs * fix: in other queue filter * fix: caching threads wrongly * fix: flag filter * feat: toggle enabled by default * fix: dont make btns opacity 50 --------- Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com> --- .../ui/moderation/MaliciousSummaryModal.vue | 27 +- .../ui/moderation/ModerationTechRevCard.vue | 85 ++++- apps/frontend/src/pages/moderation/index.vue | 2 + .../src/pages/moderation/reports/index.vue | 2 + .../moderation/technical-review/[id].vue | 304 +++++++++++++++++ .../index.vue} | 208 ++++++++---- .../src/modules/labrinth/projects/v3.ts | 36 ++ .../modules/labrinth/tech-review/internal.ts | 19 ++ .../api-client/src/modules/labrinth/types.ts | 42 +++ packages/assets/generated-icons.ts | 4 + packages/assets/icons/arrow-left.svg | 16 + packages/assets/icons/blend.svg | 16 + .../src/data/messages/tech-review/malware.md | 5 + .../tech-review/request-source-bin.md | 7 + .../tech-review/request-source-obf.md | 5 + .../messages/tech-review/request-source.md | 5 + .../tech-review/unclear-misleading.md | 7 + .../src/data/tech-review-quick-replies.ts | 28 +- .../ui/src/components/base/FloatingPanel.vue | 310 ++++++++++++++++++ packages/ui/src/components/base/index.ts | 1 + 20 files changed, 1046 insertions(+), 83 deletions(-) create mode 100644 apps/frontend/src/pages/moderation/technical-review/[id].vue rename apps/frontend/src/pages/moderation/{technical-review.vue => technical-review/index.vue} (71%) create mode 100644 packages/assets/icons/arrow-left.svg create mode 100644 packages/assets/icons/blend.svg create mode 100644 packages/moderation/src/data/messages/tech-review/malware.md create mode 100644 packages/moderation/src/data/messages/tech-review/request-source-bin.md create mode 100644 packages/moderation/src/data/messages/tech-review/request-source-obf.md create mode 100644 packages/moderation/src/data/messages/tech-review/request-source.md create mode 100644 packages/moderation/src/data/messages/tech-review/unclear-misleading.md create mode 100644 packages/ui/src/components/base/FloatingPanel.vue diff --git a/apps/frontend/src/components/ui/moderation/MaliciousSummaryModal.vue b/apps/frontend/src/components/ui/moderation/MaliciousSummaryModal.vue index f5b1fea8..4db8da5d 100644 --- a/apps/frontend/src/components/ui/moderation/MaliciousSummaryModal.vue +++ b/apps/frontend/src/components/ui/moderation/MaliciousSummaryModal.vue @@ -1,6 +1,6 @@ + + diff --git a/apps/frontend/src/pages/moderation/technical-review.vue b/apps/frontend/src/pages/moderation/technical-review/index.vue similarity index 71% rename from apps/frontend/src/pages/moderation/technical-review.vue rename to apps/frontend/src/pages/moderation/technical-review/index.vue index 8805653b..c3be85d2 100644 --- a/apps/frontend/src/pages/moderation/technical-review.vue +++ b/apps/frontend/src/pages/moderation/technical-review/index.vue @@ -1,23 +1,36 @@ + + + + diff --git a/packages/ui/src/components/base/index.ts b/packages/ui/src/components/base/index.ts index 6cb7af60..ebe2c790 100644 --- a/packages/ui/src/components/base/index.ts +++ b/packages/ui/src/components/base/index.ts @@ -27,6 +27,7 @@ export { default as FileInput } from './FileInput.vue' export type { FilterBarOption } from './FilterBar.vue' export { default as FilterBar } from './FilterBar.vue' export { default as FloatingActionBar } from './FloatingActionBar.vue' +export { default as FloatingPanel } from './FloatingPanel.vue' export { default as HeadingLink } from './HeadingLink.vue' export { default as HorizontalRule } from './HorizontalRule.vue' export { default as IconSelect } from './IconSelect.vue'