@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.
- package/ASSET-PROVENANCE.md +6 -0
- package/ASSETS-LICENSE.md +2 -1
- package/ATTRIBUTION.md +6 -1
- package/COMFORT-ART.md +65 -0
- package/DESKTOP-PLATFORMS.md +75 -0
- package/INSTALLING.md +8 -5
- package/PLUGIN.md +13 -10
- package/PREREQUISITES.md +95 -0
- package/PUPPY-MEMORY.md +102 -1
- package/README.ko.md +110 -0
- package/README.md +119 -58
- package/RELEASING.md +27 -14
- package/THIRD-PARTY-NOTICES.md +5 -3
- package/braille.mjs +35 -9
- package/examples/live.mjs +2 -2
- package/integrations/desktop/platform.mjs +27 -0
- package/integrations/linux-overlay/README.md +83 -0
- package/integrations/linux-overlay/overlay.py +1094 -0
- package/integrations/macos-overlay/README.md +83 -0
- package/integrations/macos-overlay/overlay.jxa +639 -0
- package/integrations/opencode/runtime.mjs +4 -4
- package/integrations/opencode/tui.tsx +1 -1
- package/integrations/windows-overlay/Overlay.cs +4 -4
- package/integrations/windows-overlay/desktop.mjs +40 -8
- package/integrations/windows-overlay/protocol.mjs +11 -7
- package/integrations/windows-overlay/worker.mjs +13 -7
- package/package.json +41 -14
- package/puppy-comfort-sprites.mjs +25 -0
- package/puppy-companion-comfort-q5.bin.gz +0 -0
- package/puppy-companion-comfort.json +77 -0
- package/puppy-companion-life.mjs +49 -16
- package/puppy-companion-objects.mjs +12 -0
- package/puppy-frame-predictive.mjs +15 -9
- package/puppy-frame-store.mjs +2 -2
- package/puppy-paper-world.mjs +14 -0
- package/puppy-paper.mjs +65 -14
- package/retrieviewer-cli.mjs +10 -3
- package/retrieviewer-plugin.d.mts +1 -1
- package/retrieviewer-plugin.mjs +1 -1
- package/retrieviewer.d.mts +10 -4
- package/retrieviewer.mjs +20 -14
- package/locomotion-core.mjs +0 -21
- package/locomotion-puppy.animal +0 -0
- package/vendor/procedural-animals/package.json +0 -40
- package/vendor/procedural-animals/src/animal.js +0 -146
- package/vendor/procedural-animals/src/bake.js +0 -51
- package/vendor/procedural-animals/src/build.js +0 -81
- package/vendor/procedural-animals/src/core/build/coatKit.js +0 -121
- package/vendor/procedural-animals/src/core/build/featherCards.js +0 -189
- package/vendor/procedural-animals/src/core/build/finEdges.js +0 -85
- package/vendor/procedural-animals/src/core/build/furSlope.js +0 -115
- package/vendor/procedural-animals/src/core/build/mesh.js +0 -67
- package/vendor/procedural-animals/src/core/build/pipeline.js +0 -272
- package/vendor/procedural-animals/src/core/build/seams.js +0 -183
- package/vendor/procedural-animals/src/core/build/warp.js +0 -112
- package/vendor/procedural-animals/src/core/build/weights.js +0 -393
- package/vendor/procedural-animals/src/core/math/vec.js +0 -81
- package/vendor/procedural-animals/src/core/motion/actions.js +0 -800
- package/vendor/procedural-animals/src/core/motion/bird.js +0 -3063
- package/vendor/procedural-animals/src/core/motion/birdActions.js +0 -1059
- package/vendor/procedural-animals/src/core/motion/common.js +0 -158
- package/vendor/procedural-animals/src/core/motion/index.js +0 -22
- package/vendor/procedural-animals/src/core/motion/quadruped.js +0 -2875
- package/vendor/procedural-animals/src/core/motion/snake.js +0 -1594
- package/vendor/procedural-animals/src/core/motion/spider.js +0 -1810
- package/vendor/procedural-animals/src/core/motion/swimmer.js +0 -1047
- package/vendor/procedural-animals/src/core/motion/swimmerActions.js +0 -613
- package/vendor/procedural-animals/src/core/render/animalObject.js +0 -262
- package/vendor/procedural-animals/src/core/render/coatMaterial.js +0 -1301
- package/vendor/procedural-animals/src/core/render/dqs.js +0 -159
- package/vendor/procedural-animals/src/core/render/eyes.js +0 -676
- package/vendor/procedural-animals/src/core/render/membranes.js +0 -77
- package/vendor/procedural-animals/src/core/render/skeleton.js +0 -41
- package/vendor/procedural-animals/src/core/rig/bird.js +0 -327
- package/vendor/procedural-animals/src/core/rig/quadruped.js +0 -76
- package/vendor/procedural-animals/src/core/rig/rig.js +0 -79
- package/vendor/procedural-animals/src/core/rig/snake.js +0 -76
- package/vendor/procedural-animals/src/core/rig/spider.js +0 -110
- package/vendor/procedural-animals/src/core/rig/swimmer.js +0 -181
- package/vendor/procedural-animals/src/core/sdf/eyeSocket.js +0 -53
- package/vendor/procedural-animals/src/core/sdf/mesher.js +0 -238
- package/vendor/procedural-animals/src/core/sdf/sdf.js +0 -263
- package/vendor/procedural-animals/src/index.d.ts +0 -98
- package/vendor/procedural-animals/src/index.js +0 -29
- package/vendor/procedural-animals/src/registry.js +0 -48
- package/vendor/procedural-animals/src/species/bear/behaviour.js +0 -463
- package/vendor/procedural-animals/src/species/bear/claws.js +0 -147
- package/vendor/procedural-animals/src/species/bear/coat.js +0 -726
- package/vendor/procedural-animals/src/species/bear/index.js +0 -139
- package/vendor/procedural-animals/src/species/bear/motion.js +0 -112
- package/vendor/procedural-animals/src/species/bear/regions.js +0 -78
- package/vendor/procedural-animals/src/species/bear/rig.js +0 -112
- package/vendor/procedural-animals/src/species/bear/sculpt.js +0 -272
- package/vendor/procedural-animals/src/species/boar/behaviour.js +0 -335
- package/vendor/procedural-animals/src/species/boar/coat.js +0 -372
- package/vendor/procedural-animals/src/species/boar/index.js +0 -110
- package/vendor/procedural-animals/src/species/boar/motion.js +0 -85
- package/vendor/procedural-animals/src/species/boar/regions.js +0 -88
- package/vendor/procedural-animals/src/species/boar/rig.js +0 -111
- package/vendor/procedural-animals/src/species/boar/sculpt.js +0 -285
- package/vendor/procedural-animals/src/species/cat/behaviour.js +0 -559
- package/vendor/procedural-animals/src/species/cat/coat.js +0 -841
- package/vendor/procedural-animals/src/species/cat/index.js +0 -211
- package/vendor/procedural-animals/src/species/cat/motion.js +0 -101
- package/vendor/procedural-animals/src/species/cat/regions.js +0 -82
- package/vendor/procedural-animals/src/species/cat/rig.js +0 -100
- package/vendor/procedural-animals/src/species/cat/sculpt.js +0 -266
- package/vendor/procedural-animals/src/species/cat/whiskers.js +0 -110
- package/vendor/procedural-animals/src/species/cheetah/coat.js +0 -427
- package/vendor/procedural-animals/src/species/cheetah/index.js +0 -51
- package/vendor/procedural-animals/src/species/cheetah/joints.js +0 -3
- package/vendor/procedural-animals/src/species/cheetah/motion.js +0 -77
- package/vendor/procedural-animals/src/species/cheetah/regions.js +0 -95
- package/vendor/procedural-animals/src/species/cheetah/rig.js +0 -66
- package/vendor/procedural-animals/src/species/cheetah/sculpt.js +0 -158
- package/vendor/procedural-animals/src/species/chicken/coat.js +0 -313
- package/vendor/procedural-animals/src/species/chicken/coverts.js +0 -320
- package/vendor/procedural-animals/src/species/chicken/index.js +0 -110
- package/vendor/procedural-animals/src/species/chicken/motion.js +0 -177
- package/vendor/procedural-animals/src/species/chicken/regions.js +0 -66
- package/vendor/procedural-animals/src/species/chicken/rig.js +0 -144
- package/vendor/procedural-animals/src/species/chicken/sculpt.js +0 -389
- package/vendor/procedural-animals/src/species/chicken/wingLook.js +0 -66
- package/vendor/procedural-animals/src/species/chicken/wingStack.js +0 -124
- package/vendor/procedural-animals/src/species/cow/behaviour.js +0 -521
- package/vendor/procedural-animals/src/species/cow/coat.js +0 -465
- package/vendor/procedural-animals/src/species/cow/index.js +0 -118
- package/vendor/procedural-animals/src/species/cow/motion.js +0 -81
- package/vendor/procedural-animals/src/species/cow/regions.js +0 -98
- package/vendor/procedural-animals/src/species/cow/rig.js +0 -116
- package/vendor/procedural-animals/src/species/cow/sculpt.js +0 -339
- package/vendor/procedural-animals/src/species/crow/coat.js +0 -145
- package/vendor/procedural-animals/src/species/crow/index.js +0 -70
- package/vendor/procedural-animals/src/species/crow/joints.js +0 -3
- package/vendor/procedural-animals/src/species/crow/motion.js +0 -101
- package/vendor/procedural-animals/src/species/crow/regions.js +0 -50
- package/vendor/procedural-animals/src/species/crow/rig.js +0 -83
- package/vendor/procedural-animals/src/species/crow/sculpt.js +0 -118
- package/vendor/procedural-animals/src/species/deer/behaviour.js +0 -513
- package/vendor/procedural-animals/src/species/deer/coat.js +0 -391
- package/vendor/procedural-animals/src/species/deer/index.js +0 -106
- package/vendor/procedural-animals/src/species/deer/motion.js +0 -97
- package/vendor/procedural-animals/src/species/deer/regions.js +0 -60
- package/vendor/procedural-animals/src/species/deer/rig.js +0 -124
- package/vendor/procedural-animals/src/species/deer/sculpt.js +0 -297
- package/vendor/procedural-animals/src/species/dog/behaviour.js +0 -521
- package/vendor/procedural-animals/src/species/dog/coat.js +0 -495
- package/vendor/procedural-animals/src/species/dog/index.js +0 -144
- package/vendor/procedural-animals/src/species/dog/motion.js +0 -118
- package/vendor/procedural-animals/src/species/dog/regions.js +0 -61
- package/vendor/procedural-animals/src/species/dog/rig.js +0 -129
- package/vendor/procedural-animals/src/species/dog/sculpt.js +0 -246
- package/vendor/procedural-animals/src/species/eagle/coat.js +0 -250
- package/vendor/procedural-animals/src/species/eagle/index.js +0 -76
- package/vendor/procedural-animals/src/species/eagle/joints.js +0 -3
- package/vendor/procedural-animals/src/species/eagle/motion.js +0 -137
- package/vendor/procedural-animals/src/species/eagle/regions.js +0 -57
- package/vendor/procedural-animals/src/species/eagle/rig.js +0 -107
- package/vendor/procedural-animals/src/species/eagle/sculpt.js +0 -137
- package/vendor/procedural-animals/src/species/fish/coat.js +0 -271
- package/vendor/procedural-animals/src/species/fish/index.js +0 -88
- package/vendor/procedural-animals/src/species/fish/motion.js +0 -92
- package/vendor/procedural-animals/src/species/fish/regions.js +0 -27
- package/vendor/procedural-animals/src/species/fish/rig.js +0 -143
- package/vendor/procedural-animals/src/species/fish/sculpt.js +0 -214
- package/vendor/procedural-animals/src/species/fish/variants.js +0 -126
- package/vendor/procedural-animals/src/species/fox/behaviour.js +0 -314
- package/vendor/procedural-animals/src/species/fox/coat.js +0 -444
- package/vendor/procedural-animals/src/species/fox/index.js +0 -120
- package/vendor/procedural-animals/src/species/fox/motion.js +0 -81
- package/vendor/procedural-animals/src/species/fox/regions.js +0 -59
- package/vendor/procedural-animals/src/species/fox/rig.js +0 -91
- package/vendor/procedural-animals/src/species/fox/sculpt.js +0 -202
- package/vendor/procedural-animals/src/species/frog/behaviour.js +0 -590
- package/vendor/procedural-animals/src/species/frog/coat.js +0 -305
- package/vendor/procedural-animals/src/species/frog/index.js +0 -97
- package/vendor/procedural-animals/src/species/frog/motion.js +0 -69
- package/vendor/procedural-animals/src/species/frog/regions.js +0 -46
- package/vendor/procedural-animals/src/species/frog/rig.js +0 -156
- package/vendor/procedural-animals/src/species/frog/sculpt.js +0 -240
- package/vendor/procedural-animals/src/species/goat/behaviour.js +0 -509
- package/vendor/procedural-animals/src/species/goat/coat.js +0 -590
- package/vendor/procedural-animals/src/species/goat/index.js +0 -149
- package/vendor/procedural-animals/src/species/goat/motion.js +0 -95
- package/vendor/procedural-animals/src/species/goat/regions.js +0 -98
- package/vendor/procedural-animals/src/species/goat/rig.js +0 -181
- package/vendor/procedural-animals/src/species/goat/sculpt.js +0 -547
- package/vendor/procedural-animals/src/species/horse/coat.js +0 -361
- package/vendor/procedural-animals/src/species/horse/coatSeam.js +0 -122
- package/vendor/procedural-animals/src/species/horse/index.js +0 -80
- package/vendor/procedural-animals/src/species/horse/motion.js +0 -245
- package/vendor/procedural-animals/src/species/horse/regions.js +0 -60
- package/vendor/procedural-animals/src/species/horse/rig.js +0 -117
- package/vendor/procedural-animals/src/species/horse/sculpt.js +0 -316
- package/vendor/procedural-animals/src/species/horse/seamWeights.js +0 -272
- package/vendor/procedural-animals/src/species/lion/behaviour.js +0 -509
- package/vendor/procedural-animals/src/species/lion/coat.js +0 -1016
- package/vendor/procedural-animals/src/species/lion/index.js +0 -111
- package/vendor/procedural-animals/src/species/lion/motion.js +0 -87
- package/vendor/procedural-animals/src/species/lion/regions.js +0 -106
- package/vendor/procedural-animals/src/species/lion/rig.js +0 -110
- package/vendor/procedural-animals/src/species/lion/sculpt.js +0 -384
- package/vendor/procedural-animals/src/species/lion/whiskers.js +0 -132
- package/vendor/procedural-animals/src/species/pig/behaviour.js +0 -575
- package/vendor/procedural-animals/src/species/pig/coat.js +0 -730
- package/vendor/procedural-animals/src/species/pig/ears.js +0 -242
- package/vendor/procedural-animals/src/species/pig/index.js +0 -161
- package/vendor/procedural-animals/src/species/pig/motion.js +0 -105
- package/vendor/procedural-animals/src/species/pig/regions.js +0 -100
- package/vendor/procedural-animals/src/species/pig/rig.js +0 -152
- package/vendor/procedural-animals/src/species/pig/sculpt.js +0 -382
- package/vendor/procedural-animals/src/species/rabbit/behaviour.js +0 -605
- package/vendor/procedural-animals/src/species/rabbit/coat.js +0 -285
- package/vendor/procedural-animals/src/species/rabbit/index.js +0 -85
- package/vendor/procedural-animals/src/species/rabbit/motion.js +0 -85
- package/vendor/procedural-animals/src/species/rabbit/regions.js +0 -48
- package/vendor/procedural-animals/src/species/rabbit/rig.js +0 -99
- package/vendor/procedural-animals/src/species/rabbit/sculpt.js +0 -148
- package/vendor/procedural-animals/src/species/rat/behaviour.js +0 -539
- package/vendor/procedural-animals/src/species/rat/coat.js +0 -341
- package/vendor/procedural-animals/src/species/rat/index.js +0 -111
- package/vendor/procedural-animals/src/species/rat/motion.js +0 -90
- package/vendor/procedural-animals/src/species/rat/regions.js +0 -92
- package/vendor/procedural-animals/src/species/rat/rig.js +0 -112
- package/vendor/procedural-animals/src/species/rat/sculpt.js +0 -163
- package/vendor/procedural-animals/src/species/rat/whiskers.js +0 -119
- package/vendor/procedural-animals/src/species/shark/coat.js +0 -383
- package/vendor/procedural-animals/src/species/shark/index.js +0 -104
- package/vendor/procedural-animals/src/species/shark/motion.js +0 -69
- package/vendor/procedural-animals/src/species/shark/regions.js +0 -34
- package/vendor/procedural-animals/src/species/shark/rig.js +0 -194
- package/vendor/procedural-animals/src/species/shark/sculpt.js +0 -343
- package/vendor/procedural-animals/src/species/shark/variants.js +0 -105
- package/vendor/procedural-animals/src/species/sheep/behaviour.js +0 -522
- package/vendor/procedural-animals/src/species/sheep/coat.js +0 -529
- package/vendor/procedural-animals/src/species/sheep/index.js +0 -152
- package/vendor/procedural-animals/src/species/sheep/motion.js +0 -86
- package/vendor/procedural-animals/src/species/sheep/neck.js +0 -41
- package/vendor/procedural-animals/src/species/sheep/regions.js +0 -62
- package/vendor/procedural-animals/src/species/sheep/rig.js +0 -163
- package/vendor/procedural-animals/src/species/sheep/sculpt.js +0 -542
- package/vendor/procedural-animals/src/species/snake/coat.js +0 -315
- package/vendor/procedural-animals/src/species/snake/index.js +0 -73
- package/vendor/procedural-animals/src/species/snake/motion.js +0 -51
- package/vendor/procedural-animals/src/species/snake/regions.js +0 -51
- package/vendor/procedural-animals/src/species/snake/rig.js +0 -108
- package/vendor/procedural-animals/src/species/snake/sculpt.js +0 -122
- package/vendor/procedural-animals/src/species/spider/coat.js +0 -279
- package/vendor/procedural-animals/src/species/spider/index.js +0 -78
- package/vendor/procedural-animals/src/species/spider/motion.js +0 -72
- package/vendor/procedural-animals/src/species/spider/regions.js +0 -87
- package/vendor/procedural-animals/src/species/spider/rig.js +0 -118
- package/vendor/procedural-animals/src/species/spider/sculpt.js +0 -182
- package/vendor/procedural-animals/src/species/wolf/behaviour.js +0 -160
- package/vendor/procedural-animals/src/species/wolf/coat.js +0 -749
- package/vendor/procedural-animals/src/species/wolf/index.js +0 -107
- package/vendor/procedural-animals/src/species/wolf/motion.js +0 -80
- package/vendor/procedural-animals/src/species/wolf/regions.js +0 -57
- package/vendor/procedural-animals/src/species/wolf/rig.js +0 -87
- package/vendor/procedural-animals/src/species/wolf/sculpt.js +0 -339
- package/vendor/procedural-animals/src/worker.js +0 -29
package/ASSET-PROVENANCE.md
CHANGED
|
@@ -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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
|
66
|
-
see [
|
|
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
|
|
1
|
+
# Retrieviewer plugin
|
|
2
2
|
|
|
3
|
-
An autonomous Braille dog, embedded in **your pane**.
|
|
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
|
|
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-
|
|
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
|
-
`
|
|
26
|
-
|
|
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
|
|
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.
|
|
109
|
-
|
|
110
|
-
|
|
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).
|
package/PREREQUISITES.md
ADDED
|
@@ -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
|
-
#
|
|
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
|
+
실제 모션 캡처나 자의식이 있는 강아지라고 주장하지 않아요.
|