@shepai/cli 1.162.0 → 1.163.0-pr499.0ce2086
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -0
- package/apis/json-schema/FabLayoutConfig.yaml +11 -0
- package/apis/json-schema/Settings.yaml +3 -0
- package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.d.ts +20 -0
- package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/index.d.ts +1 -1
- package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/repositories/list-github-organizations.use-case.d.ts +13 -0
- package/dist/packages/core/src/application/use-cases/repositories/list-github-organizations.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/repositories/list-github-organizations.use-case.js +35 -0
- package/dist/packages/core/src/domain/generated/output.d.ts +13 -0
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.js +5 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +6 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/050-add-fab-position-swapped.d.ts +15 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/050-add-fab-position-swapped.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/050-add-fab-position-swapped.js +20 -0
- package/dist/packages/core/src/infrastructure/services/external/github-repository.service.d.ts +2 -1
- package/dist/packages/core/src/infrastructure/services/external/github-repository.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/external/github-repository.service.js +20 -0
- package/dist/src/presentation/cli/commands/repo/add.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/repo/add.command.js +3 -1
- package/dist/src/presentation/tui/wizards/github-import.wizard.d.ts +5 -2
- package/dist/src/presentation/tui/wizards/github-import.wizard.d.ts.map +1 -1
- package/dist/src/presentation/tui/wizards/github-import.wizard.js +38 -6
- package/dist/src/presentation/web/app/actions/get-git-log.d.ts +44 -0
- package/dist/src/presentation/web/app/actions/get-git-log.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/get-git-log.js +125 -0
- package/dist/src/presentation/web/app/actions/list-github-organizations.d.ts +6 -0
- package/dist/src/presentation/web/app/actions/list-github-organizations.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/list-github-organizations.js +17 -0
- package/dist/src/presentation/web/app/actions/list-github-repositories.d.ts +1 -0
- package/dist/src/presentation/web/app/actions/list-github-repositories.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/open-folder.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/open-folder.js +5 -2
- package/dist/src/presentation/web/app/layout.d.ts.map +1 -1
- package/dist/src/presentation/web/app/layout.js +3 -1
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +46 -15
- package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.js +77 -5
- package/dist/src/presentation/web/components/common/control-center-drawer/use-drawer-sync.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/use-drawer-sync.js +11 -0
- package/dist/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.js +10 -9
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts +5 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.js +24 -13
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.js +56 -81
- package/dist/src/presentation/web/components/common/github-import-dialog/github-repo-browser.d.ts +8 -1
- package/dist/src/presentation/web/components/common/github-import-dialog/github-repo-browser.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/github-import-dialog/github-repo-browser.js +37 -7
- package/dist/src/presentation/web/components/common/github-import-dialog/github-repo-browser.stories.d.ts +1 -0
- package/dist/src/presentation/web/components/common/github-import-dialog/github-repo-browser.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/github-import-dialog/github-repo-browser.stories.js +35 -0
- package/dist/src/presentation/web/components/common/open-action-menu/open-action-menu.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/open-action-menu/open-action-menu.js +11 -6
- package/dist/src/presentation/web/components/common/repository-node/repository-node.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/chat/ChatSheet.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/chat/ChatSheet.js +22 -2
- package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +15 -1
- package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/settings-page-client.js +9 -2
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +7 -2
- package/dist/src/presentation/web/hooks/fab-layout-context.d.ts +18 -0
- package/dist/src/presentation/web/hooks/fab-layout-context.d.ts.map +1 -0
- package/dist/src/presentation/web/hooks/fab-layout-context.js +19 -0
- package/dist/src/presentation/web/hooks/use-animations-enabled.d.ts +6 -0
- package/dist/src/presentation/web/hooks/use-animations-enabled.d.ts.map +1 -0
- package/dist/src/presentation/web/hooks/use-animations-enabled.js +30 -0
- package/dist/src/presentation/web/lib/fab-layout.d.ts +11 -0
- package/dist/src/presentation/web/lib/fab-layout.d.ts.map +1 -0
- package/dist/src/presentation/web/lib/fab-layout.js +21 -0
- package/dist/translations/ar/web.json +8 -0
- package/dist/translations/de/web.json +8 -0
- package/dist/translations/en/web.json +8 -0
- package/dist/translations/es/web.json +8 -0
- package/dist/translations/fr/web.json +8 -0
- package/dist/translations/he/web.json +8 -0
- package/dist/translations/pt/web.json +8 -0
- package/dist/translations/ru/web.json +8 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +3 -3
- package/web/.next/required-server-files.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +71 -56
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +67 -52
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +73 -58
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +87 -72
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +87 -72
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +82 -52
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +82 -52
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +67 -52
- package/web/.next/server/app/(dashboard)/chat/page.js +2 -2
- package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +73 -58
- package/web/.next/server/app/(dashboard)/create/page.js +2 -2
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +87 -72
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +2 -2
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +87 -72
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +2 -2
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +67 -52
- package/web/.next/server/app/(dashboard)/page.js +2 -2
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +82 -52
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +2 -2
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +82 -52
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +2 -2
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +25 -10
- package/web/.next/server/app/_not-found/page.js +2 -2
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
- package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
- package/web/.next/server/app/api/graph-data/route.js +1 -1
- package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
- package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
- package/web/.next/server/app/settings/page/server-reference-manifest.json +31 -16
- package/web/.next/server/app/settings/page.js +2 -2
- package/web/.next/server/app/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +35 -20
- package/web/.next/server/app/skills/page.js +2 -2
- package/web/.next/server/app/skills/page.js.nft.json +1 -1
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/server-reference-manifest.json +35 -20
- package/web/.next/server/app/tools/page.js +2 -2
- package/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/server-reference-manifest.json +25 -10
- package/web/.next/server/app/version/page.js +2 -2
- package/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/{[root-of-the-server]__beda892a._.js → [root-of-the-server]__c78383b1._.js} +2 -2
- package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_ceb2fa1e._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +3 -3
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{7f428_lucide-react_dist_esm_icons_4b319ae6._.js → 7f428_lucide-react_dist_esm_icons_281e0ef8._.js} +2 -2
- package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_281e0ef8._.js.map +1 -0
- package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_a593f310._.js +3 -0
- package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_a593f310._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1abe77bb._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1abe77bb._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__23b5ca2c._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__563e4faf._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__563e4faf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6eb2a2b0._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7528eb6f._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7562afc6._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7562afc6._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__821a11c1._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__821a11c1._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__86ff0bc5._.js +7 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__86ff0bc5._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8b0aac03._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8b0aac03._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__98740ee4._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__98740ee4._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ba9f9e11._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ba9f9e11._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e0be67c7._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e0be67c7._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_02e01240._.js +4 -0
- package/web/.next/server/chunks/ssr/_02e01240._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
- package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_9495d50b._.js → _0727935d._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_9495d50b._.js.map → _0727935d._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_0dc06d07._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
- package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_bcaea66b._.js → _1879404a._.js} +2 -2
- package/web/.next/server/chunks/ssr/_1879404a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_18886033._.js +4 -0
- package/web/.next/server/chunks/ssr/_18886033._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_b9ba2473._.js → _1e08a336._.js} +2 -2
- package/web/.next/server/chunks/ssr/_1e08a336._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_22e00a14._.js +4 -0
- package/web/.next/server/chunks/ssr/_22e00a14._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_07635b7c._.js → _3625b35c._.js} +2 -2
- package/web/.next/server/chunks/ssr/_3625b35c._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_4d49a312._.js +3 -0
- package/web/.next/server/chunks/ssr/_4d49a312._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_5119a3df._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_9215e9ec._.js +3 -0
- package/web/.next/server/chunks/ssr/_9215e9ec._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_954c5b3f._.js +3 -0
- package/web/.next/server/chunks/ssr/_954c5b3f._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_a5a5901d._.js +4 -0
- package/web/.next/server/chunks/ssr/_a5a5901d._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_ad09f271._.js +4 -0
- package/web/.next/server/chunks/ssr/_ad09f271._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_b7a43c05._.js +3 -0
- package/web/.next/server/chunks/ssr/_b7a43c05._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_c3f595c6._.js +4 -0
- package/web/.next/server/chunks/ssr/_c3f595c6._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_c45aee16._.js +3 -0
- package/web/.next/server/chunks/ssr/_c45aee16._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_1c309165._.js → _cc654b75._.js} +3 -3
- package/web/.next/server/chunks/ssr/_cc654b75._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_ea9e1556._.js +4 -0
- package/web/.next/server/chunks/ssr/_ea9e1556._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_73e1eb5f._.js → _ea9f5467._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_73e1eb5f._.js.map → _ea9f5467._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_f1ba9be6._.js +6 -0
- package/web/.next/server/chunks/ssr/_f1ba9be6._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_f33cd07e._.js +6 -0
- package/web/.next/server/chunks/ssr/_f33cd07e._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_f8b45233._.js +4 -0
- package/web/.next/server/chunks/ssr/_f8b45233._.js.map +1 -0
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +3 -0
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules__pnpm_1300ae39._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules__pnpm_1300ae39._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_select_tsx_45d6b8ae._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_select_tsx_45d6b8ae._.js.map +1 -0
- package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js +1 -1
- package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js.map +1 -1
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +672 -495
- package/web/.next/static/chunks/039b43423300c5fb.js +7 -0
- package/web/.next/static/chunks/{04b3e8b2c0b2a310.js → 16faea5f198d1c15.js} +2 -2
- package/web/.next/static/chunks/28ae5046faef6cec.js +1 -0
- package/web/.next/static/chunks/29f0d874b1fde3d6.js +5 -0
- package/web/.next/static/chunks/2c498b3dc30a33d4.js +1 -0
- package/web/.next/static/chunks/3b9e9bcb040b302b.js +1 -0
- package/web/.next/static/chunks/400e93efac983a76.css +1 -0
- package/web/.next/static/chunks/5a5455d111b22e62.js +1 -0
- package/web/.next/static/chunks/76e2b554ca427213.js +1 -0
- package/web/.next/static/chunks/779b5c49587b074e.js +1 -0
- package/web/.next/static/chunks/89f0ff47b59fcd7b.js +1 -0
- package/web/.next/static/chunks/{1db4dfa35a1637ed.js → 91ff36bca978b7c0.js} +1 -1
- package/web/.next/static/chunks/966eb2688300b7f5.js +1 -0
- package/web/.next/static/chunks/971e52f3f386ccfd.js +1 -0
- package/web/.next/static/chunks/9d6b4bfb854588a9.js +1 -0
- package/web/.next/static/chunks/{2770aabb38d76609.js → a76c0a69840530a0.js} +1 -1
- package/web/.next/static/chunks/a8243f8d06bdcef0.js +5 -0
- package/web/.next/static/chunks/b63e6727c84f30e2.js +1 -0
- package/web/.next/static/chunks/c744b25661a572d6.js +5 -0
- package/web/.next/static/chunks/c89c71e1d2e4e3f6.js +1 -0
- package/web/.next/static/chunks/{192dd30a464572ef.js → fc52571f411eb0c7.js} +2 -2
- package/web/.next/server/chunks/[root-of-the-server]__beda892a._.js.map +0 -1
- package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_4b319ae6._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__209c9597._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__209c9597._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__27301e38._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__27301e38._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__56b70465._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__56b70465._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6fecf886._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6fecf886._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8d27866c._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8d27866c._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9f3504c7._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9f3504c7._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__bd6ed91a._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__bd6ed91a._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c30f1f82._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c30f1f82._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e91ffd5e._.js +0 -7
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e91ffd5e._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ee0eaaf9._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ee0eaaf9._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_07635b7c._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_1c309165._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_3a0b989f._.js +0 -6
- package/web/.next/server/chunks/ssr/_3a0b989f._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_573caadf._.js +0 -3
- package/web/.next/server/chunks/ssr/_573caadf._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_5f69c13f._.js +0 -4
- package/web/.next/server/chunks/ssr/_5f69c13f._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_7c5b97c6._.js +0 -4
- package/web/.next/server/chunks/ssr/_7c5b97c6._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_82c57f10._.js +0 -4
- package/web/.next/server/chunks/ssr/_82c57f10._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_9c5bd84a._.js +0 -3
- package/web/.next/server/chunks/ssr/_9c5bd84a._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_a0e3f7e4._.js +0 -4
- package/web/.next/server/chunks/ssr/_a0e3f7e4._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_ac4a3873._.js +0 -3
- package/web/.next/server/chunks/ssr/_ac4a3873._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_b9ba2473._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_bcaea66b._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_ca0aa7f0._.js +0 -4
- package/web/.next/server/chunks/ssr/_ca0aa7f0._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_cb5a021e._.js +0 -4
- package/web/.next/server/chunks/ssr/_cb5a021e._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_cfbd1d7e._.js +0 -3
- package/web/.next/server/chunks/ssr/_cfbd1d7e._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_d86175ae._.js +0 -4
- package/web/.next/server/chunks/ssr/_d86175ae._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_d8bedf13._.js +0 -4
- package/web/.next/server/chunks/ssr/_d8bedf13._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_d90b0a06._.js +0 -3
- package/web/.next/server/chunks/ssr/_d90b0a06._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_fa7efce3._.js +0 -6
- package/web/.next/server/chunks/ssr/_fa7efce3._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules__pnpm_8ec2c790._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules__pnpm_8ec2c790._.js.map +0 -1
- package/web/.next/static/chunks/0a79dfbb8486b66e.js +0 -5
- package/web/.next/static/chunks/14d9d9181bb4e337.js +0 -1
- package/web/.next/static/chunks/1d980f961818ff68.js +0 -1
- package/web/.next/static/chunks/2c9404cf96b0a5a0.js +0 -1
- package/web/.next/static/chunks/47477ed4c5871747.js +0 -1
- package/web/.next/static/chunks/4864ff06a738d58b.js +0 -1
- package/web/.next/static/chunks/5281c5a2011132bc.js +0 -5
- package/web/.next/static/chunks/63b4954715fc3423.js +0 -1
- package/web/.next/static/chunks/74db65fa7bfb80bd.js +0 -1
- package/web/.next/static/chunks/7cd7aef397d53b94.js +0 -1
- package/web/.next/static/chunks/83928a921868a809.js +0 -1
- package/web/.next/static/chunks/86c476f04ff32e7b.css +0 -1
- package/web/.next/static/chunks/a81350e847797ff8.js +0 -1
- package/web/.next/static/chunks/cb41e1da2ce3a710.js +0 -7
- package/web/.next/static/chunks/d0613380bbaa9a8e.js +0 -1
- package/web/.next/static/chunks/d2cbeefbc8967b16.js +0 -1
- package/web/.next/static/chunks/d6e702c209c413ce.js +0 -5
- /package/web/.next/static/{GXMtXdKTjklQ1IkrOohzE → SFr_DcWGpl2mSNLzCZet_}/_buildManifest.js +0 -0
- /package/web/.next/static/{GXMtXdKTjklQ1IkrOohzE → SFr_DcWGpl2mSNLzCZet_}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{GXMtXdKTjklQ1IkrOohzE → SFr_DcWGpl2mSNLzCZet_}/_ssgManifest.js +0 -0
package/dist/src/presentation/web/components/features/control-center/control-center-inner.js
CHANGED
|
@@ -16,6 +16,7 @@ import { useSoundAction } from '../../../hooks/use-sound-action.js';
|
|
|
16
16
|
import { useDrawerCloseGuard } from '../../../hooks/drawer-close-guard.js';
|
|
17
17
|
import { useViewportPersistence } from '../../../hooks/use-viewport-persistence.js';
|
|
18
18
|
import { useSidebar } from '../../ui/sidebar.js';
|
|
19
|
+
import { useFabLayout } from '../../../hooks/fab-layout-context.js';
|
|
19
20
|
import { ControlCenterEmptyState } from './control-center-empty-state.js';
|
|
20
21
|
import { useControlCenterState } from './use-control-center-state.js';
|
|
21
22
|
const AUTO_FOCUS_OPTIONS = {
|
|
@@ -353,11 +354,24 @@ export function ControlCenterInner({ initialNodes, initialEdges }) {
|
|
|
353
354
|
const canvasToolbar = (_jsx(CanvasToolbar, { showArchived: showArchived, onToggleArchived: () => setShowArchived(!showArchived), onResetViewport: resetViewport }));
|
|
354
355
|
return (_jsxs(_Fragment, { children: [_jsx(FeaturesCanvas, { nodes: showCanvas ? displayNodes : [], edges: showCanvas ? edges : [], selectedFeatureId: selectedFeatureId, selectedRepository: selectedRepository, defaultViewport: defaultViewport, onNodesChange: onNodesChange, onConnect: handleConnect, onAddFeature: handleAddFeature, onNodeClick: handleNodeClick, onPaneClick: handleClearDrawers, onMoveEnd: handleMoveEnd, toolbar: canvasToolbar, emptyState: _jsx(ControlCenterEmptyState, { onRepositorySelect: addRepoAndFocus }) }), showCanvas ? _jsx(CreateFab, { actions: fabActions }) : null] }));
|
|
355
356
|
}
|
|
356
|
-
/** (+) FAB that tracks sidebar width via CSS var + transition.
|
|
357
|
+
/** (+) FAB that tracks sidebar width via CSS var + transition.
|
|
358
|
+
* When fabLayout.swapPosition is true, moves to the end side (right in LTR). */
|
|
357
359
|
function CreateFab({ actions }) {
|
|
358
360
|
const { state } = useSidebar();
|
|
359
361
|
const { i18n } = useTranslation('web');
|
|
362
|
+
const { swapPosition } = useFabLayout();
|
|
360
363
|
const isRtl = i18n.dir() === 'rtl';
|
|
364
|
+
// Default: start side (left in LTR), tracking sidebar width
|
|
365
|
+
// Swapped: end side (right in LTR), fixed 32px from edge
|
|
366
|
+
if (swapPosition) {
|
|
367
|
+
const positionStyle = isRtl
|
|
368
|
+
? {
|
|
369
|
+
left: 'calc(var(--sidebar-width-icon) + 32px)',
|
|
370
|
+
transition: 'left 200ms ease-in-out',
|
|
371
|
+
}
|
|
372
|
+
: { right: '32px', transition: 'right 200ms ease-in-out' };
|
|
373
|
+
return (_jsx(FloatingActionButton, { actions: actions, className: "!fixed bottom-6", style: positionStyle }));
|
|
374
|
+
}
|
|
361
375
|
// Sidebar expanded = var(--sidebar-width) = 16rem, collapsed = var(--sidebar-width-icon) = 3rem
|
|
362
376
|
// Position just outside the sidebar edge with 16px gap
|
|
363
377
|
const offset = state === 'expanded'
|
package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-page-client.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/settings-page-client.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"settings-page-client.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/settings-page-client.tsx"],"names":[],"mappings":"AA4CA,OAAO,KAAK,EACV,QAAQ,EAKT,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AA8B/E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC1C;AA+QD,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,kBAAkB,GACnB,EAAE,uBAAuB,2CAi3CzB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useState, useTransition, useRef, useEffect, useCallback } from 'react';
|
|
4
|
-
import { Check, Bot, Terminal, GitBranch, Activity, Bell, Flag, Database, Globe, Minus, Plus, ExternalLink, Settings2, Timer, MessageSquare, } from 'lucide-react';
|
|
4
|
+
import { Check, Bot, Terminal, GitBranch, Activity, Bell, Flag, Database, Globe, Minus, Plus, ExternalLink, Settings2, Timer, MessageSquare, LayoutGrid, } from 'lucide-react';
|
|
5
5
|
import { toast } from 'sonner';
|
|
6
6
|
import { useTranslation } from 'react-i18next';
|
|
7
7
|
import { cn } from '../../../lib/utils.js';
|
|
@@ -36,6 +36,7 @@ const SECTIONS = [
|
|
|
36
36
|
{ id: 'notifications', labelKey: 'settings.sections.notifications', icon: Bell },
|
|
37
37
|
{ id: 'feature-flags', labelKey: 'settings.sections.flags', icon: Flag },
|
|
38
38
|
{ id: 'interactive-agent', labelKey: 'settings.sections.chat', icon: MessageSquare },
|
|
39
|
+
{ id: 'fab-layout', labelKey: 'settings.sections.layout', icon: LayoutGrid },
|
|
39
40
|
{ id: 'database', labelKey: 'settings.sections.database', icon: Database },
|
|
40
41
|
];
|
|
41
42
|
function useSaveIndicator() {
|
|
@@ -190,6 +191,9 @@ export function SettingsPageClient({ settings, shepHome, dbFileSize, availableTe
|
|
|
190
191
|
const [interactiveEnabled, setInteractiveEnabled] = useState(interactiveAgentConfig.enabled);
|
|
191
192
|
const [interactiveTimeout, setInteractiveTimeout] = useState(String(interactiveAgentConfig.autoTimeoutMinutes));
|
|
192
193
|
const [interactiveSessions, setInteractiveSessions] = useState(String(interactiveAgentConfig.maxConcurrentSessions));
|
|
194
|
+
// FAB layout state
|
|
195
|
+
const fabLayoutConfig = settings.fabLayout ?? { swapPosition: false };
|
|
196
|
+
const [fabSwapPosition, setFabSwapPosition] = useState(fabLayoutConfig.swapPosition);
|
|
193
197
|
// Notification state
|
|
194
198
|
const [inApp, setInApp] = useState(settings.notifications.inApp.enabled);
|
|
195
199
|
const [events, setEvents] = useState({ ...settings.notifications.events });
|
|
@@ -588,7 +592,10 @@ export function SettingsPageClient({ settings, shepHome, dbFileSize, availableTe
|
|
|
588
592
|
maxConcurrentSessions: clamped,
|
|
589
593
|
},
|
|
590
594
|
});
|
|
591
|
-
} }) })] }), _jsx(SectionHint, { children: t('settings.interactiveAgent.hint') })] }), _jsxs("div", { id: "section-
|
|
595
|
+
} }) })] }), _jsx(SectionHint, { children: t('settings.interactiveAgent.hint') })] }), _jsxs("div", { id: "section-fab-layout", className: "grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]", children: [_jsx(SettingsSection, { icon: LayoutGrid, title: t('settings.fabLayout.title'), description: t('settings.fabLayout.description'), testId: "fab-layout-settings-section", children: _jsx(SwitchRow, { label: t('settings.fabLayout.swapPosition'), description: t('settings.fabLayout.swapPositionDescription'), id: "fab-swap-position", testId: "switch-fab-swap-position", checked: fabSwapPosition, onChange: (v) => {
|
|
596
|
+
setFabSwapPosition(v);
|
|
597
|
+
save({ fabLayout: { swapPosition: v } });
|
|
598
|
+
} }) }), _jsx(SectionHint, { children: t('settings.fabLayout.hint') })] }), _jsxs("div", { id: "section-database", className: "grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]", children: [_jsxs(SettingsSection, { icon: Database, title: t('settings.database.title'), description: t('settings.database.sectionDescription'), testId: "database-settings-section", children: [_jsx(SettingsRow, { label: t('settings.database.location'), description: t('settings.database.locationDescription'), children: _jsx("span", { className: "text-muted-foreground max-w-50 truncate font-mono text-xs", "data-testid": "shep-home-path", children: shepHome }) }), _jsx(SettingsRow, { label: t('settings.database.size'), children: _jsx("span", { className: "text-muted-foreground text-xs", "data-testid": "db-file-size", children: dbFileSize }) })] }), _jsx(SectionHint, { links: [
|
|
592
599
|
{
|
|
593
600
|
label: t('settings.database.links.settingsService'),
|
|
594
601
|
href: 'https://github.com/shep-ai/shep/blob/main/docs/architecture/settings-service.md',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-sidebar.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/layouts/app-sidebar/app-sidebar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app-sidebar.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/layouts/app-sidebar/app-sidebar.tsx"],"names":[],"mappings":"AA2CA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAI/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,YAAY,EAAE,iBAAiB,CAAC;IAEhC,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAED,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,YAAY,EAEZ,cAAc,GACf,EAAE,eAAe,2CAqQjB"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useMemo } from 'react';
|
|
4
4
|
import { usePathname } from 'next/navigation';
|
|
5
|
-
import { Home, Moon, Sun, Volume2, VolumeOff, Wrench, Puzzle, Settings } from 'lucide-react';
|
|
5
|
+
import { Home, Moon, Sun, Volume2, VolumeOff, Zap, ZapOff, Wrench, Puzzle, Settings, } from 'lucide-react';
|
|
6
6
|
import { useTranslation } from 'react-i18next';
|
|
7
7
|
import { Sidebar, SidebarHeader, SidebarContent, SidebarFooter, SidebarMenu, SidebarMenuItem, SidebarMenuButton, SidebarRail, useSidebar, } from '../../ui/sidebar.js';
|
|
8
8
|
import { ScrollArea } from '../../ui/scroll-area.js';
|
|
@@ -12,6 +12,7 @@ import { ShepLogo } from '../../common/shep-logo/index.js';
|
|
|
12
12
|
import { VersionBadge } from '../../common/version-badge/index.js';
|
|
13
13
|
import { FeatureListItem } from '../../common/feature-list-item/index.js';
|
|
14
14
|
import { useSoundEnabled } from '../../../hooks/use-sound-enabled.js';
|
|
15
|
+
import { useAnimationsEnabled } from '../../../hooks/use-animations-enabled.js';
|
|
15
16
|
import { useTheme } from '../../../hooks/useTheme.js';
|
|
16
17
|
import { useSoundAction } from '../../../hooks/use-sound-action.js';
|
|
17
18
|
import { FeatureStatusGroup } from '../../common/feature-status-group/index.js';
|
|
@@ -29,6 +30,7 @@ export function AppSidebar({ features, featureFlags, onFeatureClick, }) {
|
|
|
29
30
|
const { mounted: showExpanded, visible: expandedVisible } = useDeferredMount(collapsed, 200);
|
|
30
31
|
const versionData = useVersion();
|
|
31
32
|
const { enabled: soundEnabled, toggle: toggleSound } = useSoundEnabled();
|
|
33
|
+
const { enabled: animationsEnabled, toggle: toggleAnimations } = useAnimationsEnabled();
|
|
32
34
|
const { resolvedTheme, theme, setTheme } = useTheme();
|
|
33
35
|
const toggleOnSound = useSoundAction('toggle-on');
|
|
34
36
|
const toggleOffSound = useSoundAction('toggle-off');
|
|
@@ -100,5 +102,8 @@ export function AppSidebar({ features, featureFlags, onFeatureClick, }) {
|
|
|
100
102
|
: t('sidebar.switchToDark') })] }), !collapsed && (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(SidebarMenuButton, { className: "w-auto flex-none", onClick: () => {
|
|
101
103
|
clickSound.play();
|
|
102
104
|
toggleSound();
|
|
103
|
-
}, "aria-label": soundEnabled ? t('sidebar.muteSounds') : t('sidebar.unmuteSounds'), children: soundEnabled ? (_jsx(Volume2, { className: "h-4 w-4" })) : (_jsx(VolumeOff, { className: "h-4 w-4" })) }) }), _jsx(TooltipContent, { side: "top", children: soundEnabled ? t('sidebar.muteSounds') : t('sidebar.unmuteSounds') })] }))
|
|
105
|
+
}, "aria-label": soundEnabled ? t('sidebar.muteSounds') : t('sidebar.unmuteSounds'), children: soundEnabled ? (_jsx(Volume2, { className: "h-4 w-4" })) : (_jsx(VolumeOff, { className: "h-4 w-4" })) }) }), _jsx(TooltipContent, { side: "top", children: soundEnabled ? t('sidebar.muteSounds') : t('sidebar.unmuteSounds') })] })), !collapsed && (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(SidebarMenuButton, { className: "w-auto flex-none", onClick: () => {
|
|
106
|
+
clickSound.play();
|
|
107
|
+
toggleAnimations();
|
|
108
|
+
}, "aria-label": animationsEnabled ? 'Disable animations' : 'Enable animations', children: animationsEnabled ? (_jsx(Zap, { className: "h-4 w-4" })) : (_jsx(ZapOff, { className: "h-4 w-4" })) }) }), _jsx(TooltipContent, { side: "top", children: animationsEnabled ? 'Disable animations' : 'Enable animations' })] }))] }) }) }) }) }), _jsx(SidebarRail, {})] }));
|
|
104
109
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { FabLayoutState } from '../lib/fab-layout.js';
|
|
3
|
+
interface FabLayoutProviderProps {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
layout: FabLayoutState;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Provides server-resolved FAB layout configuration to all client components.
|
|
9
|
+
* Initialized in the root layout with values from the DB singleton.
|
|
10
|
+
*/
|
|
11
|
+
export declare function FabLayoutProvider({ children, layout }: FabLayoutProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
/**
|
|
13
|
+
* Read FAB layout config from context. Returns default (not swapped)
|
|
14
|
+
* when used outside a FabLayoutProvider (e.g., Storybook, tests).
|
|
15
|
+
*/
|
|
16
|
+
export declare function useFabLayout(): FabLayoutState;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=fab-layout-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fab-layout-context.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/hooks/fab-layout-context.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMvD,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,sBAAsB,2CAE7E;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,cAAc,CAE7C"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { createContext, useContext } from 'react';
|
|
4
|
+
const defaultLayout = { swapPosition: false };
|
|
5
|
+
const FabLayoutContext = createContext(defaultLayout);
|
|
6
|
+
/**
|
|
7
|
+
* Provides server-resolved FAB layout configuration to all client components.
|
|
8
|
+
* Initialized in the root layout with values from the DB singleton.
|
|
9
|
+
*/
|
|
10
|
+
export function FabLayoutProvider({ children, layout }) {
|
|
11
|
+
return _jsx(FabLayoutContext.Provider, { value: layout, children: children });
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Read FAB layout config from context. Returns default (not swapped)
|
|
15
|
+
* when used outside a FabLayoutProvider (e.g., Storybook, tests).
|
|
16
|
+
*/
|
|
17
|
+
export function useFabLayout() {
|
|
18
|
+
return useContext(FabLayoutContext);
|
|
19
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-animations-enabled.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/hooks/use-animations-enabled.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,oBAAoB,IAAI,0BAA0B,CA4BjE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
3
|
+
const STORAGE_KEY = 'shep-animations-enabled';
|
|
4
|
+
const SYNC_EVENT = 'shep:animations-toggle';
|
|
5
|
+
const BODY_CLASS = 'no-animations';
|
|
6
|
+
export function useAnimationsEnabled() {
|
|
7
|
+
const [enabled, setEnabled] = useState(true);
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
const stored = localStorage.getItem(STORAGE_KEY);
|
|
10
|
+
if (stored === 'false') {
|
|
11
|
+
setEnabled(false);
|
|
12
|
+
document.body.classList.add(BODY_CLASS);
|
|
13
|
+
}
|
|
14
|
+
const onSync = (e) => {
|
|
15
|
+
const next = e.detail;
|
|
16
|
+
setEnabled(next);
|
|
17
|
+
document.body.classList.toggle(BODY_CLASS, !next);
|
|
18
|
+
};
|
|
19
|
+
window.addEventListener(SYNC_EVENT, onSync);
|
|
20
|
+
return () => window.removeEventListener(SYNC_EVENT, onSync);
|
|
21
|
+
}, []);
|
|
22
|
+
const toggle = useCallback(() => {
|
|
23
|
+
const next = !enabled;
|
|
24
|
+
localStorage.setItem(STORAGE_KEY, String(next));
|
|
25
|
+
setEnabled(next);
|
|
26
|
+
document.body.classList.toggle(BODY_CLASS, !next);
|
|
27
|
+
window.dispatchEvent(new CustomEvent(SYNC_EVENT, { detail: next }));
|
|
28
|
+
}, [enabled]);
|
|
29
|
+
return { enabled, toggle };
|
|
30
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FAB layout configuration for the web UI.
|
|
3
|
+
*
|
|
4
|
+
* Reads from Settings.fabLayout when available, defaulting to
|
|
5
|
+
* swapPosition = false (Create FAB on start side, Chat FAB on end side).
|
|
6
|
+
*/
|
|
7
|
+
export interface FabLayoutState {
|
|
8
|
+
swapPosition: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function getFabLayout(): FabLayoutState;
|
|
11
|
+
//# sourceMappingURL=fab-layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fab-layout.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/lib/fab-layout.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,YAAY,IAAI,cAAc,CAa7C"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FAB layout configuration for the web UI.
|
|
3
|
+
*
|
|
4
|
+
* Reads from Settings.fabLayout when available, defaulting to
|
|
5
|
+
* swapPosition = false (Create FAB on start side, Chat FAB on end side).
|
|
6
|
+
*/
|
|
7
|
+
import { hasSettings, getSettings } from '../../../../packages/core/src/infrastructure/services/settings.service.js';
|
|
8
|
+
export function getFabLayout() {
|
|
9
|
+
try {
|
|
10
|
+
if (hasSettings()) {
|
|
11
|
+
const fabLayout = getSettings().fabLayout;
|
|
12
|
+
if (fabLayout) {
|
|
13
|
+
return { swapPosition: fabLayout.swapPosition };
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
// Settings not initialized (e.g., during build/SSG or client-side hydration)
|
|
19
|
+
}
|
|
20
|
+
return { swapPosition: false };
|
|
21
|
+
}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"notifications": "الإشعارات",
|
|
15
15
|
"flags": "العلامات",
|
|
16
16
|
"chat": "المحادثة",
|
|
17
|
+
"layout": "التخطيط",
|
|
17
18
|
"database": "قاعدة البيانات"
|
|
18
19
|
},
|
|
19
20
|
"language": {
|
|
@@ -212,6 +213,13 @@
|
|
|
212
213
|
"maxConcurrentSessionsDescription": "الحد الأقصى لعدد جلسات الوكيل التفاعلية النشطة في وقت واحد (1–10)",
|
|
213
214
|
"hint": "علامة المحادثة تُنشئ عملية وكيل مستمرة لكل ميزة. المهلة التلقائية تُوقف الجلسات الخاملة تلقائيًا لتوفير الموارد. حد الجلسات المتزامنة يمنع الاستخدام المفرط للموارد على أجهزة المطورين."
|
|
214
215
|
},
|
|
216
|
+
"fabLayout": {
|
|
217
|
+
"title": "التخطيط",
|
|
218
|
+
"description": "التحكم في موضع أزرار الإجراء العائمة في مركز التحكم",
|
|
219
|
+
"swapPosition": "تبديل مواضع الأزرار العائمة",
|
|
220
|
+
"swapPositionDescription": "نقل زر المحادثة إلى اليسار وزر الإنشاء إلى اليمين",
|
|
221
|
+
"hint": "يوجد زران عائمان (إنشاء ومحادثة) في الزوايا السفلية لمركز التحكم. قم بتفعيل هذا الخيار لتبديل مواضعهما."
|
|
222
|
+
},
|
|
215
223
|
"database": {
|
|
216
224
|
"title": "قاعدة البيانات",
|
|
217
225
|
"description": "مسار قاعدة البيانات وإدارتها",
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"notifications": "Benachrichtigungen",
|
|
15
15
|
"flags": "Flags",
|
|
16
16
|
"chat": "Chat",
|
|
17
|
+
"layout": "Layout",
|
|
17
18
|
"database": "Datenbank"
|
|
18
19
|
},
|
|
19
20
|
"language": {
|
|
@@ -198,6 +199,13 @@
|
|
|
198
199
|
"maxConcurrentSessionsDescription": "Maximale Anzahl aktiver interaktiver Agenten-Sitzungen gleichzeitig (1–10)",
|
|
199
200
|
"hint": "Der Chat-Tab startet einen persistenten Agentenprozess pro Feature. Das Auto-Zeitlimit stoppt inaktive Sitzungen automatisch, um Ressourcen zu sparen. Das Limit für gleichzeitige Sitzungen verhindert unkontrollierten Ressourcenverbrauch auf Entwicklermaschinen."
|
|
200
201
|
},
|
|
202
|
+
"fabLayout": {
|
|
203
|
+
"title": "Layout",
|
|
204
|
+
"description": "Position der schwebenden Aktionsschaltflächen im Kontrollzentrum steuern",
|
|
205
|
+
"swapPosition": "FAB-Positionen tauschen",
|
|
206
|
+
"swapPositionDescription": "Chat-Button nach links und Erstellen-Button nach rechts verschieben",
|
|
207
|
+
"hint": "Die zwei schwebenden Aktionsschaltflächen (Erstellen und Chat) befinden sich in den unteren Ecken des Kontrollzentrums. Aktivieren Sie diese Option, um ihre Positionen zu tauschen."
|
|
208
|
+
},
|
|
201
209
|
"database": {
|
|
202
210
|
"title": "Datenbank",
|
|
203
211
|
"description": "Datenbankpfad und -verwaltung",
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"notifications": "Notifications",
|
|
15
15
|
"flags": "Flags",
|
|
16
16
|
"chat": "Chat",
|
|
17
|
+
"layout": "Layout",
|
|
17
18
|
"database": "Database"
|
|
18
19
|
},
|
|
19
20
|
"language": {
|
|
@@ -212,6 +213,13 @@
|
|
|
212
213
|
"maxConcurrentSessionsDescription": "Maximum number of active interactive agent sessions at once (1–10)",
|
|
213
214
|
"hint": "The Chat tab spawns a persistent agent process per feature. Auto-timeout stops idle sessions automatically to conserve resources. The concurrent session cap prevents runaway resource usage on developer machines."
|
|
214
215
|
},
|
|
216
|
+
"fabLayout": {
|
|
217
|
+
"title": "Layout",
|
|
218
|
+
"description": "Control the position of floating action buttons in the control center",
|
|
219
|
+
"swapPosition": "Swap FAB positions",
|
|
220
|
+
"swapPositionDescription": "Move the Chat button to the left and the Create button to the right",
|
|
221
|
+
"hint": "The two floating action buttons (Create and Chat) sit in the bottom corners of the control center. Enable this toggle to swap their positions."
|
|
222
|
+
},
|
|
215
223
|
"database": {
|
|
216
224
|
"title": "Database",
|
|
217
225
|
"description": "Database path and management",
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"notifications": "Notificaciones",
|
|
15
15
|
"flags": "Opciones",
|
|
16
16
|
"chat": "Chat",
|
|
17
|
+
"layout": "Diseño",
|
|
17
18
|
"database": "Base de datos"
|
|
18
19
|
},
|
|
19
20
|
"language": {
|
|
@@ -212,6 +213,13 @@
|
|
|
212
213
|
"maxConcurrentSessionsDescription": "Número máximo de sesiones de agente interactivo activas a la vez (1-10)",
|
|
213
214
|
"hint": "La pestaña de chat genera un proceso de agente persistente por funcionalidad. El tiempo de espera automático detiene las sesiones inactivas automáticamente para conservar recursos. El límite de sesiones concurrentes previene el uso excesivo de recursos en las máquinas de los desarrolladores."
|
|
214
215
|
},
|
|
216
|
+
"fabLayout": {
|
|
217
|
+
"title": "Diseño",
|
|
218
|
+
"description": "Controlar la posición de los botones de acción flotantes en el centro de control",
|
|
219
|
+
"swapPosition": "Intercambiar posiciones de FAB",
|
|
220
|
+
"swapPositionDescription": "Mover el botón de Chat a la izquierda y el de Crear a la derecha",
|
|
221
|
+
"hint": "Los dos botones de acción flotantes (Crear y Chat) se ubican en las esquinas inferiores del centro de control. Active esta opción para intercambiar sus posiciones."
|
|
222
|
+
},
|
|
215
223
|
"database": {
|
|
216
224
|
"title": "Base de datos",
|
|
217
225
|
"description": "Ruta de la base de datos y administración",
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"notifications": "Notifications",
|
|
15
15
|
"flags": "Drapeaux",
|
|
16
16
|
"chat": "Chat",
|
|
17
|
+
"layout": "Disposition",
|
|
17
18
|
"database": "Base de données"
|
|
18
19
|
},
|
|
19
20
|
"language": {
|
|
@@ -212,6 +213,13 @@
|
|
|
212
213
|
"maxConcurrentSessionsDescription": "Nombre maximum de sessions d'agent interactif actives simultanément (1-10)",
|
|
213
214
|
"hint": "L'onglet Chat lance un processus d'agent persistant par fonctionnalité. Le délai d'inactivité automatique arrête les sessions inactives pour économiser les ressources. Le plafond de sessions simultanées empêche l'utilisation incontrôlée des ressources sur les machines de développement."
|
|
214
215
|
},
|
|
216
|
+
"fabLayout": {
|
|
217
|
+
"title": "Disposition",
|
|
218
|
+
"description": "Contrôler la position des boutons d'action flottants dans le centre de contrôle",
|
|
219
|
+
"swapPosition": "Inverser les positions des FAB",
|
|
220
|
+
"swapPositionDescription": "Déplacer le bouton Chat à gauche et le bouton Créer à droite",
|
|
221
|
+
"hint": "Les deux boutons d'action flottants (Créer et Chat) se trouvent dans les coins inférieurs du centre de contrôle. Activez cette option pour inverser leurs positions."
|
|
222
|
+
},
|
|
215
223
|
"database": {
|
|
216
224
|
"title": "Base de données",
|
|
217
225
|
"description": "Chemin et gestion de la base de données",
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"notifications": "התראות",
|
|
15
15
|
"flags": "דגלים",
|
|
16
16
|
"chat": "צ'אט",
|
|
17
|
+
"layout": "פריסה",
|
|
17
18
|
"database": "מסד נתונים"
|
|
18
19
|
},
|
|
19
20
|
"language": {
|
|
@@ -212,6 +213,13 @@
|
|
|
212
213
|
"maxConcurrentSessionsDescription": "מספר מרבי של סשנים אינטראקטיביים פעילים בו-זמנית (1-10)",
|
|
213
214
|
"hint": "לשונית הצ'אט מפעילה תהליך סוכן מתמשך לכל פיצ'ר. תפוגת זמן אוטומטית עוצרת סשנים לא פעילים כדי לחסוך במשאבים. מגבלת הסשנים המקבילים מונעת שימוש מופרז במשאבים על מכונות מפתחים."
|
|
214
215
|
},
|
|
216
|
+
"fabLayout": {
|
|
217
|
+
"title": "פריסה",
|
|
218
|
+
"description": "שליטה במיקום כפתורי הפעולה הצפים במרכז הבקרה",
|
|
219
|
+
"swapPosition": "החלפת מיקומי כפתורים צפים",
|
|
220
|
+
"swapPositionDescription": "העברת כפתור הצ'אט לשמאל וכפתור היצירה לימין",
|
|
221
|
+
"hint": "שני כפתורי הפעולה הצפים (יצירה וצ'אט) נמצאים בפינות התחתונות של מרכז הבקרה. הפעל את האפשרות הזו כדי להחליף את מיקומיהם."
|
|
222
|
+
},
|
|
215
223
|
"database": {
|
|
216
224
|
"title": "מסד נתונים",
|
|
217
225
|
"description": "נתיב מסד הנתונים וניהול",
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"notifications": "Notificações",
|
|
15
15
|
"flags": "Flags",
|
|
16
16
|
"chat": "Chat",
|
|
17
|
+
"layout": "Layout",
|
|
17
18
|
"database": "Banco de Dados"
|
|
18
19
|
},
|
|
19
20
|
"language": {
|
|
@@ -212,6 +213,13 @@
|
|
|
212
213
|
"maxConcurrentSessionsDescription": "Número máximo de sessões de agente interativo ativas ao mesmo tempo (1-10)",
|
|
213
214
|
"hint": "A aba Chat inicia um processo de agente persistente por recurso. O tempo limite automático para sessões ociosas automaticamente para economizar recursos. O limite de sessões simultâneas evita uso excessivo de recursos em máquinas de desenvolvimento."
|
|
214
215
|
},
|
|
216
|
+
"fabLayout": {
|
|
217
|
+
"title": "Layout",
|
|
218
|
+
"description": "Controlar a posição dos botões de ação flutuantes no centro de controle",
|
|
219
|
+
"swapPosition": "Trocar posições dos FABs",
|
|
220
|
+
"swapPositionDescription": "Mover o botão de Chat para a esquerda e o de Criar para a direita",
|
|
221
|
+
"hint": "Os dois botões de ação flutuantes (Criar e Chat) ficam nos cantos inferiores do centro de controle. Ative esta opção para trocar suas posições."
|
|
222
|
+
},
|
|
215
223
|
"database": {
|
|
216
224
|
"title": "Banco de Dados",
|
|
217
225
|
"description": "Caminho e gerenciamento do banco de dados",
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"notifications": "Уведомления",
|
|
15
15
|
"flags": "Флаги",
|
|
16
16
|
"chat": "Чат",
|
|
17
|
+
"layout": "Расположение",
|
|
17
18
|
"database": "База данных"
|
|
18
19
|
},
|
|
19
20
|
"language": {
|
|
@@ -212,6 +213,13 @@
|
|
|
212
213
|
"maxConcurrentSessionsDescription": "Максимальное количество активных интерактивных сессий агента одновременно (1-10)",
|
|
213
214
|
"hint": "Вкладка чата запускает постоянный процесс агента для каждой функции. Автоматический таймаут останавливает неактивные сессии для экономии ресурсов. Ограничение параллельных сессий предотвращает чрезмерное использование ресурсов на машинах разработчиков."
|
|
214
215
|
},
|
|
216
|
+
"fabLayout": {
|
|
217
|
+
"title": "Расположение",
|
|
218
|
+
"description": "Управление положением плавающих кнопок действий в центре управления",
|
|
219
|
+
"swapPosition": "Поменять местами кнопки",
|
|
220
|
+
"swapPositionDescription": "Переместить кнопку чата влево, а кнопку создания вправо",
|
|
221
|
+
"hint": "Две плавающие кнопки действий (Создать и Чат) расположены в нижних углах центра управления. Включите эту опцию, чтобы поменять их местами."
|
|
222
|
+
},
|
|
215
223
|
"database": {
|
|
216
224
|
"title": "База данных",
|
|
217
225
|
"description": "Путь к базе данных и управление",
|