@bitefoundry/retrieviewer 0.0.2 → 0.0.4

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.
Files changed (261) hide show
  1. package/ASSET-PROVENANCE.md +6 -0
  2. package/ASSETS-LICENSE.md +2 -1
  3. package/ATTRIBUTION.md +6 -1
  4. package/COMFORT-ART.md +65 -0
  5. package/DESKTOP-PLATFORMS.md +75 -0
  6. package/INSTALLING.md +8 -5
  7. package/PLUGIN.md +13 -10
  8. package/PREREQUISITES.md +95 -0
  9. package/PUPPY-MEMORY.md +102 -1
  10. package/README.ko.md +110 -0
  11. package/README.md +119 -58
  12. package/RELEASING.md +27 -14
  13. package/THIRD-PARTY-NOTICES.md +5 -3
  14. package/braille.mjs +35 -9
  15. package/examples/live.mjs +2 -2
  16. package/integrations/desktop/platform.mjs +27 -0
  17. package/integrations/linux-overlay/README.md +83 -0
  18. package/integrations/linux-overlay/overlay.py +1094 -0
  19. package/integrations/macos-overlay/README.md +83 -0
  20. package/integrations/macos-overlay/overlay.jxa +639 -0
  21. package/integrations/opencode/runtime.mjs +4 -4
  22. package/integrations/opencode/tui.tsx +1 -1
  23. package/integrations/windows-overlay/Overlay.cs +4 -4
  24. package/integrations/windows-overlay/desktop.mjs +40 -8
  25. package/integrations/windows-overlay/protocol.mjs +11 -7
  26. package/integrations/windows-overlay/worker.mjs +13 -7
  27. package/package.json +41 -14
  28. package/puppy-comfort-sprites.mjs +25 -0
  29. package/puppy-companion-comfort-q5.bin.gz +0 -0
  30. package/puppy-companion-comfort.json +77 -0
  31. package/puppy-companion-life.mjs +49 -16
  32. package/puppy-companion-objects.mjs +12 -0
  33. package/puppy-frame-predictive.mjs +15 -9
  34. package/puppy-frame-store.mjs +2 -2
  35. package/puppy-paper-world.mjs +14 -0
  36. package/puppy-paper.mjs +65 -14
  37. package/retrieviewer-cli.mjs +10 -3
  38. package/retrieviewer-plugin.d.mts +1 -1
  39. package/retrieviewer-plugin.mjs +1 -1
  40. package/retrieviewer.d.mts +10 -4
  41. package/retrieviewer.mjs +20 -14
  42. package/locomotion-core.mjs +0 -21
  43. package/locomotion-puppy.animal +0 -0
  44. package/vendor/procedural-animals/package.json +0 -40
  45. package/vendor/procedural-animals/src/animal.js +0 -146
  46. package/vendor/procedural-animals/src/bake.js +0 -51
  47. package/vendor/procedural-animals/src/build.js +0 -81
  48. package/vendor/procedural-animals/src/core/build/coatKit.js +0 -121
  49. package/vendor/procedural-animals/src/core/build/featherCards.js +0 -189
  50. package/vendor/procedural-animals/src/core/build/finEdges.js +0 -85
  51. package/vendor/procedural-animals/src/core/build/furSlope.js +0 -115
  52. package/vendor/procedural-animals/src/core/build/mesh.js +0 -67
  53. package/vendor/procedural-animals/src/core/build/pipeline.js +0 -272
  54. package/vendor/procedural-animals/src/core/build/seams.js +0 -183
  55. package/vendor/procedural-animals/src/core/build/warp.js +0 -112
  56. package/vendor/procedural-animals/src/core/build/weights.js +0 -393
  57. package/vendor/procedural-animals/src/core/math/vec.js +0 -81
  58. package/vendor/procedural-animals/src/core/motion/actions.js +0 -800
  59. package/vendor/procedural-animals/src/core/motion/bird.js +0 -3063
  60. package/vendor/procedural-animals/src/core/motion/birdActions.js +0 -1059
  61. package/vendor/procedural-animals/src/core/motion/common.js +0 -158
  62. package/vendor/procedural-animals/src/core/motion/index.js +0 -22
  63. package/vendor/procedural-animals/src/core/motion/quadruped.js +0 -2875
  64. package/vendor/procedural-animals/src/core/motion/snake.js +0 -1594
  65. package/vendor/procedural-animals/src/core/motion/spider.js +0 -1810
  66. package/vendor/procedural-animals/src/core/motion/swimmer.js +0 -1047
  67. package/vendor/procedural-animals/src/core/motion/swimmerActions.js +0 -613
  68. package/vendor/procedural-animals/src/core/render/animalObject.js +0 -262
  69. package/vendor/procedural-animals/src/core/render/coatMaterial.js +0 -1301
  70. package/vendor/procedural-animals/src/core/render/dqs.js +0 -159
  71. package/vendor/procedural-animals/src/core/render/eyes.js +0 -676
  72. package/vendor/procedural-animals/src/core/render/membranes.js +0 -77
  73. package/vendor/procedural-animals/src/core/render/skeleton.js +0 -41
  74. package/vendor/procedural-animals/src/core/rig/bird.js +0 -327
  75. package/vendor/procedural-animals/src/core/rig/quadruped.js +0 -76
  76. package/vendor/procedural-animals/src/core/rig/rig.js +0 -79
  77. package/vendor/procedural-animals/src/core/rig/snake.js +0 -76
  78. package/vendor/procedural-animals/src/core/rig/spider.js +0 -110
  79. package/vendor/procedural-animals/src/core/rig/swimmer.js +0 -181
  80. package/vendor/procedural-animals/src/core/sdf/eyeSocket.js +0 -53
  81. package/vendor/procedural-animals/src/core/sdf/mesher.js +0 -238
  82. package/vendor/procedural-animals/src/core/sdf/sdf.js +0 -263
  83. package/vendor/procedural-animals/src/index.d.ts +0 -98
  84. package/vendor/procedural-animals/src/index.js +0 -29
  85. package/vendor/procedural-animals/src/registry.js +0 -48
  86. package/vendor/procedural-animals/src/species/bear/behaviour.js +0 -463
  87. package/vendor/procedural-animals/src/species/bear/claws.js +0 -147
  88. package/vendor/procedural-animals/src/species/bear/coat.js +0 -726
  89. package/vendor/procedural-animals/src/species/bear/index.js +0 -139
  90. package/vendor/procedural-animals/src/species/bear/motion.js +0 -112
  91. package/vendor/procedural-animals/src/species/bear/regions.js +0 -78
  92. package/vendor/procedural-animals/src/species/bear/rig.js +0 -112
  93. package/vendor/procedural-animals/src/species/bear/sculpt.js +0 -272
  94. package/vendor/procedural-animals/src/species/boar/behaviour.js +0 -335
  95. package/vendor/procedural-animals/src/species/boar/coat.js +0 -372
  96. package/vendor/procedural-animals/src/species/boar/index.js +0 -110
  97. package/vendor/procedural-animals/src/species/boar/motion.js +0 -85
  98. package/vendor/procedural-animals/src/species/boar/regions.js +0 -88
  99. package/vendor/procedural-animals/src/species/boar/rig.js +0 -111
  100. package/vendor/procedural-animals/src/species/boar/sculpt.js +0 -285
  101. package/vendor/procedural-animals/src/species/cat/behaviour.js +0 -559
  102. package/vendor/procedural-animals/src/species/cat/coat.js +0 -841
  103. package/vendor/procedural-animals/src/species/cat/index.js +0 -211
  104. package/vendor/procedural-animals/src/species/cat/motion.js +0 -101
  105. package/vendor/procedural-animals/src/species/cat/regions.js +0 -82
  106. package/vendor/procedural-animals/src/species/cat/rig.js +0 -100
  107. package/vendor/procedural-animals/src/species/cat/sculpt.js +0 -266
  108. package/vendor/procedural-animals/src/species/cat/whiskers.js +0 -110
  109. package/vendor/procedural-animals/src/species/cheetah/coat.js +0 -427
  110. package/vendor/procedural-animals/src/species/cheetah/index.js +0 -51
  111. package/vendor/procedural-animals/src/species/cheetah/joints.js +0 -3
  112. package/vendor/procedural-animals/src/species/cheetah/motion.js +0 -77
  113. package/vendor/procedural-animals/src/species/cheetah/regions.js +0 -95
  114. package/vendor/procedural-animals/src/species/cheetah/rig.js +0 -66
  115. package/vendor/procedural-animals/src/species/cheetah/sculpt.js +0 -158
  116. package/vendor/procedural-animals/src/species/chicken/coat.js +0 -313
  117. package/vendor/procedural-animals/src/species/chicken/coverts.js +0 -320
  118. package/vendor/procedural-animals/src/species/chicken/index.js +0 -110
  119. package/vendor/procedural-animals/src/species/chicken/motion.js +0 -177
  120. package/vendor/procedural-animals/src/species/chicken/regions.js +0 -66
  121. package/vendor/procedural-animals/src/species/chicken/rig.js +0 -144
  122. package/vendor/procedural-animals/src/species/chicken/sculpt.js +0 -389
  123. package/vendor/procedural-animals/src/species/chicken/wingLook.js +0 -66
  124. package/vendor/procedural-animals/src/species/chicken/wingStack.js +0 -124
  125. package/vendor/procedural-animals/src/species/cow/behaviour.js +0 -521
  126. package/vendor/procedural-animals/src/species/cow/coat.js +0 -465
  127. package/vendor/procedural-animals/src/species/cow/index.js +0 -118
  128. package/vendor/procedural-animals/src/species/cow/motion.js +0 -81
  129. package/vendor/procedural-animals/src/species/cow/regions.js +0 -98
  130. package/vendor/procedural-animals/src/species/cow/rig.js +0 -116
  131. package/vendor/procedural-animals/src/species/cow/sculpt.js +0 -339
  132. package/vendor/procedural-animals/src/species/crow/coat.js +0 -145
  133. package/vendor/procedural-animals/src/species/crow/index.js +0 -70
  134. package/vendor/procedural-animals/src/species/crow/joints.js +0 -3
  135. package/vendor/procedural-animals/src/species/crow/motion.js +0 -101
  136. package/vendor/procedural-animals/src/species/crow/regions.js +0 -50
  137. package/vendor/procedural-animals/src/species/crow/rig.js +0 -83
  138. package/vendor/procedural-animals/src/species/crow/sculpt.js +0 -118
  139. package/vendor/procedural-animals/src/species/deer/behaviour.js +0 -513
  140. package/vendor/procedural-animals/src/species/deer/coat.js +0 -391
  141. package/vendor/procedural-animals/src/species/deer/index.js +0 -106
  142. package/vendor/procedural-animals/src/species/deer/motion.js +0 -97
  143. package/vendor/procedural-animals/src/species/deer/regions.js +0 -60
  144. package/vendor/procedural-animals/src/species/deer/rig.js +0 -124
  145. package/vendor/procedural-animals/src/species/deer/sculpt.js +0 -297
  146. package/vendor/procedural-animals/src/species/dog/behaviour.js +0 -521
  147. package/vendor/procedural-animals/src/species/dog/coat.js +0 -495
  148. package/vendor/procedural-animals/src/species/dog/index.js +0 -144
  149. package/vendor/procedural-animals/src/species/dog/motion.js +0 -118
  150. package/vendor/procedural-animals/src/species/dog/regions.js +0 -61
  151. package/vendor/procedural-animals/src/species/dog/rig.js +0 -129
  152. package/vendor/procedural-animals/src/species/dog/sculpt.js +0 -246
  153. package/vendor/procedural-animals/src/species/eagle/coat.js +0 -250
  154. package/vendor/procedural-animals/src/species/eagle/index.js +0 -76
  155. package/vendor/procedural-animals/src/species/eagle/joints.js +0 -3
  156. package/vendor/procedural-animals/src/species/eagle/motion.js +0 -137
  157. package/vendor/procedural-animals/src/species/eagle/regions.js +0 -57
  158. package/vendor/procedural-animals/src/species/eagle/rig.js +0 -107
  159. package/vendor/procedural-animals/src/species/eagle/sculpt.js +0 -137
  160. package/vendor/procedural-animals/src/species/fish/coat.js +0 -271
  161. package/vendor/procedural-animals/src/species/fish/index.js +0 -88
  162. package/vendor/procedural-animals/src/species/fish/motion.js +0 -92
  163. package/vendor/procedural-animals/src/species/fish/regions.js +0 -27
  164. package/vendor/procedural-animals/src/species/fish/rig.js +0 -143
  165. package/vendor/procedural-animals/src/species/fish/sculpt.js +0 -214
  166. package/vendor/procedural-animals/src/species/fish/variants.js +0 -126
  167. package/vendor/procedural-animals/src/species/fox/behaviour.js +0 -314
  168. package/vendor/procedural-animals/src/species/fox/coat.js +0 -444
  169. package/vendor/procedural-animals/src/species/fox/index.js +0 -120
  170. package/vendor/procedural-animals/src/species/fox/motion.js +0 -81
  171. package/vendor/procedural-animals/src/species/fox/regions.js +0 -59
  172. package/vendor/procedural-animals/src/species/fox/rig.js +0 -91
  173. package/vendor/procedural-animals/src/species/fox/sculpt.js +0 -202
  174. package/vendor/procedural-animals/src/species/frog/behaviour.js +0 -590
  175. package/vendor/procedural-animals/src/species/frog/coat.js +0 -305
  176. package/vendor/procedural-animals/src/species/frog/index.js +0 -97
  177. package/vendor/procedural-animals/src/species/frog/motion.js +0 -69
  178. package/vendor/procedural-animals/src/species/frog/regions.js +0 -46
  179. package/vendor/procedural-animals/src/species/frog/rig.js +0 -156
  180. package/vendor/procedural-animals/src/species/frog/sculpt.js +0 -240
  181. package/vendor/procedural-animals/src/species/goat/behaviour.js +0 -509
  182. package/vendor/procedural-animals/src/species/goat/coat.js +0 -590
  183. package/vendor/procedural-animals/src/species/goat/index.js +0 -149
  184. package/vendor/procedural-animals/src/species/goat/motion.js +0 -95
  185. package/vendor/procedural-animals/src/species/goat/regions.js +0 -98
  186. package/vendor/procedural-animals/src/species/goat/rig.js +0 -181
  187. package/vendor/procedural-animals/src/species/goat/sculpt.js +0 -547
  188. package/vendor/procedural-animals/src/species/horse/coat.js +0 -361
  189. package/vendor/procedural-animals/src/species/horse/coatSeam.js +0 -122
  190. package/vendor/procedural-animals/src/species/horse/index.js +0 -80
  191. package/vendor/procedural-animals/src/species/horse/motion.js +0 -245
  192. package/vendor/procedural-animals/src/species/horse/regions.js +0 -60
  193. package/vendor/procedural-animals/src/species/horse/rig.js +0 -117
  194. package/vendor/procedural-animals/src/species/horse/sculpt.js +0 -316
  195. package/vendor/procedural-animals/src/species/horse/seamWeights.js +0 -272
  196. package/vendor/procedural-animals/src/species/lion/behaviour.js +0 -509
  197. package/vendor/procedural-animals/src/species/lion/coat.js +0 -1016
  198. package/vendor/procedural-animals/src/species/lion/index.js +0 -111
  199. package/vendor/procedural-animals/src/species/lion/motion.js +0 -87
  200. package/vendor/procedural-animals/src/species/lion/regions.js +0 -106
  201. package/vendor/procedural-animals/src/species/lion/rig.js +0 -110
  202. package/vendor/procedural-animals/src/species/lion/sculpt.js +0 -384
  203. package/vendor/procedural-animals/src/species/lion/whiskers.js +0 -132
  204. package/vendor/procedural-animals/src/species/pig/behaviour.js +0 -575
  205. package/vendor/procedural-animals/src/species/pig/coat.js +0 -730
  206. package/vendor/procedural-animals/src/species/pig/ears.js +0 -242
  207. package/vendor/procedural-animals/src/species/pig/index.js +0 -161
  208. package/vendor/procedural-animals/src/species/pig/motion.js +0 -105
  209. package/vendor/procedural-animals/src/species/pig/regions.js +0 -100
  210. package/vendor/procedural-animals/src/species/pig/rig.js +0 -152
  211. package/vendor/procedural-animals/src/species/pig/sculpt.js +0 -382
  212. package/vendor/procedural-animals/src/species/rabbit/behaviour.js +0 -605
  213. package/vendor/procedural-animals/src/species/rabbit/coat.js +0 -285
  214. package/vendor/procedural-animals/src/species/rabbit/index.js +0 -85
  215. package/vendor/procedural-animals/src/species/rabbit/motion.js +0 -85
  216. package/vendor/procedural-animals/src/species/rabbit/regions.js +0 -48
  217. package/vendor/procedural-animals/src/species/rabbit/rig.js +0 -99
  218. package/vendor/procedural-animals/src/species/rabbit/sculpt.js +0 -148
  219. package/vendor/procedural-animals/src/species/rat/behaviour.js +0 -539
  220. package/vendor/procedural-animals/src/species/rat/coat.js +0 -341
  221. package/vendor/procedural-animals/src/species/rat/index.js +0 -111
  222. package/vendor/procedural-animals/src/species/rat/motion.js +0 -90
  223. package/vendor/procedural-animals/src/species/rat/regions.js +0 -92
  224. package/vendor/procedural-animals/src/species/rat/rig.js +0 -112
  225. package/vendor/procedural-animals/src/species/rat/sculpt.js +0 -163
  226. package/vendor/procedural-animals/src/species/rat/whiskers.js +0 -119
  227. package/vendor/procedural-animals/src/species/shark/coat.js +0 -383
  228. package/vendor/procedural-animals/src/species/shark/index.js +0 -104
  229. package/vendor/procedural-animals/src/species/shark/motion.js +0 -69
  230. package/vendor/procedural-animals/src/species/shark/regions.js +0 -34
  231. package/vendor/procedural-animals/src/species/shark/rig.js +0 -194
  232. package/vendor/procedural-animals/src/species/shark/sculpt.js +0 -343
  233. package/vendor/procedural-animals/src/species/shark/variants.js +0 -105
  234. package/vendor/procedural-animals/src/species/sheep/behaviour.js +0 -522
  235. package/vendor/procedural-animals/src/species/sheep/coat.js +0 -529
  236. package/vendor/procedural-animals/src/species/sheep/index.js +0 -152
  237. package/vendor/procedural-animals/src/species/sheep/motion.js +0 -86
  238. package/vendor/procedural-animals/src/species/sheep/neck.js +0 -41
  239. package/vendor/procedural-animals/src/species/sheep/regions.js +0 -62
  240. package/vendor/procedural-animals/src/species/sheep/rig.js +0 -163
  241. package/vendor/procedural-animals/src/species/sheep/sculpt.js +0 -542
  242. package/vendor/procedural-animals/src/species/snake/coat.js +0 -315
  243. package/vendor/procedural-animals/src/species/snake/index.js +0 -73
  244. package/vendor/procedural-animals/src/species/snake/motion.js +0 -51
  245. package/vendor/procedural-animals/src/species/snake/regions.js +0 -51
  246. package/vendor/procedural-animals/src/species/snake/rig.js +0 -108
  247. package/vendor/procedural-animals/src/species/snake/sculpt.js +0 -122
  248. package/vendor/procedural-animals/src/species/spider/coat.js +0 -279
  249. package/vendor/procedural-animals/src/species/spider/index.js +0 -78
  250. package/vendor/procedural-animals/src/species/spider/motion.js +0 -72
  251. package/vendor/procedural-animals/src/species/spider/regions.js +0 -87
  252. package/vendor/procedural-animals/src/species/spider/rig.js +0 -118
  253. package/vendor/procedural-animals/src/species/spider/sculpt.js +0 -182
  254. package/vendor/procedural-animals/src/species/wolf/behaviour.js +0 -160
  255. package/vendor/procedural-animals/src/species/wolf/coat.js +0 -749
  256. package/vendor/procedural-animals/src/species/wolf/index.js +0 -107
  257. package/vendor/procedural-animals/src/species/wolf/motion.js +0 -80
  258. package/vendor/procedural-animals/src/species/wolf/regions.js +0 -57
  259. package/vendor/procedural-animals/src/species/wolf/rig.js +0 -87
  260. package/vendor/procedural-animals/src/species/wolf/sculpt.js +0 -339
  261. package/vendor/procedural-animals/src/worker.js +0 -29
@@ -35,6 +35,12 @@ must be checked again for the final release bytes.
35
35
 
36
36
  ## Remaining limits
37
37
 
38
+ Later source candidate: belly/sleep reuse existing licensed roll/rest frames.
39
+ Tug adds eight built-in imagegen keys referenced only from the existing generated
40
+ puppy sheet, not new photographs. COMFORT-ART.md records the prompt, source hash
41
+ and fixed-scale preparation. The ninth archive is covered explicitly by
42
+ ASSETS-LICENSE.md and ATTRIBUTION.md. Original sheet PNGs remain outside npm.
43
+
38
44
  Copyrightability of AI-generated expression, the precise derivative-work analysis,
39
45
  and worldwide name clearance are not conclusively determined here. Existing
40
46
  domestic trademark research records possible similar marks; owning an npm scope
package/ASSETS-LICENSE.md CHANGED
@@ -15,7 +15,7 @@ photographers retain their rights under their original licenses.
15
15
 
16
16
  ## Covered assets
17
17
 
18
- These eight artwork archives and their associated pose/registration metadata,
18
+ These nine artwork archives and their associated pose/registration metadata,
19
19
  decoded images and alternative encodings are covered:
20
20
 
21
21
  - `puppy-stride-tweens-q5.bin.gz`
@@ -26,6 +26,7 @@ decoded images and alternative encodings are covered:
26
26
  - `puppy-paper-behaviors-q5.bin.gz`
27
27
  - `puppy-paper-actions-v9-q5.bin.gz`
28
28
  - `puppy-companion-interactions-v3-q5.bin.gz`
29
+ - `puppy-companion-comfort-q5.bin.gz`
29
30
 
30
31
  ## Practical summary
31
32
 
package/ATTRIBUTION.md CHANGED
@@ -47,7 +47,12 @@ change description if you modify it, in a manner reasonable to the medium.
47
47
 
48
48
  AI-generated pose sheets were extracted, aligned, interpolated, contact-corrected
49
49
  and encoded as 32-level Q5 frame stores. These are modifications, not unaltered
50
- photographs or motion capture. The package contains eight generated-art archives.
50
+ photographs or motion capture. The package contains nine generated-art archives.
51
+ The comfort extension reuses the existing roll/rest poses and adds eight
52
+ AI-generated tug keys, registered at one scale with the existing seat as its
53
+ animation endpoint. No additional photographic or video inputs were used for
54
+ this extension. Its source hash and preparation are recorded in COMFORT-ART.md
55
+ and puppy-companion-comfort.json; the same artwork license applies.
51
56
  Reference photo collections, YouTube footage, experimental Meshy models,
52
57
  noncommercial motion research/datasets, interpolation tools/model weights and
53
58
  worker logs are not distributed in this package. No exclusive copyright in
package/COMFORT-ART.md ADDED
@@ -0,0 +1,65 @@
1
+ # Comfort extension art record
2
+
3
+ Source code MIT; generated puppy art and frame data CC BY-SA4.0, retaining the
4
+ credits in ATTRIBUTION.md. This is a development-source record, not new legal
5
+ clearance. No external photograph, YouTube frame or downloaded rig was introduced.
6
+
7
+ ## Assets and preparation
8
+
9
+ - Belly-up: existing v9 `roll-down`, eased to its measured `roll7` edge boundary,
10
+ held without a new bitmap, then completed to the existing seat.
11
+ - Sleep: existing `rest` eyes-closed endpoint. The body does not zoom or squash.
12
+ A small code-drawn rising z cue is silent; no audio engine is installed.
13
+ - Tug: built-in imagegen output from the existing generated
14
+ `puppy-behaviors16-sheet.png` identity reference. Original PNG is preserved at
15
+ `dist/comfort-art/tug-source-v1.png` locally and is not bundled in npm.
16
+ SHA-256: `10fde9dacca5cb45acd68f387e7ed3bcf88cd72cf0f9c4220d31d819db91731e`.
17
+ Eight keys plus the original seat are packed in
18
+ `puppy-companion-comfort-q5.bin.gz`; registration/hash/byte counts are in
19
+ `puppy-companion-comfort.json`. One scale is applied to all poses; only ground
20
+ and body-center translation varies. Playback repeats discrete authored keys,
21
+ not opacity crossfades, whole-body scale animation or a pre-expanded30fps film.
22
+
23
+ Rebuild (development only, Python Pillow plus existing Node codec):
24
+
25
+ ```sh
26
+ node tools/prepare-comfort-art.mjs /absolute/path/to/tug-source-v1.png
27
+ node tools/check-comfort.mjs
28
+ ```
29
+
30
+ Runtime does not use Python/Pillow or image-generation services for these poses.
31
+ The reference/output/preparation originals are preserved; existing runtime art
32
+ archives were not overwritten. Windows off-screen snapshots are diagnostic,
33
+ not final end-user approval. Other-platform live appearance remains unverified.
34
+
35
+ ## Generation prompt (built-in tool)
36
+
37
+ Use case: stylized-concept. Project asset: Retrieviewer tiny tug-play sprite
38
+ sheet, faithful to the input reference puppy. The reference image is identity/style
39
+ reference, not an output to edit. Create ONE2048x1024 sprite sheet: exactly4 equal
40
+ columns and2 equal rows, eight separate full-body isolated sprites on absolutely
41
+ pure black, no borders, no lettering or grid. Every cell is exactly512x512. Same
42
+ adorable fluffy pale golden retriever puppy, realistic soft long fine fur, black
43
+ nose/eyes, small dark bandana as input. Grayscale only. Fixed frontal slightly
44
+ elevated viewpoint matching reference third row seated puppy. Fixed optical focal
45
+ length, same head/body proportions and puppy scale, identical grounded paw
46
+ baselines at y=456 inside every cell and centered body. Body silhouette about290px
47
+ wide. ALL eight cells show the puppy seated with front paws planted in exact same
48
+ place: no jumps, no camera moves, no size changes, no head squashing or body
49
+ inflation. A small pale braided rope tug toy runs horizontally through mouth and
50
+ extends to puppy's right, without human/hand. First cell: puppy curious, mouth just
51
+ about to grip rope. Second: gently closing jaws around rope, naturally opening
52
+ mouth. Third: firm grip, lower jaw and muzzle believable. Fourth: gently leaning
53
+ just the head back8px while rump and paws planted. Fifth: holding same toy, head
54
+ tugs8px left, both eyes focused on toy. Sixth: head tugs8px right (tiny sideways
55
+ pull), ears follow naturally. Seventh: eases back to center and loosens grip.
56
+ Eighth: lets go and faces viewer, happy soft closed mouth; toy end just below nose.
57
+ Make each cell an adjacent pose of the SAME animation with extremely small
58
+ differences. No dot dithering, no ASCII, no pixel blocks; preserve detailed soft
59
+ fur, runtime will convert to fine Braille. No extra limbs, no new collar, no
60
+ cartoony cylinders, no shadows or floor background. Full tail/body entirely inside
61
+ each cell, ample pure-black margin.
62
+
63
+ Observed output is1774×887 rather than the requested size; the preparation script
64
+ extracts equal cells from actual dimensions. The resulting authored keys still
65
+ need visual review for small body/face differences at transitions.
@@ -0,0 +1,75 @@
1
+ # Native desktop adapters — 0.0.4
2
+
3
+ Version0.0.3 includes Windows, Linux X11 and experimental macOS adapters. Windows
4
+ and the AlmaLinux8 X11 baseline have live verification; macOS has no runtime verification.
5
+ Installation takes two steps: `npm install -g @bitefoundry/retrieviewer`,
6
+ then `retrieviewer desktop`. No app patch, wrapper, shell profile or auto-start entry.
7
+
8
+ Version0.0.4 adds compact comfort behaviors and the tug control. Windows native
9
+ checks were repeated. New Linux/macOS control changes have grammar/protocol
10
+ checks, not new live GUI verification; the Linux live evidence below is the
11
+ earlier0.0.3 baseline. macOS remains experimental.
12
+
13
+ ## Design and status
14
+
15
+ | Platform | Adapter | Current verification boundary |
16
+ | --- | --- | --- |
17
+ | Windows10/11 | .NET Framework/Win32 layered window | Live verified; shared-adapter regression checks passed on this host |
18
+ | macOS | Built-in osascript/JXA AppKit, no Python/Xcode/browser runtime | Experimental; no macOS runtime available on this Windows host |
19
+ | Linux X11 | Python3.6+ stdlib ctypes + X11/Xrender/Xext | AlmaLinux8 GLIBC2.28/Python3.6.8/Node22.23.4 live checks passed on owned Xvfb + Openbox + xcompmgr |
20
+ | Linux native Wayland | No arbitrary-window tracking adapter | Refused, including sessions exposing an Xwayland DISPLAY; no insecure compositor workaround |
21
+
22
+ Linux needs a running Xorg/X11 desktop with an ARGB visual, SHAPE input extension
23
+ and a compositing window manager. A headless/server-only AlmaLinux installation
24
+ cannot display desktop windows. System Python3.6+ is used; AlmaLinux8's
25
+ `/usr/libexec/platform-python` is a fallback. No pip packages, GTK, Qt, Electron,
26
+ native npm addons or on-machine C/C++ compilation are required on Linux. Missing
27
+ capabilities cause a clear error rather than silently installing packages or
28
+ changing a login/session/privacy setting. The source must not require a newer
29
+ GLIBC just because the development workstation has one.
30
+
31
+ AlmaLinux8 users should use an officially maintained Node22 build compatible
32
+ with their GLIBC2.28 system. The package's Node>=20 range is not a promise that
33
+ every future upstream Node binary will run on an old OS. The baseline test uses
34
+ official Node22.23.4 linux-x64, SHA256
35
+ `1805bcd35e6815559bd2eb97db438d3fdb0eb3a5e6a977b7c1badca76337e9ce`.
36
+
37
+ ## Low-resource behavior
38
+
39
+ Linux/macOS worker loops default to15fps, Windows retains30fps. Real elapsed time
40
+ drives the existing fixed-step animation: fewer drawn frames do not deliberately
41
+ speed the dog up. There is at most one frame in flight. Only the cropped, nonblank
42
+ Braille rectangle crosses the pipe and is painted. Hidden/inactive/minimized
43
+ time is paused and never replayed on reveal. Native adapters should default to
44
+ coarser cells/bounded grids on large displays instead of rendering a4K framebuffer.
45
+ This is a design target, not a claim of zero CPU use or a measured memory minimum.
46
+
47
+ In the owned1280×800 Alma8 test the Node engine RSS was about179MiB, plus the
48
+ Python helper. This is not a minimum-memory requirement or proof of4K performance.
49
+
50
+ All adapters reuse the same Q5 art and behavior engine. POSIX control sockets use
51
+ short `/tmp/retrieviewer-overlay-<uid>-<uuid>.sock` addresses with0600 permissions,
52
+ an independently random token in the0600 session record, and conservative cleanup.
53
+ Windows named pipes remain compatible with the previous launcher. No token is
54
+ printed in status or sent over a network. Same-user hostile software remains
55
+ outside the security boundary. Stop/remove must not kill or modify the target app.
56
+
57
+ ## Evidence
58
+
59
+ Keep actual checks, failures, skips and the tested OS separate. Static macOS source
60
+ tests cannot establish AppKit/JXA behavior or privacy permissions. An Ubuntu test
61
+ with a newer libc is not AlmaLinux8/GLIBC2.28 certification. A fake window manager
62
+ is not proof of composited visual quality. Test containers may install their own
63
+ QA tools, but product launch never installs OS packages or changes the user's OS.
64
+
65
+ Recorded Linux checks: real ARGB painting, empty input shape, moved target geometry,
66
+ stale-frame discard, hide on unmap, target disappearance, foreground retention,
67
+ actual Node-to-Python worker painting, accepted ball interaction,0600 UNIX socket,
68
+ rejected wrong token, clean worker/helper exit, and remove lifecycle. This covers
69
+ an isolated desktop, not every GNOME/KDE theme, compositor or physical monitor.
70
+ Evidence: `dist/alma8-qa/posix-worker.json` and source QA script output.
71
+
72
+ - [Node build platform requirements](https://github.com/nodejs/node/blob/v22.23.4/BUILDING.md)
73
+ - [X11 Shape protocol](https://xorg.freedesktop.org/archive/X11R7.7/doc/xextproto/shape.html)
74
+ - [Wayland client surface isolation](https://wayland.pages.freedesktop.org/wayland.freedesktop.org/docs/book/Protocol.html)
75
+ - [Apple NSWindow](https://developer.apple.com/documentation/appkit/nswindow)
package/INSTALLING.md CHANGED
@@ -1,16 +1,19 @@
1
1
  # Install Retrieviewer
2
2
 
3
- Windows desktop setup (Node20+ and the Windows .NET Framework4 compiler required):
3
+ Desktop setup (Node20+; [OS requirements and verification](DESKTOP-PLATFORMS.md)):
4
4
 
5
5
  1. `npm install -g @bitefoundry/retrieviewer`
6
6
  2. `retrieviewer desktop` — select the app window in the picker.
7
7
 
8
8
  No agent configuration is needed for this separate transparent companion.
9
- See [desktop controls, compatibility and removal](WINDOWS-COMPANION.md).
9
+ Windows and AlmaLinux8/GLIBC2.28 X11 have live test evidence. macOS support is
10
+ experimental and not runtime verified; native Wayland is unsupported. Linux needs
11
+ system Python3.6+, X11/Xrender/Xext and a compositor; Windows needs the .NET
12
+ Framework4 compiler. See [Windows controls and removal](WINDOWS-COMPANION.md).
10
13
 
11
14
  ## Optional native OpenCode integration
12
15
 
13
- 0.0.2 also includes an installer CLI and a native OpenCode TUI adapter. It does **not** claim
16
+ 0.0.3 also includes an installer CLI and a native OpenCode TUI adapter. It does **not** claim
14
17
  that every MCP client can display animated UI. Native OpenCode rendering uses its
15
18
  official TUI plugin slot, not another terminal, a wrapper, or a modified binary.
16
19
  Other agent IDs are discoverable but refused until an adapter is implemented.
@@ -62,8 +65,8 @@ the new package. No automatic global install is done by the package itself.
62
65
 
63
66
  ## Commands
64
67
 
65
- For the separate Windows overlay (included since0.0.2),
66
- see [Windows companion](WINDOWS-COMPANION.md). It does not register a Codex plugin
68
+ For the separate native overlay (Windows since0.0.2; Linux X11 and experimental macOS since0.0.3),
69
+ see [desktop platforms](DESKTOP-PLATFORMS.md). It does not register a Codex plugin
67
70
  or change the way an agent is launched:
68
71
 
69
72
  ```powershell
package/PLUGIN.md CHANGED
@@ -1,6 +1,6 @@
1
- # Retrieviewer plugin · 0.0.1
1
+ # Retrieviewer plugin
2
2
 
3
- An autonomous Braille dog, embedded in **your pane**. Only ball and treat need user
3
+ An autonomous Braille dog, embedded in **your pane**. Ball, treat and tug need user
4
4
  input. The rest is its own seeded behavior. No screen, stdin or layout takeover.
5
5
  No telemetry, keys, account signup or paid APIs in the runtime.
6
6
 
@@ -9,21 +9,22 @@ No telemetry, keys, account signup or paid APIs in the runtime.
9
9
  Install from npm:
10
10
 
11
11
  ```sh
12
- npm install @bitefoundry/retrieviewer@0.0.1
12
+ npm install @bitefoundry/retrieviewer
13
13
  ```
14
14
 
15
15
  Portable distribution (independent of the source directory):
16
16
 
17
17
  ```sh
18
- npm install /path/to/bitefoundry-retrieviewer-0.0.1.tgz
18
+ npm install /path/to/bitefoundry-retrieviewer-VERSION.tgz
19
19
  ```
20
20
 
21
21
  The generated tarball is in `dist/`. Node >=20, ESM and a monospaced Unicode
22
22
  Braille font are required. The npm package name is `@bitefoundry/retrieviewer`;
23
23
  imports from the old playground name must be updated.
24
24
  The tarball carries Q5 art, runtime code, types and examples. npm installs the pinned
25
- `three` dependency separately (network/cache or host provisioning required).
26
- No install/build scripts. Offline install requires that dependency already cached.
25
+ `jsonc-parser` dependency for configuration editing separately. The current source
26
+ runtime does not require Three.js; it remains a development-only comparison tool.
27
+ No install/build scripts. Offline install requires the production dependency cached.
27
28
 
28
29
  For supported agent-native installation use `retrieviewer enable`; see
29
30
  [INSTALLING.md](./INSTALLING.md). The library contract below remains unchanged.
@@ -49,6 +50,7 @@ const puppy = await createPetPlugin({
49
50
  puppy.start();
50
51
  ballButton.on('click', () => puppy.interact('ball'));
51
52
  treatButton.on('click', () => puppy.interact('treat'));
53
+ tugButton.on('click', () => puppy.interact('tug'));
52
54
  // pane unmount / host shutdown:
53
55
  puppy.dispose();
54
56
  ```
@@ -87,7 +89,7 @@ synchronous; avoid retaining borrowed frame pixels. See types for custom schedul
87
89
  | JS/TS terminal widget | `/plugin` host callbacks, or core `step/frame` | Generic contract + installed consumer tested |
88
90
  | Ink/React, Blessed | Lifecycle calls plugin, render text in widget | Contract fits; framework-specific mounts not tested |
89
91
  | Python/Rust/Go TUI | JSONL subprocess, one `tick` request per frame | Bridge + Python sample; Node required |
90
- | Browser | Core/plugin + deployed assets + `three` mapping | Existing browser core preview checked; arbitrary bundlers untested |
92
+ | Browser | Core/plugin + deployed assets; no Three.js import map | Existing browser core preview checked; arbitrary bundlers untested |
91
93
 
92
94
  Not a native binary, editor extension, MCP plugin, or automatic injection into
93
95
  closed-source TUI apps. Such hosts need an extension hook to display a pane.
@@ -105,6 +107,7 @@ The package check creates a tarball, installs it into a fresh temp consumer offl
105
107
  with lifecycle scripts disabled, exercises exports, default art, interactions,
106
108
  start/pause/dispose, all JS examples and JSONL. Evidence is retained in
107
109
  `dist/package-check.json`. It does not publish. Art originals/references/workers
108
- are excluded. Source art is18.7 MB gzip; full tarball is approximately20.6 MB,
109
- excluding npm's separate Three dependency. This is still a substantial pet, not
110
- a kilobyte icon; see memory/startup tradeoffs in the comparison document.
110
+ are excluded. Q5 art is about18.8 MB gzip; the0.0.4 tarball
111
+ is about18.9 MB. Installed production files total about19.5 MB in the local consumer
112
+ check, including dependencies. This is still a substantial pet, not a kilobyte icon;
113
+ see measurements and release distinctions in [PUPPY-MEMORY.md](./PUPPY-MEMORY.md).
@@ -0,0 +1,95 @@
1
+ # Node, npm and your desktop
2
+
3
+ [한국어 안내](README.ko.md#nodejs가-없다면) · [Install Retrieviewer](README.md#bring-one-home)
4
+
5
+ ## Choose the computer first
6
+
7
+ Install where the app window is displayed. For Cursor/VS Code Remote SSH, this
8
+ usually means your local Windows/macOS computer, not the remote Linux terminal.
9
+ A Linux DISPLAY such as :1 may belong to a remote VNC desktop; it does not mean
10
+ the local Cursor window lives there. Desktop Linux needs X11 plus a compositor.
11
+
12
+ ## Install Node/npm
13
+
14
+ Check `node --version` and `npm --version`. The package needs Node>=20; prefer a
15
+ maintained release. Node22.23.4 is our tested Alma8 baseline.
16
+
17
+ - **Windows:** use the official [Node.js download page](https://nodejs.org/en/download)
18
+ and choose the Windows installer. Keep npm and Add to PATH enabled. Open a new
19
+ PowerShell afterwards; do not run inside your SSH terminal.
20
+ - **macOS:** use the official macOS installer from the same page; reopen Terminal.
21
+ Node installation does not mean our experimental Mac overlay has been verified.
22
+ - **AlmaLinux8:** an administrator can inspect `dnf module list nodejs`, then on
23
+ a system with no conflicting Node stream install `sudo dnf module install nodejs:22`.
24
+ See [RHEL8.10 stream instructions](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/8.10_release_notes/new-features)
25
+ and [Alma8's Node22 packages](https://errata.almalinux.org/8/ALSA-2026-54530.html).
26
+ Do not reset/switch a company-managed stream without your administrator.
27
+ - **Other Linux:** use your distribution's maintained Node22+ package or the
28
+ official platform download; do not assume an old distribution's `nodejs` package
29
+ meets Node>=20. The official [Node22 release](https://nodejs.org/en/blog/release/v22.23.4/)
30
+ includes binaries and checksums. Avoid random install scripts and do not replace
31
+ system GLIBC to make a newer binary start.
32
+
33
+ No administrator access? Use an approved per-user Node installation or ask the
34
+ machine administrator. Node/npm and desktop libraries are prerequisites, not
35
+ dependencies that Retrieviewer silently installs.
36
+
37
+ ## Linux native prerequisites
38
+
39
+ System Python3.6+, libX11, libXrender and libXext, an ARGB32 visual, SHAPE input
40
+ extension, EWMH window manager and a compositor are required. No pip, GTK, Qt,
41
+ Electron, native npm build or C++ compiler is required by the Linux helper.
42
+ On AlmaLinux8, Python can fall back to `/usr/libexec/platform-python`.
43
+
44
+ On a managed machine, ask your administrator for missing desktop libraries;
45
+ don't change the login session, compositor or display permissions blindly.
46
+ Native Wayland is unsupported. Check session variables without shell-specific
47
+ unset-variable errors:
48
+
49
+ ```sh
50
+ printenv XDG_SESSION_TYPE DISPLAY WAYLAND_DISPLAY
51
+ ```
52
+
53
+ ## Command not found
54
+
55
+ First check the install location:
56
+
57
+ ```sh
58
+ npm ls -g @bitefoundry/retrieviewer --depth=0
59
+ npm prefix -g
60
+ ```
61
+
62
+ On Linux/macOS the executable is under `<printed-prefix>/bin`. On Windows it is
63
+ directly under the printed prefix. Add the actual directory to your user's PATH.
64
+ Retrieviewer never edits a shell profile automatically.
65
+
66
+ For **bash/zsh**, this fixes the current shell:
67
+
68
+ ```sh
69
+ export PATH="$(npm prefix -g)/bin:$PATH"
70
+ ```
71
+
72
+ For **csh/tcsh**, if the printed prefix is `/home/you/.npm-global`, replace that
73
+ example with your actual result:
74
+
75
+ ```csh
76
+ set path = ( /home/you/.npm-global/bin $path )
77
+ rehash
78
+ ```
79
+
80
+ Persist the appropriate line manually in your shell's own startup file if needed.
81
+ For Windows, reopen PowerShell first; if necessary add the printed npm prefix in
82
+ Windows User Environment Variables → Path. Do not overwrite the entire PATH.
83
+ If PowerShell policy blocks npm.ps1 or retrieviewer.ps1, use `npm.cmd` and
84
+ `retrieviewer.cmd` instead. Do not weaken your execution policy just for this pet.
85
+
86
+ If global npm install reports EACCES, use a properly configured per-user npm
87
+ prefix/Node installation with your administrator's guidance—not blanket sudo npm.
88
+ Meanwhile the one-off command does not require global PATH setup:
89
+
90
+ ```sh
91
+ npx --yes --package @bitefoundry/retrieviewer@latest retrieviewer desktop
92
+ ```
93
+
94
+ `npx` still needs Node/npm and a compatible GUI desktop, and may download the
95
+ package into npm's cache. It does not create a permanent global command.
package/PUPPY-MEMORY.md CHANGED
@@ -1,4 +1,105 @@
1
- # Lossless runtime cache reduction
1
+ # Runtime weight and performance
2
+
3
+ ## Comfort behaviors (0.0.4)
4
+
5
+ Belly-up flopping and eyes-closed sleeping reuse the existing action/rest art.
6
+ Tug adds eight authored keys and the exact existing seat endpoint, not a dense
7
+ tween film:103,549 compressed bytes and291,337 resident Q5 pixel bytes. The sampler
8
+ allocates its single RGBA output only on first use; source reconstruction remains
9
+ a two-frame LRU. No new runtime dependency, background process or timer is added.
10
+
11
+ The legacy interaction sheet contains101 unique frames that no active clip can
12
+ reach. The Q5 loader now retains only the23 unique frames used by treat/pickup/drop.
13
+ All active samples compare byte-for-byte against the full store. Normal codec
14
+ loading still retains every frame unless explicitly supplied a validated index
15
+ list; requesting an excluded frame fails rather than displaying a substitute.
16
+
17
+ | Resident cropped pixel payload | Bytes |
18
+ | --- | ---: |
19
+ | Before comfort extension | 66,515,834 |
20
+ | Remove unreachable interaction pixels | −4,444,163 |
21
+ | Add tug keys | +291,337 |
22
+ | Current total | 62,363,008 |
23
+
24
+ Thus new poses use about4.15 MB less resident art than the previous source version.
25
+ This is an art-payload measurement, not a guarantee that OS-reported RSS falls by
26
+ the same amount. In three fresh Windows benchmark samples, mean frame time median
27
+ was3.22 ms versus3.29 ms previously; peak process RSS median was262.3 versus263.3
28
+ MiB (small differences, not a meaningful promised performance improvement).
29
+ The same450-frame ball hash still matches exactly. Source measurements live in
30
+ `dist/performance/comfort-{1,2,3}.json` locally.
31
+
32
+ `puppy-comfort-runtime.test.mjs` checks repeated load/render/tug/dispose, allowing
33
+ native gzip callbacks and GC to finish before checking retained arrays. No pet
34
+ buffers or timer handles remain after this bounded test. RSS reclamation remains
35
+ allocator/GC-dependent; dispose is not advertised as an immediate RSS reduction.
36
+
37
+ `node tools/check-comfort.mjs` produces deterministic off-screen dot snapshots
38
+ for all three behaviors under `dist/comfort-qa/`. Snoring is a silent rising dot
39
+ cue, not audio playback. Ball/treat/tug wake a sleeping pet through the existing
40
+ recovery instead of waiting out the long sleep hold. Belly also shortens its hold
41
+ on interaction and finishes the authored roll safely.
42
+
43
+ ## Earlier runtime optimization (also included in0.0.4)
44
+
45
+ The dot-art actor already integrates its own travel, stride and perspective. Its
46
+ former Three.js animal only supplied a position copied from that actor's target;
47
+ mesh deformation and inverse kinematics were not used by the dot renderer. The
48
+ runtime now uses a small position adapter instead. The original 3D implementation
49
+ remains in the working tree for comparison, but is excluded from the npm package;
50
+ Three.js is a development dependency only.
51
+
52
+ Stable Braille conversion skips black/transparent background pixels and packs cell
53
+ masks directly, preserving the original Float32 luminance rounding and thresholds.
54
+ The native frame pump also skips identical output frames while continuing the
55
+ simulation clock. Art, palette, camera and frame rate are unchanged.
56
+
57
+ Median of three paired fresh-process measurements on Windows, Node24.19.0:
58
+
59
+ | Metric | Before | After |
60
+ | --- | ---: | ---: |
61
+ | Asset load | 706.4 ms | 667.8 ms |
62
+ | 1,800 simulation steps | 114.3 ms | 3.2 ms |
63
+ | Mean render time per frame | 7.13 ms | 3.29 ms |
64
+ | Render time p95 | 9.93 ms | 5.77 ms |
65
+ | Peak benchmark-process RSS | 304.8 MiB | 263.3 MiB |
66
+
67
+ The rendering workload is450 frames at480×135 Braille cells (native4K output
68
+ with8px cells), seed731 and the same ball interaction. All six runs produced the
69
+ same SHA-256 text-frame hash:
70
+ `3a296d0a737eaa1d9a5923e3496e8c62b2d5e99fbe871806b907429515597a3d`.
71
+ The independent original-3D/body comparison also matches4,000 actor steps exactly.
72
+ Additional autonomous episodes reuse existing art: scanning, a same-depth patrol,
73
+ rolling, returning to the viewer and occasional playful turning. They are not part
74
+ of the fixed interactive benchmark trajectory.
75
+
76
+ Installed production files, including dependencies, decreased from45,188,203 to
77
+ 19,423,382 bytes. Tarball size decreased from20,615,763 to18,788,415 bytes. These
78
+ are different measures: installation shrank about57%, the tarball about9%.
79
+
80
+ These are local test-process samples, not desktop memory budgets or guarantees.
81
+ RSS includes loading transients, two sequential pet instances and allocator/GC
82
+ behavior. Browser, macOS and Linux performance were not measured in this pass.
83
+ The decoded Q5 art still occupies about66.5 MB; this change does not reduce that
84
+ resident art in that earlier pass; the comfort pass above reduces it further.
85
+
86
+ Reproduce from the development checkout:
87
+
88
+ ```sh
89
+ node --expose-gc tools/benchmark-pet.mjs ./retrieviewer.mjs ./dist/performance/current.json
90
+ npm test
91
+ npm run test:package
92
+ ```
93
+
94
+ The benchmark also accepts the absolute path to an installed older
95
+ `retrieviewer.mjs` as its first argument. It renders off-screen without changing
96
+ desktop settings. Paired results are retained under `dist/performance/` locally.
97
+
98
+ ## Earlier lossless runtime cache reduction
99
+
100
+ The measurements below describe the earlier RVF1 lossless pass, before Q5 art
101
+ and the current optimization. They are retained as historical comparisons, not
102
+ current package or memory figures. See `PUPPY-Q5-COMPARISON.md` for the palette pass.
2
103
 
3
104
  The weight came from 2,341 full-size grayscale frames stored as concatenated
4
105
  320² or 480² rasters, including exact duplicates and black padding. These are
package/README.ko.md ADDED
@@ -0,0 +1,110 @@
1
+ <p align="center"><a href="https://bitefoundry.github.io/retrieviewer/?lang=ko"><img src="https://raw.githubusercontent.com/BiteFoundry/retrieviewer/main/docs/assets/preview.png" alt="흑백 점자 도트로 그린 보송한 리트리버 Retrieviewer" width="960"></a></p>
2
+ <h1 align="center">Retrieviewer</h1>
3
+ <p align="center">일하는 화면에, 작은 친구 하나.</p>
4
+ <p align="center"><a href="https://bitefoundry.github.io/retrieviewer/?lang=ko">직접 만나 보기</a> · <a href="README.md">English</a> · <a href="https://www.npmjs.com/package/@bitefoundry/retrieviewer">npm</a> · <a href="https://github.com/BiteFoundry/retrieviewer/issues">피드백</a></p>
5
+
6
+ 앱 창 위에서 혼자 걷고, 뛰고, 앉아서 쉬는 보송한 점자 도트 리트리버예요.
7
+ 발라당 누워 쉬거나 눈을 감고 잠들기도 해요. 가끔 공·간식·터그로 놀아주세요.
8
+ 나머지 시간에는 각자의 일을 하면 돼요.
9
+ [BiteFoundry](https://github.com/BiteFoundry)가 만듭니다.
10
+ 런타임에는 계정, 모델 API, 텔레메트리가 필요하지 않아요.
11
+
12
+ ## 데려오기
13
+
14
+ **앱 화면이 보이는 컴퓨터**의 터미널에서 실행하세요.
15
+ Node.js/npm이 없다면 [먼저 설치](PREREQUISITES.md)해 주세요.
16
+
17
+ 1. 설치 또는 업데이트:
18
+
19
+ ```sh
20
+ npm install -g @bitefoundry/retrieviewer@latest
21
+ ```
22
+
23
+ 2. 실행한 뒤, 선택창에서 강아지를 붙일 앱 창을 고르세요.
24
+
25
+ ```sh
26
+ retrieviewer desktop
27
+ ```
28
+
29
+ 다음부터는 `retrieviewer desktop`만 실행하면 돼요. 앱을 개조하거나 MCP로
30
+ 그림을 주입하지 않아요. 별도의 투명 네이티브 창으로 따라다니며 일반 클릭은
31
+ 통과시킵니다. 앱 창 단위로 동작하고, 대상 창이 비활성화·최소화되면 숨습니다.
32
+ 자동 시작이나 셸 래퍼는 등록하지 않아요.
33
+
34
+ > **Cursor / VS Code Remote SSH 사용자:** 원격 서버의 터미널이 아닌,
35
+ > Cursor 화면이 떠 있는 **로컬 PC의 PowerShell/터미널**에 설치하세요.
36
+ > 서버의 `DISPLAY=:1`은 서버 쪽 X11 화면을 뜻합니다. VNC로 그 화면을 보고
37
+ > 있다면 그 안에서 쓸 수 있지만, 로컬 Cursor 창에 자동으로 붙는 것은 아니에요.
38
+
39
+ <details>
40
+ <summary>npx로 한 번 써보기 / 명령을 찾을 수 없을 때</summary>
41
+
42
+ ```sh
43
+ npx --yes --package @bitefoundry/retrieviewer@latest retrieviewer desktop
44
+ ```
45
+
46
+ `npx`는 영구 명령 등록이 아니에요. 이후 짧은 명령으로 실행하려면 위의 전역
47
+ 설치를 해주세요. 전역 설치 후에도 command not found라면 npm 실행 경로를
48
+ PATH에 넣어야 해요. [bash·csh/tcsh·Windows별 안내](PREREQUISITES.md#command-not-found).
49
+ 무조건 sudo npm으로 해결하지 마세요.
50
+
51
+ </details>
52
+
53
+ ## Node.js가 없다면
54
+
55
+ - **Windows:** [공식 Node.js 설치 페이지](https://nodejs.org/en/download)의
56
+ Windows 설치 파일을 쓰세요. npm·PATH 추가 옵션을 유지하고 PowerShell을 새로 여세요.
57
+ - **macOS:** 같은 공식 페이지의 macOS 설치 파일을 쓰세요. 다만 강아지의 macOS
58
+ 오버레이는 아직 실기 검증 전인 실험적 지원이에요.
59
+ - **AlmaLinux8:** 관리자와 Node22 모듈 사용을 확인하세요. 기존 Node 스트림이 없는
60
+ 환경이라면 `sudo dnf module install nodejs:22`를 사용할 수 있어요.
61
+ 회사 관리 환경의 모듈을 임의로 reset하거나 바꾸지 마세요.
62
+ - `node --version`, `npm --version`으로 확인하세요. 패키지는 Node20+를 요구하고,
63
+ Alma8에서는 Node22.23.4를 검증했어요. [자세한 의존 도구·PATH 안내](PREREQUISITES.md).
64
+
65
+ ## 지원 환경
66
+
67
+ | 환경 | 상태와 필요 조건 |
68
+ | --- | --- |
69
+ | Windows10/11 x64 | 실제 실행 검증. Node + .NET Framework4 컴파일러. 처음 실행 시 헬퍼 자동 빌드. |
70
+ | Linux X11 | AlmaLinux8 / GLIBC2.28 / Python3.6.8 / Node22.23.4를 격리된 GUI에서 검증. Python3.6+, X11/Xrender/Xext, compositor 필요. |
71
+ | macOS | **실험적 지원. 실제 Mac 실행 미검증.** 기본 osascript/AppKit 사용. |
72
+ | 네이티브 Wayland·화면 없는 SSH | 데스크톱 오버레이 미지원. 세션·보안 설정을 자동 변경하지 않아요. |
73
+
74
+ Linux는 저사양 기본값인 16px 셀·15fps, Windows는 8px 셀·30fps여서 Linux의
75
+ 점이 더 거칠게 보일 수 있어요. 그림 원본은 같은 Q5 자산입니다.
76
+ 무부하·초경량 도구는 아니에요. npm 압축본은 약19MB예요. 이전0.0.3의 작은
77
+ Alma8 테스트에서는 Node RSS가 약180MiB였고 Python 헬퍼는 별도였어요.
78
+ 이 값은 메모리 상한이나0.0.4의 새 Linux GUI 검증 결과는 아니에요.
79
+ [지원 범위와 검증 내용](DESKTOP-PLATFORMS.md).
80
+
81
+ ## 쉽게 종료하고 제거하기
82
+
83
+ 컨트롤에서 종료하거나 `retrieviewer desktop-stop`을 실행하세요.
84
+ 자체 캐시와 패키지를 제거하려면:
85
+
86
+ ```sh
87
+ retrieviewer desktop-remove --yes
88
+ npm uninstall -g @bitefoundry/retrieviewer
89
+ ```
90
+
91
+ 데스크톱 동반자는 에이전트 인증정보·실행 파일·셸 프로필을 수정하지 않아요.
92
+ 별도로 [OpenCode 네이티브 등록](INSTALLING.md)을 했다면 해당 등록을 disconnect한
93
+ 뒤 제거하세요. Codex/Claude/Cursor 등에 MCP만 연결해 내부 그림을 띄우는 기능은 없어요.
94
+
95
+ ## 직접 만든 TUI에 붙이기
96
+
97
+ JS 플러그인과 JSONL 브리지를 제공해요. 화면·입력·시간 제어는 호스트가 소유합니다.
98
+ [English 예제](README.md#put-it-inside-your-own-tui) · [플러그인 수명주기](PLUGIN.md) ·
99
+ [코어와 브리지](EMBEDDING.md) · [기여하기](CONTRIBUTING.md).
100
+
101
+ ## 코드와 그림의 라이선스는 달라요
102
+
103
+ **코드 MIT / 그림 CC BY-SA4.0.** 각 조건에 따른 상업적 재사용이 가능해요.
104
+ 그림은 출처 표시와 해당하는 동일조건변경허락 의무를 지켜주세요.
105
+ 패키지 전체가 MIT인 것은 아닙니다.
106
+ [그림 조건](ASSETS-LICENSE.md) · [필수 크레딧](ATTRIBUTION.md) ·
107
+ [서드파티 고지](THIRD-PARTY-NOTICES.md) · [브랜드 안내](TRADEMARKS.md).
108
+
109
+ AI로 생성한 그림에 자세 정렬·접지·프레임 처리를 적용한 애니메이션입니다.
110
+ 실제 모션 캡처나 자의식이 있는 강아지라고 주장하지 않아요.