Repository navigation
feat(ios): the plan as a clock, with Now's strip under it - #140
Conversation
Erik, 1 November 2026: Now's strip made 450 against 550 öre look five times dearer. It put the window's cheapest quarter at the floor and the dearest at the top. Every price bar now reads one PriceScale: zero at the foot and a round top just over the dearest (1, 1.5, 2, 2.5, 3, 4, 5, 6 or 8 times a power of ten). Now's strip draws the bars from zero, marks half the top and the top with figures in a gutter on the right, and carries the price now on as a dashed line. A price below zero hangs under the zero line. The dial's ticks, the lock-screen glyphs, the plan widget and the watch's bars take the same scale in eight steps. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fredrik picked proposal 5 for Now on 1 November 2026. Each run of the battery and each car window on the strip is a pass (PlanPass, FTWShared, tested). A tap chooses one: it stands in full colour over a faint column of its colour, the bars under it take that colour, and three figures under the strip say when it runs, what it does to the level and the price it meets. The strip opens on the battery's run under way or next. A run on spare sun says it buys nothing. With no pass, the sentence stays; under a finger, the quarter's line still takes its place. The colours are Phosphor's, not the proposal's: gold gives power, cyan stores, violet for the car. Nothing glows, since a plan is not live. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Erik, 1 November 2026: on the 24-hour dial 18 is not straight down as on a clock, so you lose the feel for when things happen and have to read the figures at the edge. Fredrik said yes to round 3 of the design canvas the same day. - The dial is a clock: one turn is the next twelve hours, 12 at the top and 18 straight down, with the turn's whole hours round the rim. Its ticks are as long as the battery's planned power and coloured by what it does, gold giving power as on the strip, cyan storing. The price leaves the dial. The phone, its widget and the watch draw the same face. - Under the dial, and as the lanes, the plan shows Now's strip: the passes, the price from zero and the chosen pass's figures. A tap on a pass lights its ticks on the dial. The lanes run the whole plan with the battery's level in a row of its own. - The old lanes, the story under the dial and the rows under the lanes go; the figures say what they said. CLAUDE.md's dial rules follow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 01b1f449b6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if !grey, lit != nil { | ||
| ticks(g, .gives, lit: true).fill(Theme.gives) | ||
| ticks(g, .stores, lit: true).fill(Theme.stores) | ||
| } |
There was a problem hiding this comment.
Keep selected battery ticks visible for stale plans
When the phone displays a cached or otherwise grey plan that still contains a battery pass, PlanBody automatically supplies that pass's time range as lit. The lit: false paths exclude every tick inside that range, but this !grey condition prevents the complementary paths from being drawn. Consequently, the selected battery run disappears entirely instead of remaining visible in the stale-plan colour; if it is the only run, all active battery ticks disappear. Ignore the selection filter when grey, or draw the selected paths using Theme.oldPlan.
Useful? React with 👍 / 👎.
… ci] Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Why
Erik, 1 November 2026, about the plan dial: 18 is not straight down as on a normal clock, so you lose the feel for when things happen and have to read the figures at the edge. Fredrik said yes to a twelve-hour clock and to round 3 of the design canvas ("Planen, runda 3": E2 as the dial, D as the lanes, a switch between them, proposal 5's style). This is step 3 of four. It stacks on #139, which stacks on #138.
Change
PlanDialturns once in twelve hours (48 quarters), 12 at the top and 18 straight down. The turn's whole hours sit round the rim as the household's clock reads them, none on the hand or the seam.PlanStripViewas Now: the passes, the price from zero and the chosen pass's figures. A tap on a pass also lights its ticks on the dial. The lanes run the whole plan (PlanStrip.build(quarters:)) with the battery's planned level in a row of its own, coloured by what the battery does. In the plan the strip opens nothing and a drag scrolls the page, so it does not scrub.Evidence
swift testinappleApp/FTWKit: 636 tests in 95 suites and 344 Swift Testing tests pass locally. New:theHoursSitWhereAClockHasThem,aTickIsTheBatterysPower,eighteenSitsStraightDown. The dial tests that assumed a day now use a turn of twelve hours.Close-ups: the strip under the clock, the lanes.
Not checked
🤖 Generated with Claude Code