Skip to content

Prepare 4.21.0: the free tool first, translations and store notes - #698

Merged
andiwand merged 1 commit into
mainfrom
release-4.21-prep
Oct 3, 2026
Merged

andiwand merged 1 commit into
mainfrom
release-4.21-prep

Conversation

@andiwand

@andiwand andiwand commented Oct 3, 2026 •

Copy link
Copy Markdown
Member

Summary

The CI failure of #697. Only aSheetCellTakesAFill failed, and only in lite. The CI emulator is 320dp wide. The Pro badge and four toggles pushed the fill tool partly off screen, so Espresso refused the tap. On a 320dp screen, the old order fails with the same error, and the new order passes.

The fix is in the app, not in the test:

  • A locked strip puts its free tool directly after the badge, so a small phone shows it. This also helps the highlighter in documents.
  • The free tool shows its state in a locked strip, so a second tap takes the fill or the highlight off. Before, it always applied.
  • The alignment row hides the empty color slot, so its icons are centered.
  • A locked tool over a sheet offers Pro with a new message, pro_offer_sheet, that names the fill as the free tool.

Translations. Every language lacked 23 strings: the 8 from #697 and 15 older ones, including the three Pro offers. The diff adds 437 lines and removes none.

scripts/translate-app.py reads and writes only <string> elements, and it rewrites each file from the start. So it deleted the edit_cells_stale plurals from all 19 languages. The script now keeps the plurals blocks that a translation has. Its default review pass also reworded hundreds of existing translations. I did not keep those changes, and I took only the missing keys from its output.

Store notes. I wrote the English notes for 4.21.0 by hand, because the generated text left out cell formatting and alignment. store-copy.py translated them. All 15 locales are under 500 characters, and the longest is French, at 461. store-listing.py --version v4.21.0 passes.

Test plan

  • spotlessCheck assembleDebug lintProDebug lintLiteDebug testProDebugUnitTest
  • connectedProDebugAndroidTest and connectedLiteDebugAndroidTest: 98 of 98 each on Pixel_6_Pro (API 31)
  • Lite MainActivityTests on a 320dp screen (wm density 720): 18 of 18
  • By eye on the emulator: fill on and off in lite, the alignment row over a sheet (three choices) and over test.odt (four choices)

🤖 Generated with Claude Code

CI failed on aSheetCellTakesAFill in lite. Its emulator is 320dp wide,
so the Pro badge and four toggles pushed the fill partly off screen. A
locked strip now puts its free tool right after the badge. The free
tool also shows its state now, so a second tap takes it off. The
alignment row hides the empty slot under its icons, and a locked tool
over a sheet offers Pro in a sheet's words.

translate-app.py read and wrote only <string> elements, so it dropped
the edit_cells_stale plurals from every language. It now keeps the
plurals blocks a translation has. The 23 strings that every language
lacked are added, and no existing translation changes.

The store notes of 4.21.0 are in all 15 locales.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VTmf15E1oFAe5PrtjT2Cz8
@andiwand
andiwand merged commit b12e850 into main Oct 3, 2026
7 checks passed
@andiwand
andiwand deleted the release-4.21-prep branch October 3, 2026 13:47
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