@zerwiz/ymir 0.1.11 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,4 +1,57 @@
1
1
 
2
+ ## 2026-09-17 — 0.1.13: the re-voiced seat arrives, and the packages are listed
3
+
4
+ - **`@zerwiz/sessrumnir` 0.1.9** — the seat that says Sessrúmnir and "Brokk is working", with the fork`s name gone from its source, its bundles, its installer and its package identity. Pinned so a fresh install receives it.
5
+ - **The README lists every package** on npm, and why the smithy is `@zerwiz/smidja-factory`.
6
+
7
+ ## 2026-09-17 — the README lists the packages, and the pin moves to the re-voiced seat
8
+
9
+ - **The README says what is on npm.** Five packages serve — `@zerwiz/ymir` (the
10
+ distro) and the four surfaces it depends on — and the section says so with a
11
+ table, plus the one line that matters to a reader: *why the smithy is not
12
+ `@zerwiz/smiddja`*. That name was accepted twice and served never (package
13
+ document 404, website 403, republish refused as already published); it was
14
+ renamed to `@zerwiz/smidja-factory`, which resolves.
15
+ - **The distro's pin moves to `@zerwiz/sessrumnir@0.1.9`** — the seat that speaks
16
+ its own name rather than the fork's. A fresh install was still receiving the
17
+ old voice through the `0.1.8-alpha` pin.
18
+ - **`@zerwiz/ymir@0.1.13`** is the packet that carries them.
19
+
20
+ ## 2026-09-17 — 0.1.12: the icons reach the live tree, and a missing surface is a failure
21
+
22
+ - **The launcher entries name the door** (`Exec=ymir hlidskjalf`, …) instead of an absolute path into whichever tree minted them — the fault that made every icon do nothing.
23
+ - **All three npm shapes resolve**: a clone (`apps/<app>`), a nested package, and a **sibling** package (`<prefix>/lib/node_modules/@zerwiz/<app>`), which is where a global install puts a dependency it hoists out of the distro.
24
+ - **@zerwiz/sessrumnir pinned exact** — a prerelease range resolved in one prefix and was skipped in another.
25
+ - **A missing surface is a FAILURE with the remedy**, never "skipped".
26
+
27
+ ## 2026-09-17 — the icons reach the live tree, and a missing surface is a failure
28
+
29
+ The Allfather clicked the launcher icons and nothing happened. Both faults were
30
+ mine, and both are the same mistake wearing different clothes: **something named a
31
+ path where it should have named a door.**
32
+
33
+ - **The entry launched a temp directory.** Every `.desktop` file carried
34
+ `Exec=bash <the tree that minted it>/scripts/electron.sh …` — and I had minted
35
+ from `/tmp/opencode/…` while testing, so every icon on his launcher pointed into
36
+ a scratch tree. Entries now name the **door**: `Exec=ymir hlidskjalf`, resolved
37
+ from PATH, so a click reaches whichever install is live. A launcher entry must
38
+ outlive the tree that wrote it.
39
+ - **The fourth surface was missing and the raise shrugged.** `Sessrúmnir — skipped
40
+ (the sessrumnir surface is not present)` and the raise carried on. It was a
41
+ **sibling**: npm put it at `<prefix>/lib/node_modules/@zerwiz/sessrumnir`, beside
42
+ ymir, not inside it. The resolver knew a clone (`apps/<app>`) and a nested
43
+ package (`<pkg>/node_modules/@zerwiz/<app>`) but not that third shape — which is
44
+ the one a **global** install uses when it hoists a dependency out of the distro.
45
+ All three are resolved now, and a surface that is absent is a **FAILURE with the
46
+ exact remedy**, never a shrug.
47
+ - **A dependency must resolve every time.** `@zerwiz/sessrumnir` was declared as a
48
+ prerelease range (`^0.1.8-alpha`): npm resolved it in one prefix and skipped it
49
+ in another. Pinned to the exact version.
50
+
51
+ Verified from his own install (`~/.npm-global`): Hlidskjalf `:3888`, Óðrerir
52
+ `:4322`, the board `:8437`, the gate API `:3889` (401 — up, auth enforced), Nornir
53
+ cron started, Bifrost and the well up, and the launcher entries naming the doors.
54
+
2
55
  ## 2026-09-17 — 0.1.11: four surfaces, their marks, and a door that mends
3
56
 
4
57
  - **All four surfaces rise from one npm install** — Hlidskjalf `:3888`, Óðrerir
package/README.md CHANGED
@@ -700,6 +700,33 @@ when the work will take a while, tells you plainly:
700
700
  Your patience is noted, and it is earned.
701
701
  ```
702
702
 
703
+ ### The packages — what is on npm
704
+
705
+ Six names were published; five serve. The distro **depends on the four
706
+ surfaces**, so one command brings the whole platform — and each can be installed
707
+ alone if you want only that hall.
708
+
709
+ ```
710
+ packages[5]{package,what,live}:
711
+ "@zerwiz/ymir","the distro — the runtime, the doors, the installer, the plan","0.1.12"
712
+ "@zerwiz/hlidskjalf","the high seat — the control plane, the gate and the landing","0.1.0"
713
+ "@zerwiz/odrerir","the live hall — the board on :4322","0.1.0"
714
+ "@zerwiz/smidja-factory","the smithy — the agent factory, its skills and the visualizer on :8437","0.1.1"
715
+ "@zerwiz/sessrumnir","the seat-hall — the desktop where you speak with Brokk","0.1.9"
716
+ ```
717
+
718
+ ```bash
719
+ npm install -g @zerwiz/ymir # the distro AND the four surfaces (dependencies)
720
+ npm install -g @zerwiz/hlidskjalf # or one hall on its own
721
+ ```
722
+
723
+ **Why the smithy's name is not `@zerwiz/smidja`.** It was published under that
724
+ name and the registry accepted it twice — `0.1.0`, then `0.1.1` — while serving
725
+ neither: the package document answered 404, the website 403, and a republish was
726
+ refused as *already published*. The name was retired and the smithy ships as
727
+ **`@zerwiz/smidja-factory`**, which resolves. A second look before publishing
728
+ costs less than explaining a name that never worked.
729
+
703
730
  ### Both shapes — a clone and a package are one tree
704
731
 
705
732
  Ymir runs the same whether you **cloned** it or **installed** it from npm. The
package/bin/app-lib.sh CHANGED
@@ -38,7 +38,17 @@ app_dir() { # <surface> <result-var> — a clone's apps/<x>, else the package
38
38
  _apd_root="${YMIR_ROOT_DIR:-}"
39
39
  if [ -z "$_apd_root" ]; then _apd_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"; fi
40
40
  _apd_pkg="$(app_pkg "$_apd_surface")"
41
- for _apd_c in "$_apd_root/apps/$_apd_surface" "$_apd_root/node_modules/@zerwiz/$_apd_pkg"; do
41
+ # Three shapes, and npm uses the third more than anyone expects:
42
+ # a clone apps/<surface>
43
+ # a nested package <pkg>/node_modules/@zerwiz/<package>
44
+ # a SIBLING package <prefix>/lib/node_modules/@zerwiz/<package> — beside ymir,
45
+ # where a global install puts a dependency it hoists out
46
+ # (the sibling is found through dirname, so no parent-climbing path is written)
47
+ for _apd_c in \
48
+ "$_apd_root/apps/$_apd_surface" \
49
+ "$_apd_root/node_modules/@zerwiz/$_apd_pkg" \
50
+ "$(dirname "$_apd_root")/$_apd_pkg"
51
+ do
42
52
  [ -d "$_apd_c" ] && { printf -v "$_apd_rv" '%s' "$_apd_c"; return 0; }
43
53
  done
44
54
  printf -v "$_apd_rv" '%s' ""
@@ -43,11 +43,11 @@ ACTION="${1:-list}"; shift || true
43
43
  # dir|glyph|tint|says|icon-name|exec|wm-class
44
44
  # FIVE UI surfaces, FIVE DIFFERENT glyphs — no app borrows another's rune.
45
45
  APPS=(
46
- "apps/hlidskjalf|ehwaz|#c9973f|the seat — Hlidskjalf, the high seat of the control plane|ymir-hlidskjalf|scripts/electron.sh start --view hlidskjalf|ymir-hlidskjalf|Ymir · Hlidskjalf"
47
- "apps/hlidskjalf-mobile|raidho|#c9973f|the road — the seat carried, Hlidskjalf on a phone|ymir-hlidskjalf-mobile|scripts/electron.sh start --view hlidskjalf|ymir-hlidskjalf-mobile|Ymir · Hlidskjalf Mobile"
48
- "apps/odrerir|ansuz|#c9973f|the mead — Óðrerir, the Live Hall (Odin's breath, inspiration)|ymir-odrerir|scripts/electron.sh start --view odrerir|ymir-odrerir|Ymir · Óðrerir"
49
- "apps/sessrumnir|othala|#c9973f|the hall — Sessrúmnir, the seat that holds the cloth|ymir-sessrumnir|bin/sessrumnir.sh start|ymir-sessrumnir|Ymir · Sessrúmnir"
50
- "apps/smidja-factory/apps/visualizer|kaunan|#f59e0b|the torch — the forge's eye, Smíðja's trace|ymir-smidja|scripts/electron.sh start --view smidja|ymir-smidja|Ymir · Smíðja"
46
+ "apps/hlidskjalf|ehwaz|#c9973f|the seat — Hlidskjalf, the high seat of the control plane|ymir-hlidskjalf|ymir hlidskjalf|ymir-hlidskjalf|Ymir · Hlidskjalf"
47
+ "apps/hlidskjalf-mobile|raidho|#c9973f|the road — the seat carried, Hlidskjalf on a phone|ymir-hlidskjalf-mobile|ymir hlidskjalf|ymir-hlidskjalf-mobile|Ymir · Hlidskjalf Mobile"
48
+ "apps/odrerir|ansuz|#c9973f|the mead — Óðrerir, the Live Hall (Odin's breath, inspiration)|ymir-odrerir|ymir odrerir|ymir-odrerir|Ymir · Óðrerir"
49
+ "apps/sessrumnir|othala|#c9973f|the hall — Sessrúmnir, the seat that holds the cloth|ymir-sessrumnir|ymir sessrumnir|ymir-sessrumnir|Ymir · Sessrúmnir"
50
+ "apps/smidja-factory/apps/visualizer|kaunan|#f59e0b|the torch — the forge's eye, Smíðja's trace|ymir-smidja|ymir smidja|ymir-smidja|Ymir · Smíðja"
51
51
  )
52
52
 
53
53
  list() {
@@ -115,11 +115,11 @@ icons_dir="$data_home/icons/hicolor/scalable/apps"
115
115
  apps_dir="$data_home/applications"
116
116
  # app | entry name | Exec | StartupWMClass
117
117
  ENTRIES=(
118
- "hlidskjalf|Ymir · Hlidskjalf|scripts/electron.sh start --view hlidskjalf|ymir-hlidskjalf"
119
- "odrerir|Ymir · Óðrerir|scripts/electron.sh start --view odrerir|ymir-odrerir"
120
- "sessrumnir|Ymir · Sessrúmnir|bin/sessrumnir.sh start|ymir-sessrumnir"
121
- "visualizer|Ymir · Smíðja|scripts/electron.sh start --view smidja|ymir-smidja"
122
- "hlidskjalf-mobile|Ymir · Hlidskjalf Mobile|scripts/electron.sh start --view hlidskjalf|ymir-hlidskjalf-mobile"
118
+ "hlidskjalf|Ymir · Hlidskjalf|ymir hlidskjalf|ymir-hlidskjalf"
119
+ "odrerir|Ymir · Óðrerir|ymir odrerir|ymir-odrerir"
120
+ "sessrumnir|Ymir · Sessrúmnir|ymir sessrumnir|ymir-sessrumnir"
121
+ "visualizer|Ymir · Smíðja|ymir smidja|ymir-smidja"
122
+ "hlidskjalf-mobile|Ymir · Hlidskjalf Mobile|ymir hlidskjalf|ymir-hlidskjalf-mobile"
123
123
  )
124
124
  install_all() {
125
125
  # A phone app gets an icon for its own bundle, never a desktop entry.
@@ -149,7 +149,10 @@ install_all() {
149
149
  printf '[Desktop Entry]\nType=Application\nVersion=1.0\n'
150
150
  printf 'Name=%s\n' "$display"
151
151
  printf 'Comment=%s\n' "$says"
152
- printf 'Exec=bash %s/%s\n' "$ROOT" "$exec"
152
+ # The door, never a path: a launcher entry outlives the tree that wrote it,
153
+ # and `ymir <door>` reaches whichever install is live. (The CLI is on PATH
154
+ # from npm's global bin, and from bin/ in a clone — ymir.js is a bin entry.)
155
+ printf 'Exec=%s\n' "$exec"
153
156
  printf 'Icon=%s\n' "$iconname"
154
157
  printf 'Terminal=false\nCategories=Development;Utility;\n'
155
158
  printf 'StartupWMClass=%s\nStartupNotify=true\n' "$klass"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zerwiz/ymir",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "description": "Ymir \u2014 the single-tenant agent operating system. Omarchy-first, host-aware, self-healing.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/zerwiz/ymir",
@@ -62,7 +62,7 @@
62
62
  "optionalDependencies": {
63
63
  "@zerwiz/hlidskjalf": "^0.1.0",
64
64
  "@zerwiz/odrerir": "^0.1.0",
65
- "@zerwiz/sessrumnir": "^0.1.8-alpha",
65
+ "@zerwiz/sessrumnir": "0.1.9",
66
66
  "@zerwiz/smidja-factory": "^0.1.0"
67
67
  }
68
68
  }
package/scripts/start.sh CHANGED
@@ -108,7 +108,8 @@ if [ -x "$ROOT/bin/sessrumnir.sh" ]; then
108
108
  echo "Sessrúmnir — the seat-hall did not rise (run: bin/sessrumnir.sh start)" >&2
109
109
  fi
110
110
  else
111
- echo "Sessrúmnir — skipped (the sessrumnir surface is not present)" >&2
111
+ echo "Sessrúmnir — NOT raised: the sessrumnir surface is missing from this install" >&2
112
+ echo "help: npm i -g @zerwiz/ymir (it is a dependency), or from a clone: bin/sessrumnir-ensure.sh install" >&2
112
113
  fi
113
114
  fi
114
115
 
@@ -256,7 +257,8 @@ if [ -n "$HALL_DIR" ] && [ -d "$HALL_DIR" ]; then
256
257
  fi
257
258
  fi
258
259
  else
259
- echo "Óðrerir — Live Hall skipped (the odrerir surface is not present)." >&2
260
+ echo "Óðrerir — NOT raised: the odrerir surface is missing from this install" >&2
261
+ echo "help: npm i -g @zerwiz/ymir (it is a dependency)" >&2
260
262
  fi
261
263
 
262
264
  cd "$APP"