- 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
- Create new @lifeforge/api package with forge proxy, endpoint, encryption, fetchAPI, and API providers
- Move AuthProvider from shared to client-local
- Move WidgetConfig/widgetConfigSchema from shared to @lifeforge/configs
- Add @lifeforge/api as peerDependency in all apps and dependent packages
- Update all imports across client, apps, ui, and federation
- Add build-api script to postinstall
- Create @lifeforge/configs package with shared client/module Vite configs
and the `@` path alias resolver extracted from client/vite.config.ts
- Create @lifeforge/federation package with module loading, federation
provider, and route utilities moved out of the client app
- Rename packages/lifeforge-log → packages/log
- Rename packages/lifeforge-server-utils → packages/server-utils
- Update all imports, tsconfig references, Dockerfiles, and workspace
scripts to reflect the new package names and locations