大きさ resizes the pal, so on the phone it resizes nothing and saves nothing #74

Open
opened 2026-07-31 13:47:56 +00:00 by aiko · 0 comments
Owner

Reported by the operator on 2026-07-31: "I did find the slider, and it does nothing."

It is inert, and the code says so

settings-spec.ts's note above SIZE_BODY:

The slider is the pal's scale, and the pal is pet mode — the receiver draws her to the stage, so nothing in this mode changes when it moves. Saying so is the honest fix: the value is real, it persists, and it is the one the corner grip writes; it simply lands on the other surface.

That was a defensible call when 調整 was a desktop sheet and the pal was one keystroke away. It does not survive contact with the phone.

On Android it is worse than inert

Two things stack up:

  • There is no pal on Android. The overlay is #23, ruled out of v1 by #47. So the slider edits the size of a surface that does not exist on the device the operator is holding.
  • It does not even persist there. use-settings.ts's scale writer only reaches writePalScale when readCurrentMonitor() returned a monitor. That is a desktop Tauri call; on Android there is no monitor, so the setter falls back to setting local state and the value is gone on the next launch.

So on the phone the one control named 大きさ moves a number that changes nothing and is not kept. The operator found it, moved it, and correctly concluded it was broken.

What actually sizes her today

kScale in the go-between's model_dict.json, doubled at live2d-config-context.tsx's model-info merge. That is a server-side edit and a client restart — not something the operator can reach from the device, and global to the model rather than per-screen.

scrollToResize exists and defaults on, but it is a mouse wheel. There is no touch equivalent, so it is desktop-only by construction.

What this issue wants

A 大きさ that resizes the model on the surface you are looking at, reachable from the device.

Worth deciding rather than assuming:

  • Is it one value or two? The pal's scale is stored per monitor (pal-scale.ts), which is right for a thing pinned to a desktop. A phone has one screen and no pal. Sharing one number across both surfaces is simpler; keeping them separate is more honest about them being different surfaces. This is the decision the ticket turns on.
  • What is the range? The pal clamps to 0.68–1.32 around its own 322×520 box. The receiver's stage is a different shape and wants its own bounds — she should not be croppable into uselessness or shrinkable to a dot.
  • Where does it live? 調整's existing row, so the control the operator already found starts working, rather than a second one appearing beside it.
  • Does it persist per device? It should. The Pixel and the pad want different sizes, and neither is the desktop's.

Acceptance

  • Moving 大きさ in 調整 changes her size on the current surface, on desktop and on Android
  • The value survives a restart on Android, where there is no monitor to key it to
  • settings-spec.ts's note stops saying the slider lands on another surface, because it no longer does
  • The pal's corner grip and the receiver's slider agree about what they each own — one recorded decision, not two behaviours
  • A test pins that a scale written on a device with no monitor is read back after a reload

denpa#23, denpa#47, denpa#70, design § 5b

Reported by the operator on 2026-07-31: *"I did find the slider, and it does nothing."* ## It is inert, and the code says so `settings-spec.ts`'s note above `SIZE_BODY`: > The slider is the pal's scale, and the pal is pet mode — the receiver draws her to the stage, so nothing in *this* mode changes when it moves. Saying so is the honest fix: the value is real, it persists, and it is the one the corner grip writes; it simply lands on the other surface. That was a defensible call when 調整 was a desktop sheet and the pal was one keystroke away. It does not survive contact with the phone. ## On Android it is worse than inert Two things stack up: - **There is no pal on Android.** The overlay is `#23`, ruled out of v1 by `#47`. So the slider edits the size of a surface that does not exist on the device the operator is holding. - **It does not even persist there.** `use-settings.ts`'s scale writer only reaches `writePalScale` when `readCurrentMonitor()` returned a monitor. That is a desktop Tauri call; on Android there is no monitor, so the setter falls back to setting local state and the value is gone on the next launch. So on the phone the one control named 大きさ moves a number that changes nothing and is not kept. The operator found it, moved it, and correctly concluded it was broken. ## What actually sizes her today `kScale` in the go-between's `model_dict.json`, doubled at `live2d-config-context.tsx`'s model-info merge. That is a server-side edit and a client restart — not something the operator can reach from the device, and global to the model rather than per-screen. `scrollToResize` exists and defaults on, but it is a **mouse wheel**. There is no touch equivalent, so it is desktop-only by construction. ## What this issue wants A 大きさ that resizes **the model on the surface you are looking at**, reachable from the device. Worth deciding rather than assuming: - **Is it one value or two?** The pal's scale is stored per monitor (`pal-scale.ts`), which is right for a thing pinned to a desktop. A phone has one screen and no pal. Sharing one number across both surfaces is simpler; keeping them separate is more honest about them being different surfaces. This is the decision the ticket turns on. - **What is the range?** The pal clamps to 0.68–1.32 around its own 322×520 box. The receiver's stage is a different shape and wants its own bounds — she should not be croppable into uselessness or shrinkable to a dot. - **Where does it live?** 調整's existing row, so the control the operator already found starts working, rather than a second one appearing beside it. - **Does it persist per device?** It should. The Pixel and the pad want different sizes, and neither is the desktop's. ## Acceptance - [ ] Moving 大きさ in 調整 changes her size on the current surface, on desktop and on Android - [ ] The value survives a restart on Android, where there is no monitor to key it to - [ ] `settings-spec.ts`'s note stops saying the slider lands on another surface, because it no longer does - [ ] The pal's corner grip and the receiver's slider agree about what they each own — one recorded decision, not two behaviours - [ ] A test pins that a scale written on a device with no monitor is read back after a reload ## Related `denpa#23`, `denpa#47`, `denpa#70`, design § 5b
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
aiko/denpa#74
No description provided.