feat: Phase 1 — extract the client (web SPA + desktop) to dtoro/oikos-web
Problem: the hexagonal refactor churns the backend tree for nine more phases; the UI delivery stack (web/ SPA, cmd/desktop Wails wrapper, compose/web image) must move to its own repo first so doc/layout rewrites land once on a backend-only tree. Change: - New repo git.hubris.network/dtoro/oikos-web (v0.33.0): web/, desktop/ (updateURL repointed to oikos-web releases), compose/, own CI (web + desktop jobs), own deploy script (CI-green gate, TOCTOU guard, version-tagged images, prune-to-3), own webhook receiver on :9798 + launchd unit, own compose project publishing the same 8091:80. - Cutover executed on mac-mini in order: oikos stack's web service stopped+removed, oikos-web project brought up on 8091; outer Caddy untouched (targets the published port) — serving + Authentik flow + /wails 404 quirk verified post-cutover. - Stripped from oikos: web/, cmd/desktop/, compose/web/, desktop CI workflow, ci.yml web job, Makefile ui/desktop/desktop-package/install targets, the compose web service, oikos-web from deploy.sh's fallback prune list; wails + go-keyring dropped from go.mod, vendor synced. - README / CONTRIBUTING / AGENTS.md / .agents dev+operations docs now point at the new repo; mbse + mascot design docs carry a path note. Risk: production SPA serving depends on the new pipeline now; rollback is versioned-image re-up of the old web service from a pre-split checkout (port 8091). Desktop builds installed before the split still check dtoro/oikos releases — one manual reinstall, noted in the oikos-web release notes. Verification: go vet, make test (race), make generate-check, golangci (no new findings; baseline down 400→365); post-cutover curls — localhost:8091 200, /wails/runtime.js 404, outer Caddy 302 Authentik.
This commit is contained in:
22
web/node_modules/aria-query/lib/etc/roles/abstract/commandRole.js
generated
vendored
Normal file
22
web/node_modules/aria-query/lib/etc/roles/abstract/commandRole.js
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var commandRole = {
|
||||
abstract: true,
|
||||
accessibleNameRequired: false,
|
||||
baseConcepts: [],
|
||||
childrenPresentational: false,
|
||||
nameFrom: ['author'],
|
||||
prohibitedProps: [],
|
||||
props: {},
|
||||
relatedConcepts: [],
|
||||
requireContextRole: [],
|
||||
requiredContextRole: [],
|
||||
requiredOwnedElements: [],
|
||||
requiredProps: {},
|
||||
superClass: [['roletype', 'widget']]
|
||||
};
|
||||
var _default = exports.default = commandRole;
|
||||
25
web/node_modules/aria-query/lib/etc/roles/abstract/compositeRole.js
generated
vendored
Normal file
25
web/node_modules/aria-query/lib/etc/roles/abstract/compositeRole.js
generated
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var compositeRole = {
|
||||
abstract: true,
|
||||
accessibleNameRequired: false,
|
||||
baseConcepts: [],
|
||||
childrenPresentational: false,
|
||||
nameFrom: ['author'],
|
||||
prohibitedProps: [],
|
||||
props: {
|
||||
'aria-activedescendant': null,
|
||||
'aria-disabled': null
|
||||
},
|
||||
relatedConcepts: [],
|
||||
requireContextRole: [],
|
||||
requiredContextRole: [],
|
||||
requiredOwnedElements: [],
|
||||
requiredProps: {},
|
||||
superClass: [['roletype', 'widget']]
|
||||
};
|
||||
var _default = exports.default = compositeRole;
|
||||
29
web/node_modules/aria-query/lib/etc/roles/abstract/inputRole.js
generated
vendored
Normal file
29
web/node_modules/aria-query/lib/etc/roles/abstract/inputRole.js
generated
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var inputRole = {
|
||||
abstract: true,
|
||||
accessibleNameRequired: false,
|
||||
baseConcepts: [],
|
||||
childrenPresentational: false,
|
||||
nameFrom: ['author'],
|
||||
prohibitedProps: [],
|
||||
props: {
|
||||
'aria-disabled': null
|
||||
},
|
||||
relatedConcepts: [{
|
||||
concept: {
|
||||
name: 'input'
|
||||
},
|
||||
module: 'XForms'
|
||||
}],
|
||||
requireContextRole: [],
|
||||
requiredContextRole: [],
|
||||
requiredOwnedElements: [],
|
||||
requiredProps: {},
|
||||
superClass: [['roletype', 'widget']]
|
||||
};
|
||||
var _default = exports.default = inputRole;
|
||||
22
web/node_modules/aria-query/lib/etc/roles/abstract/landmarkRole.js
generated
vendored
Normal file
22
web/node_modules/aria-query/lib/etc/roles/abstract/landmarkRole.js
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var landmarkRole = {
|
||||
abstract: true,
|
||||
accessibleNameRequired: false,
|
||||
baseConcepts: [],
|
||||
childrenPresentational: false,
|
||||
nameFrom: ['author'],
|
||||
prohibitedProps: [],
|
||||
props: {},
|
||||
relatedConcepts: [],
|
||||
requireContextRole: [],
|
||||
requiredContextRole: [],
|
||||
requiredOwnedElements: [],
|
||||
requiredProps: {},
|
||||
superClass: [['roletype', 'structure', 'section']]
|
||||
};
|
||||
var _default = exports.default = landmarkRole;
|
||||
26
web/node_modules/aria-query/lib/etc/roles/abstract/rangeRole.js
generated
vendored
Normal file
26
web/node_modules/aria-query/lib/etc/roles/abstract/rangeRole.js
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var rangeRole = {
|
||||
abstract: true,
|
||||
accessibleNameRequired: false,
|
||||
baseConcepts: [],
|
||||
childrenPresentational: false,
|
||||
nameFrom: ['author'],
|
||||
prohibitedProps: [],
|
||||
props: {
|
||||
'aria-valuemax': null,
|
||||
'aria-valuemin': null,
|
||||
'aria-valuenow': null
|
||||
},
|
||||
relatedConcepts: [],
|
||||
requireContextRole: [],
|
||||
requiredContextRole: [],
|
||||
requiredOwnedElements: [],
|
||||
requiredProps: {},
|
||||
superClass: [['roletype', 'structure']]
|
||||
};
|
||||
var _default = exports.default = rangeRole;
|
||||
50
web/node_modules/aria-query/lib/etc/roles/abstract/roletypeRole.js
generated
vendored
Normal file
50
web/node_modules/aria-query/lib/etc/roles/abstract/roletypeRole.js
generated
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var roletypeRole = {
|
||||
abstract: true,
|
||||
accessibleNameRequired: false,
|
||||
baseConcepts: [],
|
||||
childrenPresentational: false,
|
||||
nameFrom: [],
|
||||
prohibitedProps: [],
|
||||
props: {
|
||||
'aria-atomic': null,
|
||||
'aria-busy': null,
|
||||
'aria-controls': null,
|
||||
'aria-current': null,
|
||||
'aria-describedby': null,
|
||||
'aria-details': null,
|
||||
'aria-dropeffect': null,
|
||||
'aria-flowto': null,
|
||||
'aria-grabbed': null,
|
||||
'aria-hidden': null,
|
||||
'aria-keyshortcuts': null,
|
||||
'aria-label': null,
|
||||
'aria-labelledby': null,
|
||||
'aria-live': null,
|
||||
'aria-owns': null,
|
||||
'aria-relevant': null,
|
||||
'aria-roledescription': null
|
||||
},
|
||||
relatedConcepts: [{
|
||||
concept: {
|
||||
name: 'role'
|
||||
},
|
||||
module: 'XHTML'
|
||||
}, {
|
||||
concept: {
|
||||
name: 'type'
|
||||
},
|
||||
module: 'Dublin Core'
|
||||
}],
|
||||
requireContextRole: [],
|
||||
requiredContextRole: [],
|
||||
requiredOwnedElements: [],
|
||||
requiredProps: {},
|
||||
superClass: []
|
||||
};
|
||||
var _default = exports.default = roletypeRole;
|
||||
37
web/node_modules/aria-query/lib/etc/roles/abstract/sectionRole.js
generated
vendored
Normal file
37
web/node_modules/aria-query/lib/etc/roles/abstract/sectionRole.js
generated
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var sectionRole = {
|
||||
abstract: true,
|
||||
accessibleNameRequired: false,
|
||||
baseConcepts: [],
|
||||
childrenPresentational: false,
|
||||
nameFrom: [],
|
||||
prohibitedProps: [],
|
||||
props: {},
|
||||
relatedConcepts: [{
|
||||
concept: {
|
||||
name: 'frontmatter'
|
||||
},
|
||||
module: 'DTB'
|
||||
}, {
|
||||
concept: {
|
||||
name: 'level'
|
||||
},
|
||||
module: 'DTB'
|
||||
}, {
|
||||
concept: {
|
||||
name: 'level'
|
||||
},
|
||||
module: 'SMIL'
|
||||
}],
|
||||
requireContextRole: [],
|
||||
requiredContextRole: [],
|
||||
requiredOwnedElements: [],
|
||||
requiredProps: {},
|
||||
superClass: [['roletype', 'structure']]
|
||||
};
|
||||
var _default = exports.default = sectionRole;
|
||||
22
web/node_modules/aria-query/lib/etc/roles/abstract/sectionheadRole.js
generated
vendored
Normal file
22
web/node_modules/aria-query/lib/etc/roles/abstract/sectionheadRole.js
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var sectionheadRole = {
|
||||
abstract: true,
|
||||
accessibleNameRequired: false,
|
||||
baseConcepts: [],
|
||||
childrenPresentational: false,
|
||||
nameFrom: ['author', 'contents'],
|
||||
prohibitedProps: [],
|
||||
props: {},
|
||||
relatedConcepts: [],
|
||||
requireContextRole: [],
|
||||
requiredContextRole: [],
|
||||
requiredOwnedElements: [],
|
||||
requiredProps: {},
|
||||
superClass: [['roletype', 'structure']]
|
||||
};
|
||||
var _default = exports.default = sectionheadRole;
|
||||
24
web/node_modules/aria-query/lib/etc/roles/abstract/selectRole.js
generated
vendored
Normal file
24
web/node_modules/aria-query/lib/etc/roles/abstract/selectRole.js
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var selectRole = {
|
||||
abstract: true,
|
||||
accessibleNameRequired: false,
|
||||
baseConcepts: [],
|
||||
childrenPresentational: false,
|
||||
nameFrom: ['author'],
|
||||
prohibitedProps: [],
|
||||
props: {
|
||||
'aria-orientation': null
|
||||
},
|
||||
relatedConcepts: [],
|
||||
requireContextRole: [],
|
||||
requiredContextRole: [],
|
||||
requiredOwnedElements: [],
|
||||
requiredProps: {},
|
||||
superClass: [['roletype', 'widget', 'composite'], ['roletype', 'structure', 'section', 'group']]
|
||||
};
|
||||
var _default = exports.default = selectRole;
|
||||
22
web/node_modules/aria-query/lib/etc/roles/abstract/structureRole.js
generated
vendored
Normal file
22
web/node_modules/aria-query/lib/etc/roles/abstract/structureRole.js
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var structureRole = {
|
||||
abstract: true,
|
||||
accessibleNameRequired: false,
|
||||
baseConcepts: [],
|
||||
childrenPresentational: false,
|
||||
nameFrom: [],
|
||||
prohibitedProps: [],
|
||||
props: {},
|
||||
relatedConcepts: [],
|
||||
requireContextRole: [],
|
||||
requiredContextRole: [],
|
||||
requiredOwnedElements: [],
|
||||
requiredProps: {},
|
||||
superClass: [['roletype']]
|
||||
};
|
||||
var _default = exports.default = structureRole;
|
||||
22
web/node_modules/aria-query/lib/etc/roles/abstract/widgetRole.js
generated
vendored
Normal file
22
web/node_modules/aria-query/lib/etc/roles/abstract/widgetRole.js
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var widgetRole = {
|
||||
abstract: true,
|
||||
accessibleNameRequired: false,
|
||||
baseConcepts: [],
|
||||
childrenPresentational: false,
|
||||
nameFrom: [],
|
||||
prohibitedProps: [],
|
||||
props: {},
|
||||
relatedConcepts: [],
|
||||
requireContextRole: [],
|
||||
requiredContextRole: [],
|
||||
requiredOwnedElements: [],
|
||||
requiredProps: {},
|
||||
superClass: [['roletype']]
|
||||
};
|
||||
var _default = exports.default = widgetRole;
|
||||
24
web/node_modules/aria-query/lib/etc/roles/abstract/windowRole.js
generated
vendored
Normal file
24
web/node_modules/aria-query/lib/etc/roles/abstract/windowRole.js
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var windowRole = {
|
||||
abstract: true,
|
||||
accessibleNameRequired: false,
|
||||
baseConcepts: [],
|
||||
childrenPresentational: false,
|
||||
nameFrom: ['author'],
|
||||
prohibitedProps: [],
|
||||
props: {
|
||||
'aria-modal': null
|
||||
},
|
||||
relatedConcepts: [],
|
||||
requireContextRole: [],
|
||||
requiredContextRole: [],
|
||||
requiredOwnedElements: [],
|
||||
requiredProps: {},
|
||||
superClass: [['roletype']]
|
||||
};
|
||||
var _default = exports.default = windowRole;
|
||||
Reference in New Issue
Block a user