Compare commits

...
Author SHA1 Message Date
kristinhe1111 625f877b43 Revise README for clarity and installation instructions
Updated README to clarify MemHub's functionality and provide installation guidance.
2026-10-18 00:27:38 +08:00
kristinhe1111 1608a4cfc2 feat(memhub): restore the one-click log export entry in settings (#38)
* feat(memhub): show the help and diagnostics group in settings by default

The settings group that carries the one-click log export was gated behind
VITE_ENABLE_DIAGNOSTICS=true at open-sourcing time, so shipped builds never
showed it and users could not export a diagnostics bundle. Flip the default
to visible and keep VITE_ENABLE_DIAGNOSTICS=false as the opt-out for any
build that must not offer it.

* style(memhub): format rerender call per biome
2026-10-17 22:05:24 +08:00
20b92d8a89 release: prepare MemHub 1.0.3 (#33)
Co-authored-by: alvinfei <alvinfei@tencent.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-17 19:40:33 +08:00
18 changed files with 56 additions and 30 deletions

No files matched your search

+15 -1
View File
@@ -36,7 +36,21 @@ Hy Memory and MemHub are versioned and released independently.
Because PyPI release metadata is immutable, the next SDK patch release must
carry the updated license metadata; `2.0.1` retains its published metadata.
## MemHub 1.0.2 — Unreleased
## MemHub 1.0.3 — Unreleased
- Updated the source version to `1.0.3` (build 7).
- Pinned the public SDK to `hy-memory==2.0.3`.
- Removed the HyPermission store wrappers and global model-content consent
switch; the trusted embedded SDK now uses native local stores.
- Prevented uncertain writes from blocking later source work and added one
reconciled automatic retry after ten seconds.
- Added product-facing memory pipeline counters and the log troubleshooting
runbook.
- Allowed a verified packaged Desktop Runtime from a different commit to take
over an equal-build install atomically while preserving downgrade and
tamper refusal.
## MemHub 1.0.2 — 2026-10-17
- Updated the source version to `1.0.2` (build 6).
- Pinned the public SDK to `hy-memory==2.0.2`.
+19 -7
View File
@@ -1,18 +1,30 @@
# MemHub / One Memory
# MemHub
MemHub 是一个本地优先的共享记忆产品:把用户授权的多个 AI 产品中的历史对话和新增内容
汇总到同一份记忆,并让这些 AI 在独立授权后复用它。Hy Memory 是 MemHub 使用的 Python
SDK 和记忆引擎。One Memory / `one-memory` 是历史模块、数据目录、服务和兼容命令名称。
MemHub是一个本地优先的共享记忆产品。它把用户明确授权的AI对话和编码记录汇总到一份本地记忆中,再由用户分别授权给支持的AI工具调用。你可以继续使用熟悉的客户端,同时保留跨工具延续的上下文。Hy Memory是MemHub使用的Python SDK和记忆引擎。
# 💡❤️ MemHub 刚刚开源,欢迎一起优化共建! ❤️💡
**# 💭 MemHub处于preview阶段,当前公开版本可以下载和体验,部分平台制品、安装路径与宿主体验仍在持续优化验证。安装前请先查看Release里的实际制品和版本说明。**
> 🙋 如果你遇到问题/有建议:欢迎提交Issue,并附上MemHub版本、操作系统与芯片架构、复现步骤、预期结果、实际结果和经过脱敏的日志。请不要上传APIKey、真实对话、个人路径或其他敏感信息。
> 我们会公开跟进可复现的问题,持续发布修复,并根据真实反馈完善安装、同步和召回体验。
**# 感谢每一条反馈,期待你和我们一起打磨MemHub的体验 :)**
> 💗 MemHub has just been open-sourced and is under active development. The current public release is available for download andevaluation. Some platform packages, installation paths, and host integrations are still being completed and verified. Check the assets
and release notes before installing.
If you run into a problem, please open an Issue with the version, platform,reproduction steps, and sanitized logs, We wilreviewreports, publish fixes, and keep the support matrix up to date.
## 发行与平台合同
公共 Python SDK 为 `hy-memory==2.0.3`。MemHub 源码版本为 `1.0.2`
(build 6),GitHub 仓库为
公共 Python SDK 为 `hy-memory==2.0.3`。MemHub 源码版本为 `1.0.3`
(build 7),GitHub 仓库为
[`Tencent-Hunyuan/Hy-Memory`](https://github.com/Tencent-Hunyuan/Hy-Memory),npm 包名为
`memhub-cli`。当前代码架构见
[`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)。
`v1.0.2` 的发行目标是 Linux x64/arm64 Runtime 与 macOS arm64/x64 App 和 Runtime。
`v1.0.3` 的发行目标是 Linux x64/arm64 Runtime 与 macOS arm64/x64 App 和 Runtime。
Linux 制品由 GitHub Actions 在原生架构 runner 上构建并完成生命周期验收;macOS
制品由发行流水线完成 Developer ID 签名、公证和验收后手动上传。Windows 不支持。
只有同时出现在 GitHub Release 与 `release-manifest.json` 中、且通过公开校验的制品才属于
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@one-memory/cli",
"version": "1.0.2",
"version": "1.0.3",
"description": "MemHub bootstrap CLI for installing and managing the local-first shared memory runtime",
"license": "Apache-2.0",
"repository": {
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "uv_build"
[project]
name = "one-memory"
version = "1.0.2"
version = "1.0.3"
description = "MemHub local-first memory core"
readme = "README.md"
requires-python = ">=3.12"
+1 -1
View File
@@ -1801,7 +1801,7 @@ wheels = [
[[package]]
name = "one-memory"
version = "1.0.2"
version = "1.0.3"
source = { editable = "." }
dependencies = [
{ name = "aiomysql" },
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@one-memory/desktop",
"version": "1.0.2",
"version": "1.0.3",
"private": true,
"main": "dist/main.js",
"scripts": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@one-memory/site",
"version": "1.0.2",
"version": "1.0.3",
"private": true,
"type": "module",
"scripts": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@one-memory/web",
"version": "1.0.2",
"version": "1.0.3",
"private": true,
"type": "module",
"scripts": {
+2 -2
View File
@@ -123,7 +123,7 @@ it("enters D47 settings without a tour or mandatory second scope-confirmation fl
expect(screen.queryByRole("button", { name: "管理已有授权" })).toBeNull();
expect(screen.getByRole("button", { name: "模型" })).toBeTruthy();
expect(screen.getByRole("button", { name: "连接其他应用" })).toBeTruthy();
expect(screen.queryByRole("button", { name: "帮助与诊断" })).toBeNull();
expect(screen.getByRole("button", { name: "帮助与诊断" })).toBeTruthy();
noModelWrites();
});
@@ -139,7 +139,7 @@ it("enters the workbench without an automatic tour or removed help section", asy
expect(localStorage.getItem("one-memory.learning.s1-3")).toBeNull();
const nav = screen.getByRole("navigation", { name: "主要导航" });
await userEvent.click(within(nav).getByRole("button", { name: "设置" }));
expect(screen.queryByRole("button", { name: "帮助与诊断" })).toBeNull();
expect(screen.getByRole("button", { name: "帮助与诊断" })).toBeTruthy();
expect(screen.queryByRole("dialog", { name: "功能教学" })).toBeNull();
noModelWrites();
});
+4 -4
View File
@@ -35,13 +35,13 @@ afterEach(() => {
vi.clearAllMocks();
});
it("hides diagnostics by default and exposes it only when configured", async () => {
it("shows the help and diagnostics group by default and hides it when opted out", async () => {
const user = userEvent.setup();
const view = render(<R6Settings onDiagnostics={vi.fn()} />);
expect(screen.queryByRole("button", { name: "帮助与诊断" })).toBeNull();
view.rerender(<R6Settings onDiagnostics={vi.fn()} showDiagnostics={true} />);
await user.click(screen.getByRole("button", { name: "帮助与诊断" }));
expect(screen.getByRole("heading", { name: "帮助与诊断" })).toBeTruthy();
expect(screen.getByRole("heading", { name: "导出日志" })).toBeTruthy();
view.rerender(<R6Settings onDiagnostics={vi.fn()} showDiagnostics={false} />);
expect(screen.queryByRole("button", { name: "帮助与诊断" })).toBeNull();
});
+2 -2
View File
@@ -42,11 +42,11 @@ function safeEndpoint(value: string | null) {
export function R6Settings({
active = true,
onDiagnostics: _onDiagnostics,
showDiagnostics = import.meta.env.VITE_ENABLE_DIAGNOSTICS === "true",
showDiagnostics = import.meta.env.VITE_ENABLE_DIAGNOSTICS !== "false",
}: {
onDiagnostics(): void;
active?: boolean;
/** Hidden in release builds unless explicitly enabled at build time. */
/** Shown by default; a release build may still opt out with VITE_ENABLE_DIAGNOSTICS=false. */
showDiagnostics?: boolean;
}) {
const id = useId();
+1 -1
View File
@@ -1,6 +1,6 @@
# MemHub 安装与发行
MemHub `v1.0.2`(build 6)的发行目标如下:
MemHub `v1.0.3`(build 7)的发行目标如下:
| 平台 | 发行物 | 构建与验收 |
| --- | --- | --- |
+2 -2
View File
@@ -1,8 +1,8 @@
{
"name": "one-memory",
"version": "1.0.2",
"version": "1.0.3",
"release": {
"build_number": 6,
"build_number": 7,
"macos_min_version": "13.0",
"app_update": "manual",
"runtime_manifest_schema": 1,
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@one-memory/contracts",
"version": "1.0.2",
"version": "1.0.3",
"private": true,
"type": "module",
"types": "./src/index.ts",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@one-memory/host-bridge",
"version": "1.0.2",
"version": "1.0.3",
"private": true,
"type": "module",
"exports": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@one-memory/operations",
"version": "1.0.2",
"version": "1.0.3",
"private": true,
"type": "module",
"types": "./src/index.ts",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@one-memory/runtime-control",
"version": "1.0.2",
"version": "1.0.3",
"private": true,
"type": "module",
"bin": {
+1 -1
View File
@@ -13,7 +13,7 @@ test("installation docs disclose publication and lifecycle boundaries", async ()
);
assert.match(readme, /公共 Python SDK 为 `hy-memory==2\.0\.3`/);
assert.match(readme, /`v1\.0\.2` 的发行目标是 Linux x64\/arm64 Runtime/);
assert.match(readme, /`v1\.0\.3` 的发行目标是 Linux x64\/arm64 Runtime/);
assert.match(readme, /Linux 制品由 GitHub Actions/);
assert.match(readme, /macOS.*Developer ID 签名、公证/s);
assert.match(readme, /release-manifest\.json/);