@shipfox/client-runners 14.0.0 → 16.0.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.
Files changed (35) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +23 -0
  3. package/dist/components/create-manual-registration-token-form.js +7 -7
  4. package/dist/components/create-manual-registration-token-form.js.map +1 -1
  5. package/dist/components/create-provisioner-token-form.js +7 -7
  6. package/dist/components/create-provisioner-token-form.js.map +1 -1
  7. package/dist/components/manual-registration-token-list.js +6 -6
  8. package/dist/components/manual-registration-token-list.js.map +1 -1
  9. package/dist/components/manual-registration-tokens-settings-section.js +7 -7
  10. package/dist/components/manual-registration-tokens-settings-section.js.map +1 -1
  11. package/dist/components/provisioner-token-list.js +7 -7
  12. package/dist/components/provisioner-token-list.js.map +1 -1
  13. package/dist/components/provisioner-tokens-settings-section.js +7 -7
  14. package/dist/components/provisioner-tokens-settings-section.js.map +1 -1
  15. package/dist/components/token-expiration-select.d.ts +2 -2
  16. package/dist/components/token-expiration-select.d.ts.map +1 -1
  17. package/dist/components/token-settings-sections.stories.d.ts.map +1 -1
  18. package/dist/feature.d.ts +16 -16
  19. package/dist/feature.d.ts.map +1 -1
  20. package/dist/hooks/api/manual-registration-tokens.d.ts +1 -1
  21. package/dist/hooks/api/manual-registration-tokens.d.ts.map +1 -1
  22. package/dist/hooks/api/provisioner-tokens.d.ts +1 -1
  23. package/dist/hooks/api/provisioner-tokens.d.ts.map +1 -1
  24. package/dist/hooks/api/token-mapper.d.ts +1 -1
  25. package/dist/routes/provisioners-settings.d.ts.map +1 -1
  26. package/dist/routes/runners-settings.d.ts.map +1 -1
  27. package/dist/tsconfig.test.tsbuildinfo +1 -1
  28. package/package.json +5 -5
  29. package/src/components/create-manual-registration-token-form.tsx +7 -7
  30. package/src/components/create-provisioner-token-form.tsx +7 -7
  31. package/src/components/manual-registration-token-list.tsx +6 -6
  32. package/src/components/manual-registration-tokens-settings-section.tsx +7 -7
  33. package/src/components/provisioner-token-list.tsx +7 -7
  34. package/src/components/provisioner-tokens-settings-section.tsx +7 -7
  35. package/tsconfig.build.tsbuildinfo +1 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@shipfox/client-runners",
3
3
  "license": "MIT",
4
- "version": "14.0.0",
4
+ "version": "16.0.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/ShipfoxHQ/shipfox.git",
@@ -27,11 +27,11 @@
27
27
  "dependencies": {
28
28
  "@swc/helpers": "^0.5.17",
29
29
  "@tanstack/react-form": "^1.32.0",
30
- "@shipfox/api-runners-dto": "12.0.0",
30
+ "@shipfox/api-runners-dto": "12.2.0",
31
31
  "@shipfox/client-api": "6.0.1",
32
- "@shipfox/client-shell": "14.0.0",
33
- "@shipfox/client-ui": "14.0.0",
34
- "@shipfox/react-ui": "0.5.0"
32
+ "@shipfox/client-shell": "16.0.0",
33
+ "@shipfox/client-ui": "16.0.0",
34
+ "@shipfox/react-ui": "1.1.0"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "@tanstack/react-query": "^5.101.0",
@@ -47,10 +47,10 @@ export function CreateManualRegistrationTokenForm({
47
47
 
48
48
  return (
49
49
  <>
50
- <ModalBody className="gap-16">
50
+ <ModalBody className="gap-group">
51
51
  <form
52
52
  id={CREATE_MANUAL_REGISTRATION_TOKEN_FORM_ID}
53
- className="flex w-full flex-col gap-8"
53
+ className="flex w-full flex-col gap-inline"
54
54
  noValidate
55
55
  onSubmit={(event) => {
56
56
  event.preventDefault();
@@ -58,7 +58,7 @@ export function CreateManualRegistrationTokenForm({
58
58
  void form.handleSubmit();
59
59
  }}
60
60
  >
61
- <div className="flex w-full items-end gap-16 max-[640px]:flex-col max-[640px]:items-stretch">
61
+ <div className="flex w-full items-end gap-group max-[640px]:flex-col max-[640px]:items-stretch">
62
62
  <form.Field
63
63
  name="name"
64
64
  validators={{
@@ -109,7 +109,7 @@ export function CreateManualRegistrationTokenForm({
109
109
  </form>
110
110
  {formError ? (
111
111
  <Callout role="alert" type="error">
112
- <div className="flex flex-col gap-8">
112
+ <div className="flex flex-col gap-inline">
113
113
  <Text size="sm" bold>
114
114
  Could not create token
115
115
  </Text>
@@ -156,14 +156,14 @@ export function CreatedManualRegistrationTokenPanel({
156
156
 
157
157
  return (
158
158
  <Callout type="success" variant="secondary" icon={null}>
159
- <CalloutContent className="flex flex-col gap-12">
160
- <div className="flex flex-col gap-2">
159
+ <CalloutContent className="flex flex-col gap-cluster">
160
+ <div className="flex flex-col gap-tight">
161
161
  <CalloutTitle className="mb-0">Token created</CalloutTitle>
162
162
  <CalloutDescription>
163
163
  Copy this registration token now. It will not be shown again.
164
164
  </CalloutDescription>
165
165
  </div>
166
- <div className="flex items-center gap-8 max-[640px]:flex-col max-[640px]:items-stretch">
166
+ <div className="flex items-center gap-inline max-[640px]:flex-col max-[640px]:items-stretch">
167
167
  <Code variant="paragraph" className="min-w-0 flex-1 break-all">
168
168
  {token.token}
169
169
  </Code>
@@ -47,10 +47,10 @@ export function CreateProvisionerTokenForm({
47
47
 
48
48
  return (
49
49
  <>
50
- <ModalBody className="gap-16">
50
+ <ModalBody className="gap-group">
51
51
  <form
52
52
  id={CREATE_PROVISIONER_TOKEN_FORM_ID}
53
- className="flex w-full flex-col gap-8"
53
+ className="flex w-full flex-col gap-inline"
54
54
  noValidate
55
55
  onSubmit={(event) => {
56
56
  event.preventDefault();
@@ -58,7 +58,7 @@ export function CreateProvisionerTokenForm({
58
58
  void form.handleSubmit();
59
59
  }}
60
60
  >
61
- <div className="flex w-full items-end gap-16 max-[640px]:flex-col max-[640px]:items-stretch">
61
+ <div className="flex w-full items-end gap-group max-[640px]:flex-col max-[640px]:items-stretch">
62
62
  <form.Field
63
63
  name="name"
64
64
  validators={{
@@ -109,7 +109,7 @@ export function CreateProvisionerTokenForm({
109
109
  </form>
110
110
  {formError ? (
111
111
  <Callout role="alert" type="error">
112
- <div className="flex flex-col gap-8">
112
+ <div className="flex flex-col gap-inline">
113
113
  <Text size="sm" bold>
114
114
  Could not create token
115
115
  </Text>
@@ -152,14 +152,14 @@ export function CreatedProvisionerTokenPanel({token}: {token: CreatedProvisioner
152
152
 
153
153
  return (
154
154
  <Callout type="success" variant="secondary" icon={null}>
155
- <CalloutContent className="flex flex-col gap-12">
156
- <div className="flex flex-col gap-2">
155
+ <CalloutContent className="flex flex-col gap-cluster">
156
+ <div className="flex flex-col gap-tight">
157
157
  <CalloutTitle className="mb-0">Token created</CalloutTitle>
158
158
  <CalloutDescription>
159
159
  Copy this provisioner token now. It will not be shown again.
160
160
  </CalloutDescription>
161
161
  </div>
162
- <div className="flex items-center gap-8 max-[640px]:flex-col max-[640px]:items-stretch">
162
+ <div className="flex items-center gap-inline max-[640px]:flex-col max-[640px]:items-stretch">
163
163
  <Code variant="paragraph" className="min-w-0 flex-1 break-all">
164
164
  {token.token}
165
165
  </Code>
@@ -82,15 +82,15 @@ export function ManualRegistrationTokenList({
82
82
  </Table>
83
83
  </div>
84
84
  <ul
85
- className="hidden flex-col gap-10 max-[760px]:flex"
85
+ className="hidden flex-col gap-inline max-[760px]:flex"
86
86
  aria-label="Manual registration tokens"
87
87
  >
88
88
  {tokens.map((token) => (
89
89
  <li
90
90
  key={token.id}
91
- className="rounded-8 border border-border-neutral-base bg-background-neutral-base p-14"
91
+ className="flex flex-col gap-cluster rounded-8 border border-border-neutral-base bg-background-neutral-base p-panel-compact"
92
92
  >
93
- <div className="flex items-start justify-between gap-12">
93
+ <div className="flex items-start justify-between gap-cluster">
94
94
  <div className="min-w-0 flex-1">
95
95
  <TokenName name={tokenDisplayName(token)} />
96
96
  <Code variant="paragraph" className="block truncate text-foreground-neutral-muted">
@@ -99,7 +99,7 @@ export function ManualRegistrationTokenList({
99
99
  </div>
100
100
  <RevokeManualRegistrationTokenButton workspaceId={workspaceId} token={token} />
101
101
  </div>
102
- <dl className="mt-12 grid grid-cols-2 gap-10 text-sm">
102
+ <dl className="grid grid-cols-2 gap-inline text-sm">
103
103
  <div>
104
104
  <dt className="text-foreground-neutral-muted">Expires</dt>
105
105
  <dd>
@@ -182,7 +182,7 @@ function RevokeManualRegistrationTokenButton({
182
182
  <ModalContent aria-describedby={undefined} className="max-w-[420px]">
183
183
  <ModalTitle className="sr-only">Revoke token</ModalTitle>
184
184
  <ModalHeader title="Revoke token?" />
185
- <ModalBody className="gap-16">
185
+ <ModalBody className="gap-group">
186
186
  <Text size="sm" className="text-foreground-neutral-muted">
187
187
  {tokenName} will stop creating new runner sessions. Existing sessions and job leases
188
188
  expire on their own.
@@ -227,7 +227,7 @@ export function ManualRegistrationTokenTableSkeleton() {
227
227
  <div
228
228
  role="status"
229
229
  aria-label="Loading manual registration tokens"
230
- className="flex flex-col gap-8"
230
+ className="flex flex-col gap-inline"
231
231
  >
232
232
  {[0, 1, 2].map((row) => (
233
233
  <Skeleton key={row} className="h-44 w-full" />
@@ -41,21 +41,21 @@ export function WorkspaceManualRegistrationTokensSettingsSection({
41
41
  }
42
42
 
43
43
  return (
44
- <div className="flex min-w-0 flex-col gap-32">
45
- <section className="flex flex-col gap-16">
46
- <div className="flex items-center justify-between gap-16 max-[640px]:items-start">
47
- <div className="flex flex-col gap-4">
44
+ <div className="flex min-w-0 flex-col gap-region">
45
+ <section className="flex flex-col gap-group">
46
+ <div className="flex items-center justify-between gap-group max-[640px]:items-start">
47
+ <div className="flex flex-col gap-tight">
48
48
  <Header variant="h3">Runner registration tokens</Header>
49
49
  <Text size="sm" className="text-foreground-neutral-muted">
50
50
  Register individual runner agents that run jobs directly in this workspace. Tokens are
51
51
  reusable until revoked.
52
52
  </Text>
53
53
  </div>
54
- <div className="flex items-center gap-12">
54
+ <div className="flex items-center gap-cluster">
55
55
  {tokensQuery.isFetching && !tokensQuery.isPending ? (
56
56
  <Icon
57
57
  name="loader4Line"
58
- className="mt-2 size-18 text-foreground-neutral-muted"
58
+ className="mt-[2px] size-18 text-foreground-neutral-muted"
59
59
  aria-label="Refreshing tokens"
60
60
  />
61
61
  ) : null}
@@ -75,7 +75,7 @@ export function WorkspaceManualRegistrationTokensSettingsSection({
75
75
  </Text>
76
76
  </ModalHeader>
77
77
  {createdToken ? (
78
- <ModalBody className="gap-16">
78
+ <ModalBody className="gap-group">
79
79
  <CreatedManualRegistrationTokenPanel token={createdToken} />
80
80
  </ModalBody>
81
81
  ) : (
@@ -93,13 +93,13 @@ export function ProvisionerTokenList({
93
93
  </TableBody>
94
94
  </Table>
95
95
  </div>
96
- <ul className="hidden flex-col gap-10 max-[760px]:flex" aria-label="Provisioner tokens">
96
+ <ul className="hidden flex-col gap-inline max-[760px]:flex" aria-label="Provisioner tokens">
97
97
  {tokens.map((token) => (
98
98
  <li
99
99
  key={token.id}
100
- className="rounded-8 border border-border-neutral-base bg-background-neutral-base p-14"
100
+ className="flex flex-col gap-cluster rounded-8 border border-border-neutral-base bg-background-neutral-base p-panel-compact"
101
101
  >
102
- <div className="flex items-start justify-between gap-12">
102
+ <div className="flex items-start justify-between gap-cluster">
103
103
  <div className="min-w-0 flex-1">
104
104
  <TokenName name={provisionerTokenDisplayName(token)} />
105
105
  <Code variant="paragraph" className="block truncate text-foreground-neutral-muted">
@@ -108,7 +108,7 @@ export function ProvisionerTokenList({
108
108
  </div>
109
109
  <RevokeProvisionerTokenButton workspaceId={workspaceId} token={token} />
110
110
  </div>
111
- <dl className="mt-12 grid grid-cols-2 gap-10 text-sm">
111
+ <dl className="grid grid-cols-2 gap-inline text-sm">
112
112
  <div>
113
113
  <dt className="text-foreground-neutral-muted">Status</dt>
114
114
  <dd>
@@ -155,7 +155,7 @@ function ProvisionerStatusCell({
155
155
  const status = provisionerConnectionStatus(token, activeIds);
156
156
 
157
157
  return (
158
- <span className="inline-flex items-center gap-6">
158
+ <span className="inline-flex items-center gap-inline">
159
159
  <Dot variant={status.dotVariant} />
160
160
  {status.kind === 'last-seen' ? (
161
161
  <span>
@@ -220,7 +220,7 @@ function RevokeProvisionerTokenButton({
220
220
  <ModalContent aria-describedby={undefined} className="max-w-[420px]">
221
221
  <ModalTitle className="sr-only">Revoke token</ModalTitle>
222
222
  <ModalHeader title="Revoke token?" />
223
- <ModalBody className="gap-16">
223
+ <ModalBody className="gap-group">
224
224
  <Text size="sm" className="text-foreground-neutral-muted">
225
225
  {tokenName} will stop authenticating this provisioner. Runners it already provisioned
226
226
  keep running until their leases expire.
@@ -262,7 +262,7 @@ export function EmptyProvisionerTokens() {
262
262
 
263
263
  export function ProvisionerTokenTableSkeleton() {
264
264
  return (
265
- <div role="status" aria-label="Loading provisioner tokens" className="flex flex-col gap-8">
265
+ <div role="status" aria-label="Loading provisioner tokens" className="flex flex-col gap-inline">
266
266
  {[0, 1, 2].map((row) => (
267
267
  <Skeleton key={row} className="h-44 w-full" />
268
268
  ))}
@@ -46,22 +46,22 @@ export function WorkspaceProvisionerTokensSettingsSection({workspaceId}: {worksp
46
46
  }
47
47
 
48
48
  return (
49
- <div className="flex min-w-0 flex-col gap-32">
50
- <section className="flex flex-col gap-16">
51
- <div className="flex items-center justify-between gap-16 max-[640px]:items-start">
52
- <div className="flex flex-col gap-4">
49
+ <div className="flex min-w-0 flex-col gap-region">
50
+ <section className="flex flex-col gap-group">
51
+ <div className="flex items-center justify-between gap-group max-[640px]:items-start">
52
+ <div className="flex flex-col gap-tight">
53
53
  <Header variant="h3">Runner provisioner registration tokens</Header>
54
54
  <Text size="sm" className="text-foreground-neutral-muted">
55
55
  Register runner provisioners that connect to this workspace and create runners
56
56
  dynamically based on demand.
57
57
  </Text>
58
58
  </div>
59
- <div className="flex items-center gap-12">
59
+ <div className="flex items-center gap-cluster">
60
60
  {(tokensQuery.isFetching && !tokensQuery.isPending) ||
61
61
  (activeProvisionersQuery.isFetching && !activeProvisionersQuery.isPending) ? (
62
62
  <Icon
63
63
  name="loader4Line"
64
- className="mt-2 size-18 text-foreground-neutral-muted"
64
+ className="mt-[2px] size-18 text-foreground-neutral-muted"
65
65
  aria-label="Refreshing provisioner tokens"
66
66
  />
67
67
  ) : null}
@@ -81,7 +81,7 @@ export function WorkspaceProvisionerTokensSettingsSection({workspaceId}: {worksp
81
81
  </Text>
82
82
  </ModalHeader>
83
83
  {createdToken ? (
84
- <ModalBody className="gap-16">
84
+ <ModalBody className="gap-group">
85
85
  <CreatedProvisionerTokenPanel token={createdToken} />
86
86
  </ModalBody>
87
87
  ) : (