Harden archive-world setup and refresh site links
All checks were successful
Build Org Website / build (push) Successful in 39s

This commit is contained in:
gitea-actions
2026-07-30 09:08:12 +01:00
parent 5b59f5745c
commit c06af38d80
35 changed files with 329 additions and 239 deletions

0
assets/audio/archive-world/v2/attack.wav Normal file → Executable file
View File

0
assets/audio/archive-world/v2/boss-attack.wav Normal file → Executable file
View File

0
assets/audio/archive-world/v2/damage.wav Normal file → Executable file
View File

0
assets/audio/archive-world/v2/dialogue.wav Normal file → Executable file
View File

0
assets/audio/archive-world/v2/enemy-defeat.wav Normal file → Executable file
View File

0
assets/audio/archive-world/v2/item.wav Normal file → Executable file
View File

0
assets/audio/archive-world/v2/portal.wav Normal file → Executable file
View File

0
assets/audio/archive-world/v2/puzzle.wav Normal file → Executable file
View File

0
assets/audio/archive-world/v2/quest.wav Normal file → Executable file
View File

0
assets/audio/archive-world/v2/step.wav Normal file → Executable file
View File

0
assets/audio/archive-world/v2/town-ambient.ogg Normal file → Executable file
View File

0
assets/audio/archive-world/v2/vault-ambient.ogg Normal file → Executable file
View File

0
assets/audio/archive-world/v2/victory.wav Normal file → Executable file
View File

0
assets/images/play/archive-world/v2/archive-town.webp Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 2.7 MiB

After

Width:  |  Height:  |  Size: 2.7 MiB

0
assets/images/play/archive-world/v2/areas.webp Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 2.1 MiB

After

Width:  |  Height:  |  Size: 2.1 MiB

0
assets/images/play/archive-world/v2/cast-atlas.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

0
assets/images/play/archive-world/v2/item-atlas.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

0
assets/images/play/archive-world/v2/traveler-berry.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 1012 KiB

After

Width:  |  Height:  |  Size: 1012 KiB

0
assets/images/play/archive-world/v2/traveler-brass.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 696 KiB

After

Width:  |  Height:  |  Size: 696 KiB

0
assets/images/play/archive-world/v2/traveler-moss.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 998 KiB

After

Width:  |  Height:  |  Size: 998 KiB

0
assets/scripts/pages/archive-world-audio.js Normal file → Executable file
View File

0
assets/scripts/pages/archive-world-data.js Normal file → Executable file
View File

0
assets/scripts/pages/archive-world-scenes.js Normal file → Executable file
View File

0
assets/scripts/pages/archive-world-state.js Normal file → Executable file
View File

0
assets/scripts/pages/archive-world-systems.js Normal file → Executable file
View File

0
assets/scripts/pages/archive-world-ui.js Normal file → Executable file
View File

36
assets/scripts/pages/archive-world.js Normal file → Executable file
View File

@@ -93,6 +93,7 @@
function bindSetup() { function bindSetup() {
const dialog = controller.root.querySelector("[data-world-setup]"); const dialog = controller.root.querySelector("[data-world-setup]");
const form = controller.root.querySelector("[data-world-setup-form]"); const form = controller.root.querySelector("[data-world-setup-form]");
if (!dialog || !form) return;
dialog.addEventListener("cancel", (event) => event.preventDefault()); dialog.addEventListener("cancel", (event) => event.preventDefault());
form.addEventListener("submit", (event) => { form.addEventListener("submit", (event) => {
event.preventDefault(); event.preventDefault();
@@ -114,6 +115,10 @@
function openSetup(message) { function openSetup(message) {
const dialog = controller.root.querySelector("[data-world-setup]"); const dialog = controller.root.querySelector("[data-world-setup]");
if (!dialog) {
status(message || "Traveler setup could not open. Reload the page to try again; the plain directory remains available.");
return;
}
if (message) { if (message) {
controller.root.querySelector("[data-world-setup-error]").textContent = message; controller.root.querySelector("[data-world-setup-error]").textContent = message;
status(message); status(message);
@@ -140,20 +145,20 @@
button.addEventListener("pointerdown", down); button.addEventListener("pointerdown", down);
["pointerup", "pointercancel", "pointerleave"].forEach((name) => button.addEventListener(name, up)); ["pointerup", "pointercancel", "pointerleave"].forEach((name) => button.addEventListener(name, up));
}); });
controller.root.querySelector("[data-world-interact]").addEventListener("click", () => { bindClick("[data-world-interact]", () => {
if (controller.scene) controller.scene.interact(); if (controller.scene) controller.scene.interact();
}); });
controller.root.querySelector("[data-world-attack]").addEventListener("click", () => { bindClick("[data-world-attack]", () => {
if (controller.scene) controller.scene.attack(controller.scene.time.now); if (controller.scene) controller.scene.attack(controller.scene.time.now);
}); });
controller.root.querySelector("[data-world-item]").addEventListener("click", useSelectedItem); bindClick("[data-world-item]", useSelectedItem);
controller.root.querySelector("[data-world-menu]").addEventListener("click", openMenu); bindClick("[data-world-menu]", openMenu);
controller.root.querySelector("[data-world-quests]").addEventListener("click", () => controller.ui.openMenu(controller.state, "quests")); bindClick("[data-world-quests]", () => controller.ui.openMenu(controller.state, "quests"));
controller.root.querySelector("[data-world-inventory]").addEventListener("click", () => controller.ui.openMenu(controller.state, "inventory")); bindClick("[data-world-inventory]", () => controller.ui.openMenu(controller.state, "inventory"));
controller.root.querySelector("[data-world-journal-open]").addEventListener("click", () => controller.ui.openMenu(controller.state, "journal")); bindClick("[data-world-journal-open]", () => controller.ui.openMenu(controller.state, "journal"));
controller.root.querySelector("[data-world-sound]").addEventListener("click", toggleSound); bindClick("[data-world-sound]", toggleSound);
controller.root.querySelector("[data-world-fullscreen]").addEventListener("click", toggleFullscreen); bindClick("[data-world-fullscreen]", toggleFullscreen);
controller.root.querySelector("[data-world-reset]").addEventListener("click", () => controller.ui.openMenu(controller.state, "settings")); bindClick("[data-world-reset]", () => controller.ui.openMenu(controller.state, "settings"));
document.addEventListener("fullscreenchange", updateFullscreen); document.addEventListener("fullscreenchange", updateFullscreen);
document.addEventListener("visibilitychange", () => { document.addEventListener("visibilitychange", () => {
@@ -348,14 +353,16 @@
text("[data-world-player]", state.name); text("[data-world-player]", state.name);
text("[data-world-level]", `Lv ${state.level}`); text("[data-world-level]", `Lv ${state.level}`);
text("[data-world-health-text]", `${Math.ceil(state.health)} / ${state.maxHealth}`); text("[data-world-health-text]", `${Math.ceil(state.health)} / ${state.maxHealth}`);
controller.root.querySelector("[data-world-health-bar]").style.width = `${(state.health / state.maxHealth) * 100}%`; const healthBar = controller.root.querySelector("[data-world-health-bar]");
if (healthBar) healthBar.style.width = `${(state.health / state.maxHealth) * 100}%`;
text("[data-world-objective]", Systems.currentObjective(state)); text("[data-world-objective]", Systems.currentObjective(state));
text("[data-world-discovery-count]", `${state.discovered.length} / 8`); text("[data-world-discovery-count]", `${state.discovered.length} / 8`);
text("[data-world-sigil-count]", `${state.sigils.length} / 8`); text("[data-world-sigil-count]", `${state.sigils.length} / 8`);
text("[data-world-sound]", state.settings.soundEnabled ? "Sound: on" : "Sound: muted"); text("[data-world-sound]", state.settings.soundEnabled ? "Sound: on" : "Sound: muted");
const selected = Data.ITEMS[state.selectedItem]; const selected = Data.ITEMS[state.selectedItem];
text("[data-world-selected-item]", selected ? `${selected.name} ×${Systems.itemQuantity(state, state.selectedItem)}` : "None"); text("[data-world-selected-item]", selected ? `${selected.name} ×${Systems.itemQuantity(state, state.selectedItem)}` : "None");
controller.root.querySelector("[data-world-badge]").hidden = !state.complete; const badge = controller.root.querySelector("[data-world-badge]");
if (badge) badge.hidden = !state.complete;
controller.root.classList.toggle("is-restored", state.story.ending); controller.root.classList.toggle("is-restored", state.story.ending);
} }
@@ -394,6 +401,11 @@
if (node) node.textContent = value; if (node) node.textContent = value;
} }
function bindClick(selector, handler) {
const node = controller.root.querySelector(selector);
if (node) node.addEventListener("click", handler);
}
Object.assign(controller, { Object.assign(controller, {
setState, renderHud, status, setPrompt, showBoss, hideBoss, openDefeat, openEnding, setState, renderHud, status, setPrompt, showBoss, hideBoss, openDefeat, openEnding,
openLandmark, openNpc, openChallenge, openMenu, travel, useSelectedItem, cycleItem openLandmark, openNpc, openChallenge, openMenu, travel, useSelectedItem, cycleItem

0
blogs/2025/2025-list.org Normal file → Executable file
View File

View File

@@ -88,6 +88,7 @@ See the categories: @@html:<a href="../home/categories.html">Categories</a>@@
* 2025 * 2025
** December 2025 ** December 2025
- [[file:2025/2025-list.org][2025 Writing]] @@html:<span class="post-date">31-12-2025 00:00</span>@@
- [[file:2025/12-december/28-12-week-review.org][[28-12-2025] - Weekly Review]] @@html:<span class="post-date">28-12-2025 12:12</span>@@ @@html:<a href="/tags/review.html"><span class="post-tag">review</span></a>@@ - [[file:2025/12-december/28-12-week-review.org][[28-12-2025] - Weekly Review]] @@html:<span class="post-date">28-12-2025 12:12</span>@@ @@html:<a href="/tags/review.html"><span class="post-tag">review</span></a>@@
- [[file:2025/12-december/21-12-week-review.org][[21-12-2025] - Weekly Review]] @@html:<span class="post-date">21-12-2025 12:12</span>@@ @@html:<a href="/tags/review.html"><span class="post-tag">review</span></a>@@ - [[file:2025/12-december/21-12-week-review.org][[21-12-2025] - Weekly Review]] @@html:<span class="post-date">21-12-2025 12:12</span>@@ @@html:<a href="/tags/review.html"><span class="post-tag">review</span></a>@@
- [[file:2025/12-december/14-12-week-review.org][[14-12-2025] - Weekly Review]] @@html:<span class="post-date">09-12-2025 12:12</span>@@ @@html:<a href="/tags/review.html"><span class="post-tag">review</span></a>@@ - [[file:2025/12-december/14-12-week-review.org][[14-12-2025] - Weekly Review]] @@html:<span class="post-date">09-12-2025 12:12</span>@@ @@html:<a href="/tags/review.html"><span class="post-tag">review</span></a>@@

View File

@@ -766,3 +766,9 @@ at <ScriptBlock>, /home/zaine/master-folder/org-platform/org_web/build-logs/gite
2026-07-29T15:18:06.0538065+01:00 [INFO] Running authoring server tests with /home/zaine/master-folder/org-platform/authoring-service/.venv/bin/python. 2026-07-29T15:18:06.0538065+01:00 [INFO] Running authoring server tests with /home/zaine/master-folder/org-platform/authoring-service/.venv/bin/python.
2026-07-29T15:18:06.1955865+01:00 [INFO] Authoring server tests passed: ran=0, failures=0, errors=0, skipped=0, exit=0 2026-07-29T15:18:06.1955865+01:00 [INFO] Authoring server tests passed: ran=0, failures=0, errors=0, skipped=0, exit=0
2026-07-29T15:18:06.5283574+01:00 [INFO] Sent authoring server test notification. 2026-07-29T15:18:06.5283574+01:00 [INFO] Sent authoring server test notification.
2026-07-30T01:00:59.3997427+01:00 [INFO] Prepared current build status for zaine/org_web: severity=Info, status=success
2026-07-30T01:00:59.4073111+01:00 [INFO] Fetching recent Gitea Actions runs for zaine/org_web.
2026-07-30T01:01:00.6585047+01:00 [INFO] Sent build status notification with 1 embed(s).
2026-07-30T01:01:00.6776757+01:00 [INFO] Running authoring server tests with /home/zaine/master-folder/org-platform/authoring-service/.venv/bin/python.
2026-07-30T01:01:00.7510165+01:00 [INFO] Authoring server tests passed: ran=0, failures=0, errors=0, skipped=0, exit=0
2026-07-30T01:01:01.0172871+01:00 [INFO] Sent authoring server test notification.

16
play/rpg.org Normal file → Executable file
View File

@@ -142,12 +142,12 @@
<noscript><p class="archive-world__noscript">The RPG needs JavaScript, but every destination remains available in the plain directory above.</p></noscript> <noscript><p class="archive-world__noscript">The RPG needs JavaScript, but every destination remains available in the plain directory above.</p></noscript>
</main> </main>
<script src="/assets/scripts/vendor/phaser-4.1.0.min.js" defer></script> <script src="/assets/scripts/vendor/phaser-4.1.0.min.js?v=archive-world-2.0.1" defer></script>
<script src="/assets/scripts/pages/archive-world-data.js" defer></script> <script src="/assets/scripts/pages/archive-world-data.js?v=archive-world-2.0.1" defer></script>
<script src="/assets/scripts/pages/archive-world-state.js" defer></script> <script src="/assets/scripts/pages/archive-world-state.js?v=archive-world-2.0.1" defer></script>
<script src="/assets/scripts/pages/archive-world-systems.js" defer></script> <script src="/assets/scripts/pages/archive-world-systems.js?v=archive-world-2.0.1" defer></script>
<script src="/assets/scripts/pages/archive-world-audio.js" defer></script> <script src="/assets/scripts/pages/archive-world-audio.js?v=archive-world-2.0.1" defer></script>
<script src="/assets/scripts/pages/archive-world-ui.js" defer></script> <script src="/assets/scripts/pages/archive-world-ui.js?v=archive-world-2.0.1" defer></script>
<script src="/assets/scripts/pages/archive-world-scenes.js" defer></script> <script src="/assets/scripts/pages/archive-world-scenes.js?v=archive-world-2.0.1" defer></script>
<script src="/assets/scripts/pages/archive-world.js" defer></script> <script src="/assets/scripts/pages/archive-world.js?v=archive-world-2.0.1" defer></script>
#+END_EXPORT #+END_EXPORT

View File

@@ -4,7 +4,7 @@
See the categories: @@html:<a href="../home/categories.html">Categories</a>@@ See the categories: @@html:<a href="../home/categories.html">Categories</a>@@
* Posts: * Posts:
- [[file:career/career-list.org][Career List]] @@html:<span class="post-date">29-07-2026 14:58</span>@@ - [[file:career/career-list.org][Career List]] @@html:<span class="post-date">29-07-2026 21:47</span>@@
- [[file:career/cross-site-scripting-xss.org][Cross-Site Scripting (XSS)]] @@html:<span class="post-date">01-06-2026 10:21</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@ - [[file:career/cross-site-scripting-xss.org][Cross-Site Scripting (XSS)]] @@html:<span class="post-date">01-06-2026 10:21</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
- [[file:career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]] @@html:<span class="post-date">11-03-2026 17:18</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@ - [[file:career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]] @@html:<span class="post-date">11-03-2026 17:18</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@
- [[file:career/javascript.org][Understands the Javascript language]] @@html:<span class="post-date">11-03-2026 16:52</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@ - [[file:career/javascript.org][Understands the Javascript language]] @@html:<span class="post-date">11-03-2026 16:52</span>@@ @@html:<a href="/tags/learning.html"><span class="post-tag">learning</span></a>@@ @@html:<a href="/tags/notes.html"><span class="post-tag">notes</span></a>@@

View File

@@ -16,205 +16,255 @@ flowchart TD
n3 --> n5 n3 --> n5
n6["Blogs List"] n6["Blogs List"]
n3 --> n6 n3 --> n6
n7{{"home"}} n7{{"2025"}}
root --> n7 n3 --> n7
n8["Countdown"] n8["2025 Writing"]
n7 --> n8 n7 --> n8
n9["Backlog"] n9{{"08-august"}}
n7 --> n9 n7 --> n9
n10["Competency Status Board"] n10["Zettelkasten Method"]
n7 --> n10 n9 --> n10
n11["hidden-soul"] n11["What Do I Want To Do With Emacs"]
n7 --> n11 n9 --> n11
n12["Wird Tracker"] n12["Wacom With Arch"]
n7 --> n12 n9 --> n12
n13["Contact"] n13["09-08-2025: Website Changes"]
n7 --> n13 n9 --> n13
n14["Service"] n14["Hilbert's Hotel"]
n7 --> n14 n9 --> n14
n15["Notes"] n15["Benefits of Reading"]
n7 --> n15 n9 --> n15
n16["Categories"] n16["Third Time"]
n7 --> n16 n9 --> n16
n17{{"guide"}} n17{{"11-november"}}
n7 --> n17 n7 --> n17
n18["Setup"] n18{{"[[file:blogs/2025/11-november/02-11-week-review.org][[02-11-2025] - Weekly Review]]"}}
n17 --> n18 n17 --> n18
n19["Wird Tracker — Technical Guide"] n19{{"[[file:blogs/2025/11-november/09-11-week-review.org][[09-11-2025] - Weekly Review]]"}}
n17 --> n19 n17 --> n19
n20{{"lima"}} n20{{"[[file:blogs/2025/11-november/16-11-week-review.org][[16-11-2025] - Weekly Review]]"}}
root --> n20 n17 --> n20
n21["Lima"] n21{{"[[file:blogs/2025/11-november/23-11-week-review.org][[23-11-2025] - Weekly Review]]"}}
n20 --> n21 n17 --> n21
n22{{"posts"}} n22{{"[[file:blogs/2025/11-november/30-11-week-review.org][[30-11-2025] - Weekly Review]]"}}
root --> n22 n17 --> n22
n23["Posts Introduction"] n23{{"12-december"}}
n22 --> n23 n7 --> n23
n24["Posts List"] n24{{"[[file:blogs/2025/12-december/07-12-week-review.org][[07-12-2025] - Weekly Review]]"}}
n22 --> n24 n23 --> n24
n25{{"career"}} n25{{"[[file:blogs/2025/12-december/14-12-week-review.org][[14-12-2025] - Weekly Review]]"}}
n22 --> n25 n23 --> n25
n26["SOLID Principles"] n26{{"[[file:blogs/2025/12-december/21-12-week-review.org][[21-12-2025] - Weekly Review]]"}}
n25 --> n26 n23 --> n26
n27["OWASP Top Ten"] n27{{"[[file:blogs/2025/12-december/28-12-week-review.org][[28-12-2025] - Weekly Review]]"}}
n25 --> n27 n23 --> n27
n28["Retrospectives"] n28{{"home"}}
n25 --> n28 root --> n28
n29["Lean"] n29["Countdown"]
n25 --> n29 n28 --> n29
n30["Invest Principles"] n30["Backlog"]
n25 --> n30 n28 --> n30
n31["Career Introduction"] n31["Competency Status Board"]
n25 --> n31 n28 --> n31
n32["Management of self training"] n32["hidden-soul"]
n25 --> n32 n28 --> n32
n33["Wireframe Designs"] n33["Wird Tracker"]
n25 --> n33 n28 --> n33
n34["Requirements, features, user stories, tasks, walking skeletons"] n34["Contact"]
n25 --> n34 n28 --> n34
n35["Benefits of Normalisation"] n35["Service"]
n25 --> n35 n28 --> n35
n36["Datamarts, Airflow and DAG's"] n36["Notes"]
n25 --> n36 n28 --> n36
n37["Probation Objectives:"] n37["Categories"]
n25 --> n37 n28 --> n37
n38["Database Permissions, Roles, and Accounts"] n38{{"guide"}}
n25 --> n38 n28 --> n38
n39["Monitoring and Logging"] n39["Setup"]
n25 --> n39 n38 --> n39
n40["Pipelines and how they work (as well as CI/CD)"] n40["Wird Tracker — Technical Guide"]
n25 --> n40 n38 --> n40
n41["Restful API"] n41{{"lima"}}
n25 --> n41 root --> n41
n42["Understands the Javascript language"] n42["Lima"]
n25 --> n42 n41 --> n42
n43["High Availability, Disaster Recovery and Business Continuity"] n43{{"tags"}}
n25 --> n43 root --> n43
n44["Cross-Site Scripting (XSS)"] n44["Tag: review"]
n25 --> n44 n43 --> n44
n45["Career List"] n45["Tag: life"]
n25 --> n45 n43 --> n45
n46{{"tags"}} n46["Tag: introduction"]
root --> n46 n43 --> n46
n47["Tag: review"] n47["Tag: learning"]
n46 --> n47 n43 --> n47
n48["Tag: life"] n48["Tag: notes"]
n46 --> n48 n43 --> n48
n49["Tag: introduction"] n49["Tag: review"]
n46 --> n49 n43 --> n49
n50["Tag: learning"] n50["Tag: website"]
n46 --> n50 n43 --> n50
n51["Tag: notes"] n51["Tag: update"]
n46 --> n51 n43 --> n51
n52["Tag: review"] n52["Tag: life"]
n46 --> n52 n43 --> n52
n53["Tag: website"] n53["Tag: education"]
n46 --> n53 n43 --> n53
n54["Tag: life"] n54["Tag: insights"]
n46 --> n54 n43 --> n54
n55["Tag: update"] n55["Tag: reading"]
n46 --> n55 n43 --> n55
n56["Tag: insights"] n56["Tag: emacs"]
n46 --> n56 n43 --> n56
n57["Tag: emacs"] n57["Tag: maths"]
n46 --> n57 n43 --> n57
n58["Tag: education"] n58{{"play"}}
n46 --> n58 root --> n58
n59["Tag: reading"] n59["Sigil Press"]
n46 --> n59 n58 --> n59
n60["Tag: maths"] n60["Ink Pond"]
n46 --> n60 n58 --> n60
n61{{"play"}} n61["Bookshelf Sort"]
root --> n61 n58 --> n61
n62["Sigil Press"] n62["Constellation Desk"]
n61 --> n62 n58 --> n62
n63["Ink Pond"] n63["Memory Cabinet"]
n61 --> n63 n58 --> n63
n64["Bookshelf Sort"] n64["Play"]
n61 --> n64 n58 --> n64
n65["Constellation Desk"] n65["Archive Terminal"]
n61 --> n65 n58 --> n65
n66["Memory Cabinet"] n66["Study Lamp"]
n61 --> n66 n58 --> n66
n67["Play"] n67["Marginalia Machine"]
n61 --> n67 n58 --> n67
n68["Archive Terminal"] n68["The Rain Index"]
n61 --> n68 n58 --> n68
n69["Study Lamp"] n69["The House of Pages"]
n61 --> n69 n58 --> n69
n70["Marginalia Machine"] n70["The Archive World"]
n61 --> n70 n58 --> n70
n71["The Rain Index"] n71{{"posts"}}
n61 --> n71 root --> n71
n72["The House of Pages"] n72["Posts Introduction"]
n61 --> n72 n71 --> n72
n73["The Archive World"] n73["Posts List"]
n61 --> n73 n71 --> n73
n74{{"career"}}
n71 --> n74
n75["SOLID Principles"]
n74 --> n75
n76["OWASP Top Ten"]
n74 --> n76
n77["Retrospectives"]
n74 --> n77
n78["Lean"]
n74 --> n78
n79["Invest Principles"]
n74 --> n79
n80["Career Introduction"]
n74 --> n80
n81["Management of self training"]
n74 --> n81
n82["Wireframe Designs"]
n74 --> n82
n83["Requirements, features, user stories, tasks, walking skeletons"]
n74 --> n83
n84["Benefits of Normalisation"]
n74 --> n84
n85["Datamarts, Airflow and DAG's"]
n74 --> n85
n86["Probation Objectives:"]
n74 --> n86
n87["Database Permissions, Roles, and Accounts"]
n74 --> n87
n88["Monitoring and Logging"]
n74 --> n88
n89["Pipelines and how they work (as well as CI/CD)"]
n74 --> n89
n90["Restful API"]
n74 --> n90
n91["Understands the Javascript language"]
n74 --> n91
n92["High Availability, Disaster Recovery and Business Continuity"]
n74 --> n92
n93["Cross-Site Scripting (XSS)"]
n74 --> n93
n94["Career List"]
n74 --> n94
click n1 "index.html" "Home" click n1 "index.html" "Home"
click n2 "recently-updated.html" "Recently Updated" click n2 "recently-updated.html" "Recently Updated"
click n4 "blogs/blogs-intro.html" "Blogs Introduction" click n4 "blogs/blogs-intro.html" "Blogs Introduction"
click n5 "blogs/publish-pages.html" "How to publish pages using Org Publish" click n5 "blogs/publish-pages.html" "How to publish pages using Org Publish"
click n6 "blogs/blogs-list.html" "Blogs List" click n6 "blogs/blogs-list.html" "Blogs List"
click n8 "home/countdown.html" "Countdown" click n8 "blogs/2025/2025-list.html" "2025 Writing"
click n9 "home/backlog.html" "Backlog" click n10 "blogs/2025/08-august/zettelkasten.html" "Zettelkasten Method"
click n10 "home/status.html" "Competency Status Board" click n11 "blogs/2025/08-august/what-do-i-want-to-do-with-emacs.html" "What Do I Want To Do With Emacs"
click n11 "home/hidden-soul.html" "hidden-soul" click n12 "blogs/2025/08-august/wacom-with-arch.html" "Wacom With Arch"
click n12 "home/wird-tracker.html" "Wird Tracker" click n13 "blogs/2025/08-august/spending-the-whole-day-on-this-website.html" "09-08-2025: Website Changes"
click n13 "home/contact.html" "Contact" click n14 "blogs/2025/08-august/hilberts.hotel.html" "Hilbert's Hotel"
click n14 "home/services.html" "Service" click n15 "blogs/2025/08-august/benefits-of-reading.html" "Benefits of Reading"
click n15 "home/notes.html" "Notes" click n16 "blogs/2025/08-august/third-time.html" "Third Time"
click n16 "home/categories.html" "Categories" click n29 "home/countdown.html" "Countdown"
click n18 "home/guide/setup.html" "Setup" click n30 "home/backlog.html" "Backlog"
click n19 "home/guide/wird-tracker-guide.html" "Wird Tracker — Technical Guide" click n31 "home/status.html" "Competency Status Board"
click n21 "lima/lima-list.html" "Lima" click n32 "home/hidden-soul.html" "hidden-soul"
click n23 "posts/posts-intro.html" "Posts Introduction" click n33 "home/wird-tracker.html" "Wird Tracker"
click n24 "posts/posts-list.html" "Posts List" click n34 "home/contact.html" "Contact"
click n26 "posts/career/solid-principles.html" "SOLID Principles" click n35 "home/services.html" "Service"
click n27 "posts/career/owasp.html" "OWASP Top Ten" click n36 "home/notes.html" "Notes"
click n28 "posts/career/retrospectives.html" "Retrospectives" click n37 "home/categories.html" "Categories"
click n29 "posts/career/lean.html" "Lean" click n39 "home/guide/setup.html" "Setup"
click n30 "posts/career/invest-principles.html" "Invest Principles" click n40 "home/guide/wird-tracker-guide.html" "Wird Tracker — Technical Guide"
click n31 "posts/career/career-intro.html" "Career Introduction" click n42 "lima/lima-list.html" "Lima"
click n32 "posts/career/management-of-self.html" "Management of self training" click n44 "tags/review.sync-conflict-20260328-203248-VT6366A.html" "Tag: review"
click n33 "posts/career/wireframe-designs.html" "Wireframe Designs" click n45 "tags/life.sync-conflict-20260417-233423-VT6366A.html" "Tag: life"
click n34 "posts/career/requirements-features.html" "Requirements, features, user stories, tasks, walking skeletons" click n46 "tags/introduction.html" "Tag: introduction"
click n35 "posts/career/normalisation.html" "Benefits of Normalisation" click n47 "tags/learning.html" "Tag: learning"
click n36 "posts/career/airflow.html" "Datamarts, Airflow and DAG's" click n48 "tags/notes.html" "Tag: notes"
click n37 "posts/career/probation-objectives.html" "Probation Objectives:" click n49 "tags/review.html" "Tag: review"
click n38 "posts/career/database-permissions.html" "Database Permissions, Roles, and Accounts" click n50 "tags/website.html" "Tag: website"
click n39 "posts/career/monitoring-and-logging.html" "Monitoring and Logging" click n51 "tags/update.html" "Tag: update"
click n40 "posts/career/pipelines.html" "Pipelines and how they work (as well as CI/CD)" click n52 "tags/life.html" "Tag: life"
click n41 "posts/career/restful-api.html" "Restful API" click n53 "tags/education.html" "Tag: education"
click n42 "posts/career/javascript.html" "Understands the Javascript language" click n54 "tags/insights.html" "Tag: insights"
click n43 "posts/career/ha-dr.html" "High Availability, Disaster Recovery and Business Continuity" click n55 "tags/reading.html" "Tag: reading"
click n44 "posts/career/cross-site-scripting-xss.html" "Cross-Site Scripting (XSS)" click n56 "tags/emacs.html" "Tag: emacs"
click n45 "posts/career/career-list.html" "Career List" click n57 "tags/maths.html" "Tag: maths"
click n47 "tags/review.sync-conflict-20260328-203248-VT6366A.html" "Tag: review" click n59 "play/sigil.html" "Sigil Press"
click n48 "tags/life.sync-conflict-20260417-233423-VT6366A.html" "Tag: life" click n60 "play/ink.html" "Ink Pond"
click n49 "tags/introduction.html" "Tag: introduction" click n61 "play/bookshelf.html" "Bookshelf Sort"
click n50 "tags/learning.html" "Tag: learning" click n62 "play/constellation.html" "Constellation Desk"
click n51 "tags/notes.html" "Tag: notes" click n63 "play/memory.html" "Memory Cabinet"
click n52 "tags/review.html" "Tag: review" click n64 "play/play.html" "Play"
click n53 "tags/website.html" "Tag: website" click n65 "play/terminal.html" "Archive Terminal"
click n54 "tags/life.html" "Tag: life" click n66 "play/study.html" "Study Lamp"
click n55 "tags/update.html" "Tag: update" click n67 "play/poem.html" "Marginalia Machine"
click n56 "tags/insights.html" "Tag: insights" click n68 "play/the-rain-index.html" "The Rain Index"
click n57 "tags/emacs.html" "Tag: emacs" click n69 "play/house.html" "The House of Pages"
click n58 "tags/education.html" "Tag: education" click n70 "play/rpg.html" "The Archive World"
click n59 "tags/reading.html" "Tag: reading" click n72 "posts/posts-intro.html" "Posts Introduction"
click n60 "tags/maths.html" "Tag: maths" click n73 "posts/posts-list.html" "Posts List"
click n62 "play/sigil.html" "Sigil Press" click n75 "posts/career/solid-principles.html" "SOLID Principles"
click n63 "play/ink.html" "Ink Pond" click n76 "posts/career/owasp.html" "OWASP Top Ten"
click n64 "play/bookshelf.html" "Bookshelf Sort" click n77 "posts/career/retrospectives.html" "Retrospectives"
click n65 "play/constellation.html" "Constellation Desk" click n78 "posts/career/lean.html" "Lean"
click n66 "play/memory.html" "Memory Cabinet" click n79 "posts/career/invest-principles.html" "Invest Principles"
click n67 "play/play.html" "Play" click n80 "posts/career/career-intro.html" "Career Introduction"
click n68 "play/terminal.html" "Archive Terminal" click n81 "posts/career/management-of-self.html" "Management of self training"
click n69 "play/study.html" "Study Lamp" click n82 "posts/career/wireframe-designs.html" "Wireframe Designs"
click n70 "play/poem.html" "Marginalia Machine" click n83 "posts/career/requirements-features.html" "Requirements, features, user stories, tasks, walking skeletons"
click n71 "play/the-rain-index.html" "The Rain Index" click n84 "posts/career/normalisation.html" "Benefits of Normalisation"
click n72 "play/house.html" "The House of Pages" click n85 "posts/career/airflow.html" "Datamarts, Airflow and DAG's"
click n73 "play/rpg.html" "The Archive World" click n86 "posts/career/probation-objectives.html" "Probation Objectives:"
click n87 "posts/career/database-permissions.html" "Database Permissions, Roles, and Accounts"
click n88 "posts/career/monitoring-and-logging.html" "Monitoring and Logging"
click n89 "posts/career/pipelines.html" "Pipelines and how they work (as well as CI/CD)"
click n90 "posts/career/restful-api.html" "Restful API"
click n91 "posts/career/javascript.html" "Understands the Javascript language"
click n92 "posts/career/ha-dr.html" "High Availability, Disaster Recovery and Business Continuity"
click n93 "posts/career/cross-site-scripting-xss.html" "Cross-Site Scripting (XSS)"
click n94 "posts/career/career-list.html" "Career List"
#+end_src #+end_src
* Pages * Pages
@@ -224,6 +274,27 @@ flowchart TD
- [[file:blogs/blogs-intro.org][Blogs Introduction]] - [[file:blogs/blogs-intro.org][Blogs Introduction]]
- [[file:blogs/publish-pages.org][How to publish pages using Org Publish]] - [[file:blogs/publish-pages.org][How to publish pages using Org Publish]]
- [[file:blogs/blogs-list.org][Blogs List]] - [[file:blogs/blogs-list.org][Blogs List]]
- 2025
- [[file:blogs/2025/2025-list.org][2025 Writing]]
- 08-august
- [[file:blogs/2025/08-august/zettelkasten.org][Zettelkasten Method]]
- [[file:blogs/2025/08-august/what-do-i-want-to-do-with-emacs.org][What Do I Want To Do With Emacs]]
- [[file:blogs/2025/08-august/wacom-with-arch.org][Wacom With Arch]]
- [[file:blogs/2025/08-august/spending-the-whole-day-on-this-website.org][09-08-2025: Website Changes]]
- [[file:blogs/2025/08-august/hilberts.hotel.org][Hilbert's Hotel]]
- [[file:blogs/2025/08-august/benefits-of-reading.org][Benefits of Reading]]
- [[file:blogs/2025/08-august/third-time.org][Third Time]]
- 11-november
- [[file:blogs/2025/11-november/02-11-week-review.org][[02-11-2025] - Weekly Review]]
- [[file:blogs/2025/11-november/09-11-week-review.org][[09-11-2025] - Weekly Review]]
- [[file:blogs/2025/11-november/16-11-week-review.org][[16-11-2025] - Weekly Review]]
- [[file:blogs/2025/11-november/23-11-week-review.org][[23-11-2025] - Weekly Review]]
- [[file:blogs/2025/11-november/30-11-week-review.org][[30-11-2025] - Weekly Review]]
- 12-december
- [[file:blogs/2025/12-december/07-12-week-review.org][[07-12-2025] - Weekly Review]]
- [[file:blogs/2025/12-december/14-12-week-review.org][[14-12-2025] - Weekly Review]]
- [[file:blogs/2025/12-december/21-12-week-review.org][[21-12-2025] - Weekly Review]]
- [[file:blogs/2025/12-december/28-12-week-review.org][[28-12-2025] - Weekly Review]]
- home - home
- [[file:home/countdown.org][Countdown]] - [[file:home/countdown.org][Countdown]]
- [[file:home/backlog.org][Backlog]] - [[file:home/backlog.org][Backlog]]
@@ -239,6 +310,34 @@ flowchart TD
- [[file:home/guide/wird-tracker-guide.org][Wird Tracker — Technical Guide]] - [[file:home/guide/wird-tracker-guide.org][Wird Tracker — Technical Guide]]
- lima - lima
- [[file:lima/lima-list.org][Lima]] - [[file:lima/lima-list.org][Lima]]
- tags
- [[file:tags/review.sync-conflict-20260328-203248-VT6366A.org][Tag: review]]
- [[file:tags/life.sync-conflict-20260417-233423-VT6366A.org][Tag: life]]
- [[file:tags/introduction.org][Tag: introduction]]
- [[file:tags/learning.org][Tag: learning]]
- [[file:tags/notes.org][Tag: notes]]
- [[file:tags/review.org][Tag: review]]
- [[file:tags/website.org][Tag: website]]
- [[file:tags/update.org][Tag: update]]
- [[file:tags/life.org][Tag: life]]
- [[file:tags/education.org][Tag: education]]
- [[file:tags/insights.org][Tag: insights]]
- [[file:tags/reading.org][Tag: reading]]
- [[file:tags/emacs.org][Tag: emacs]]
- [[file:tags/maths.org][Tag: maths]]
- play
- [[file:play/sigil.org][Sigil Press]]
- [[file:play/ink.org][Ink Pond]]
- [[file:play/bookshelf.org][Bookshelf Sort]]
- [[file:play/constellation.org][Constellation Desk]]
- [[file:play/memory.org][Memory Cabinet]]
- [[file:play/play.org][Play]]
- [[file:play/terminal.org][Archive Terminal]]
- [[file:play/study.org][Study Lamp]]
- [[file:play/poem.org][Marginalia Machine]]
- [[file:play/the-rain-index.org][The Rain Index]]
- [[file:play/house.org][The House of Pages]]
- [[file:play/rpg.org][The Archive World]]
- posts - posts
- [[file:posts/posts-intro.org][Posts Introduction]] - [[file:posts/posts-intro.org][Posts Introduction]]
- [[file:posts/posts-list.org][Posts List]] - [[file:posts/posts-list.org][Posts List]]
@@ -263,31 +362,3 @@ flowchart TD
- [[file:posts/career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]] - [[file:posts/career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]]
- [[file:posts/career/cross-site-scripting-xss.org][Cross-Site Scripting (XSS)]] - [[file:posts/career/cross-site-scripting-xss.org][Cross-Site Scripting (XSS)]]
- [[file:posts/career/career-list.org][Career List]] - [[file:posts/career/career-list.org][Career List]]
- tags
- [[file:tags/review.sync-conflict-20260328-203248-VT6366A.org][Tag: review]]
- [[file:tags/life.sync-conflict-20260417-233423-VT6366A.org][Tag: life]]
- [[file:tags/introduction.org][Tag: introduction]]
- [[file:tags/learning.org][Tag: learning]]
- [[file:tags/notes.org][Tag: notes]]
- [[file:tags/review.org][Tag: review]]
- [[file:tags/website.org][Tag: website]]
- [[file:tags/life.org][Tag: life]]
- [[file:tags/update.org][Tag: update]]
- [[file:tags/insights.org][Tag: insights]]
- [[file:tags/emacs.org][Tag: emacs]]
- [[file:tags/education.org][Tag: education]]
- [[file:tags/reading.org][Tag: reading]]
- [[file:tags/maths.org][Tag: maths]]
- play
- [[file:play/sigil.org][Sigil Press]]
- [[file:play/ink.org][Ink Pond]]
- [[file:play/bookshelf.org][Bookshelf Sort]]
- [[file:play/constellation.org][Constellation Desk]]
- [[file:play/memory.org][Memory Cabinet]]
- [[file:play/play.org][Play]]
- [[file:play/terminal.org][Archive Terminal]]
- [[file:play/study.org][Study Lamp]]
- [[file:play/poem.org][Marginalia Machine]]
- [[file:play/the-rain-index.org][The Rain Index]]
- [[file:play/house.org][The House of Pages]]
- [[file:play/rpg.org][The Archive World]]

0
tests/archive-world-state.test.cjs Normal file → Executable file
View File

0
tests/archive-world-systems.test.cjs Normal file → Executable file
View File