Introduce useForgeMutation that wraps useMutation with:
- Automatic query invalidation from queryKey config
- Default error handling via common.fetch:failure locale
- setForgeMutationErrorHandler for global error toast setup
- Action translation support through common.fetch:action.* keys
Replace the string-only iconClassName prop on the Tooltip component
with a full iconProps object, allowing consumers to pass any Icon
prop (color, size, etc.) instead of relying on Tailwind class names.
Keep only create/update/delete action keys for the common.fetch
namespace. Remove all unused action variants (pin, archive, save, etc.)
that are never referenced in the codebase.
- Add moduleRegistry with hashedKey/fullName tracking
- Register modules on load in loadModuleRoutes
- Replace filesystem check with in-memory lookup in checkModulesAvailability
Automatically fix padding lines around React hook calls per the new
local/padding-react-hooks rule: remove blank lines between consecutive
hooks, add blank lines after hooks before const/expression statements,
and remove trailing blank lines after const/expression blocks.
Automatically fix padding lines around React hook calls per the new
local/padding-react-hooks rule: remove blank lines between consecutive
hooks, add blank lines after hooks before const/expression statements,
and remove trailing blank lines after const/expression blocks.
Replace eslint.config.js with eslint.config.ts and split rules into modular
eslint/ files (react, sonar, style, tests, stories, imports). Add custom
local/padding-react-hooks rule that enforces padding around React hook calls
(no blank lines between hooks, required before/after const/expression). Add
@types/eslint-plugin-jsx-a11y and @typescript-eslint/utils as dev deps.
- Create new @lifeforge/localization package with client-i18n-config, I18nInitProvider, and useModuleTranslation hook
- Rename ModuleHeaderStateProvider -> ModuleMetadataProvider and move to @lifeforge/federation
- Move I18nInitProvider from apps/web to @lifeforge/localization with configurable init/fallbacks
- Add module name to ModuleMetadataProvider context for scoped translations
- Wire up @lifeforge/localization and @lifeforge/federation as dependencies in @lifeforge/ui
- Update ModuleHeader to use useModuleTranslation for scoped i18n namespaces
- Register @lifeforge/localization in shared-packages config
- Update docs vite config with federation plugin