@shipit-ai/cli 1.168.0 → 1.169.0
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/dist/src/presentation/web/components/features/settings/agent-settings-section.d.ts +3 -3
- package/dist/src/presentation/web/components/features/settings/agent-settings-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/agent-settings-section.js +23 -102
- package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.d.ts +2 -3
- package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.js +18 -22
- package/dist/src/presentation/web/components/features/settings/ci-settings-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/ci-settings-section.js +14 -5
- package/dist/src/presentation/web/components/features/settings/database-settings-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/database-settings-section.js +14 -4
- package/dist/src/presentation/web/components/features/settings/environment-settings-section.d.ts +9 -3
- package/dist/src/presentation/web/components/features/settings/environment-settings-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/environment-settings-section.js +75 -65
- package/dist/src/presentation/web/components/features/settings/environment-settings-section.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/environment-settings-section.stories.js +20 -18
- package/dist/src/presentation/web/components/features/settings/fab-layout-settings-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/fab-layout-settings-section.js +1 -1
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts +3 -3
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js +48 -50
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.js +25 -25
- package/dist/src/presentation/web/components/features/settings/interactive-agent-settings-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/interactive-agent-settings-section.js +3 -3
- package/dist/src/presentation/web/components/features/settings/notification-settings-section.d.ts +3 -3
- package/dist/src/presentation/web/components/features/settings/notification-settings-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/notification-settings-section.js +64 -47
- package/dist/src/presentation/web/components/features/settings/notification-settings-section.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/notification-settings-section.stories.js +32 -24
- 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 +27 -378
- package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts +2 -0
- package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +13 -0
- package/dist/src/presentation/web/components/features/settings/settings-section-utils.d.ts +8 -8
- package/dist/src/presentation/web/components/features/settings/settings-section-utils.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/settings-section-utils.js +3 -6
- package/dist/src/presentation/web/components/features/settings/settings-section-utils.stories.d.ts +1 -1
- package/dist/src/presentation/web/components/features/settings/settings-section-utils.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/settings-section-utils.stories.js +7 -7
- package/dist/src/presentation/web/components/features/settings/stage-timeouts-settings-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/stage-timeouts-settings-section.js +1 -1
- package/dist/src/presentation/web/components/features/settings/workflow-settings-section.d.ts +3 -3
- package/dist/src/presentation/web/components/features/settings/workflow-settings-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/workflow-settings-section.js +118 -165
- package/dist/src/presentation/web/components/features/settings/workflow-settings-section.stories.d.ts +1 -1
- package/dist/src/presentation/web/components/features/settings/workflow-settings-section.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/workflow-settings-section.stories.js +26 -64
- package/dist/src/presentation/web/components/ui/tooltip.d.ts.map +1 -1
- package/dist/src/presentation/web/components/ui/tooltip.js +3 -3
- package/dist/translations/ar/web.json +1 -0
- package/dist/translations/de/web.json +1 -0
- package/dist/translations/en/web.json +1 -0
- package/dist/translations/es/web.json +1 -0
- package/dist/translations/fr/web.json +1 -0
- package/dist/translations/he/web.json +1 -0
- package/dist/translations/pt/web.json +1 -0
- package/dist/translations/ru/web.json +1 -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 +3 -3
- package/web/.next/fallback-build-manifest.json +3 -3
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +2 -2
- package/web/.next/required-server-files.json +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
- 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 +27 -27
- 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 +31 -31
- 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 +37 -37
- 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 +37 -37
- 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 +28 -28
- 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 +28 -28
- 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 +27 -27
- 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 +31 -31
- 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 +37 -37
- 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 +37 -37
- 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 +27 -27
- 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 +28 -28
- 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 +28 -28
- 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.html +1 -1
- 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 +6 -6
- 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/settings/page/server-reference-manifest.json +11 -11
- 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 +11 -11
- 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 +11 -11
- 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 +6 -6
- 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]__0tb~wwk._.js +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js.map +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js +2 -2
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js.map +1 -1
- package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js +1 -1
- package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js.map +1 -1
- package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js +1 -1
- package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__05_qc0n._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__05_qc0n._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0ge~xny._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0ge~xny._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0qda~yi._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0qda~yi._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0qxd563._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0qxd563._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rv1gci._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rvrr1j._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rvrr1j._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0tq2syh._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0t~u8sd._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0t~u8sd._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10tll_l._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10tll_l._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__12j29w-._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__12j29w-._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_08_079y._.js → _01qdxy2._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_08_079y._.js.map → _01qdxy2._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_01sesw0._.js +1 -1
- package/web/.next/server/chunks/ssr/_01sesw0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_069y.js._.js +2 -2
- package/web/.next/server/chunks/ssr/_069y.js._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0__4si~._.js +1 -1
- package/web/.next/server/chunks/ssr/_0__4si~._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0_m17kl._.js +1 -1
- package/web/.next/server/chunks/ssr/_0_m17kl._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0a_8rlj._.js +3 -0
- package/web/.next/server/chunks/ssr/{_0mi5qj~._.js.map → _0a_8rlj._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_0d4miu.._.js +1 -1
- package/web/.next/server/chunks/ssr/_0d4miu.._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0e8ern9._.js +1 -1
- package/web/.next/server/chunks/ssr/_0e8ern9._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0n.magx._.js +1 -1
- package/web/.next/server/chunks/ssr/_0n.magx._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0p3~u8u._.js +2 -2
- package/web/.next/server/chunks/ssr/_0p3~u8u._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_0txr945._.js → _0pa1dkv._.js} +2 -2
- package/web/.next/server/chunks/ssr/_0pa1dkv._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0r.3n~3._.js +1 -1
- package/web/.next/server/chunks/ssr/_0r.3n~3._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0t59q8r._.js +1 -1
- package/web/.next/server/chunks/ssr/_0t59q8r._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0vyfc4b._.js +1 -1
- package/web/.next/server/chunks/ssr/_0vyfc4b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0w-_hww._.js +1 -1
- package/web/.next/server/chunks/ssr/_0w-_hww._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_0r04xhw._.js → _0wor25i._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_0r04xhw._.js.map → _0wor25i._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_0zk-h5w._.js +1 -1
- package/web/.next/server/chunks/ssr/_0zk-h5w._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0~7lwu_._.js +1 -1
- package/web/.next/server/chunks/ssr/_0~7lwu_._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_1161g9x._.js +1 -1
- package/web/.next/server/chunks/ssr/_1161g9x._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_0pjb_re._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_0w2wqvu._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js.map +1 -1
- package/web/.next/server/middleware-build-manifest.js +3 -3
- package/web/.next/server/pages/500.html +1 -1
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +50 -50
- package/web/.next/static/chunks/{01znjuvi5t9~q.js → 00m_fbc2z1gyi.js} +3 -3
- package/web/.next/static/chunks/{0ygtupas8pxdi.js → 09f2lesd_dd3~.js} +1 -1
- package/web/.next/static/chunks/0c0dau5pmseko.js +1 -0
- package/web/.next/static/chunks/{078lp287u~c~b.js → 0dq50gtgaj63f.js} +1 -1
- package/web/.next/static/chunks/{06nsv-_ec9ehn.js → 0k0j7anrbg-of.js} +1 -1
- package/web/.next/static/chunks/{17c31c1biwfyi.js → 0o33urrd3lk~u.js} +1 -1
- package/web/.next/static/chunks/0u_27fdqa2jeg.js +1 -0
- package/web/.next/static/chunks/0xwh.0u-dexsl.js +1 -0
- package/web/.next/static/chunks/0yibymrb2j05t.css +1 -0
- package/web/.next/static/chunks/103xnw203o9k1.js +1 -0
- package/web/.next/static/chunks/{0cv09-g0prv4o.js → 11vbir.u7_zf7.js} +1 -1
- package/web/.next/static/chunks/{133q8d69p6cl0.js → 121v1_d_dfk2k.js} +1 -1
- package/web/.next/static/chunks/{0_xww9bsde~1x.js → 12axopx66pocj.js} +1 -1
- package/web/.next/static/chunks/{0hg8qgtv~kuys.js → 183ehj-b80a~o.js} +1 -1
- package/web/.next/static/chunks/{0_v4t6gzx.332.js → 1874_wt9rit96.js} +1 -1
- package/web/.next/server/chunks/ssr/_0mi5qj~._.js +0 -3
- package/web/.next/server/chunks/ssr/_0txr945._.js.map +0 -1
- package/web/.next/static/chunks/033sl_l5o3uo8.css +0 -1
- package/web/.next/static/chunks/04r9m_5p953mf.js +0 -1
- package/web/.next/static/chunks/07i3-aamszsoh.js +0 -1
- package/web/.next/static/chunks/0ee1d3_y40g9f.js +0 -1
- package/web/.next/static/chunks/15mks7_3venc1.js +0 -1
- /package/web/.next/static/{LQMB6QAutWzPQnLUZG96y → SNdaKJ9fpre8tUMRe1jlA}/_buildManifest.js +0 -0
- /package/web/.next/static/{LQMB6QAutWzPQnLUZG96y → SNdaKJ9fpre8tUMRe1jlA}/_clientMiddlewareManifest.js +0 -0
- /package/web/.next/static/{LQMB6QAutWzPQnLUZG96y → SNdaKJ9fpre8tUMRe1jlA}/_ssgManifest.js +0 -0
package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Settings } from '../../../../../../packages/core/src/domain/generated/output.js';
|
|
2
2
|
export interface FeatureFlagsSettingsSectionProps {
|
|
3
|
-
|
|
3
|
+
settings: Settings;
|
|
4
4
|
}
|
|
5
|
-
export declare function FeatureFlagsSettingsSection({
|
|
5
|
+
export declare function FeatureFlagsSettingsSection({ settings }: FeatureFlagsSettingsSectionProps): import("react/jsx-runtime").JSX.Element;
|
|
6
6
|
//# sourceMappingURL=feature-flags-settings-section.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flags-settings-section.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/feature-flags-settings-section.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"feature-flags-settings-section.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/feature-flags-settings-section.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAgB,MAAM,yCAAyC,CAAC;AAGtF,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,wBAAgB,2BAA2B,CAAC,EAAE,QAAQ,EAAE,EAAE,gCAAgC,2CA+HzF"}
|
package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js
CHANGED
|
@@ -1,61 +1,59 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useState, useTransition
|
|
4
|
-
import { Flag
|
|
3
|
+
import { useState, useTransition } from 'react';
|
|
4
|
+
import { Flag } from 'lucide-react';
|
|
5
5
|
import { toast } from 'sonner';
|
|
6
|
-
import {
|
|
7
|
-
import { Label } from '../../ui/label.js';
|
|
8
|
-
import { Switch } from '../../ui/switch.js';
|
|
6
|
+
import { useTranslation } from 'react-i18next';
|
|
9
7
|
import { updateSettingsAction } from '../../../app/actions/update-settings.js';
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
githubImport: 'GitHub Import',
|
|
24
|
-
adoptBranch: 'Adopt Branch',
|
|
25
|
-
gitRebaseSync: 'Git Rebase & Sync',
|
|
26
|
-
reactFileManager: 'React File Manager',
|
|
27
|
-
};
|
|
28
|
-
const FLAG_KEYS = [
|
|
29
|
-
'skills',
|
|
30
|
-
'envDeploy',
|
|
31
|
-
'debug',
|
|
32
|
-
'githubImport',
|
|
33
|
-
'adoptBranch',
|
|
34
|
-
'gitRebaseSync',
|
|
35
|
-
'reactFileManager',
|
|
36
|
-
];
|
|
37
|
-
export function FeatureFlagsSettingsSection({ featureFlags }) {
|
|
8
|
+
import { SettingsSection, SwitchRow } from './settings-section-utils.js';
|
|
9
|
+
export function FeatureFlagsSettingsSection({ settings }) {
|
|
10
|
+
const { t } = useTranslation('web');
|
|
11
|
+
const [, startTransition] = useTransition();
|
|
12
|
+
const featureFlags = settings.featureFlags ?? {
|
|
13
|
+
skills: false,
|
|
14
|
+
envDeploy: false,
|
|
15
|
+
debug: false,
|
|
16
|
+
githubImport: false,
|
|
17
|
+
adoptBranch: false,
|
|
18
|
+
gitRebaseSync: false,
|
|
19
|
+
reactFileManager: false,
|
|
20
|
+
};
|
|
38
21
|
const [flags, setFlags] = useState({ ...featureFlags });
|
|
39
|
-
|
|
40
|
-
const [showSaved, setShowSaved] = useState(false);
|
|
41
|
-
const prevPendingRef = useRef(false);
|
|
42
|
-
useEffect(() => {
|
|
43
|
-
if (prevPendingRef.current && !isPending) {
|
|
44
|
-
setShowSaved(true);
|
|
45
|
-
const timer = setTimeout(() => setShowSaved(false), 2000);
|
|
46
|
-
return () => clearTimeout(timer);
|
|
47
|
-
}
|
|
48
|
-
prevPendingRef.current = isPending;
|
|
49
|
-
}, [isPending]);
|
|
50
|
-
function handleFlagChange(key, value) {
|
|
51
|
-
const newFlags = { ...flags, [key]: value };
|
|
52
|
-
setFlags(newFlags);
|
|
22
|
+
function save(payload) {
|
|
53
23
|
startTransition(async () => {
|
|
54
|
-
const result = await updateSettingsAction(
|
|
24
|
+
const result = await updateSettingsAction(payload);
|
|
55
25
|
if (!result.success) {
|
|
56
|
-
toast.error(result.error ?? '
|
|
26
|
+
toast.error(result.error ?? t('settings.failedToSave'));
|
|
57
27
|
}
|
|
58
28
|
});
|
|
59
29
|
}
|
|
60
|
-
return (_jsxs(
|
|
30
|
+
return (_jsxs(SettingsSection, { icon: Flag, title: t('settings.featureFlags.title'), description: t('settings.featureFlags.sectionDescription'), badge: t('settings.featureFlags.badge'), testId: "feature-flags-settings-section", tooltip: t('settings.featureFlags.hint'), children: [_jsx(SwitchRow, { label: t('settings.featureFlags.skills'), description: t('settings.featureFlags.skillsDescription'), tooltip: "Enables the Skills page in the sidebar for browsing and managing Claude Code skills.", id: "flag-skills", testId: "switch-flag-skills", checked: flags.skills, onChange: (v) => {
|
|
31
|
+
const newFlags = { ...flags, skills: v };
|
|
32
|
+
setFlags(newFlags);
|
|
33
|
+
save({ featureFlags: newFlags });
|
|
34
|
+
} }), _jsx(SwitchRow, { label: t('settings.featureFlags.deployments'), description: t('settings.featureFlags.deploymentsDescription'), tooltip: "Enables experimental deployment features for environment management.", id: "flag-envDeploy", testId: "switch-flag-envDeploy", checked: flags.envDeploy, onChange: (v) => {
|
|
35
|
+
const newFlags = { ...flags, envDeploy: v };
|
|
36
|
+
setFlags(newFlags);
|
|
37
|
+
save({ featureFlags: newFlags });
|
|
38
|
+
} }), _jsx(SwitchRow, { label: t('settings.featureFlags.debug'), description: t('settings.featureFlags.debugDescription'), tooltip: "Shows additional debugging information in the UI for troubleshooting.", id: "flag-debug", testId: "switch-flag-debug", checked: flags.debug, onChange: (v) => {
|
|
39
|
+
const newFlags = { ...flags, debug: v };
|
|
40
|
+
setFlags(newFlags);
|
|
41
|
+
save({ featureFlags: newFlags });
|
|
42
|
+
} }), _jsx(SwitchRow, { label: t('settings.featureFlags.githubImport'), description: t('settings.featureFlags.githubImportDescription'), tooltip: "Enables importing repositories directly from GitHub.", id: "flag-githubImport", testId: "switch-flag-githubImport", checked: flags.githubImport, onChange: (v) => {
|
|
43
|
+
const newFlags = { ...flags, githubImport: v };
|
|
44
|
+
setFlags(newFlags);
|
|
45
|
+
save({ featureFlags: newFlags });
|
|
46
|
+
} }), _jsx(SwitchRow, { label: t('settings.featureFlags.adoptBranch'), description: t('settings.featureFlags.adoptBranchDescription'), tooltip: "Enables adopting existing git branches as ShipIT features.", id: "flag-adoptBranch", testId: "switch-flag-adoptBranch", checked: flags.adoptBranch, onChange: (v) => {
|
|
47
|
+
const newFlags = { ...flags, adoptBranch: v };
|
|
48
|
+
setFlags(newFlags);
|
|
49
|
+
save({ featureFlags: newFlags });
|
|
50
|
+
} }), _jsx(SwitchRow, { label: t('settings.featureFlags.gitRebaseSync'), description: t('settings.featureFlags.gitRebaseSyncDescription'), tooltip: "Uses git rebase instead of merge when syncing feature branches with the upstream branch.", id: "flag-gitRebaseSync", testId: "switch-flag-gitRebaseSync", checked: flags.gitRebaseSync, onChange: (v) => {
|
|
51
|
+
const newFlags = { ...flags, gitRebaseSync: v };
|
|
52
|
+
setFlags(newFlags);
|
|
53
|
+
save({ featureFlags: newFlags });
|
|
54
|
+
} }), _jsx(SwitchRow, { label: t('settings.featureFlags.reactFileManager'), description: t('settings.featureFlags.reactFileManagerDescription'), tooltip: "Replaces the native file picker dialog with a React-based file browser for selecting project folders.", id: "flag-reactFileManager", testId: "switch-flag-reactFileManager", checked: flags.reactFileManager, onChange: (v) => {
|
|
55
|
+
const newFlags = { ...flags, reactFileManager: v };
|
|
56
|
+
setFlags(newFlags);
|
|
57
|
+
save({ featureFlags: newFlags });
|
|
58
|
+
} })] }));
|
|
61
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flags-settings-section.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/feature-flags-settings-section.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"feature-flags-settings-section.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/feature-flags-settings-section.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAK/E,QAAA,MAAM,IAAI;;;;;;;CAO0C,CAAC;AAErD,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAexB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAezB,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { FeatureFlagsSettingsSection } from './feature-flags-settings-section.js';
|
|
2
|
+
import { createDefaultSettings } from '../../../../../../packages/core/src/domain/factories/settings-defaults.factory.js';
|
|
3
|
+
const baseSettings = createDefaultSettings();
|
|
2
4
|
const meta = {
|
|
3
5
|
title: 'Features/Settings/FeatureFlagsSettingsSection',
|
|
4
6
|
component: FeatureFlagsSettingsSection,
|
|
@@ -10,40 +12,38 @@ const meta = {
|
|
|
10
12
|
export default meta;
|
|
11
13
|
export const Default = {
|
|
12
14
|
args: {
|
|
13
|
-
|
|
14
|
-
skills: false,
|
|
15
|
-
envDeploy: false,
|
|
16
|
-
debug: false,
|
|
17
|
-
githubImport: false,
|
|
18
|
-
adoptBranch: false,
|
|
19
|
-
gitRebaseSync: false,
|
|
20
|
-
reactFileManager: false,
|
|
21
|
-
},
|
|
15
|
+
settings: baseSettings,
|
|
22
16
|
},
|
|
23
17
|
};
|
|
24
18
|
export const AllEnabled = {
|
|
25
19
|
args: {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
20
|
+
settings: {
|
|
21
|
+
...baseSettings,
|
|
22
|
+
featureFlags: {
|
|
23
|
+
skills: true,
|
|
24
|
+
envDeploy: true,
|
|
25
|
+
debug: true,
|
|
26
|
+
githubImport: true,
|
|
27
|
+
adoptBranch: true,
|
|
28
|
+
gitRebaseSync: true,
|
|
29
|
+
reactFileManager: true,
|
|
30
|
+
},
|
|
34
31
|
},
|
|
35
32
|
},
|
|
36
33
|
};
|
|
37
34
|
export const AllDisabled = {
|
|
38
35
|
args: {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
36
|
+
settings: {
|
|
37
|
+
...baseSettings,
|
|
38
|
+
featureFlags: {
|
|
39
|
+
skills: false,
|
|
40
|
+
envDeploy: false,
|
|
41
|
+
debug: false,
|
|
42
|
+
githubImport: false,
|
|
43
|
+
adoptBranch: false,
|
|
44
|
+
gitRebaseSync: false,
|
|
45
|
+
reactFileManager: false,
|
|
46
|
+
},
|
|
47
47
|
},
|
|
48
48
|
},
|
|
49
49
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-agent-settings-section.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/interactive-agent-settings-section.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAA0B,MAAM,yCAAyC,CAAC;AAGhG,MAAM,WAAW,oCAAoC;IACnD,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,wBAAgB,+BAA+B,CAAC,EAC9C,QAAQ,GACT,EAAE,oCAAoC,
|
|
1
|
+
{"version":3,"file":"interactive-agent-settings-section.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/interactive-agent-settings-section.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAA0B,MAAM,yCAAyC,CAAC;AAGhG,MAAM,WAAW,oCAAoC;IACnD,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,wBAAgB,+BAA+B,CAAC,EAC9C,QAAQ,GACT,EAAE,oCAAoC,2CAkHtC"}
|
package/dist/src/presentation/web/components/features/settings/interactive-agent-settings-section.js
CHANGED
|
@@ -25,7 +25,7 @@ export function InteractiveAgentSettingsSection({ settings, }) {
|
|
|
25
25
|
}
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
|
-
return (_jsxs(SettingsSection, { icon: MessageSquare, title: t('settings.interactiveAgent.title'), description: t('settings.interactiveAgent.description'), testId: "interactive-agent-settings-section", children: [_jsx(SwitchRow, { label: t('settings.interactiveAgent.enableChatTab'), description: t('settings.interactiveAgent.enableChatTabDescription'), id: "interactive-agent-enabled", testId: "switch-interactive-agent-enabled", checked: interactiveEnabled, onChange: (v) => {
|
|
28
|
+
return (_jsxs(SettingsSection, { icon: MessageSquare, title: t('settings.interactiveAgent.title'), description: t('settings.interactiveAgent.description'), testId: "interactive-agent-settings-section", tooltip: t('settings.interactiveAgent.hint'), children: [_jsx(SwitchRow, { label: t('settings.interactiveAgent.enableChatTab'), description: t('settings.interactiveAgent.enableChatTabDescription'), tooltip: "Shows or hides the Chat tab on feature detail pages. When enabled, you can have interactive conversations with the agent about a specific feature.", id: "interactive-agent-enabled", testId: "switch-interactive-agent-enabled", checked: interactiveEnabled, onChange: (v) => {
|
|
29
29
|
setInteractiveEnabled(v);
|
|
30
30
|
save({
|
|
31
31
|
interactiveAgent: {
|
|
@@ -34,7 +34,7 @@ export function InteractiveAgentSettingsSection({ settings, }) {
|
|
|
34
34
|
maxConcurrentSessions: parseInt(interactiveSessions, 10) || 3,
|
|
35
35
|
},
|
|
36
36
|
});
|
|
37
|
-
} }), _jsx(SettingsRow, { label: t('settings.interactiveAgent.autoTimeout'), description: t('settings.interactiveAgent.autoTimeoutDescription'), htmlFor: "interactive-agent-timeout", children: _jsx(NumberStepper, { id: "interactive-agent-timeout", testId: "input-interactive-agent-timeout", value: interactiveTimeout, placeholder: "15", min: 1, max: 120, suffix: "min", onChange: setInteractiveTimeout, onBlur: () => {
|
|
37
|
+
} }), _jsx(SettingsRow, { label: t('settings.interactiveAgent.autoTimeout'), description: t('settings.interactiveAgent.autoTimeoutDescription'), tooltip: "Minutes of inactivity before a chat agent session is automatically terminated. Prevents idle agent processes from consuming resources indefinitely.", htmlFor: "interactive-agent-timeout", children: _jsx(NumberStepper, { id: "interactive-agent-timeout", testId: "input-interactive-agent-timeout", value: interactiveTimeout, placeholder: "15", min: 1, max: 120, suffix: "min", onChange: setInteractiveTimeout, onBlur: () => {
|
|
38
38
|
const n = parseInt(interactiveTimeout, 10);
|
|
39
39
|
const clamped = Number.isNaN(n) ? 15 : Math.min(120, Math.max(1, n));
|
|
40
40
|
const clampedStr = String(clamped);
|
|
@@ -46,7 +46,7 @@ export function InteractiveAgentSettingsSection({ settings, }) {
|
|
|
46
46
|
maxConcurrentSessions: parseInt(interactiveSessions, 10) || 3,
|
|
47
47
|
},
|
|
48
48
|
});
|
|
49
|
-
} }) }), _jsx(SettingsRow, { label: t('settings.interactiveAgent.maxConcurrentSessions'), description: t('settings.interactiveAgent.maxConcurrentSessionsDescription'), htmlFor: "interactive-agent-sessions", children: _jsx(NumberStepper, { id: "interactive-agent-sessions", testId: "input-interactive-agent-sessions", value: interactiveSessions, placeholder: "3", min: 1, max: 10, onChange: setInteractiveSessions, onBlur: () => {
|
|
49
|
+
} }) }), _jsx(SettingsRow, { label: t('settings.interactiveAgent.maxConcurrentSessions'), description: t('settings.interactiveAgent.maxConcurrentSessionsDescription'), tooltip: "Maximum number of interactive agent sessions that can run simultaneously. Each session spawns a separate agent process, so higher values use more CPU and memory.", htmlFor: "interactive-agent-sessions", children: _jsx(NumberStepper, { id: "interactive-agent-sessions", testId: "input-interactive-agent-sessions", value: interactiveSessions, placeholder: "3", min: 1, max: 10, onChange: setInteractiveSessions, onBlur: () => {
|
|
50
50
|
const n = parseInt(interactiveSessions, 10);
|
|
51
51
|
const clamped = Number.isNaN(n) ? 3 : Math.min(10, Math.max(1, n));
|
|
52
52
|
const clampedStr = String(clamped);
|
package/dist/src/presentation/web/components/features/settings/notification-settings-section.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Settings } from '../../../../../../packages/core/src/domain/generated/output.js';
|
|
2
2
|
export interface NotificationSettingsSectionProps {
|
|
3
|
-
|
|
3
|
+
settings: Settings;
|
|
4
4
|
}
|
|
5
|
-
export declare function NotificationSettingsSection({
|
|
5
|
+
export declare function NotificationSettingsSection({ settings }: NotificationSettingsSectionProps): import("react/jsx-runtime").JSX.Element;
|
|
6
6
|
//# sourceMappingURL=notification-settings-section.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-settings-section.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/notification-settings-section.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"notification-settings-section.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/notification-settings-section.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAA2B,MAAM,yCAAyC,CAAC;AAGjG,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,wBAAgB,2BAA2B,CAAC,EAAE,QAAQ,EAAE,EAAE,gCAAgC,2CAmMzF"}
|
package/dist/src/presentation/web/components/features/settings/notification-settings-section.js
CHANGED
|
@@ -1,51 +1,25 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useState, useTransition
|
|
4
|
-
import { Bell
|
|
3
|
+
import { useState, useTransition } from 'react';
|
|
4
|
+
import { Bell } from 'lucide-react';
|
|
5
5
|
import { toast } from 'sonner';
|
|
6
|
-
import {
|
|
7
|
-
import { Label } from '../../ui/label.js';
|
|
8
|
-
import { Switch } from '../../ui/switch.js';
|
|
9
|
-
import { Separator } from '../../ui/separator.js';
|
|
6
|
+
import { useTranslation } from 'react-i18next';
|
|
10
7
|
import { updateSettingsAction } from '../../../app/actions/update-settings.js';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
{
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
];
|
|
18
|
-
const PR_EVENT_TOGGLES = [
|
|
19
|
-
{ key: 'mergeReviewReady', label: 'Merge Review Ready' },
|
|
20
|
-
{ key: 'prMerged', label: 'PR Merged' },
|
|
21
|
-
{ key: 'prClosed', label: 'PR Closed' },
|
|
22
|
-
{ key: 'prChecksPassed', label: 'PR Checks Passed' },
|
|
23
|
-
{ key: 'prChecksFailed', label: 'PR Checks Failed' },
|
|
24
|
-
{ key: 'prBlocked', label: 'PR Blocked' },
|
|
25
|
-
];
|
|
26
|
-
export function NotificationSettingsSection({ notifications }) {
|
|
27
|
-
const [inApp, setInApp] = useState(notifications.inApp.enabled);
|
|
28
|
-
const [events, setEvents] = useState({ ...notifications.events });
|
|
29
|
-
const [isPending, startTransition] = useTransition();
|
|
30
|
-
const [showSaved, setShowSaved] = useState(false);
|
|
31
|
-
const prevPendingRef = useRef(false);
|
|
32
|
-
useEffect(() => {
|
|
33
|
-
if (prevPendingRef.current && !isPending) {
|
|
34
|
-
setShowSaved(true);
|
|
35
|
-
const timer = setTimeout(() => setShowSaved(false), 2000);
|
|
36
|
-
return () => clearTimeout(timer);
|
|
37
|
-
}
|
|
38
|
-
prevPendingRef.current = isPending;
|
|
39
|
-
}, [isPending]);
|
|
8
|
+
import { SettingsSection, SwitchRow, SubsectionLabel } from './settings-section-utils.js';
|
|
9
|
+
export function NotificationSettingsSection({ settings }) {
|
|
10
|
+
const { t } = useTranslation('web');
|
|
11
|
+
const [, startTransition] = useTransition();
|
|
12
|
+
const [inApp, setInApp] = useState(settings.notifications.inApp.enabled);
|
|
13
|
+
const [events, setEvents] = useState({ ...settings.notifications.events });
|
|
40
14
|
function save(payload) {
|
|
41
15
|
startTransition(async () => {
|
|
42
16
|
const result = await updateSettingsAction(payload);
|
|
43
17
|
if (!result.success) {
|
|
44
|
-
toast.error(result.error ?? '
|
|
18
|
+
toast.error(result.error ?? t('settings.failedToSave'));
|
|
45
19
|
}
|
|
46
20
|
});
|
|
47
21
|
}
|
|
48
|
-
function
|
|
22
|
+
function buildNotificationPayload(overrides = {}) {
|
|
49
23
|
return {
|
|
50
24
|
notifications: {
|
|
51
25
|
inApp: { enabled: overrides.inApp ?? inApp },
|
|
@@ -53,14 +27,57 @@ export function NotificationSettingsSection({ notifications }) {
|
|
|
53
27
|
},
|
|
54
28
|
};
|
|
55
29
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
30
|
+
return (_jsxs(SettingsSection, { icon: Bell, title: t('settings.notifications.title'), description: t('settings.notifications.sectionDescription'), testId: "notification-settings-section", tooltip: t('settings.notifications.hint'), tooltipLinks: [
|
|
31
|
+
{
|
|
32
|
+
label: t('settings.notifications.links.notificationSystem'),
|
|
33
|
+
href: 'https://github.com/jrmatherly/shipit/blob/main/specs/021-agent-notifications/spec.yaml',
|
|
34
|
+
},
|
|
35
|
+
], children: [_jsx(SubsectionLabel, { children: t('settings.notifications.channels') }), _jsx(SwitchRow, { label: t('settings.notifications.inAppLabel'), description: t('settings.notifications.inAppDescription'), tooltip: "Master toggle for in-app toast notifications. When disabled, no event toasts will appear regardless of individual event settings below.", id: "notif-in-app", testId: "switch-in-app", checked: inApp, onChange: (v) => {
|
|
36
|
+
setInApp(v);
|
|
37
|
+
save(buildNotificationPayload({ inApp: v }));
|
|
38
|
+
} }), _jsx(SubsectionLabel, { children: t('settings.notifications.subsections.agentEvents') }), _jsx(SwitchRow, { label: t('settings.notifications.events.agentStarted'), tooltip: "Controls whether you receive an in-app toast notification when an agent begins working on a feature.", id: "notif-event-agentStarted", testId: "switch-event-agentStarted", checked: events.agentStarted, onChange: (v) => {
|
|
39
|
+
const newEvents = { ...events, agentStarted: v };
|
|
40
|
+
setEvents(newEvents);
|
|
41
|
+
save(buildNotificationPayload({ events: newEvents }));
|
|
42
|
+
} }), _jsx(SwitchRow, { label: t('settings.notifications.events.phaseCompleted'), tooltip: "Controls whether you receive an in-app toast notification when an agent completes a workflow phase (e.g., requirements, planning, implementation).", id: "notif-event-phaseCompleted", testId: "switch-event-phaseCompleted", checked: events.phaseCompleted, onChange: (v) => {
|
|
43
|
+
const newEvents = { ...events, phaseCompleted: v };
|
|
44
|
+
setEvents(newEvents);
|
|
45
|
+
save(buildNotificationPayload({ events: newEvents }));
|
|
46
|
+
} }), _jsx(SwitchRow, { label: t('settings.notifications.events.waitingApproval'), tooltip: "Controls whether you receive an in-app toast notification when a feature is paused and waiting for your approval to continue.", id: "notif-event-waitingApproval", testId: "switch-event-waitingApproval", checked: events.waitingApproval, onChange: (v) => {
|
|
47
|
+
const newEvents = { ...events, waitingApproval: v };
|
|
48
|
+
setEvents(newEvents);
|
|
49
|
+
save(buildNotificationPayload({ events: newEvents }));
|
|
50
|
+
} }), _jsx(SwitchRow, { label: t('settings.notifications.events.agentCompleted'), tooltip: "Controls whether you receive an in-app toast notification when an agent finishes all work on a feature successfully.", id: "notif-event-agentCompleted", testId: "switch-event-agentCompleted", checked: events.agentCompleted, onChange: (v) => {
|
|
51
|
+
const newEvents = { ...events, agentCompleted: v };
|
|
52
|
+
setEvents(newEvents);
|
|
53
|
+
save(buildNotificationPayload({ events: newEvents }));
|
|
54
|
+
} }), _jsx(SwitchRow, { label: t('settings.notifications.events.agentFailed'), tooltip: "Controls whether you receive an in-app toast notification when an agent encounters an error and stops working on a feature.", id: "notif-event-agentFailed", testId: "switch-event-agentFailed", checked: events.agentFailed, onChange: (v) => {
|
|
55
|
+
const newEvents = { ...events, agentFailed: v };
|
|
56
|
+
setEvents(newEvents);
|
|
57
|
+
save(buildNotificationPayload({ events: newEvents }));
|
|
58
|
+
} }), _jsx(SubsectionLabel, { children: t('settings.notifications.subsections.pullRequestEvents') }), _jsx(SwitchRow, { label: t('settings.notifications.events.prMerged'), tooltip: "Controls whether you receive an in-app toast notification when a feature's pull request is merged into the target branch.", id: "notif-event-prMerged", testId: "switch-event-prMerged", checked: events.prMerged, onChange: (v) => {
|
|
59
|
+
const newEvents = { ...events, prMerged: v };
|
|
60
|
+
setEvents(newEvents);
|
|
61
|
+
save(buildNotificationPayload({ events: newEvents }));
|
|
62
|
+
} }), _jsx(SwitchRow, { label: t('settings.notifications.events.prClosed'), tooltip: "Controls whether you receive an in-app toast notification when a feature's pull request is closed without merging.", id: "notif-event-prClosed", testId: "switch-event-prClosed", checked: events.prClosed, onChange: (v) => {
|
|
63
|
+
const newEvents = { ...events, prClosed: v };
|
|
64
|
+
setEvents(newEvents);
|
|
65
|
+
save(buildNotificationPayload({ events: newEvents }));
|
|
66
|
+
} }), _jsx(SwitchRow, { label: t('settings.notifications.events.prChecksPassed'), tooltip: "Controls whether you receive an in-app toast notification when all CI checks pass on a feature's pull request.", id: "notif-event-prChecksPassed", testId: "switch-event-prChecksPassed", checked: events.prChecksPassed, onChange: (v) => {
|
|
67
|
+
const newEvents = { ...events, prChecksPassed: v };
|
|
68
|
+
setEvents(newEvents);
|
|
69
|
+
save(buildNotificationPayload({ events: newEvents }));
|
|
70
|
+
} }), _jsx(SwitchRow, { label: t('settings.notifications.events.prChecksFailed'), tooltip: "Controls whether you receive an in-app toast notification when CI checks fail on a feature's pull request.", id: "notif-event-prChecksFailed", testId: "switch-event-prChecksFailed", checked: events.prChecksFailed, onChange: (v) => {
|
|
71
|
+
const newEvents = { ...events, prChecksFailed: v };
|
|
72
|
+
setEvents(newEvents);
|
|
73
|
+
save(buildNotificationPayload({ events: newEvents }));
|
|
74
|
+
} }), _jsx(SwitchRow, { label: t('settings.notifications.events.prBlocked'), tooltip: "Controls whether you receive an in-app toast notification when a pull request is blocked by merge conflicts or branch protection rules.", id: "notif-event-prBlocked", testId: "switch-event-prBlocked", checked: events.prBlocked, onChange: (v) => {
|
|
75
|
+
const newEvents = { ...events, prBlocked: v };
|
|
76
|
+
setEvents(newEvents);
|
|
77
|
+
save(buildNotificationPayload({ events: newEvents }));
|
|
78
|
+
} }), _jsx(SwitchRow, { label: t('settings.notifications.events.mergeReviewReady'), tooltip: "Controls whether you receive an in-app toast notification when a feature's PR passes all checks and is ready for your merge review.", id: "notif-event-mergeReviewReady", testId: "switch-event-mergeReviewReady", checked: events.mergeReviewReady, onChange: (v) => {
|
|
79
|
+
const newEvents = { ...events, mergeReviewReady: v };
|
|
80
|
+
setEvents(newEvents);
|
|
81
|
+
save(buildNotificationPayload({ events: newEvents }));
|
|
82
|
+
} })] }));
|
|
66
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-settings-section.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/notification-settings-section.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"notification-settings-section.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/notification-settings-section.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAiC9E,QAAA,MAAM,IAAI;;;;;;;CAO0C,CAAC;AAErD,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAWrB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAWxB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAWzB,CAAC"}
|
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
import { NotificationSettingsSection } from './notification-settings-section.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
component: NotificationSettingsSection,
|
|
5
|
-
tags: ['autodocs'],
|
|
6
|
-
parameters: {
|
|
7
|
-
layout: 'padded',
|
|
8
|
-
},
|
|
9
|
-
};
|
|
10
|
-
export default meta;
|
|
2
|
+
import { createDefaultSettings } from '../../../../../../packages/core/src/domain/factories/settings-defaults.factory.js';
|
|
3
|
+
const baseSettings = createDefaultSettings();
|
|
11
4
|
const allEvents = {
|
|
12
5
|
agentStarted: true,
|
|
13
6
|
phaseCompleted: true,
|
|
@@ -34,33 +27,48 @@ const noEvents = {
|
|
|
34
27
|
prChecksFailed: false,
|
|
35
28
|
prBlocked: false,
|
|
36
29
|
};
|
|
30
|
+
const meta = {
|
|
31
|
+
title: 'Features/Settings/NotificationSettingsSection',
|
|
32
|
+
component: NotificationSettingsSection,
|
|
33
|
+
tags: ['autodocs'],
|
|
34
|
+
parameters: {
|
|
35
|
+
layout: 'padded',
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
export default meta;
|
|
37
39
|
export const Default = {
|
|
38
40
|
args: {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
settings: {
|
|
42
|
+
...baseSettings,
|
|
43
|
+
notifications: {
|
|
44
|
+
...baseSettings.notifications,
|
|
45
|
+
inApp: { enabled: true },
|
|
46
|
+
events: allEvents,
|
|
47
|
+
},
|
|
44
48
|
},
|
|
45
49
|
},
|
|
46
50
|
};
|
|
47
51
|
export const AllEnabled = {
|
|
48
52
|
args: {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
53
|
+
settings: {
|
|
54
|
+
...baseSettings,
|
|
55
|
+
notifications: {
|
|
56
|
+
...baseSettings.notifications,
|
|
57
|
+
inApp: { enabled: true },
|
|
58
|
+
events: allEvents,
|
|
59
|
+
},
|
|
54
60
|
},
|
|
55
61
|
},
|
|
56
62
|
};
|
|
57
63
|
export const AllDisabled = {
|
|
58
64
|
args: {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
65
|
+
settings: {
|
|
66
|
+
...baseSettings,
|
|
67
|
+
notifications: {
|
|
68
|
+
...baseSettings.notifications,
|
|
69
|
+
inApp: { enabled: false },
|
|
70
|
+
events: noEvents,
|
|
71
|
+
},
|
|
64
72
|
},
|
|
65
73
|
},
|
|
66
74
|
};
|
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":"AA4BA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAiBzE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACzC,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;CACpC;AAED,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,GAChB,EAAE,uBAAuB,2CAqJzB"}
|