feat: node info, build info and acrylic web theme

Squash of recent dev work: return_session login, backend switcher, line
detail timeline, overview strips, node platform/country/ISP info with flags
and icons, build info (version, tag, time) behind site.show_build, and the
acrylic display theme.
This commit is contained in:
justme committed 2026-10-06 21:24:25 +08:00
1 parent 10634bdd80
commit 14b0de3544
95 files changed
+5524 -528

No files matched your search

+381 -6
View File
@@ -862,6 +862,68 @@
}
}
},
"/api/public/nodes": {
"get": {
"tags": [
"public-nodes"
],
"summary": "Display info of the visible agents and probes: system, architecture, country and ISP (never an address)",
"operationId": "nodes_list",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PageDtoOfNodeInfoDto"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDto"
}
}
}
}
}
}
},
"/api/public/about": {
"get": {
"tags": [
"public-nodes"
],
"summary": "The backend's version, tag and build time, if the site shows build info",
"operationId": "about_get",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AboutDto"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDto"
}
}
}
}
}
}
},
"/api/public/catalog/kinds": {
"get": {
"tags": [
@@ -1770,7 +1832,7 @@
"tags": [
"admin-join-tokens"
],
"summary": "Revoke a join token",
"summary": "Revoke a join token; with purge=true delete the record for good",
"operationId": "join_tokens_revoke",
"parameters": [
{
@@ -1780,6 +1842,13 @@
"schema": {
"type": "string"
}
},
{
"name": "purge",
"in": "query",
"schema": {
"type": "boolean"
}
}
],
"responses": {
@@ -3622,6 +3691,47 @@
}
}
},
"/api/admin/build-info": {
"get": {
"tags": [
"admin-build"
],
"summary": "Version, tag, commit and build time of the backend and every agent and probe",
"operationId": "build_info_get",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BuildInfoDto"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDto"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDto"
}
}
}
}
}
}
},
"/healthz": {
"get": {
"tags": [
@@ -3746,6 +3856,28 @@
},
"components": {
"schemas": {
"AboutDto": {
"required": [
"show_build",
"backend"
],
"type": "object",
"properties": {
"show_build": {
"type": "boolean"
},
"backend": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/components/schemas/BuildDto"
}
]
}
}
},
"AgentDto": {
"required": [
"id",
@@ -4032,6 +4164,56 @@
}
}
},
"BuildDto": {
"required": [
"version",
"tag",
"commit",
"built_at"
],
"type": "object",
"properties": {
"version": {
"type": "string"
},
"tag": {
"type": [
"null",
"string"
]
},
"commit": {
"type": [
"null",
"string"
]
},
"built_at": {
"type": [
"null",
"string"
]
}
}
},
"BuildInfoDto": {
"required": [
"backend",
"nodes"
],
"type": "object",
"properties": {
"backend": {
"$ref": "#/components/schemas/BuildDto"
},
"nodes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/NodeBuildDto"
}
}
}
},
"ChangePasswordRequest": {
"required": [
"password"
@@ -4345,7 +4527,7 @@
"required": [
"token",
"plaintext",
"install_command"
"install_commands"
],
"type": "object",
"properties": {
@@ -4355,8 +4537,8 @@
"plaintext": {
"type": "string"
},
"install_command": {
"type": "string"
"install_commands": {
"$ref": "#/components/schemas/InstallCommandsDto"
}
}
},
@@ -4908,6 +5090,25 @@
}
}
},
"InstallCommandsDto": {
"required": [
"linux",
"macos",
"windows"
],
"type": "object",
"properties": {
"linux": {
"type": "string"
},
"macos": {
"type": "string"
},
"windows": {
"type": "string"
}
}
},
"JoinTokenDto": {
"required": [
"id",
@@ -5120,7 +5321,8 @@
"LoginRequest": {
"required": [
"username",
"password"
"password",
"return_session"
],
"type": "object",
"properties": {
@@ -5129,6 +5331,12 @@
},
"password": {
"type": "string"
},
"return_session": {
"type": [
"null",
"boolean"
]
}
}
},
@@ -5137,7 +5345,8 @@
"user_id",
"username",
"csrf_token",
"expires_at"
"expires_at",
"session_token"
],
"type": "object",
"properties": {
@@ -5152,6 +5361,12 @@
},
"expires_at": {
"format": "date-time"
},
"session_token": {
"type": [
"null",
"string"
]
}
}
},
@@ -5292,6 +5507,139 @@
}
}
},
"NodeBuildDto": {
"required": [
"id",
"kind",
"os",
"os_name",
"arch",
"version",
"tag",
"commit",
"built_at"
],
"type": "object",
"properties": {
"id": {
"type": "string"
},
"kind": {
"type": "string"
},
"os": {
"type": [
"null",
"string"
]
},
"os_name": {
"type": [
"null",
"string"
]
},
"arch": {
"type": [
"null",
"string"
]
},
"version": {
"type": [
"null",
"string"
]
},
"tag": {
"type": [
"null",
"string"
]
},
"commit": {
"type": [
"null",
"string"
]
},
"built_at": {
"type": [
"null",
"string"
]
}
}
},
"NodeInfoDto": {
"required": [
"id",
"kind",
"os",
"os_name",
"arch",
"country",
"isp_key",
"isp_name"
],
"type": "object",
"properties": {
"id": {
"type": "string"
},
"kind": {
"type": "string"
},
"os": {
"type": [
"null",
"string"
]
},
"os_name": {
"type": [
"null",
"string"
]
},
"arch": {
"type": [
"null",
"string"
]
},
"country": {
"type": [
"null",
"string"
]
},
"isp_key": {
"type": [
"null",
"string"
]
},
"isp_name": {
"type": [
"null",
"string"
]
},
"version": {
"type": [
"null",
"string"
]
},
"tag": {
"type": [
"null",
"string"
]
}
}
},
"OverviewDto": {
"required": [
"range",
@@ -5564,6 +5912,27 @@
}
}
},
"PageDtoOfNodeInfoDto": {
"required": [
"items",
"next_cursor"
],
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/NodeInfoDto"
}
},
"next_cursor": {
"type": [
"null",
"string"
]
}
}
},
"PageDtoOfPlanDto": {
"required": [
"items",
@@ -6774,6 +7143,9 @@
{
"name": "public"
},
{
"name": "public-nodes"
},
{
"name": "catalog"
},
@@ -6807,6 +7179,9 @@
{
"name": "admin-users"
},
{
"name": "admin-build"
},
{
"name": "ops"
},