feat(web): setup wizard / integrations hub / release environments UI
Rewire the setup wizard UI to the persistent session endpoints: resume-aware state service, truthful step status (draft / applying / applied / failed), and wizard shell that no longer treats test-connection as completion. Refresh the integrations hub to expose Secrets / Feed Mirrors / Object Storage categories and align the onboarding wizard validation with the backend contract for optional-auth local connectors. Modernize the release-orchestrator environments pages against the new environment/target API (models + client), plus adjacent navigation, route-surface, and test-surface refresh. Add Playwright harnesses for live setup-wizard bootstrap / integrations bootstrap / state truth checks, and commit their evidence. Closes UISETUP-* from SPRINT_20260413_003 and the UI-facing tasks of SPRINT_20260413_004. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"listUrl": "https://stella-ops.local/releases/deployments?tenant=demo-prod®ions=apac,eu-west,us-east,us-west",
|
||||
"listTitle": "Deployment History - StellaOps",
|
||||
"listContainsCheckoutApi": false,
|
||||
"listContainsNoDeployments": false,
|
||||
"listHasAbsoluteLink": 0,
|
||||
"listHasRelativeLink": 0,
|
||||
"detailUrl": "https://stella-ops.local/releases/deployments/dep-4536d81685ac?tenant=demo-prod®ions=apac,eu-west,us-east,us-west",
|
||||
"detailContainsId": false,
|
||||
"detailContainsCheckoutApi": false,
|
||||
"detailContainsProduction": true,
|
||||
"responseErrors": []
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"generatedAtUtc": "2026-04-14T04:54:01.188Z",
|
||||
"fatalError": "locator.waitFor: Timeout 20000ms exceeded.\nCall log:\n\u001b[2m - waiting for getByRole('button', { name: /^Apply and Continue$/ }).first() to be visible\u001b[22m\n"
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,855 @@
|
||||
{
|
||||
"generatedAtUtc": "2026-04-14T04:28:38.939Z",
|
||||
"failedActionCount": 0,
|
||||
"runtimeIssueCount": 0,
|
||||
"results": [
|
||||
{
|
||||
"action": "welcome-route",
|
||||
"ok": true,
|
||||
"snapshot": {
|
||||
"label": "welcome",
|
||||
"url": "https://stella-ops.local/setup-wizard/wizard?mode=reconfigure",
|
||||
"title": "Wizard - StellaOps",
|
||||
"heading": "Welcome to Stella Ops",
|
||||
"alerts": [],
|
||||
"visibleButtons": [
|
||||
"Start Setup"
|
||||
]
|
||||
},
|
||||
"session": {
|
||||
"status": 200,
|
||||
"ok": true,
|
||||
"sessionId": "setup-installation-20260414042825",
|
||||
"currentStepId": "database",
|
||||
"sessionStatus": "in_progress",
|
||||
"steps": [
|
||||
{
|
||||
"stepId": "database",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": null,
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "cache",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": null,
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "migrations",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": null,
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "admin",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": null,
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "crypto",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": null,
|
||||
"errorMessage": null
|
||||
}
|
||||
],
|
||||
"raw": {
|
||||
"status": 200,
|
||||
"ok": true,
|
||||
"body": {
|
||||
"session": {
|
||||
"sessionId": "setup-installation-20260414042825",
|
||||
"scopeKey": "installation",
|
||||
"tenantId": "installation",
|
||||
"status": "InProgress",
|
||||
"currentStepId": "Database",
|
||||
"definitionVersion": "2026-04-control-plane-v1",
|
||||
"steps": [
|
||||
{
|
||||
"stepId": "Database",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Valkey",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Migrations",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Admin",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Crypto",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
}
|
||||
],
|
||||
"draftValues": {},
|
||||
"createdAtUtc": "2026-04-14T04:28:25Z",
|
||||
"updatedAtUtc": "2026-04-14T04:28:25Z",
|
||||
"completedAtUtc": null,
|
||||
"createdBy": "57e23364287447d6aed31ca3f6115ee8",
|
||||
"updatedBy": "57e23364287447d6aed31ca3f6115ee8",
|
||||
"dataAsOfUtc": "2026-04-14T04:28:25Z"
|
||||
}
|
||||
},
|
||||
"bodyText": "{\"session\":{\"sessionId\":\"setup-installation-20260414042825\",\"scopeKey\":\"installation\",\"tenantId\":\"installation\",\"status\":\"InProgress\",\"currentStepId\":\"Database\",\"definitionVersion\":\"2026-04-control-plane-v1\",\"steps\":[{\"stepId\":\"Database\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Valkey\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Migrations\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Admin\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Crypto\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null}],\"draftValues\":{},\"createdAtUtc\":\"2026-04-14T04:28:25Z\",\"updatedAtUtc\":\"2026-04-14T04:28:25Z\",\"completedAtUtc\":null,\"createdBy\":\"57e23364287447d6aed31ca3f6115ee8\",\"updatedBy\":\"57e23364287447d6aed31ca3f6115ee8\",\"dataAsOfUtc\":\"2026-04-14T04:28:25Z\"}}"
|
||||
}
|
||||
},
|
||||
"forcedSession": {
|
||||
"status": 201,
|
||||
"ok": true,
|
||||
"body": {
|
||||
"session": {
|
||||
"sessionId": "setup-installation-20260414042825",
|
||||
"scopeKey": "installation",
|
||||
"tenantId": "installation",
|
||||
"status": "InProgress",
|
||||
"currentStepId": "Database",
|
||||
"definitionVersion": "2026-04-control-plane-v1",
|
||||
"steps": [
|
||||
{
|
||||
"stepId": "Database",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Valkey",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Migrations",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Admin",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Crypto",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
}
|
||||
],
|
||||
"draftValues": {},
|
||||
"createdAtUtc": "2026-04-14T04:28:25Z",
|
||||
"updatedAtUtc": "2026-04-14T04:28:25Z",
|
||||
"completedAtUtc": null,
|
||||
"createdBy": "57e23364287447d6aed31ca3f6115ee8",
|
||||
"updatedBy": "57e23364287447d6aed31ca3f6115ee8",
|
||||
"dataAsOfUtc": "2026-04-14T04:28:25Z"
|
||||
}
|
||||
},
|
||||
"bodyText": "{\"session\":{\"sessionId\":\"setup-installation-20260414042825\",\"scopeKey\":\"installation\",\"tenantId\":\"installation\",\"status\":\"InProgress\",\"currentStepId\":\"Database\",\"definitionVersion\":\"2026-04-control-plane-v1\",\"steps\":[{\"stepId\":\"Database\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Valkey\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Migrations\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Admin\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Crypto\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null}],\"draftValues\":{},\"createdAtUtc\":\"2026-04-14T04:28:25Z\",\"updatedAtUtc\":\"2026-04-14T04:28:25Z\",\"completedAtUtc\":null,\"createdBy\":\"57e23364287447d6aed31ca3f6115ee8\",\"updatedBy\":\"57e23364287447d6aed31ca3f6115ee8\",\"dataAsOfUtc\":\"2026-04-14T04:28:25Z\"}}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"action": "start-setup",
|
||||
"ok": true,
|
||||
"snapshot": {
|
||||
"label": "database-step",
|
||||
"url": "https://stella-ops.local/setup-wizard/wizard?mode=reconfigure",
|
||||
"title": "Wizard - StellaOps",
|
||||
"heading": "Reconfigure",
|
||||
"alerts": [],
|
||||
"visibleButtons": [
|
||||
"Validate Connection",
|
||||
"Apply and ContinueValkey/Redis Cache"
|
||||
]
|
||||
},
|
||||
"session": {
|
||||
"status": 200,
|
||||
"ok": true,
|
||||
"sessionId": "setup-installation-20260414042825",
|
||||
"currentStepId": "database",
|
||||
"sessionStatus": "in_progress",
|
||||
"steps": [
|
||||
{
|
||||
"stepId": "database",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": true,
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "cache",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": null,
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "migrations",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": null,
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "admin",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": null,
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "crypto",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": null,
|
||||
"errorMessage": null
|
||||
}
|
||||
],
|
||||
"raw": {
|
||||
"status": 200,
|
||||
"ok": true,
|
||||
"body": {
|
||||
"session": {
|
||||
"sessionId": "setup-installation-20260414042825",
|
||||
"scopeKey": "installation",
|
||||
"tenantId": "installation",
|
||||
"status": "InProgress",
|
||||
"currentStepId": "Database",
|
||||
"definitionVersion": "2026-04-control-plane-v1",
|
||||
"steps": [
|
||||
{
|
||||
"stepId": "Database",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": "2026-04-14T04:28:29Z",
|
||||
"lastProbeSucceeded": true,
|
||||
"checkResults": [
|
||||
{
|
||||
"checkId": "check.database.connectivity",
|
||||
"status": "Pass",
|
||||
"message": "PostgreSQL connection established.",
|
||||
"suggestedFix": null
|
||||
},
|
||||
{
|
||||
"checkId": "check.database.version",
|
||||
"status": "Pass",
|
||||
"message": "Server version 18.1.",
|
||||
"suggestedFix": null
|
||||
}
|
||||
],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Valkey",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Migrations",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Admin",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Crypto",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
}
|
||||
],
|
||||
"draftValues": {},
|
||||
"createdAtUtc": "2026-04-14T04:28:25Z",
|
||||
"updatedAtUtc": "2026-04-14T04:28:29Z",
|
||||
"completedAtUtc": null,
|
||||
"createdBy": "57e23364287447d6aed31ca3f6115ee8",
|
||||
"updatedBy": "57e23364287447d6aed31ca3f6115ee8",
|
||||
"dataAsOfUtc": "2026-04-14T04:28:29Z"
|
||||
}
|
||||
},
|
||||
"bodyText": "{\"session\":{\"sessionId\":\"setup-installation-20260414042825\",\"scopeKey\":\"installation\",\"tenantId\":\"installation\",\"status\":\"InProgress\",\"currentStepId\":\"Database\",\"definitionVersion\":\"2026-04-control-plane-v1\",\"steps\":[{\"stepId\":\"Database\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":\"2026-04-14T04:28:29Z\",\"lastProbeSucceeded\":true,\"checkResults\":[{\"checkId\":\"check.database.connectivity\",\"status\":\"Pass\",\"message\":\"PostgreSQL connection established.\",\"suggestedFix\":null},{\"checkId\":\"check.database.version\",\"status\":\"Pass\",\"message\":\"Server version 18.1.\",\"suggestedFix\":null}],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Valkey\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Migrations\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Admin\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Crypto\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null}],\"draftValues\":{},\"createdAtUtc\":\"2026-04-14T04:28:25Z\",\"updatedAtUtc\":\"2026-04-14T04:28:29Z\",\"completedAtUtc\":null,\"createdBy\":\"57e23364287447d6aed31ca3f6115ee8\",\"updatedBy\":\"57e23364287447d6aed31ca3f6115ee8\",\"dataAsOfUtc\":\"2026-04-14T04:28:29Z\"}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"action": "probe-does-not-complete-step",
|
||||
"ok": true,
|
||||
"snapshot": {
|
||||
"label": "after-probe",
|
||||
"url": "https://stella-ops.local/setup-wizard/wizard?mode=reconfigure",
|
||||
"title": "Wizard - StellaOps",
|
||||
"heading": "Reconfigure",
|
||||
"alerts": [],
|
||||
"visibleButtons": [
|
||||
"Validate Connection",
|
||||
"Apply and ContinueValkey/Redis Cache"
|
||||
]
|
||||
},
|
||||
"session": {
|
||||
"status": 200,
|
||||
"ok": true,
|
||||
"sessionId": "setup-installation-20260414042825",
|
||||
"currentStepId": "database",
|
||||
"sessionStatus": "in_progress",
|
||||
"steps": [
|
||||
{
|
||||
"stepId": "database",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": true,
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "cache",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": null,
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "migrations",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": null,
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "admin",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": null,
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "crypto",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": null,
|
||||
"errorMessage": null
|
||||
}
|
||||
],
|
||||
"raw": {
|
||||
"status": 200,
|
||||
"ok": true,
|
||||
"body": {
|
||||
"session": {
|
||||
"sessionId": "setup-installation-20260414042825",
|
||||
"scopeKey": "installation",
|
||||
"tenantId": "installation",
|
||||
"status": "InProgress",
|
||||
"currentStepId": "Database",
|
||||
"definitionVersion": "2026-04-control-plane-v1",
|
||||
"steps": [
|
||||
{
|
||||
"stepId": "Database",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": "2026-04-14T04:28:30Z",
|
||||
"lastProbeSucceeded": true,
|
||||
"checkResults": [
|
||||
{
|
||||
"checkId": "check.database.connectivity",
|
||||
"status": "Pass",
|
||||
"message": "PostgreSQL connection established.",
|
||||
"suggestedFix": null
|
||||
},
|
||||
{
|
||||
"checkId": "check.database.version",
|
||||
"status": "Pass",
|
||||
"message": "Server version 18.1.",
|
||||
"suggestedFix": null
|
||||
}
|
||||
],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Valkey",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Migrations",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Admin",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Crypto",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
}
|
||||
],
|
||||
"draftValues": {},
|
||||
"createdAtUtc": "2026-04-14T04:28:25Z",
|
||||
"updatedAtUtc": "2026-04-14T04:28:30Z",
|
||||
"completedAtUtc": null,
|
||||
"createdBy": "57e23364287447d6aed31ca3f6115ee8",
|
||||
"updatedBy": "57e23364287447d6aed31ca3f6115ee8",
|
||||
"dataAsOfUtc": "2026-04-14T04:28:30Z"
|
||||
}
|
||||
},
|
||||
"bodyText": "{\"session\":{\"sessionId\":\"setup-installation-20260414042825\",\"scopeKey\":\"installation\",\"tenantId\":\"installation\",\"status\":\"InProgress\",\"currentStepId\":\"Database\",\"definitionVersion\":\"2026-04-control-plane-v1\",\"steps\":[{\"stepId\":\"Database\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":\"2026-04-14T04:28:30Z\",\"lastProbeSucceeded\":true,\"checkResults\":[{\"checkId\":\"check.database.connectivity\",\"status\":\"Pass\",\"message\":\"PostgreSQL connection established.\",\"suggestedFix\":null},{\"checkId\":\"check.database.version\",\"status\":\"Pass\",\"message\":\"Server version 18.1.\",\"suggestedFix\":null}],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Valkey\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Migrations\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Admin\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Crypto\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null}],\"draftValues\":{},\"createdAtUtc\":\"2026-04-14T04:28:25Z\",\"updatedAtUtc\":\"2026-04-14T04:28:30Z\",\"completedAtUtc\":null,\"createdBy\":\"57e23364287447d6aed31ca3f6115ee8\",\"updatedBy\":\"57e23364287447d6aed31ca3f6115ee8\",\"dataAsOfUtc\":\"2026-04-14T04:28:30Z\"}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"action": "apply-advances-backend-state",
|
||||
"ok": true,
|
||||
"snapshot": {
|
||||
"label": "after-apply",
|
||||
"url": "https://stella-ops.local/setup-wizard/wizard?mode=reconfigure",
|
||||
"title": "Wizard - StellaOps",
|
||||
"heading": "Reconfigure",
|
||||
"alerts": [
|
||||
"PostgreSQL Database configured successfullyRun Doctor re-check to verify Run Re-check"
|
||||
],
|
||||
"visibleButtons": [
|
||||
"PreviousPostgreSQL Database",
|
||||
"Apply and ContinueDatabase Migrations",
|
||||
"Run Re-check"
|
||||
]
|
||||
},
|
||||
"session": {
|
||||
"status": 200,
|
||||
"ok": true,
|
||||
"sessionId": "setup-installation-20260414042825",
|
||||
"currentStepId": "cache",
|
||||
"sessionStatus": "in_progress",
|
||||
"steps": [
|
||||
{
|
||||
"stepId": "database",
|
||||
"status": "completed",
|
||||
"lastProbeSucceeded": true,
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "cache",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": true,
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "migrations",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": null,
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "admin",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": null,
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "crypto",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": null,
|
||||
"errorMessage": null
|
||||
}
|
||||
],
|
||||
"raw": {
|
||||
"status": 200,
|
||||
"ok": true,
|
||||
"body": {
|
||||
"session": {
|
||||
"sessionId": "setup-installation-20260414042825",
|
||||
"scopeKey": "installation",
|
||||
"tenantId": "installation",
|
||||
"status": "InProgress",
|
||||
"currentStepId": "Valkey",
|
||||
"definitionVersion": "2026-04-control-plane-v1",
|
||||
"steps": [
|
||||
{
|
||||
"stepId": "Database",
|
||||
"status": "Passed",
|
||||
"completedAtUtc": "2026-04-14T04:28:33Z",
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": "2026-04-14T04:28:33Z",
|
||||
"lastProbeSucceeded": true,
|
||||
"checkResults": [
|
||||
{
|
||||
"checkId": "check.database.connectivity",
|
||||
"status": "Pass",
|
||||
"message": "PostgreSQL connection established.",
|
||||
"suggestedFix": null
|
||||
},
|
||||
{
|
||||
"checkId": "check.database.version",
|
||||
"status": "Pass",
|
||||
"message": "Server version 18.1.",
|
||||
"suggestedFix": null
|
||||
}
|
||||
],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Valkey",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": "2026-04-14T04:28:33Z",
|
||||
"lastProbeSucceeded": true,
|
||||
"checkResults": [
|
||||
{
|
||||
"checkId": "check.services.valkey.connectivity",
|
||||
"status": "Pass",
|
||||
"message": "Connected to cache.stella-ops.local:6379.",
|
||||
"suggestedFix": null
|
||||
}
|
||||
],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Migrations",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Admin",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Crypto",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
}
|
||||
],
|
||||
"draftValues": {},
|
||||
"createdAtUtc": "2026-04-14T04:28:25Z",
|
||||
"updatedAtUtc": "2026-04-14T04:28:33Z",
|
||||
"completedAtUtc": null,
|
||||
"createdBy": "57e23364287447d6aed31ca3f6115ee8",
|
||||
"updatedBy": "57e23364287447d6aed31ca3f6115ee8",
|
||||
"dataAsOfUtc": "2026-04-14T04:28:33Z"
|
||||
}
|
||||
},
|
||||
"bodyText": "{\"session\":{\"sessionId\":\"setup-installation-20260414042825\",\"scopeKey\":\"installation\",\"tenantId\":\"installation\",\"status\":\"InProgress\",\"currentStepId\":\"Valkey\",\"definitionVersion\":\"2026-04-control-plane-v1\",\"steps\":[{\"stepId\":\"Database\",\"status\":\"Passed\",\"completedAtUtc\":\"2026-04-14T04:28:33Z\",\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":\"2026-04-14T04:28:33Z\",\"lastProbeSucceeded\":true,\"checkResults\":[{\"checkId\":\"check.database.connectivity\",\"status\":\"Pass\",\"message\":\"PostgreSQL connection established.\",\"suggestedFix\":null},{\"checkId\":\"check.database.version\",\"status\":\"Pass\",\"message\":\"Server version 18.1.\",\"suggestedFix\":null}],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Valkey\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":\"2026-04-14T04:28:33Z\",\"lastProbeSucceeded\":true,\"checkResults\":[{\"checkId\":\"check.services.valkey.connectivity\",\"status\":\"Pass\",\"message\":\"Connected to cache.stella-ops.local:6379.\",\"suggestedFix\":null}],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Migrations\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Admin\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Crypto\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null}],\"draftValues\":{},\"createdAtUtc\":\"2026-04-14T04:28:25Z\",\"updatedAtUtc\":\"2026-04-14T04:28:33Z\",\"completedAtUtc\":null,\"createdBy\":\"57e23364287447d6aed31ca3f6115ee8\",\"updatedBy\":\"57e23364287447d6aed31ca3f6115ee8\",\"dataAsOfUtc\":\"2026-04-14T04:28:33Z\"}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"action": "reload-preserves-session-state",
|
||||
"ok": true,
|
||||
"snapshot": {
|
||||
"label": "after-reload",
|
||||
"url": "https://stella-ops.local/setup-wizard/wizard?mode=reconfigure",
|
||||
"title": "Wizard - StellaOps",
|
||||
"heading": "Reconfigure",
|
||||
"alerts": [],
|
||||
"visibleButtons": [
|
||||
"PreviousPostgreSQL Database",
|
||||
"Apply and ContinueDatabase Migrations"
|
||||
]
|
||||
},
|
||||
"session": {
|
||||
"status": 200,
|
||||
"ok": true,
|
||||
"sessionId": "setup-installation-20260414042825",
|
||||
"currentStepId": "cache",
|
||||
"sessionStatus": "in_progress",
|
||||
"steps": [
|
||||
{
|
||||
"stepId": "database",
|
||||
"status": "completed",
|
||||
"lastProbeSucceeded": true,
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "cache",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": true,
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "migrations",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": null,
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "admin",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": null,
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "crypto",
|
||||
"status": "pending",
|
||||
"lastProbeSucceeded": null,
|
||||
"errorMessage": null
|
||||
}
|
||||
],
|
||||
"raw": {
|
||||
"status": 200,
|
||||
"ok": true,
|
||||
"body": {
|
||||
"session": {
|
||||
"sessionId": "setup-installation-20260414042825",
|
||||
"scopeKey": "installation",
|
||||
"tenantId": "installation",
|
||||
"status": "InProgress",
|
||||
"currentStepId": "Valkey",
|
||||
"definitionVersion": "2026-04-control-plane-v1",
|
||||
"steps": [
|
||||
{
|
||||
"stepId": "Database",
|
||||
"status": "Passed",
|
||||
"completedAtUtc": "2026-04-14T04:28:33Z",
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": "2026-04-14T04:28:33Z",
|
||||
"lastProbeSucceeded": true,
|
||||
"checkResults": [
|
||||
{
|
||||
"checkId": "check.database.connectivity",
|
||||
"status": "Pass",
|
||||
"message": "PostgreSQL connection established.",
|
||||
"suggestedFix": null
|
||||
},
|
||||
{
|
||||
"checkId": "check.database.version",
|
||||
"status": "Pass",
|
||||
"message": "Server version 18.1.",
|
||||
"suggestedFix": null
|
||||
}
|
||||
],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Valkey",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": "2026-04-14T04:28:35Z",
|
||||
"lastProbeSucceeded": true,
|
||||
"checkResults": [
|
||||
{
|
||||
"checkId": "check.services.valkey.connectivity",
|
||||
"status": "Pass",
|
||||
"message": "Connected to cache.stella-ops.local:6379.",
|
||||
"suggestedFix": null
|
||||
}
|
||||
],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Migrations",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Admin",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
},
|
||||
{
|
||||
"stepId": "Crypto",
|
||||
"status": "Pending",
|
||||
"completedAtUtc": null,
|
||||
"skippedAtUtc": null,
|
||||
"skippedReason": null,
|
||||
"lastProbedAtUtc": null,
|
||||
"lastProbeSucceeded": null,
|
||||
"checkResults": [],
|
||||
"appliedConfig": {},
|
||||
"errorMessage": null
|
||||
}
|
||||
],
|
||||
"draftValues": {},
|
||||
"createdAtUtc": "2026-04-14T04:28:25Z",
|
||||
"updatedAtUtc": "2026-04-14T04:28:39Z",
|
||||
"completedAtUtc": null,
|
||||
"createdBy": "57e23364287447d6aed31ca3f6115ee8",
|
||||
"updatedBy": "57e23364287447d6aed31ca3f6115ee8",
|
||||
"dataAsOfUtc": "2026-04-14T04:28:39Z"
|
||||
}
|
||||
},
|
||||
"bodyText": "{\"session\":{\"sessionId\":\"setup-installation-20260414042825\",\"scopeKey\":\"installation\",\"tenantId\":\"installation\",\"status\":\"InProgress\",\"currentStepId\":\"Valkey\",\"definitionVersion\":\"2026-04-control-plane-v1\",\"steps\":[{\"stepId\":\"Database\",\"status\":\"Passed\",\"completedAtUtc\":\"2026-04-14T04:28:33Z\",\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":\"2026-04-14T04:28:33Z\",\"lastProbeSucceeded\":true,\"checkResults\":[{\"checkId\":\"check.database.connectivity\",\"status\":\"Pass\",\"message\":\"PostgreSQL connection established.\",\"suggestedFix\":null},{\"checkId\":\"check.database.version\",\"status\":\"Pass\",\"message\":\"Server version 18.1.\",\"suggestedFix\":null}],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Valkey\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":\"2026-04-14T04:28:35Z\",\"lastProbeSucceeded\":true,\"checkResults\":[{\"checkId\":\"check.services.valkey.connectivity\",\"status\":\"Pass\",\"message\":\"Connected to cache.stella-ops.local:6379.\",\"suggestedFix\":null}],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Migrations\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Admin\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null},{\"stepId\":\"Crypto\",\"status\":\"Pending\",\"completedAtUtc\":null,\"skippedAtUtc\":null,\"skippedReason\":null,\"lastProbedAtUtc\":null,\"lastProbeSucceeded\":null,\"checkResults\":[],\"appliedConfig\":{},\"errorMessage\":null}],\"draftValues\":{},\"createdAtUtc\":\"2026-04-14T04:28:25Z\",\"updatedAtUtc\":\"2026-04-14T04:28:39Z\",\"completedAtUtc\":null,\"createdBy\":\"57e23364287447d6aed31ca3f6115ee8\",\"updatedBy\":\"57e23364287447d6aed31ca3f6115ee8\",\"dataAsOfUtc\":\"2026-04-14T04:28:39Z\"}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"runtime": {
|
||||
"consoleErrors": [],
|
||||
"pageErrors": [],
|
||||
"requestFailures": [],
|
||||
"responseErrors": []
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user