Skip to content

feat(MEMMY-577, MEMMY-578): align generated memory content with the UI language - #544

Merged
syzsunshine219 merged 2 commits into
MemTensor:v1.1.9from
origami-chen:cjq_dev/unify-language
Sep 24, 2026
Merged

syzsunshine219 merged 2 commits into
MemTensor:v1.1.9from
origami-chen:cjq_dev/unify-language

Conversation

@origami-chen

Copy link
Copy Markdown
Collaborator

Description

Summary

This PR makes newly generated memory content follow the selected interface
language and aligns title, summary, and waiting-state presentation across
the memory, experience, and task pages.

Generation previously used different language-selection rules across
pipelines. Some views also displayed summaries or triggers as titles, and
pending generation could remain stuck or have its failure state hidden.

Fix:

  1. Share language selection across L1 summaries, reflections, span goals,
    L2 policies, task titles, and both Skill generation paths. Prefer the
    configured interface language, falling back to content detection when
    no language is pinned. Preserve explicit Skill language overrides.

  2. Generate independent L1 titles and summaries in the existing capture
    or import-summary call. Validate non-empty output and retain the
    existing retry behavior. Keep L2 titles short and distinct from triggers.

  3. Apply the interface language when creating empty L3 fields and project
    environment profiles. Preserve the existing content's language during
    updates without adding conflicting language instructions.

  4. Keep summary and task-title jobs pending while the summary model is
    unavailable, then resume them when configuration becomes available.
    Prevent reflection and indexing from overwriting pending or failed
    summary processing.

  5. Show generated memory titles separately from summaries and experience
    titles separately from triggers. Use a consistent “Preparing summary”
    state with source text while generation is pending, preserving existing
    titles and legacy display fallbacks.

Historical records are not bulk-translated or backfilled. Skill names,
raw retrieval content, and User Memory behavior remain unchanged.

Related CodeUp Issue: MEMMY-577, MEMMY-578

Type of change

  • Bug fix
  • Feature

How Has This Been Tested?

Validation environment: macOS arm64, Node v22.23.2, npm 10.9.8.

  • Regression tests covering language selection, title/summary display,
    model-unavailable recovery, summary failure preservation, and retries.
  • Embedding regression file: 15 tests passed.
  • Retry sensitivity verified with the actual Vitest test body:
    normal execution passed; disabling failed-job requeue correctly
    failed the assertion requiring the same job ID to succeed.
  • Full repository npm test executed — failed with 5 existing
    edition/copy expectation mismatches listed below.
  • npm run lint and npm run typecheck passed.
  • Release workflow tests: 30 passed, 5 skipped.
  • Packaging guard tests: 44 passed.
  • Confirm macOS package installation and manual verification for
    this revision.

Full-suite results:

  • Memory: 1,045 passed, 1 skipped.
  • Migrations: 129 passed, 1 skipped.
  • AgentSourceCore: 61 passed.
  • Knowledge: 43 passed.
  • Backend: 921 passed, 2 failed.
  • Local API contracts: 10 passed.
  • Frontend: 1,716 passed, 3 failed.
  • Desktop: 333 passed, 106 skipped.
  • Root contracts: 7 passed.
  • TUI cursor: 5 passed in a separate run.

Memory runs twice in the default npm test command; both runs passed.
TUI was run separately because the workspace failures stopped the root
script before that stage.
Skipped tests are reported separately and are not counted as passing.

The 5 existing failures are outside this change:

  • App/backend/src/adapters/outbound/cloud-client/tests/cloud-client.test.ts
    — 2 assertions expect region cn, but receive intl.
  • App/frontend/desktop/src/analytics/tests/gtag-config.test.ts
    — expects the default edition to be cn, but receives intl.
  • App/frontend/desktop/src/components/tests/campaign-token-prompts.test.tsx
    — campaign dialog copy differs from the expected text.
  • App/frontend/desktop/src/pages/memory/tests/sources-sub-page.test.tsx
    — expects the default documentation URL on memmy.cn, but receives
    memmy.bot.

These test files are unchanged from the target branch.

Checklist

  • Completed code review.
  • Added and verified regression coverage.
  • Link the related CodeUp issue.
  • Confirm manual installation verification for this revision.
  • Assign a reviewer.

Reviewer Checklist

  • Confirm language precedence and preservation of existing field languages.
  • Verify waiting-state recovery, failure visibility, and legacy display behavior.
  • Review test results and the remaining edition/copy expectation failures.

Reuse the task page's summary language logic so memories, experiences, world models, and skills match the language set in the Memmy interface.

� Conflicts:
�	Memory/src/service/embedding/embedding-job-processor.ts
�	Memory/src/service/evolution/span-pipeline.ts
�	Memory/src/service/import/import-job-processor.ts
�	Memory/tests/service/retrieval/query-and-filter.test.ts
keep summary failures visible and restore held task titles
@syzsunshine219
syzsunshine219 merged commit 39462d6 into MemTensor:v1.1.9 Sep 24, 2026
6 checks passed
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.

2 participants