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.
44 lines
1.1 KiB
JavaScript
44 lines
1.1 KiB
JavaScript
export default function(x, y) {
|
||
if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points
|
||
|
||
var x0 = this._x0,
|
||
y0 = this._y0,
|
||
x1 = this._x1,
|
||
y1 = this._y1;
|
||
|
||
// If the quadtree has no extent, initialize them.
|
||
// Integer extent are necessary so that if we later double the extent,
|
||
// the existing quadrant boundaries don’t change due to floating point error!
|
||
if (isNaN(x0)) {
|
||
x1 = (x0 = Math.floor(x)) + 1;
|
||
y1 = (y0 = Math.floor(y)) + 1;
|
||
}
|
||
|
||
// Otherwise, double repeatedly to cover.
|
||
else {
|
||
var z = x1 - x0 || 1,
|
||
node = this._root,
|
||
parent,
|
||
i;
|
||
|
||
while (x0 > x || x >= x1 || y0 > y || y >= y1) {
|
||
i = (y < y0) << 1 | (x < x0);
|
||
parent = new Array(4), parent[i] = node, node = parent, z *= 2;
|
||
switch (i) {
|
||
case 0: x1 = x0 + z, y1 = y0 + z; break;
|
||
case 1: x0 = x1 - z, y1 = y0 + z; break;
|
||
case 2: x1 = x0 + z, y0 = y1 - z; break;
|
||
case 3: x0 = x1 - z, y0 = y1 - z; break;
|
||
}
|
||
}
|
||
|
||
if (this._root && this._root.length) this._root = node;
|
||
}
|
||
|
||
this._x0 = x0;
|
||
this._y0 = y0;
|
||
this._x1 = x1;
|
||
this._y1 = y1;
|
||
return this;
|
||
}
|