Social bar position is a click-toggle, not a drag — the drag-snap misbehaved for shaky hands (snapped up but wouldn't come back down; jitter around the deadzone). Clicking the bar now flips it top/bottom via ToggleSocialBarPosition; SocialBarSnap and its units removed — 153 tests passing, 0 warnings
This commit is contained in:
+17
-28
@@ -7,30 +7,19 @@
|
||||
|
||||
## Session state (last updated: 2026-08-13)
|
||||
|
||||
- **Branch:** `main`. TASK 4 **ship step 5.5 is implemented, tested, and staged for
|
||||
commit** — the social bar bug-fix branch (drag snap + fediverse heal + the bar on
|
||||
the live output). Uncommitted: the feature work, tests (+8 → 155), and the memory
|
||||
updates in TASKS.md / ai.md / Services/index.md / this file. Next action is
|
||||
`git add` + commit + push (feature + its memory docs in ONE commit, per the
|
||||
working rules).
|
||||
- **Finished this session:** both reported bugs diagnosed to root cause and fixed;
|
||||
compositor rendering of the social bar added per user approval.
|
||||
- **Bug 1 — drag didn't snap:** `Canvas.SetTop` set a local value that permanently
|
||||
overrides `{Binding SocialBarTop}`; the release-time snap could never win. Fixed
|
||||
with `SocialBarSnap.Decide` (direction-snap during drag, ±6px deadzone) +
|
||||
`bar.ClearValue(Canvas.TopProperty)` on release.
|
||||
- **Bug 2 — Mastodon showed the generic honeycomb:** `@gramps@llamachile.tube`
|
||||
had `Software = NULL` (nodeinfo only ever asked of the landing-page domain).
|
||||
Fixed via subdomain probing (`mastodon.` → `social.` → … candidates, ~15s
|
||||
budget), a load-time heal (`MainViewModel.HealFediverseSoftwareAsync`), and a
|
||||
settable `SocialEntry.FediverseSoftware` that raises `LogoData`.
|
||||
- **Compositor bar:** `Services/Compositor/SocialBarRenderer.cs` (new, WPF
|
||||
RenderTargetBitmap → straight-alpha strip), `SceneCompositor` blits it above
|
||||
the flash, `FramePump` gains a re-read-each-frame `socialBar:` seam,
|
||||
`MainViewModel` owns the strip frame.
|
||||
- **Verified:** Windows-host build **0 warnings**; **155/155 tests passing**
|
||||
(147 baseline + 8 new). Full commit contents pending.
|
||||
- **Branch:** `main`. TASK 4 **ship step 5.5** is **committed and pushed** (`ac60a26`,
|
||||
"TASK 4 ship step 5.5: social bar bug fixes + bar on the live output").
|
||||
- **This session (follow-up):** the drag-snap from 5.5 failed in practice — it snapped
|
||||
up but wouldn't come back down (jitter around the deadzone, per the user). **Superseded
|
||||
by a click-toggle** (user decision, KISS): `MainWindow.SocialBar_MouseLeftButtonDown`
|
||||
→ `MainViewModel.ToggleSocialBarPosition()` flips the bar top ⇄ bottom; the bar rides
|
||||
`{Binding SocialBarTop}` alone; `SocialBarSnap` + its 2 tests removed. Build 0 warnings,
|
||||
**153 tests passing** (155 − 2 snap units). **Uncommitted:** this click-toggle change +
|
||||
its memory corrections (TASKS.md / ai.md / HANDOFF). Next action: commit + push.
|
||||
- **Verified:** 0 warnings; 153/153 tests pass.
|
||||
- **Landmines:**
|
||||
- Never set a local `Canvas.SetTop` on the social bar — a local value permanently
|
||||
overrides `{Binding SocialBarTop}` (the `ClearValue` lesson from 5.5).
|
||||
- The pump reads the active scene on a background thread while the UI can still
|
||||
edit it — a concurrent-mutation exception is contained (logged + `Failed` +
|
||||
the pump stops), not a crash. The background thread + video pipeline is the
|
||||
@@ -49,11 +38,11 @@
|
||||
integration test (a real `MainWindow`), which never goes live — keep it that way.
|
||||
- Sandbox can't reach outbound HTTPS — the subdomain-probe logic is verified via
|
||||
stub-handler tests only, not against the real `mastodon.llamachile.tube`.
|
||||
- **Next step:** commit + push ship step 5.5 (one commit incl. memory docs). Then
|
||||
TASK 4 ship step 6 — health stats: bind `FramePump.HealthUpdated`
|
||||
(bitrate/FPS/duration) into the bottom bar. Nothing else queued — do not expand
|
||||
the task queue on your own. Optional, not queued: rewriting the healed entry's
|
||||
`ProfileUrl` to `https://mastodon.llamachile.tube/@gramps` (user must say the word).
|
||||
- **Next step:** commit + push the click-toggle follow-up. Then TASK 4 ship step 6 —
|
||||
health stats: bind `FramePump.HealthUpdated` (bitrate/FPS/duration) into the bottom
|
||||
bar. Nothing else queued — do not expand the task queue on your own. Optional, not
|
||||
queued: rewriting the healed entry's `ProfileUrl` to
|
||||
`https://mastodon.llamachile.tube/@gramps` (user must say the word).
|
||||
|
||||
- **Secret/DB/port facts live:** OAuth client id/secret in `Helpers/OAuthCredentials.cs`;
|
||||
OAuth session token in `Helpers/TokenStore.cs` (DPAPI → `%APPDATA%\ytLlive\ytLlive.auth`);
|
||||
|
||||
Reference in New Issue
Block a user