Repository navigation
The Binder grows, turns pages with arrows, and looks like a CD binder - #117
Merged
Merged
Conversation
…nd holds discs in sleeves Every size gets its own page: one disc each side of a stitched spine on a one row Binder, titles and full size arrows under the discs from two rows, and up to eight discs a page at 4x3. The page holds as many pockets as fit while each disc stays at least 60dp. The default is 4x2. Covers are printed on discs with a hub and spindle hole, in clear sleeves with a thumb notch and a faint sheen, on a padded cover with a stitch line. The eye leaves the first pocket, so every pocket is a book. A closed Binder (locked, signed out, empty) shows the eye pressed into its cover. Each page carries arrows that know the page they turn to, through the tap template and WidgetActionActivity, then a full update with setDisplayedChild. showNext and showPrevious cannot work here: Android drops them from a partial update. Fling still turns pages. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014XfNSe18pmZggK4TswCohg
A pocket is added to its page as a nested layout, and Android keeps a fill in intent on a nested layout's root as a tag without wiring a click to it, so taps on discs did nothing. The tap target is now a child of that root. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014XfNSe18pmZggK4TswCohg
loadSettings said it was loaded before it had read the auth token, so a widget redraw in a fresh process saw no token and drew the signed out face for a second or two. On the Binder that also threw away an arrow's page turn. isLoaded now flips after the token is published. The page turn waits up to 8 s, longer than the updater's own wait for settings. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014XfNSe18pmZggK4TswCohg
…eir ends, and covers fit Android 16's budget Review round 1 fixes, plus two found on the emulator. Taps: every pocket slot now sits in the page's own layout (two rows of two each side, hidden when a size does not use them). Android 11 and 12 never pass the collection flag to nested RemoteViews, so a tap on a disc added with addView did nothing there. Budget: Android 16 can gather every page of a stack into one update, with a bitmap cap of about 90% of six bytes per screen pixel, shared by the stacks. Disc art now shrinks in 16 px steps until all fifty books fit 80% of that. Landscape: the launcher gets a portrait and a landscape stack, each with the layout for its own reported size. Short Binders: StackView fakes its loop below six pages, and a fling past the end left the stack half drawn. Five pages or fewer use a stack that stops at its ends. The arrows still wrap. Resizes: a drag across sizes redraws once it settles, redraws never overlap, and the factory never mixes two layouts in one page. Overlapping redraws were seen to leave discs out of step with their titles. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014XfNSe18pmZggK4TswCohg
Review round 2 fix. On Android 16 a data refresh gathers the pages again into the saved views while the old bitmaps are still held, so two copies count against the widget's bitmap cap for a moment, and an update over the cap is refused and the saved views cleared. The disc art budget now counts both copies. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014XfNSe18pmZggK4TswCohg
…ck, so discs always match their titles On Android 15 and up the framework can gather a stack's pages into the update itself. Two things went wrong there on the emulator: a portrait and landscape pair of stacks drew discs from the other stack's pages under the right titles after a resize, and a data refresh kept the old bitmaps alongside the new ones against the widget's cap. So from Android 15 the Binder is one stack laid out for the portrait size, and it never sends a data refresh. Each stack's adapter intent carries a fingerprint of what it draws (books, titles, cover versions, which covers are on disk, tap choice, layout, art size), so changed contents build afresh in the update and unchanged ones keep their place. Covers are fetched before the fingerprint, except on a page turn, which never waits on the network. Android 14 and below keep the pair and the data refresh. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014XfNSe18pmZggK4TswCohg
Review round 3 fix. From Android 15 a redraw fetched covers while holding the Binder's draw lock, and Android runs the stack's factory inside the update, which fetched again. With a slow server an arrow tap could wait out its 8 s and be dropped. Covers are now fetched before the lock, and there the factory only reads what is on disk. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014XfNSe18pmZggK4TswCohg
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Jeff: the Binder was too small to be useful, needed arrows, should come in a few sizes, and should look more like a binder.
Checks
Known: on Android 15 and up the Binder is portrait only (avoids an Android bug that mismatched discs and titles after a resize with both layouts). With 20 books or fewer, a fling past the last page then back can draw the page off until the next turn.
🤖 Generated with Claude Code
https://claude.ai/code/session_014XfNSe18pmZggK4TswCohg