Repository navigation
Conversation
…card and a screensaver Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
maintainer-bot review · this one needs a maintainer decision · Leans: close (60%) Thank you for Topic Photos, especially the careful credit line on every photo and the searches matched to the screen's size. New network add-ons currently stay out of the repo unless the maintainer invited them, so this suggests keeping it in its own repo or fork with one row in SHOWCASE.md. If it was invited on an issue, please link that here. Why it goes to a maintainer: confidence 0.60 is below 0.65. Checks
This is a suggestion; a maintainer makes the final call. A maintainer can comment Reviewed by maintainer-bot · runs on 0G Private Computer |
|
At
A decode that finishes after The same ownership gap exists on list replacement: display A at index 0, queue B's decode at index 1, then call A focused fix is to mark release terminal, advance the decode generation on release and every list replacement, clear this handler's pending callbacks on release, and reject released/stale decode results. Check the current photo ID as well as index/liveness for location replies, preserving replies for a still-current same-ID photo across refresh. I exercised the eight original lifecycle/selection methods verbatim with controlled Handler/Executor/View/Bitmap and decode/place boundaries: 7 of 13 cases fail before; all 13 pass with those guards, including queued and in-flight completion, list shrink/empty replacement, reused indices, pause/resume, and same-photo refresh controls. The six production Java files with the proposal also type-check against Android SDK 34. This is local JVM/source evidence, not Android rendering, real decoder/network or physical-TV validation. |
|
A separate disk-cache race at
Two Carousel instances' location executors can likewise read the same index and overwrite each other's location updates. Even if refresh keeps the same photo ID, replacing its entire JSON record with the lookup's older A small fix is a synchronized location-merge helper: acquire the same class monitor before reading the current index, update only Local evidence: the original Correction: cache filenames are fixed as |
The Topics row opens a full screen: suggested topics by group (holidays, seasons, nature and more) ticked with OK, up to eight, and a field to type one's own, which the suggestions complete so an existing topic is not spelt twice. Replaces the comma-separated text dialog. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The carousel stops decoding, looking up and painting once released, and a new photo list makes a decode queued for the old one stale. A place reply is kept only while the same photo, by id, is on screen. The looked-up place is merged into the index under the same lock as its writes, reading the current index first, so it cannot put back an index a refresh replaced. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thank you for both reports and the careful interleavings. Fixed in 19c5e6c:
Checked on the TV by opening and closing the viewer quickly five times, with no crash in the log. |
Left used to step back one place in the list, which was not the photo shown before, since Right picks at random. A history of the photos shown now lets Left go back through them in order, and Right and the timer go forward through them again before picking a new one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Rechecked With an empty cache:
A focused option is to queue stale requests on the existing single worker, recheck the requested cache inside each queued job, then either reuse it and post that caller's completion or fetch the differing terms. This preserves completion without a duplicate successful fetch for matching terms. No polling or additional executor is needed; queued requests retain their callbacks until processed. A local one-file prototype passes 9 controlled cases; 6 fail before: two subscribers, close/reopen, changed topics, false/throwing fetches, null callback, fresh cache and main-handler delivery. All eight production Java files type-check against SDK 34 with the proposal. Tests use actual refresh/cache methods, temporary index files and controlled worker/handler/fetch boundaries; no live HTTP, JPEG decode, Android rendering or physical-TV test ran. |
|
A separate failed-decode path at When A small fix is to put the index, credit, details and place-lookup updates inside the existing Local validation uses the actual |
|
@Belseck thank you for Topic Photos, especially the credit line on every photo and the searches sized to the screen. New network add-ons stay out of the repo unless the maintainer invited them, so this fits best as its own repo plus one SHOWCASE.md row with a screenshot link, which is very welcome. Before you publish it, the refresh() callback drop and the failed-decode credit mismatch SaviorOneZero found are worth fixing. |
A new add-on,
addons/topic-photos/: photos of the topics the owner picks or types ("mountains, ocean, city at night"), from Wikimedia Commons with no key, full screen in the app (its module card) and as a screensaver. Nothing underlauncher/changes.Search at the screen's size. The resolution the device reports goes into each search (
filew/fileh), so Commons returns no file smaller than the screen, and into the download (iiurlwidth), so it arrives at the screen's width. Landscape JPEGs only, at most three by one author per topic, about 30 kept on the TV and fetched again after three days or when the topics change.The remote: Right shows another photo at random and Left goes back through the ones already shown, in order, Up shows the details (description, place, author and licence, date taken, size on the TV and the original's), Down or Back hide them, OK opens the settings.
Credit on every photo: author, Wikimedia Commons, licence and place, as CC BY and CC BY-SA ask. Place names come from the photo's coordinates through OpenStreetMap's reverse lookup, once per photo, in the TV's language.
Topics on a screen of their own: suggested topics grouped as holidays, seasons, and nature and more, ticked with OK, up to eight, and a field to type one's own; its suggestions complete it, so an existing topic is picked rather than spelt twice.
Settings: topics, change photo every 10 s to 30 min, day-and-night photos (07:00-19:00 by the TV's clock, no location), and a shortcut to the TV's screensaver settings.
Permissions:
INTERNETonly (Commons and OpenStreetMap). No account, telemetry, ads or background service; both services get a User-Agent naming the app, as they ask. The README has the Permissions section and what is sent.It grew out of the ideas discussion #3246. APK 28 KB, English and Spanish strings, JVM tests for the topic parsing, the eight-topic cap and the spelling of a typed topic, day and night, the size filter and the Commons width step.
Tested on: Chromecast with Google TV 4K (
sabrina), Google TV 14: photos fetched for the default topics at 1920 x 1080, Left/Right, the details on Up and the settings on OK with keys sent over ADB, the place names, the launcher's prompt to show the card, and Topic Photos listed among the TV's screensavers.tests/test_addon*.pypass; lint has 0 errors.Since the first review: the two races reported below are fixed. The carousel stops decoding, looking up and painting once released; a new photo list makes a decode queued for the old one stale; a place reply counts only while the same photo, by id, is on screen. The place is merged into the index under the same lock as its writes, reading the current index first, so it cannot put back an index a refresh replaced. Checked on the TV by opening and closing the viewer quickly five times: no crash. Left also used to step back one place in the list rather than to the photo shown before; a history of the photos shown now takes it back through them in order (JVM tests, and checked on the TV).
If this adds an add-on
addons/<name>/screenshot.jpg: the add-on on a real TV, 16:9 JPEG under 300 KB, shown in its row inaddons/README.mdRelated
One of five pull requests that came out of a Chromecast with Google TV 4K and the ideas discussion #3246:
home_hold_panel, a held Home opens the quick panelquick_panel_sheet, the quick panel as a sheet (closed: the core keeps its panel's look, so it stays in the fork)This is where the fork's internet photos went: the launcher keeps no network, and the add-on carries the photos, the viewer and the screensaver.
🤖 Generated with Claude Code