fuzzyworld

tower / commit

Deploy to apps.fuzzyworld.net with fuzzyworld-tools

5e8a870369e2b2415d566c224e648ed2a176544b · Pavel Safronov · 2026-10-26 18:22:19 -0700 · parents 3cc2b5bd1fc5

Deploy to apps.fuzzyworld.net with fuzzyworld-tools

Adds the fuzzyworld package.json section, a deploy script (fw deploy) and the fuzzyworld-tools dependency, and points gitlab.io / gitlab.com links at apps.fuzzyworld.net and code.fuzzyworld.net.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 .gitignore        |  1 +
 README.md         |  6 +++---
 index.html        |  2 +-
 package-lock.json | 13 +++++++++++++
 package.json      | 14 +++++++++++---
 5 files changed, 29 insertions(+), 7 deletions(-)

diff --git a/.gitignore b/.gitignore
index 6f80ec9..962f3c8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,3 +12,4 @@ dist/
 
 # Renders of content/photos.json (npm run photos): made from the list, so not kept.
 photos/
+.fw-out/
diff --git a/README.md b/README.md
index 2670268..2567542 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 # Tower
 
-**Live map — <https://pavelsafronov.gitlab.io/tower/>** · [Source](https://gitlab.com/PavelSafronov/tower)
+**Live map — <https://apps.fuzzyworld.net/tower/>** · [Source](https://code.fuzzyworld.net/tower/)
 
 Companion piece to a novel set inside **Tower** — a fictional smart cylinder orbiting Earth,
 spun for 1 g, with an inner surface the size of Wisconsin, lit by 54 TW of sunlight
@@ -242,7 +242,7 @@ generated in the browser from `world.json`, which the build makes from
 `content/world.json` (world-generation.md §5).
 
 **Every branch is on Pages too.** The default branch is at the site root and every other
-branch at `/tower/<branch>/` — `forest` at <https://pavelsafronov.gitlab.io/tower/forest/> —
+branch at `/tower/<branch>/` — `forest` at <https://apps.fuzzyworld.net/tower/forest/> —
 so a branch can be looked at without a dev server. When the site holds more than one
 branch, a **branch picker** in the panel header switches between them, keeping the view and
 place in the URL. [`tools/build-pages.sh`](tools/build-pages.sh) builds them all from the
@@ -252,7 +252,7 @@ than taking the site down. All of them share one origin, so they share browser s
 remembered view, camera and label setting follow you between branches.
 
 Assets are referenced **relatively**, so the same build works whether Pages serves
-it from `https://pavelsafronov.gitlab.io/tower/` or from a generated unique domain
+it from `https://apps.fuzzyworld.net/tower/` or from a generated unique domain
 at a root. Set a `BASE` CI variable to force an absolute base if that is ever
 needed.
 
diff --git a/index.html b/index.html
index 1e9f308..24abdbc 100644
--- a/index.html
+++ b/index.html
@@ -159,7 +159,7 @@
       <summary>About</summary>
       <p class="hint">Tower is the setting of a novel. This map is its companion piece.</p>
       <p class="links">
-        <a href="https://gitlab.com/PavelSafronov/tower" target="_blank" rel="noopener">Source on GitLab</a>
+        <a href="https://code.fuzzyworld.net/tower/" target="_blank" rel="noopener">Source code</a>
       </p>
     </details>
   </aside>
diff --git a/package-lock.json b/package-lock.json
index 530beef..7e2c642 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16,6 +16,7 @@
       "devDependencies": {
         "@types/node": "^26.4.1",
         "@types/three": "^0.180.0",
+        "fuzzyworld-tools": "git+https://code.fuzzyworld.net/fuzzyworld-tools.git#semver:^1.0.0",
         "playwright": "^1.63.0",
         "typescript": "^7.0.2",
         "vite": "^8.2.2",
@@ -899,6 +900,18 @@
         "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
       }
     },
+    "node_modules/fuzzyworld-tools": {
+      "version": "1.0.1",
+      "resolved": "git+https://code.fuzzyworld.net/fuzzyworld-tools.git#45b1fe3805ad7ec86b864e4604b7ad89a0e25a78",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "fw": "bin/fw"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
     "node_modules/lightningcss": {
       "version": "1.33.0",
       "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz",
diff --git a/package.json b/package.json
index 07fd66d..9405f6b 100644
--- a/package.json
+++ b/package.json
@@ -10,11 +10,13 @@
     "test": "vitest run",
     "test:watch": "vitest",
     "screenshots": "node tools/screenshots.mjs",
-    "photos": "node tools/photos.mjs"
+    "photos": "node tools/photos.mjs",
+    "deploy": "fw deploy"
   },
   "devDependencies": {
     "@types/node": "^26.4.1",
     "@types/three": "^0.180.0",
+    "fuzzyworld-tools": "git+https://code.fuzzyworld.net/fuzzyworld-tools.git#semver:^1.0.0",
     "playwright": "^1.63.0",
     "typescript": "^7.0.2",
     "vite": "^8.2.2",
@@ -24,13 +26,19 @@
   "description": "Companion map to a novel set inside Tower, a spun cylinder habitat in Earth orbit.",
   "repository": {
     "type": "git",
-    "url": "https://gitlab.com/PavelSafronov/tower.git"
+    "url": "https://code.fuzzyworld.net/tower.git"
   },
-  "homepage": "https://pavelsafronov.gitlab.io/tower/",
+  "homepage": "https://apps.fuzzyworld.net/tower/",
   "dependencies": {
     "comlink": "^4.4.2",
     "delaunator": "^5.1.0",
     "simplex-noise": "^4.0.3",
     "three": "^0.180.0"
+  },
+  "fuzzyworld": {
+    "app": "tower",
+    "title": "Tower — Map",
+    "build": "sh tools/build-pages.sh .fw-out",
+    "out": ".fw-out"
   }
 }