* Default AI content language to Ukrainian
* Keep English as the default content language
* refactor: update content language handling in workspace creation
- Changed the default content language in CreateWorkspace to inherit the app's locale instead of defaulting to English.
- Updated related tests to reflect this change, ensuring that the content language aligns with the application's current locale settings.
- Cleaned up unnecessary code in the BrandTab component for better readability.
* Add Ukrainian as a full platform UI locale.
Wire uk into languages config with complete lang/uk translations and restore ContentLanguage↔UI parity checks.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Wire Ukrainian into dayjs and locale coverage tests.
Import the uk dayjs locale with Monday week-start and cover uk/uk-UA in brand autofill and SetLocale assertions.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Harden Ukrainian UI and AI content-language coverage.
Cover generator/reviewer/humanizer/image prompts, workspace pickers, persona labels, UI locale switch, and README for uk as a first-class platform language.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Add Ukrainian Pinterest form strings after main merge.
Restore lang/uk posts.php key parity for the new pin title and destination link fields.
Co-authored-by: Cursor <cursoragent@cursor.com>
* List every supported UI language in the README.
Replace the abbreviated multi-language blurb with the full locale set from config.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Paulo Castellano <paulo@castellanos.llc>
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace free-text brand_tone/brand_voice_notes with a single structured
brand_voice_traits JSON column backed by the BrandVoiceTrait enum, exposed
as choice-chip pills in the brand settings UI and autofillable from a site.
Brand voice and visuals become per-automation toggles on the Generate node.
Unify the image controls into one 0-10 picker (0 = text-only, 1 = single,
2+ = carousel) and feed the generator the most restrictive selected network
so copy fits every platform. Pass that same platform context through the
humanizer pass — extracted into a shared ResolvesPlatformCopyBudget trait —
so the rewrite can no longer drift past the character cap the generator
respected, in both the automation and manual creation flows.
Persist the trigger node's schedule editor fields on save (they were
silently dropped by validated() for lacking validation rules).