@peers-app/peers-ui 0.27.3 → 0.27.4
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/screens/network-viewer/network-viewer-ipc.d.ts +3 -1
- package/dist/screens/network-viewer/network-viewer-ipc.js +6 -0
- package/dist/screens/network-viewer/sync-recovery.js +103 -1
- package/dist/screens/variables/variable-details.js +2 -1
- package/dist/tabs-layout/network-status-indicator.js +26 -12
- package/dist/tabs-layout/use-network-status.d.ts +6 -1
- package/dist/tabs-layout/use-network-status.js +27 -4
- package/package.json +9 -3
- package/.claude/settings.local.json +0 -34
- package/.github/README.md +0 -52
- package/.github/workflows/delete-all-artifacts.yml +0 -49
- package/.github/workflows/publish.yml +0 -51
- package/babel.config.js +0 -7
- package/biome.json +0 -198
- package/dist/app-updates/app-updates-consumer.test.d.ts +0 -1
- package/dist/app-updates/app-updates-consumer.test.js +0 -56
- package/dist/app-updates/app-updates-settings.test.d.ts +0 -1
- package/dist/app-updates/app-updates-settings.test.js +0 -93
- package/dist/app-updates/remote-app-update-panel.test.d.ts +0 -1
- package/dist/app-updates/remote-app-update-panel.test.js +0 -165
- package/dist/components/access-level-field.test.d.ts +0 -1
- package/dist/components/access-level-field.test.js +0 -28
- package/dist/components/message-logs/tool-access-approval-card.test.d.ts +0 -1
- package/dist/components/message-logs/tool-access-approval-card.test.js +0 -102
- package/dist/components/responsive-section-nav.test.d.ts +0 -1
- package/dist/components/responsive-section-nav.test.js +0 -45
- package/dist/globals-hash.test.d.ts +0 -1
- package/dist/globals-hash.test.js +0 -16
- package/dist/hooks/use-observable-state.test.d.ts +0 -1
- package/dist/hooks/use-observable-state.test.js +0 -64
- package/dist/hooks/use-observable.test.d.ts +0 -1
- package/dist/hooks/use-observable.test.js +0 -191
- package/dist/hooks/use-rows.test.d.ts +0 -1
- package/dist/hooks/use-rows.test.js +0 -175
- package/dist/hooks/use-tool.test.d.ts +0 -1
- package/dist/hooks/use-tool.test.js +0 -190
- package/dist/host-shell/host-shell-consumer.test.d.ts +0 -1
- package/dist/host-shell/host-shell-consumer.test.js +0 -28
- package/dist/root-layout/root-layout-host.test.d.ts +0 -1
- package/dist/root-layout/root-layout-host.test.js +0 -86
- package/dist/screens/account/account-screen.test.d.ts +0 -1
- package/dist/screens/account/account-screen.test.js +0 -51
- package/dist/screens/assistants/assistant-config.test.d.ts +0 -1
- package/dist/screens/assistants/assistant-config.test.js +0 -57
- package/dist/screens/contacts/contact-list.test.d.ts +0 -1
- package/dist/screens/contacts/contact-list.test.js +0 -48
- package/dist/screens/device-pairing/device-pairing.test.d.ts +0 -1
- package/dist/screens/device-pairing/device-pairing.test.js +0 -119
- package/dist/screens/devices/devices-list.test.d.ts +0 -1
- package/dist/screens/devices/devices-list.test.js +0 -53
- package/dist/screens/groups/group-list.test.d.ts +0 -1
- package/dist/screens/groups/group-list.test.js +0 -38
- package/dist/screens/identity/identity-routes.test.d.ts +0 -1
- package/dist/screens/identity/identity-routes.test.js +0 -51
- package/dist/screens/identity/identity-screen.test.d.ts +0 -1
- package/dist/screens/identity/identity-screen.test.js +0 -103
- package/dist/screens/invites/accept-invite.test.d.ts +0 -1
- package/dist/screens/invites/accept-invite.test.js +0 -103
- package/dist/screens/invites/activity-view.test.d.ts +0 -1
- package/dist/screens/invites/activity-view.test.js +0 -108
- package/dist/screens/invites/invite-classify.test.d.ts +0 -1
- package/dist/screens/invites/invite-classify.test.js +0 -115
- package/dist/screens/network-viewer/network-viewer-ipc.test.d.ts +0 -1
- package/dist/screens/network-viewer/network-viewer-ipc.test.js +0 -61
- package/dist/screens/network-viewer/network-viewer.section.test.d.ts +0 -1
- package/dist/screens/network-viewer/network-viewer.section.test.js +0 -63
- package/dist/screens/network-viewer/sync-recovery.test.d.ts +0 -1
- package/dist/screens/network-viewer/sync-recovery.test.js +0 -104
- package/dist/screens/packages/package-helpers.test.d.ts +0 -1
- package/dist/screens/packages/package-helpers.test.js +0 -53
- package/dist/screens/packages/package-runtime-status.test.d.ts +0 -1
- package/dist/screens/packages/package-runtime-status.test.js +0 -50
- package/dist/screens/packages/packages-ipc.test.d.ts +0 -1
- package/dist/screens/packages/packages-ipc.test.js +0 -43
- package/dist/screens/settings/settings-page.test.d.ts +0 -1
- package/dist/screens/settings/settings-page.test.js +0 -19
- package/dist/screens/tools/tool-access-ipc.test.d.ts +0 -1
- package/dist/screens/tools/tool-access-ipc.test.js +0 -40
- package/dist/screens/tools/tool-catalog-ipc.test.d.ts +0 -1
- package/dist/screens/tools/tool-catalog-ipc.test.js +0 -52
- package/dist/tabs-layout/network-status-indicator.test.d.ts +0 -1
- package/dist/tabs-layout/network-status-indicator.test.js +0 -665
- package/dist/tabs-layout/tabs-state.test.d.ts +0 -1
- package/dist/tabs-layout/tabs-state.test.js +0 -110
- package/dist/tabs-layout/use-network-status.test.d.ts +0 -1
- package/dist/tabs-layout/use-network-status.test.js +0 -45
- package/dist/ui-router/ui-loader.test.d.ts +0 -1
- package/dist/ui-router/ui-loader.test.js +0 -91
- package/jest.config.js +0 -25
- package/release-guard.js +0 -10
- package/src/app-updates/app-update-controls.tsx +0 -73
- package/src/app-updates/app-updates-consumer.test.ts +0 -83
- package/src/app-updates/app-updates-consumer.ts +0 -121
- package/src/app-updates/app-updates-settings.test.tsx +0 -109
- package/src/app-updates/app-updates-settings.tsx +0 -136
- package/src/app-updates/remote-app-update-panel.test.tsx +0 -205
- package/src/app-updates/remote-app-update-panel.tsx +0 -210
- package/src/app-updates/use-app-update-status.ts +0 -16
- package/src/command-palette/command-palette-ui.tsx +0 -564
- package/src/command-palette/command-palette.ts +0 -242
- package/src/components/access-level-field.test.tsx +0 -32
- package/src/components/access-level-field.tsx +0 -68
- package/src/components/checkbox.tsx +0 -25
- package/src/components/group-switcher.tsx +0 -526
- package/src/components/input-date.tsx +0 -29
- package/src/components/input-number.tsx +0 -83
- package/src/components/input.tsx +0 -25
- package/src/components/inverse-lazy-list.tsx +0 -107
- package/src/components/io-schema-values.tsx +0 -103
- package/src/components/io-schema.tsx +0 -259
- package/src/components/lazy-list.tsx +0 -115
- package/src/components/list-screen.tsx +0 -126
- package/src/components/loading-indicator.tsx +0 -7
- package/src/components/markdown-editor/autolink-plugin.tsx +0 -29
- package/src/components/markdown-editor/editor-inline.tsx +0 -9
- package/src/components/markdown-editor/editor.tsx +0 -158
- package/src/components/markdown-editor/markdown-plugin.tsx +0 -202
- package/src/components/markdown-editor/mention-node.ts +0 -204
- package/src/components/markdown-editor/mentions-plugin.tsx +0 -354
- package/src/components/markdown-editor/move-line-plugin.tsx +0 -186
- package/src/components/markdown-editor/select-line-boundary-plugin.tsx +0 -95
- package/src/components/markdown-editor/theme.ts +0 -46
- package/src/components/markdown-editor/toolbar.tsx +0 -269
- package/src/components/markdown-with-mentions.tsx +0 -198
- package/src/components/message-logs/message-logs.tsx +0 -523
- package/src/components/message-logs/tool-access-approval-card.test.tsx +0 -127
- package/src/components/message-logs/tool-access-approval-card.tsx +0 -178
- package/src/components/messages/avatar.tsx +0 -171
- package/src/components/messages/channel-message-list.tsx +0 -189
- package/src/components/messages/channel-view.tsx +0 -92
- package/src/components/messages/message-compose.tsx +0 -192
- package/src/components/messages/message-display.tsx +0 -231
- package/src/components/messages/thread-message-list.tsx +0 -135
- package/src/components/qr-scanner.tsx +0 -180
- package/src/components/responsive-section-nav.test.tsx +0 -88
- package/src/components/responsive-section-nav.tsx +0 -92
- package/src/components/router.tsx +0 -175
- package/src/components/save-button.tsx +0 -134
- package/src/components/sortable-list.tsx +0 -130
- package/src/components/tabs.tsx +0 -76
- package/src/components/tooltip.tsx +0 -43
- package/src/components/trust-level-badge.tsx +0 -44
- package/src/components/trust-level-dropdown.tsx +0 -136
- package/src/components/typeahead.tsx +0 -357
- package/src/globals-hash.test.ts +0 -19
- package/src/globals.tsx +0 -226
- package/src/hooks/index.ts +0 -8
- package/src/hooks/use-host-contract.ts +0 -75
- package/src/hooks/use-observable-state.test.tsx +0 -101
- package/src/hooks/use-observable-state.ts +0 -29
- package/src/hooks/use-observable.test.tsx +0 -258
- package/src/hooks/use-observable.ts +0 -67
- package/src/hooks/use-on-screen.ts +0 -24
- package/src/hooks/use-promise.ts +0 -34
- package/src/hooks/use-rows.test.tsx +0 -196
- package/src/hooks/use-rows.ts +0 -120
- package/src/hooks/use-subscription.ts +0 -24
- package/src/hooks/use-tool.test.tsx +0 -225
- package/src/hooks/use-tool.ts +0 -116
- package/src/host-shell/host-shell-consumer.test.ts +0 -32
- package/src/host-shell/host-shell-consumer.ts +0 -53
- package/src/index.tsx +0 -42
- package/src/mention-configs.ts +0 -185
- package/src/operator-console/operator-console-state.ts +0 -119
- package/src/operator-console/operator-console.tsx +0 -233
- package/src/peers-services-registration.ts +0 -6
- package/src/root-layout/global-overlays.ts +0 -50
- package/src/root-layout/layout-picker.tsx +0 -47
- package/src/root-layout/layouts/full-screen-layout.tsx +0 -144
- package/src/root-layout/layouts/tabs-with-console-layout.tsx +0 -260
- package/src/root-layout/root-layout-host.test.tsx +0 -108
- package/src/root-layout/root-layout-host.tsx +0 -147
- package/src/root-layout/root-layout-registry.ts +0 -51
- package/src/root-layout/root-layout-state.ts +0 -55
- package/src/root-layout/root-layout.ts +0 -32
- package/src/screens/account/account-screen.test.tsx +0 -65
- package/src/screens/account/account-screen.tsx +0 -942
- package/src/screens/assistants/assistant-config.test.tsx +0 -54
- package/src/screens/assistants/assistant-config.tsx +0 -121
- package/src/screens/assistants/assistant-details.tsx +0 -89
- package/src/screens/assistants/assistant-info.tsx +0 -66
- package/src/screens/assistants/assistant-list.tsx +0 -145
- package/src/screens/assistants/assistant-tools.tsx +0 -82
- package/src/screens/console-logs/console-logs-list.tsx +0 -374
- package/src/screens/console-logs/log-display.tsx +0 -137
- package/src/screens/console-logs/log-filters.tsx +0 -64
- package/src/screens/console-logs/mobile-log-card.tsx +0 -161
- package/src/screens/console-logs/resizable-table-header.tsx +0 -110
- package/src/screens/contacts/contact-details.tsx +0 -123
- package/src/screens/contacts/contact-list.test.tsx +0 -59
- package/src/screens/contacts/contact-list.tsx +0 -286
- package/src/screens/contacts/index.ts +0 -2
- package/src/screens/data-explorer/data-explorer.tsx +0 -633
- package/src/screens/data-explorer/index.ts +0 -6
- package/src/screens/data-explorer/query-executor.tsx +0 -520
- package/src/screens/device-pairing/device-pairing.test.tsx +0 -143
- package/src/screens/device-pairing/device-pairing.tsx +0 -461
- package/src/screens/device-pairing/identity-ipc.ts +0 -25
- package/src/screens/device-pairing/index.ts +0 -2
- package/src/screens/device-pairing/use-device-pairing-state.ts +0 -15
- package/src/screens/devices/devices-list.test.tsx +0 -68
- package/src/screens/devices/devices-list.tsx +0 -365
- package/src/screens/devices/index.ts +0 -1
- package/src/screens/groups/group-details.tsx +0 -160
- package/src/screens/groups/group-invite-panel.tsx +0 -311
- package/src/screens/groups/group-list.test.tsx +0 -44
- package/src/screens/groups/group-list.tsx +0 -317
- package/src/screens/groups/group-members.tsx +0 -343
- package/src/screens/groups/index.ts +0 -3
- package/src/screens/identity/identity-routes.test.ts +0 -70
- package/src/screens/identity/identity-routes.ts +0 -301
- package/src/screens/identity/identity-screen.test.tsx +0 -138
- package/src/screens/identity/identity-screen.tsx +0 -282
- package/src/screens/identity/index.ts +0 -2
- package/src/screens/identity/invite-contact-panel.tsx +0 -45
- package/src/screens/identity/profile-invite.tsx +0 -93
- package/src/screens/invites/accept-invite.test.tsx +0 -115
- package/src/screens/invites/accept-invite.tsx +0 -318
- package/src/screens/invites/activity-view.test.tsx +0 -127
- package/src/screens/invites/activity-view.tsx +0 -162
- package/src/screens/invites/index.ts +0 -6
- package/src/screens/invites/invite-capture.ts +0 -104
- package/src/screens/invites/invite-classify.test.ts +0 -129
- package/src/screens/invites/invite-share.tsx +0 -104
- package/src/screens/invites/invites-ipc.ts +0 -25
- package/src/screens/invites/pending-invites-list.tsx +0 -256
- package/src/screens/network-viewer/connection-troubleshooter.tsx +0 -395
- package/src/screens/network-viewer/cpu-usage-graph.tsx +0 -294
- package/src/screens/network-viewer/device-details-modal.tsx +0 -339
- package/src/screens/network-viewer/group-details-modal.tsx +0 -421
- package/src/screens/network-viewer/index.ts +0 -8
- package/src/screens/network-viewer/network-viewer-ipc.test.ts +0 -72
- package/src/screens/network-viewer/network-viewer-ipc.ts +0 -39
- package/src/screens/network-viewer/network-viewer-section.ts +0 -12
- package/src/screens/network-viewer/network-viewer.section.test.tsx +0 -68
- package/src/screens/network-viewer/network-viewer.tsx +0 -708
- package/src/screens/network-viewer/remote-logs-panel.tsx +0 -190
- package/src/screens/network-viewer/sync-recovery.test.tsx +0 -114
- package/src/screens/network-viewer/sync-recovery.tsx +0 -461
- package/src/screens/network-viewer/usage-graph.tsx +0 -455
- package/src/screens/packages/local-folder-grants-panel.tsx +0 -290
- package/src/screens/packages/local-folders-ipc.ts +0 -28
- package/src/screens/packages/package-details.tsx +0 -166
- package/src/screens/packages/package-helpers.test.ts +0 -57
- package/src/screens/packages/package-helpers.ts +0 -137
- package/src/screens/packages/package-info.tsx +0 -354
- package/src/screens/packages/package-list.tsx +0 -519
- package/src/screens/packages/package-network-panel.tsx +0 -82
- package/src/screens/packages/package-new-local.tsx +0 -100
- package/src/screens/packages/package-runtime-status.test.tsx +0 -58
- package/src/screens/packages/package-runtime-status.tsx +0 -68
- package/src/screens/packages/package-versions.tsx +0 -298
- package/src/screens/packages/packages-ipc.test.ts +0 -47
- package/src/screens/packages/packages-ipc.ts +0 -125
- package/src/screens/peer-types/peer-type-details.tsx +0 -172
- package/src/screens/peer-types/peer-type-list.tsx +0 -64
- package/src/screens/search/global-search.tsx +0 -406
- package/src/screens/settings/color-mode-dropdown.tsx +0 -82
- package/src/screens/settings/settings-page.test.tsx +0 -24
- package/src/screens/settings/settings-page.tsx +0 -426
- package/src/screens/setup-user.tsx +0 -355
- package/src/screens/tools/tool-access-ipc.test.ts +0 -55
- package/src/screens/tools/tool-access-ipc.ts +0 -27
- package/src/screens/tools/tool-catalog-ipc.test.ts +0 -52
- package/src/screens/tools/tool-catalog-ipc.ts +0 -51
- package/src/screens/tools/tool-details.tsx +0 -52
- package/src/screens/tools/tool-info.tsx +0 -45
- package/src/screens/tools/tool-list.tsx +0 -106
- package/src/screens/tools/tool-schema.tsx +0 -44
- package/src/screens/tools/tool-test-details.tsx +0 -89
- package/src/screens/tools/tool-test-list.tsx +0 -73
- package/src/screens/variables/variable-details.tsx +0 -289
- package/src/screens/variables/variable-list.tsx +0 -110
- package/src/screens/welcome-modal.tsx +0 -294
- package/src/screens/workflows/workflow-details.tsx +0 -115
- package/src/screens/workflows/workflow-info.tsx +0 -22
- package/src/screens/workflows/workflow-instructions.tsx +0 -134
- package/src/screens/workflows/workflow-list.tsx +0 -117
- package/src/setupTests.ts +0 -38
- package/src/system-apps/assistants.app.ts +0 -7
- package/src/system-apps/console-logs.app.ts +0 -7
- package/src/system-apps/data-explorer.app.ts +0 -8
- package/src/system-apps/identity.app.ts +0 -9
- package/src/system-apps/index.ts +0 -77
- package/src/system-apps/mobile-settings.app.ts +0 -7
- package/src/system-apps/network-viewer.app.ts +0 -8
- package/src/system-apps/packages.app.ts +0 -7
- package/src/system-apps/search.app.ts +0 -8
- package/src/system-apps/settings.app.ts +0 -7
- package/src/system-apps/threads.app.ts +0 -7
- package/src/system-apps/tools.app.ts +0 -7
- package/src/system-apps/types.app.ts +0 -7
- package/src/system-apps/variables.app.ts +0 -7
- package/src/system-apps/workflows.app.ts +0 -7
- package/src/tabs-layout/network-status-indicator.test.tsx +0 -799
- package/src/tabs-layout/network-status-indicator.tsx +0 -756
- package/src/tabs-layout/tabs-layout.tsx +0 -857
- package/src/tabs-layout/tabs-state.test.ts +0 -152
- package/src/tabs-layout/tabs-state.ts +0 -587
- package/src/tabs-layout/use-network-status.test.tsx +0 -58
- package/src/tabs-layout/use-network-status.ts +0 -68
- package/src/ui-defaults/index.ts +0 -2
- package/src/ui-defaults/list-screen.tsx +0 -94
- package/src/ui-defaults/markdown-field.tsx +0 -87
- package/src/ui-router/routes-loader.ts +0 -193
- package/src/ui-router/ui-loader.test.tsx +0 -108
- package/src/ui-router/ui-loader.tsx +0 -606
- package/src/utils.ts +0 -95
- package/tsconfig.json +0 -18
|
@@ -1,354 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
doesTagMatch,
|
|
3
|
-
getEffectivePackagePrefs,
|
|
4
|
-
groupDeviceVar,
|
|
5
|
-
hasDeviceFollowOverride,
|
|
6
|
-
type IDoc,
|
|
7
|
-
type IPackage,
|
|
8
|
-
type IPackageVersion,
|
|
9
|
-
Packages,
|
|
10
|
-
PackageVersions,
|
|
11
|
-
packagePrefsVar,
|
|
12
|
-
packagesRootDir,
|
|
13
|
-
updatePackagePrefs,
|
|
14
|
-
} from "@peers-app/peers-sdk";
|
|
15
|
-
import { Input } from "../../components/input";
|
|
16
|
-
import { MarkdownWithMentions } from "../../components/markdown-with-mentions";
|
|
17
|
-
import { Tooltip } from "../../components/tooltip";
|
|
18
|
-
import { useObservable, usePromise } from "../../hooks";
|
|
19
|
-
import { openInEditorOnHost, openOnHost } from "../../host-shell/host-shell-consumer";
|
|
20
|
-
import { PackageNetworkPanel } from "./package-network-panel";
|
|
21
|
-
|
|
22
|
-
/** Info tab for the package details screen. */
|
|
23
|
-
export const PackageInfo = (props: { pkg: IDoc<IPackage> }) => {
|
|
24
|
-
const { pkg } = props;
|
|
25
|
-
const [followVersionTags] = useObservable(pkg.qs.followVersionTags);
|
|
26
|
-
const [versionFollowRange] = useObservable(pkg.qs.versionFollowRange);
|
|
27
|
-
|
|
28
|
-
const localPathVar = groupDeviceVar<string>(`packageLocalPath_${pkg.packageId}`, {
|
|
29
|
-
defaultValue: `${packagesRootDir}/${pkg.name}`,
|
|
30
|
-
});
|
|
31
|
-
const [localPath, setLocalPath] = useObservable(localPathVar);
|
|
32
|
-
|
|
33
|
-
const [devicePrefs] = useObservable(packagePrefsVar(pkg.packageId));
|
|
34
|
-
const effective = getEffectivePackagePrefs(pkg.toJS(), devicePrefs);
|
|
35
|
-
const activeVersionId = effective.activePackageVersionId;
|
|
36
|
-
const isPinned = effective.isPinned;
|
|
37
|
-
const followRange = effective.followRange;
|
|
38
|
-
|
|
39
|
-
const hasOverride = hasDeviceFollowOverride(devicePrefs);
|
|
40
|
-
|
|
41
|
-
const groupFollowTags = followVersionTags === "stable,beta" ? "stable,beta" : "stable";
|
|
42
|
-
const groupRange = versionFollowRange || "latest";
|
|
43
|
-
|
|
44
|
-
const effectiveFollowTags = effective.followTags || "stable";
|
|
45
|
-
const followTagsValue = effectiveFollowTags === "stable,beta" ? "stable,beta" : "stable";
|
|
46
|
-
|
|
47
|
-
const activeVersion = usePromise(
|
|
48
|
-
async () => {
|
|
49
|
-
if (!activeVersionId) return null;
|
|
50
|
-
return PackageVersions().get(activeVersionId) as Promise<IPackageVersion | null>;
|
|
51
|
-
},
|
|
52
|
-
undefined,
|
|
53
|
-
[activeVersionId],
|
|
54
|
-
);
|
|
55
|
-
|
|
56
|
-
const newerLevel = usePromise(
|
|
57
|
-
async (): Promise<"major" | "minor" | "patch" | "uptodate"> => {
|
|
58
|
-
if (!activeVersionId) return "uptodate";
|
|
59
|
-
const all = await PackageVersions().list({ packageId: pkg.packageId });
|
|
60
|
-
const active = all.find((v) => v.packageVersionId === activeVersionId);
|
|
61
|
-
if (!active?.version) return "uptodate";
|
|
62
|
-
const parse = (v: string) => v.split(".").map(Number);
|
|
63
|
-
const [aMaj, aMin, aPat] = parse(active.version);
|
|
64
|
-
let highest: "major" | "minor" | "patch" | null = null;
|
|
65
|
-
for (const v of all) {
|
|
66
|
-
if (!v.version || v.packageVersionId === activeVersionId) continue;
|
|
67
|
-
if (!doesTagMatch(active.versionTag, v.versionTag, effectiveFollowTags, undefined))
|
|
68
|
-
continue;
|
|
69
|
-
const [maj, min, pat] = parse(v.version);
|
|
70
|
-
if (maj > aMaj) return "major";
|
|
71
|
-
if (maj === aMaj && min > aMin) {
|
|
72
|
-
highest = "minor";
|
|
73
|
-
continue;
|
|
74
|
-
}
|
|
75
|
-
if (maj === aMaj && min === aMin && pat > aPat && !highest) {
|
|
76
|
-
highest = "patch";
|
|
77
|
-
continue;
|
|
78
|
-
}
|
|
79
|
-
if (
|
|
80
|
-
maj === aMaj &&
|
|
81
|
-
min === aMin &&
|
|
82
|
-
pat === aPat &&
|
|
83
|
-
(v.createdAt || "") > (active.createdAt || "") &&
|
|
84
|
-
!highest
|
|
85
|
-
) {
|
|
86
|
-
highest = "patch";
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
return highest || "uptodate";
|
|
90
|
-
},
|
|
91
|
-
undefined,
|
|
92
|
-
[activeVersionId, pkg.packageId, effectiveFollowTags],
|
|
93
|
-
);
|
|
94
|
-
|
|
95
|
-
const remoteRepoUrl = pkg.remoteRepo;
|
|
96
|
-
|
|
97
|
-
return (
|
|
98
|
-
<div>
|
|
99
|
-
<small>Name:</small>
|
|
100
|
-
<Input
|
|
101
|
-
value={pkg.qs.name}
|
|
102
|
-
className="form-control mb-3 p-0 ps-2"
|
|
103
|
-
placeholder="Package name"
|
|
104
|
-
title="Package name"
|
|
105
|
-
disabled
|
|
106
|
-
/>
|
|
107
|
-
|
|
108
|
-
<div className="mt-2">
|
|
109
|
-
<small>
|
|
110
|
-
Local Path:
|
|
111
|
-
<small>
|
|
112
|
-
<Tooltip
|
|
113
|
-
markdownContent={`The local path to the directory containing the package. This will open in VS Code if it's installed otherwise this will open in your native file system`}
|
|
114
|
-
/>
|
|
115
|
-
<button
|
|
116
|
-
className="btn btn-sm btn-link"
|
|
117
|
-
onClick={() => {
|
|
118
|
-
void openInEditorOnHost(localPath || packagesRootDir);
|
|
119
|
-
}}
|
|
120
|
-
>
|
|
121
|
-
Open Local
|
|
122
|
-
</button>
|
|
123
|
-
</small>
|
|
124
|
-
</small>
|
|
125
|
-
<input
|
|
126
|
-
type="text"
|
|
127
|
-
className="form-control mb-3 p-0 ps-2"
|
|
128
|
-
placeholder="~/peers/packages/my-package"
|
|
129
|
-
value={localPath || ""}
|
|
130
|
-
onChange={(e) => setLocalPath(e.target.value)}
|
|
131
|
-
/>
|
|
132
|
-
</div>
|
|
133
|
-
|
|
134
|
-
{remoteRepoUrl ? (
|
|
135
|
-
<div className="mt-2">
|
|
136
|
-
<small>
|
|
137
|
-
Source URL:
|
|
138
|
-
<small>
|
|
139
|
-
<Tooltip
|
|
140
|
-
markdownContent={`The remote source of this package. Often a github repository URL or a link to the Peers page for the package.`}
|
|
141
|
-
/>
|
|
142
|
-
<button
|
|
143
|
-
className="btn btn-sm btn-link"
|
|
144
|
-
onClick={() => {
|
|
145
|
-
void openOnHost(remoteRepoUrl);
|
|
146
|
-
}}
|
|
147
|
-
>
|
|
148
|
-
Open Remote
|
|
149
|
-
</button>
|
|
150
|
-
</small>
|
|
151
|
-
</small>
|
|
152
|
-
<Input value={pkg.qs.remoteRepo} className="form-control mb-3 p-0 ps-2" disabled />
|
|
153
|
-
</div>
|
|
154
|
-
) : null}
|
|
155
|
-
|
|
156
|
-
<div className="mt-2">
|
|
157
|
-
<small>
|
|
158
|
-
Update URL:
|
|
159
|
-
<small>
|
|
160
|
-
<Tooltip
|
|
161
|
-
markdownContent={`Base URL for remote package updates. Admin devices poll **<updateUrl>/latest-<tag>.json** on startup (for example **latest-stable.json**). Signed artifacts must be published to this host separately — for example via the publish-package tool or the peers-core full-release pipeline.`}
|
|
162
|
-
/>
|
|
163
|
-
</small>
|
|
164
|
-
</small>
|
|
165
|
-
<Input
|
|
166
|
-
value={pkg.qs.updateUrl}
|
|
167
|
-
className="form-control mb-3 p-0 ps-2"
|
|
168
|
-
placeholder="https://example.com/my-package"
|
|
169
|
-
title="Update URL"
|
|
170
|
-
/>
|
|
171
|
-
</div>
|
|
172
|
-
|
|
173
|
-
<div className="mt-2">
|
|
174
|
-
<hr />
|
|
175
|
-
<small>
|
|
176
|
-
Version:
|
|
177
|
-
<Tooltip markdownContent="The currently active version of this package. Manage versions in the Versions tab." />
|
|
178
|
-
</small>
|
|
179
|
-
{activeVersion ? (
|
|
180
|
-
<div className="d-flex align-items-center mt-1 mb-3">
|
|
181
|
-
<strong className="me-2">v{activeVersion.version}</strong>
|
|
182
|
-
{activeVersion.versionTag && (
|
|
183
|
-
<span
|
|
184
|
-
className={`badge ${activeVersion.versionTag === "dev" ? "text-bg-danger" : activeVersion.versionTag.startsWith("beta") ? "text-bg-warning" : "text-bg-success"} me-2`}
|
|
185
|
-
>
|
|
186
|
-
{activeVersion.versionTag}
|
|
187
|
-
</span>
|
|
188
|
-
)}
|
|
189
|
-
<code className="text-muted small me-2">
|
|
190
|
-
{activeVersion.packageVersionHash?.substring(0, 8)}
|
|
191
|
-
</code>
|
|
192
|
-
{newerLevel === "uptodate" ? (
|
|
193
|
-
<span className="badge text-bg-success">Up to date</span>
|
|
194
|
-
) : newerLevel ? (
|
|
195
|
-
<span
|
|
196
|
-
className={`badge text-bg-${newerLevel === "major" ? "danger" : newerLevel === "minor" ? "warning" : "info"}`}
|
|
197
|
-
>
|
|
198
|
-
Newer {newerLevel} version available
|
|
199
|
-
</span>
|
|
200
|
-
) : null}
|
|
201
|
-
</div>
|
|
202
|
-
) : (
|
|
203
|
-
<div className="text-muted small mt-1 mb-3">No active version</div>
|
|
204
|
-
)}
|
|
205
|
-
|
|
206
|
-
<div className="mb-3">
|
|
207
|
-
<small>
|
|
208
|
-
Auto-Update Range:
|
|
209
|
-
<Tooltip markdownContent="Controls which new versions are auto-activated for the group. When an admin device auto-upgrades, the group's active version advances for everyone. **Pinned** = never auto-update. **Patch** = same major.minor (e.g. 1.2.x). **Minor** = same major (e.g. 1.x.x). **Latest** = always auto-update to newest." />
|
|
210
|
-
</small>
|
|
211
|
-
<select
|
|
212
|
-
className="form-select form-select-sm"
|
|
213
|
-
value={groupRange}
|
|
214
|
-
onChange={async (e) => {
|
|
215
|
-
const val = e.target.value as "pinned" | "patch" | "minor" | "latest";
|
|
216
|
-
const current = await Packages().get(pkg.packageId);
|
|
217
|
-
if (current) {
|
|
218
|
-
current.versionFollowRange = val;
|
|
219
|
-
await Packages().signAndSave(current);
|
|
220
|
-
await pkg.load();
|
|
221
|
-
}
|
|
222
|
-
}}
|
|
223
|
-
>
|
|
224
|
-
<option value="latest">Latest (auto-update to newest)</option>
|
|
225
|
-
<option value="minor">Minor (same major version)</option>
|
|
226
|
-
<option value="patch">Patch (same major.minor version)</option>
|
|
227
|
-
<option value="pinned">Pinned (no auto-updates)</option>
|
|
228
|
-
</select>
|
|
229
|
-
</div>
|
|
230
|
-
|
|
231
|
-
<div className={`mb-3 ${groupRange === "pinned" ? "opacity-50" : ""}`}>
|
|
232
|
-
<small>
|
|
233
|
-
Following:
|
|
234
|
-
<Tooltip markdownContent="Which release channel the group follows. Devices using group settings will auto-upgrade within this channel. **Stable** = only fully promoted releases. **Stable + Beta** = also includes beta pre-releases for early testing." />
|
|
235
|
-
</small>
|
|
236
|
-
<select
|
|
237
|
-
className="form-select form-select-sm"
|
|
238
|
-
value={groupFollowTags}
|
|
239
|
-
disabled={groupRange === "pinned"}
|
|
240
|
-
onChange={async (e) => {
|
|
241
|
-
const val = e.target.value;
|
|
242
|
-
const current = await Packages().get(pkg.packageId);
|
|
243
|
-
if (current) {
|
|
244
|
-
current.followVersionTags = val === "stable" ? undefined : val;
|
|
245
|
-
await Packages().signAndSave(current);
|
|
246
|
-
await pkg.load();
|
|
247
|
-
}
|
|
248
|
-
}}
|
|
249
|
-
>
|
|
250
|
-
<option value="stable">Stable</option>
|
|
251
|
-
<option value="stable,beta">Stable + Beta</option>
|
|
252
|
-
</select>
|
|
253
|
-
</div>
|
|
254
|
-
|
|
255
|
-
<div className="mb-3">
|
|
256
|
-
<div className="form-check">
|
|
257
|
-
<input
|
|
258
|
-
className="form-check-input"
|
|
259
|
-
type="checkbox"
|
|
260
|
-
id={`deviceOverride_${pkg.packageId}`}
|
|
261
|
-
checked={hasOverride}
|
|
262
|
-
onChange={async (e) => {
|
|
263
|
-
if (e.target.checked) {
|
|
264
|
-
await updatePackagePrefs(pkg.packageId, {
|
|
265
|
-
followRange:
|
|
266
|
-
groupRange === "pinned"
|
|
267
|
-
? undefined
|
|
268
|
-
: (groupRange as "patch" | "minor" | "latest"),
|
|
269
|
-
followTags: followVersionTags || undefined,
|
|
270
|
-
pinned: groupRange === "pinned" ? true : undefined,
|
|
271
|
-
});
|
|
272
|
-
} else {
|
|
273
|
-
await updatePackagePrefs(pkg.packageId, {
|
|
274
|
-
followRange: undefined,
|
|
275
|
-
followTags: undefined,
|
|
276
|
-
pinned: undefined,
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
}}
|
|
280
|
-
/>
|
|
281
|
-
<label className="form-check-label" htmlFor={`deviceOverride_${pkg.packageId}`}>
|
|
282
|
-
<small>Override on this device</small>
|
|
283
|
-
</label>
|
|
284
|
-
<small>
|
|
285
|
-
<Tooltip
|
|
286
|
-
markdownContent={`**Off:** This device follows the group's auto-update and channel settings. When an admin device upgrades, the group's active version advances for all devices.\n\n**On:** This device uses its own settings below. Upgrades only affect this device — the group's active version is not changed.`}
|
|
287
|
-
/>
|
|
288
|
-
</small>
|
|
289
|
-
</div>
|
|
290
|
-
</div>
|
|
291
|
-
|
|
292
|
-
{hasOverride && (
|
|
293
|
-
<div className="ps-3 border-start mb-3">
|
|
294
|
-
<div className="mb-3">
|
|
295
|
-
<small>
|
|
296
|
-
Auto-Update Range (this device):
|
|
297
|
-
<Tooltip markdownContent="Controls which new versions are auto-activated on **this device only**. Upgrades here do not change the group's active version." />
|
|
298
|
-
</small>
|
|
299
|
-
<select
|
|
300
|
-
className="form-select form-select-sm"
|
|
301
|
-
value={isPinned ? "pinned" : followRange}
|
|
302
|
-
onChange={async (e) => {
|
|
303
|
-
const val = e.target.value as "pinned" | "patch" | "minor" | "latest";
|
|
304
|
-
await updatePackagePrefs(pkg.packageId, {
|
|
305
|
-
pinned: val === "pinned",
|
|
306
|
-
followRange: val === "pinned" ? undefined : val,
|
|
307
|
-
});
|
|
308
|
-
}}
|
|
309
|
-
>
|
|
310
|
-
<option value="latest">Latest (auto-update to newest)</option>
|
|
311
|
-
<option value="minor">Minor (same major version)</option>
|
|
312
|
-
<option value="patch">Patch (same major.minor version)</option>
|
|
313
|
-
<option value="pinned">Pinned (no auto-updates)</option>
|
|
314
|
-
</select>
|
|
315
|
-
</div>
|
|
316
|
-
|
|
317
|
-
<div className={isPinned ? "opacity-50" : ""}>
|
|
318
|
-
<small>
|
|
319
|
-
Following (this device):
|
|
320
|
-
<Tooltip markdownContent="Which release channel to follow on **this device only**, overriding the group setting." />
|
|
321
|
-
</small>
|
|
322
|
-
<select
|
|
323
|
-
className="form-select form-select-sm"
|
|
324
|
-
value={followTagsValue}
|
|
325
|
-
disabled={isPinned}
|
|
326
|
-
onChange={async (e) => {
|
|
327
|
-
const val = e.target.value;
|
|
328
|
-
await updatePackagePrefs(pkg.packageId, {
|
|
329
|
-
followTags: val === "stable" ? "stable" : val,
|
|
330
|
-
});
|
|
331
|
-
}}
|
|
332
|
-
>
|
|
333
|
-
<option value="stable">Stable</option>
|
|
334
|
-
<option value="stable,beta">Stable + Beta</option>
|
|
335
|
-
</select>
|
|
336
|
-
</div>
|
|
337
|
-
</div>
|
|
338
|
-
)}
|
|
339
|
-
</div>
|
|
340
|
-
|
|
341
|
-
<div className="mt-2">
|
|
342
|
-
<hr />
|
|
343
|
-
<small>
|
|
344
|
-
Description:
|
|
345
|
-
<Tooltip
|
|
346
|
-
markdownContent={`This should be edited in the package's README.md. It will automatically update when you restart Peers or reload the package.`}
|
|
347
|
-
/>
|
|
348
|
-
</small>
|
|
349
|
-
<MarkdownWithMentions content={pkg.description || ""} />
|
|
350
|
-
</div>
|
|
351
|
-
<PackageNetworkPanel packageId={pkg.packageId} />
|
|
352
|
-
</div>
|
|
353
|
-
);
|
|
354
|
-
};
|