@serve.zone/dcrouter 13.29.1 → 13.30.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.
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/dcrouter',
6
- version: '13.29.1',
6
+ version: '13.30.0',
7
7
  description: 'A multifaceted routing service handling mail and SMS delivery functions.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsV0FBVyxFQUFFLDBFQUEwRTtDQUN4RixDQUFBIn0=
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/dcrouter',
6
- version: '13.29.1',
6
+ version: '13.30.0',
7
7
  description: 'A multifaceted routing service handling mail and SMS delivery functions.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsc0JBQXNCO0lBQzVCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFdBQVcsRUFBRSwwRUFBMEU7Q0FDeEYsQ0FBQSJ9
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@serve.zone/dcrouter",
3
3
  "private": false,
4
- "version": "13.29.1",
4
+ "version": "13.30.0",
5
5
  "description": "A multifaceted routing service handling mail and SMS delivery functions.",
6
6
  "type": "module",
7
7
  "exports": {
@@ -12,23 +12,23 @@
12
12
  "author": "Task Venture Capital GmbH",
13
13
  "license": "MIT",
14
14
  "devDependencies": {
15
- "@git.zone/tsbuild": "^4.4.0",
16
- "@git.zone/tsbundle": "^2.10.1",
17
- "@git.zone/tsdocker": "^2.2.5",
18
- "@git.zone/tsrun": "^2.0.3",
19
- "@git.zone/tstest": "^3.6.3",
20
- "@git.zone/tswatch": "^3.3.3",
21
- "@types/node": "^25.6.1"
15
+ "@git.zone/tsbuild": "^4.4.1",
16
+ "@git.zone/tsbundle": "^2.10.4",
17
+ "@git.zone/tsdocker": "^2.3.0",
18
+ "@git.zone/tsrun": "^2.0.4",
19
+ "@git.zone/tstest": "^3.6.6",
20
+ "@git.zone/tswatch": "^3.3.5",
21
+ "@types/node": "^25.9.0"
22
22
  },
23
23
  "dependencies": {
24
- "@api.global/typedrequest": "^3.3.0",
24
+ "@api.global/typedrequest": "^3.3.1",
25
25
  "@api.global/typedrequest-interfaces": "^3.0.19",
26
26
  "@api.global/typedserver": "^8.4.6",
27
- "@api.global/typedsocket": "^4.1.2",
27
+ "@api.global/typedsocket": "^4.1.3",
28
28
  "@apiclient.xyz/cloudflare": "^7.1.0",
29
29
  "@design.estate/dees-catalog": "^3.81.0",
30
30
  "@design.estate/dees-element": "^2.2.4",
31
- "@idp.global/sdk": "^1.2.0",
31
+ "@idp.global/sdk": "^1.3.0",
32
32
  "@push.rocks/lik": "^6.4.1",
33
33
  "@push.rocks/projectinfo": "^5.1.0",
34
34
  "@push.rocks/qenv": "^6.1.4",
@@ -46,7 +46,7 @@
46
46
  "@push.rocks/smartnetwork": "^4.7.1",
47
47
  "@push.rocks/smartpath": "^6.0.0",
48
48
  "@push.rocks/smartpromise": "^4.2.4",
49
- "@push.rocks/smartproxy": "^27.10.0",
49
+ "@push.rocks/smartproxy": "^27.10.2",
50
50
  "@push.rocks/smartradius": "^1.1.2",
51
51
  "@push.rocks/smartrequest": "^5.0.3",
52
52
  "@push.rocks/smartrx": "^3.0.10",
@@ -55,11 +55,11 @@
55
55
  "@push.rocks/smartvpn": "1.19.4",
56
56
  "@push.rocks/taskbuffer": "^8.0.2",
57
57
  "@serve.zone/catalog": "^2.12.4",
58
- "@serve.zone/interfaces": "^5.5.0",
58
+ "@serve.zone/interfaces": "^5.8.0",
59
59
  "@serve.zone/remoteingress": "^4.17.1",
60
60
  "@tsclass/tsclass": "^9.5.1",
61
61
  "@types/qrcode": "^1.5.6",
62
- "lru-cache": "^11.3.6",
62
+ "lru-cache": "^11.4.0",
63
63
  "qrcode": "^1.5.4",
64
64
  "uuid": "^14.0.0"
65
65
  },
package/readme.md CHANGED
@@ -73,10 +73,22 @@ await router.start();
73
73
  After startup:
74
74
 
75
75
  - open the dashboard at `http://localhost:3000`
76
- - log in with the current built-in development credentials `admin` / `admin`
76
+ - complete the first-admin bootstrap flow if no persisted admin account exists yet
77
77
  - send proxied traffic to `http://localhost:18080`
78
78
  - stop gracefully with `await router.stop()`
79
79
 
80
+ ## Initial Admin Bootstrap
81
+
82
+ When DB-backed persistence is enabled and no persisted admin exists, dcrouter does not auto-create an admin account. The Ops dashboard exposes a non-cancelable first-admin bootstrap flow that must be completed explicitly.
83
+
84
+ Bootstrap behavior:
85
+
86
+ - `getAdminBootstrapStatus` reports whether persistence is ready and whether a first admin is required.
87
+ - The temporary env/config admin identity is only used to authorize bootstrap access while no persisted admin exists.
88
+ - `createInitialAdminUser` creates the first persisted admin with normalized email and local password authentication.
89
+ - Optional `idp.global` authentication can be enabled for that local account; the local dcrouter role remains authoritative and the IdP email must match the local account email.
90
+ - After a persisted admin exists, temporary bootstrap admin login is rejected and normal persisted-account authentication is used.
91
+
80
92
  ## Configuration Model
81
93
 
82
94
  `DcRouter` is configured with `IDcRouterOptions` from `@serve.zone/dcrouter`.
@@ -199,7 +211,7 @@ const client = new DcRouterApiClient({
199
211
  baseUrl: 'https://dcrouter.example.com',
200
212
  });
201
213
 
202
- await client.login('admin', 'admin');
214
+ await client.login('admin@example.com', 'strong-password');
203
215
 
204
216
  const route = await client.routes.build()
205
217
  .setName('api-gateway')
@@ -279,7 +291,7 @@ Use of these trademarks must comply with Task Venture Capital GmbH's Trademark G
279
291
 
280
292
  ### Company Information
281
293
 
282
- Task Venture Capital GmbH
294
+ Task Venture Capital GmbH
283
295
  Registered at District Court Bremen HRB 35230 HB, Germany
284
296
 
285
297
  For any legal inquiries or further information, please contact us via email at hello@task.vc.
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/dcrouter',
6
- version: '13.29.1',
6
+ version: '13.30.0',
7
7
  description: 'A multifaceted routing service handling mail and SMS delivery functions.'
8
8
  }
package/ts/readme.md CHANGED
@@ -91,7 +91,7 @@ Use of these trademarks must comply with Task Venture Capital GmbH's Trademark G
91
91
 
92
92
  ### Company Information
93
93
 
94
- Task Venture Capital GmbH
94
+ Task Venture Capital GmbH
95
95
  Registered at District Court Bremen HRB 35230 HB, Germany
96
96
 
97
97
  For any legal inquiries or further information, please contact us via email at hello@task.vc.
@@ -27,7 +27,7 @@ const client = new DcRouterApiClient({
27
27
  baseUrl: 'https://dcrouter.example.com',
28
28
  });
29
29
 
30
- await client.login('admin', 'admin');
30
+ await client.login('admin@example.com', 'strong-password');
31
31
 
32
32
  const { routes, warnings } = await client.routes.list();
33
33
  console.log(routes.length, warnings.length);
@@ -43,13 +43,13 @@ await route.toggle(true);
43
43
 
44
44
  ## Authentication
45
45
 
46
- The client supports session login and API-token authentication.
46
+ The client supports persisted-admin session login and API-token authentication. Initial admin creation is a bootstrap flow exposed by the Ops dashboard and raw TypedRequest contracts; after a persisted admin exists, use that account with `login()`.
47
47
 
48
48
  ```typescript
49
49
  const sessionClient = new DcRouterApiClient({
50
50
  baseUrl: 'https://dcrouter.example.com',
51
51
  });
52
- await sessionClient.login('admin', 'admin');
52
+ await sessionClient.login('admin@example.com', 'strong-password');
53
53
 
54
54
  const tokenClient = new DcRouterApiClient({
55
55
  baseUrl: 'https://dcrouter.example.com',
@@ -153,7 +153,7 @@ Use of these trademarks must comply with Task Venture Capital GmbH's Trademark G
153
153
 
154
154
  ### Company Information
155
155
 
156
- Task Venture Capital GmbH
156
+ Task Venture Capital GmbH
157
157
  Registered at District Court Bremen HRB 35230 HB, Germany
158
158
 
159
159
  For any legal inquiries or further information, please contact us via email at hello@task.vc.
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/dcrouter',
6
- version: '13.29.1',
6
+ version: '13.30.0',
7
7
  description: 'A multifaceted routing service handling mail and SMS delivery functions.'
8
8
  }
package/ts_web/readme.md CHANGED
@@ -12,8 +12,8 @@ For reporting bugs, issues, or security vulnerabilities, please visit [community
12
12
  | --- | --- |
13
13
  | `index.ts` | Initializes the app router and renders `<ops-dashboard>` into `document.body`. |
14
14
  | `router.ts` | Defines top-level dashboard routes, subviews, redirects, and URL/state synchronization. |
15
- | `appstate.ts` | Holds reactive login, UI, config, stats, route, DNS, email, remote ingress, VPN, and log state. |
16
- | `elements/` | Contains the dashboard shell and feature-specific Dees web components. |
15
+ | `appstate.ts` | Holds reactive login, bootstrap, UI, config, stats, route, DNS, email, remote ingress, VPN, and log state. |
16
+ | `elements/` | Contains the dashboard shell, first-admin bootstrap stepper, and feature-specific Dees web components. |
17
17
 
18
18
  ## View Map
19
19
 
@@ -37,6 +37,8 @@ The dashboard talks to the dcrouter OpsServer through:
37
37
  - Dees web components and app-state subscriptions for UI updates
38
38
  - QR code rendering for VPN client UX
39
39
 
40
+ On a fresh DB-backed instance, the dashboard checks `getAdminBootstrapStatus` and shows a non-cancelable first-admin stepper before normal dashboard access.
41
+
40
42
  ## Usage
41
43
 
42
44
  This package is primarily consumed by the main dcrouter build and served by OpsServer. Install it directly only when you intentionally need the dashboard module boundary.
@@ -79,7 +81,7 @@ Use of these trademarks must comply with Task Venture Capital GmbH's Trademark G
79
81
 
80
82
  ### Company Information
81
83
 
82
- Task Venture Capital GmbH
84
+ Task Venture Capital GmbH
83
85
  Registered at District Court Bremen HRB 35230 HB, Germany
84
86
 
85
87
  For any legal inquiries or further information, please contact us via email at hello@task.vc.