Importance: Must have · Size: M · Depends on: the resources editor precedes the icon
picker
Why. The design doc is explicit: icons and logos live in form properties and resources, not in
the spreadsheet. A tool that edits only the sheet cannot deliver a complete change, and the three
files must stay consistent with each other.
Scope.
Not in scope. Translating anything outside the project's translation files. Image editing.
Acceptance.
- A user sets a form's icon by choosing it, uploads the image behind it, and both survive the
deploy — confirmed by the icon rendering on a live instance.
- A new translation key is created in the tool, written into every language file, and renders
translated on a device.
- Unknown keys, comments and ordering elsewhere in the translation files are preserved
byte-for-byte. ⚠ Where a file contains duplicate keys, the value CHT actually reads must be the
one the tool edits.
Importance: Must have · Size: M · Depends on: the resources editor precedes the icon
picker
Why. The design doc is explicit: icons and logos live in form properties and resources, not in
the spreadsheet. A tool that edits only the sheet cannot deliver a complete change, and the three
files must stay consistent with each other.
Scope.
project's real contact types, never free text.
visibly marked.
and the choices sheets, and create the corresponding translation file. Extending only one
leaves labels that silently never render.
identifier: keys the project already references but no file defines; then CHT's naming
conventions filled in with the project's real names; then a validated free-text option.
properties, so a typed identifier is a deploy risk.
Not in scope. Translating anything outside the project's translation files. Image editing.
Acceptance.
deploy — confirmed by the icon rendering on a live instance.
translated on a device.
byte-for-byte. ⚠ Where a file contains duplicate keys, the value CHT actually reads must be the
one the tool edits.