Skip to content

chore(release): publish Memmy v1.0.5 - #174

Merged
ZongYue99 merged 60 commits into
MemTensor:mainfrom
syzsunshine219:release/v1.0.5
Aug 6, 2026
Merged

chore(release): publish Memmy v1.0.5#174
ZongYue99 merged 60 commits into
MemTensor:mainfrom
syzsunshine219:release/v1.0.5

Conversation

@syzsunshine219

Copy link
Copy Markdown
Collaborator

Why

PR #170 was merged into v1.0.5, so the GitHub Release workflow did not run: it only listens for merged release/v* pull requests whose base is main. PR #172 subsequently merged the v1.0.5 source into main.

This corrective PR restores the intended trigger path:

release/v1.0.5 -> main -> GitHub Release workflow

Change

  • Synchronize the release branch with the already-merged main release source.
  • Add the completed OSS installer integrity check to the curated v1.0.5 Release Notes.
  • No application or installer code is changed by this PR.

Verification

  • npm run version:check: passed; all managed versions are 1.0.5.
  • npm run test:release-workflow: passed (10/10).
  • Four OSS installers matched their Content-MD5 and object size; both macOS DMGs passed hdiutil verify.
  • No v1.0.5 Tag or GitHub Release exists at PR creation time.

The previously documented, release-owner-approved packaging exception from #170 is unchanged. Merging this PR should automatically publish GitHub Release v1.0.5.

Wang-Daoji and others added 30 commits July 30, 2026 01:10
fix: unify cross-agent action backgrounds
fix: simplify memory tool call headings
feat(memory): commit episode routing on turn complete
fix(memory): separate retrieval content and validate L3 evidence
fix(memory): finalize episode rewards and processing
feat(memory): link related memory details
…emTensor#139)

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>
* feat: merge pkg shell

* feat: merge pkg shell

* feat: merge pkg shell

* feat: merge pkg shell
…t tour

Ship the first-chat relay/opt-in cards, memory verification loop, and a
memory-first product tour without local mock switches or test-only scaffolding.

Co-authored-by: Cursor <cursoragent@cursor.com>
fix(backend): share scan permission per installation
fix(backend): refine onboarding permissions and actions
fix: surface structured quota exhaustion errors
wustzdy and others added 24 commits August 4, 2026 17:34
MemTensor#148)

Keep params.user_id for event dimensions while also exposing userId alongside clientId so the cloud proxy can filter and map GA4 user identity.

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>
Skip the logs tour step when scan is denied, and stabilize spotlight
scrolling and bubble placement so onboarding steps stay readable.

Co-authored-by: Cursor <cursoragent@cursor.com>
Emit viewed/skipped per tour step with flow branching, and defer onboarding_completed until nickname.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: jiachengzhen <jiacz@memtensor.cn>
Persist the onboarding insight report into a WebUI session as soon as it
is generated, then open that history on home so finishing the guide no
longer triggers a duplicate Thinking turn.

Co-authored-by: Cursor <cursoragent@cursor.com>
fix: seed first-report chat instead of re-running the agent
* chore: show invitation token

* codeowners
fix(onboarding): streamline first report handoff
…ensor#162)

Use workbuddy://task?action=start&prompt= for GUI handoff, prefix the continuation text with /memmy-memory, and fall back to opening the app without Terminal.

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>
@ZongYue99
ZongYue99 merged commit b50f616 into MemTensor:main Aug 6, 2026
Wang-Daoji added a commit that referenced this pull request Aug 7, 2026
* feat: exclude dependency tests and docs from desktop packages (#123)

* fix: unify cross-agent action backgrounds

* fix: simplify memory tool call headings

* feat(memory): commit episode routing on turn complete

* fix(memory): separate retrieval content and validate L3 evidence

* fix(memory): finalize episode rewards and processing

* chore: docs

* chore: readme

* chore: show invitation token (#135)

* feat(memory): link related memory details

* feat(analytics): track desktop memory adds during agent-source scans (#139)

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>

* feat: merge pkg && optimize pkg (#140)

* feat: merge pkg shell

* feat: merge pkg shell

* feat: merge pkg shell

* feat: merge pkg shell

* feat: tighten onboarding activation with cross-agent relay and product tour

Ship the first-chat relay/opt-in cards, memory verification loop, and a
memory-first product tour without local mock switches or test-only scaffolding.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(backend): share scan permission per installation

* chore: reorganize desktop packaging internal scripts (#141)

* fix(backend): refine onboarding permissions and actions

* fix: surface structured quota exhaustion errors

* feat(memory): add time-filtered trace recall

* feat: trust Codex hooks and reveal account identifiers

* fix(config): fail loud on invalid config instead of silently using defaults (#7)

loadConfig() caught YAML parse and schema validation errors, logged a
console.warn, and returned a fresh default Config. Any onboarded settings
(including BYOK provider credentials) were silently discarded and the CLI
kept running against defaults with no non-zero exit, contradicting the
project's fail-loud philosophy.

Throw a new ConfigError (ConfigLoadError for bad YAML/schema, EnvValueError
for missing env var references, both now exported) when the config file
exists but is invalid. A missing config file still returns the defaults
unchanged, since first-run `memmy onboard` depends on that path. The CLI
entrypoint (main.ts) catches ConfigError specifically and prints a concise
`memmy: <reason>` message with a non-zero exit code instead of an unhandled
stack trace; other entrypoints (serve/gateway route through the same CLI
main(), and the frontend-bridge/websocket HTTP layer already has generic
catch blocks that turn thrown errors into clean error responses).

* feat(feishu): add QR bot setup (#127)

* fix(memmy-memory): surface memory-service outages instead of silent fallback (#9)

MemmyMemoryHook.beforeRun/afterRun/sessionStart/sessionEnd caught every
connection error from the memory service and only recorded it on an
unread `lastError` field, so an unreachable service (e.g. default
http://127.0.0.1:18960 down) degraded completely silently: no CLI/log
warning, and the LLM turn context received neither a recall block nor
any notice, indistinguishable from "memory checked, found nothing".
This contradicted the README's fail-loud promise and drove agents to
silently fall back to the local MEMORY.md/history.jsonl store.

- Replace the blanket try/catch with per-phase handling that emits a
  deduped console.warn (once per session, reset on recovery) and
  injects an honest <memmy_memory_status status="unavailable"> notice
  into the user message so the model is told memory wasn't checked,
  instead of implying nothing relevant was found.
- Drop the stale in-flight turn entry on a failed beforeRun so afterRun
  doesn't try to complete a turn that was never opened server-side.
- Document the new status tag in the memory context protocol prompt.

Failures still never crash the turn (fail-loud, not fail-crash).

* chore: add embedding mode into pkg (#147)

* feat(analytics): send userId at the top level of /api/analytics/events (#148)

Keep params.user_id for event dimensions while also exposing userId alongside clientId so the cloud proxy can filter and map GA4 user identity.

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>

* feat: refine product tour for deny-scan and scroll placement

Skip the logs tour step when scan is denied, and stabilize spotlight
scrolling and bubble placement so onboarding steps stay readable.

Co-authored-by: Cursor <cursoragent@cursor.com>

* feat: reshape onboarding analytics for funnel-friendly step tracking

Emit viewed/skipped per tour step with flow branching, and defer onboarding_completed until nickname.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(settings): show BYOK usage detail copy (#155)

Co-authored-by: jiachengzhen <jiacz@memtensor.cn>

* fix: seed first-report chat instead of re-running the agent

Persist the onboarding insight report into a WebUI session as soon as it
is generated, then open that history on home so finishing the guide no
longer triggers a duplicate Thinking turn.

Co-authored-by: Cursor <cursoragent@cursor.com>

* feat(onboarding): focus initial report on preferences and latest task

* feat(onboarding): prioritize first report memory handoff

* codeowners (#159)

* chore: show invitation token

* codeowners

* fix(onboarding): preserve first report context across agents

* fix(onboarding): streamline first report handoff

* fix: open WorkBuddy with task deeplink and /memmy-memory prompt (#162)

Use workbuddy://task?action=start&prompt= for GUI handoff, prefix the continuation text with /memmy-memory, and fall back to opening the app without Terminal.

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>

* chore(release): prepare Memmy v1.0.5

* test(release): align v1.0.5 smoke contracts

* test(config): expect invalid files to fail loudly

---------

Co-authored-by: Wang Daoji <75928131+Wang-Daoji@users.noreply.github.com>
Co-authored-by: Hustzdy <67457465+wustzdy@users.noreply.github.com>
Co-authored-by: jiang <fdjzy@qq.com>
Co-authored-by: Jiang <33757498+hijzy@users.noreply.github.com>
Co-authored-by: ZongYue <52625187+ZongYue99@users.noreply.github.com>
Co-authored-by: antalike <527949167@qq.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: shsfcx <shsfcx@shsfcxdeMacBook-Pro.local>
Co-authored-by: Daoji Wang <627665797@qq.com>
Co-authored-by: Xinmin Zeng <135568692+fancyboi999@users.noreply.github.com>
Co-authored-by: Ericwong <970699442@qq.com>
Co-authored-by: antalike <>
Co-authored-by: zhiqi <99724206+dolnna@users.noreply.github.com>
Co-authored-by: jiachengzhen <jiacz@memtensor.cn>
ZongYue99 added a commit that referenced this pull request Aug 11, 2026
* feat: exclude dependency tests and docs from desktop packages (#123)

* fix: unify cross-agent action backgrounds

* fix: simplify memory tool call headings

* feat(memory): commit episode routing on turn complete

* fix(memory): separate retrieval content and validate L3 evidence

* fix(memory): finalize episode rewards and processing

* chore: docs

* chore: readme

* chore: show invitation token (#135)

* feat(memory): link related memory details

* feat(analytics): track desktop memory adds during agent-source scans (#139)

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>

* feat: merge pkg && optimize pkg (#140)

* feat: merge pkg shell

* feat: merge pkg shell

* feat: merge pkg shell

* feat: merge pkg shell

* feat: tighten onboarding activation with cross-agent relay and product tour

Ship the first-chat relay/opt-in cards, memory verification loop, and a
memory-first product tour without local mock switches or test-only scaffolding.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(backend): share scan permission per installation

* chore: reorganize desktop packaging internal scripts (#141)

* fix(backend): refine onboarding permissions and actions

* fix: surface structured quota exhaustion errors

* feat(memory): add time-filtered trace recall

* feat: trust Codex hooks and reveal account identifiers

* fix(config): fail loud on invalid config instead of silently using defaults (#7)

loadConfig() caught YAML parse and schema validation errors, logged a
console.warn, and returned a fresh default Config. Any onboarded settings
(including BYOK provider credentials) were silently discarded and the CLI
kept running against defaults with no non-zero exit, contradicting the
project's fail-loud philosophy.

Throw a new ConfigError (ConfigLoadError for bad YAML/schema, EnvValueError
for missing env var references, both now exported) when the config file
exists but is invalid. A missing config file still returns the defaults
unchanged, since first-run `memmy onboard` depends on that path. The CLI
entrypoint (main.ts) catches ConfigError specifically and prints a concise
`memmy: <reason>` message with a non-zero exit code instead of an unhandled
stack trace; other entrypoints (serve/gateway route through the same CLI
main(), and the frontend-bridge/websocket HTTP layer already has generic
catch blocks that turn thrown errors into clean error responses).

* feat(feishu): add QR bot setup (#127)

* fix(memmy-memory): surface memory-service outages instead of silent fallback (#9)

MemmyMemoryHook.beforeRun/afterRun/sessionStart/sessionEnd caught every
connection error from the memory service and only recorded it on an
unread `lastError` field, so an unreachable service (e.g. default
http://127.0.0.1:18960 down) degraded completely silently: no CLI/log
warning, and the LLM turn context received neither a recall block nor
any notice, indistinguishable from "memory checked, found nothing".
This contradicted the README's fail-loud promise and drove agents to
silently fall back to the local MEMORY.md/history.jsonl store.

- Replace the blanket try/catch with per-phase handling that emits a
  deduped console.warn (once per session, reset on recovery) and
  injects an honest <memmy_memory_status status="unavailable"> notice
  into the user message so the model is told memory wasn't checked,
  instead of implying nothing relevant was found.
- Drop the stale in-flight turn entry on a failed beforeRun so afterRun
  doesn't try to complete a turn that was never opened server-side.
- Document the new status tag in the memory context protocol prompt.

Failures still never crash the turn (fail-loud, not fail-crash).

* chore: add embedding mode into pkg (#147)

* feat(analytics): send userId at the top level of /api/analytics/events (#148)

Keep params.user_id for event dimensions while also exposing userId alongside clientId so the cloud proxy can filter and map GA4 user identity.

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>

* feat: refine product tour for deny-scan and scroll placement

Skip the logs tour step when scan is denied, and stabilize spotlight
scrolling and bubble placement so onboarding steps stay readable.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(memory): keep short pattern terms out of raw JSON metadata columns

Two-char tokens like "ts" skip FTS and hit the pattern channel, which
LIKE-matched them against raw properties_json/info_json. Every trace
carries the JSON key "ts", so unrelated recent memories outranked real
hits. Short ASCII terms now only match id, key, value and tags; longer
terms and CJK bigrams keep their metadata reach.

* fix(backend): stop capturing tool results as the user query

Claude Code transcripts store tool results as user-role records, so
the Stop-event transcript fallback could save tool output to memory
as the user's query. Classify tool_result records as tool messages
so the fallback finds the real prompt.

* feat: reshape onboarding analytics for funnel-friendly step tracking

Emit viewed/skipped per tour step with flow branching, and defer onboarding_completed until nickname.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(settings): show BYOK usage detail copy (#155)

Co-authored-by: jiachengzhen <jiacz@memtensor.cn>

* fix: seed first-report chat instead of re-running the agent

Persist the onboarding insight report into a WebUI session as soon as it
is generated, then open that history on home so finishing the guide no
longer triggers a duplicate Thinking turn.

Co-authored-by: Cursor <cursoragent@cursor.com>

* feat(onboarding): focus initial report on preferences and latest task

* feat(onboarding): prioritize first report memory handoff

* fix(onboarding): preserve first report context across agents

* fix(onboarding): streamline first report handoff

* fix(desktop): store Windows packaged data under install dir (#165)

* feat(timezone): honor user UTC offsets across memory

* feat: add Pi and QwenWork memory sources

* fix: rename qwenwork display label

* feat: add preset Agent selector

* memmy-agent: Let every AI remember the same you - V1.0.5 (#173)

* codeowners (#159)

* chore: show invitation token

* codeowners

* fix: open WorkBuddy with task deeplink and /memmy-memory prompt (#162)

Use workbuddy://task?action=start&prompt= for GUI handoff, prefix the continuation text with /memmy-memory, and fall back to opening the app without Terminal.

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>

* release: Memmy v1.0.5 (#170)

* chore(release): prepare Memmy v1.0.5

* test(release): align v1.0.5 smoke contracts

* test(config): expect invalid files to fail loudly

---------

Co-authored-by: jiachengzhen <jiacz@memtensor.cn>

---------

Co-authored-by: Jiang <33757498+hijzy@users.noreply.github.com>
Co-authored-by: antalike <527949167@qq.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: zhaxi <syzsunshine219@gmail.com>
Co-authored-by: jiachengzhen <jiacz@memtensor.cn>

* fix(desktop): keep conversation composer growing and scrollable (#171)

Resync textarea height on draft/chrome changes, and stop locking single-line mode behind overflow:hidden so wrapped input is not clipped.

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(memory): show quota error title for 40309

* fix(memory): harden cross-agent onboarding

* fix(memory): hide unverified agent drafts

* chore(release): publish Memmy v1.0.5 (#174)

* feat: exclude dependency tests and docs from desktop packages (#123)

* fix: unify cross-agent action backgrounds

* fix: simplify memory tool call headings

* feat(memory): commit episode routing on turn complete

* fix(memory): separate retrieval content and validate L3 evidence

* fix(memory): finalize episode rewards and processing

* chore: docs

* chore: readme

* chore: show invitation token (#135)

* feat(memory): link related memory details

* feat(analytics): track desktop memory adds during agent-source scans (#139)

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>

* feat: merge pkg && optimize pkg (#140)

* feat: merge pkg shell

* feat: merge pkg shell

* feat: merge pkg shell

* feat: merge pkg shell

* feat: tighten onboarding activation with cross-agent relay and product tour

Ship the first-chat relay/opt-in cards, memory verification loop, and a
memory-first product tour without local mock switches or test-only scaffolding.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(backend): share scan permission per installation

* chore: reorganize desktop packaging internal scripts (#141)

* fix(backend): refine onboarding permissions and actions

* fix: surface structured quota exhaustion errors

* feat(memory): add time-filtered trace recall

* feat: trust Codex hooks and reveal account identifiers

* fix(config): fail loud on invalid config instead of silently using defaults (#7)

loadConfig() caught YAML parse and schema validation errors, logged a
console.warn, and returned a fresh default Config. Any onboarded settings
(including BYOK provider credentials) were silently discarded and the CLI
kept running against defaults with no non-zero exit, contradicting the
project's fail-loud philosophy.

Throw a new ConfigError (ConfigLoadError for bad YAML/schema, EnvValueError
for missing env var references, both now exported) when the config file
exists but is invalid. A missing config file still returns the defaults
unchanged, since first-run `memmy onboard` depends on that path. The CLI
entrypoint (main.ts) catches ConfigError specifically and prints a concise
`memmy: <reason>` message with a non-zero exit code instead of an unhandled
stack trace; other entrypoints (serve/gateway route through the same CLI
main(), and the frontend-bridge/websocket HTTP layer already has generic
catch blocks that turn thrown errors into clean error responses).

* feat(feishu): add QR bot setup (#127)

* fix(memmy-memory): surface memory-service outages instead of silent fallback (#9)

MemmyMemoryHook.beforeRun/afterRun/sessionStart/sessionEnd caught every
connection error from the memory service and only recorded it on an
unread `lastError` field, so an unreachable service (e.g. default
http://127.0.0.1:18960 down) degraded completely silently: no CLI/log
warning, and the LLM turn context received neither a recall block nor
any notice, indistinguishable from "memory checked, found nothing".
This contradicted the README's fail-loud promise and drove agents to
silently fall back to the local MEMORY.md/history.jsonl store.

- Replace the blanket try/catch with per-phase handling that emits a
  deduped console.warn (once per session, reset on recovery) and
  injects an honest <memmy_memory_status status="unavailable"> notice
  into the user message so the model is told memory wasn't checked,
  instead of implying nothing relevant was found.
- Drop the stale in-flight turn entry on a failed beforeRun so afterRun
  doesn't try to complete a turn that was never opened server-side.
- Document the new status tag in the memory context protocol prompt.

Failures still never crash the turn (fail-loud, not fail-crash).

* chore: add embedding mode into pkg (#147)

* feat(analytics): send userId at the top level of /api/analytics/events (#148)

Keep params.user_id for event dimensions while also exposing userId alongside clientId so the cloud proxy can filter and map GA4 user identity.

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>

* feat: refine product tour for deny-scan and scroll placement

Skip the logs tour step when scan is denied, and stabilize spotlight
scrolling and bubble placement so onboarding steps stay readable.

Co-authored-by: Cursor <cursoragent@cursor.com>

* feat: reshape onboarding analytics for funnel-friendly step tracking

Emit viewed/skipped per tour step with flow branching, and defer onboarding_completed until nickname.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(settings): show BYOK usage detail copy (#155)

Co-authored-by: jiachengzhen <jiacz@memtensor.cn>

* fix: seed first-report chat instead of re-running the agent

Persist the onboarding insight report into a WebUI session as soon as it
is generated, then open that history on home so finishing the guide no
longer triggers a duplicate Thinking turn.

Co-authored-by: Cursor <cursoragent@cursor.com>

* feat(onboarding): focus initial report on preferences and latest task

* feat(onboarding): prioritize first report memory handoff

* codeowners (#159)

* chore: show invitation token

* codeowners

* fix(onboarding): preserve first report context across agents

* fix(onboarding): streamline first report handoff

* fix: open WorkBuddy with task deeplink and /memmy-memory prompt (#162)

Use workbuddy://task?action=start&prompt= for GUI handoff, prefix the continuation text with /memmy-memory, and fall back to opening the app without Terminal.

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>

* chore(release): prepare Memmy v1.0.5

* test(release): align v1.0.5 smoke contracts

* test(config): expect invalid files to fail loudly

---------

Co-authored-by: Wang Daoji <75928131+Wang-Daoji@users.noreply.github.com>
Co-authored-by: Hustzdy <67457465+wustzdy@users.noreply.github.com>
Co-authored-by: jiang <fdjzy@qq.com>
Co-authored-by: Jiang <33757498+hijzy@users.noreply.github.com>
Co-authored-by: ZongYue <52625187+ZongYue99@users.noreply.github.com>
Co-authored-by: antalike <527949167@qq.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: shsfcx <shsfcx@shsfcxdeMacBook-Pro.local>
Co-authored-by: Daoji Wang <627665797@qq.com>
Co-authored-by: Xinmin Zeng <135568692+fancyboi999@users.noreply.github.com>
Co-authored-by: Ericwong <970699442@qq.com>
Co-authored-by: antalike <>
Co-authored-by: zhiqi <99724206+dolnna@users.noreply.github.com>
Co-authored-by: jiachengzhen <jiacz@memtensor.cn>

* fix(desktop): mask account identifiers

* fix(backend): quote hook commands for Windows shells (#153)

Hook commands used POSIX single quotes, which cmd.exe and PowerShell
cannot execute, so installed hooks never ran on Windows. Use double
quotes on win32 and keep the POSIX form elsewhere.

Fixes #149

* fix(openai-api): report turn token usage (#181)

* fix(desktop): set microphone usage description by package edition (#185)

Write NSMicrophoneUsageDescription from cn/intl at macOS package time.

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>

* feat: Enhance error handling and metadata propagation for model errors (#182)

* feat(scripts): add Windows clear-all utility (#190)

Co-authored-by: jiachengzhen <jiacz@memtensor.cn>

* feat(analytics): track tools and connections outcomes to cloud GA4 (#191)

Report channel/integration connect, disconnect, fail, and mid-flow cancel
via backend analytics so real usage lands in the cloud event pipeline.

Co-authored-by: antalike <>

* polish readme (#194)

* readme

* readme-contributors

* readme-slogan

* feat: add startup splash localization and HTML rendering (#193)

* fix(settings): show Windows status bar copy (#192)

* fix(settings): show Windows status bar copy

* test(frontend): align quality checks

---------

Co-authored-by: jiachengzhen <jiacz@memtensor.cn>

* fix(onboarding): hide first-report wrapper tags (#196)

* fix(backend): hide simplified first-report wrappers

* test(backend): align integration delete expectations

---------

Co-authored-by: jiachengzhen <jiacz@memtensor.cn>

* fix(settings): default intl language selector to English (#195)

* fix(settings): default intl language selector to English

* test(frontend): align quality checks

---------

Co-authored-by: jiachengzhen <jiacz@memtensor.cn>

* polish readme (#197)

* readme

* readme-contributors

* readme-slogan

* README.md:video

* Update README.zh-CN.md-video

* polish readme

---------

Co-authored-by: Wang Daoji <75928131+Wang-Daoji@users.noreply.github.com>
Co-authored-by: Hustzdy <67457465+wustzdy@users.noreply.github.com>
Co-authored-by: jiang <fdjzy@qq.com>
Co-authored-by: Jiang <33757498+hijzy@users.noreply.github.com>
Co-authored-by: antalike <527949167@qq.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: shsfcx <shsfcx@shsfcxdeMacBook-Pro.local>
Co-authored-by: Daoji Wang <627665797@qq.com>
Co-authored-by: Xinmin Zeng <135568692+fancyboi999@users.noreply.github.com>
Co-authored-by: Ericwong <970699442@qq.com>
Co-authored-by: antalike <>
Co-authored-by: DevMello <pranavy2008@gmail.com>
Co-authored-by: zhiqi <99724206+dolnna@users.noreply.github.com>
Co-authored-by: zhaxi <syzsunshine219@gmail.com>
Co-authored-by: jiachengzhen <jiacz@memtensor.cn>
Co-authored-by: jiang <hijzy@qq.com>
Co-authored-by: Pranav Yerramaneni <69360966+DevMello@users.noreply.github.com>
Co-authored-by: EF1874 <57347272+EF1874@users.noreply.github.com>
ZongYue99 added a commit that referenced this pull request Aug 17, 2026
* feat: polish readme (#101)

* feat(auth): attach persistent device ID to authentication requests

* fix(auth): use agent email verification endpoint

* feat(quota): display cloud-configured token usage by scene

* feat(dev): configure desktop edition from .env

* feat: polish README

* fix: show email verification errors

* feat: polish readme

* feat: polish readme

* feat: polish readme

* feat: polish readme

* feat: support per-session model selection

* fix: separate startup and recurring agent scans

* fix: use writable cache for local embedding model

* fix(memory): show latest retry error once

* [Human] fix: correct

* refactor: simplify session DAG builder prompt

* [Human] fix: correct

* fix: unify startup migration entry

* refactor: finalize task metadata on DAG switches

* fix: prevent product tour navigation loop

* fix(dev): recognize model presets before gateway startup

* fix model provider settings list

* fix desktop provider api type defaults

* feat: exclude dependency tests and docs from desktop packages (#123)

* fix(agent): preserve channel streaming capability in GUI sync

* fix desktop external user message display

* fix(cli): show terminal target options in root help

* fix: unify cross-agent action backgrounds

* fix: simplify memory tool call headings

* feat(desktop): restyle chat model selector

* feat(desktop): add model provider logos

* feat(desktop): show IM channel icons in task titles

* fix(desktop): align IM icons with title line height

* fix(desktop): use app icon for account models

* feat(memory): commit episode routing on turn complete

* fix(desktop): align model selector icons

* fix(memory): separate retrieval content and validate L3 evidence

* fix(memory): finalize episode rewards and processing

* chore: docs

* chore: readme

* chore: show invitation token (#135)

* feat(memory): link related memory details

* feat(analytics): track desktop memory adds during agent-source scans (#139)

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>

* feat: merge pkg && optimize pkg (#140)

* feat: merge pkg shell

* feat: merge pkg shell

* feat: merge pkg shell

* feat: merge pkg shell

* feat: tighten onboarding activation with cross-agent relay and product tour

Ship the first-chat relay/opt-in cards, memory verification loop, and a
memory-first product tour without local mock switches or test-only scaffolding.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(backend): share scan permission per installation

* chore: reorganize desktop packaging internal scripts (#141)

* fix(backend): refine onboarding permissions and actions

* fix: surface structured quota exhaustion errors

* feat(memory): add time-filtered trace recall

* feat: trust Codex hooks and reveal account identifiers

* fix(config): fail loud on invalid config instead of silently using defaults (#7)

loadConfig() caught YAML parse and schema validation errors, logged a
console.warn, and returned a fresh default Config. Any onboarded settings
(including BYOK provider credentials) were silently discarded and the CLI
kept running against defaults with no non-zero exit, contradicting the
project's fail-loud philosophy.

Throw a new ConfigError (ConfigLoadError for bad YAML/schema, EnvValueError
for missing env var references, both now exported) when the config file
exists but is invalid. A missing config file still returns the defaults
unchanged, since first-run `memmy onboard` depends on that path. The CLI
entrypoint (main.ts) catches ConfigError specifically and prints a concise
`memmy: <reason>` message with a non-zero exit code instead of an unhandled
stack trace; other entrypoints (serve/gateway route through the same CLI
main(), and the frontend-bridge/websocket HTTP layer already has generic
catch blocks that turn thrown errors into clean error responses).

* feat(feishu): add QR bot setup (#127)

* fix(memmy-memory): surface memory-service outages instead of silent fallback (#9)

MemmyMemoryHook.beforeRun/afterRun/sessionStart/sessionEnd caught every
connection error from the memory service and only recorded it on an
unread `lastError` field, so an unreachable service (e.g. default
http://127.0.0.1:18960 down) degraded completely silently: no CLI/log
warning, and the LLM turn context received neither a recall block nor
any notice, indistinguishable from "memory checked, found nothing".
This contradicted the README's fail-loud promise and drove agents to
silently fall back to the local MEMORY.md/history.jsonl store.

- Replace the blanket try/catch with per-phase handling that emits a
  deduped console.warn (once per session, reset on recovery) and
  injects an honest <memmy_memory_status status="unavailable"> notice
  into the user message so the model is told memory wasn't checked,
  instead of implying nothing relevant was found.
- Drop the stale in-flight turn entry on a failed beforeRun so afterRun
  doesn't try to complete a turn that was never opened server-side.
- Document the new status tag in the memory context protocol prompt.

Failures still never crash the turn (fail-loud, not fail-crash).

* chore: add embedding mode into pkg (#147)

* feat(analytics): send userId at the top level of /api/analytics/events (#148)

Keep params.user_id for event dimensions while also exposing userId alongside clientId so the cloud proxy can filter and map GA4 user identity.

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>

* feat: add persistent cross-turn goal mode

* fix: expose goal slash command in web ui

* fix: polish goal command composer ui

* feat: refine product tour for deny-scan and scroll placement

Skip the logs tour step when scan is denied, and stabilize spotlight
scrolling and bubble placement so onboarding steps stay readable.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix: hide goal command argument hint

* fix: normalize goal request display and titles

* fix(memory): keep short pattern terms out of raw JSON metadata columns

Two-char tokens like "ts" skip FTS and hit the pattern channel, which
LIKE-matched them against raw properties_json/info_json. Every trace
carries the JSON key "ts", so unrelated recent memories outranked real
hits. Short ASCII terms now only match id, key, value and tags; longer
terms and CJK bigrams keep their metadata reach.

* fix(backend): stop capturing tool results as the user query

Claude Code transcripts store tool results as user-role records, so
the Stop-event transcript fallback could save tool output to memory
as the user's query. Classify tool_result records as tool messages
so the fallback finds the real prompt.

* feat: reshape onboarding analytics for funnel-friendly step tracking

Emit viewed/skipped per tour step with flow branching, and defer onboarding_completed until nickname.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix: stabilize goal UI hydration

* fix(settings): show BYOK usage detail copy (#155)

Co-authored-by: jiachengzhen <jiacz@memtensor.cn>

* fix: seed first-report chat instead of re-running the agent

Persist the onboarding insight report into a WebUI session as soon as it
is generated, then open that history on home so finishing the guide no
longer triggers a duplicate Thinking turn.

Co-authored-by: Cursor <cursoragent@cursor.com>

* feat(onboarding): focus initial report on preferences and latest task

* fix: correct goal timer and composer action

* feat(onboarding): prioritize first report memory handoff

* codeowners (#159)

* chore: show invitation token

* codeowners

* fix(onboarding): preserve first report context across agents

* fix(onboarding): streamline first report handoff

* fix(agent): report unchanged file mutations

* test(agent): align invalid config expectation

* fix: open WorkBuddy with task deeplink and /memmy-memory prompt (#162)

Use workbuddy://task?action=start&prompt= for GUI handoff, prefix the continuation text with /memmy-memory, and fall back to opening the app without Terminal.

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(desktop): store Windows packaged data under install dir (#165)

* feat(timezone): honor user UTC offsets across memory

* fix: streamline DAG snapshot projection

* feat: add Pi and QwenWork memory sources

* fix: rename qwenwork display label

* feat: add preset Agent selector

* release: Memmy v1.0.5 (#170)

* chore(release): prepare Memmy v1.0.5

* test(release): align v1.0.5 smoke contracts

* test(config): expect invalid files to fail loudly

---------

Co-authored-by: jiachengzhen <jiacz@memtensor.cn>

* memmy-agent: Let every AI remember the same you - V1.0.5 (#173)

* codeowners (#159)

* chore: show invitation token

* codeowners

* fix: open WorkBuddy with task deeplink and /memmy-memory prompt (#162)

Use workbuddy://task?action=start&prompt= for GUI handoff, prefix the continuation text with /memmy-memory, and fall back to opening the app without Terminal.

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>

* release: Memmy v1.0.5 (#170)

* chore(release): prepare Memmy v1.0.5

* test(release): align v1.0.5 smoke contracts

* test(config): expect invalid files to fail loudly

---------

Co-authored-by: jiachengzhen <jiacz@memtensor.cn>

---------

Co-authored-by: Jiang <33757498+hijzy@users.noreply.github.com>
Co-authored-by: antalike <527949167@qq.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: zhaxi <syzsunshine219@gmail.com>
Co-authored-by: jiachengzhen <jiacz@memtensor.cn>

* fix(desktop): keep conversation composer growing and scrollable (#171)

Resync textarea height on draft/chrome changes, and stop locking single-line mode behind overflow:hidden so wrapped input is not clipped.

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(memory): show quota error title for 40309

* fix(memory): harden cross-agent onboarding

* fix(memory): hide unverified agent drafts

* test(desktop): align product tour initial tab

* chore(release): publish Memmy v1.0.5 (#174)

* feat: exclude dependency tests and docs from desktop packages (#123)

* fix: unify cross-agent action backgrounds

* fix: simplify memory tool call headings

* feat(memory): commit episode routing on turn complete

* fix(memory): separate retrieval content and validate L3 evidence

* fix(memory): finalize episode rewards and processing

* chore: docs

* chore: readme

* chore: show invitation token (#135)

* feat(memory): link related memory details

* feat(analytics): track desktop memory adds during agent-source scans (#139)

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>

* feat: merge pkg && optimize pkg (#140)

* feat: merge pkg shell

* feat: merge pkg shell

* feat: merge pkg shell

* feat: merge pkg shell

* feat: tighten onboarding activation with cross-agent relay and product tour

Ship the first-chat relay/opt-in cards, memory verification loop, and a
memory-first product tour without local mock switches or test-only scaffolding.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(backend): share scan permission per installation

* chore: reorganize desktop packaging internal scripts (#141)

* fix(backend): refine onboarding permissions and actions

* fix: surface structured quota exhaustion errors

* feat(memory): add time-filtered trace recall

* feat: trust Codex hooks and reveal account identifiers

* fix(config): fail loud on invalid config instead of silently using defaults (#7)

loadConfig() caught YAML parse and schema validation errors, logged a
console.warn, and returned a fresh default Config. Any onboarded settings
(including BYOK provider credentials) were silently discarded and the CLI
kept running against defaults with no non-zero exit, contradicting the
project's fail-loud philosophy.

Throw a new ConfigError (ConfigLoadError for bad YAML/schema, EnvValueError
for missing env var references, both now exported) when the config file
exists but is invalid. A missing config file still returns the defaults
unchanged, since first-run `memmy onboard` depends on that path. The CLI
entrypoint (main.ts) catches ConfigError specifically and prints a concise
`memmy: <reason>` message with a non-zero exit code instead of an unhandled
stack trace; other entrypoints (serve/gateway route through the same CLI
main(), and the frontend-bridge/websocket HTTP layer already has generic
catch blocks that turn thrown errors into clean error responses).

* feat(feishu): add QR bot setup (#127)

* fix(memmy-memory): surface memory-service outages instead of silent fallback (#9)

MemmyMemoryHook.beforeRun/afterRun/sessionStart/sessionEnd caught every
connection error from the memory service and only recorded it on an
unread `lastError` field, so an unreachable service (e.g. default
http://127.0.0.1:18960 down) degraded completely silently: no CLI/log
warning, and the LLM turn context received neither a recall block nor
any notice, indistinguishable from "memory checked, found nothing".
This contradicted the README's fail-loud promise and drove agents to
silently fall back to the local MEMORY.md/history.jsonl store.

- Replace the blanket try/catch with per-phase handling that emits a
  deduped console.warn (once per session, reset on recovery) and
  injects an honest <memmy_memory_status status="unavailable"> notice
  into the user message so the model is told memory wasn't checked,
  instead of implying nothing relevant was found.
- Drop the stale in-flight turn entry on a failed beforeRun so afterRun
  doesn't try to complete a turn that was never opened server-side.
- Document the new status tag in the memory context protocol prompt.

Failures still never crash the turn (fail-loud, not fail-crash).

* chore: add embedding mode into pkg (#147)

* feat(analytics): send userId at the top level of /api/analytics/events (#148)

Keep params.user_id for event dimensions while also exposing userId alongside clientId so the cloud proxy can filter and map GA4 user identity.

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>

* feat: refine product tour for deny-scan and scroll placement

Skip the logs tour step when scan is denied, and stabilize spotlight
scrolling and bubble placement so onboarding steps stay readable.

Co-authored-by: Cursor <cursoragent@cursor.com>

* feat: reshape onboarding analytics for funnel-friendly step tracking

Emit viewed/skipped per tour step with flow branching, and defer onboarding_completed until nickname.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(settings): show BYOK usage detail copy (#155)

Co-authored-by: jiachengzhen <jiacz@memtensor.cn>

* fix: seed first-report chat instead of re-running the agent

Persist the onboarding insight report into a WebUI session as soon as it
is generated, then open that history on home so finishing the guide no
longer triggers a duplicate Thinking turn.

Co-authored-by: Cursor <cursoragent@cursor.com>

* feat(onboarding): focus initial report on preferences and latest task

* feat(onboarding): prioritize first report memory handoff

* codeowners (#159)

* chore: show invitation token

* codeowners

* fix(onboarding): preserve first report context across agents

* fix(onboarding): streamline first report handoff

* fix: open WorkBuddy with task deeplink and /memmy-memory prompt (#162)

Use workbuddy://task?action=start&prompt= for GUI handoff, prefix the continuation text with /memmy-memory, and fall back to opening the app without Terminal.

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>

* chore(release): prepare Memmy v1.0.5

* test(release): align v1.0.5 smoke contracts

* test(config): expect invalid files to fail loudly

---------

Co-authored-by: Wang Daoji <75928131+Wang-Daoji@users.noreply.github.com>
Co-authored-by: Hustzdy <67457465+wustzdy@users.noreply.github.com>
Co-authored-by: jiang <fdjzy@qq.com>
Co-authored-by: Jiang <33757498+hijzy@users.noreply.github.com>
Co-authored-by: ZongYue <52625187+ZongYue99@users.noreply.github.com>
Co-authored-by: antalike <527949167@qq.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: shsfcx <shsfcx@shsfcxdeMacBook-Pro.local>
Co-authored-by: Daoji Wang <627665797@qq.com>
Co-authored-by: Xinmin Zeng <135568692+fancyboi999@users.noreply.github.com>
Co-authored-by: Ericwong <970699442@qq.com>
Co-authored-by: antalike <>
Co-authored-by: zhiqi <99724206+dolnna@users.noreply.github.com>
Co-authored-by: jiachengzhen <jiacz@memtensor.cn>

* fix(agent): finalize capped turns and queue follow-ups

* feat(ui): compact goal controls into one line

* fix(ui): expand goal objective into free space

* fix(ui): format goal duration by time units

* feat: expose queued messages in chat

* fix(desktop): mask account identifiers

* fix(backend): quote hook commands for Windows shells (#153)

Hook commands used POSIX single quotes, which cmd.exe and PowerShell
cannot execute, so installed hooks never ran on Windows. Use double
quotes on win32 and keep the POSIX form elsewhere.

Fixes #149

* fix(openai-api): report turn token usage (#181)

* fix(desktop): set microphone usage description by package edition (#185)

Write NSMicrophoneUsageDescription from cn/intl at macOS package time.

Co-authored-by: antalike <>
Co-authored-by: Cursor <cursoragent@cursor.com>

* feat: account byok multi model on byok (#186)

* feat(desktop): add account BYOK workspace and per-chat model switching

Let account users keep platform models while adding personal BYOK
connections, pick models per conversation, and preserve selections across
mode switches when the model still exists.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(desktop): align BYOK mode transitions and model controls

Keep local BYOK available across account logout while simplifying model configuration and removing unnecessary model-switch notices.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: shsfcx <shsfcx@shsfcxdeMacBook-Pro.local>
Co-authored-by: Cursor <cursoragent@cursor.com>

* feat: Enhance error handling and metadata propagation for model errors (#182)

* feat(agent): share session queue across GUI and TUI

* feat(scripts): add Windows clear-all utility (#190)

Co-authored-by: jiachengzhen <jiacz@memtensor.cn>

* feat(analytics): track tools and connections outcomes to cloud GA4 (#191)

Report channel/integration connect, disconnect, fail, and mid-flow cancel
via backend analytics so real usage lands in the cloud event pipeline.

Co-authored-by: antalike <>

* polish readme (#194)

* readme

* readme-contributors

* readme-slogan

* feat: add startup splash localization and HTML rendering (#193)

* fix(settings): show Windows status bar copy (#192)

* fix(settings): show Windows status bar copy

* test(frontend): align quality checks

---------

Co-authored-by: jiachengzhen <jiacz@memtensor.cn>

* fix(onboarding): hide first-report wrapper tags (#196)

* fix(backend): hide simplified first-report wrappers

* test(backend): align integration delete expectations

---------

Co-authored-by: jiachengzhen <jiacz@memtensor.cn>

* fix(settings): default intl language selector to English (#195)

* fix(settings): default intl language selector to English

* test(frontend): align quality checks

---------

Co-authored-by: jiachengzhen <jiacz@memtensor.cn>

* polish readme (#197)

* readme

* readme-contributors

* readme-slogan

* README.md:video

* Update README.zh-CN.md-video

* polish readme

* feat: steer queued GUI messages into active turns

* perf: optimize memory imports and panel reads

* fix(settings): restore controlled view props

* fix(onboarding): harden report parsing and language choice

* fix(dev): support legacy model defaults

* Revert "Merge branch 'byok' into v1.0.6"

This reverts commit b63f20c, reversing
changes made to c445f32.

* feat: add Goal workspace environment and Git evidence panel

* fix: show project environment before task creation

* fix: supervise local agent gateway from Electron

* fix: unify and harden workspace environment state

* feat: complete BYOK model catalog integration (#200)

* feat: add interactive workspace environment controls

* fix(asr): show OS-specific microphone permission guidance

Surface denied mic access as a clear toast with macOS/Windows settings paths, and let Windows first-use continue to getUserMedia so the system prompt can appear.

* Revert "feat: add interactive workspace environment controls"

* Route desktop UI analytics through cloud instead of gtag.

Keep app_launch on gtag for GA4 session bootstrap, and drop the unused backend Measurement Protocol client.

* perf: optimize memory imports and panel reads

* fix(onboarding): harden report parsing and language choice

* fix(asr): show OS-specific microphone permission guidance

Surface denied mic access as a clear toast with macOS/Windows settings paths, and let Windows first-use continue to getUserMedia so the system prompt can appear.

* fix(memory): keep init config compatible with agent schema

* refactor(migrations): consolidate v1.0.7 migrations

* fix(frontend): place goal above composer

* fix: show unavailable model message before send

* fix: simplify custom model capability selection

* feat: add account image-to-text fallback

* test: align image fallback fixture

* fix(agent): correct session status reporting

* fix(models): constrain long model names

* fix(memory): open model configuration from errors

* fix(composer): reserve model action rail

* fix(settings): disable deleting final BYOK connection

* fix(settings): retain connection test status

* fix(settings): separate task model actions

* fix(settings): strengthen default model button

* fix(frontend): preserve new-chat model rejection

* fix(frontend): reject empty Goal composer sends

* fix(frontend): delete shared model connections

* fix: map provider names in delete confirmations

* feat: show token usage details inline

* fix: preserve single tildes in markdown temperature ranges

* fix(settings): repair BYOK model configuration (#229)

* fix memory retrieval filtering and skill timing

* fix: remove GUI goal budget controls

* fix: repair goal controls and active steering (#232)

* fix: refine goal composer interactions (#233)

Require explicit command selection, preserve safe slash actions in Goal mode, and align the active conversation composer with the new-task layout.

Co-authored-by: shsfcx <shsfcx@shsfcxdeMacBook-Pro.local>
Co-authored-by: Cursor <cursoragent@cursor.com>

* feat: integrate Memmy with DeepSeek Harness

* fix: keep log card spacing consistent

* fix(settings): keep add config below drag region

* fix: package Memory workspace dependencies on Windows (#236)

* polish readme (#239)

* readme

* polish readme

* Update README.md

---------

Co-authored-by: Daoji Wang <627665797@qq.com>
Co-authored-by: jiang <fdjzy@qq.com>
Co-authored-by: Jiang <33757498+hijzy@users.noreply.github.com>
Co-authored-by: 黑布林 <11641432+heiheiyouyou@user.noreply.gitee.com>
Co-authored-by: Wang Daoji <75928131+Wang-Daoji@users.noreply.github.com>
Co-authored-by: Hustzdy <67457465+wustzdy@users.noreply.github.com>
Co-authored-by: antalike <527949167@qq.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: shsfcx <shsfcx@shsfcxdeMacBook-Pro.local>
Co-authored-by: Xinmin Zeng <135568692+fancyboi999@users.noreply.github.com>
Co-authored-by: Ericwong <970699442@qq.com>
Co-authored-by: antalike <>
Co-authored-by: DevMello <pranavy2008@gmail.com>
Co-authored-by: zhiqi <99724206+dolnna@users.noreply.github.com>
Co-authored-by: zhaxi <syzsunshine219@gmail.com>
Co-authored-by: jiachengzhen <jiacz@memtensor.cn>
Co-authored-by: jiang <hijzy@qq.com>
Co-authored-by: Pranav Yerramaneni <69360966+DevMello@users.noreply.github.com>
Co-authored-by: EF1874 <57347272+EF1874@users.noreply.github.com>
Co-authored-by: lc <284264018@qq.com>
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.

9 participants