Skip to content

EMI: feat: say what each insights number means and drop the padlock from what comes back - #369

Merged
juliantellez merged 4 commits into
mainfrom
emi-feat-insights-number-lines
Oct 21, 2026
Merged

juliantellez merged 4 commits into
mainfrom
emi-feat-insights-number-lines

Conversation

@juliantellez

Copy link
Copy Markdown
Contributor

What. Each number on Insights now has one line under it that says what it is counted from and what it changes for her. The forecast line drops the confidence word, and the "What comes back" card shows the chart mark instead of a padlock.

Why. A beta tester read the numbers and did not know what they said about her, and she read the padlock as a paid feature.

Stack. #363 then this pull request. Merge 363 first.

flowchart LR
  A["Her logged days"] --> B["Cycle lengths and period days"]
  B --> C["Last cycle row"]
  B --> D["Last period row"]
  B --> E["Variation row, one standard deviation"]
  E --> F["Forecast range width"]
  C --> G["One line under each row says what it means"]
  D --> G
  E --> G
Loading

Forecast, English. Before, after.

Your numbers, English. Before, after.

Chart and What comes back, English. Before, after.

Forecast, Russian. Before, after.

Your numbers, Russian. Before, after.

Chart and What comes back, Russian. Before, after.

The pictures are observed on the iPhone SE (3rd generation) simulator with Metro on this checkout. Before is the base branch at 2889b92. After is this branch before the merge of the moved base: English at a1e1374, Russian at a306441. The phone holds "Maria" with four recorded cycles. The redesign canvas has no board for Insights, so the lines use the existing tokens of the row (body small, secondary ink).

Issue. Part of #324, #324. Step 32 does the My data and export rows.

Draft text for review. Each key in English, Russian and Spanish, old and new.

forecast.confidence.sentence

  • English, old: '{word} confidence, based on your last {cycles} cycles'
  • English, new: 'Based on your last {cycles} cycles'
  • Russian, old: 'Уверенность {word}, по вашим последним {cycles} циклам'
  • Russian, new: 'По вашим последним {cycles} циклам'
  • Spanish, old: 'Confianza {word}, según tus últimos {cycles} ciclos'
  • Spanish, new: 'Según tus últimos {cycles} ciclos'

home.numbers.hers

  • English, old: 'Yours'
  • English, new: 'Your numbers'
  • Russian, old: 'Ваше'
  • Russian, new: 'Ваши показатели'
  • Spanish, old: 'Tuyo'
  • Spanish, new: 'Tus cifras'

home.numbers.published

  • English, old: 'Published'
  • English, new: 'Study'
  • Russian, old: 'Опубликовано'
  • Russian, new: 'Исследование'
  • Spanish, old: 'Publicado'
  • Spanish, new: 'Estudio'

home.numbers.cycleLength.means

  • English, old: (new key)
  • English, new: 'From the first day of one period to the day before the next. Your forecast is counted from these lengths.'
  • Russian, old: (new key)
  • Russian, new: 'От первого дня месячных до дня перед началом следующих. Ваш прогноз рассчитывается по длине ваших последних циклов.'
  • Spanish, old: (new key)
  • Spanish, new: 'Desde el primer día de un periodo hasta el día antes del siguiente. Tu previsión se calcula con estas duraciones.'

home.numbers.periodDuration.means

  • English, old: (new key)
  • English, new: 'The days you logged as your period last time. A day you did not log is not counted.'
  • Russian, old: (new key)
  • Russian, new: 'Дни, которые вы отметили как месячные в прошлый раз. Неотмеченные дни не считаются.'
  • Spanish, old: (new key)
  • Spanish, new: 'Los días que registraste como tu periodo la última vez. Un día que no registraste no cuenta.'

home.numbers.cycleLengthVariation.means

  • English, old: (new key)
  • English, new: 'How much your cycle lengths differ from each other. The more they differ, the wider your forecast range.'
  • Russian, old: (new key)
  • Russian, new: 'Насколько длина ваших циклов отличается от цикла к циклу. Чем больше разница, тем шире диапазон прогноза.'
  • Spanish, old: (new key)
  • Spanish, new: 'Cuánto cambia la duración de tus ciclos de uno a otro. Cuanto más cambia, más amplio es el rango de tu previsión.'

home.numbers.line

  • English, old: 'The published figure is the one the paper reports, and the paper is one press away.'
  • English, new: 'The figure beside each of yours comes from a published study, not from your records.'
  • Russian, old: 'Опубликованную цифру приводит исследование, и оно в одном нажатии.'
  • Russian, new: 'Цифра рядом с каждым вашим показателем взята из опубликованного исследования, а не из ваших записей.'
  • Spanish, old: 'La cifra publicada es la que informa el estudio, y el estudio está a un toque.'
  • Spanish, new: 'La cifra junto a cada una de las tuyas viene de un estudio publicado, no de tus registros.'

home.trend.caption

  • English, old: 'Your last {cycles}. The shaded band is the published range.'
  • English, new: 'How long your last {cycles} lasted. The shaded band is the range a published study reports.'
  • Russian, old: 'Ваши последние {cycles}. Затенённая полоса показывает опубликованный диапазон.'
  • Russian, new: 'Продолжительность ваших последних циклов: {cycles}. Затенённая полоса показывает диапазон из опубликованного исследования.'
  • Spanish, old: 'Tus últimos {cycles}. La banda sombreada es el rango publicado.'
  • Spanish, new: 'Cuánto duraron tus últimos {cycles}. La banda sombreada es el rango que publica un estudio.'

home.trend.allInside

  • English, old: 'All of your last {cycles} fell inside the band.'
  • English, new: 'All of your last {cycles} were inside that range.'
  • Russian, old: 'Все ваши последние {cycles} попали внутрь полосы.'
  • Russian, new: 'Все ваши последние {cycles} были в этом диапазоне.'
  • Spanish, old: 'Todos tus últimos {cycles} cayeron dentro de la banda.'
  • Spanish, new: 'Todos tus últimos {cycles} estuvieron dentro de ese rango.'

home.trend.outside

  • English, old: '{outside} of your last {cycles} fell outside the band.'
  • English, new: '{outside} of your last {cycles} were outside that range.'
  • Russian, old: '{outside} из ваших последних {cycles} попали за пределы полосы.'
  • Russian, new: '{outside} из ваших последних {cycles} были вне этого диапазона.'
  • Spanish, old: '{outside} de tus últimos {cycles} cayeron fuera de la banda.'
  • Spanish, new: '{outside} de tus últimos {cycles} estuvieron fuera de ese rango.'

history.patternsNeed

  • English, old: "We'll point out a symptom once it's come back in {needs} cycles."
  • English, new: 'Symptoms you log at about the same point in {needs} different cycles will show here.'
  • Russian, old: 'Здесь появятся симптомы, которые вы отметите в {needs} разных циклах.'
  • Russian, new: 'Здесь появятся симптомы, которые вы отметите примерно в одни и те же дни {needs} разных циклов.'
  • Spanish, old: 'Te señalaremos un síntoma cuando haya vuelto en {needs} ciclos.'
  • Spanish, new: 'Aquí aparecerán los síntomas que registres hacia el mismo momento en {needs} ciclos distintos.'

history.patternsComplete

  • English, old: { one: '{count} of yours is complete.', other: '{count} of yours are complete.', }
  • English, new: { one: '{count} complete cycle so far.', other: '{count} complete cycles so far.', }
  • Russian, old: { one: 'У вас завершён {count}.', few: 'У вас завершено {count}.', many: 'У вас завершено {count}.', }
  • Russian, new: { one: 'Пока завершён {count} цикл.', few: 'Пока завершено {count} цикла.', many: 'Пока завершено {count} циклов.', }
  • Spanish, old: { one: '{count} de los tuyos está completo.', other: '{count} de los tuyos están completos.', }
  • Spanish, new: { one: 'Llevas {count} ciclo completo.', other: 'Llevas {count} ciclos completos.', }

history.nothingRepeats

  • English, old: "Nothing has come back in 3 cycles yet. Keep logging and we'll show you."
  • English, new: 'No symptom has come back at about the same point in 3 cycles yet. If one does, it will show here.'
  • Russian, old: 'Пока ничто не повторилось за 3 цикла. Продолжайте отмечать, и мы вам покажем.'
  • Russian, new: 'Пока ни один симптом не повторился примерно в одни и те же дни 3 циклов. Когда это случится, он появится здесь.'
  • Spanish, old: 'Nada ha vuelto en 3 ciclos todavía. Sigue registrando y te lo mostraremos.'
  • Spanish, new: 'Ningún síntoma ha vuelto todavía hacia el mismo momento en 3 ciclos. Si alguno vuelve, aparecerá aquí.'

forecast.confidence.high

  • English, old: 'High'
  • English, new: (removed)
  • Russian, old: 'высокая'
  • Russian, new: (removed)
  • Spanish, old: 'alta'
  • Spanish, new: (removed)

forecast.confidence.medium

  • English, old: 'Medium'
  • English, new: (removed)
  • Russian, old: 'средняя'
  • Russian, new: (removed)
  • Spanish, old: 'media'
  • Spanish, new: (removed)

forecast.confidence.low

  • English, old: 'Low'
  • English, new: (removed)
  • Russian, old: 'низкая'
  • Russian, new: (removed)
  • Spanish, old: 'baja'
  • Spanish, new: (removed)

Decisions.

  • Each line is true in the code. Last cycle: lengthDays is the next start minus this start, and the forecast takes the median of the last six of these lengths (packages/cycle/src/forecast.ts). Last period: periodDays counts only the period days she logged, and a day with no record neither adds nor ends a period (cyclesFrom in packages/cycle/src/cycles.ts). Variation: one standard deviation of the same lengths, and the range is that many days either side of the middle, at least one (halfWidth).
  • The forecast line keeps the count and drops the confidence word in all three languages. Step 27 left this sentence to this step. The confidence band is still measured in the cycle package, but no screen shows a word for it. confidenceWords and the three forecast.confidence.high/medium/low keys are removed.
  • The recurring symptoms sentences now say "at about the same point in 3 cycles", because the rule in packages/cycle/src/patterns.ts needs the symptom in 3 cycles within one day of the same point. The Russian line from step 25 gets the same words.
  • The padlock goes only from the "What comes back" card, which the issue names. The "Your cycles" and "Cycle trends" waiting cards keep it. Say if those should change too.
  • The English and Spanish heading stays "What comes back". Test 19.1 compares the heading with the prototype drawing, so a new English heading is a change to the drawing contract. The Russian heading from step 25 already reads "Повторяющиеся симптомы".
  • The pills (Within, Wider) and the label of the link do not change. The History count wording ("дней месячных: 3") is on History, not Insights, so it is not in this step.
  • Changed test contracts: 3.3, 3.5 and forecastCopy now pin "Based on your last N cycles" and check that no confidence word or percentage shows. 18.2, 19.1, 23.4, 23.6 and the feature steps pin the new words, and 18.2 checks that "Yours" and "Published" are gone.
  • New tests: 18.2 reads the line under each number. 22.11 checks the recurring symptoms tile draws the chart mark and not the padlock. The SCREEN-2 numbers scenario has a new step for the three lines. 23.4 now reads the three new keys in its voice check.
  • Four brand pictures are generated again: history, home screen, home screen patterns and home screen trend.

Checks.

  • make check after merging the moved base: pictures 124 of 124, workspace 1873 of 1873, application 3660 of 3662. Test 10.7 fails locally because ~/.npmrc prints "always-auth" and "email" warnings. Test 6.2 is the timing ratio, and it passed alone (12 of 12).
  • npm run test:behaviour: 98 of 98.
  • Mutation check: with the recurring symptoms tile set back to the padlock, the 22.11 padlock test went red (1 failed). With the file restored it went green.
  • grep -c itvrepos package-lock.json prints 0.

@juliantellez juliantellez self-assigned this Oct 20, 2026
Base automatically changed from emi-fix-russian-insights-history-data to main October 20, 2026 04:28
# Conflicts:
#	brand/screens/home-screen-patterns.html
#	brand/screens/home-screen-patterns.png
#	brand/screens/home-screen-trend.html
#	brand/screens/home-screen-trend.png
#	brand/screens/home-screen.html
#	brand/screens/home-screen.png
@juliantellez
juliantellez merged commit a5cc0e5 into main Oct 21, 2026
1 check passed
@juliantellez
juliantellez deleted the emi-feat-insights-number-lines branch October 21, 2026 18:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant