From b1e751a6b7f7f7de5b1ff8d356442f802ef38bf2 Mon Sep 17 00:00:00 2001 From: jwinterm Date: Thu, 3 Sep 2026 15:04:41 -0400 Subject: [PATCH] fix(scene): the sitting doge belongs to Receive only MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit He was filling History's empty beat as well, left over from before Receive had a scene of its own. Two tabs showing the same sitting doge reads as one tab's scene leaking into the other, and History is meant to be the tab where he runs. History's opening beat is now sky, grass, clouds and the sun — the scene breathing before the coins come out — and the sitting doge appears on Receive and nowhere else. The per-lap idle roll goes with him. Claude-Session: https://claude.ai/code/session_01VLQ5DsgKv23osGANoFT3zF --- src/assets/qml/scene.qml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/assets/qml/scene.qml b/src/assets/qml/scene.qml index 7aef7ae6..ae4591e5 100644 --- a/src/assets/qml/scene.qml +++ b/src/assets/qml/scene.qml @@ -6,7 +6,7 @@ import QtQuick // // One cycle is three beats, so the scene breathes instead of running flat out: // -// 1. an empty field for 3-5s (sky, grass, and sometimes a doge sitting in it) +// 1. an empty field for 3-5s (sky, grass, clouds — the scene breathing) // 2. the coins pop in, one at a time // 3. the doge and the money go by, and the doge collects the coins // @@ -75,7 +75,6 @@ Rectangle { property bool tripLap: false // does the doge eat it this lap? property real tripAt: 0.55 // ...and how far along readonly property bool tripped: tripLap && runProgress >= tripAt - property bool idleLap: false // doge sitting in the field during beat 0 property bool birdLap: false property bool starLap: false // shooting star, night only property int bonusIndex: -1 // which coin is worth +5, or -1 @@ -593,10 +592,11 @@ Rectangle { source: "qrc:/scene/dog2.gif" playing: scene.live && visible width: 84; height: 67 - x: scene.width * (scene.sitMode ? 0.5 : 0.16) - (scene.sitMode ? width / 2 : 0) + x: scene.width * 0.5 - width / 2 y: scene.groundY - height + 14 - scene.sitterHop - visible: !scene.reducedMotion - && (scene.sitMode || (scene.runMode && scene.idleLap && scene.beat === 0)) + // Receive only. He used to fill History's empty beat too, which now + // reads as the wrong tab's scene leaking into this one. + visible: !scene.reducedMotion && scene.sitMode opacity: visible ? 1.0 : 0.0 Behavior on opacity { NumberAnimation { duration: 400 } } } @@ -896,7 +896,6 @@ Rectangle { scene.runBeat = 6800 + Math.floor(Math.random() * 3000); scene.tripLap = Math.random() < 0.17; scene.tripAt = 0.34 + Math.random() * 0.34; - scene.idleLap = Math.random() < 0.45; scene.birdLap = !scene.night && Math.random() < 0.5; scene.starLap = scene.night && Math.random() < 0.4; scene.bonusIndex = (Math.random() < 0.3)