@bitefoundry/retrieviewer 0.0.3 → 0.0.5

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 (263) hide show
  1. package/ASSET-PROVENANCE.md +11 -0
  2. package/ASSETS-LICENSE.md +2 -1
  3. package/ATTRIBUTION.md +6 -1
  4. package/COMFORT-ART.md +95 -0
  5. package/DESKTOP-PLATFORMS.md +6 -1
  6. package/INSTALLING.md +4 -0
  7. package/PLUGIN.md +13 -10
  8. package/PREREQUISITES.md +95 -0
  9. package/PUPPY-MEMORY.md +102 -1
  10. package/README.ko.md +116 -0
  11. package/README.md +121 -59
  12. package/RELEASING.md +33 -13
  13. package/THIRD-PARTY-NOTICES.md +5 -3
  14. package/braille.mjs +35 -9
  15. package/examples/live.mjs +2 -2
  16. package/integrations/linux-overlay/overlay.py +8 -2
  17. package/integrations/macos-overlay/overlay.jxa +9 -7
  18. package/integrations/opencode/runtime.mjs +4 -4
  19. package/integrations/opencode/tui.tsx +1 -1
  20. package/integrations/windows-overlay/Overlay.cs +7 -6
  21. package/integrations/windows-overlay/desktop.mjs +2 -1
  22. package/integrations/windows-overlay/protocol.mjs +13 -7
  23. package/integrations/windows-overlay/worker.mjs +1 -1
  24. package/package.json +34 -13
  25. package/puppy-comfort-sprites.mjs +33 -0
  26. package/puppy-companion-comfort-q5.bin.gz +0 -0
  27. package/puppy-companion-comfort.json +140 -0
  28. package/puppy-companion-life.mjs +58 -18
  29. package/puppy-companion-objects.mjs +12 -0
  30. package/puppy-companion-sprites.mjs +4 -2
  31. package/puppy-frame-predictive.mjs +15 -9
  32. package/puppy-frame-store.mjs +2 -2
  33. package/puppy-paper-actions.mjs +4 -2
  34. package/puppy-paper-behaviors.mjs +1 -1
  35. package/puppy-paper-contact.mjs +4 -2
  36. package/puppy-paper-seat.mjs +4 -2
  37. package/puppy-paper-world.mjs +14 -0
  38. package/puppy-paper.mjs +79 -21
  39. package/retrieviewer-cli.mjs +8 -6
  40. package/retrieviewer-plugin.d.mts +1 -1
  41. package/retrieviewer-plugin.mjs +1 -1
  42. package/retrieviewer.d.mts +12 -4
  43. package/retrieviewer.mjs +20 -14
  44. package/locomotion-core.mjs +0 -21
  45. package/locomotion-puppy.animal +0 -0
  46. package/vendor/procedural-animals/package.json +0 -40
  47. package/vendor/procedural-animals/src/animal.js +0 -146
  48. package/vendor/procedural-animals/src/bake.js +0 -51
  49. package/vendor/procedural-animals/src/build.js +0 -81
  50. package/vendor/procedural-animals/src/core/build/coatKit.js +0 -121
  51. package/vendor/procedural-animals/src/core/build/featherCards.js +0 -189
  52. package/vendor/procedural-animals/src/core/build/finEdges.js +0 -85
  53. package/vendor/procedural-animals/src/core/build/furSlope.js +0 -115
  54. package/vendor/procedural-animals/src/core/build/mesh.js +0 -67
  55. package/vendor/procedural-animals/src/core/build/pipeline.js +0 -272
  56. package/vendor/procedural-animals/src/core/build/seams.js +0 -183
  57. package/vendor/procedural-animals/src/core/build/warp.js +0 -112
  58. package/vendor/procedural-animals/src/core/build/weights.js +0 -393
  59. package/vendor/procedural-animals/src/core/math/vec.js +0 -81
  60. package/vendor/procedural-animals/src/core/motion/actions.js +0 -800
  61. package/vendor/procedural-animals/src/core/motion/bird.js +0 -3063
  62. package/vendor/procedural-animals/src/core/motion/birdActions.js +0 -1059
  63. package/vendor/procedural-animals/src/core/motion/common.js +0 -158
  64. package/vendor/procedural-animals/src/core/motion/index.js +0 -22
  65. package/vendor/procedural-animals/src/core/motion/quadruped.js +0 -2875
  66. package/vendor/procedural-animals/src/core/motion/snake.js +0 -1594
  67. package/vendor/procedural-animals/src/core/motion/spider.js +0 -1810
  68. package/vendor/procedural-animals/src/core/motion/swimmer.js +0 -1047
  69. package/vendor/procedural-animals/src/core/motion/swimmerActions.js +0 -613
  70. package/vendor/procedural-animals/src/core/render/animalObject.js +0 -262
  71. package/vendor/procedural-animals/src/core/render/coatMaterial.js +0 -1301
  72. package/vendor/procedural-animals/src/core/render/dqs.js +0 -159
  73. package/vendor/procedural-animals/src/core/render/eyes.js +0 -676
  74. package/vendor/procedural-animals/src/core/render/membranes.js +0 -77
  75. package/vendor/procedural-animals/src/core/render/skeleton.js +0 -41
  76. package/vendor/procedural-animals/src/core/rig/bird.js +0 -327
  77. package/vendor/procedural-animals/src/core/rig/quadruped.js +0 -76
  78. package/vendor/procedural-animals/src/core/rig/rig.js +0 -79
  79. package/vendor/procedural-animals/src/core/rig/snake.js +0 -76
  80. package/vendor/procedural-animals/src/core/rig/spider.js +0 -110
  81. package/vendor/procedural-animals/src/core/rig/swimmer.js +0 -181
  82. package/vendor/procedural-animals/src/core/sdf/eyeSocket.js +0 -53
  83. package/vendor/procedural-animals/src/core/sdf/mesher.js +0 -238
  84. package/vendor/procedural-animals/src/core/sdf/sdf.js +0 -263
  85. package/vendor/procedural-animals/src/index.d.ts +0 -98
  86. package/vendor/procedural-animals/src/index.js +0 -29
  87. package/vendor/procedural-animals/src/registry.js +0 -48
  88. package/vendor/procedural-animals/src/species/bear/behaviour.js +0 -463
  89. package/vendor/procedural-animals/src/species/bear/claws.js +0 -147
  90. package/vendor/procedural-animals/src/species/bear/coat.js +0 -726
  91. package/vendor/procedural-animals/src/species/bear/index.js +0 -139
  92. package/vendor/procedural-animals/src/species/bear/motion.js +0 -112
  93. package/vendor/procedural-animals/src/species/bear/regions.js +0 -78
  94. package/vendor/procedural-animals/src/species/bear/rig.js +0 -112
  95. package/vendor/procedural-animals/src/species/bear/sculpt.js +0 -272
  96. package/vendor/procedural-animals/src/species/boar/behaviour.js +0 -335
  97. package/vendor/procedural-animals/src/species/boar/coat.js +0 -372
  98. package/vendor/procedural-animals/src/species/boar/index.js +0 -110
  99. package/vendor/procedural-animals/src/species/boar/motion.js +0 -85
  100. package/vendor/procedural-animals/src/species/boar/regions.js +0 -88
  101. package/vendor/procedural-animals/src/species/boar/rig.js +0 -111
  102. package/vendor/procedural-animals/src/species/boar/sculpt.js +0 -285
  103. package/vendor/procedural-animals/src/species/cat/behaviour.js +0 -559
  104. package/vendor/procedural-animals/src/species/cat/coat.js +0 -841
  105. package/vendor/procedural-animals/src/species/cat/index.js +0 -211
  106. package/vendor/procedural-animals/src/species/cat/motion.js +0 -101
  107. package/vendor/procedural-animals/src/species/cat/regions.js +0 -82
  108. package/vendor/procedural-animals/src/species/cat/rig.js +0 -100
  109. package/vendor/procedural-animals/src/species/cat/sculpt.js +0 -266
  110. package/vendor/procedural-animals/src/species/cat/whiskers.js +0 -110
  111. package/vendor/procedural-animals/src/species/cheetah/coat.js +0 -427
  112. package/vendor/procedural-animals/src/species/cheetah/index.js +0 -51
  113. package/vendor/procedural-animals/src/species/cheetah/joints.js +0 -3
  114. package/vendor/procedural-animals/src/species/cheetah/motion.js +0 -77
  115. package/vendor/procedural-animals/src/species/cheetah/regions.js +0 -95
  116. package/vendor/procedural-animals/src/species/cheetah/rig.js +0 -66
  117. package/vendor/procedural-animals/src/species/cheetah/sculpt.js +0 -158
  118. package/vendor/procedural-animals/src/species/chicken/coat.js +0 -313
  119. package/vendor/procedural-animals/src/species/chicken/coverts.js +0 -320
  120. package/vendor/procedural-animals/src/species/chicken/index.js +0 -110
  121. package/vendor/procedural-animals/src/species/chicken/motion.js +0 -177
  122. package/vendor/procedural-animals/src/species/chicken/regions.js +0 -66
  123. package/vendor/procedural-animals/src/species/chicken/rig.js +0 -144
  124. package/vendor/procedural-animals/src/species/chicken/sculpt.js +0 -389
  125. package/vendor/procedural-animals/src/species/chicken/wingLook.js +0 -66
  126. package/vendor/procedural-animals/src/species/chicken/wingStack.js +0 -124
  127. package/vendor/procedural-animals/src/species/cow/behaviour.js +0 -521
  128. package/vendor/procedural-animals/src/species/cow/coat.js +0 -465
  129. package/vendor/procedural-animals/src/species/cow/index.js +0 -118
  130. package/vendor/procedural-animals/src/species/cow/motion.js +0 -81
  131. package/vendor/procedural-animals/src/species/cow/regions.js +0 -98
  132. package/vendor/procedural-animals/src/species/cow/rig.js +0 -116
  133. package/vendor/procedural-animals/src/species/cow/sculpt.js +0 -339
  134. package/vendor/procedural-animals/src/species/crow/coat.js +0 -145
  135. package/vendor/procedural-animals/src/species/crow/index.js +0 -70
  136. package/vendor/procedural-animals/src/species/crow/joints.js +0 -3
  137. package/vendor/procedural-animals/src/species/crow/motion.js +0 -101
  138. package/vendor/procedural-animals/src/species/crow/regions.js +0 -50
  139. package/vendor/procedural-animals/src/species/crow/rig.js +0 -83
  140. package/vendor/procedural-animals/src/species/crow/sculpt.js +0 -118
  141. package/vendor/procedural-animals/src/species/deer/behaviour.js +0 -513
  142. package/vendor/procedural-animals/src/species/deer/coat.js +0 -391
  143. package/vendor/procedural-animals/src/species/deer/index.js +0 -106
  144. package/vendor/procedural-animals/src/species/deer/motion.js +0 -97
  145. package/vendor/procedural-animals/src/species/deer/regions.js +0 -60
  146. package/vendor/procedural-animals/src/species/deer/rig.js +0 -124
  147. package/vendor/procedural-animals/src/species/deer/sculpt.js +0 -297
  148. package/vendor/procedural-animals/src/species/dog/behaviour.js +0 -521
  149. package/vendor/procedural-animals/src/species/dog/coat.js +0 -495
  150. package/vendor/procedural-animals/src/species/dog/index.js +0 -144
  151. package/vendor/procedural-animals/src/species/dog/motion.js +0 -118
  152. package/vendor/procedural-animals/src/species/dog/regions.js +0 -61
  153. package/vendor/procedural-animals/src/species/dog/rig.js +0 -129
  154. package/vendor/procedural-animals/src/species/dog/sculpt.js +0 -246
  155. package/vendor/procedural-animals/src/species/eagle/coat.js +0 -250
  156. package/vendor/procedural-animals/src/species/eagle/index.js +0 -76
  157. package/vendor/procedural-animals/src/species/eagle/joints.js +0 -3
  158. package/vendor/procedural-animals/src/species/eagle/motion.js +0 -137
  159. package/vendor/procedural-animals/src/species/eagle/regions.js +0 -57
  160. package/vendor/procedural-animals/src/species/eagle/rig.js +0 -107
  161. package/vendor/procedural-animals/src/species/eagle/sculpt.js +0 -137
  162. package/vendor/procedural-animals/src/species/fish/coat.js +0 -271
  163. package/vendor/procedural-animals/src/species/fish/index.js +0 -88
  164. package/vendor/procedural-animals/src/species/fish/motion.js +0 -92
  165. package/vendor/procedural-animals/src/species/fish/regions.js +0 -27
  166. package/vendor/procedural-animals/src/species/fish/rig.js +0 -143
  167. package/vendor/procedural-animals/src/species/fish/sculpt.js +0 -214
  168. package/vendor/procedural-animals/src/species/fish/variants.js +0 -126
  169. package/vendor/procedural-animals/src/species/fox/behaviour.js +0 -314
  170. package/vendor/procedural-animals/src/species/fox/coat.js +0 -444
  171. package/vendor/procedural-animals/src/species/fox/index.js +0 -120
  172. package/vendor/procedural-animals/src/species/fox/motion.js +0 -81
  173. package/vendor/procedural-animals/src/species/fox/regions.js +0 -59
  174. package/vendor/procedural-animals/src/species/fox/rig.js +0 -91
  175. package/vendor/procedural-animals/src/species/fox/sculpt.js +0 -202
  176. package/vendor/procedural-animals/src/species/frog/behaviour.js +0 -590
  177. package/vendor/procedural-animals/src/species/frog/coat.js +0 -305
  178. package/vendor/procedural-animals/src/species/frog/index.js +0 -97
  179. package/vendor/procedural-animals/src/species/frog/motion.js +0 -69
  180. package/vendor/procedural-animals/src/species/frog/regions.js +0 -46
  181. package/vendor/procedural-animals/src/species/frog/rig.js +0 -156
  182. package/vendor/procedural-animals/src/species/frog/sculpt.js +0 -240
  183. package/vendor/procedural-animals/src/species/goat/behaviour.js +0 -509
  184. package/vendor/procedural-animals/src/species/goat/coat.js +0 -590
  185. package/vendor/procedural-animals/src/species/goat/index.js +0 -149
  186. package/vendor/procedural-animals/src/species/goat/motion.js +0 -95
  187. package/vendor/procedural-animals/src/species/goat/regions.js +0 -98
  188. package/vendor/procedural-animals/src/species/goat/rig.js +0 -181
  189. package/vendor/procedural-animals/src/species/goat/sculpt.js +0 -547
  190. package/vendor/procedural-animals/src/species/horse/coat.js +0 -361
  191. package/vendor/procedural-animals/src/species/horse/coatSeam.js +0 -122
  192. package/vendor/procedural-animals/src/species/horse/index.js +0 -80
  193. package/vendor/procedural-animals/src/species/horse/motion.js +0 -245
  194. package/vendor/procedural-animals/src/species/horse/regions.js +0 -60
  195. package/vendor/procedural-animals/src/species/horse/rig.js +0 -117
  196. package/vendor/procedural-animals/src/species/horse/sculpt.js +0 -316
  197. package/vendor/procedural-animals/src/species/horse/seamWeights.js +0 -272
  198. package/vendor/procedural-animals/src/species/lion/behaviour.js +0 -509
  199. package/vendor/procedural-animals/src/species/lion/coat.js +0 -1016
  200. package/vendor/procedural-animals/src/species/lion/index.js +0 -111
  201. package/vendor/procedural-animals/src/species/lion/motion.js +0 -87
  202. package/vendor/procedural-animals/src/species/lion/regions.js +0 -106
  203. package/vendor/procedural-animals/src/species/lion/rig.js +0 -110
  204. package/vendor/procedural-animals/src/species/lion/sculpt.js +0 -384
  205. package/vendor/procedural-animals/src/species/lion/whiskers.js +0 -132
  206. package/vendor/procedural-animals/src/species/pig/behaviour.js +0 -575
  207. package/vendor/procedural-animals/src/species/pig/coat.js +0 -730
  208. package/vendor/procedural-animals/src/species/pig/ears.js +0 -242
  209. package/vendor/procedural-animals/src/species/pig/index.js +0 -161
  210. package/vendor/procedural-animals/src/species/pig/motion.js +0 -105
  211. package/vendor/procedural-animals/src/species/pig/regions.js +0 -100
  212. package/vendor/procedural-animals/src/species/pig/rig.js +0 -152
  213. package/vendor/procedural-animals/src/species/pig/sculpt.js +0 -382
  214. package/vendor/procedural-animals/src/species/rabbit/behaviour.js +0 -605
  215. package/vendor/procedural-animals/src/species/rabbit/coat.js +0 -285
  216. package/vendor/procedural-animals/src/species/rabbit/index.js +0 -85
  217. package/vendor/procedural-animals/src/species/rabbit/motion.js +0 -85
  218. package/vendor/procedural-animals/src/species/rabbit/regions.js +0 -48
  219. package/vendor/procedural-animals/src/species/rabbit/rig.js +0 -99
  220. package/vendor/procedural-animals/src/species/rabbit/sculpt.js +0 -148
  221. package/vendor/procedural-animals/src/species/rat/behaviour.js +0 -539
  222. package/vendor/procedural-animals/src/species/rat/coat.js +0 -341
  223. package/vendor/procedural-animals/src/species/rat/index.js +0 -111
  224. package/vendor/procedural-animals/src/species/rat/motion.js +0 -90
  225. package/vendor/procedural-animals/src/species/rat/regions.js +0 -92
  226. package/vendor/procedural-animals/src/species/rat/rig.js +0 -112
  227. package/vendor/procedural-animals/src/species/rat/sculpt.js +0 -163
  228. package/vendor/procedural-animals/src/species/rat/whiskers.js +0 -119
  229. package/vendor/procedural-animals/src/species/shark/coat.js +0 -383
  230. package/vendor/procedural-animals/src/species/shark/index.js +0 -104
  231. package/vendor/procedural-animals/src/species/shark/motion.js +0 -69
  232. package/vendor/procedural-animals/src/species/shark/regions.js +0 -34
  233. package/vendor/procedural-animals/src/species/shark/rig.js +0 -194
  234. package/vendor/procedural-animals/src/species/shark/sculpt.js +0 -343
  235. package/vendor/procedural-animals/src/species/shark/variants.js +0 -105
  236. package/vendor/procedural-animals/src/species/sheep/behaviour.js +0 -522
  237. package/vendor/procedural-animals/src/species/sheep/coat.js +0 -529
  238. package/vendor/procedural-animals/src/species/sheep/index.js +0 -152
  239. package/vendor/procedural-animals/src/species/sheep/motion.js +0 -86
  240. package/vendor/procedural-animals/src/species/sheep/neck.js +0 -41
  241. package/vendor/procedural-animals/src/species/sheep/regions.js +0 -62
  242. package/vendor/procedural-animals/src/species/sheep/rig.js +0 -163
  243. package/vendor/procedural-animals/src/species/sheep/sculpt.js +0 -542
  244. package/vendor/procedural-animals/src/species/snake/coat.js +0 -315
  245. package/vendor/procedural-animals/src/species/snake/index.js +0 -73
  246. package/vendor/procedural-animals/src/species/snake/motion.js +0 -51
  247. package/vendor/procedural-animals/src/species/snake/regions.js +0 -51
  248. package/vendor/procedural-animals/src/species/snake/rig.js +0 -108
  249. package/vendor/procedural-animals/src/species/snake/sculpt.js +0 -122
  250. package/vendor/procedural-animals/src/species/spider/coat.js +0 -279
  251. package/vendor/procedural-animals/src/species/spider/index.js +0 -78
  252. package/vendor/procedural-animals/src/species/spider/motion.js +0 -72
  253. package/vendor/procedural-animals/src/species/spider/regions.js +0 -87
  254. package/vendor/procedural-animals/src/species/spider/rig.js +0 -118
  255. package/vendor/procedural-animals/src/species/spider/sculpt.js +0 -182
  256. package/vendor/procedural-animals/src/species/wolf/behaviour.js +0 -160
  257. package/vendor/procedural-animals/src/species/wolf/coat.js +0 -749
  258. package/vendor/procedural-animals/src/species/wolf/index.js +0 -107
  259. package/vendor/procedural-animals/src/species/wolf/motion.js +0 -80
  260. package/vendor/procedural-animals/src/species/wolf/regions.js +0 -57
  261. package/vendor/procedural-animals/src/species/wolf/rig.js +0 -87
  262. package/vendor/procedural-animals/src/species/wolf/sculpt.js +0 -339
  263. package/vendor/procedural-animals/src/worker.js +0 -29
@@ -35,6 +35,17 @@ must be checked again for the final release bytes.
35
35
 
36
36
  ## Remaining limits
37
37
 
38
+ 0.0.5 extends that ninth licensed archive with four sleeping studies generated
39
+ from the same existing puppy identity/pose references, approved by the owner in
40
+ this conversation. COMFORT-ART.md and the comfort metadata record preparation,
41
+ source hashes and size changes. No new downloaded photo/video input is introduced.
42
+
43
+ Later source candidate: belly/sleep reuse existing licensed roll/rest frames.
44
+ Tug adds eight built-in imagegen keys referenced only from the existing generated
45
+ puppy sheet, not new photographs. COMFORT-ART.md records the prompt, source hash
46
+ and fixed-scale preparation. The ninth archive is covered explicitly by
47
+ ASSETS-LICENSE.md and ATTRIBUTION.md. Original sheet PNGs remain outside npm.
48
+
38
49
  Copyrightability of AI-generated expression, the precise derivative-work analysis,
39
50
  and worldwide name clearance are not conclusively determined here. Existing
40
51
  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,95 @@
1
+ # Comfort extension art record
2
+
3
+ ## 0.0.5 sleeping studies
4
+
5
+ Four owner-approved built-in imagegen originals (side, belly, curl, chin), using
6
+ the existing `puppy-behaviors16-sheet.png` identity and `puppy-roll16-v4-sheet.png`
7
+ pose references, extend the same CC BY-SA4.0 comfort archive. No new external
8
+ photo or video input. Source PNGs remain local; metadata records SHA-256 hashes.
9
+ Preparation: `node tools/prepare-sleep-art.mjs` with the preserved local studies.
10
+ It keeps the nine existing tug keys pixel-identical and registers four new static
11
+ keys to ground y=300. There are no duplicated right-facing images: source sampling
12
+ reverses x. The pose is selected once per nap, not switched during a sleeping hold.
13
+ A short rest-to-sleep/rest recovery blend uses existing scratch; the sleeping body
14
+ itself is held, without scale pulsing. The z cue is silent.
15
+
16
+ The archive grows from103549 to129148 bytes (+25599). Packed resident pixels grow
17
+ from291337 to341139 (+49802 bytes). The renderer's mutually exclusive authored
18
+ samplers now share one action-sized RGBA scratch, with320px subviews for smaller
19
+ poses, replacing their separate buffers (2457600 bytes less before tug playback).
20
+ Sleep display is capped at5fps in the desktop pump, while simulation advances
21
+ normally and accepted interactions invalidate the next paint immediately.
22
+ Ink presets only change the native painter color; no RGB sprite families or
23
+ background capture are introduced. Actual RSS depends on host and allocator.
24
+
25
+ The four prompts share: one complete naturally proportioned pale fluffy retriever,
26
+ same bandana, closed eyes, grayscale fine fur on pure black, fixed slightly elevated
27
+ camera, no text/bed/toy/background. Pose clauses: relaxed side sleep; belly-up with
28
+ loosely bent paws and tiny tongue; loose curl with tail near muzzle; chin resting
29
+ on forepaws. Source prompts and PNGs are preserved locally with the approved studies.
30
+
31
+ The following section records the earlier0.0.4 preparation, not the new sleep keys.
32
+
33
+ Source code MIT; generated puppy art and frame data CC BY-SA4.0, retaining the
34
+ credits in ATTRIBUTION.md. This is a development-source record, not new legal
35
+ clearance. No external photograph, YouTube frame or downloaded rig was introduced.
36
+
37
+ ## Assets and preparation
38
+
39
+ - Belly-up: existing v9 `roll-down`, eased to its measured `roll7` edge boundary,
40
+ held without a new bitmap, then completed to the existing seat.
41
+ - Sleep: existing `rest` eyes-closed endpoint. The body does not zoom or squash.
42
+ A small code-drawn rising z cue is silent; no audio engine is installed.
43
+ - Tug: built-in imagegen output from the existing generated
44
+ `puppy-behaviors16-sheet.png` identity reference. Original PNG is preserved at
45
+ `dist/comfort-art/tug-source-v1.png` locally and is not bundled in npm.
46
+ SHA-256: `10fde9dacca5cb45acd68f387e7ed3bcf88cd72cf0f9c4220d31d819db91731e`.
47
+ Eight keys plus the original seat are packed in
48
+ `puppy-companion-comfort-q5.bin.gz`; registration/hash/byte counts are in
49
+ `puppy-companion-comfort.json`. One scale is applied to all poses; only ground
50
+ and body-center translation varies. Playback repeats discrete authored keys,
51
+ not opacity crossfades, whole-body scale animation or a pre-expanded30fps film.
52
+
53
+ Rebuild (development only, Python Pillow plus existing Node codec):
54
+
55
+ ```sh
56
+ node tools/prepare-comfort-art.mjs /absolute/path/to/tug-source-v1.png
57
+ node tools/check-comfort.mjs
58
+ ```
59
+
60
+ Runtime does not use Python/Pillow or image-generation services for these poses.
61
+ The reference/output/preparation originals are preserved; existing runtime art
62
+ archives were not overwritten. Windows off-screen snapshots are diagnostic,
63
+ not final end-user approval. Other-platform live appearance remains unverified.
64
+
65
+ ## Generation prompt (built-in tool)
66
+
67
+ Use case: stylized-concept. Project asset: Retrieviewer tiny tug-play sprite
68
+ sheet, faithful to the input reference puppy. The reference image is identity/style
69
+ reference, not an output to edit. Create ONE2048x1024 sprite sheet: exactly4 equal
70
+ columns and2 equal rows, eight separate full-body isolated sprites on absolutely
71
+ pure black, no borders, no lettering or grid. Every cell is exactly512x512. Same
72
+ adorable fluffy pale golden retriever puppy, realistic soft long fine fur, black
73
+ nose/eyes, small dark bandana as input. Grayscale only. Fixed frontal slightly
74
+ elevated viewpoint matching reference third row seated puppy. Fixed optical focal
75
+ length, same head/body proportions and puppy scale, identical grounded paw
76
+ baselines at y=456 inside every cell and centered body. Body silhouette about290px
77
+ wide. ALL eight cells show the puppy seated with front paws planted in exact same
78
+ place: no jumps, no camera moves, no size changes, no head squashing or body
79
+ inflation. A small pale braided rope tug toy runs horizontally through mouth and
80
+ extends to puppy's right, without human/hand. First cell: puppy curious, mouth just
81
+ about to grip rope. Second: gently closing jaws around rope, naturally opening
82
+ mouth. Third: firm grip, lower jaw and muzzle believable. Fourth: gently leaning
83
+ just the head back8px while rump and paws planted. Fifth: holding same toy, head
84
+ tugs8px left, both eyes focused on toy. Sixth: head tugs8px right (tiny sideways
85
+ pull), ears follow naturally. Seventh: eases back to center and loosens grip.
86
+ Eighth: lets go and faces viewer, happy soft closed mouth; toy end just below nose.
87
+ Make each cell an adjacent pose of the SAME animation with extremely small
88
+ differences. No dot dithering, no ASCII, no pixel blocks; preserve detailed soft
89
+ fur, runtime will convert to fine Braille. No extra limbs, no new collar, no
90
+ cartoony cylinders, no shadows or floor background. Full tail/body entirely inside
91
+ each cell, ample pure-black margin.
92
+
93
+ Observed output is1774×887 rather than the requested size; the preparation script
94
+ extracts equal cells from actual dimensions. The resulting authored keys still
95
+ need visual review for small body/face differences at transitions.
@@ -1,10 +1,15 @@
1
- # Native desktop adapters — 0.0.3
1
+ # Native desktop adapters — 0.0.4
2
2
 
3
3
  Version0.0.3 includes Windows, Linux X11 and experimental macOS adapters. Windows
4
4
  and the AlmaLinux8 X11 baseline have live verification; macOS has no runtime verification.
5
5
  Installation takes two steps: `npm install -g @bitefoundry/retrieviewer`,
6
6
  then `retrieviewer desktop`. No app patch, wrapper, shell profile or auto-start entry.
7
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
+
8
13
  ## Design and status
9
14
 
10
15
  | Platform | Adapter | Current verification boundary |
package/INSTALLING.md CHANGED
@@ -6,6 +6,10 @@ Desktop setup (Node20+; [OS requirements and verification](DESKTOP-PLATFORMS.md)
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
+ Choose the dot ink at launch: `retrieviewer desktop --ink gold`, or
10
+ `retrieviewer desktop --ink dark` on light backgrounds. Default: `cream`.
11
+ Exit an existing companion before changing ink. Presets reuse the same Braille
12
+ mask and native painter, without new color sprites or screen capture.
9
13
  Windows and AlmaLinux8/GLIBC2.28 X11 have live test evidence. macOS support is
10
14
  experimental and not runtime verified; native Wayland is unsupported. Linux needs
11
15
  system Python3.6+, X11/Xrender/Xext and a compositor; Windows needs the .NET
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,116 @@
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
+ 나머지 시간에는 각자의 일을 하면 돼요.
10
+ [BiteFoundry](https://github.com/BiteFoundry)가 만듭니다.
11
+ 런타임에는 계정, 모델 API, 텔레메트리가 필요하지 않아요.
12
+
13
+ ## 데려오기
14
+
15
+ **앱 화면이 보이는 컴퓨터**의 터미널에서 실행하세요.
16
+ Node.js/npm이 없다면 [먼저 설치](PREREQUISITES.md)해 주세요.
17
+
18
+ 1. 설치 또는 업데이트:
19
+
20
+ ```sh
21
+ npm install -g @bitefoundry/retrieviewer@latest
22
+ ```
23
+
24
+ 2. 실행한 뒤, 선택창에서 강아지를 붙일 앱 창을 고르세요.
25
+
26
+ ```sh
27
+ retrieviewer desktop
28
+ ```
29
+
30
+ 다음부터는 `retrieviewer desktop`만 실행하면 돼요. 앱을 개조하거나 MCP로
31
+ 그림을 주입하지 않아요. 별도의 투명 네이티브 창으로 따라다니며 일반 클릭은
32
+ 통과시킵니다. 앱 창 단위로 동작하고, 대상 창이 비활성화·최소화되면 숨습니다.
33
+ 자동 시작이나 셸 래퍼는 등록하지 않아요.
34
+
35
+ 도트 색은 실행할 때 고를 수 있어요. 기본은 크림색이고, 골드색은
36
+ `retrieviewer desktop --ink gold`, 밝은 배경에는
37
+ `retrieviewer desktop --ink dark`를 쓰세요. 실행 중이라면 먼저 종료하고 다시
38
+ 실행하세요. 배경을 캡처하지 않고, 같은 도트에 색만 바꿉니다.
39
+
40
+ > **Cursor / VS Code Remote SSH 사용자:** 원격 서버의 터미널이 아닌,
41
+ > Cursor 화면이 떠 있는 **로컬 PC의 PowerShell/터미널**에 설치하세요.
42
+ > 서버의 `DISPLAY=:1`은 서버 쪽 X11 화면을 뜻합니다. VNC로 그 화면을 보고
43
+ > 있다면 그 안에서 쓸 수 있지만, 로컬 Cursor 창에 자동으로 붙는 것은 아니에요.
44
+
45
+ <details>
46
+ <summary>npx로 한 번 써보기 / 명령을 찾을 수 없을 때</summary>
47
+
48
+ ```sh
49
+ npx --yes --package @bitefoundry/retrieviewer@latest retrieviewer desktop
50
+ ```
51
+
52
+ `npx`는 영구 명령 등록이 아니에요. 이후 짧은 명령으로 실행하려면 위의 전역
53
+ 설치를 해주세요. 전역 설치 후에도 command not found라면 npm 실행 경로를
54
+ PATH에 넣어야 해요. [bash·csh/tcsh·Windows별 안내](PREREQUISITES.md#command-not-found).
55
+ 무조건 sudo npm으로 해결하지 마세요.
56
+
57
+ </details>
58
+
59
+ ## Node.js가 없다면
60
+
61
+ - **Windows:** [공식 Node.js 설치 페이지](https://nodejs.org/en/download)의
62
+ Windows 설치 파일을 쓰세요. npm·PATH 추가 옵션을 유지하고 PowerShell을 새로 여세요.
63
+ - **macOS:** 같은 공식 페이지의 macOS 설치 파일을 쓰세요. 다만 강아지의 macOS
64
+ 오버레이는 아직 실기 검증 전인 실험적 지원이에요.
65
+ - **AlmaLinux8:** 관리자와 Node22 모듈 사용을 확인하세요. 기존 Node 스트림이 없는
66
+ 환경이라면 `sudo dnf module install nodejs:22`를 사용할 수 있어요.
67
+ 회사 관리 환경의 모듈을 임의로 reset하거나 바꾸지 마세요.
68
+ - `node --version`, `npm --version`으로 확인하세요. 패키지는 Node20+를 요구하고,
69
+ Alma8에서는 Node22.23.4를 검증했어요. [자세한 의존 도구·PATH 안내](PREREQUISITES.md).
70
+
71
+ ## 지원 환경
72
+
73
+ | 환경 | 상태와 필요 조건 |
74
+ | --- | --- |
75
+ | Windows10/11 x64 | 실제 실행 검증. Node + .NET Framework4 컴파일러. 처음 실행 시 헬퍼 자동 빌드. |
76
+ | Linux X11 | AlmaLinux8 / GLIBC2.28 / Python3.6.8 / Node22.23.4를 격리된 GUI에서 검증. Python3.6+, X11/Xrender/Xext, compositor 필요. |
77
+ | macOS | **실험적 지원. 실제 Mac 실행 미검증.** 기본 osascript/AppKit 사용. |
78
+ | 네이티브 Wayland·화면 없는 SSH | 데스크톱 오버레이 미지원. 세션·보안 설정을 자동 변경하지 않아요. |
79
+
80
+ Linux는 저사양 기본값인 16px 셀·15fps, Windows는 8px 셀·30fps여서 Linux의
81
+ 점이 더 거칠게 보일 수 있어요. 그림 원본은 같은 Q5 자산입니다.
82
+ 무부하·초경량 도구는 아니에요. npm 압축본은 약19MB예요. 이전0.0.3의 작은
83
+ Alma8 테스트에서는 Node RSS가 약180MiB였고 Python 헬퍼는 별도였어요.
84
+ 이 값은 메모리 상한이나0.0.4의 새 Linux GUI 검증 결과는 아니에요.
85
+ [지원 범위와 검증 내용](DESKTOP-PLATFORMS.md).
86
+
87
+ ## 쉽게 종료하고 제거하기
88
+
89
+ 컨트롤에서 종료하거나 `retrieviewer desktop-stop`을 실행하세요.
90
+ 자체 캐시와 패키지를 제거하려면:
91
+
92
+ ```sh
93
+ retrieviewer desktop-remove --yes
94
+ npm uninstall -g @bitefoundry/retrieviewer
95
+ ```
96
+
97
+ 데스크톱 동반자는 에이전트 인증정보·실행 파일·셸 프로필을 수정하지 않아요.
98
+ 별도로 [OpenCode 네이티브 등록](INSTALLING.md)을 했다면 해당 등록을 disconnect한
99
+ 뒤 제거하세요. Codex/Claude/Cursor 등에 MCP만 연결해 내부 그림을 띄우는 기능은 없어요.
100
+
101
+ ## 직접 만든 TUI에 붙이기
102
+
103
+ JS 플러그인과 JSONL 브리지를 제공해요. 화면·입력·시간 제어는 호스트가 소유합니다.
104
+ [English 예제](README.md#put-it-inside-your-own-tui) · [플러그인 수명주기](PLUGIN.md) ·
105
+ [코어와 브리지](EMBEDDING.md) · [기여하기](CONTRIBUTING.md).
106
+
107
+ ## 코드와 그림의 라이선스는 달라요
108
+
109
+ **코드 MIT / 그림 CC BY-SA4.0.** 각 조건에 따른 상업적 재사용이 가능해요.
110
+ 그림은 출처 표시와 해당하는 동일조건변경허락 의무를 지켜주세요.
111
+ 패키지 전체가 MIT인 것은 아닙니다.
112
+ [그림 조건](ASSETS-LICENSE.md) · [필수 크레딧](ATTRIBUTION.md) ·
113
+ [서드파티 고지](THIRD-PARTY-NOTICES.md) · [브랜드 안내](TRADEMARKS.md).
114
+
115
+ AI로 생성한 그림에 자세 정렬·접지·프레임 처리를 적용한 애니메이션입니다.
116
+ 실제 모션 캡처나 자의식이 있는 강아지라고 주장하지 않아요.