@bitefoundry/retrieviewer 0.0.7 → 0.0.8
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/PUPPY-MEMORY.md +19 -0
- package/RELEASING.md +11 -10
- package/integrations/macos-overlay/overlay.jxa +24 -24
- package/integrations/windows-overlay/Overlay.cs +17 -17
- package/package.json +1 -1
- package/pet-q5-manifest.json +16 -8
- package/puppy-paper-behaviors-q5.bin.gz +0 -0
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
|
+
0.0.8 replaces the watch-body joins with offline coordinate registration of
|
|
39
|
+
the same single source drawing per sample. Four paw patches and a shared ground
|
|
40
|
+
plane constrain the lower-body warp; original head/neck pixels remain exact.
|
|
41
|
+
No new image, photograph or video reference is introduced; CC BY-SA4.0 and
|
|
42
|
+
existing attribution remain unchanged.
|
|
43
|
+
|
|
38
44
|
0.0.6 re-registers only the36 watch samples of the existing behavior archive.
|
|
39
45
|
The existing seated body/paws stay fixed while the authored head turns; no new
|
|
40
46
|
image/photo/video reference is introduced. The offline preparation and source
|
package/PUPPY-MEMORY.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# Runtime weight and performance
|
|
2
2
|
|
|
3
|
+
## Single-source watch registration and English desktop UI (0.0.8)
|
|
4
|
+
|
|
5
|
+
The0.0.7 neck fix still joined a different torso to the lower legs. This pass
|
|
6
|
+
removes that compositing entirely. Each watch sample uses one original drawing,
|
|
7
|
+
with a smooth inverse-coordinate field below y230 registering four paw patches
|
|
8
|
+
and the ground plane. Resampling always reads the original, never a previously
|
|
9
|
+
warped image. Head/jaw/neck/bandana pixels through y229 remain exact; endpoints
|
|
10
|
+
share the seated key. All36 watch samples have four-paw residual checks (<=2
|
|
11
|
+
source pixels) and a common floor test, in addition to the original neck digest.
|
|
12
|
+
Pillow/NumPy are offline authoring tools only. The shipped runtime has no new
|
|
13
|
+
dependency, warp pass, image buffer, frame count or process. The behavior archive
|
|
14
|
+
is9,369 compressed bytes smaller than0.0.7.
|
|
15
|
+
|
|
16
|
+
Desktop picker, controls, tray/menu and statuses use English. Windows/macOS
|
|
17
|
+
toolbars have64px buttons for English labels; existing Linux labels remain.
|
|
18
|
+
Windows native IPC/lifecycle tests and source-label WinForms layout checks at
|
|
19
|
+
100%/200% cover this change. macOS has syntax/core/layout checks, not a real Mac
|
|
20
|
+
GUI test. Website EN/KO selection and user-supplied window titles are unchanged.
|
|
21
|
+
|
|
3
22
|
## Watch neck seam repair (0.0.7)
|
|
4
23
|
|
|
5
24
|
The0.0.6 watch registration moved the entire head/neck8px and dissolved it into
|
package/RELEASING.md
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
# Retrieviewer 0.0.
|
|
2
|
-
|
|
3
|
-
Current target: `@bitefoundry/retrieviewer@0.0.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
# Retrieviewer 0.0.8 release process
|
|
2
|
+
|
|
3
|
+
Current target: `@bitefoundry/retrieviewer@0.0.8`, public `latest`, continuing the
|
|
4
|
+
approved npm release workflow. The owner requested a quick leg/body alignment
|
|
5
|
+
repair and English desktop messages on2026-10-23. Watch preparation now registers
|
|
6
|
+
four paws using one source drawing and a smooth coordinate field; no separate
|
|
7
|
+
torso/legs are composited. Head/jaw/neck pixels remain untouched. Windows/macOS
|
|
8
|
+
picker, toolbar, menu and status copy is English (Linux already was English),
|
|
9
|
+
with wider buttons. No new frames, runtime dependencies or live warp buffers.
|
|
10
|
+
MIT/CC BY-SA4.0 unchanged. Preserve0.0.7 and earlier registry bytes; publish only
|
|
11
|
+
the exact tested0.0.8 tarball. Historical scope below is not current verification.
|
|
11
12
|
|
|
12
13
|
Target: `@bitefoundry/retrieviewer@0.0.4`, public npm registry, `latest` tag.
|
|
13
14
|
The npm organization `bitefoundry` uses the free public-packages plan; account
|
|
@@ -14,12 +14,12 @@ var MIN_WIDTH = 160, MIN_HEIGHT = 120;
|
|
|
14
14
|
var INK = [248, 242, 232, 245];
|
|
15
15
|
var TERMINAL_OWNERS = ['Terminal', 'iTerm2', 'iTerm', 'WezTerm', 'wezterm-gui', 'Alacritty', 'kitty', 'Ghostty', 'Warp', 'Hyper', 'Tabby'];
|
|
16
16
|
var TEXT = {
|
|
17
|
-
preparing: '
|
|
18
|
-
playing: '
|
|
19
|
-
accepted: '
|
|
20
|
-
busy: '
|
|
21
|
-
engineError: '
|
|
22
|
-
chooseFromMenu: '
|
|
17
|
+
preparing: 'Loading...',
|
|
18
|
+
playing: 'Playing',
|
|
19
|
+
accepted: 'Ready!',
|
|
20
|
+
busy: 'Please wait',
|
|
21
|
+
engineError: 'Engine error',
|
|
22
|
+
chooseFromMenu: 'Choose a window'
|
|
23
23
|
};
|
|
24
24
|
|
|
25
25
|
// Low profile: 12pt cells, or 16pt when a large window would exceed 20000 cells.
|
|
@@ -194,7 +194,7 @@ function pickerTargets(infos, ownPid) {
|
|
|
194
194
|
var w = windowRecord(infos[i]);
|
|
195
195
|
if (!w || w.pid === ownPid || w.layer !== 0 || w.alpha <= 0 || w.bounds.width < MIN_WIDTH || w.bounds.height < MIN_HEIGHT) continue;
|
|
196
196
|
var terminal = TERMINAL_OWNERS.indexOf(w.owner) >= 0;
|
|
197
|
-
var label = (terminal ? '[
|
|
197
|
+
var label = (terminal ? '[Terminal] ' : '') + (w.name ? w.name + ' \u00B7 ' + w.owner : w.owner + ' - Window') + ' #' + w.id;
|
|
198
198
|
result.push({ id: w.id, pid: w.pid, owner: w.owner, title: label, terminal: terminal });
|
|
199
199
|
}
|
|
200
200
|
result.sort(function (a, b) { return a.terminal === b.terminal ? (a.title < b.title ? -1 : a.title > b.title ? 1 : 0) : a.terminal ? -1 : 1; });
|
|
@@ -265,7 +265,7 @@ var STYLE_BORDERLESS = 0, STYLE_TITLED = 1, STYLE_CLOSABLE = 2, STYLE_NONACTIVAT
|
|
|
265
265
|
var BACKING_BUFFERED = 2, FLOATING_LEVEL = 3, ACTIVATION_ACCESSORY = 1, ANIMATION_NONE = 2;
|
|
266
266
|
// canJoinAllSpaces | stationary | ignoresCycle | fullScreenAuxiliary
|
|
267
267
|
var OVERLAY_SPACES = 1 | 16 | 64 | 256;
|
|
268
|
-
var BAR_WIDTH =
|
|
268
|
+
var BAR_WIDTH = 538, BAR_HEIGHT = 40;
|
|
269
269
|
|
|
270
270
|
var shell = null;
|
|
271
271
|
|
|
@@ -409,14 +409,14 @@ function startCompanion(testMode) {
|
|
|
409
409
|
bar.setBackgroundColor($.NSColor.colorWithCalibratedRedGreenBlueAlpha(28 / 255, 30 / 255, 34 / 255, 0.94));
|
|
410
410
|
bar.setFloatingPanel(true); bar.setBecomesKeyOnlyIfNeeded(true); bar.setLevel(FLOATING_LEVEL); bar.setCollectionBehavior(OVERLAY_SPACES);
|
|
411
411
|
var content = bar.contentView;
|
|
412
|
-
ballButton = makeButton('
|
|
412
|
+
ballButton = makeButton('Ball', { x: 8, y: 6, width: 64, height: 28 }, 'onBall:');
|
|
413
413
|
content.addSubview(ballButton);
|
|
414
|
-
content.addSubview(makeButton('
|
|
415
|
-
content.addSubview(makeButton('
|
|
416
|
-
content.addSubview(makeButton('
|
|
417
|
-
content.addSubview(makeButton('
|
|
418
|
-
content.addSubview(makeButton('
|
|
419
|
-
statusLabel = makeLabel(TEXT.preparing, { x:
|
|
414
|
+
content.addSubview(makeButton('Treat', { x: 76, y: 6, width: 64, height: 28 }, 'onTreat:'));
|
|
415
|
+
content.addSubview(makeButton('Tug', { x: 144, y: 6, width: 64, height: 28 }, 'onTug:'));
|
|
416
|
+
content.addSubview(makeButton('Window', { x: 212, y: 6, width: 64, height: 28 }, 'onPick:'));
|
|
417
|
+
content.addSubview(makeButton('Pause', { x: 280, y: 6, width: 64, height: 28 }, 'onPause:'));
|
|
418
|
+
content.addSubview(makeButton('Quit', { x: 348, y: 6, width: 64, height: 28 }, 'onQuit:'));
|
|
419
|
+
statusLabel = makeLabel(TEXT.preparing, { x: 422, y: 10, width: 112, height: 20 }, $.NSColor.whiteColor);
|
|
420
420
|
content.addSubview(statusLabel);
|
|
421
421
|
|
|
422
422
|
// Menu bar item: the macOS counterpart of the Windows tray icon.
|
|
@@ -424,7 +424,7 @@ function startCompanion(testMode) {
|
|
|
424
424
|
statusItem.button.setTitle($('\u28BF'));
|
|
425
425
|
statusItem.button.setToolTip($('Retrieviewer'));
|
|
426
426
|
var menu = $.NSMenu.alloc.initWithTitle($('Retrieviewer'));
|
|
427
|
-
[['
|
|
427
|
+
[['Choose window', 'onPick:'], ['Hide / resume', 'onPause:'], ['Quit', 'onQuit:']].forEach(function (entry) {
|
|
428
428
|
var item = $.NSMenuItem.alloc.initWithTitleActionKeyEquivalent($(entry[0]), entry[1], $(''));
|
|
429
429
|
item.target = shell.controller;
|
|
430
430
|
menu.addItem(item);
|
|
@@ -474,19 +474,19 @@ function startCompanion(testMode) {
|
|
|
474
474
|
if (picker || core.state.quitting) return;
|
|
475
475
|
core.setPicking(true); core.track(true);
|
|
476
476
|
picker = makePanel({ x: 0, y: 0, width: 650, height: 230 }, STYLE_TITLED | STYLE_CLOSABLE);
|
|
477
|
-
picker.setTitle($('Retrieviewer
|
|
477
|
+
picker.setTitle($('Retrieviewer - Choose a window'));
|
|
478
478
|
picker.setLevel(FLOATING_LEVEL);
|
|
479
479
|
picker.setDelegate(shell.controller);
|
|
480
480
|
var view = picker.contentView;
|
|
481
|
-
view.addSubview(makeLabel('
|
|
482
|
-
'
|
|
483
|
-
'
|
|
481
|
+
view.addSubview(makeLabel('Choose an app window for Retrieviewer.\n' +
|
|
482
|
+
'Only its position and size are followed. Contents are never read.\n' +
|
|
483
|
+
'Without Screen Recording permission, app names and window IDs replace titles.',
|
|
484
484
|
{ x: 18, y: 150, width: 614, height: 64 }, null));
|
|
485
485
|
pickerList = $.NSPopUpButton.alloc.initWithFramePullsDown($.NSMakeRect(18, 106, 600, 28), false);
|
|
486
486
|
view.addSubview(pickerList);
|
|
487
|
-
view.addSubview(makeButton('
|
|
488
|
-
view.addSubview(makeButton('
|
|
489
|
-
view.addSubview(makeButton('
|
|
487
|
+
view.addSubview(makeButton('Refresh', { x: 18, y: 24, width: 100, height: 34 }, 'onRefresh:'));
|
|
488
|
+
view.addSubview(makeButton('Attach', { x: 378, y: 24, width: 140, height: 34 }, 'onAttach:'));
|
|
489
|
+
view.addSubview(makeButton('Cancel', { x: 528, y: 24, width: 90, height: 34 }, 'onCancel:'));
|
|
490
490
|
refreshPicker();
|
|
491
491
|
picker.center;
|
|
492
492
|
app.activateIgnoringOtherApps(true);
|
|
@@ -499,7 +499,7 @@ function startCompanion(testMode) {
|
|
|
499
499
|
emit({ type: 'picker', visible: false });
|
|
500
500
|
if (core.state.quitting) return;
|
|
501
501
|
if (!core.state.target) statusLabel.setStringValue($(TEXT.chooseFromMenu));
|
|
502
|
-
statusItem.button.setToolTip($(core.state.target ? 'Retrieviewer
|
|
502
|
+
statusItem.button.setToolTip($(core.state.target ? 'Retrieviewer - Attached' : 'Retrieviewer - Choose window'));
|
|
503
503
|
// Hand focus back: to the window the user just chose, otherwise to whoever had it.
|
|
504
504
|
var chosen = attachedPid ? $.NSRunningApplication.runningApplicationWithProcessIdentifier(attachedPid) : null;
|
|
505
505
|
attachedPid = 0;
|
|
@@ -112,12 +112,12 @@ sealed class Companion : ApplicationContext {
|
|
|
112
112
|
TargetItem target;Form pickerWindow;QuietWindow testTarget;readonly bool testMode;Rectangle canvas;int revision=0,cell=8;bool visible=false,paused=false,loaded=false,quitting=false,picking=false,announced=false;
|
|
113
113
|
Label status=new Label();Mutex mutex;
|
|
114
114
|
internal Companion(Mutex single,bool diagnostic){
|
|
115
|
-
mutex=single;testMode=diagnostic;bar.Text="Retrieviewer controls";bar.Size=new Size(
|
|
116
|
-
bar.Font=new Font("Segoe UI",9);bar.Controls.Add(MakeButton("
|
|
117
|
-
bar.Controls.Add(MakeButton("
|
|
118
|
-
status.AutoSize=false;status.Location=new Point(
|
|
119
|
-
ContextMenuStrip menu=new ContextMenuStrip();menu.Items.Add("
|
|
120
|
-
tray.Icon=SystemIcons.Application;tray.Text="Retrieviewer ·
|
|
115
|
+
mutex=single;testMode=diagnostic;bar.Text="Retrieviewer controls";bar.Size=new Size(538,40);bar.BackColor=Color.FromArgb(28,30,34);bar.ForeColor=Color.White;
|
|
116
|
+
bar.Font=new Font("Segoe UI",9);bar.Controls.Add(MakeButton("Ball",8,()=>Interact("ball")));bar.Controls.Add(MakeButton("Treat",76,()=>Interact("treat")));
|
|
117
|
+
bar.Controls.Add(MakeButton("Tug",144,()=>Interact("tug")));bar.Controls.Add(MakeButton("Window",212,ChooseTarget));bar.Controls.Add(MakeButton("Pause",280,TogglePause));bar.Controls.Add(MakeButton("Quit",348,Quit));
|
|
118
|
+
status.AutoSize=false;status.Location=new Point(422,12);status.Size=new Size(112,22);status.Text="Loading...";bar.Controls.Add(status);
|
|
119
|
+
ContextMenuStrip menu=new ContextMenuStrip();menu.Items.Add("Choose window",null,(s,e)=>ChooseTarget());menu.Items.Add("Hide / resume",null,(s,e)=>TogglePause());menu.Items.Add("Quit",null,(s,e)=>Quit());
|
|
120
|
+
tray.Icon=SystemIcons.Application;tray.Text="Retrieviewer · Choose window";tray.ContextMenuStrip=menu;tray.Visible=true;tray.DoubleClick+=(s,e)=>ChooseTarget();
|
|
121
121
|
// Handles are created on the UI thread before the reader can signal EOF.
|
|
122
122
|
IntPtr unused=bar.Handle;unused=pet.Handle;
|
|
123
123
|
Thread reader=new Thread(ReadInput);reader.IsBackground=true;reader.Start();
|
|
@@ -128,7 +128,7 @@ sealed class Companion : ApplicationContext {
|
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
Button MakeButton(string title,int x,Action action){
|
|
131
|
-
Button b=new Button();b.Text=title;b.TabStop=false;b.Size=new Size(
|
|
131
|
+
Button b=new Button();b.Text=title;b.TabStop=false;b.Size=new Size(64,28);b.Location=new Point(x,6);b.FlatStyle=FlatStyle.Flat;b.FlatAppearance.BorderSize=0;b.BackColor=Color.FromArgb(48,51,58);b.ForeColor=Color.White;b.Click+=(s,e)=>action();return b;
|
|
132
132
|
}
|
|
133
133
|
void ReadInput(){
|
|
134
134
|
try{
|
|
@@ -150,9 +150,9 @@ sealed class Companion : ApplicationContext {
|
|
|
150
150
|
for(;;){Dictionary<string,object> m;lock(inputLock){if(messages.Count==0)break;m=messages.Dequeue();}
|
|
151
151
|
string type=Program.Str(m,"type");
|
|
152
152
|
if(type=="quit"){Quit();return;}
|
|
153
|
-
if(type=="loaded"){string ink=m.ContainsKey("ink")?Program.Str(m,"ink"):"cream";if(ink!="cream"&&ink!="gold"&&ink!="dark")throw new Exception("Invalid ink");pet.Ink=ink=="gold"?Color.FromArgb(245,231,184,103):ink=="dark"?Color.FromArgb(245,67,48,24):Color.FromArgb(245,248,242,232);loaded=true;status.Text="
|
|
154
|
-
if(type=="interaction"){status.Text=Program.Bool(m,"accepted")?"
|
|
155
|
-
if(type=="error"){status.Text="
|
|
153
|
+
if(type=="loaded"){string ink=m.ContainsKey("ink")?Program.Str(m,"ink"):"cream";if(ink!="cream"&&ink!="gold"&&ink!="dark")throw new Exception("Invalid ink");pet.Ink=ink=="gold"?Color.FromArgb(245,231,184,103):ink=="dark"?Color.FromArgb(245,67,48,24):Color.FromArgb(245,248,242,232);loaded=true;status.Text="Playing";if(testMode)((Button)bar.Controls[0]).PerformClick();continue;}
|
|
154
|
+
if(type=="interaction"){status.Text=Program.Bool(m,"accepted")?"Ready!":"Please wait";continue;}
|
|
155
|
+
if(type=="error"){status.Text="Engine error";Quit();return;}
|
|
156
156
|
if(type=="frame"){
|
|
157
157
|
// Always acknowledge discarded frames too, otherwise resizing can deadlock the sender.
|
|
158
158
|
bool painted=visible&&!paused&&Program.Int(m,"revision")==revision;
|
|
@@ -187,7 +187,7 @@ sealed class Companion : ApplicationContext {
|
|
|
187
187
|
StringBuilder name=new StringBuilder(512);Native.GetWindowText(hwnd,name,name.Capacity);if(name.Length==0)return true;
|
|
188
188
|
string process="";try{using(Process p=Process.GetProcessById((int)pid)){process=p.ProcessName;}}catch{}
|
|
189
189
|
bool terminal=process.Equals("WindowsTerminal",StringComparison.OrdinalIgnoreCase)||process.IndexOf("wezterm",StringComparison.OrdinalIgnoreCase)>=0||process=="OpenConsole"||process=="conhost"||process=="mintty";
|
|
190
|
-
result.Add(new TargetItem{Window=hwnd,Process=pid,Title=(terminal?"[
|
|
190
|
+
result.Add(new TargetItem{Window=hwnd,Process=pid,Title=(terminal?"[Terminal] ":"")+name.ToString()+" · "+process,Terminal=terminal});return true;
|
|
191
191
|
},IntPtr.Zero);
|
|
192
192
|
result.Sort((a,b)=>a.Terminal==b.Terminal?String.Compare(a.Title,b.Title,StringComparison.CurrentCulture):a.Terminal?-1:1);return result;
|
|
193
193
|
}
|
|
@@ -195,15 +195,15 @@ sealed class Companion : ApplicationContext {
|
|
|
195
195
|
if(picking||quitting)return;picking=true;Track(true);
|
|
196
196
|
Form picker=new Form();pickerWindow=picker;
|
|
197
197
|
{
|
|
198
|
-
picker.Text="Retrieviewer ·
|
|
198
|
+
picker.Text="Retrieviewer · Choose a window";picker.Size=new Size(650,230);picker.StartPosition=FormStartPosition.CenterScreen;picker.FormBorderStyle=FormBorderStyle.FixedDialog;picker.MaximizeBox=false;picker.MinimizeBox=false;picker.Font=new Font("Segoe UI",10);
|
|
199
199
|
picker.ShowInTaskbar=true;picker.TopMost=true;
|
|
200
|
-
Label hint=new Label();hint.Text="
|
|
200
|
+
Label hint=new Label();hint.Text="Choose an app window for Retrieviewer.\nOnly its position and size are followed. Contents are never read.";hint.SetBounds(18,16,610,50);
|
|
201
201
|
ComboBox list=new ComboBox();list.DropDownStyle=ComboBoxStyle.DropDownList;list.SetBounds(18,76,600,28);foreach(TargetItem item in Targets())list.Items.Add(item);if(list.Items.Count>0)list.SelectedIndex=0;
|
|
202
|
-
Button refresh=new Button();refresh.Text="
|
|
203
|
-
Button attach=new Button();attach.Text="
|
|
204
|
-
Button cancel=new Button();cancel.Text="
|
|
202
|
+
Button refresh=new Button();refresh.Text="Refresh";refresh.SetBounds(18,124,100,34);refresh.Click+=(s,e)=>{list.Items.Clear();foreach(TargetItem item in Targets())list.Items.Add(item);if(list.Items.Count>0)list.SelectedIndex=0;};
|
|
203
|
+
Button attach=new Button();attach.Text="Attach";attach.SetBounds(378,124,140,34);attach.Click+=(s,e)=>{if(list.SelectedItem!=null){target=(TargetItem)list.SelectedItem;paused=false;Program.Emit(new {type="pause",paused=false});picker.Close();}};
|
|
204
|
+
Button cancel=new Button();cancel.Text="Cancel";cancel.SetBounds(528,124,90,34);cancel.Click+=(s,e)=>picker.Close();
|
|
205
205
|
picker.Controls.AddRange(new Control[]{hint,list,refresh,attach,cancel});
|
|
206
|
-
picker.FormClosed+=(s,e)=>{pickerWindow=null;picking=false;Program.Emit(new {type="picker",visible=false});if(!quitting){if(target==null)status.Text="
|
|
206
|
+
picker.FormClosed+=(s,e)=>{pickerWindow=null;picking=false;Program.Emit(new {type="picker",visible=false});if(!quitting){if(target==null)status.Text="Choose a window";tray.Text=target==null?"Retrieviewer · Choose window":"Retrieviewer · Attached";Track(true);}picker.Dispose();};
|
|
207
207
|
picker.Show();Native.ShowWindow(picker.Handle,5);Program.Emit(new {type="picker",visible=Native.IsWindowVisible(picker.Handle)});
|
|
208
208
|
}
|
|
209
209
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitefoundry/retrieviewer",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.8",
|
|
4
4
|
"description": "A fluffy Braille desktop pet for Windows and Linux X11, with experimental macOS support and an embeddable TUI engine.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"homepage": "https://bitefoundry.github.io/retrieviewer/",
|
package/pet-q5-manifest.json
CHANGED
|
@@ -80,20 +80,28 @@
|
|
|
80
80
|
"uniqueFrames": 142,
|
|
81
81
|
"sourceSha256": "7918261fb64c57a91739729841fd84c6dd53891196c7fb76ee9c27712ab6ef5d",
|
|
82
82
|
"sourcePackedSha256": "7785ef65b8a2a5bf6f7ce600fe9957a60d9af82066ff49275bba061eac5392d1",
|
|
83
|
-
"encodedBytes":
|
|
84
|
-
"gzipBytes":
|
|
85
|
-
"residentPixelBytes":
|
|
86
|
-
"encodedSha256": "
|
|
87
|
-
"quantizedSha256": "
|
|
83
|
+
"encodedBytes": 6232435,
|
|
84
|
+
"gzipBytes": 1429202,
|
|
85
|
+
"residentPixelBytes": 3874636,
|
|
86
|
+
"encodedSha256": "599ee35d1164c84f80dd037c37b11212b72f4bbd91bea7e851205d602bfb672a",
|
|
87
|
+
"quantizedSha256": "821706cfd8878f0ec9eb1bf1bf0a423ef273f0fa5c7423a033225793f324dc89",
|
|
88
88
|
"watchRegistration": {
|
|
89
89
|
"sourceVersion": "0.0.5",
|
|
90
90
|
"sourceEncodedSha256": "38cfdfcee9c857c56a14f0a9734cb3301b4a04cb8e1ae3fb2e2b2ffe3666240f",
|
|
91
91
|
"canonicalSeat": 50,
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"
|
|
92
|
+
"method": "single-source-paw-coordinate-registration",
|
|
93
|
+
"protectedHeadNeckRows": 230,
|
|
94
|
+
"pawWarpFullFromY": 270,
|
|
95
|
+
"groundRow": 300,
|
|
95
96
|
"headTranslateY": 0,
|
|
96
97
|
"neckUnmodified": true,
|
|
98
|
+
"bodyCompositing": false,
|
|
99
|
+
"paws": [
|
|
100
|
+
105,
|
|
101
|
+
138,
|
|
102
|
+
185,
|
|
103
|
+
218
|
|
104
|
+
],
|
|
97
105
|
"unchangedOtherFrames": true
|
|
98
106
|
}
|
|
99
107
|
},
|
|
Binary file
|