@bitefoundry/retrieviewer 0.0.17 → 0.0.18
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 +11 -0
- package/ASSETS-LICENSE.md +6 -0
- package/ATTRIBUTION.md +8 -0
- package/DESKTOP-PLATFORMS.md +1 -1
- package/INSTALLING.md +2 -1
- package/LICENSE +16 -16
- package/NATIVE-RUNTIME.md +89 -0
- package/PREREQUISITES.md +7 -0
- package/PUPPY-MEMORY.md +11 -0
- package/README.ko.md +10 -1
- package/README.md +11 -1
- package/RELEASING.md +19 -0
- package/THIRD-PARTY-NOTICES.md +8 -0
- package/WINDOWS-COMPANION.md +15 -6
- package/braille.mjs +2 -2
- package/integrations/native-windows/CMakeLists.txt +15 -0
- package/integrations/native-windows/THIRD-PARTY-LICENSES.txt +77 -0
- package/integrations/native-windows/application.manifest +8 -0
- package/integrations/native-windows/bin/win32-x64/retrieviewer-native.exe +0 -0
- package/integrations/native-windows/desktop.mjs +45 -0
- package/integrations/native-windows/host.cpp +84 -0
- package/integrations/native-windows/manifest.json +14 -0
- package/integrations/native-windows/native-control.hpp +41 -0
- package/integrations/native-windows/native-window.hpp +128 -0
- package/integrations/native-windows/runtime.bundle.mjs +4694 -0
- package/integrations/native-windows/runtime.mjs +55 -0
- package/integrations/native-windows/sources.json +23 -0
- package/integrations/purrviewer/ART.md +289 -0
- package/integrations/purrviewer/ASSETS-LICENSE.md +21 -0
- package/integrations/purrviewer/LICENSE +24 -0
- package/integrations/purrviewer/art/ginger.bin.gz +0 -0
- package/integrations/purrviewer/art/ginger.json +1707 -0
- package/integrations/purrviewer/art/ginger.rvz +0 -0
- package/integrations/purrviewer/src/contact.mjs +63 -0
- package/integrations/purrviewer/src/habitat.mjs +41 -0
- package/integrations/purrviewer/src/life.mjs +280 -0
- package/integrations/purrviewer/src/purrviewer-core.mjs +130 -0
- package/integrations/purrviewer/src/purrviewer.mjs +37 -0
- package/integrations/purrviewer/src/walk-cycle.mjs +3 -0
- package/integrations/purrviewer/src/world.mjs +216 -0
- package/integrations/purrviewer/vendor/retrieviewer/LICENSE-CODE +21 -0
- package/integrations/purrviewer/vendor/retrieviewer/braille.mjs +73 -0
- package/integrations/purrviewer/vendor/retrieviewer/puppy-frame-file.mjs +15 -0
- package/integrations/purrviewer/vendor/retrieviewer/puppy-frame-indexed.mjs +78 -0
- package/integrations/purrviewer/vendor/retrieviewer/puppy-frame-predictive.mjs +170 -0
- package/integrations/purrviewer/vendor/retrieviewer/puppy-frame-store.mjs +114 -0
- package/integrations/windows-overlay/desktop.mjs +11 -3
- package/integrations/windows-overlay/worker.mjs +9 -2
- package/package.json +39 -4
- package/puppy-clean.mjs +2 -2
- package/puppy-companion-sprites.mjs +2 -2
- package/puppy-frame-indexed.mjs +2 -2
- package/puppy-paper-actions.mjs +2 -2
- package/puppy-paper-behaviors.mjs +1 -1
- package/puppy-paper-contact.mjs +2 -2
- package/puppy-paper-seat.mjs +2 -2
- package/puppy-paper.mjs +12 -12
- package/retrieviewer-cli.mjs +10 -6
- package/retrieviewer.mjs +13 -4
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import * as std from 'qjs:std';
|
|
2
|
+
import {createPetFromAssets,PET_ASSETS} from '../../retrieviewer.mjs';
|
|
3
|
+
import {createCatFromAssets} from '../purrviewer/src/purrviewer-core.mjs';
|
|
4
|
+
import {createIndexedFrameStore,indexedIndexLength,readIndexedIndex} from '../../puppy-frame-indexed.mjs';
|
|
5
|
+
import {registerFrameStore} from '../../puppy-frame-store.mjs';
|
|
6
|
+
|
|
7
|
+
const config=globalThis.__nativeConfig??{},root=scriptArgs[1],kernel=globalThis.__fast;
|
|
8
|
+
let pet=null,kind=config.pet??'dog',disposed=false;
|
|
9
|
+
const json=name=>{const source=std.loadFile(root+'/'+name);if(source===null)throw Error('Missing pet metadata: '+name);return JSON.parse(source);};
|
|
10
|
+
function provider(){
|
|
11
|
+
const stores=[];
|
|
12
|
+
const release=()=>{for(const store of stores)store.dispose();stores.length=0;};
|
|
13
|
+
const frames=(name,frameIndices)=>{
|
|
14
|
+
const file=std.open(root+'/'+name,'rb');if(!file)throw Error('Missing pet artwork: '+name);
|
|
15
|
+
let owned=true;
|
|
16
|
+
try{
|
|
17
|
+
const read=(at,n)=>{if(file.seek(at,std.SEEK_SET)!==0)throw Error('Invalid art seek');const bytes=new Uint8Array(n);if(file.read(bytes.buffer,0,n)!==n)throw Error('Truncated pet artwork');return bytes;};
|
|
18
|
+
file.seek(0,std.SEEK_END);const size=file.tell(),length=indexedIndexLength(read(0,20)),index=readIndexedIndex(read(0,length),size);
|
|
19
|
+
const store=registerFrameStore(createIndexedFrameStore(index,{read,expand:(b,n)=>kernel.inflate(b,n),close:()=>file.close(),frameIndices,kernel}));
|
|
20
|
+
stores.push(store);owned=false;return store;
|
|
21
|
+
}finally{if(owned)file.close();}
|
|
22
|
+
};
|
|
23
|
+
return {frames,release};
|
|
24
|
+
}
|
|
25
|
+
function make(next){
|
|
26
|
+
if(!['dog','cat'].includes(next))throw Error('Unknown pet');
|
|
27
|
+
const p=provider();
|
|
28
|
+
try{
|
|
29
|
+
if(next==='cat')return createCatFromAssets({seed:config.seed??731},{data:{meta:json('integrations/purrviewer/art/ginger.json'),store:p.frames('integrations/purrviewer/art/ginger.rvz')},release:p.release},kernel);
|
|
30
|
+
const data={info:json(PET_ASSETS.strideInfo),meta:json(PET_ASSETS.stableInfo),cache:p.frames(PET_ASSETS.stride),assets:{}};
|
|
31
|
+
for(const key of ['rear','approach','seat','arrivalSeat','behaviors','actions','interactions','comfort']){
|
|
32
|
+
const base=PET_ASSETS[key],info=json(base+'.json');
|
|
33
|
+
const indices=key==='interactions'?[...new Set(Object.values(info.clips).flatMap(list=>list.flatMap(pair=>Array.from({length:info.samples},(_,s)=>pair*info.samples+s))))]:undefined;
|
|
34
|
+
data.assets[key]={info,bytes:p.frames(base+'-q5.rvz',indices)};
|
|
35
|
+
}
|
|
36
|
+
return createPetFromAssets({seed:config.seed??731,returnStyle:config.returnStyle??'auto'},{data,release:p.release},kernel);
|
|
37
|
+
}catch(error){p.release();throw error;}
|
|
38
|
+
}
|
|
39
|
+
pet=make(kind);
|
|
40
|
+
globalThis.__desktopReady=true;
|
|
41
|
+
globalThis.__desktopFrame=(dt,columns,rows,force=false)=>{
|
|
42
|
+
if(disposed)throw Error('Native pet is disposed');
|
|
43
|
+
pet.step(dt);const options={columns,rows,cellAspect:.5};
|
|
44
|
+
return !force&&pet.needsFrame?.(options)===false?null:pet.frame(options).text;
|
|
45
|
+
};
|
|
46
|
+
globalThis.__desktopInteract=action=>{
|
|
47
|
+
if(kind==='cat')return pet.interact(({ball:'toy',tug:'company',paw:'greet',wall:'greet'})[action]??action);
|
|
48
|
+
return action==='paw'||action==='wall'?pet.notify({kind:'approval',gesture:action}):pet.interact(action);
|
|
49
|
+
};
|
|
50
|
+
globalThis.__desktopSwitchPet=next=>{
|
|
51
|
+
if(!['dog','cat'].includes(next))throw Error('Unknown pet');
|
|
52
|
+
if(next===kind)return true;
|
|
53
|
+
pet.dispose();pet=null;pet=make(next);kind=next;return true;
|
|
54
|
+
};
|
|
55
|
+
globalThis.__desktopDispose=()=>{if(disposed)return;disposed=true;pet?.dispose();pet=null;};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"name": "QuickJS-NG",
|
|
4
|
+
"version": "0.17.0",
|
|
5
|
+
"commit": "6d46d07d04041b40f4f49eaa7fdebe44c314c699",
|
|
6
|
+
"url": "https://github.com/quickjs-ng/quickjs",
|
|
7
|
+
"license": "MIT"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"name": "zlib",
|
|
11
|
+
"version": "1.3.2",
|
|
12
|
+
"commit": "da607da739fa6047df13e66a2af6b8bec7c2a498",
|
|
13
|
+
"url": "https://github.com/madler/zlib",
|
|
14
|
+
"license": "Zlib"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"name": "fflate",
|
|
18
|
+
"version": "0.8.3",
|
|
19
|
+
"url": "https://github.com/101arrowz/fflate",
|
|
20
|
+
"license": "MIT",
|
|
21
|
+
"usage": "portable benchmark baseline; native path uses zlib"
|
|
22
|
+
}
|
|
23
|
+
]
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
# Cat art and motion review
|
|
2
|
+
|
|
3
|
+
Current default: the owner-approved ginger identity and65-key ginger motion
|
|
4
|
+
atlas described below. The tuxedo material is retained as historical source
|
|
5
|
+
and is not fetched by the default renderer.
|
|
6
|
+
|
|
7
|
+
## Initial tuxedo prototype
|
|
8
|
+
|
|
9
|
+
The owner selected a playful, expressive shorthair tuxedo. These are generated
|
|
10
|
+
whole-body raster drawings, not dog sprites with different ears or a 3D skin.
|
|
11
|
+
The visual medium is stable monochrome Braille. No downloaded cat photographs,
|
|
12
|
+
YouTube frames, model weights or paid runtime inference are included.
|
|
13
|
+
|
|
14
|
+
Built-in imagegen produced these project-local sources under `art/source/`:
|
|
15
|
+
|
|
16
|
+
| Sheet | Role | SHA-256 |
|
|
17
|
+
|---|---|---|
|
|
18
|
+
| identity-v1.png | Six representative views/poses; identity input only | 821b762f32a8bf8646323ebaa37ef4b22949b623c5ebe32de801728ac50dd79e |
|
|
19
|
+
| rest-v1.png | Neutral, blink, turn/rise, stretch, loaf, sleep, grooming and bat | e06e3a330e8ff7afa308caa2f9945224c26899a23cc9535fa81da4d9aec63883 |
|
|
20
|
+
| walk-v1.png | Front/rear steps; side cycle rejected as too similar | aff316580fd24823ef891fe9ccc821484d3e45d85efcce55ed5dd8da81ebd8ee |
|
|
21
|
+
| walk-v2.png | Four distinct side-walk candidates | f07f7e02e7bbf26abe26b5ac9a61206d8d1604f655598f9a92b2365a5f65a1ce |
|
|
22
|
+
| pounce-v1.png | Hind-leg loading, launch, flight, forepaw landing, gathering | 9c3fac49b0428f2f7722338007e2cc6229ab8d2e222b3a8a285043b344c341b2 |
|
|
23
|
+
|
|
24
|
+
Prompt set: the same natural young-adult tuxedo, white chin/bib/four socks,
|
|
25
|
+
triangular ears, slender connected feline torso and long tail; readable black
|
|
26
|
+
fur highlights, closed mouth, no bandana/collar/human smile/dog body. Fixed
|
|
27
|
+
camera and world scale per batch, full animal inside cell, black background,
|
|
28
|
+
no props/text. Separate side/front/rear walking phases; rest/groom/sleep studies;
|
|
29
|
+
eight force-bearing pounce poses. The side-walk retry explicitly asks for a
|
|
30
|
+
forward-contact, vertical-support, backward-push and lifted-swing near forepaw.
|
|
31
|
+
Exact sheets remain local; this private repo ships their compact runtime atlas.
|
|
32
|
+
|
|
33
|
+
The source models did not honor square cells on every sheet. The offline
|
|
34
|
+
preparer records actual source boxes, one common scale per batch, connected
|
|
35
|
+
foreground selection, torso proxy translation and a 290px ground proxy.
|
|
36
|
+
It never bbox-fits each pose or warps anatomical parts. A monotone luminance
|
|
37
|
+
curve (gamma0.62) keeps black fur readable on black, followed by the reused
|
|
38
|
+
32-level cropped/predictive Q5 codec. Bright/dark composites are QA, not alpha
|
|
39
|
+
changes in the runtime. One 36-key archive is 273,993 bytes (about268KiB).
|
|
40
|
+
|
|
41
|
+
## Known visual limits
|
|
42
|
+
|
|
43
|
+
This is the first integrated cat, not yet the final Retrieviewer motion standard.
|
|
44
|
+
Side walking still has only four authored keys; support ownership and stroke
|
|
45
|
+
length need a denser measured gait before claiming rendered no-slip contact.
|
|
46
|
+
Directional pose connections and independent sheet proportions need visual
|
|
47
|
+
refinement. The front/rear step material is present, not a rotating camera.
|
|
48
|
+
Groom raster audit is structurally valid but flags entry/exit center changes;
|
|
49
|
+
those are review points, not automatically approved anatomy. Pounce physics is
|
|
50
|
+
one ballistic clock; instantaneous horizontal takeoff/landing speeds are a
|
|
51
|
+
documented kinematic approximation, not force simulation or motion capture.
|
|
52
|
+
|
|
53
|
+
The owner selected CC BY-SA 4.0 for the cat artwork on 2026-10-25.
|
|
54
|
+
See ASSETS-LICENSE.md. Code remains MIT. Generation does not itself establish
|
|
55
|
+
exclusive rights; this grants only rights the maintainer can license.
|
|
56
|
+
|
|
57
|
+
## Ginger identity candidate · 2026-10-25
|
|
58
|
+
|
|
59
|
+
The owner requested a single-color ginger coat after the tuxedo dots failed to
|
|
60
|
+
separate dark-fur highlights from white patches. Built-in imagegen generated
|
|
61
|
+
`art/source/ginger-identity-v1.png` (1942x809), SHA-256
|
|
62
|
+
`af4322edb7d1f001d002b55535369f8dd067cd4621ddd453318251b0caa1d559`.
|
|
63
|
+
No reference images were supplied. The complete prompt is recorded in
|
|
64
|
+
[research/ginger-art-prompt.md](research/ginger-art-prompt.md).
|
|
65
|
+
|
|
66
|
+
Front sit, side stand and curled sleep were extracted at a shared uniform0.30
|
|
67
|
+
scale, translated as whole poses to ground290 on320-square canvases. Actual
|
|
68
|
+
nonuniform source boxes are recorded in `art/ginger-candidate.json`. The source
|
|
69
|
+
has subtle natural coat shading; these are not white bib/sock regions. No body
|
|
70
|
+
parts are warped or recolored from the old tuxedo.
|
|
71
|
+
|
|
72
|
+
The separate candidate uses the existing Q5 codec and stable dot converter.
|
|
73
|
+
Its single archive is21,694bytes. The orange color #f1b66b is applied at paint
|
|
74
|
+
time, so it does not require RGB sprites. A fixed640-square canvas and one
|
|
75
|
+
320-square RGBA scratch buffer are used only when this page is open, with no
|
|
76
|
+
animation timer or runtime model. Aside inspection covered all three buttons
|
|
77
|
+
and real dot output. The existing tuxedo archive and motion are unchanged.
|
|
78
|
+
These are static identity candidates, not a completed ginger animation set or
|
|
79
|
+
an owner-approved final design. Generated-pose proportions still need review
|
|
80
|
+
before authoring the new motion keys. The same CC BY-SA 4.0 artwork terms apply.
|
|
81
|
+
|
|
82
|
+
## Approved ginger motion integration · 2026-10-25
|
|
83
|
+
|
|
84
|
+
The owner approved the ginger identity before generation of these three sheets:
|
|
85
|
+
|
|
86
|
+
| Sheet | Role | SHA-256 |
|
|
87
|
+
|---|---|---|
|
|
88
|
+
| ginger-rest-v1.png | Blink, rise/turn, loaf/curl, stretch, grooming and paw taps | 881152ceae13de8a02a4f05a19f1867f87adf77ca173f77c13467b8f0f74c41a |
|
|
89
|
+
| ginger-walk-v1.png | Eight side phases and four each front/rear | 5355ea0a0320eb42a6fee96d285c5d064dc64b8bc23cdb697271d2814fff578c |
|
|
90
|
+
| ginger-pounce-v1.png | Low stalk/load, launch/flight/reach, fore/hind landing and recovery | ec412d407b13b0a740ac2d9645c00096951f397e8734ed31723219123b3d645e |
|
|
91
|
+
|
|
92
|
+
These use the approved identity sheet as input. Actual dimensions are1254-square
|
|
93
|
+
for rest and1536x1024 for walk/pounce, not an assumed uniform requested grid.
|
|
94
|
+
The offline preparer uses measured source rows/windows, removes isolated neighbor
|
|
95
|
+
components and registers whole poses with common scales per sheet (rest.68,
|
|
96
|
+
walk.80, pounce.64). No torso/head warps or independent per-frame bbox scaling.
|
|
97
|
+
The original sit/stand/curl candidate keys are byte-identical after Q5 decoding,
|
|
98
|
+
covered by an exact regression test. One unused rest stand is excluded.
|
|
99
|
+
|
|
100
|
+
The active archive `art/ginger.bin.gz` has42 reachable keys and322,500bytes.
|
|
101
|
+
It replaces the old atlas at load time, not by retaining both. Color #f1b66b
|
|
102
|
+
is a paint hint on `frame().color`; the RGBA sampling buffer stays grayscale.
|
|
103
|
+
Launch/flight retain8/34px of authored paw clearance in addition to the world
|
|
104
|
+
trajectory. This registration is an authored approximation, not measured COM
|
|
105
|
+
or sole-lock contact. No new motion model, runtime dependency or per-action
|
|
106
|
+
process is introduced. The invisible-toy limitation remains from the prototype.
|
|
107
|
+
|
|
108
|
+
Walk/groom/pounce/land raster audits pass structure. Walk has no numerical review
|
|
109
|
+
warning; the others flag expected pose/center changes and require visual review.
|
|
110
|
+
Their contact sheets and actual Aside toy replay were inspected. Eight side
|
|
111
|
+
keys give more visible limb variety but do not prove exact four-beat feline
|
|
112
|
+
contact or eliminate all view/pose size differences. Those remain prototype
|
|
113
|
+
review items. New action poses have not yet received owner visual acceptance.
|
|
114
|
+
|
|
115
|
+
## Body-size and transition repair · 2026-10-25
|
|
116
|
+
|
|
117
|
+
The oversized sheet-based blink/groom and loaf poses were replaced with
|
|
118
|
+
whole-body edits of approved references. A second multi-pose sheet and a
|
|
119
|
+
narrow sit-based loaf were rejected; neither is in the runtime atlas.
|
|
120
|
+
Selected source files in `art/source/`:
|
|
121
|
+
|
|
122
|
+
| Source | SHA-256 |
|
|
123
|
+
|---|---|
|
|
124
|
+
| ginger-blink-v2.png | 424deac664b4edd7066ad47d1141c8c417c6836c03d64c4b99df8665d7e006c2 |
|
|
125
|
+
| ginger-groom-lift-v2.png | 58c424e1baf5d963c4ab01d106ea742f439b88dc82bfc68975cadf5626685a85 |
|
|
126
|
+
| ginger-groom-lick-v2.png | 7aa83ee99214ba7e51acb713866642b308f85011d9c44e38e8392a6d2f5630c6 |
|
|
127
|
+
| ginger-groom-cheek-v2.png | ce5387af35043cb8507983b9531c5177e9374f45e599c36e374aacf81307caed |
|
|
128
|
+
| ginger-loaf-v3.png | 4808798471951dc664da2a168d31e1dcfa0abbba500fe594dfa8af01fa2dcd11 |
|
|
129
|
+
|
|
130
|
+
Blink/groom output is normalized to the known462x750 seated input canvas,
|
|
131
|
+
not to the changing silhouette. The final loaf edits the registered320-square
|
|
132
|
+
approved curl, with the identity sheet as color reference. Only uniform scaling
|
|
133
|
+
and whole-image translation are applied. Profile stand and turn/stretch use a
|
|
134
|
+
0.88 calibration; lowering0.85, curled entry0.83 and paw-taps0.78 relative to
|
|
135
|
+
their original registration. These are offline authored corrections, not live
|
|
136
|
+
scaling pulses or anatomical warps. Source transforms remain in metadata.
|
|
137
|
+
|
|
138
|
+
The active atlas has40 reachable keys and283,201bytes,39,299 fewer than before.
|
|
139
|
+
Sit/curl and26 other unaffected named keys stay exactly unchanged; an immutable
|
|
140
|
+
decoded hash fixture from113947e verifies this. The overgrown grooming exit and
|
|
141
|
+
redundant closed-loaf key are excluded. Loaded crouch stays grounded; the
|
|
142
|
+
airborne sequence starts at launch. Front rise/sit reuses its own view's keys.
|
|
143
|
+
|
|
144
|
+
Simulation now selects orientation/settlement independently of render frequency.
|
|
145
|
+
Bat/stretch already finish seated and no longer replay stand-to-sit. A front
|
|
146
|
+
arrival uses front sitting keys. Physics units, paths, camera calibration and
|
|
147
|
+
walking/leap/landing drawings remain unchanged. Aside review covered grooming
|
|
148
|
+
and the full toy loop. Raster walk/groom audits pass without review warnings;
|
|
149
|
+
pounce/land retain pose-center warnings. These are not proofs of3D volume or
|
|
150
|
+
sole locking. Hard direction changes remain a prototype review item.
|
|
151
|
+
|
|
152
|
+
## Hind-leg walk and stance repair · 2026-10-25
|
|
153
|
+
|
|
154
|
+
The owner correctly identified nearly static hind legs in the original walk
|
|
155
|
+
sheet. Eight single-pose edits of the approved profile replace only the eight
|
|
156
|
+
side-walk keys. Files `art/source/ginger-step-v2-00.png` through `-07.png` retain
|
|
157
|
+
the original drawings; dimensions/hashes and the shared padded1066x850 canvas
|
|
158
|
+
are recorded per key in runtime metadata. Full prompts and the rejected v3-06
|
|
159
|
+
correction are in research/ginger-walk-prompts.md. Only v2 keys are packed.
|
|
160
|
+
|
|
161
|
+
All keys use the same whole-canvas registration, including a common vertical
|
|
162
|
+
offset. They are NOT grounded by each frame's lowest paw, which would erase
|
|
163
|
+
swing lift. Visual inspection chooses source order0,1,2,7,3,4,5,6. Toe proxies
|
|
164
|
+
are manually identified and snapped to nearby visible source ink. Planned
|
|
165
|
+
prompt coordinates alone are not treated as measured contact evidence.
|
|
166
|
+
|
|
167
|
+
Near-hind support retreats about60.47 source pixels over5/8 cycle. The .60m
|
|
168
|
+
canvas yields stride0.18141m. Ground cruise speeds remain0.525m/s walking and
|
|
169
|
+
0.156m/s creeping; ds/stride changes pose cadence instead of slowing the root.
|
|
170
|
+
The exact stride is generated once into src/walk-cycle.mjs from annotations.
|
|
171
|
+
|
|
172
|
+
Bounded contact rendering adapts the existing MIT Retrieviewer foot-lock idea,
|
|
173
|
+
not its dog anatomy. Simulation owns stance episodes/world anchors, including
|
|
174
|
+
the cyclic seam and left/right mirror. The same fixed camera inverts a visible
|
|
175
|
+
toe onto the ground plane and reprojects that anchor. A local inverse lower-leg
|
|
176
|
+
warp preserves its planted position while authored hips/knees continue moving.
|
|
177
|
+
Pixels at/above y225 remain unchanged. Incompatible supports release at image
|
|
178
|
+
strain1.35 or displacement beyond48px horizontal/18px vertical instead of
|
|
179
|
+
stretching indefinitely. Swing feet are not pinned. One scalar scratch object
|
|
180
|
+
is reused by raster sampling; no extra image buffers or runtime engine added.
|
|
181
|
+
|
|
182
|
+
All32 non-target keys are byte-identical after decoding to the00ba0a0 baseline.
|
|
183
|
+
The archive remains40 keys, now267,251bytes. Walking raster audit passes without
|
|
184
|
+
warnings; actual Aside canvas output was inspected in a paused walking pose
|
|
185
|
+
because full-viewport CDP capture timed out. Support proxies/ink tests and
|
|
186
|
+
world-anchor invariants are stronger than the previous numeric gait-only check,
|
|
187
|
+
but this remains a2.5D raster approximation. Exact contact is not claimed for
|
|
188
|
+
every occluded toe, source transition or front/rear view. Discrete authored-key
|
|
189
|
+
changes and bounded release can still need visual refinement.
|
|
190
|
+
|
|
191
|
+
## Visible feeding and tucked-loaf repair · 2026-10-25
|
|
192
|
+
|
|
193
|
+
Six new single-pose edits add high/mid/lowered feeding, a tongue-contact key,
|
|
194
|
+
a genuine low paws-tucked loaf and its folded-leg transition. Exact prompt set
|
|
195
|
+
and input roles: [ginger-feeding-prompts.md](research/ginger-feeding-prompts.md).
|
|
196
|
+
Source originals stay under ignored art/source; their hashes/transforms are
|
|
197
|
+
recorded in art/ginger.json. Research photos are observation only, not inputs.
|
|
198
|
+
|
|
199
|
+
Feeding uses one family-wide profile-canvas scale and translation; no changing
|
|
200
|
+
silhouette fit. The generated tongue edit contributes only its registered mouth
|
|
201
|
+
rectangle to the closed-mouth drawing, so every non-mouth body/foot pixel is
|
|
202
|
+
identical during licking. Dish/paste are small grayscale shapes painted directly
|
|
203
|
+
into the existing borrowed output; no extra texture or RGB frame family exists.
|
|
204
|
+
The head now has high/mid/low lowering keys and reverses them on recovery.
|
|
205
|
+
The compact loaf uses the approved portrait canvas and a fixed anatomical scale;
|
|
206
|
+
the previous curl-alert key and sleep variants are preserved.
|
|
207
|
+
|
|
208
|
+
The active archive has46 reachable keys and298,245bytes,30,994 more than before.
|
|
209
|
+
All earlier keys remain byte-identical against their existing immutable fixture.
|
|
210
|
+
This is a deliberately small new behavior set, not a claim that every species
|
|
211
|
+
action, camera direction or continuous joint motion has been completed.
|
|
212
|
+
|
|
213
|
+
## Quiet stretch and tail extension · 2026-10-25
|
|
214
|
+
|
|
215
|
+
Six source edits add three connected stretch poses and three tail-tip poses.
|
|
216
|
+
The old faulty stretch extreme is replaced, so there are five net new packed
|
|
217
|
+
keys:51 total. All45 other old keys, including the entire walking/feeding art,
|
|
218
|
+
remain byte-identical to f2f6731, checked by a separate hash fixture with only
|
|
219
|
+
stretch allowlisted. Source prompts/input roles are in
|
|
220
|
+
[ginger-motion-prompts.md](research/ginger-motion-prompts.md). Research photos
|
|
221
|
+
were observation only and never entered the generation calls or runtime assets.
|
|
222
|
+
|
|
223
|
+
The stretch family uses one padded-profile scale and common deep-pose ground
|
|
224
|
+
registration. Beginning/reaching/holding/releasing are separate supported phases;
|
|
225
|
+
their live timing is not a uniformly accelerated movie. Tail sources contribute
|
|
226
|
+
only rectangle(90,248)–(145,291) to the canonical sit. Face, trunk, legs and paws
|
|
227
|
+
stay exact while its tip loosens/lifts/settles. Two finite tail patterns occur
|
|
228
|
+
during observation, with long quiet gaps and no constant dog-like wag loop.
|
|
229
|
+
|
|
230
|
+
Archive321,398bytes is23,153bytes larger than the preceding46-key archive.
|
|
231
|
+
The reconstruction cache still contains two grayscale keys; tint and one RGBA
|
|
232
|
+
output are reused. Walk exact-baseline and new tail raster audits pass without
|
|
233
|
+
warnings. Stretch reach has an expected center-shift review warning between
|
|
234
|
+
the upright stand and lowered-head beginning; its actual connected-body entry,
|
|
235
|
+
deep hold and seated recovery were inspected in the browser, not auto-approved.
|
|
236
|
+
|
|
237
|
+
## Quiet affiliation extension · 2026-10-25
|
|
238
|
+
|
|
239
|
+
Five new packed keys add half/closed eyelids and neutral/left/right whole-body
|
|
240
|
+
kneading poses. Exact prompts and input roles are in
|
|
241
|
+
[ginger-affection-prompts.md](research/ginger-affection-prompts.md). The ordinary
|
|
242
|
+
blink and every one of the51 preceding drawings remain byte-identical to298b7d8;
|
|
243
|
+
a dedicated immutable SHA-256 fixture checks them. Raw source files stay local.
|
|
244
|
+
|
|
245
|
+
Half/closed eyes share one portrait registration and contribute only rectangle
|
|
246
|
+
(133,136)–(190,159) to canonical sit. Other fur, head outline, trunk, tail and
|
|
247
|
+
support pixels cannot shimmer or inflate. Kneading uses one shared folded-body
|
|
248
|
+
registration (225px known canvas height, translation89/106), never separate fits
|
|
249
|
+
to raised paws. The torso/neck follows subtle reciprocal shoulder weight shifts;
|
|
250
|
+
both forepaws visibly release above the opposite pressed pose. Four pairs take
|
|
251
|
+
4.8s, then the supported fold leads directly to compact loaf. The small rounded
|
|
252
|
+
mat is a grayscale prop painted into the same borrowed output, without textures.
|
|
253
|
+
|
|
254
|
+
Archive339,630bytes adds18,232bytes. Eye/knead raster diagnostics pass without
|
|
255
|
+
review warnings; actual caption-free browser playback showed greeting, knead
|
|
256
|
+
entry, alternating forepaws and mat-supported loaf. The gestures are small at
|
|
257
|
+
the default dot scale, especially far away. These are local self-review results,
|
|
258
|
+
not a claim of continuous skeletal animation or owner aesthetic acceptance.
|
|
259
|
+
|
|
260
|
+
## Tower / wheel extension · 2026-10-25
|
|
261
|
+
|
|
262
|
+
Nine new packed keys: eight connected gallop extremes/breakdowns and one upward
|
|
263
|
+
reach. All56 earlier drawings stay exact to b422e7e, checked by a dedicated
|
|
264
|
+
immutable hash fixture. Prompts, selected inputs, the rejected initial trot and
|
|
265
|
+
measured source-box correction are in research/ginger-habitat-prompts.md.
|
|
266
|
+
Both gallop sheets share .337 scale and a nominal cell origin; raised legs and
|
|
267
|
+
suspension are preserved instead of ground-fitting every pose. Actual bottom
|
|
268
|
+
gutter800 replaces an assumed768 to retain extended toes without stray fragments.
|
|
269
|
+
|
|
270
|
+
Tower load/fore-land/gather/recovery reuse their existing force-bearing drawings.
|
|
271
|
+
A real elevated support remains under subsequent sit/greeting/loaf. Furniture
|
|
272
|
+
shares the fixed pinhole transform and paints into the borrowed grayscale buffer.
|
|
273
|
+
No furniture texture, RGB atlas, runtime dependency or additional worker exists.
|
|
274
|
+
Archive391,476bytes adds51,846bytes. Raster audits pass structure with retained
|
|
275
|
+
center/area review warnings from gathered/extended suspension and reach/landing;
|
|
276
|
+
these are explicitly not automatic anatomy approval. Local actual dot review
|
|
277
|
+
covered tower arrival/rest and wheel run/deceleration/departure. Curved tread
|
|
278
|
+
sole contact is an approximation and has not been numerically locked per toe.
|
|
279
|
+
|
|
280
|
+
## Lightweight runtime and public artwork terms · 2026-10-25
|
|
281
|
+
|
|
282
|
+
The unchanged simulation/render body now lives in src/purrviewer-core.mjs.
|
|
283
|
+
createCatFromAssets accepts a lifetime-owned store and optional raster kernel;
|
|
284
|
+
the existing browser/Node loader remains the default. Native Windows shares
|
|
285
|
+
this core and reads individually compressed Q5 crops from disk. No behavior
|
|
286
|
+
keys, timings, anatomy or source pixels were changed. The owner explicitly
|
|
287
|
+
chose CC BY-SA 4.0 for the bundled ginger artwork, including its metadata and
|
|
288
|
+
alternative encodings; code remains MIT. Research photographs and raw source
|
|
289
|
+
sheets are not included in the public package.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Purrviewer artwork — CC BY-SA 4.0
|
|
2
|
+
|
|
3
|
+
The owner-approved ginger-cat drawings, art/ginger.json pose and registration
|
|
4
|
+
metadata, art/ginger.bin.gz and alternative encodings (including ginger.rvz)
|
|
5
|
+
are licensed under Creative Commons Attribution-ShareAlike 4.0 International.
|
|
6
|
+
|
|
7
|
+
- License: https://creativecommons.org/licenses/by-sa/4.0/
|
|
8
|
+
- Legal text: https://creativecommons.org/licenses/by-sa/4.0/legalcode.en
|
|
9
|
+
- Creator: BiteFoundry project maintainer (GitHub shinick-han / npm shinick), 2026.
|
|
10
|
+
- Source: https://github.com/BiteFoundry/retrieviewer
|
|
11
|
+
- Creation: AI-generated whole-body ginger-cat poses; programmatic registration,
|
|
12
|
+
contact adjustment, interpolation and Q5 grayscale quantization. Retained
|
|
13
|
+
research photographs were observation references, not generation inputs or
|
|
14
|
+
bundled pixels. The initial tuxedo prototype is not part of this release.
|
|
15
|
+
|
|
16
|
+
The maintainer selected these terms on 2026-10-25. This grants only rights the
|
|
17
|
+
maintainer can license, without claiming exclusive rights in all generated
|
|
18
|
+
pixels. Retain attribution, link the license, and identify changes. Shared
|
|
19
|
+
adaptations use the same or a compatible license; commercial reuse is allowed.
|
|
20
|
+
The linked legal text controls. Code is separately MIT under LICENSE; bundling
|
|
21
|
+
independent software with this artwork does not relicense that software.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 BiteFoundry contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
|
23
|
+
This license covers code. Cat artwork is not included in this MIT grant; see
|
|
24
|
+
ART.md. Vendored Retrieviewer code retains its original MIT notice.
|
|
Binary file
|