{
  "title": "Beebo Entertainment: testing status by feature",
  "codeVsHuman": {
    "updatedEastern": "Oct 11, 2026, 7:25 AM Eastern",
    "method": "Code built and tests passing is the share of the Built and Automated tests checks that passed. Human testing done is the share of Real device, Real-world check and Ready to call Available that passed. Group figures are the rounded average of their features. Remaining counts are open road-to-100 items.",
    "groups": [
      {
        "name": "Android phone app",
        "codeDone": 94,
        "humanTestingLeft": 67,
        "remaining": {
          "CODE": 19,
          "DEVICE": 34,
          "NICK": 5,
          "BLOCKED": 29
        },
        "features": [
          {
            "name": "Opening the app and the five tabs",
            "codeDone": 100,
            "humanTestingLeft": 33,
            "codeItemsLeft": 1
          },
          {
            "name": "Playing films, seeking, picture-in-picture",
            "codeDone": 100,
            "humanTestingLeft": 33,
            "codeItemsLeft": 1
          },
          {
            "name": "Away from home (direct, then relay)",
            "codeDone": 100,
            "humanTestingLeft": 33,
            "codeItemsLeft": 0
          },
          {
            "name": "Watch Together",
            "codeDone": 100,
            "humanTestingLeft": 67,
            "codeItemsLeft": 1
          },
          {
            "name": "Car party (host and passengers)",
            "codeDone": 100,
            "humanTestingLeft": 67,
            "codeItemsLeft": 1
          },
          {
            "name": "Library health",
            "codeDone": 100,
            "humanTestingLeft": 33,
            "codeItemsLeft": 1
          },
          {
            "name": "Surprise me, playlists, watchlist, favourites",
            "codeDone": 100,
            "humanTestingLeft": 67,
            "codeItemsLeft": 1
          },
          {
            "name": "Campsite host start and stop",
            "codeDone": 100,
            "humanTestingLeft": 67,
            "codeItemsLeft": 1
          },
          {
            "name": "Podcasts and radio",
            "codeDone": 100,
            "humanTestingLeft": 67,
            "codeItemsLeft": 1
          },
          {
            "name": "Audiobooks",
            "codeDone": 100,
            "humanTestingLeft": 67,
            "codeItemsLeft": 1
          },
          {
            "name": "Pack for a trip (download planner)",
            "codeDone": 100,
            "humanTestingLeft": 67,
            "codeItemsLeft": 2
          },
          {
            "name": "Trip Journal (trips, recap, video export)",
            "codeDone": 100,
            "humanTestingLeft": 100,
            "codeItemsLeft": 0
          },
          {
            "name": "Campsite games (43)",
            "codeDone": 100,
            "humanTestingLeft": 67,
            "codeItemsLeft": 1
          },
          {
            "name": "Shared photos and videos",
            "codeDone": 100,
            "humanTestingLeft": 67,
            "codeItemsLeft": 0
          },
          {
            "name": "Wireless speakers",
            "codeDone": 100,
            "humanTestingLeft": 67,
            "codeItemsLeft": 1
          },
          {
            "name": "Share the app (QR over the hotspot)",
            "codeDone": 100,
            "humanTestingLeft": 67,
            "codeItemsLeft": 1
          },
          {
            "name": "Wake my PC",
            "codeDone": 100,
            "humanTestingLeft": 67,
            "codeItemsLeft": 1
          },
          {
            "name": "Chromecast",
            "codeDone": 100,
            "humanTestingLeft": 33,
            "codeItemsLeft": 1
          },
          {
            "name": "Beebo Auto (Android Auto)",
            "codeDone": 100,
            "humanTestingLeft": 33,
            "codeItemsLeft": 1
          },
          {
            "name": "Android TV and Fire TV screens",
            "codeDone": 100,
            "humanTestingLeft": 100,
            "codeItemsLeft": 0
          },
          {
            "name": "Google Play version",
            "codeDone": 100,
            "humanTestingLeft": 67,
            "codeItemsLeft": 0
          },
          {
            "name": "Phone Help (show your screen to another phone)",
            "codeDone": 50,
            "humanTestingLeft": 100,
            "codeItemsLeft": 0
          },
          {
            "name": "Stream from my PC (old button)",
            "codeDone": 0,
            "humanTestingLeft": 100,
            "codeItemsLeft": 1
          },
          {
            "name": "Link a TV",
            "codeDone": 100,
            "humanTestingLeft": 100,
            "codeItemsLeft": 0
          },
          {
            "name": "Accessibility choices (large text, high contrast, reduced motion, TalkBack)",
            "codeDone": 100,
            "humanTestingLeft": 100,
            "codeItemsLeft": 1
          }
        ]
      },
      {
        "name": "Windows desktop app",
        "codeDone": 100,
        "humanTestingLeft": 85,
        "remaining": {
          "CODE": 12,
          "DEVICE": 25,
          "NICK": 4,
          "BLOCKED": 1
        },
        "features": [
          {
            "name": "Installer and self-update",
            "codeDone": 100,
            "humanTestingLeft": 33,
            "codeItemsLeft": 1
          },
          {
            "name": "Library, player and web player",
            "codeDone": 100,
            "humanTestingLeft": 33,
            "codeItemsLeft": 1
          },
          {
            "name": "Update modes and start with Windows",
            "codeDone": 100,
            "humanTestingLeft": 100,
            "codeItemsLeft": 1
          },
          {
            "name": "Converter and quality / speed settings",
            "codeDone": 100,
            "humanTestingLeft": 67,
            "codeItemsLeft": 0
          },
          {
            "name": "Live TV (tuner and own playlist)",
            "codeDone": 100,
            "humanTestingLeft": 100,
            "codeItemsLeft": 1
          },
          {
            "name": "Story Studio",
            "codeDone": 100,
            "humanTestingLeft": 67,
            "codeItemsLeft": 0
          },
          {
            "name": "Movie Night",
            "codeDone": 100,
            "humanTestingLeft": 100,
            "codeItemsLeft": 1
          },
          {
            "name": "Jellyfin-compatible mode",
            "codeDone": 100,
            "humanTestingLeft": 100,
            "codeItemsLeft": 1
          },
          {
            "name": "Parental controls and household profiles",
            "codeDone": 100,
            "humanTestingLeft": 100,
            "codeItemsLeft": 1
          },
          {
            "name": "Keyboard and screen-reader support",
            "codeDone": 100,
            "humanTestingLeft": 100,
            "codeItemsLeft": 1
          },
          {
            "name": "Languages (5 translated with machine help, 3 previews)",
            "codeDone": 100,
            "humanTestingLeft": 100,
            "codeItemsLeft": 0
          },
          {
            "name": "Posters and info (TMDB)",
            "codeDone": 100,
            "humanTestingLeft": 67,
            "codeItemsLeft": 0
          },
          {
            "name": "Remote Desktop (see and control the PC)",
            "codeDone": 100,
            "humanTestingLeft": 100,
            "codeItemsLeft": 1
          },
          {
            "name": "Space Saver",
            "codeDone": 100,
            "humanTestingLeft": 100,
            "codeItemsLeft": 1
          },
          {
            "name": "Library sharing with another household",
            "codeDone": 100,
            "humanTestingLeft": 100,
            "codeItemsLeft": 1
          },
          {
            "name": "Strong volume leveler",
            "codeDone": 100,
            "humanTestingLeft": 100,
            "codeItemsLeft": 1
          }
        ]
      }
    ]
  },
  "fullProgress": {
    "updatedEastern": "Oct 13, 2026, 4:14 AM Eastern",
    "pageUrl": "https://www.beeboentertainment.com/progress-update.html",
    "method": "Code checklist is the recorded built-and-automated-test progress. Human-device is a strict percentage of the recorded real-device checks for the named area. A percentage is evidence coverage, not a promise that every device, route or situation works.",
    "comparison": {
      "baseline": "Oct 11, 2026, 7:25 AM Eastern published checkpoint",
      "current": "Oct 13, 2026 source snapshot and dated hand-test records",
      "androidCode": "The published Android checkpoint was 94%. The Oct 12 code-gap review recorded about 90% before its merges and about 97% after them. Device coverage was not recomputed by those merges."
    },
    "areas": [
      {
        "name": "Windows desktop",
        "codeChecklistPercent": 100,
        "humanDevicePercent": 44,
        "codeChangePoints": 0,
        "humanDeviceChangePoints": 13,
        "source": "Oct 11 checkpoint and Oct 12 Windows/two-home records"
      },
      {
        "name": "Android phone",
        "codeChecklistPercent": 97,
        "humanDevicePercent": 76,
        "codeChangePoints": 3,
        "codeChangeFromOct12MorningPoints": 7,
        "source": "Oct 11 checkpoint, Oct 12 code-gap review and phone records"
      },
      {
        "name": "Beebo Auto",
        "codeChecklistPercent": 100,
        "humanDevicePercent": 100,
        "source": "Recorded single real-car checklist row; not every car or route"
      },
      {
        "name": "Campsite games",
        "codeChecklistPercent": 100,
        "humanDevicePercent": 2,
        "humanTestedGames": 1,
        "totalGames": 41,
        "humanDeviceChangePoints": 2,
        "source": "Oct 13 two-person Sea Battle record; other games have scripted-guest coverage only"
      },
      {
        "name": "Car Party",
        "codeChecklistPercent": 100,
        "humanDevicePercent": 100,
        "source": "Recorded single parked-car checklist row; not a driving-safety validation"
      },
      {
        "name": "Trip Journal",
        "codeChecklistPercent": 100,
        "humanDevicePercent": 0
      },
      {
        "name": "Live TV",
        "codeChecklistPercent": 100,
        "humanDevicePercent": 0
      },
      {
        "name": "Away from home and Relay",
        "codeChecklistPercent": 100,
        "humanDevicePercent": 100
      },
      {
        "name": "Chromecast",
        "codeChecklistPercent": 100,
        "humanDevicePercent": 100
      },
      {
        "name": "Jellyfin API",
        "codeChecklistPercent": 100,
        "humanDevicePercent": 0
      },
      {
        "name": "Web player and browser",
        "codeChecklistPercent": 100,
        "humanDevicePercent": 100
      },
      {
        "name": "Photos and backup",
        "codeChecklistPercent": 100,
        "humanDevicePercent": 100,
        "humanDeviceChangePoints": 50
      },
      {
        "name": "Music, Pod and Audiobooks",
        "codeChecklistPercent": 100,
        "humanDevicePercent": 100
      },
      {
        "name": "Parental controls",
        "codeChecklistPercent": 100,
        "humanDevicePercent": 0
      },
      {
        "name": "Accessibility",
        "codeChecklistPercent": 100,
        "humanDevicePercent": 0
      },
      {
        "name": "Languages",
        "codeChecklistPercent": 100,
        "humanDevicePercent": 0
      },
      {
        "name": "Server and accounts",
        "codeChecklistPercent": 100,
        "humanDevicePercent": 50
      },
      {
        "name": "Linux, Mac and Docker",
        "codeChecklistPercent": 100,
        "humanDevicePercent": 33
      }
    ],
    "handTesting": [
      {
        "date": "2026-10-12",
        "scope": "Two homes, phone on 5G and published downloads",
        "result": "Direct and Relay playback, network switching, two direct viewers, library sharing, backup, browse and media walks were recorded; named gaps remain."
      },
      {
        "date": "2026-10-12",
        "scope": "Windows desktop",
        "screensOpened": 35,
        "result": "About 35 screens were opened on an unpublished test build; settings search and restoring maximized state were found."
      },
      {
        "date": "2026-10-12",
        "scope": "Signed-in browser",
        "pagesOpened": 17,
        "result": "Playback, seeking, pause/resume and quality switching were recorded; subtitles, audio tracks, touch layout and other browsers remain open."
      },
      {
        "date": "2026-10-12",
        "scope": "Campsite scripted guest coverage",
        "gameRooms": 41,
        "result": "Rooms were entered, started or correctly refused; this is not a hand-played result for the other games."
      },
      {
        "date": "2026-10-13",
        "scope": "Campsite Sea Battle",
        "players": 2,
        "friendDevice": "Samsung S20",
        "route": "DIRECT-BeeboTV Wi-Fi (BeeboDirect)",
        "routeMeaning": "First recorded real-person result on that route; earlier Campsite tests used the same-Wi-Fi route.",
        "result": "The friend created the game, Nick joined, they played to the end, the friend won and it worked well.",
        "notRecorded": [
          "Nick's phone",
          "browsers",
          "game length",
          "sound and graphics observations"
        ],
        "stillNotTested": [
          "phone hotspot",
          "guest on mobile data"
        ]
      }
    ],
    "automatedTestTotals": [
      {
        "area": "Worker",
        "count": 1675
      },
      {
        "area": "Service",
        "count": 1103
      },
      {
        "area": "Service",
        "count": 1669
      },
      {
        "area": "Desktop",
        "count": 1303,
        "unit": "test files"
      },
      {
        "area": "Android web",
        "count": 7189,
        "approximate": true
      }
    ],
    "notInMainSourceSnapshot": [
      "Campsite abandoned-room cleanup",
      "Car Party passenger-watch change",
      "Car Party automatic guest-name change",
      "Campsite guest downloads"
    ],
    "notTestedSummary": [
      "TalkBack, Windows screen reader and high contrast",
      "native-speaker review of translations",
      "real tuner and playlist",
      "Jellyfin clients",
      "real trip and export",
      "careful parental-controls device run",
      "Roku, Samsung/LG TV, Xbox, Apple hardware, Linux desktop/NAS and Intel or Apple-Silicon Mac",
      "Campsite phone hotspot, guest on mobile data, games other than Sea Battle, synced music, karaoke, recordings and guest uploads"
    ],
    "fontStatus": "Self-hosted Google Fonts are pending approval to obtain font packages; no package was added."
  },
  "releaseChanges": {
    "title": "What changed since the last release",
    "summary": "Since the last release, 80 fixes and 276 new automated tests were added. The 8 language options are unchanged.",
    "sourceNote": "These counts come from the recorded changes between the last two releases: fix and feature changes, and newly written test cases."
  },
  "updated": "2026-10-14T21:44:00-04:00",
  "updatedEastern": "Oct 14, 2026, 9:44 PM Eastern",
  "pageUrl": "https://www.beeboentertainment.com/progress-update.html",
  "howToRead": "percentComplete = checks passed out of 5 checks, 20 percent each: Built, Automated tests, Real device, Real-world check, Ready to call Available. It measures how much of our test list has passed, not how finished or bug-free a feature is. 100 means all five checks passed. Each feature also has a road-to-100 list: what 100% means, what is done, and what remains, grouped as CODE (we can build or fix it), DEVICE (needs a real phone, PC, TV or car), NICK (his decision, account, money or legal) and BLOCKED.",
  "overallAveragePercent": 54,
  "groupAveragePercent": {
    "Android phone app": 60,
    "Windows desktop app": 54,
    "Other systems": 47,
    "Services and website": 41
  },
  "featureCount": 66,
  "features": [
    {
      "group": "Android phone app",
      "name": "Opening the app and the five tabs",
      "status": "Available (test download)",
      "percentComplete": 80,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": true,
        "Ready to call Available": false
      },
      "lastTested": "Oct 14, 2026 (published tester23 on four phones); Oct 13, 2026 (test build)",
      "leftToReach100": "Run a TalkBack (screen reader) pass and get a final review of the newest build; the Oct 14 runs covered the published tester23 on four phones, without TalkBack.",
      "previousPercent": 80,
      "changedEastern": "Oct 14, 2026, 9:44 PM Eastern",
      "changeNote": "Oct 14: on the published Android 1.51-tester23, all five tabs (Home, Browse, Library, Play, More) opened with content on four phones: Galaxy S9+ (7:14 AM), Pixel 3, Galaxy S24 Ultra and Galaxy S25 (evening). Updating over the older app kept the sign-in on the Pixel 3 and S25. The Back button rule held on the screens tried: from a tab or the player, one or two presses; from a title page, three presses to leave (Browse, Home, out); the story reader is the exception (4 to 5 presses from a later page to reach Home). No crash was logged on any of the four phones. The percentage did not change: Real device was already ticked and now also rests on the exact published file. TalkBack was not run and no review of this build exists.",
      "changeHistory": [
        {
          "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
          "changeNote": "Oct 13 full device pass: all five tabs (Home, Browse, Library, Play, More) opened with content on a Galaxy S24 Ultra and a Galaxy S9+, with no crash logged. This was a test build of the current code, not the published download, so the percentage did not change. Tested on: Samsung Galaxy S24 Ultra and Samsung Galaxy S9+ (Android 10), both running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download."
        },
        {
          "changedEastern": "Oct 12, 2026, 12:00 PM Eastern",
          "changeNote": "Galaxy S24 Ultra on the published tester22 build: cold start and restart passed again."
        },
        {
          "changedEastern": "Oct 12, 2026, 12:05 PM Eastern",
          "changeNote": "Cold launch and all five bottom tabs passed on both the Galaxy S9+ and S24 Ultra, with no crashes logged."
        },
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "roadTo100": {
        "means": "The newest build starts reliably and Home, Browse, Library, Play and More all work on both test phones, including TalkBack, with a reviewer sign-off.",
        "done": [
          "Checks passed: Built, Automated tests, Real device, Real-world check.",
          "Opened on the Samsung S9+ with all five tabs working and no crash logged.",
          "Both phones cold-launched to Home and opened all five tabs on the published tester22 build.",
          "Oct 11, 2026, tester22 build 72: Cold launch and all five bottom tabs passed on both the Galaxy S9+ and S24 Ultra, with no crashes logged.",
          "Oct 12, 2026: Galaxy S24 Ultra on the published tester22 build: cold start and restart passed again.",
          "Oct 13, 2026, test build: all five tabs opened with content on both phones (S24 Ultra and S9+), no crash logged.",
          "Oct 14, 2026, published tester23 (build 73): all five tabs opened with content and no crash was logged on a Galaxy S9+, Pixel 3, Galaxy S24 Ultra and Galaxy S25; Back leaves the app in at most three presses from the screens tried (the story reader needs 4 to 5)."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Add a test for returning to a tab after the app is restored or hits an error, if review finds a gap."
          },
          {
            "kind": "DEVICE",
            "text": "Walk the five tabs with TalkBack (the screen reader) and check labels and focus order."
          },
          {
            "kind": "BLOCKED",
            "text": "No review record exists yet for the newest build."
          }
        ],
        "hist": [
          {
            "changedEastern": "Oct 9, 2026, 6:30 AM Eastern",
            "changeNote": "Android tester16 (build 66), Oct 9. Samsung S9+ (Android 10, home Wi-Fi): it started signed in on Home in under a second, and Home, Browse (Films, Shows, Music, search), Library, Play and More all opened with no crash logged. Samsung S24 Ultra (Android 16): a test copy of the same code opened on Home and Browse with search, and no crash was logged; its Library, Play and More tabs were not individually opened. The S24 ran a test build, not the download from the site. Not tested: TalkBack, other languages, a fresh sign-in."
          }
        ]
      },
      "testedOn": "the published Android 1.51-tester23 (build 73, built Oct 14, 2026, 7:04 AM Eastern, installed from the website download) on a Samsung Galaxy S9+ (Android 10), a Google Pixel 3 (Android 12), a Samsung Galaxy S24 Ultra and a Samsung Galaxy S25 (Android 16), connected to a home computer running the Beebo desktop app (0.1.87 in the S9+ morning run, 0.1.88 in the S24 evening run)"
    },
    {
      "group": "Android phone app",
      "name": "Playing films, seeking, picture-in-picture",
      "status": "Available (test download)",
      "percentComplete": 80,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": true,
        "Ready to call Available": false
      },
      "lastTested": "Oct 14, 2026 (published tester23 on four phones); Oct 13, 2026 (test build)",
      "leftToReach100": "Fix audio stopping when the screen turns off (or Nick decides the default), find out why one episode took about 50 seconds to start on the S24, then re-test rotation and subtitles on a film that has them, and have a person listen on the published download.",
      "changedEastern": "Oct 14, 2026, 9:44 PM Eastern",
      "changeNote": "Oct 14: on the published tester23 a title played, paused and seeked on all four phones. Galaxy S9+: resume prompt worked, +15 and -5 skips moved the position, Pause held it, the quality menu (Auto, 480p, Audio only) worked, the floating picture-in-picture player kept playing and returned to full screen, and with the “Screen off: On” option (already on) the film kept playing with the screen off. Pixel 3: resume, +15 and a drag on the bar moved the position. Galaxy S24 Ultra: an episode played, skipped +15 and -5 and paused, at home and on 5G. Galaxy S25: resume, play and pause held its position. Things to know: on the S24 at home the episode opened paused with a spinner for about 50 seconds before a tap on Play started it (not explained); the reports record the player state and position, not sound heard by a person; and the films tried had no subtitles, so the subtitles menu was not seen (on the Pixel 3 the gear menu showed only Speed and Audio). Percentage unchanged.",
      "previousPercent": 80,
      "changeHistory": [
        {
          "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
          "changeNote": "Oct 13: on both phones the resume prompt, play, pause, skip and the quality menu worked; on the S9+ the floating picture-in-picture player kept playing and returned to full screen when tapped; playback speed 2x applied. Still true: with the default setting the sound stops when the screen turns off (the \"Screen off: On\" option kept it playing for 30 seconds); that is not fixed. Subtitles were not tested (the test films have none) and no person listened, so sound was judged from the phone's audio output being active. Test build; the percentage did not change. Tested on: Samsung Galaxy S24 Ultra and Samsung Galaxy S9+ (Android 10), both running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download."
        },
        {
          "changedEastern": "Oct 12, 2026, 12:00 PM Eastern",
          "changeNote": "Galaxy S24 Ultra: seek, pause (a 63-second pause held its exact position), quality switching to 480p and 720p, 24 seconds of airplane mode while playing, and Wi-Fi to 5G to Wi-Fi switches all passed. Found: the app’s own picture-in-picture window did not close properly; fixed in the code, not yet in a published download."
        },
        {
          "changedEastern": "Oct 12, 2026, 12:05 PM Eastern",
          "changeNote": "Pause, resume, skip, seek and converted 480p playback passed. Both phones were muted."
        },
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "roadTo100": {
        "means": "On the newest build a real phone plays a film with sound, seeks, rotates back to portrait, shows subtitles, switches quality and floats in picture-in-picture, and a reviewer signs off.",
        "done": [
          "Checks passed: Built, Automated tests, Real device, Real-world check.",
          "S9+ played a film, paused, resumed, seeked, started the floating player and kept Continue watching after a force close.",
          "Automated playback tests pass.",
          "Oct 11, 2026, tester22 build 72: Pause, resume, skip, seek and converted 480p playback passed. Both phones were muted.",
          "Oct 12, 2026: Galaxy S24 Ultra: seek, pause (a 63-second pause held its exact position), quality switching to 480p and 720p, 24 seconds of airplane mode while playing, and Wi-Fi to 5G to Wi-Fi switches all passed. Found: the app’s own picture-in-picture window did not close properly; fixed in the code, not yet in a published download.",
          "Oct 13, 2026, test build on the S24 Ultra and S9+: resume, play, pause, skip, quality menu, picture-in-picture (S9+), 480p kept playing, 2x speed applied. The sound stops with the screen off by default; the Screen off: On option kept playing for 30 seconds (S9+).",
          "Oct 14, 2026, published tester23 on a Galaxy S9+, Pixel 3, Galaxy S24 Ultra and Galaxy S25: resume, play, pause, skip and seek worked; on the S9+ the quality menu, the floating picture-in-picture player and playing with the screen off (Screen off: On) worked. One episode took about 50 seconds to start on the S24."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Find and fix why audio stops about five seconds after the screen turns off, and add a test for it."
          },
          {
            "kind": "DEVICE",
            "text": "Re-test rotating back to portrait and the subtitle menu on a film that has subtitles."
          },
          {
            "kind": "DEVICE",
            "text": "Confirm phone sound by ear on the published download; the Oct 14 runs recorded the player state and position, not sound heard by a person. (The floating player passed on the S9+ on Oct 14.)"
          },
          {
            "kind": "NICK",
            "text": "Decide whether Screen off should stop or keep the audio by default on a new install."
          },
          {
            "kind": "BLOCKED",
            "text": "Two competing screen-off changes are waiting for review and disagree about what the test should expect."
          },
          {
            "kind": "CODE",
            "text": "On the S24 at home an episode opened paused with a spinner for about 50 seconds before a tap on Play started it; find out why."
          }
        ],
        "hist": [
          {
            "changedEastern": "Oct 9, 2026, 6:30 AM Eastern",
            "changeNote": "Android tester16 (build 66), Oct 9, Samsung S9+ on home Wi-Fi: a film played, pause, resume, +15 seconds and -5 seconds all worked; picture-in-picture started and playback carried on; the quality picker opened (no option was changed); after force-closing the app, Continue watching kept the film at its place. One check FAILED: audio stopped about five seconds after the screen turned off. Not run: rotating back to portrait, the subtitle menu (the film tried had no subtitle entry), sound confirmed by ear. On the Samsung S24 Ultra, a test build played a film, paused, resumed and fast-forwarded, but picture-in-picture, quality, subtitles and screen-off were not tried there."
          }
        ]
      },
      "testedOn": "the published Android 1.51-tester23 (build 73, built Oct 14, 2026, 7:04 AM Eastern, installed from the website download) on a Samsung Galaxy S9+ (Android 10), a Google Pixel 3 (Android 12), a Samsung Galaxy S24 Ultra and a Samsung Galaxy S25 (Android 16), connected to a home computer running the Beebo desktop app (0.1.87 in the S9+ morning run, 0.1.88 in the S24 evening run)"
    },
    {
      "group": "Android phone app",
      "name": "Away from home (direct, then relay)",
      "status": "Beta",
      "percentComplete": 80,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": true,
        "Ready to call Available": false
      },
      "lastTested": "Oct 14, 2026 (published tester23, Galaxy S24 Ultra on 5G with Wi-Fi off); Oct 13, 2026 (test build)",
      "leftToReach100": "Decide the Relay price, test two people on Beebo Relay at once, and re-test on real devices the fixes for the web player freezing after a phone switched from Wi-Fi to mobile data and for the home PC running out of free ports after many sessions (fixed in the code, not yet in a published download).",
      "roadTo100": {
        "means": "A current phone plays video from the home PC over mobile data, and again through Beebo Relay, with both results recorded and the Relay price approved.",
        "done": [
          "Checks passed: Built, Automated tests, Real device, Real-world check.",
          "Route-choice tests pass.",
          "The owner reported a direct connection on mobile data (5G) earlier; on Oct 3 sign-in and Continue watching worked through the new server.",
          "Oct 12, 2026, two homes on two different networks, with the published Android 1.51-tester22: a direct connection to a home PC worked, a phone on 5G played through Beebo Relay once it was switched on (first picture in about 3 seconds), and the phone browser on 5G played too. Two viewers watched at once from one home PC and both connected directly in about a second. The phone app kept playing across Wi-Fi to 5G to Wi-Fi switches and 24 seconds of airplane mode.",
          "Oct 13, 2026, S24 Ultra on 5G with Wi-Fi off: library, route card and a film worked; the route card updated by itself when Wi-Fi returned.",
          "Oct 14, 2026, published tester23 on a Galaxy S24 Ultra on 5G with Wi-Fi off, home computer on desktop 0.1.88: library loaded, an episode played about 90 seconds, the route card said direct over the internet and counted 90 MB, and it went back to the home Wi-Fi wording after Wi-Fi returned."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "A new home name could not get its secure certificate until it was registered by hand. Still open."
          },
          {
            "kind": "DEVICE",
            "text": "Test two people watching through Beebo Relay at once."
          },
          {
            "kind": "DEVICE",
            "text": "Re-test on real devices the fixes for the web player freezing for minutes after a phone switched from Wi-Fi to mobile data, and for the home PC running out of free ports after many sessions. Both are fixed in the code, not yet in a published download."
          },
          {
            "kind": "NICK",
            "text": "Decide the Relay price."
          }
        ],
        "hist": [
          {
            "changedEastern": "Oct 11, 2026, 9:38 AM Eastern",
            "changeNote": "Fixed the browser page so a recent reload can keep a signed-in away-from-home session; automated tests were added."
          },
          {
            "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
            "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
          }
        ]
      },
      "previousPercent": 80,
      "changedEastern": "Oct 14, 2026, 9:44 PM Eastern",
      "changeNote": "Oct 14: on the published tester23, a Galaxy S24 Ultra on 5G mobile data with Wi-Fi switched off loaded the library, played an episode for about 90 seconds with the position moving, and a skip moved it forward. The Connection route screen said “Direct over the internet - no relay”, “Your phone is on: Mobile data” and “This connection: 90 MB”, and the app log showed the direct path. About 25 seconds after Wi-Fi was switched back on the card read “Connected directly to Beebo on your home Wi-Fi” again. The same screen also showed the right home Wi-Fi route on the Galaxy S9+, Pixel 3 and Galaxy S25. The owner was present and watching the S24 steps, per his statement (the steps were run by a helper). Not done: a second home from the S24 (the phone had no way to open it), two people at once, and away-from-home runs on the S9+ (it has no SIM), Pixel 3 and S25. Percentage unchanged.",
      "changeHistory": [
        {
          "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
          "changeNote": "Oct 13: the S24 Ultra on 5G mobile data with Wi-Fi switched off loaded the library, showed the route card (\"Direct over the internet\") and played a film; when Wi-Fi came back the route card updated by itself within about 30 seconds. Test build; the percentage did not change. Tested on: Samsung Galaxy S24 Ultra on 5G mobile data (Wi-Fi off), running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download; connected to a home computer running the published desktop 0.1.87."
        },
        {
          "changedEastern": "Oct 12, 2026, 12:00 PM Eastern",
          "changeNote": "Oct 12 two-home test: playback on 5G worked directly and through Beebo Relay, two viewers at once worked, and the app survived network switches. The percentage did not change: found problems are not yet in a published download and two people on the relay at once were not tested."
        },
        {
          "changedEastern": "Oct 11, 2026, 9:38 AM Eastern",
          "changeNote": "Fixed the browser page so a recent reload can keep a signed-in away-from-home session; automated tests were added."
        }
      ],
      "testedOn": "Samsung Galaxy S24 Ultra on 5G mobile data (Wi-Fi off), running the published Android 1.51-tester23 (build 73), connected to a home computer running the Beebo desktop app 0.1.88; the route screen was also read on the home Wi-Fi on a Galaxy S9+, Pixel 3 and Galaxy S25."
    },
    {
      "group": "Android phone app",
      "name": "Watch Together",
      "status": "In development",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 13, 2026 (two real phones on home Wi-Fi)",
      "leftToReach100": "Close and reopen the app to confirm it rejoins, try chat and reactions and a phone on mobile data, then run a readiness review on the published download.",
      "previousPercent": 60,
      "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
      "changeNote": "Oct 13: two real phones joined the same party. The host started it, the second phone joined as a viewer, the host skipped ahead about 45 seconds and the viewer followed to the same second within 8 seconds, and a viewer who left and rejoined was back in sync within 1 second. This repeats the earlier two-phone results (Oct 2 and Oct 3) on a newer build, so the percentage did not change. Chat and reactions, closing and reopening the app, a phone on mobile data and a readiness review are not done, and this was a test build, so Ready stays open.",
      "changeHistory": [
        {
          "changedEastern": "Oct 9, 2026, 10:57 AM Eastern",
          "changeNote": "Corrected: the real-world check was ticked but this feature has not been tried on real hardware yet"
        }
      ],
      "roadTo100": {
        "means": "Two phones join, stay in sync, leave, and rejoin after the app is closed, and a reviewer signs off.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Join and leave tests pass, including the 'room is full' notice.",
          "Leaving a room no longer counts toward the open-room limit (automated tests only).",
          "Oct 13, 2026, two real phones on home Wi-Fi: host, join as viewer, the viewer followed a 45-second skip within 8 seconds, leave and rejoin within 1 second."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Add a test for rejoining after the system closes the app, if it is missing."
          },
          {
            "kind": "DEVICE",
            "text": "Close and re-open the guest app and confirm it rejoins."
          },
          {
            "kind": "BLOCKED",
            "text": "No readiness review is recorded, and the two-phone result is from a test build, not the published download."
          },
          {
            "kind": "DEVICE",
            "text": "Chat and reactions, and a phone on mobile data."
          }
        ],
        "hist": [
          {
            "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
            "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
          },
          {
            "changedEastern": "Oct 7, 2026, 11:30 AM Eastern",
            "changeNote": "Windows 0.1.82: leaving a room no longer counts against the open-room limit. Automated tests only; not tried with two phones."
          }
        ]
      },
      "testedOn": "Samsung Galaxy S24 Ultra (host) and Samsung Galaxy S9+ (Android 10) (viewer) on home Wi-Fi, both running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download."
    },
    {
      "group": "Android phone app",
      "name": "Car party (host and passengers)",
      "status": "In development",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 13, 2026 (host and one passenger phone, home Wi-Fi)",
      "leftToReach100": "Test in a real parked car and on camp Wi-Fi with no internet; deploy and re-test the automatic guest name; test a passenger watching what is playing.",
      "roadTo100": {
        "means": "A host phone and passengers play together in a real car and on camp Wi-Fi, and recover from a lost connection.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Host, guest and recovery tests pass.",
          "The join-code hint and no-internet behaviour were fixed on Oct 3 (not yet re-tested on a phone).",
          "Oct 13, 2026, two real phones on home Wi-Fi: host start with code and QR, passenger joined and saw now playing and who is in the car, left cleanly."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Add focused tests for the join-code hint and for using the page offline."
          },
          {
            "kind": "DEVICE",
            "text": "Parked car: host a party and join from passenger phones."
          },
          {
            "kind": "DEVICE",
            "text": "Repeat on camp Wi-Fi with no internet, including recovery and the passenger page."
          },
          {
            "kind": "BLOCKED",
            "text": "No real-car or passenger result is recorded for the newest build."
          },
          {
            "kind": "CODE",
            "text": "The automatic \"Guest 1\" name for a blank nickname is fixed in the code but not on the live server; the live page still refuses a blank name."
          }
        ]
      },
      "previousPercent": 60,
      "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
      "changeNote": "Oct 13: the host started a party (6-digit code and a QR code) and a passenger page opened on a second phone, joined with the code, showed what was playing and who was in the car, and left. With the nickname left blank the live page still said \"Pick a nickname first\": the automatic \"Guest 1\" name is fixed in the code but not on the live server. Passenger watching, reactions arriving on the host and a real parked car were not tested, so the percentage did not change.",
      "changeHistory": [
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "testedOn": "Samsung Galaxy S24 Ultra (host) and Samsung Galaxy S9+ (Android 10) (passenger page in the phone browser) on home Wi-Fi, running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download. Not in a car."
    },
    {
      "group": "Android phone app",
      "name": "Library health",
      "status": "Available (test download)",
      "percentComplete": 80,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": true,
        "Ready to call Available": false
      },
      "lastTested": "Oct 14, 2026 (published tester23, Galaxy S9+); Oct 13, 2026 (test build)",
      "leftToReach100": "Improve the wording of the Ready tile and the host-folder message, then show all three states on a phone.",
      "roadTo100": {
        "means": "Ready, missing-folder and recovery states all show clear wording on a real phone and pass tests and review.",
        "done": [
          "Checks passed: Built, Automated tests, Real device, Real-world check.",
          "Health-state tests pass.",
          "Checked on a real phone earlier.",
          "Oct 12, 2026: The screen opened on a real phone. Found: a misleading counter and a stale “cannot be reached” line; fixed in the code, not yet in a published download.",
          "Oct 13, 2026, S24 Ultra: Library health showed real numbers from a real library; nothing was changed.",
          "Oct 14, 2026, published tester23 on a Galaxy S9+ (non-owner profile): the screen opened with 59 titles needing attention and nothing was changed."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Make the Ready tile and the host-folder message clearer and add tests for the wording."
          },
          {
            "kind": "DEVICE",
            "text": "Show a ready library, a missing folder and a recovery on a phone."
          },
          {
            "kind": "BLOCKED",
            "text": "No sign-off on the new wording exists yet."
          }
        ]
      },
      "previousPercent": 80,
      "changedEastern": "Oct 14, 2026, 9:44 PM Eastern",
      "changeNote": "Oct 14: on the published tester23 the Library health screen opened on a Galaxy S9+ signed in as a profile that is not the owner. It listed 59 titles under “Needs attention” (all unmatched titles, with “Rename or match” and “Needs a look”) and said only the owner account can run the folder check. Nothing was deleted or changed. The ready, missing-folder and recovery states were not shown. Percentage unchanged.",
      "changeHistory": [
        {
          "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
          "changeNote": "Oct 13: on a phone connected to a real home library the screen showed its numbers (136 need attention: 63 missing posters, 58 unmatched titles, 15 files that cannot be reached) and said nothing is deleted or changed. \"Rename or match\" and \"Check shows for missing episodes\" were not tried. Test build; the percentage did not change. Tested on: Samsung Galaxy S24 Ultra, running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download; connected to a home computer running the published desktop 0.1.87."
        },
        {
          "changedEastern": "Oct 12, 2026, 12:00 PM Eastern",
          "changeNote": "The screen opened on a real phone. Found: a misleading counter and a stale “cannot be reached” line; fixed in the code, not yet in a published download."
        },
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "testedOn": "Samsung Galaxy S9+ (Android 10), the published Android 1.51-tester23 (build 73), connected to a home computer running the Beebo desktop app 0.1.87, signed in as a non-owner profile."
    },
    {
      "group": "Android phone app",
      "name": "Surprise me, playlists, watchlist, favourites",
      "status": "Available (test download)",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 14, 2026 (published tester23, Galaxy S9+); Oct 13, 2026 (test build)",
      "leftToReach100": "Settle how Surprise me should behave (title page first or play at once), fix its error handling, then test stars and playlists on a phone.",
      "previousPercent": 60,
      "changedEastern": "Oct 14, 2026, 9:44 PM Eastern",
      "changeNote": "Oct 14: on the published tester23 (Galaxy S9+): a playlist was created, a title was added to it from its details page, and the playlist was deleted (“The titles stay in your library; only the playlist goes”). The Watchlist and Favourite buttons on a details page put the title into Library > Watchlist and Favourites, and removing it emptied both. The Surprise me chooser opened and “Play a random film” started a film that the player reported playing. Still open: whether Surprise me should show a title page first (Nick's decision) and its error handling. Muted; no person used it for real. Percentage unchanged.",
      "changeHistory": [
        {
          "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
          "changeNote": "Oct 13: on the S24 Ultra the Surprise me chooser opened, a playlist was created and deleted, and a title was added to and removed from the watchlist. Surprise me was not played through, favourites and adding a title to a playlist were not tried. Test build; the percentage did not change. Tested on: Samsung Galaxy S24 Ultra, running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download."
        },
        {
          "changedEastern": "Oct 12, 2026, 12:00 PM Eastern",
          "changeNote": "Adding and removing favourites and watchlist titles, and playlists, worked on a real phone."
        },
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "roadTo100": {
        "means": "Surprise me, playlists, watchlist and favourites behave as intended on a real phone and pass tests and review.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Playlist and favourite logic is covered by automated tests.",
          "A change that shows the title before playing is waiting on review.",
          "Oct 12, 2026: Adding and removing favourites and watchlist titles, and playlists, worked on a real phone.",
          "Oct 13, 2026, S24 Ultra: Surprise me chooser opened; playlist created and deleted; watchlist add and remove worked.",
          "Oct 14, 2026, published tester23 on a Galaxy S9+: playlist created, filled and deleted; watchlist and favourite added and removed; the Surprise me chooser opened and started a film."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Fix the Surprise me error-handling and stale-filter problems found in review."
          },
          {
            "kind": "DEVICE",
            "text": "On a phone: use several playlists, go back and retry (on Oct 14 one playlist, one watchlist and one favourite each worked once on the S9+)."
          },
          {
            "kind": "NICK",
            "text": "Decide whether Surprise me should start a film straight away or open the title page first."
          },
          {
            "kind": "BLOCKED",
            "text": "The review of the title-first change found gaps that are not yet fixed."
          }
        ],
        "hist": [
          {
            "changedEastern": "Oct 9, 2026, 6:30 AM Eastern",
            "changeNote": "Android tester16 (build 66), Oct 9, Samsung S9+: Surprise me was tried and FAILED the checklist item. It started playing a film immediately instead of opening a title page first. The watchlist star was not tried, and Surprise me was not tried on the S24 Ultra. Percentage unchanged."
          }
        ]
      },
      "testedOn": "Samsung Galaxy S9+ (Android 10), the published Android 1.51-tester23 (build 73), home Wi-Fi, connected to a home computer running the Beebo desktop app 0.1.87."
    },
    {
      "group": "Android phone app",
      "name": "Campsite host start and stop",
      "status": "Beta",
      "percentComplete": 80,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": true,
        "Ready to call Available": false
      },
      "lastTested": "Oct 14, 2026 (published tester23, Galaxy S9+ host); Oct 13, 2026 (test build)",
      "leftToReach100": "Test guest leave and reconnect and start/stop error cases, make the guest page say plainly when the host has stopped, and test a phone-hotspot route and a guest on mobile data. The guest page only loaded after mobile data was switched off on the guest phone.",
      "roadTo100": {
        "means": "A host phone starts and stops Campsite and real guests join, leave and reconnect cleanly.",
        "done": [
          "Checks passed: Built, Automated tests, Real device, Real-world check.",
          "Host start/stop tests pass.",
          "Tried on a real phone as host.",
          "Oct 11, 2026, tester22 build 72: The S24 guest joined the S9+ host over the temporary Wi-Fi; the host showed \"1 guest connected\". Stopping hosting and switching Wi-Fi off passed.",
          "Oct 13, 2026, home Wi-Fi route: host start, blank-name guest named \"Guest 1\", a guest reconnected after 15 seconds offline, and host stop closed the guest address.",
          "Oct 14, 2026, published tester23, same-Wi-Fi route: a Galaxy S9+ hosted, a Pixel 3 and a Galaxy S24 Ultra joined as guests (“2 guests connected”), and Stop returned the host to its start screen and closed the guest address."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "List host start/stop error and retry cases and add missing tests."
          },
          {
            "kind": "DEVICE",
            "text": "Test a phone-hotspot route and a guest on mobile data; follow the help text if the guest page does not load."
          },
          {
            "kind": "CODE",
            "text": "After the host stops, the guest page keeps saying “Reconnecting... held for 90 seconds” for at least two minutes and never says the host stopped; make it say so."
          }
        ]
      },
      "previousPercent": 80,
      "changedEastern": "Oct 14, 2026, 9:44 PM Eastern",
      "changeNote": "Oct 14: on the published tester23 a Galaxy S9+ hosted twice on the same Wi-Fi (Invite guests, “Everyone's already on the same Wi-Fi”: no hotspot, a QR and a plain web address). Morning: the banner “Hosting your campsite” showed, Stop asked for confirmation and the guest address then refused connections. Evening, with a Pixel 3 and a Galaxy S24 Ultra as guests in Chrome: the guest page opened on both with no certificate warning, the host showed “2 guests connected”, and Stop (with its confirmation) returned the host to “Make this phone the host” while both guest pages changed to “Reconnecting...”. Findings: after Stop a guest page kept saying “Reconnecting... your game is held for 90 seconds” for at least two minutes and never says the host stopped; the Invite-guests sheet stayed half open after Back. Same-Wi-Fi route only: no phone hotspot and no guest on mobile data. Nobody was present for the evening run. Percentage unchanged.",
      "changeHistory": [
        {
          "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
          "changeNote": "Oct 13: the S24 Ultra started hosting, a guest on the S9+ joined with the name left blank and was named \"Guest 1\", the guest came back as the same guest after 15 seconds with Wi-Fi off, and Stop (with its confirmation) closed the guest address. This used the home Wi-Fi route, not a phone hotspot or mobile data. Test build; the percentage did not change. Tested on: Samsung Galaxy S24 Ultra (host) and Samsung Galaxy S9+ (Android 10) (guest in the phone browser) on home Wi-Fi, running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download."
        },
        {
          "changedEastern": "Oct 12, 2026, 12:05 PM Eastern",
          "changeNote": "The S24 guest joined the S9+ host over the temporary Wi-Fi; the host showed \"1 guest connected\". Stopping hosting and switching Wi-Fi off passed."
        },
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "testedOn": "Samsung Galaxy S9+ (Android 10) as host, with a Google Pixel 3 and a Samsung Galaxy S24 Ultra as guests in Chrome, all on the same home Wi-Fi, running the published Android 1.51-tester23 (build 73)."
    },
    {
      "group": "Android phone app",
      "name": "Podcasts and radio",
      "status": "Available (test download)",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 14, 2026 (published tester23, Galaxy S9+: radio played, Follow still FAILING); Oct 13, 2026 (test build)",
      "leftToReach100": "Fix and re-test Follow on a new podcast (it failed on Oct 13), then test screen-off listening, downloads and the queue.",
      "previousPercent": 60,
      "changedEastern": "Oct 14, 2026, 9:44 PM Eastern",
      "changeNote": "Oct 14 (Galaxy S9+, published tester23, home computer on desktop 0.1.87 that morning): a live radio station reached playing within about 8 seconds and pause and stop worked; searching for podcasts listed real shows with cover art. Follow on a new show STILL FAILED with the same “Your Beebo computer had a problem. Try again in a moment.” as on Oct 13; the report marks it as needing a newer desktop, and it was not retried on desktop 0.1.88. Podcast episode playback and screen-off listening were not tested. Percentage unchanged.",
      "changeHistory": [
        {
          "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
          "changeNote": "Oct 13: a live radio station and a podcast episode both played on the S24 Ultra (the position moved in real time, pause and stop worked). FAILED: tapping Follow on a new show from the search results showed \"Your Beebo computer had a problem. Try again in a moment.\" three times, and the show never appeared under Following (not diagnosed; it may be the computer's version, the follow route or a very long follow list). Screen-off listening, downloads and queue editing were not tested. Percentage unchanged. Tested on: Samsung Galaxy S24 Ultra, running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download; connected to a home computer running the published desktop 0.1.87."
        },
        {
          "changedEastern": "Oct 12, 2026, 12:00 PM Eastern",
          "changeNote": "The radio and podcast screens opened and could be browsed on a real phone. Playback was not checked in this run."
        },
        {
          "changedEastern": "Oct 11, 2026, 9:38 AM Eastern",
          "changeNote": "Fixed podcast chapter times with fractions of a second; an automated test was added."
        }
      ],
      "roadTo100": {
        "means": "A real station and a real podcast play on a phone, keep playing with the screen off, and recover after a break.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Feed, player and background tests pass.",
          "Radio playlists with spaces or relative entries now play (automated tests only).",
          "Oct 12, 2026: The radio and podcast screens opened and could be browsed on a real phone. Playback was not checked in this run.",
          "Oct 13, 2026, S24 Ultra: a live radio station and a podcast episode played; podcast search found real shows.",
          "Oct 14, 2026, published tester23 on a Galaxy S9+: a live radio station played, paused and stopped; podcast search listed real shows. Follow on a new show still failed (desktop 0.1.87)."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Add tests for screen-off and resume edge cases."
          },
          {
            "kind": "CODE",
            "text": "Following a new podcast from a phone failed on Oct 13 (\"Your Beebo computer had a problem\"); find the cause and fix it."
          },
          {
            "kind": "DEVICE",
            "text": "Play radio and a podcast with the screen off, download an episode and edit the queue."
          }
        ],
        "hist": [
          {
            "changedEastern": "Oct 9, 2026, 10:57 AM Eastern",
            "changeNote": "Corrected: the real-world check was ticked but this feature has not been tried on real hardware yet"
          },
          {
            "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
            "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
          },
          {
            "changedEastern": "Oct 7, 2026, 11:30 AM Eastern",
            "changeNote": "Windows 0.1.82: internet radio playlists with relative entries or spaces now play. Automated tests only; not tried with a real station on a phone."
          }
        ]
      },
      "testedOn": "Samsung Galaxy S9+ (Android 10), the published Android 1.51-tester23 (build 73), connected to a home computer running the Beebo desktop app 0.1.87."
    },
    {
      "group": "Android phone app",
      "name": "Audiobooks",
      "status": "Available (test download)",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 14, 2026 (published tester23, Galaxy S9+); Oct 13, 2026 (a computer-made 3-chapter test book)",
      "leftToReach100": "Play a real audiobook on a phone across chapters and an app restart; the queued test run is still to be done.",
      "roadTo100": {
        "means": "A real audiobook plays on a phone, changes chapters, keeps bookmarks, and resumes after the app restarts.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Chapter, bookmark and resume tests exist and pass.",
          "Tried on a real phone earlier.",
          "Oct 13, 2026, S24 Ultra: test book listed, chapters and start times correct, chapter jump, speed 0.75x to 2x and automatic next chapter worked (sound not heard).",
          "Oct 14, 2026, published tester23 on a Galaxy S9+: the test book showed its chapters and a chapter tap started it in the right place (sound not heard)."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Run the queued audiobook test group and list what it covers."
          },
          {
            "kind": "BLOCKED",
            "text": "No full current-device record exists."
          },
          {
            "kind": "DEVICE",
            "text": "Play a real book with sound, background the app, restart and resume; try Bookmark and the book sleep timer."
          }
        ]
      },
      "previousPercent": 60,
      "changedEastern": "Oct 14, 2026, 9:44 PM Eastern",
      "changeNote": "Oct 14 (Galaxy S9+, published tester23): the 3-chapter computer-made test book listed its chapters (0:00, 0:12, 0:25); tapping Chapter Two started it at about 15.7 seconds with the right title and author, and Pause worked. Muted; nobody listened. Speed, Bookmark, the book sleep timer and “Mark as finished” were not tried on this run. Percentage unchanged.",
      "changeHistory": [
        {
          "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
          "changeNote": "Oct 13: a 3-chapter test audiobook (made by computer voice, not a real book) showed its chapters with the right start times, a tap on Chapter Two started it in the right place, speeds 0.75x to 2x worked, and at 2x it moved into Chapter Three by itself. Nobody listened (phone sound was muted) and Bookmark, the book's sleep timer and \"Mark as finished\" were not tested. Percentage unchanged. Tested on: Samsung Galaxy S24 Ultra, running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download; connected to a home computer running the published desktop 0.1.87."
        },
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "testedOn": "Samsung Galaxy S9+ (Android 10), the published Android 1.51-tester23 (build 73), connected to a home computer running the Beebo desktop app 0.1.87."
    },
    {
      "group": "Android phone app",
      "name": "Pack for a trip (download planner)",
      "status": "Beta",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 5, 2026",
      "leftToReach100": "Fix the smaller-size choice, show a space and time estimate before downloading, and do a full real download on a phone.",
      "roadTo100": {
        "means": "The planner shows honest size and time estimates, offers smaller sizes that really work, and completes a real download when space is tight.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Planner, size and error tests pass.",
          "Tried on a real phone earlier."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Fix the smaller-size choice and add a test."
          },
          {
            "kind": "CODE",
            "text": "Show a space and time estimate up front and test it."
          },
          {
            "kind": "DEVICE",
            "text": "Run a full real download with limited free space."
          },
          {
            "kind": "BLOCKED",
            "text": "The smaller-size behaviour is still unresolved."
          }
        ]
      },
      "previousPercent": 60,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Android phone app",
      "name": "Trip Journal (trips, recap, video export)",
      "status": "In development",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 14, 2026 (published tester23: made a video on the S24 Ultra and Pixel 3, FAILED on the Galaxy S9+); Oct 13, 2026 (test build)",
      "leftToReach100": "Find and fix why the video export times out on the Galaxy S9+ (Android 10), play a finished video by eye, record a real trip with real photos, and review sharing and privacy.",
      "roadTo100": {
        "means": "A real trip is captured on a phone, a recap is made and a video exported, and the sharing and privacy behaviour has been reviewed.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Recap and export code exists and automated tests pass.",
          "Oct 13, 2026, S24 Ultra: start trip, \"We're home\", recap card and Present worked.",
          "Oct 13, 2026: \"Save as a video\" failed on the test build; with the fix it made 5-second and 13-second videos on the S24 (fix not yet in a published download; the videos were not played back).",
          "Oct 14, 2026, published tester23: “Save as a video” made a 17-second video from 3 photos on a Galaxy S24 Ultra and a Pixel 3 (not played back by eye). It FAILED on a Galaxy S9+ (Android 10) at 1080p, 720p and cards-only with a muxing timeout (error 7002)."
        ],
        "remaining": [
          {
            "kind": "BLOCKED",
            "text": "Sharing guest photos and video in an export needs a careful privacy review first."
          },
          {
            "kind": "CODE",
            "text": "The Trip Journal “Save as a video” export fails on the Galaxy S9+ (Android 10) on the published tester23 (muxing timeout, error 7002, also with cards only); find the cause and fix it. It works on the Galaxy S24 Ultra and the Pixel 3."
          },
          {
            "kind": "DEVICE",
            "text": "Play a finished trip video by eye, and record a real trip with real photos and clips."
          }
        ]
      },
      "previousPercent": 60,
      "changedEastern": "Oct 14, 2026, 9:44 PM Eastern",
      "changeNote": "Oct 14: on the published tester23, “Save as a video” worked on two phones and FAILED on one. It made a video on the Galaxy S24 Ultra (3 photos, about 10 seconds, a 17-second video, 2 MB, no sound; the owner was present and watching, per his statement) and on the Pixel 3 (3 photos, under 8 seconds, a 17-second video, 12 MB, no sound). On the Galaxy S9+ (Android 10) it FAILED at 1080p, at 720p and with cards only: “The video could not be made.” (the log shows a muxing timeout error 7002 about 10 seconds in). So the Oct 13 fix works on two phones and not on this older Samsung phone. No finished video was played back by eye on any phone, and only test photos were used, not a real trip. Also on the S9+: Back on the Save-as-a-video screen went straight to More in one press. Percentage unchanged: Real device stays ticked for the screens and the two phones where the export worked; the S9+ failure is recorded here.",
      "changeHistory": [
        {
          "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
          "changeNote": "Oct 13: on the S24 Ultra, starting and ending a trip, the recap card and Present worked. \"Save as a video\" FAILED twice with \"The video could not be made\" on the test build of the current code. After a fix (on a branch, not yet merged or in a published download) it worked on the S24: a 1-card trip made a video in about 3 seconds and a trip with a test photo and clip made one (13 seconds, 9 MB, no sound). The finished videos were not played back by eye. Real device is ticked for the screens and the re-test of the fixed export; it was tried only with computer-made test files, not a real trip. Tested on: Samsung Galaxy S24 Ultra: a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download (video export failed); then a build with the export fix, also not published (video export passed)."
        },
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "testedOn": "Published Android 1.51-tester23 (build 73) on a Samsung Galaxy S24 Ultra and a Google Pixel 3 (video made) and on a Samsung Galaxy S9+ (Android 10) (video failed), with three test photos."
    },
    {
      "group": "Android phone app",
      "name": "Campsite games",
      "status": "Beta",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 14, 2026 (published tester23: Reversi by two guests, two games against the computer); Oct 13, 2026 (test build)",
      "leftToReach100": "Play the games other than Sea Battle and Reversi with real guests on phones; a phone hotspot and a guest on mobile data are not tested.",
      "roadTo100": {
        "means": "Every shipped game has a basic test and has been played on phones with real guests.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Games are built and basic tests pass.",
          "Tic-Tac-Toe against the computer ran on the guest phone web page on Oct 11; this does not prove all Campsite games or human shared play.",
          "Oct 11, 2026, tester22 build 72: Tic-Tac-Toe against the computer opponent ran on the guest web page over the temporary Wi-Fi.",
          "Oct 12, 2026: Campsite game-room coverage ran with scripted guests; no other game is claimed as hand-played.",
          "Oct 13, 2026, home Wi-Fi: 42 of 42 games opened, 41 started with a computer opponent; Crazy Eights played by hand against the computer.",
          "Oct 14, 2026, published tester23: Reversi between two guest phones (roster, start, and a move shown on the other phone); Tic-Tac-Toe and Crazy Eights against the computer on the S9+."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Write a list of all Campsite games with their tests and add missing basic checks."
          },
          {
            "kind": "DEVICE",
            "text": "Play all Campsite games with real human guests; check game sound, hiding bars and a second human guest."
          },
          {
            "kind": "BLOCKED",
            "text": "Only one game has a recorded phone result."
          }
        ]
      },
      "previousPercent": 60,
      "changedEastern": "Oct 14, 2026, 9:44 PM Eastern",
      "changeNote": "Oct 14: on the published tester23, two guests on their own phones (a Pixel 3 and a Galaxy S24 Ultra, in Chrome) joined a Galaxy S9+ host on the same Wi-Fi. The S24 opened Reversi as leader, the Pixel joined the same room, the roster showed both names, Start round put the board on both phones, and a move made on the S24 showed on the Pixel at once. The Pixel's own tap did not visibly change the board (tapped by guessed coordinates in landscape; not counted as a fault). On the S9+ alone, Tic-Tac-Toe with the computer opponent “Hopping Beebo (Bot)” worked, and Crazy Eights against the computer dealt 7 cards each and a move was made. The game list has 42 games; the other games were not re-run on this build. Nobody was present for the Reversi run. Percentage unchanged.",
      "changeHistory": [
        {
          "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
          "changeNote": "Oct 13: through a guest phone on home Wi-Fi, 42 of 42 games opened and 41 started into play with a computer opponent added (the 42nd, \"plates\", asks the host to choose a list first). The game list the app returned has 42 games. Crazy Eights was played by hand against the computer (suit choice and computer turns were correct). This proves games open and start; it does not prove each game is fun or fair, and only Sea Battle has been played start to finish by people. Percentage unchanged. Tested on: Samsung Galaxy S24 Ultra (host) and Samsung Galaxy S9+ (Android 10) (guest in the phone browser) on home Wi-Fi, running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download; the earlier Sea Battle game was played by two people on their own phones over the DIRECT-BeeboTV Wi-Fi route."
        },
        {
          "changedEastern": "Oct 12, 2026, 12:00 PM Eastern",
          "changeNote": "Campsite game-room coverage ran with scripted guests; no other game is claimed as hand-played."
        },
        {
          "changedEastern": "Oct 12, 2026, 12:05 PM Eastern",
          "changeNote": "Tic-Tac-Toe against the computer opponent ran on the guest web page over the temporary Wi-Fi."
        },
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "testedOn": "Published Android 1.51-tester23 (build 73): Samsung Galaxy S9+ (Android 10) as host, a Google Pixel 3 and a Samsung Galaxy S24 Ultra as guests in Chrome, all on the same home Wi-Fi."
    },
    {
      "group": "Android phone app",
      "name": "Shared photos and videos",
      "status": "In development",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 14, 2026 (published tester23: NOT proven); Oct 13, 2026 (one finding, test build)",
      "leftToReach100": "Run a real photo and video presentation with guests (host with a downloaded video and trip sharing open), re-check the silent-video finding and the guest save on the published download; the privacy behaviour needs a careful review first.",
      "roadTo100": {
        "means": "A host presents photos and videos to real guests on their phones, errors are handled, and privacy has been reviewed.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Built, tests pass, tried on a real phone.",
          "Oct 13, 2026, two phones: a shared video played its picture on the guest phone but was silent (open finding); guest save arrived after host approval in a test build.",
          "Oct 14, 2026, published tester23: guest pages loaded; no sharing was open, so shared-video playback and guest Save were not tried. Requests without a valid guest cookie were refused."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Run a presentation with guests on their own phones."
          },
          {
            "kind": "BLOCKED",
            "text": "Sharing and media privacy behaviour needs a careful review."
          },
          {
            "kind": "BLOCKED",
            "text": "No real-world presentation is recorded."
          },
          {
            "kind": "CODE",
            "text": "Find out why a shared downloaded video was silent on a guest phone, and remove the stray \".dat\" from the saved file name."
          }
        ]
      },
      "previousPercent": 60,
      "changedEastern": "Oct 14, 2026, 9:44 PM Eastern",
      "changeNote": "Oct 14: NOT proven on the published tester23. In the three-phone Campsite run the guest Photos/Videos pages loaded, but the host had not opened trip sharing and had no downloaded video ready, so there was nothing to play or save: no Save or “Ask to save” control appeared on any guest page, so a guest save could not be tried. Playing a library film “together” would have downloaded about 489 MB to 2.4 GB onto the host phone, so it was not approved and nothing was played. Access checks without a valid guest cookie (file, media, stream, clips and save addresses) returned 404, 401 or 403 and nothing leaked. The Oct 13 finding (a shared downloaded video that looked silent on a guest phone) was not re-run. Percentage unchanged.",
      "changeHistory": [
        {
          "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
          "changeNote": "Oct 13 (early morning two-phone test): a shared, already-downloaded video played its picture on the guest phone but looked silent there (the phone's audio output was idle and no sound was heard); this is not explained. A library title on the same guest phone played with sound. A guest \"save to my phone\" button (a change not yet merged, tested in a test build) showed only after the host switched it on, needed the host to approve, and the file arrived (about 1.6 GB in about 30 seconds); its name had a stray \".dat\" in it and the saved file was not played back. Percentage unchanged. Tested on: Samsung Galaxy S24 Ultra (host) and Samsung Galaxy S9+ (Android 10) (guest) on home Wi-Fi, running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download."
        },
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "testedOn": "Published Android 1.51-tester23 (build 73): Samsung Galaxy S9+ (Android 10) as host, a Google Pixel 3 and a Samsung Galaxy S24 Ultra as guests, same home Wi-Fi; access checks run from a PC against the host."
    },
    {
      "group": "Android phone app",
      "name": "Wireless speakers",
      "status": "In development",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 13, 2026",
      "leftToReach100": "Test a real speaker group, with guest trim and off controls; add tests for the group limits.",
      "roadTo100": {
        "means": "Real phones act as a speaker group, and guest volume trim and off controls work.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Built, tests pass, tried on a real phone.",
          "Oct 13, 2026, S9+ appeared on the S24 host as a speaker with position, timing nudge and group test (one speaker only; nothing listened for)."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Add tests for group size, trim and off limits."
          },
          {
            "kind": "DEVICE",
            "text": "Set up a real speaker group and use the guest page trim and off controls."
          },
          {
            "kind": "BLOCKED",
            "text": "No group result is recorded."
          }
        ]
      },
      "previousPercent": 60,
      "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
      "changeNote": "Oct 13: the S9+ opened the Campsite music page as a guest, tapped \"Tap to enable audio\" and appeared on the host as a speaker with an On switch, Left/Right/Centre/Rear positions, a timing nudge and a \"Quick group test\". The page warns that a wireless speaker adds delay the app cannot measure. Only one guest speaker was connected and nobody listened for the test clicks, so a real group is still untested. Percentage unchanged.",
      "changeHistory": [
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "testedOn": "Samsung Galaxy S24 Ultra (host) and Samsung Galaxy S9+ (Android 10) (guest speaker) on home Wi-Fi, running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download."
    },
    {
      "group": "Android phone app",
      "name": "Share the app (QR over the hotspot)",
      "status": "Available (test download)",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 14, 2026 (published tester23, Galaxy S9+ host); Oct 13, 2026 (QR scanned; installed over the same build)",
      "leftToReach100": "Install the app through the QR on a phone that never had Beebo, and test bad or expired codes and the 30-minute auto-off.",
      "roadTo100": {
        "means": "A second phone installs the app by scanning the QR over the hotspot, and bad codes are handled.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Built, tests pass, QR page served from a phone.",
          "Oct 13, 2026, real QR scan by a person on a second phone: page, download (checksum matched) and install over the same build worked; \"Turn off sharing\" closed the address.",
          "Oct 14, 2026, published tester23 on a Galaxy S9+: the shared file matched the published APK byte for byte and “Turn off sharing” closed the address."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Add a test for an invalid or expired QR page."
          },
          {
            "kind": "BLOCKED",
            "text": "No second-phone install is recorded."
          },
          {
            "kind": "DEVICE",
            "text": "Install through the QR on a phone that never had Beebo (the Oct 13 install was an update over the same build)."
          }
        ]
      },
      "previousPercent": 60,
      "changedEastern": "Oct 14, 2026, 9:44 PM Eastern",
      "changeNote": "Oct 14: on the published tester23 the Galaxy S9+ host showed the QR and the address and said sharing switches itself off in 30 minutes. The file downloaded from a PC (45,503,408 bytes, SHA-256 starting A04C7222) was byte-identical to the published APK. “Turn off sharing” said guests cannot download the app and the address then answered 404. Not tried: installing it on a second phone (the Oct 13 install was an update over the same build), bad or expired codes and the 30-minute auto-off. Percentage unchanged.",
      "changeHistory": [
        {
          "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
          "changeNote": "Oct 13: the S24 Ultra host showed the QR and address and said sharing switches itself off in 30 minutes. A person pointed the S9+ camera at the QR, the share page loaded, the 43 MB file downloaded (identical SHA-256 to the installed app) and installed (\"App installed\"), and the app opened with no crash. Limits: the S9+ already had this exact build, so it was an update, not a first install on a phone that never had Beebo; iPhone has no file; bad or expired codes and the 30-minute auto-off were not tested. \"Turn off sharing\" made the address answer 404. Percentage unchanged. Tested on: Samsung Galaxy S24 Ultra (host) and Samsung Galaxy S9+ (Android 10) (guest, scanning the QR with its camera), home Wi-Fi, running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download."
        },
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "testedOn": "Samsung Galaxy S9+ (Android 10) as the Campsite host on the same home Wi-Fi, running the published Android 1.51-tester23 (build 73); the file was downloaded from a PC."
    },
    {
      "group": "Android phone app",
      "name": "Wake my PC",
      "status": "Beta",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 13, 2026 (button and message only)",
      "leftToReach100": "Wake a real sleeping PC from the phone, and test the error and retry messages.",
      "roadTo100": {
        "means": "The phone wakes a properly set-up sleeping PC and explains clearly if it cannot.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Wake-packet and error tests pass; tried on a phone earlier.",
          "Oct 13, 2026, S24 Ultra: the Wake my PC button and its message worked on an awake PC (no real wake from sleep)."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Test the error message and retry limits."
          },
          {
            "kind": "DEVICE",
            "text": "Wake a real PC from sleep and record it."
          },
          {
            "kind": "BLOCKED",
            "text": "No wake-from-sleep result is recorded."
          }
        ]
      },
      "previousPercent": 60,
      "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
      "changeNote": "Oct 13: the button sent a wake signal and showed \"Wake signal sent. Give your computer a minute or two to start...\" The PC was awake, so a real wake from sleep was not tested. Percentage unchanged.",
      "changeHistory": [
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "testedOn": "Samsung Galaxy S24 Ultra, running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download."
    },
    {
      "group": "Android phone app",
      "name": "Chromecast",
      "status": "Beta",
      "percentComplete": 80,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": true,
        "Ready to call Available": false
      },
      "lastTested": "Oct 13, 2026 (a person watched the TV)",
      "leftToReach100": "Try other TVs and receivers, converted films, subtitles while casting and a second sender; phone volume buttons do not control the TV volume and are not claimed.",
      "previousPercent": 80,
      "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
      "changeNote": "Oct 13, with a person watching a real Chromecast on the Living Room TV: from the S9+ and from the S24 Ultra the picture and sound were seen on the TV, and pause, play, skip forward, skip back, a quality change and stop casting all worked; the TV returned to idle each time. Phone volume buttons did NOT change the TV volume (volume control from the phone is not claimed). Converted films, subtitles while casting, a second sender and other TVs or receivers were not tested. Percentage unchanged.",
      "changeHistory": [
        {
          "changedEastern": "Oct 12, 2026, 12:05 PM Eastern",
          "changeNote": "Original and converted 480p files both cast to the Living Room TV with picture and sound confirmed by the owner; stopping the cast returned control to the phone."
        },
        {
          "changedEastern": "Oct 11, 2026, 9:38 AM Eastern",
          "changeNote": "Improved casting so the TV returns to idle after a session and shows clearer connection messages; automated tests were added."
        }
      ],
      "roadTo100": {
        "means": "Casting shows the right picture and sound on more than one TV or receiver, with working controls, quality choices and recovery.",
        "done": [
          "Checks passed: Built, Automated tests, Real device, Real-world check.",
          "On the S24 Ultra the Living Room TV was found, connected, accepted pause, resume and fast-forward, and disconnected.",
          "Oct 11, 2026, tester22 build 72: Original and converted 480p files both cast to the Living Room TV with picture and sound confirmed by the owner; stopping the cast returned control to the phone.",
          "Oct 13, 2026, a person watching the TV confirmed picture and sound, pause, play, skip forward and back, a quality change and stop casting, from both phones."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Extend tests for converted films and quality choices where gaps remain."
          },
          {
            "kind": "DEVICE",
            "text": "Try away-from-home casting over mobile data on a real phone."
          },
          {
            "kind": "DEVICE",
            "text": "Try another kind of TV or receiver."
          },
          {
            "kind": "BLOCKED",
            "text": "Away-from-home casting and broader receiver testing remain unverified on this build."
          },
          {
            "kind": "CODE",
            "text": "Phone volume buttons do not change the TV volume while casting; do not claim it (logged as an idea)."
          }
        ],
        "hist": [
          {
            "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
            "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
          },
          {
            "changedEastern": "Oct 9, 2026, 6:30 AM Eastern",
            "changeNote": "Android tester16 code, Oct 9, Samsung S24 Ultra (test build): the Living Room TV was listed, the phone connected to it, pause, resume and fast-forward commands were sent from the phone, then casting was stopped and the phone showed Disconnected. Nobody could see the TV picture, so this shows the session started, accepted commands and ended, not that the picture and sound were checked. Not tested: converting a film for the TV, quality choices, other TVs."
          }
        ]
      },
      "testedOn": "A real Chromecast on the Living Room TV (a normal Chromecast), cast from the Samsung Galaxy S24 Ultra and the Samsung Galaxy S9+ (Android 10), both running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download; a person watched the TV."
    },
    {
      "group": "Android phone app",
      "name": "Beebo Auto (Android Auto)",
      "status": "Available (sideload; first real-car check passed for the listed items on one car, Oct 6, 2026; music, car-screen titles, maps ducking, away from home, passenger games, Car Party and other cars not tested)",
      "percentComplete": 80,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": true,
        "Ready to call Available": false
      },
      "lastTested": "Oct 6, 2026 (one car, one drive)",
      "leftToReach100": "Test music, maps ducking, away from home, passenger games and Car Party in the car, and in more cars.",
      "roadTo100": {
        "means": "Every Beebo Auto feature works in real cars, including after a lost connection, with a safety review.",
        "done": [
          "Checks passed: Built, Automated tests, Real device, Real-world check.",
          "First real-car check passed for the listed items on one car on Oct 6.",
          "Behaviour tests pass."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "In a parked car: music, car-screen titles, maps ducking."
          },
          {
            "kind": "DEVICE",
            "text": "Away from home, passenger games and Car Party."
          },
          {
            "kind": "DEVICE",
            "text": "Try a second car."
          },
          {
            "kind": "CODE",
            "text": "List Android Auto error and offline cases and add tests."
          },
          {
            "kind": "BLOCKED",
            "text": "One car is not enough to call it ready."
          }
        ]
      },
      "previousPercent": 80,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Android phone app",
      "name": "Android TV and Fire TV screens",
      "status": "Beta (TV) / In development (Fire TV)",
      "percentComplete": 40,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Not yet tested on a real device",
      "leftToReach100": "Run it on a real Android TV and a real Fire TV; no device result exists.",
      "roadTo100": {
        "means": "The TV screens and remote control work on a real Android TV and a real Fire TV.",
        "done": [
          "Checks passed: Built, Automated tests.",
          "TV remote-navigation code and tests exist."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Install and use it on a real Android TV."
          },
          {
            "kind": "DEVICE",
            "text": "Install and use it on a real Fire TV."
          },
          {
            "kind": "BLOCKED",
            "text": "TV pairing and sign-in need a careful review first."
          },
          {
            "kind": "BLOCKED",
            "text": "No TV device result exists."
          }
        ]
      },
      "previousPercent": 40,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Android phone app",
      "name": "Google Play version",
      "status": "In development (not submitted)",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 13, 2026 (offline demo)",
      "leftToReach100": "Pass the offline demo check, then Nick completes the Play paperwork and the 14-day closed test; not submitted.",
      "roadTo100": {
        "means": "The Play build passes its policy checks and demo, and Nick finishes Play's paperwork and required closed test.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Play-version policy tests pass; the Play build exists.",
          "Oct 13, 2026, S9+: the offline demo worked (banner, three clips, title page, player, exit)."
        ],
        "remaining": [
          {
            "kind": "NICK",
            "text": "Finish the Play account, paperwork and the 14-day closed test."
          },
          {
            "kind": "BLOCKED",
            "text": "Not submitted to Google Play; that waits for Nick's go-ahead."
          },
          {
            "kind": "CODE",
            "text": "The demo title page promises a subtitles button the demo player does not show; fix the button or the wording."
          }
        ]
      },
      "previousPercent": 60,
      "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
      "changeNote": "Oct 13: the offline \"Look around with sample videos\" demo passed on the S9+: a demo banner, three sample clips, a title page, the player controls (speed 0.25x to 2x listed) and Exit demo back to the real library with no crash. Finding: the demo title page says English subtitles are included, but no subtitles button showed in the demo player. This is the normal app's demo, not a Google Play submission. Percentage unchanged.",
      "changeHistory": [
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "testedOn": "Samsung Galaxy S9+ (Android 10), running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download."
    },
    {
      "group": "Android phone app",
      "name": "Phone Help (show your screen to another phone)",
      "status": "In development (switched off)",
      "percentComplete": 20,
      "checks": {
        "Built": false,
        "Automated tests": true,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Not yet tested on a real device",
      "leftToReach100": "Needs the server side and safe screen sharing built and carefully reviewed, then a two-phone test.",
      "roadTo100": {
        "means": "Screen sharing to a helper's phone works safely with clear consent, tested on two phones and reviewed.",
        "done": [
          "Checks passed: Automated tests.",
          "Some session tests exist, but the feature is switched off."
        ],
        "remaining": [
          {
            "kind": "BLOCKED",
            "text": "Screen capture and privacy design need a careful security review first."
          },
          {
            "kind": "DEVICE",
            "text": "Two-phone test, only after a reviewed build exists."
          }
        ]
      },
      "previousPercent": 20,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Android phone app",
      "name": "Stream from my PC (old button)",
      "status": "Hidden",
      "percentComplete": 0,
      "checks": {
        "Built": false,
        "Automated tests": false,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Not yet tested on a real device",
      "leftToReach100": "Nick decides to replace it with Remote Desktop or remove it.",
      "roadTo100": {
        "means": "Nick picks a replacement or removal, and the chosen version is built, tested and checked on a phone.",
        "done": [
          "Checks passed: none yet.",
          "The old button is hidden."
        ],
        "remaining": [
          {
            "kind": "NICK",
            "text": "Decide: replace it with Remote Desktop or remove it."
          },
          {
            "kind": "BLOCKED",
            "text": "No approved direction yet."
          },
          {
            "kind": "CODE",
            "text": "Build and test the chosen path after the decision."
          }
        ]
      },
      "previousPercent": 0,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Android phone app",
      "name": "Link a TV",
      "status": "In development",
      "percentComplete": 40,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 13, 2026 (server setting read; no TV pairing)",
      "leftToReach100": "Switch it on and pair a real Smart TV, Roku and Android TV; the pairing flow needs a careful security review.",
      "roadTo100": {
        "means": "A phone pairs with a Smart TV, a Roku and an Android TV and recovers if pairing fails.",
        "done": [
          "Checks passed: Built, Automated tests.",
          "Built and tests pass.",
          "Oct 12, 2026: A wrong TV code was refused with a plain message. A real code could not be tried because TV pairing is switched off on the server, so no check changes.",
          "Oct 13, 2026: the Link a TV switch on the live server was read as on."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Pair a real Smart TV, Roku and Android TV."
          },
          {
            "kind": "BLOCKED",
            "text": "Pairing and sign-in tokens need a careful security review first."
          },
          {
            "kind": "BLOCKED",
            "text": "No TV or TV-app pairing result exists, so the feature is not tried even though the server switch is on."
          }
        ]
      },
      "previousPercent": 40,
      "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
      "changeNote": "Oct 13: a read-only check of the live server settings found the Link a TV switch is ON (earlier notes said it was off). Real pairing with a TV was not tried (it needs a TV app showing a code). Percentage unchanged.",
      "changeHistory": [
        {
          "changedEastern": "Oct 12, 2026, 12:00 PM Eastern",
          "changeNote": "A wrong TV code was refused with a plain message. A real code could not be tried because TV pairing is switched off on the server, so no check changes."
        },
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "testedOn": "Server settings read only; no phone or TV was used for pairing."
    },
    {
      "group": "Android phone app",
      "name": "Accessibility choices (large text, high contrast, reduced motion, TalkBack)",
      "status": "In development",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 14, 2026 (published tester23; Large playback controls FAILED, low confidence); Oct 13, 2026 (test build)",
      "leftToReach100": "Run a full TalkBack and 200% font pass on a phone, fix the Large playback controls so they are visibly bigger and fit on screen, then a review.",
      "previousPercent": 60,
      "changedEastern": "Oct 14, 2026, 9:44 PM Eastern",
      "changeNote": "Oct 14: on the published tester23 (Galaxy S9+) High contrast (black with yellow headings, readable), Reduce motion, Simple Mode (it visibly hid Stories on Play and the Tools group on More), Large playback controls and Prefer captions each switched on and off without a crash, and Caregiver view turned on high contrast and the largest text (the bottom tab bar then wrapped to two rows) and turning it off put everything back. Text size 1.3: Home, Browse, Library, Play and More showed no clipped text on the S9+ and the Pixel 3, nor did the Music and More screens on the S24 Ultra, and Beebo's own Larger text 130% opened all five tabs on the S25 (its Library chip row scrolls sideways, so Favourites and Playlists need a scroll). FAILED (low confidence): Large playback controls. With it on, the skip and pause buttons were the same size as with it off and the top button row ran off the right edge (“BAD Q” cut off). Also at 150% text the bottom tab bar wraps to two rows. Prefer captions could not be checked (no film with subtitles). TalkBack was not run. Percentage unchanged.",
      "changeHistory": [
        {
          "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
          "changeNote": "Oct 13: on the S24 Ultra, text at 150% on Home and Browse grew without clipping; High contrast turned the whole app black with yellow headings and stayed readable; Simple Mode, Reduce motion, Large playback controls and Prefer captions switched on and off without a crash; Caregiver view set Simple Mode, High contrast, 150% text and captions together and turning it off put them back. Not proven: that the bigger playback buttons are bigger, that captions came on by themselves (the test film has no captions), a visible Simple Mode effect beyond a small change on Play, 200% text and TalkBack (the screen reader was not turned on). Real device is ticked for the switches; Real-world check is not. Tested on: Samsung Galaxy S24 Ultra, running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download."
        },
        {
          "changedEastern": "Oct 12, 2026, 12:00 PM Eastern",
          "changeNote": "The accessibility switches were tried on and off on a real phone. Found: some text was clipped at 150% text size; fixed in the code, not yet in a published download. A screen reader (TalkBack) was not tried, so no check changes."
        },
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "roadTo100": {
        "means": "Large text, high contrast, reduced motion and TalkBack work across the main screens on the newest build, with a review.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Preference tests pass; some large-text checks were done on a phone.",
          "Oct 12, 2026: The accessibility switches were tried on and off on a real phone. Found: some text was clipped at 150% text size; fixed in the code, not yet in a published download. A screen reader (TalkBack) was not tried, so no check changes.",
          "Oct 13, 2026, S24 Ultra: 150% text, High contrast, Simple Mode, Reduce motion, Large playback controls, Prefer captions and Caregiver view (on and off) all switched without a crash; 150% text and High contrast looked right.",
          "Oct 14, 2026, published tester23: the accessibility switches and Caregiver view worked on a Galaxy S9+; text size 1.3 showed no clipped text on three phones. Large playback controls looked the same size as off (low confidence)."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Add tests for any preference or error state the review finds untested."
          },
          {
            "kind": "DEVICE",
            "text": "Do a full TalkBack pass."
          },
          {
            "kind": "BLOCKED",
            "text": "No full accessibility review is recorded."
          },
          {
            "kind": "DEVICE",
            "text": "Check 200% text for clipped words (150% and High contrast were checked on Oct 13)."
          },
          {
            "kind": "CODE",
            "text": "At 150% text the Caregiver view game cards squeeze their description into a narrow column (cosmetic)."
          },
          {
            "kind": "CODE",
            "text": "With Large playback controls on, the skip and pause buttons looked the same size as with it off and the top button row ran off the right edge (“BAD Q” cut off) on the Galaxy S9+; at 150% text the bottom tab bar wraps to two rows."
          }
        ],
        "hist": [
          {
            "changedEastern": "Oct 7, 2026, 11:30 AM Eastern",
            "changeNote": "tester15: error and loading boxes in Browse keep their size with large text, and label-and-switch rows (tester guide, walkie-talkie settings) read as one control. Automated tests and a 16 of 16 S9+ smoke run; Browse and the walkie-talkie rows at the largest text size and TalkBack not tried on a phone."
          }
        ]
      },
      "testedOn": "Published Android 1.51-tester23 (build 73) on a Samsung Galaxy S9+ (switches, Caregiver view, text size), a Google Pixel 3 and a Samsung Galaxy S24 Ultra (text size 1.3) and a Samsung Galaxy S25 (in-app Larger text 130%)."
    },
    {
      "group": "Android phone app",
      "name": "Music on the phone (albums, songs, player, sleep timer)",
      "status": "Beta",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 14, 2026 (published tester23, four phones); Oct 13, 2026 (three computer-made sample songs; sound not heard)",
      "leftToReach100": "Have a person listen to real music on the phone and test crossfade, gapless, the queue and album and artist radio.",
      "previousPercent": 60,
      "changedEastern": "Oct 14, 2026, 9:44 PM Eastern",
      "changeNote": "Oct 14: the Albums / Artists / Songs buttons no longer sit on the “Mixes and radio” heading. On the published tester23 the Music page shows the heading, then the three cards, then the buttons, with no overlap, on the Galaxy S9+, Pixel 3, Galaxy S24 Ultra (also at text size 1.3) and Galaxy S25. On the S9+ the sample album played (First Hop, then Next to Carrot Waltz) and Pause worked. Sound was muted or not judged by ear in these runs, so “plays” means the app reported playing with the position moving. The songs are still the three computer-made samples. Percentage unchanged.",
      "testedOn": "the published Android 1.51-tester23 (build 73, built Oct 14, 2026, 7:04 AM Eastern, installed from the website download) on a Samsung Galaxy S9+ (Android 10), a Google Pixel 3 (Android 12), a Samsung Galaxy S24 Ultra and a Samsung Galaxy S25 (Android 16), connected to a home computer running the Beebo desktop app (0.1.87 in the S9+ morning run, 0.1.88 in the S24 evening run)",
      "roadTo100": {
        "means": "Real music plays on a phone with sound, crossfade, gapless playback, queue and radio working, and a reviewer signs off.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Oct 13, 2026, S24 Ultra and S9+: sample album listed, play, next, previous, pause, full player, sleep timer and the quality choice worked (sound not heard).",
          "Oct 14, 2026, published tester23: the Music header overlap is gone on a Galaxy S9+, Pixel 3, Galaxy S24 Ultra and Galaxy S25; the sample album played and paused on the S9+ (sound not heard)."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Listen to real music; test crossfade, gapless, queue, lyrics and album and artist radio."
          },
          {
            "kind": "BLOCKED",
            "text": "No recording with real music or sound heard by a person exists."
          }
        ]
      },
      "changeHistory": [
        {
          "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
          "changeNote": "New row. Oct 13: three computer-made sample songs from the home computer showed as an album on both phones; play, next, previous, pause, the full player and the sleep timer (\"End of track\" paused when the song ended) worked, and a Music streaming-quality choice was saved. Nobody listened (phone sound was muted), so \"plays\" means the app reported playing with the position moving. Found: the Albums / Artists / Songs buttons sit on top of the \"Mixes and radio\" heading on both phones. Tested on: Samsung Galaxy S24 Ultra and Samsung Galaxy S9+ (Android 10), both running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download; connected to a home computer running the published desktop 0.1.87."
        }
      ]
    },
    {
      "group": "Android phone app",
      "name": "Family Dashboard, Camp Jobs and Star Chart",
      "status": "Beta",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 13, 2026",
      "leftToReach100": "Use it with a real family for a few days, fix the Add button hiding behind the keyboard, and test Games together.",
      "previousPercent": null,
      "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
      "changeNote": "New row. Oct 13: the Family Dashboard cards (Continue Watching, Downloads, Watchlist, Camp Jobs and Star Chart, Trip Journal, Games together) showed numbers that matched the other screens. Camp Jobs worked end to end on one phone: two names added and kept after leaving the screen, \"Spin the wheel\" shared 7 jobs between them, ticking a job gave a star, and Remove deleted both names. Cosmetic: the Add button hides behind the keyboard until it is closed.",
      "testedOn": "Samsung Galaxy S24 Ultra, running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download.",
      "roadTo100": {
        "means": "A real family uses the dashboard and Camp Jobs on their phones for several days and a reviewer signs off.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Oct 13, 2026, S24 Ultra: Family Dashboard cards matched the other screens; Camp Jobs add, spin, tick, star and remove all worked."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "The Add button hides behind the keyboard until it is closed, and the Enter key does not add a name."
          },
          {
            "kind": "DEVICE",
            "text": "Use it with a real family; test Games together."
          }
        ]
      }
    },
    {
      "group": "Android phone app",
      "name": "Packing List (shared between phones)",
      "status": "Beta",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 13, 2026 (two real phones)",
      "leftToReach100": "Test ticking items off offline and syncing later, then use it on a real trip and get a readiness review on the published download.",
      "previousPercent": null,
      "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
      "changeNote": "New row. Oct 13: an item added and ticked on the S24 Ultra appeared at once on the S9+ as packed, and removing it on the S9+ emptied the list on the S24 about 6 seconds later. Ticking items off with no connection and syncing later was not tested.",
      "testedOn": "Samsung Galaxy S24 Ultra and Samsung Galaxy S9+ (Android 10), both running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download, on home Wi-Fi.",
      "roadTo100": {
        "means": "Two or more phones share one packing list, including offline ticking that syncs later, and a reviewer signs off.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Oct 13, 2026, two real phones: add, tick and remove synced both ways (about 6 seconds)."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Tick items offline and confirm they sync when the connection returns."
          },
          {
            "kind": "BLOCKED",
            "text": "No readiness review of the published download."
          }
        ]
      }
    },
    {
      "group": "Android phone app",
      "name": "Family Recipes and shopping list",
      "status": "Beta",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 13, 2026",
      "leftToReach100": "Test adding and duplicating a recipe, scaling real amounts and a list across recipes.",
      "previousPercent": null,
      "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
      "changeNote": "New row. Oct 13: four starter recipes opened with ingredients, steps and a \"Feeding how many?\" counter (4 changed to 6 and carried into the shopping list); the shopping list ticked (1 of 5) and unticked (0 of 5). Not proven: that amounts scale (the starter ingredients have no amounts), adding or duplicating a recipe, building a list across recipes, and Share.",
      "testedOn": "Samsung Galaxy S24 Ultra, running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download.",
      "roadTo100": {
        "means": "A real family adds recipes, scales amounts, builds a shopping list across recipes and shares it.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Oct 13, 2026, S24 Ultra: starter recipes opened, the people counter reached the shopping list, and ticking worked."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Add and duplicate a recipe, scale real amounts and build a list across recipes."
          },
          {
            "kind": "BLOCKED",
            "text": "Sharing a recipe sends data out and was left untested."
          }
        ]
      }
    },
    {
      "group": "Android phone app",
      "name": "Collections and Request a title",
      "status": "Beta",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 14, 2026 (published tester23); Oct 13, 2026 (test build)",
      "leftToReach100": "Send a real request and confirm it reaches the owner, and test the Complete filter and the trailer buttons.",
      "previousPercent": 60,
      "changedEastern": "Oct 14, 2026, 9:44 PM Eastern",
      "changeNote": "Oct 14: on the published tester23 the Galaxy S9+ listed 101 collections with posters and counts. Searching for a title that is not in the library offered a Request button on the S9+, Pixel 3 and Galaxy S25 (Request a title also opens on the S25), and titles with an ampersand (Law & Order, Tom&Jerry, Dumb & Dumber, Fast & Furious) searched without any error on all four phones. No request was sent, because it would reach the owner's server. Percentage unchanged.",
      "testedOn": "the published Android 1.51-tester23 (build 73, built Oct 14, 2026, 7:04 AM Eastern, installed from the website download) on a Samsung Galaxy S9+ (Android 10), a Google Pixel 3 (Android 12), a Samsung Galaxy S24 Ultra and a Samsung Galaxy S25 (Android 16), connected to a home computer running the Beebo desktop app (0.1.87 in the S9+ morning run, 0.1.88 in the S24 evening run)",
      "roadTo100": {
        "means": "A person browses collections, sees what is missing and sends a request that the owner receives.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Oct 13, 2026, S24 Ultra: collections listed, searched and opened with missing-film markers; the Request a title screen opened.",
          "Oct 14, 2026, published tester23: 101 collections listed (S9+); a missing title showed the Request button and ampersand searches worked on all four phones; no request was sent."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Send a request and see it arrive on the owner side."
          }
        ]
      },
      "changeHistory": [
        {
          "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
          "changeNote": "New row. Oct 13: Collections listed 101 collections with posters and counts; search narrowed 101 to 1 for \"alien\", the Missing films filter kept it, and the Alien Collection showed \"2 of 4 in your library\" with the two missing films dimmed and a \"Look this up\" button. The Request a title screen opened. Sending a request, the Complete filter and the trailer buttons were not tried. Tested on: Samsung Galaxy S24 Ultra, running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download; connected to a home computer running the published desktop 0.1.87."
        }
      ]
    },
    {
      "group": "Windows desktop app",
      "name": "Installer and self-update",
      "status": "Available",
      "percentComplete": 80,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": true,
        "Ready to call Available": false
      },
      "lastTested": "Oct 13, 2026 (update check only)",
      "leftToReach100": "Install over an older version by a person, see the low-disk warning on a real PC, check uninstall removes the start-at-boot task, and get an update-safety review.",
      "previousPercent": 80,
      "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
      "changeNote": "Oct 13: on the dev PC the update screen offered three update modes and the \"Check for updates\" button said \"You're up to date. Beebo 0.1.88 is the latest version.\" No update was installed, no older version was updated over, and the other two modes were not tried. Percentage unchanged.",
      "changeHistory": [
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "roadTo100": {
        "means": "The installer and updater work on real PCs from an older version, warn about low disk space, clean up on uninstall, and the update checks have been independently reviewed.",
        "done": [
          "Checks passed: Built, Automated tests, Real device, Real-world check.",
          "Installer and updater tests pass.",
          "A 0.1.83 install check was done on Oct 9.",
          "Oct 13, 2026, dev PC: the update modes screen and Check for updates worked (no install)."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Independent review of the update-trust checks on the final code."
          },
          {
            "kind": "DEVICE",
            "text": "Install over an older release on a real Windows PC and confirm settings survive."
          },
          {
            "kind": "DEVICE",
            "text": "Check the low-disk-space warning on a real PC."
          },
          {
            "kind": "DEVICE",
            "text": "Uninstall and confirm the start-at-boot task is removed."
          }
        ],
        "hist": [
          {
            "changedEastern": "Oct 9, 2026, 3:58 AM Eastern",
            "changeNote": "Windows 0.1.83: the new signed installer ran on the owner's Windows 11 PC. The app shows version 0.1.83 and opened on its home screen, and Windows reports the program file's signature as valid. Updating from inside the app using the live update feed has not been tried yet, and no film was played in this check."
          }
        ]
      },
      "testedOn": "the Windows dev PC with the desktop 0.1.88 test build (not published)."
    },
    {
      "group": "Windows desktop app",
      "name": "Library, player and web player",
      "status": "Available",
      "percentComplete": 80,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": true,
        "Ready to call Available": false
      },
      "lastTested": "Oct 13, 2026 (all 27 desktop pages; signed-in browser player)",
      "leftToReach100": "Test subtitles, the 5.1 audio track, Safari and Firefox, and a phone browser; get a review of the final screens.",
      "previousPercent": 80,
      "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
      "changeNote": "Oct 13: every page in the Windows app opened with its expected content or a clear empty state (27 pages, no uncaught error in the app's logs). In Chrome on the same PC the signed-in web player answered 17 of 17 pages, played a film with sound at 854x481 with the space bar pausing it, and switched to 720p and 480p and back to Auto while continuing from the same second. Subtitles, the 5.1 track, other browsers and a phone browser were not tested. The desktop window does not play films itself: it opens the file in the PC's own player, and that player's picture and sound were not seen. Percentage unchanged.",
      "changeHistory": [
        {
          "changedEastern": "Oct 12, 2026, 12:00 PM Eastern",
          "changeNote": "Windows 0.1.88 test build: the main screens, the Settings playback panel (including the new skip-intro option) and the hardware table opened and looked right. The web player was seen on its sign-in page only, so signed-in playback in a desktop browser is not claimed. Playback from a phone browser against a home PC passed."
        },
        {
          "changedEastern": "Oct 11, 2026, 9:38 AM Eastern",
          "changeNote": "Fixed multi-disc album cover lookup and title matching for ordinary words; automated tests were added."
        }
      ],
      "roadTo100": {
        "means": "On a real PC the library, desktop player and browser player work through a full journey (seek, tracks, subtitles) on the newest build, with a review.",
        "done": [
          "Checks passed: Built, Automated tests, Real device, Real-world check.",
          "Library and player behaviour tests pass.",
          "Playback checked in earlier tests.",
          "Oct 12, 2026: Windows 0.1.88 test build: the main screens, the Settings playback panel (including the new skip-intro option) and the hardware table opened and looked right. The web player was seen on its sign-in page only, so signed-in playback in a desktop browser is not claimed. Playback from a phone browser against a home PC passed.",
          "Oct 13, 2026, dev PC: 27 desktop pages opened; browser player 17 of 17 pages, playback with sound, pause, and 720p/480p/Auto switching."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Independent review of the final screens."
          },
          {
            "kind": "DEVICE",
            "text": "Open a real library and play local and browser-player media on a real PC."
          },
          {
            "kind": "DEVICE",
            "text": "Check subtitles, the 5.1 audio track and another browser (the Oct 13 test clips have no subtitles)."
          }
        ],
        "hist": [
          {
            "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
            "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
          },
          {
            "changedEastern": "Oct 7, 2026, 11:30 AM Eastern",
            "changeNote": "Windows 0.1.82: collections list a repeated film once and 'Matrix, The' files next to 'The Matrix'; photos ignore impossible time-zone offsets. Automated tests only."
          }
        ]
      },
      "testedOn": "the Windows dev PC with the desktop 0.1.88 test build (not published), with Chrome on the same PC."
    },
    {
      "group": "Windows desktop app",
      "name": "Update modes and start with Windows",
      "status": "Beta",
      "percentComplete": 40,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 13, 2026 (screen and update check only)",
      "leftToReach100": "Run all three update modes and Start with Windows through a real reboot.",
      "roadTo100": {
        "means": "Each update mode behaves correctly and Start with Windows works after a real restart.",
        "done": [
          "Checks passed: Built, Automated tests.",
          "Settings and update-mode tests exist.",
          "Oct 13, 2026, dev PC: the update-mode screen and Check for updates worked."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Independent review of the update-trust checks."
          },
          {
            "kind": "DEVICE",
            "text": "Restart a real Windows PC and confirm Start with Windows."
          },
          {
            "kind": "DEVICE",
            "text": "Try each of the three update modes and view the mode screen."
          }
        ]
      },
      "previousPercent": 40,
      "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
      "changeNote": "Oct 13: the three update modes were shown on the dev PC and \"Check for updates\" worked, but no mode was exercised, no update was installed and Start with Windows was not tried. Percentage unchanged.",
      "changeHistory": [
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "testedOn": "the Windows dev PC with the desktop 0.1.88 test build (not published)."
    },
    {
      "group": "Windows desktop app",
      "name": "Converter and quality / speed settings",
      "status": "Available",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 1, 2026",
      "leftToReach100": "Test on graphics cards from at least two makers, and Nick decides how to replace the bundled video converter for licence reasons.",
      "roadTo100": {
        "means": "Quality and speed settings convert correctly on at least two different graphics-card families, and the converter licence question is settled.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Planner and settings tests pass.",
          "Tested with simulated converter runs."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Run the converter hand-test on two graphics-card families."
          },
          {
            "kind": "NICK",
            "text": "Decide how to replace the bundled video converter for licence reasons."
          }
        ]
      },
      "previousPercent": 60,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Windows desktop app",
      "name": "Live TV (tuner and own playlist)",
      "status": "Beta",
      "percentComplete": 40,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Not yet tested on a real device",
      "leftToReach100": "Tune a real TV tuner and play a real playlist, and review guide and source restrictions.",
      "roadTo100": {
        "means": "A real tuner and a real playlist both work on a PC, with a correct guide and safe source rules.",
        "done": [
          "Checks passed: Built, Automated tests.",
          "Live TV planning tests pass."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Tune a real tuner."
          },
          {
            "kind": "DEVICE",
            "text": "Import and play a real playlist."
          },
          {
            "kind": "CODE",
            "text": "Independent review of the guide, path and source restrictions."
          }
        ]
      },
      "previousPercent": 40,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Windows desktop app",
      "name": "Story Studio",
      "status": "In development",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 1, 2026",
      "leftToReach100": "Build and export a story in the real app, and review how it behaves with household profiles.",
      "roadTo100": {
        "means": "A story is built and exported in the real desktop app, and household profiles are handled safely.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Studio logic and export tests pass."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Build and export a story in the real desktop app."
          },
          {
            "kind": "BLOCKED",
            "text": "Household-profile behaviour needs a careful review first."
          }
        ]
      },
      "previousPercent": 60,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Windows desktop app",
      "name": "Movie Night",
      "status": "In development",
      "percentComplete": 40,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Not yet tested on a real device",
      "leftToReach100": "Run one host and one guest on two real devices, and review the sharing and session behaviour.",
      "roadTo100": {
        "means": "A host and a guest on two real devices join, play, pause and leave together, with the sharing rules reviewed.",
        "done": [
          "Checks passed: Built, Automated tests.",
          "Movie Night behaviour tests pass."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Two real devices: join, play, pause and leave."
          },
          {
            "kind": "CODE",
            "text": "Independent review of the sharing and session rules."
          }
        ]
      },
      "previousPercent": 40,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Windows desktop app",
      "name": "Jellyfin-compatible mode",
      "status": "Beta",
      "percentComplete": 40,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Not yet tested on a real device",
      "leftToReach100": "Try more Jellyfin apps and fix whatever does not work.",
      "roadTo100": {
        "means": "Several real Jellyfin apps connect and play, and anything unsupported is listed.",
        "done": [
          "Checks passed: Built, Automated tests.",
          "Compatibility tests exist and pass."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Connect several real Jellyfin apps and record what works and what does not."
          },
          {
            "kind": "CODE",
            "text": "Add a test for each incompatibility found."
          }
        ]
      },
      "previousPercent": 40,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Windows desktop app",
      "name": "Parental controls and household profiles",
      "status": "Available",
      "percentComplete": 40,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Not yet tested on a real device",
      "leftToReach100": "Check restricted and normal profiles on a real PC, and review the household rules.",
      "roadTo100": {
        "means": "Restricted and normal profiles behave correctly on a real PC and the household rules have been reviewed.",
        "done": [
          "Checks passed: Built, Automated tests.",
          "Parental-control tests pass."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Check restricted and unrestricted profiles on a real PC."
          },
          {
            "kind": "CODE",
            "text": "Independent review of the parental and household rules."
          }
        ]
      },
      "previousPercent": 40,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Windows desktop app",
      "name": "Keyboard and screen-reader support",
      "status": "Available",
      "percentComplete": 40,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Not yet tested on a real device",
      "leftToReach100": "Use a real Windows screen reader and high-contrast mode on the main journeys.",
      "roadTo100": {
        "means": "The library, player and settings can be used with the keyboard and a screen reader in high-contrast mode.",
        "done": [
          "Checks passed: Built, Automated tests.",
          "Keyboard and screen-reader tests pass."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Use a real Windows screen reader on the library, player and settings."
          },
          {
            "kind": "DEVICE",
            "text": "Check high-contrast mode."
          },
          {
            "kind": "CODE",
            "text": "Add tests for the problems found."
          }
        ]
      },
      "previousPercent": 40,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Windows desktop app",
      "name": "Languages (5 translated with machine help, 3 previews)",
      "status": "Beta (machine-assisted; 3 are previews)",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 13, 2026 (English, Spanish on the PC; six languages on a phone)",
      "leftToReach100": "Native speakers review all translations, and long text and right-to-left layouts get checked on a real PC.",
      "roadTo100": {
        "means": "Native speakers have reviewed every language and long or right-to-left text fits on a real PC.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Translation completeness tests pass; five languages are machine-assisted, three are previews.",
          "Oct 13, 2026: Spanish and back on the Windows PC; six languages on a phone (Home and the tab bar)."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Check long text and right-to-left layouts on a real Windows PC."
          },
          {
            "kind": "NICK",
            "text": "Get native-speaker review of every translation."
          }
        ]
      },
      "previousPercent": 40,
      "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
      "changeNote": "Oct 13: on the Windows PC choosing Spanish switched the whole app at once (Ajustes, Panel, Usuarios, Historial...) and Automatic switched it back to English. On the S24 Ultra phone app the language button switched Home and the tab bar live to Deutsch, Espanol, Francais, Italiano and Portugues (Brasil). Native speakers have not reviewed any wording, and long text, right-to-left layouts and the other desktop languages were not checked. Real device is ticked for switching.",
      "changeHistory": [
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "testedOn": "the Windows dev PC with the desktop 0.1.88 test build (not published) (English and Spanish); Samsung Galaxy S24 Ultra running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download (six languages, Home and tabs only)."
    },
    {
      "group": "Windows desktop app",
      "name": "Posters and info (TMDB)",
      "status": "Available",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 1, 2026",
      "leftToReach100": "Nick decides about a commercial TMDB licence for a paid product, then offline behaviour is checked on a real PC.",
      "roadTo100": {
        "means": "Posters and info work, fail gracefully offline on a real PC, and our use of TMDB is properly licensed for any paid product.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Poster and info tests pass."
        ],
        "remaining": [
          {
            "kind": "NICK",
            "text": "Decide about a commercial TMDB licence."
          },
          {
            "kind": "DEVICE",
            "text": "Check offline and degraded behaviour on a real PC after the decision."
          }
        ]
      },
      "previousPercent": 60,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Windows desktop app",
      "name": "Remote Desktop (see and control the PC)",
      "status": "In development",
      "percentComplete": 40,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 2, 2026",
      "leftToReach100": "Test on the same Wi-Fi and away from home, with mouse, keyboard, approval prompts, disconnect and revoke, and review the safety.",
      "roadTo100": {
        "means": "A phone can see and control a PC with clear approvals, and disconnect and revoke work, tested on same Wi-Fi and away from home and reviewed.",
        "done": [
          "Checks passed: Built, Automated tests.",
          "Safety-focused tests pass."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Test same-Wi-Fi view and control with mouse and keyboard."
          },
          {
            "kind": "DEVICE",
            "text": "Test away from home."
          },
          {
            "kind": "DEVICE",
            "text": "Check the approval prompts, disconnect and revoke."
          },
          {
            "kind": "CODE",
            "text": "Independent review of the remote-control safety design."
          }
        ]
      },
      "previousPercent": 40,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Windows desktop app",
      "name": "Space Saver",
      "status": "Beta",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 14, 2026 (published tester23, camera backup on a Galaxy S9+; the screen opened on three phones); Oct 12, 2026 (phone upload to a home PC; 3 files arrived)",
      "leftToReach100": "Back up a full real phone folder, check the copy, then do the confirmed removal and see the result on a PC.",
      "roadTo100": {
        "means": "A real phone folder is backed up and verified, the confirmed removal works, and the delete steps have been reviewed.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Storage and photo tests pass.",
          "Oct 12, 2026: uploading from a real phone to a home PC with Space Saver backup worked; 3 files arrived.",
          "Oct 14, 2026, published tester23 on a Galaxy S9+: a new photo was backed up to the home computer by the automatic run (3 to 4 files); the Photos & backups screen opened on three phones."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Back up a full real phone folder (the Oct 12 test copied 3 files) and verify the copy."
          },
          {
            "kind": "DEVICE",
            "text": "Do the confirmed removal and check the PC result."
          },
          {
            "kind": "CODE",
            "text": "Independent review of the delete and overwrite steps."
          }
        ]
      },
      "previousPercent": 60,
      "changedEastern": "Oct 14, 2026, 9:44 PM Eastern",
      "changeNote": "Oct 14: on the published tester23 the Photos & backups screen opened with its four tabs (Library, Camera backup, Folders & cleanup, Private folder) on the Galaxy S9+, Pixel 3 and Galaxy S24 Ultra; nothing was copied or removed on the Pixel and S24. On the S9+ a new test photo put in the camera folder was uploaded by the automatic run within about 8 minutes (the count went from 3 to 4 files) and the page said “Up to date”. Not tried: the confirmed removal of phone copies, mobile data, the remove-location switch and held-back files. Percentage unchanged.",
      "changeHistory": [
        {
          "changedEastern": "Oct 12, 2026, 12:00 PM Eastern",
          "changeNote": "The Real device check passed: a real phone uploaded 3 files to a home PC. The removal step was not tried."
        },
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "testedOn": "Published Android 1.51-tester23 (build 73): a Samsung Galaxy S9+ (Android 10, camera backup to a home computer running the Beebo desktop app 0.1.87) and a Google Pixel 3 and Samsung Galaxy S24 Ultra (the screen only)."
    },
    {
      "group": "Windows desktop app",
      "name": "Library sharing with another household",
      "status": "In development",
      "percentComplete": 80,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": true,
        "Ready to call Available": false
      },
      "lastTested": "Oct 13, 2026 (Shared with you screen only; the real share test was Oct 12)",
      "leftToReach100": "Re-test the fixes for three problems found in the test (a guest dropped to a sign-in screen with no way back, a stopped share still looking active in the guest's list, a download button on a share with downloads off; all fixed in the code, not yet in a published download), settle the sharing terms, and review readiness.",
      "roadTo100": {
        "means": "A real second household accepts an invite and watches shared titles under approved terms.",
        "done": [
          "Checks passed: Built, Automated tests, Real device, Real-world check.",
          "Sharing route and screen tests pass.",
          "Oct 12, 2026, two separate homes: an invite was sent and accepted, a shared title played, and \"stop sharing\" refused new playback within about 30 seconds.",
          "Oct 13, 2026, S24 Ultra: the Shared with you screen opened and asked for a sign-in before opening a shared library (screens only)."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Independent readiness review of the sharing rules."
          },
          {
            "kind": "DEVICE",
            "text": "Re-test on real devices the fixes for the three problems found (guest stuck on a sign-in screen, stopped share still shown as active, download button shown when downloads are off). Fixed in the code, not yet in a published download."
          },
          {
            "kind": "DEVICE",
            "text": "Test a House-to-House share started from a PC."
          },
          {
            "kind": "NICK",
            "text": "Decide the sharing terms."
          }
        ],
        "hist": [
          {
            "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
            "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
          }
        ]
      },
      "previousPercent": 80,
      "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
      "changeNote": "Oct 13: on the S24 Ultra the \"Shared with you\" screen opened and showed the test shared library with Watch, Leave and Report a problem; Watch asked for a sign-in before anything opened, and Enter an invite code, Find my shares and Report a problem opened and were cancelled. No invite was accepted, nothing was watched and no report was sent, so the Oct 12 two-home result stands and the percentage did not change.",
      "changeHistory": [
        {
          "changedEastern": "Oct 12, 2026, 12:00 PM Eastern",
          "changeNote": "The Real device and Real-world checks passed: an invite was sent and accepted, a shared title played, and stopping the share refused new playback within about 30 seconds, between two real homes on different networks. Problems found in the same test are fixed in the code, not yet in a published download, so the Ready check stays open."
        },
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "testedOn": "Samsung Galaxy S24 Ultra, running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download (screens only; nothing was signed in to or sent)."
    },
    {
      "group": "Windows desktop app",
      "name": "Strong volume leveler",
      "status": "In development",
      "percentComplete": 40,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 3, 2026",
      "leftToReach100": "Listen to a real film on real speakers in both modes and record what you hear.",
      "roadTo100": {
        "means": "On real speakers a real film sounds more even in both modes, with before and after notes.",
        "done": [
          "Checks passed: Built, Automated tests.",
          "Loudness tests pass; a test on Oct 3 flattened a 26 dB swing to about 1.5 dB."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Listen to a real film on real speakers in both modes and write down what you hear."
          },
          {
            "kind": "CODE",
            "text": "Add a test if the listening finds a repeatable fault."
          }
        ]
      },
      "previousPercent": 40,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Windows desktop app",
      "name": "Phone speakers (phones play the film's sound)",
      "status": "Beta",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 13, 2026 (two phones as a stereo pair; alignment not proven)",
      "leftToReach100": "Measure real alignment (a recording of both speakers), fix the false Bluetooth warning, the PC speaker seat and the Add output button, and test surround, more than two phones, a late joiner and seeking.",
      "previousPercent": null,
      "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
      "changeNote": "New row. Oct 13, early morning: with the PC showing a 51-second film, the S24 Ultra joined as Stereo left and the S9+ as Stereo right (link opened by hand, not scanned). Both showed \"in sync\" within about 3 to 5 ms, Nick heard the beeps and said the film \"sounds so cool\", and one phone \"sounded off a tiny bit\". The recorded drift averaged 2.3 ms (S24) and 1.2 ms (S9). It does not prove the two speakers are truly aligned: the numbers are the phones' own estimates. Found: both pages warned about Bluetooth delay although neither phone used Bluetooth; over plain HTTP a phone cannot use its microphone, so \"map the room\" cannot work; with a USB speaker as centre in Surround layout the PC speaker played nothing until Watch together was pressed, and the \"Add\" button for a second output did nothing; repeated clicks left extra player windows open.",
      "testedOn": "the Windows dev PC with the desktop 0.1.88 test build (not published); Samsung Galaxy S24 Ultra and Samsung Galaxy S9+ (Android 10), both opened in the phone browser on home Wi-Fi (no app needed).",
      "roadTo100": {
        "means": "Phones play the film's sound in true alignment as a stereo pair and surround group, with clear wording and a reviewer sign-off.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Oct 13, 2026, PC and two real phones: join, seats, in-sync readout, beeps heard, film played through the phones."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Remove the false \"Bluetooth\" warning, fix the PC speaker seat and the Add output button that does nothing, and close extra player windows."
          },
          {
            "kind": "DEVICE",
            "text": "Prove true alignment by recording both speakers; test surround, more than two phones, Bluetooth, screen off, a late joiner and seeking."
          },
          {
            "kind": "BLOCKED",
            "text": "Phone microphones need a secure page, so automatic line-up needs a design decision."
          }
        ]
      }
    },
    {
      "group": "Windows desktop app",
      "name": "Music on the PC (library, mixes, desktop player)",
      "status": "In development",
      "percentComplete": 40,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 13, 2026 (the desktop player FAILED to play)",
      "leftToReach100": "Merge the fix, re-test in the real desktop window with sound heard by a person, then test queue and radio.",
      "previousPercent": null,
      "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
      "changeNote": "New row. Oct 13: the PC scanned three sample songs (\"3 songs, 1 album, 1 artist\") and the mixes turned Ready, but the music bar in the desktop window stayed at 0:00 and nothing played, so no sound could be confirmed (FAIL). A helper found the cause: the installed window gave the songs relative stream addresses it cannot load. The fix is on a branch, not merged and not in a published download, and was not re-tested in the real window. Real device is therefore not ticked.",
      "testedOn": "the Windows dev PC with the desktop 0.1.88 test build (not published), with three computer-made sample songs.",
      "roadTo100": {
        "means": "Music plays with sound in the desktop window, mixes start, and a reviewer signs off.",
        "done": [
          "Checks passed: Built, Automated tests.",
          "Oct 13, 2026, dev PC: library scan read titles, artist, album and track numbers; mixes became Ready."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Merge the fix for relative stream addresses (the desktop window could not load songs)."
          },
          {
            "kind": "DEVICE",
            "text": "Re-test in the real desktop window and confirm sound by ear."
          }
        ]
      }
    },
    {
      "group": "Windows desktop app",
      "name": "Home layouts and Customize layout (desktop)",
      "status": "Beta",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 13, 2026",
      "leftToReach100": "Test row dragging, keyboard row moves, Comfortable density and layout share and import; fix the layout list covering the top picture.",
      "previousPercent": null,
      "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
      "changeNote": "New row. Oct 13: all five Home layouts (Gallery Flow, Focus and Queue, Studio Canvas, Command Deck, High-Impact Theater) opened with real content and no blank screen. In Customize layout, Cancel discarded a hidden row and the Compact density, Save applied them, and Reset to default plus Save brought everything back. Dragging a row, Alt+Up/Down, the Comfortable density, and sharing or importing a layout were not tested; the layout list stays open over part of the top picture after each choice.",
      "testedOn": "the Windows dev PC with the desktop 0.1.88 test build (not published), with a small sample library.",
      "roadTo100": {
        "means": "Every layout and customization option works on a real PC with a real library, with a reviewer sign-off.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Oct 13, 2026, dev PC: all five layouts opened; Customize layout cancel, save and reset worked."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Test dragging a row, Alt+Up/Down, Comfortable density and layout share and import."
          },
          {
            "kind": "CODE",
            "text": "The layout list stays open over part of the top picture after each choice."
          }
        ]
      }
    },
    {
      "group": "Other systems",
      "name": "Linux server (headless, Docker)",
      "status": "Beta",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 2, 2026",
      "leftToReach100": "Run on an ARM or Raspberry Pi and a real NAS, including video conversion.",
      "roadTo100": {
        "means": "The Linux server runs on common hardware (including ARM and a real NAS) and converts video.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Built and tests pass; a virtual run worked."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Run on a Raspberry Pi or other ARM device."
          },
          {
            "kind": "DEVICE",
            "text": "Run on a real NAS and convert a video."
          },
          {
            "kind": "CODE",
            "text": "Fix and test any fault those runs find."
          }
        ]
      },
      "previousPercent": 60,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Other systems",
      "name": "Linux desktop app",
      "status": "Beta",
      "percentComplete": 40,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 2, 2026",
      "leftToReach100": "Install and run it on a real Linux desktop: tray, conversion, update and reinstall.",
      "roadTo100": {
        "means": "A clean Linux install runs, shows its tray icon, converts video, updates and reinstalls.",
        "done": [
          "Checks passed: Built, Automated tests.",
          "Built and started in a virtual machine."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Clean install and launch on a real Linux desktop."
          },
          {
            "kind": "DEVICE",
            "text": "Check the tray, conversion, update and reinstall."
          },
          {
            "kind": "CODE",
            "text": "Fix and test any fault found."
          }
        ]
      },
      "previousPercent": 40,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Other systems",
      "name": "macOS desktop",
      "status": "In development",
      "percentComplete": 40,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Automated tests only, run on Windows (Oct 9, 2026). Never run on a Mac.",
      "leftToReach100": "Run on Intel and Apple Silicon Macs, and Nick decides about signing.",
      "previousPercent": 40,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change.",
      "changeHistory": [
        {
          "changedEastern": "Oct 9, 2026, 4:50 AM Eastern",
          "changeNote": "20 automated checks for the Mac build now pass, plus a new Oct 8 check that the Mac download page refuses a link with a password in it. They cover the packaging settings, update rules and video-encoder choice, not a running Mac app. Nobody has opened it on a real Mac."
        }
      ],
      "roadTo100": {
        "means": "The Mac app is signed, opens without warnings and plays and converts on both Mac types.",
        "done": [
          "Checks passed: Built, Automated tests.",
          "Built by the automatic builder only; unsigned."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Run the current build on an Intel Mac."
          },
          {
            "kind": "DEVICE",
            "text": "Run it on an Apple Silicon Mac (playback, conversion, permissions, update)."
          },
          {
            "kind": "NICK",
            "text": "Decide about Apple signing and notarization."
          },
          {
            "kind": "CODE",
            "text": "Fix and test any fault found."
          }
        ]
      }
    },
    {
      "group": "Services and website",
      "name": "Our own servers and DNS",
      "status": "Available",
      "percentComplete": 80,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": true,
        "Ready to call Available": false
      },
      "lastTested": "Oct 6, 2026",
      "leftToReach100": "Nick approves removing the old Cloudflare leftovers, then DNS and secure-connection checks are repeated.",
      "roadTo100": {
        "means": "Everything runs only on our own servers and name servers, with the leftovers removed and rechecked.",
        "done": [
          "Checks passed: Built, Automated tests, Real device, Real-world check.",
          "Own servers and name servers are live; DNS tests pass."
        ],
        "remaining": [
          {
            "kind": "NICK",
            "text": "Approve removing the old Cloudflare leftovers."
          },
          {
            "kind": "DEVICE",
            "text": "Repeat the DNS and secure-connection checks after removal."
          }
        ]
      },
      "previousPercent": 80,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Services and website",
      "name": "Beebo Relay (fallback connection)",
      "status": "Beta",
      "percentComplete": 80,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": true,
        "Ready to call Available": false
      },
      "lastTested": "Oct 14, 2026 (published tester23 forced through Beebo Relay on 5G); Oct 13, 2026 (test build); Oct 12, 2026 (friend's house, published Windows 0.1.87)",
      "leftToReach100": "Retest through Beebo Relay without forcing it, on the published builds (Windows 0.1.88 and Android 1.51-tester23), with the home PC behind a router that cannot make a direct connection, to tick Ready to call Available (a forced Relay pass on those builds worked on Oct 14); Nick decides the price and entitlement rules, a customer-facing way to switch Relay on is merged and tested, and the fallback is proven with two people at once.",
      "roadTo100": {
        "means": "Relay carries video across two real networks, recovers after a drop, and its price is decided.",
        "done": [
          "Checks passed: Built, Automated tests, Real device, Real-world check.",
          "Relay is live; Relay tests pass.",
          "Oct 12, 2026, about 4:00 to 4:30 AM Eastern, with the published Windows 0.1.87 on a 4-core home PC at a friend's house (router with no UPnP answer) and a Samsung Galaxy S24 Ultra on 5G: with Beebo Relay off the phone could not connect directly; after the owner switched Relay on, it connected through Beebo Relay in about one second and several videos played (fast-forward and pause worked). Not measured with a stopwatch; the usage counter did not move in the first two minutes.",
          "Sep 17-18, 2026 (older builds): away from home through Beebo Relay proven at a friend's house (recorded in the project log).",
          "Oct 12, 2026: A phone on 5G played through Beebo Relay once it was switched on; the first picture came in about 3 seconds. Two people on the relay at once were not tested.",
          "Oct 13, 2026, S24 Ultra on 5G: a film played through Beebo Relay after the account switch was turned on; the usage counter moved with a delay.",
          "Oct 14, 2026, published tester23 on a Galaxy S24 Ultra on 5G with “Always use Beebo Relay” forced on, home computer on desktop 0.1.88: the route screen and app log showed Beebo Relay and a film played (30 MB). A forced test, not the natural fallback."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "To tick Ready to call Available: retest through Beebo Relay without forcing it, on the currently published builds (Windows 0.1.88 and Android 1.51-tester23), on a real phone on mobile data, with the home PC behind a router that cannot make a direct connection, and record the result. (A forced Relay pass on those builds worked on Oct 14.)"
          },
          {
            "kind": "DEVICE",
            "text": "Prove fallback and recovery across two real networks."
          },
          {
            "kind": "NICK",
            "text": "Decide pricing and who gets Relay."
          },
          {
            "kind": "CODE",
            "text": "No screen lets a customer switch Beebo Relay on for their own account; the fix is written but not merged."
          }
        ]
      },
      "previousPercent": 80,
      "changedEastern": "Oct 14, 2026, 9:44 PM Eastern",
      "changeNote": "Oct 14 (evening): one forced-relay pass on the published builds. On a Galaxy S24 Ultra on 5G (Wi-Fi off) running the published Android 1.51-tester23, with “Always use Beebo Relay” switched on for the test (it was off before and was put back off), the route screen read “Beebo Relay (you chose Always use Beebo Relay)”, “Phone > Beebo Relay > your PC”, the app log showed the relay path, and a film played (“This connection: 30 MB”). The home computer was the one running desktop 0.1.88. The Relay usage counter did not move for those 30 MB (a counter delay seen before). The owner was present and watching, per his statement. This was a forced test on a home that can also be reached directly, so it is not the natural-fallback case this row still needs: a home PC behind a router that cannot make a direct connection, on the published builds. Not tested: the second (4-core) home through Beebo Relay from the S24 (the phone had no way to open it) and two people at once. Percentage unchanged at 80; Ready to call Available stays not yet; status stays Beta.",
      "changeHistory": [
        {
          "changedEastern": "Oct 14, 2026, 10:48 AM Eastern",
          "changeNote": "Oct 14: added the real-world record behind the Real device and Real-world ticks. On Oct 12, 2026 (about 4:00 to 4:30 AM Eastern) a home PC running the published Windows 0.1.87, at a friend's house on a router with no automatic port opening (UPnP got no answer), could not be reached directly from the phone browser of a Samsung Galaxy S24 Ultra on 5G (\"Couldn't connect directly\"); after the owner switched Beebo Relay on, the phone connected through Beebo Relay in about one second and several videos played, with fast-forward and pause working. Earlier proof: away from home through Beebo Relay at a friend's house on Sep 17-18, 2026 (older builds). Ready to call Available is still not ticked: it needs a retest through Beebo Relay on the currently published builds (Windows 0.1.88 and Android 1.51-tester23). Percentage unchanged at 80. Tested on: Samsung Galaxy S24 Ultra on 5G mobile data (Wi-Fi off), running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download; Beebo Relay on our own server; the home computer runs the published desktop 0.1.87. Oct 12, 2026 record: the phone browser of a Samsung Galaxy S24 Ultra on 5G to a 4-core Windows PC at a friend's house running the published desktop 0.1.87, through Beebo Relay on our own server (the phone also had the published Android 1.51-tester22 installed)."
        },
        {
          "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
          "changeNote": "Oct 13: at first the phone could not use Beebo Relay: the test account's relay switch was off on the server, so the app (as designed) fell back to the normal connection. After the owner ran a script to switch it on, the S24 Ultra on 5G with Wi-Fi off connected through Beebo Relay and played a film (about 106 MB; the route card said Beebo Relay). The monthly usage counter moved from 4.1 to 4.3 GB about 20 minutes later, so usage is counted with a delay. Gap found: no screen in the phone app, desktop app or website lets a customer switch Relay on for their own account (a fix is written but not merged). Two people on Relay at once were not tested. Percentage unchanged."
        },
        {
          "changedEastern": "Oct 12, 2026, 12:00 PM Eastern",
          "changeNote": "A phone on 5G played through Beebo Relay once it was switched on; the first picture came in about 3 seconds. Two people on the relay at once were not tested."
        },
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "testedOn": "Samsung Galaxy S24 Ultra on 5G mobile data (Wi-Fi off), running the published Android 1.51-tester23 (build 73) with “Always use Beebo Relay” switched on for the test, through Beebo Relay on our own server to a home computer running the Beebo desktop app 0.1.88. Earlier record (Oct 12, 2026): the phone browser of a Samsung Galaxy S24 Ultra on 5G to a 4-core Windows PC at a friend's house running the published desktop 0.1.87, through Beebo Relay on our own server (the phone also had the published Android 1.51-tester22 installed)."
    },
    {
      "group": "Services and website",
      "name": "Website and browser games",
      "status": "Available",
      "percentComplete": 80,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": true,
        "Ready to call Available": false
      },
      "lastTested": "Oct 1, 2026",
      "leftToReach100": "Check on real phones with touch and in Safari and Firefox; online play stays off until Nick approves its scope.",
      "roadTo100": {
        "means": "The browser games work with touch, Safari and Firefox on real devices.",
        "done": [
          "Checks passed: Built, Automated tests, Real device, Real-world check.",
          "Game logic tests pass; the games are live."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Check touch on real phones and Safari and Firefox."
          },
          {
            "kind": "NICK",
            "text": "Decide the scope of public online play."
          },
          {
            "kind": "CODE",
            "text": "Fix any fault found."
          }
        ]
      },
      "previousPercent": 80,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Services and website",
      "name": "Password reset and email verification",
      "status": "In development (switched off)",
      "percentComplete": 40,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Not yet tested on a real device",
      "leftToReach100": "Nick approves a mail service, then reset, expiry, delivery and verification are tested with real email.",
      "roadTo100": {
        "means": "People can reset a password and verify their email with real messages arriving, with expiry and abuse limits tested.",
        "done": [
          "Checks passed: Built, Automated tests.",
          "Built and tests pass; switched off."
        ],
        "remaining": [
          {
            "kind": "NICK",
            "text": "Approve a way to send email."
          },
          {
            "kind": "DEVICE",
            "text": "Test reset, expiry, delivery and verification with real mail clients."
          },
          {
            "kind": "CODE",
            "text": "Safe delivery and abuse-limit fixes."
          }
        ]
      },
      "previousPercent": 40,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Services and website",
      "name": "Online games (play with others)",
      "status": "In development",
      "percentComplete": 40,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Not yet tested on a real device",
      "leftToReach100": "Nick approves a real-server test with private players, then matching, reconnect and moderation are tested.",
      "roadTo100": {
        "means": "Real players find matches, reconnect and are moderated safely on the real server.",
        "done": [
          "Checks passed: Built, Automated tests.",
          "Game engine and connection tests pass; load-tested earlier."
        ],
        "remaining": [
          {
            "kind": "NICK",
            "text": "Approve a test on the real server with private players."
          },
          {
            "kind": "DEVICE",
            "text": "Test matching, reconnect and moderation with real players."
          },
          {
            "kind": "CODE",
            "text": "Operational fixes from that test."
          }
        ]
      },
      "previousPercent": 40,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Services and website",
      "name": "Walkie-talkie from anywhere",
      "status": "In development",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 1, 2026",
      "leftToReach100": "Test with two real phones on unrelated networks.",
      "roadTo100": {
        "means": "Two phones on different networks talk to each other reliably.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Server and connection tests pass; switched off."
        ],
        "remaining": [
          {
            "kind": "DEVICE",
            "text": "Two phones on different networks."
          },
          {
            "kind": "CODE",
            "text": "Fix and test any fault found."
          }
        ]
      },
      "previousPercent": 60,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Services and website",
      "name": "Portrait Party (turn a photo into a card)",
      "status": "Planned",
      "percentComplete": 40,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Not yet tested on a real device",
      "leftToReach100": "Wire it to a menu, run it on a supported device, and Nick decides when it stops being Planned.",
      "roadTo100": {
        "means": "The feature is reachable from a menu, tested on a supported device, and its public status is decided.",
        "done": [
          "Checks passed: Built, Automated tests.",
          "Card-making code exists but is not reachable from any menu."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Add the menu entry and tests."
          },
          {
            "kind": "DEVICE",
            "text": "Run it on a supported device."
          },
          {
            "kind": "NICK",
            "text": "Decide when to change its status from Planned."
          }
        ]
      },
      "previousPercent": 40,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Services and website",
      "name": "Trip Journal link away from home",
      "status": "In development",
      "percentComplete": 60,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Oct 13, 2026 (one phone on 5G, one home computer)",
      "leftToReach100": "Open a real link on another person's phone away from home, test expiry and turning a link off away from home, and test the link while the home computer is off.",
      "roadTo100": {
        "means": "A trip link opens from another network, expires on time and can be revoked.",
        "done": [
          "Checks passed: Built, Automated tests, Real device.",
          "Server link code and tests pass; switched off.",
          "Oct 13, 2026, S24 Ultra on 5G: a trip link opened with a photo and a clip that played to the end (first real out-of-home test).",
          "Oct 13, 2026: the older home-address link failed from outside the home (the router did not let it in); it works on home Wi-Fi only."
        ],
        "remaining": [
          {
            "kind": "CODE",
            "text": "Fix edge cases found."
          },
          {
            "kind": "DEVICE",
            "text": "Open a link from another person's phone away from home; test expiry and revoke away from home."
          },
          {
            "kind": "CODE",
            "text": "The trip link card says \"Can be opened from anywhere the internet reaches your computer\" before its router warning; reword so it does not mislead."
          }
        ]
      },
      "previousPercent": 40,
      "changedEastern": "Oct 13, 2026, 2:00 PM Eastern",
      "changeNote": "Oct 13: after the owner switched on the server setting and ticked \"Let trip links work away from home\" on the home computer, a new trip link opened in Chrome on the S24 Ultra on 5G with Wi-Fi off: the trip page, the test photo and a clip that played to the end. This is the first real out-of-home test of a trip link, with one phone and one computer. A second person's phone, an iPhone, expiry, many viewers, a very large clip and the link while the home computer is off were not tested. The older home-address link (served straight from the home computer on a port) did NOT open from outside the home on 5G because the router did not let it in; it works on the home Wi-Fi only. Real device is ticked; Real-world check waits for another person's phone.",
      "changeHistory": [
        {
          "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
          "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
        }
      ],
      "testedOn": "Samsung Galaxy S24 Ultra on 5G mobile data (Wi-Fi off), running a test build of the current code made on Oct 13 (the published 1.51-tester22 plus some unmerged fixes; the app still shows 1.51-tester22), not the published download; the link was served from a home computer running the published desktop 0.1.87 through Beebo's server."
    },
    {
      "group": "Services and website",
      "name": "BeeboVPN",
      "status": "In development",
      "percentComplete": 55,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": true,
        "Real-world check": true,
        "Ready to call Available": false
      },
      "lastTested": "Owner test on one Windows PC, a few days before Oct 7, 2026 (exact date not recorded), on an earlier build",
      "leftToReach100": "Check paid plans, release of a reserved slot, the split-tunnel driver, installer, DNS and kill switch on a real PC, and review the security.",
      "previousPercent": 55,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change.",
      "changeHistory": [
        {
          "changedEastern": "Oct 7, 2026, 2:28 PM Eastern",
          "changeNote": "The owner connected on one Windows PC and reached a site that his internet provider blocks. That was an earlier build; the newer features have not been tried. Automated checks pass; paid plans, the split-tunnel driver and the installer are not yet proven."
        }
      ],
      "roadTo100": {
        "means": "BeeboVPN works end to end on real PCs including paid plans, split tunnelling, DNS and kill switch, with a careful security review.",
        "done": [
          "Checks passed: Built, Automated tests, Real device, Real-world check.",
          "Server and entitlement tests pass.",
          "The owner tried one PC on an earlier build and got past an ISP-blocked site."
        ],
        "remaining": [
          {
            "kind": "NICK",
            "text": "Decide paid plans, server choices and early release of a reserved slot."
          },
          {
            "kind": "DEVICE",
            "text": "Test the split-tunnel driver, installer, DNS leaks and kill switch on a real PC."
          },
          {
            "kind": "BLOCKED",
            "text": "Paid access can only be set up by Nick on the live server."
          },
          {
            "kind": "CODE",
            "text": "Safe follow-up fixes after a careful security review."
          }
        ]
      }
    },
    {
      "group": "Services and website",
      "name": "Rewards, ads and credit",
      "status": "Planned (switched off)",
      "percentComplete": 40,
      "checks": {
        "Built": true,
        "Automated tests": true,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Not yet tested on a real device",
      "leftToReach100": "Nick decides the policy and whether to switch it on; then app screens are checked with real data and fraud rules are reviewed.",
      "roadTo100": {
        "means": "Rewards, ads and credit work with real data, fraud is blocked, and Nick has approved turning it on.",
        "done": [
          "Checks passed: Built, Automated tests.",
          "Ledger and reward tests pass; switched off."
        ],
        "remaining": [
          {
            "kind": "NICK",
            "text": "Decide the policy and whether to enable it."
          },
          {
            "kind": "DEVICE",
            "text": "Check the app screens with approved real data."
          },
          {
            "kind": "CODE",
            "text": "More fraud and ledger tests, after a careful review."
          }
        ]
      },
      "previousPercent": 40,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Services and website",
      "name": "Beebo Play (hosted game servers)",
      "status": "Planned",
      "percentComplete": 0,
      "checks": {
        "Built": false,
        "Automated tests": false,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Not yet tested on a real device",
      "leftToReach100": "Nick approves scope, price and running costs first; nothing is built yet beyond a plan.",
      "roadTo100": {
        "means": "Hosted game servers run safely with backups, monitoring and abuse handling.",
        "done": [
          "Checks passed: none yet.",
          "Planning notes only."
        ],
        "remaining": [
          {
            "kind": "NICK",
            "text": "Approve scope, pricing and operations."
          },
          {
            "kind": "CODE",
            "text": "Build and test the control system."
          },
          {
            "kind": "DEVICE",
            "text": "Run a staged test with monitoring and backups."
          },
          {
            "kind": "BLOCKED",
            "text": "No infrastructure approved."
          }
        ]
      },
      "previousPercent": 0,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Services and website",
      "name": "Managed hosting",
      "status": "Planned",
      "percentComplete": 0,
      "checks": {
        "Built": false,
        "Automated tests": false,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Not yet tested on a real device",
      "leftToReach100": "Nick decides scope, price, data retention and support; nothing is built yet.",
      "roadTo100": {
        "means": "Managed hosting runs with controls, backups and tested incident drills.",
        "done": [
          "Checks passed: none yet.",
          "Planning notes only."
        ],
        "remaining": [
          {
            "kind": "NICK",
            "text": "Decide scope, pricing, retention and support."
          },
          {
            "kind": "CODE",
            "text": "Build and test the controls."
          },
          {
            "kind": "DEVICE",
            "text": "Staging, backup and incident drills."
          },
          {
            "kind": "BLOCKED",
            "text": "No hosting provider approved."
          }
        ]
      },
      "previousPercent": 0,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Services and website",
      "name": "3D characters and story videos",
      "status": "Paused",
      "percentComplete": 0,
      "checks": {
        "Built": false,
        "Automated tests": false,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Not yet tested on a real device",
      "leftToReach100": "Paused; Nick decides whether and how to resume.",
      "roadTo100": {
        "means": "Original 3D characters and story videos are in the app, tested for speed and accessibility.",
        "done": [
          "Checks passed: none yet.",
          "Paused; nothing is wired into the app."
        ],
        "remaining": [
          {
            "kind": "NICK",
            "text": "Decide whether to resume and set the original-content scope."
          },
          {
            "kind": "CODE",
            "text": "Build and test the approved integration."
          },
          {
            "kind": "DEVICE",
            "text": "Check speed and accessibility."
          }
        ]
      },
      "previousPercent": 0,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    },
    {
      "group": "Services and website",
      "name": "Google Assistant and Alexa",
      "status": "Planned",
      "percentComplete": 0,
      "checks": {
        "Built": false,
        "Automated tests": false,
        "Real device": false,
        "Real-world check": false,
        "Ready to call Available": false
      },
      "lastTested": "Not yet tested on a real device",
      "leftToReach100": "Nick decides privacy and account scope; nothing is built yet.",
      "roadTo100": {
        "means": "Voice commands work through Google Assistant and Alexa with safe sign-in, tested on real speakers.",
        "done": [
          "Checks passed: none yet.",
          "An example Home Assistant setup exists; nothing else."
        ],
        "remaining": [
          {
            "kind": "NICK",
            "text": "Decide product, privacy and account scope."
          },
          {
            "kind": "CODE",
            "text": "Build sign-in and commands."
          },
          {
            "kind": "DEVICE",
            "text": "Test on real Assistant and Alexa devices."
          },
          {
            "kind": "BLOCKED",
            "text": "No production setup with Google or Amazon."
          }
        ]
      },
      "previousPercent": 0,
      "changedEastern": "Oct 9, 2026, 9:57 AM Eastern",
      "changeNote": "Added a detailed roadmap to 100%: what 100% means, what is done, and what is still to do (build or fix, real-device test, needs Nick, blocked). The percentage did not change."
    }
  ],
  "statusLabels": [
    "Available",
    "Beta",
    "In development",
    "Planned"
  ],
  "honestyNote": "No feature is described as 100% working. Untested paths are listed as not tested, not as passed.",
  "previousUpdatedEastern": "Oct 14, 2026, 10:48 AM Eastern",
  "showChangeMarkers": true,
  "hero": {
    "recordName": "October 14 update record",
    "scope": "Desktop, phones, browser, servers",
    "lastTested": "Oct 14, 2026, 9:06 PM Eastern",
    "lastTestedIso": "2026-10-14T21:06:00-04:00",
    "previousTested": "Oct 13, 2026, 1:15 PM Eastern",
    "broader": "Still required",
    "newerText": "the published downloads are Windows {desktop} and Android {android}. On Oct 14 we installed that exact published phone file on four phones (a Galaxy S9+, a Pixel 3, a Galaxy S24 Ultra and a Galaxy S25), ran the single-phone checklist on each, and ran a three-phone Campsite test. The results are in <a href=\"#published-run\">Today’s published-build run</a>: no crash was logged, no percentage changed (those paths already had a Real device tick; they now rest on the exact published file too), and the failures are written down plainly (Trip Journal “Save as a video” on the Galaxy S9+, the demo-mode subtitles hint, and Large playback controls). Not tested today: Chromecast, Beebo Auto in a car, the second home through Beebo Relay from the S24, shared-video playback in Campsite and guest Save, and TalkBack. The Oct 13 full device pass used test builds and stays in the history below. Earlier results are on <a href=\"whats-tested.html\">What’s new and what’s tested</a> and the release notes are on <a href=\"updates.html\">Updates</a>."
  },
  "historyNew": [
    {
      "iso": "2026-10-14",
      "date": "Oct 14, 2026 (Eastern)",
      "headline": "Published Android 1.51-tester23 on four phones, plus a three-phone Campsite test: no crash logged, three failures written down, no percentage changed",
      "tested": "The published Android 1.51-tester23 (build 73, built Oct 14, 2026, 7:04 AM Eastern), installed from the website download, on a Samsung Galaxy S9+ (Android 10, 7:14 to 8:25 AM Eastern), a Google Pixel 3 (Android 12, about 7:15 to 7:45 PM), a Samsung Galaxy S24 Ultra (8:28 to 8:48 PM, home Wi-Fi, 5G and Beebo Relay) and a Samsung Galaxy S25 (Android 16, 8:28 to 8:41 PM), plus a three-phone Campsite test (S9+ host, Pixel 3 and S24 guests, 8:56 to 9:06 PM). The home computers ran the Beebo desktop app: 0.1.87 for the morning S9+ run, 0.1.88 for the S24 run. An old Android 4.4 phone cannot run the app (it needs Android 7 or newer). Nick Will (owner) was present and watching live during the S24 and S25 runs, per his statement (from about 8:35 PM Eastern; the S9+, Pixel 3 and Campsite runs had no one watching).",
      "happened": "Galaxy S9+: 47 passed, 3 failed, 2 need a newer desktop, 12 skipped. Pixel 3: 13 passed, 0 failed, 2 skipped. Galaxy S24 Ultra: 15 passed, 0 failed, 1 partly, 2 skipped. Galaxy S25: 14 passed, 0 failed. Campsite on three phones: 7 passed, 1 partly, 1 skipped. No crash was logged on any phone. Passed on the published file: the five tabs, the Back button rule on the screens tried, the Music header with no overlap, search with an ampersand, playing, pausing and seeking, Story mode (opening it and Back), Photos & backups (opening), the Connection route screen, away from home on 5G directly, one film forced through Beebo Relay, the Trip Journal video on the S24 Ultra and Pixel 3, Campsite host start and stop, guest pages, and Reversi between two guest phones. Failed: Trip Journal “Save as a video” on the Galaxy S9+ (muxing timeout, at 1080p, 720p and cards-only); the demo mode page says to tap a subtitles button the demo player does not have; Large playback controls looked the same size as off (low confidence). Still failing, needing a newer desktop: podcast Follow. Not proven: shared-video playback in Campsite and a guest Save (nothing was shared and no Save control appeared). Noted: Back inside a story takes four to five presses to reach Home; an episode took about 50 seconds to start on the S24 at home; after the host stops Campsite a guest page keeps saying “Reconnecting”. No percentage changed and no new check was ticked: the paths already had a Real device tick, and no Real-world check was added because the steps were run by a helper. Not tested: Chromecast, Beebo Auto in a car, the second (4-core) home and its Beebo Relay check from the S24, TalkBack, a finished Trip Journal video watched by eye, and landscape tab screens on the S24."
    },
    {
      "iso": "2026-10-13",
      "date": "Oct 13, 2026 (Eastern)",
      "headline": "Full device pass: two Samsung phones, a Windows PC and a real Chromecast; three failures found, several fixes written but not yet published",
      "tested": "A full device pass on Oct 13, 2026, about 7:00 AM to 1:15 PM Eastern, by a helper driving the devices with the owner nearby: a Samsung Galaxy S24 Ultra, a Samsung Galaxy S9+ (Android 10), the Windows dev PC, a home computer running the published desktop 0.1.87, and a real Chromecast on the Living Room TV, on home Wi-Fi and on 5G mobile data. Builds: the published downloads are Windows 0.1.87 and Android 1.51-tester22 (build 72). The phones ran a test build of the current code made that morning (tester22 plus some unmerged fixes; the app still shows 1.51-tester22) and the PC ran the unpublished 0.1.88 test build, so none of this counts as a test of a published download. An earlier same-morning two-phone Campsite and phone-speakers test, and a Sea Battle game played by two people, are included in the rows.",
      "happened": "Passed on real devices: all five phone tabs on both phones; films (resume, play, pause, skip, quality menu, floating player on the S9+, 2x speed); a film on 5G through the direct route and through Beebo Relay (the relay first had to be switched on for the test account on the server, which the owner did); Watch Together on two phones (host, viewer, sync after a 45-second skip, leave and rejoin); a Car Party host and a passenger page on a second phone; Campsite hosting, a blank-name guest named \"Guest 1\", a guest reconnecting after 15 seconds offline, and 42 of 42 games opening (41 starting with a computer opponent; Crazy Eights played by hand); Chromecast with a person watching the TV (picture, sound, pause, play, skip both ways, a quality change and stop); radio and a podcast playing; a computer-made audiobook with chapters, jumps and speeds; sample music on both phones; playlists, watchlist, collections, Library health, Family Dashboard, Camp Jobs, a Packing List synced between two phones, Family Recipes; accessibility switches including Caregiver view; six languages on a phone and Spanish on the PC; the offline demo; the Share the app QR scan, download and install on the S9+; a trip link that opened on 5G with a photo and a clip once the away-from-home setting was on; all 27 Windows pages, five Home layouts, Customize layout, the update check and the signed-in browser player (17 of 17 pages, 720p/480p switching); phone speakers on two phones as a stereo pair. Failed: following a new podcast (\"Your Beebo computer had a problem\", three tries); the Trip Journal \"Save as a video\" (failed twice on the test build; with a fix on a branch it worked on the S24 for a 1-card and a 13-second trip, but the videos were not played back); the desktop Music window stayed silent at 0:00 (cause found and a fix written, not merged or re-tested in the real window); the ordinary trip link served from the home computer did not open from outside the home on 5G because the router did not let it in. Found, still open: the sound stops with the screen off by default (the Screen off: On option keeps it playing); the Music screen's Albums/Artists/Songs buttons overlap the \"Mixes and radio\" heading on both phones; a shared downloaded video was silent on a guest phone; the demo player has no subtitles button although its page says it does; phone volume buttons do not control the TV volume while casting; the live Car Party page still refuses a blank nickname (the automatic name is fixed in the code but not on the server); phone-speaker pages show a false Bluetooth warning and the PC speaker seat did not play in the surround test; no screen lets a customer switch Beebo Relay on for their own account. Not tested: Beebo Auto in a car, Android TV, Fire TV, TalkBack, a real wake of a sleeping PC, Live TV with a tuner, Chromecast to other TVs, converted films while casting, a first install from the QR on a phone that never had Beebo, accepting a library share, Walkie-talkie from anywhere, a real TV pairing code, Remote Desktop, Jellyfin, parental rules, an update installed over an older version, subtitles, and the new fixes on real devices. Ready to call Available was not ticked for any row, because the exact published downloads were not the ones tested."
    },
    {
      "iso": "2026-10-12",
      "date": "Oct 12, 2026 (Eastern)",
      "headline": "Two-home real-device test: phone on 5G, home Wi-Fi and a friend’s Wi-Fi; relay, two viewers, library sharing, Windows hand test",
      "tested": "A two-home test on Oct 12, 2026: a Windows PC at each of two separate homes on two different networks, one family server at a third home, a Samsung Galaxy S24 Ultra on home Wi-Fi, on 5G mobile data and at a friend’s Wi-Fi, a Galaxy S9+, and a browser on the S24 and on a PC. Builds: the published Android 1.51-tester22 (build 72), Windows desktop 0.1.87 (published) and a 0.1.88 test build that is not published.",
      "happened": "Passed on real devices: away-from-home playback (a direct connection to a home PC worked; a connection through Beebo Relay worked from a phone on 5G once switched on, with the first picture in about 3 seconds; the phone browser on 5G also played); play, pause, resume (a 63-second pause held its exact position), seek and quality switching to 480p in the phone browser and in the phone app; two viewers watching at once from one home PC, both connected directly in about a second; the phone app kept playing across Wi-Fi to 5G to Wi-Fi switches and through 24 seconds of airplane mode; sharing a library with another home (send an invite, accept, play, and “stop sharing” refusing new playback within about 30 seconds); the online games lobby loaded; uploading from the phone to the home PC (Space Saver backup: 3 files arrived); browse sort and filters, favourites and watchlist, playlists, radio, podcasts, Campsite game-room coverage using scripted guests (not a hand-played result for another game), dark theme, landscape and restart. On this website, 67 of 67 home-page links returned OK, and the installer and APK sizes matched the update feeds. Windows hand test on the 0.1.88 test build: about 35 screens were opened and looked right (Home, Movies, TV Shows, Trailers, Discover, Live TV, Audiobooks, Podcasts, Radio, Music, Photos, Upload, Switch to Beebo, the admin pages, Users, Watch History, Story Studio and all eight Settings pages). Not yet done: Log out on screen, the signed-in browser player, subtitles and keyboard-only use. Found, fix written and tested in the code, not yet in a published download: a shared-library guest could be dropped to a sign-in screen with no way back to their own home; a stopped share showed a wrong message and still looked active in the guest’s list; the web player froze for minutes after a phone switched from Wi-Fi to mobile data; the home PC could stop accepting viewers after many sessions because ports were not released; the app’s own picture-in-picture window did not close properly; some text was clipped at 150% text size; Library health showed a misleading counter and a stale “cannot be reached” line; skip-intro jumped over a 2:39 opening scene on one show; Auto quality chose 480p on a fast home connection; a share with downloads switched off still offered a download button. Found, still open: a 40 to 70 second freeze after seeking far into a long converted film (a safeguard is written, but the cause is not fully confirmed); voices slightly out of sync after jumps on one TV episode (a likely cause was found and fixed in the code, but it is not confirmed on the real episode); the Read It To Me buttons were hidden behind the bottom bar (a fix is in progress); a new home name could not get its secure certificate until it was registered by hand; casting from a browser to a friend’s Chromecast was blocked because that TV is not yet registered for Beebo’s test receiver (casting to a TV through the phone app was proven earlier on the home TV). Not tested: Chromecast to the friend’s TV, Beebo Auto in a car, Watch Together with a second device, a real TV pairing code (Link a TV is switched off on the server; a wrong code was refused with a plain message), TalkBack, two people on Beebo Relay at once, the Windows Log out button on screen, a House-to-House share started from a PC, and the new fixes on real devices."
    },
    {
      "iso": "2026-10-09",
      "date": "Oct 9, 2026 (Eastern)",
      "headline": "Android 1.51-tester17 hands-on test on one Galaxy S9+: 17 of 20 checks passed, 1 did not, 2 not run",
      "tested": "Android 1.51-tester17 (build 67), installed over tester16 on a Samsung Galaxy S9+ (Android 10) by cable; home Wi-Fi only.",
      "happened": "Passed: the install over the older build kept the signed-in account; cold start to Home in under a second; all five tabs and search; the Connection route screen (home Wi-Fi, direct); play, pause, resume and seek forward and back; the floating picture-in-picture window when pressing Home during a film; the quality picker and the subtitle menu opening (the film tried had no built-in subtitles); audio kept playing with the screen off when the “Screen off” switch was turned on; progress kept after force-closing the app; Audio only mode with Home; no crash was logged. Did not pass: on this phone “Screen off” was Off when first seen, so audio stopped when the screen turned off until the switch was turned on; we could not tell whether that was an earlier choice or the default on a fresh install, so the new-install default is untested. Not run: rotating back to portrait, and the watchlist star (not reachable in the landscape dialog). Note: Surprise me starts a random film straight away rather than showing a title page. Not tested: the Galaxy S24 Ultra, a car, a TV, mobile data or Beebo Relay, and a fresh install."
    }
  ]
}
