v0.9.0 — AI translation on the shared core pipeline
AI translation now runs on core's shared pipeline. The module's bespoke AI-translation stack (its own Translations context, TranslateResourceWorker, and AITranslateBar) is replaced by core's generic pipeline plus the shared translate modal/glue — the same one catalogue uses. Net deletion of ~3300 lines of duplicated machinery. Translatable fields are unchanged (project/template: name + description; task: title + description; assignment: description).
Added
PhoenixKitProjects.AITranslatable— thePhoenixKit.Modules.AI.Translatableadapter for the four resource types (project,template,task,assignment), registered via the newai_translatables/0callback.put_translation/4merges results under aFOR UPDATErow lock so concurrent per-language jobs can't drop sibling languages;fetch/2validates theis_templateflag so a project job can't cross-translate a template.PhoenixKitProjects.AITranslateBinding— the sharedAITranslate.FormBindingfor the project/task/template form LVs.- "Taking a while" stall hint on bulk translations (from the shared
FormGlue). - Adapter unit tests.
Changed
- Minimum
phoenix_kitis now~> 1.7.130— the release shipping the generic AI-translation pipeline this module depends on. - Form LVs delegate AI-translate wiring to the shared
FormGlue. - Per-translation audit entry is now core's generic
ai.translation_added. update_task/3andupdate_assignment_form/3gain abroadcast: falseoption (existing 2-arity callers unaffected).
Removed
- The bespoke
Translationscontext,TranslateResourceWorker,AITranslateBar, andAITranslateFormHelpers— now covered by core.
Fixed
- Post-merge review follow-ups (PR #18): flattened
source_value/2, aligned the blank-binary predicate across adapter and binding, and fixedcredo --strictalias ordering.
📦 Hex: https://hex.pm/packages/phoenix_kit_projects/0.9.0
📖 Docs: https://hexdocs.pm/phoenix_kit_projects/0.9.0