Repository navigation
Conversation
v1.5 reworks layout, findability, the adaptive day, voice and motion while keeping the black glow look. The folder holds the brief and its decisions, an inventory of the current UI, five Mobbin research notes (links only), the pattern board, a per-screen critique, the approved mockup sources and the spec the build follows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The redesign ships as 2.0, so the docs and branch say v2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Glow cards get a light angle, a light level for Charge and a softer second card. Motion is down to Heartbeat and Still, so nothing drifts, breathes or strides when idle. A screen mood (Day, Dim, Night) dims every card under it. New edge light cards, grouped lists, grid row types, a Load colour and a haptics helper with the spec's table. A debug-only component gallery shows them on a phone. The spec now names light angles counterclockwise from the right and keeps edge card hairlines plain. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A new header on every tab: avatar for the You sheet, the title over the day with yesterday peeking in, swipe to change day, and a strap chip that opens the Strap page from anywhere. Four tabs in a tinted pill with a detached circle for All metrics, or the live heart rate during a workout. No card switches tab any more, tab taps scroll then pop, and back walks the tabs you came from. The Strap page gathers alarms, alerts, off-body, auto-detect workouts, firmware and the Zepp account in one list style. Health alert notifications open their metric through open_metric. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Recovery and Sleep switch to their tab instead of pushing a second copy of it onto the current tab. Charge switches to Recovery with its card in view. Habit Age shows the value its page shows. The Workouts page gets the round back button. Cards on screens still never switch tab. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
All metrics is reached from the circle, so the circle lights and the four tabs go unlit until you open a detail or go back. The All metrics Charge row now cuts to a whole number like the Charge card, so they agree. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The pager wrote its settled page back into the tab state, so a tap whose animation hadn't settled yet was undone and it took several taps to leave All metrics. The tab state now owns the current tab and the pager only follows it. A settled page moves the tab only after a real swipe. Tapping the unlit tab under All metrics closes it at once. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
All metrics stayed on the stack of every tab it was opened from, so after going back and forth between the circle and the tabs, each tab showed its own leftover All metrics and switching looked like it did nothing. Leaving it for another tab now closes it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The circle opens All metrics as a modal sheet over the current tab, like the You sheet. Rows close it, then open their detail on the tab showing; Recovery, Sleep and Charge go to their tab. All metrics is no longer a navigation page, so the special lighting, the stack clean-up and the index reselect rule are gone. GlassSheet closes on a swipe down. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The tab bar is four tabs in a centred pill and nothing else. All metrics is a round grid button in the header, left of the strap chip, on every tab, and opens the same sheet. Start workout belongs to Today's workout-window hero, and live heart rate stays on the workout capsule. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The moment and day sit in the middle of the screen, not of the room between the avatar and the right side. They slide over only when the right side would reach them, and the empty slot kept for tomorrow's peek may tuck under it. All metrics uses the bar chart icon. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MomentHeader shows the button only when given a callback, and MainActivity passes none. The sheet and its row handling stay built. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The avatar opens the You page, like the strap chip opens the Strap page: the same header and back button, over the current tab. Profile and Diagnostics stack on top of it, so Back returns to You before the tab. youOpen is gone; closing pages covers it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MomentResolver picks the moment from what the app already has: a recording, the last workout, the night's sleep, your usual bedtime and your usual workout time (weekday median, then all days, 3 or more in 28 days). Today's header shows it, Evening and Night set the mood, and the Today hero takes the moment's light angle. Debug builds can force a moment with --es moment <Name>. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Usual workout time counts workouts started on the phone or the strap, not ones the strap auto-detected or filed as generic Activity. Until today's recovery (and so the usual bedtime) has loaded, Today shows its plain title and the Day mood instead of the fallback bedtime's Evening. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PageRow takes an optional leading icon, white at 0.7 alpha and 20dp in a fixed slot with a 14dp gap, centred on the row. The title and value stay in one column after it, so they line up. Other callers are unchanged. Adds Target, UploadSimple, ArrowCounterClockwise, Bug and Flask from Phosphor 2.1.1 regular. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each row gets a quiet Phosphor icon like the You page's, and Sync now gets one to match Find strap. A long value on the right now wraps itself rather than pushing the title onto two lines. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Today lays out its hero and cards for the moment (spec 4.2): Recovery on waking, Charge at midday, Start run in the workout window, the heart rate settling after one, the day's summary in the evening and at night. Every moment ends with Your week, Habit Age and Edit Today, which hides cards and pins up to two and replaces the What changed chooser. The Today states from 4.3 that have signals today are in place. The mood follows the clock while browsing past days, and chargeLeads is gone. Hero sentences and card choice live in pure, tested TodayCopy and TodayPlan. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every PhosphorIcons property keeps its name and now draws the closest icon from Hugeicons' free stroke rounded set (@hugeicons/core-free-icons 4.3.5, MIT). A new builder strokes the paths at 1.5 on a 24 grid. Selected tab icons use the same outline at 2.25, and play, pause and stop are the outlines filled in. Plant draws Wellness, and a new PlantFill is its selected form for when Recovery's tab is wired to it. The Phosphor licence goes with the last of its data. A test builds every icon. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The icons are Hugeicons now, so the object takes a neutral name. The property names stay, so call sites only change the object name. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The strap's estimate already stands under the waking sentence with its label, so the sentence stops at the learning state. The after-workout chart picks a slot size for about 40 points over the time since the run, since per-minute slots left gaps that drew as scattered dots, and the end heart rate figure is left out when there's none. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A card's design is its tier and the side its light comes from. Colour alone doesn't tell two cards apart. varyLooks runs after Edit Today's pins and hides. It flips an edge first, then tries another tier or the neutral light, and moves an open card only as a last resort. On two columns, cards side by side count as neighbours too. Your week gets a neutral light from the bottom. At workout time Charge steps down from a glow to its edge card under the hero. The offer and suggestion become heart strips on Today. Every hero is now only as high as its content. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each tab follows spec 5. Every card's look is fixed in TabPlans, and a test checks every optional card on phone and wide layouts so no two neighbours share a design. The shared look check moves to CardLooks. Recovery: the score's meaning, what drove it, Charge and where it went, body signals, Habit Age. Sleep: the night with stages, night vitals, regularity, breathing disturbances, naps. Activity: start strip, steps, Load with the week's balance, this week's facts, one workouts list. Method text, the strap's own score, How it works, the off-normal panel and the Activity offer are off the screens. Copy lives in TabCopy, with tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Charge edge card's light now fills from the left across to the value, with no progress bar. It's a level, its own design under the no-repeat rule, so it never matches a card lit from one side. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Small pairs and the Tall Charge battery are back in use where the approved mock puts them, and count as their own designs under the no-repeat rule. Cards get their chart kit charts: trend dots, contributor bars, horizon arc, bed and wake bars, ghost lines (today's line for now), zone bars and the age scale. Heart rate gets a home on Activity and shows on Today in the evening, with your resting range as a band. Habit Age is one edge card everywhere. It shows on Today only while a new estimate is unseen, and each week's estimate is kept to compare with the next (database 18). Today counts a full-width card as touching both columns under it. Workout rows show their sport's icon. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… Strap pages Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A strap workout's page gets the same Delete workout row and confirm as a phone workout. Deleting removes its row, heart rate, recovery heart rate and the sport effect that is its own, all in one transaction. A tombstone (database 19) makes later syncs skip it, since the strap re-sends its history, and its time is marked Not a workout so it isn't suggested again. Load and Charge are worked out again after a delete. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each row's icon sits on a tile lit heart red by the workout's Load against your usual workout. The line under the sport says one fact for that sport (distance and pace, distance, sets, else heart rate) and the start time. Dates move into day headers, and the strap's own finds get a quiet tag. All workouts uses the same rows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The waking hero and the This morning card open the Recovery detail, Last night (card and strip) the Sleep score detail as the Sleep tab's hero does. The evening hero still opens the Recovery screen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…own icons Charge in the index and Recovery's related row is a dash "After your first night" until anchored, as on the battery. Habit Age shows its rounded estimate, not the range, and takes CalendarBlank on its row and page, apart from Time to recover's hourglass. Workouts in the index are heart red with a runner, apart from Load's barbell, and leave the strap's Activity records out of the count. The spec says so. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The dotted number is the sleep score, with the Sleep tab's score word and time asleep in the line under it, in place of the narrative headline. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The estimate and the score share the hero's one HeroFigure, so the card still has a single dotted number (spec 2.3). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Your body this morning and Right now read each value against your 30 day normal (History.status) and round it with Metric.format, as the Recovery tab's Body signals do, in place of a 7 day mean with fixed tolerances. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Titled Steps as everywhere else (and in Edit Today), and the share of the goal fills its progress bar, under the ghost line. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Load Small after a workout fills its bar to Load over your usual day's, as the Activity tab's Load fills its light. Whether Load is a whole day to compare with your usual is now decided by the date, as on the Activity tab and in the detail, not by the evening moment. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The card's line is the day's gross drain (exercise, stress and living, via TabCopy.drainedAmount) as the hero, Recovery's Drained Small and the Charge detail show it, in place of the net drop since waking. Today and the strap notification take Charge through chargeShown, as the detail does; the notification rounded, so 70.6 read 71 there and 70 in the app. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
It takes TabCopy.vsYesterday in place of its own signed difference. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The Recovery page shows the strap's estimate in its arc while OpenStrap's score is withheld, as Today and the Recovery tab do. - Charge's sentence says what the day drained, the same total as Drained on the card, not the drop since waking. - The evening Charge card keeps the day's line. - Today's Steps card drops its goal bar when the day's line shows: under the line, a short bar read as the start of it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…Today - The live number is sized for three digits inside the zone arc, so 100 and up no longer spill past it, and it doesn't jump in size as it crosses 100. - The During hero keeps the last workout while it fades out: it read the workout after it had ended and crashed the app. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Today's sat oldest first while every day before it was newest first. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Walk was one sport type either way, so the Indoor side picked on Ready was lost and the workout showed as Walk everywhere. It's now saved as the strap's own Indoor walk (40), as a treadmill run is saved as Treadmill, so the name says which it was in every list, card and detail. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
In the strap's notification "Charge 67" sat beside "Connected, 32%" and read as the strap's battery. Energy says what it is, and isn't another app's name. Calories takes the old Energy name for the kcal metric. The notification now reads "Recovery 74, Energy 67" over "Strap connected, battery 32%". Code names and saved keys stay Charge, so saved data and Edit Today choices still load. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Seven screens from a demo copy with sample data and three from a real walk, a section on moments and the design, and a short feature list. The network, permission and backup details move to docs/privacy.md. A -PdemoApp debug build installs beside the real app for sample-data screenshots. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Today in the morning and the evening, the Recovery page, Sleep and a live workout, each showing something the others don't. The rest are removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The morning Today in front, the evening behind it, both from the README. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A metal rim, side buttons, a punch-hole camera and a status bar, and the back phone tilted a little behind the front one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
"Fewer numbers. Clearer answers." in the social preview and the README, in place of "the open-source app": many apps open the strap's data, few say what it means. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The new headline and its three lines (wake up, train, wind down) in the social preview and at the top of the README. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The strap sat on the left while the Strap page shows it on the right, and the line stopped at the drawing's box, well short of the pod. The phone is on the left now, and the line runs from its edge to the pod's. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The strap drawing leaves room either side of the pod for the band, so the pod sat further in than the phone. It shifts out by that room now. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ripples out of the phone while it searches, a pulse from the strap once it's in reach, sparks running along the line while they connect, the line lighting up to the strap with a flash at the pod when connected, and the line broken and amber when it fails. The line stays a solid hairline throughout. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The strap keeps a reading every few minutes outside a workout, and one-minute slots left most of them alone between empty ones, so the curve drew as lone dots. The slots are now never narrower than the readings' usual gap. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
The v2 design: a calm app that answers in plain words instead of showing dashboards.
docs/privacy.md.Checked on a Galaxy foldable, folded and unfolded. Unit tests pass.
🤖 Generated with Claude Code