2940 Commits

Author SHA1 Message Date
melvinchia3636
44988ebf95 feat(api): add useForgeMutation hook with automatic toast errors
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
2026-06-26 15:25:14 +08:00
melvinchia3636
7d5560cb4d refactor(ui): replace Tooltip iconClassName with iconProps
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.
2026-06-26 15:24:42 +08:00
melvinchia3636
9fb4bee10d refactor: remove unused common.fetch action keys
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.
2026-06-26 15:24:01 +08:00
melvinchia3636
1b3b14adf7 perf(api): add in-memory cache for decrypted API keys
Cache decrypted API keys in a Map to avoid redundant decryption
on repeated lookups for the same key ID.
2026-06-26 15:23:29 +08:00
melvinchia3636
a92eb2175b fix: some more ui fixes 2026-06-25 09:48:26 +08:00
melvinchia3636
64a0b5cfed fix(client): fix a bug where no modules are loaded on first login until page refresh 2026-06-25 08:53:37 +08:00
melvinchia3636
ca4dd24b22 fix: fix locales preloading 2026-06-25 08:53:37 +08:00
melvinchia3636
955bd5ab61 fix(locales): hmm 2026-06-25 08:53:37 +08:00
melvinchia3636
a28b9b81a0 feat: add a feature to shutdown server after 5 failed login attempt 2026-06-25 08:53:37 +08:00
melvinchia3636
dc19e901f0 feat: minor improvements here and there 2026-06-25 08:53:37 +08:00
melvinchia3636
ff19fe08ec feat(i18n): add preloading for common namespace 2026-06-25 08:53:37 +08:00
melvinchia3636
4233f99e83 feat(client): layout and display improvements for module required list modal in api keys management module 2026-06-25 08:53:37 +08:00
melvinchia3636
ba4496cfed fix(client): fix locales in login page 2026-06-25 08:53:37 +08:00
melvinchia3636
e3de256d87 fix: various ui fixes 2026-06-25 08:53:37 +08:00
melvinchia3636
104976d51c feat(client): widget list in the manage widget modal is now grouped by modules 2026-06-25 08:53:37 +08:00
melvinchia3636
eb4a8677cd fix: fix issue related to localization 2026-06-25 08:53:37 +08:00
melvinchia3636
52662c9417 fix(server-utils): filter non-route properties from contract generation 2026-06-25 08:53:37 +08:00
melvinchia3636
323cc8c307 fix: minor ui fixes 2026-06-25 08:53:36 +08:00
melvinchia3636
7fd13794c0 fix: minor ui fixes 2026-06-25 08:53:36 +08:00
melvinchia3636
eaff3f4daa fix: minor localization and responsive fixes 2026-06-25 08:53:36 +08:00
melvinchia3636
21d31a7025 fix: remove namespace preload 2026-06-25 08:53:36 +08:00
melvinchia3636
aed7b924f1 fix: minor type fixes 2026-06-25 08:53:36 +08:00
melvinchia3636
781b1356af fix: miscellaneous fixes 2026-06-25 08:53:36 +08:00
melvinchia3636
463b84893e feat: add locale consistency checker script 2026-06-25 08:53:36 +08:00
melvinchia3636
3bd14d0332 fix(ui): vertically center sidebar item number badge with absolute positioning 2026-06-25 08:53:36 +08:00
melvinchia3636
3fe2fea20a feat(ui): add i18n translations for alert types and remove sidebar category keys 2026-06-25 08:53:36 +08:00
melvinchia3636
bd1389254c feat(ui): allow namespace=false to skip i18n translation across components 2026-06-25 08:53:36 +08:00
melvinchia3636
451abae5b3 feat(ui): add onCreate and onRecoveryRequested callbacks to WithMasterPassword 2026-06-25 08:53:36 +08:00
melvinchia3636
aeec0782b3 feat: support bulk creation of missing translation categories in module manager 2026-06-25 08:53:36 +08:00
melvinchia3636
a705ccbb21 fix(api): remove masterPasswordHash and hasMasterPassword from user schema 2026-06-25 08:53:36 +08:00
melvinchia3636
8a4350086b fix(localization): remove missing key reporting API and use client-side placeholder 2026-06-25 08:53:36 +08:00
melvinchia3636
fe72d4ace4 fix(encryption): generate fresh RSA keypair on every server restart 2026-06-25 08:53:36 +08:00
melvinchia3636
4732ddbcc8 fix: minor bug fixes 2026-06-25 08:53:36 +08:00
melvinchia3636
d412e72f4d fix(ui): fix some locales minor issue 2026-06-25 08:53:36 +08:00
melvinchia3636
f216ad3000 fix: add back locales for en 2026-06-25 08:53:36 +08:00
melvinchia3636
88d2ef6f11 feat: a lot of i18n improvements 2026-06-25 08:53:36 +08:00
melvinchia3636
cbe23d18b8 fix: some minor issues 2026-06-25 08:53:36 +08:00
melvinchia3636
b545723f18 fix: fix casing in tsconfig 2026-06-25 08:53:36 +08:00
melvinchia3636
b4dfe07762 fix: remove console.log and move ModalManager inside Suspense
- DashboardGrid: remove stray console.log
- routeBuilder: move ModalManager inside Suspense boundary
- docs: update form migration guide with corrected examples
2026-06-25 08:53:36 +08:00
melvinchia3636
42444b4c08 feat(api): track loaded modules in memory for availability checks
- Add moduleRegistry with hashedKey/fullName tracking
- Register modules on load in loadModuleRoutes
- Replace filesystem check with in-memory lookup in checkModulesAvailability
2026-06-25 08:53:36 +08:00
melvinchia3636
dad651b942 fix(ui): resolve i18n namespace and null-safety issues
- EmptyStateScreen: support scoped namespace in message translation
- useInputLabel: add defaultValue fallback instead of early return
- ModalHeader: guard null namespace in useModuleTranslation
- Icon: remove redundant inline-block style prop
- contract: normalize JSON formatting
2026-06-25 08:53:36 +08:00
melvinchia3636
22569bbc32 refactor(api): restructure types and exports with barrel files
- Split forge_proxy.types.ts into contract.types.ts and io.types.ts
- Add barrel exports for core/, providers/, utils/, typescript/
- Restrict untyped and core helpers to root proxy only
- Add key, schema, endpoint to intermediate proxy types
- Disable rollupTypes for barrel compatibility
2026-06-25 08:53:36 +08:00
melvinchia3636
43e618a383 refactor: codebase linting 2026-06-25 08:53:36 +08:00
melvinchia3636
e15009d711 refactor: codebase linting 2026-06-25 08:53:36 +08:00
melvinchia3636
eeeec026a4 style: apply eslint local/padding-react-hooks auto-fix across codebase
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.
2026-06-25 08:53:36 +08:00
melvinchia3636
5682a22205 style: apply eslint local/padding-react-hooks auto-fix across codebase
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.
2026-06-25 08:53:35 +08:00
melvinchia3636
18602b20aa refactor: migrate eslint config to TS with modular rules and add local/padding-react-hooks rule
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.
2026-06-25 08:53:35 +08:00
melvinchia3636
032e577732 refactor(localization): extract i18n into @lifeforge/localization package
- 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
2026-06-25 08:53:35 +08:00
melvinchia3636
a1509bbaee refactor: massive codebase folder restructuring 2026-06-25 08:53:35 +08:00
melvinchia3636
bdb860853c build: introduce to turborepo 2026-06-25 08:53:34 +08:00