From 4f5638348e1bc6fa068d8d51295a9e190632efd1 Mon Sep 17 00:00:00 2001 From: Borja <158476064+borja-writefull@users.noreply.github.com> Date: Tue, 25 Nov 2025 09:48:35 +0100 Subject: [PATCH] Add `keywords generation` functionality (#29842) GitOrigin-RevId: 1be8739496279af42ffbc299911db92c5caefece --- .../Features/Project/ProjectController.mjs | 1 + ...alSymbolsRoundedUnfilledPartialSlice.woff2 | Bin 8200 -> 8364 bytes .../material-symbols/unfilled-symbols.mjs | 2 ++ .../frontend/js/i18n-resources/writefull.ts | 6 +++++- 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/services/web/app/src/Features/Project/ProjectController.mjs b/services/web/app/src/Features/Project/ProjectController.mjs index 74bb422d7a..fe7eb67aca 100644 --- a/services/web/app/src/Features/Project/ProjectController.mjs +++ b/services/web/app/src/Features/Project/ProjectController.mjs @@ -454,6 +454,7 @@ const _ProjectController = { 'chat-edit-delete', 'ai-workbench', 'compile-timeout-target-plans', + 'writefull-keywords-generator', 'writefull-figure-generator', ].filter(Boolean) diff --git a/services/web/frontend/fonts/material-symbols/MaterialSymbolsRoundedUnfilledPartialSlice.woff2 b/services/web/frontend/fonts/material-symbols/MaterialSymbolsRoundedUnfilledPartialSlice.woff2 index 743912cb1380a93d3e71891723305bbd3cccb6bf..c377d5b0e2ecbd2714333b72068464040176bda7 100644 GIT binary patch literal 8364 zcmV;dAXDFWPew8T0RR9103fUY4gdfE07|F;03cBS0RR9100000000000000000000 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 Ca!nHe literal 8200 zcmV+jAot&QPew8T0RR9103Zke4gdfE07%FH03WUZ0RR9100000000000000000000 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 ui8>LfgT>QFg9i!}BA