Work and study are 板块 too, and 生活 reads as the opposite of work. The
atlas intro now says 走进人生的N个板块, the MCP profile tool and docs say
板块, and the English docs say domain instead of life domain.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The life areas of the portrait (饮食, 恋爱与婚姻, ...) read oddly as 领域.
The web UI, CLI stages, server errors, MCP text, docs/zh and the settings
template now say 板块, and the summary page is 板块总结. English keeps
domain. Prompts and `domain` identifiers are unchanged so the LLM cache
stays valid.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The web UI only spoke Chinese. Its copy now lives in i18next catalogs
(zh-CN as the source, en as the translation) read through typed
selectors. The language follows the browser until the 中/EN switch in
the top bar or on the sign-in page saves a choice. Switching relabels
the map and keeps the selection.
Server errors shown in the UI carry a `code` that the page words in its
own language, while `detail` keeps the Chinese text for other clients.
The summary view sends a failure as data instead of a sentence, and the
source chat no longer sends a speaker label.
Tests check that both catalogs share keys, variables and tags, and
ESLint rejects Chinese text in web/src outside the catalogs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bot platforms could not call the clone: /v1 sits behind the web login, so
an API key alone got 403. /v1 requests without the owner's session now go
to a bot gate that checks one shared token made on the new bot access
page (#/bots). Requests with an Origin header are refused.
In encrypted mode, issuing the token seals the data key under it in
bots.sqlite3, so bots keep working across restarts with no one logged
in. A password change keeps the token, a password reset requires a new
one. The assistant MCP token and the bot token share TokenStore in
client_access.py, and their pages share the token card.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- POST /mcp on the review server: a minimal stateless Streamable HTTP MCP server (tools only,
protocol 2025-11-25/06-18/03-26) with two read-only tools. weclone_profile returns the approved,
current domain summaries and weclone_search finds profile entries by keyword or domain. Peer ids
are shown as 一位联系人 and matched the same way
- one bearer token for all assistants, stored as a hash. The owner picks the privacy level and the
shared domains on #/assistant, and changes apply from the next call. Requests with an Origin
header are refused
- encrypted mode also needs the owner to allow access for 1, 8, 24 or 168 hours. The key is held
in memory only and a restart or password change ends it
- every tool call is logged with the client's user agent and the ids it returned. A storage
error becomes a tool error instead of an HTTP 500
- the domain summary page gains the full level (the default), with a confirmation before copying
private content
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent features have no users yet, so code kept only for earlier runs, checkpoints, auth databases
and config layouts goes.
- distill: per-sample build_prompt/render_chat, the resume-time current_state re-filter and the
input_writeback skip with its overwrite plumbing
- codex_exec takes every request setting from codex_exec_args. agent_distill_args
batch_size/timeout/max_tokens apply to the api backend only, and AgentDistillArgs loses
model/effort/command/sandbox
- organize_memories: --preferences-only, peer keys without chat_with_id and summaries without
peer_relations.json. The context window lookup normalizes llm_provider like the distill config
- auth: the user_version migration of the generated-password scheme
- the review store, harness profile tree, domain summaries and web atlas expect domains
- source_chat: origins without kind
- tests that only covered removed behaviour are dropped. Review, web auth and server tests left
stale by the shared-password rewrite set the password through /api/auth/setup, and the template
cooldown assertion matches 20.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- #/summary, linked from the mode switch, lists each domain's summary under a privacy cap
(public or normal) with generate, edit, approve and reject
- stale summaries are marked and leave the export until regenerated and approved
- the export panel shows the text to paste into a personal assistant
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Replace the G6 graph with a canvas atlas engine (paint, node looks,
metrics, flow lines), an entrance animation and a first-visit night
intro; drop @antv/g6.
- Add a 按维度/按领域 switch in the left panel. Profiles organized by
domain regroup the same facts as domain → topic → attribute, with
fixed domain colours, domain descriptions, and the dimension named on
each review card. Profiles without domains keep the dimension view.
- Rebuild weclone/web/dist and un-ignore web/tests/*.test.ts.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Split the frontend into atlas/ and review/ modules with a shared api client,
and add Prettier, ESLint and node tests for graph layout and data helpers
- Lay out expanded dimensions as separate clusters around the root
- Let the force simulation cool slowly after a node drag instead of stopping abruptly
- Reopening the collapsed root resets the map to its initial layout
- Use one loading screen style for the page and canvas loading states
- Clear stale errors when retrying fact history
- Rebuild weclone/web/dist
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Implemented SourceChatPanel component for displaying chat records with UI enhancements.
- Added source_chat.py to handle chat sample extraction from persisted memory.
- Introduced new CSS styles for improved layout and responsiveness.
- Updated JavaScript bundle with new features and optimizations.
Integrate suffixed encrypted storage across extraction, review, training, and inference. Add shared-password web authentication with two-hour sessions, private request logging, and an isolated profile-building pipeline.
Fix encrypted dataset discovery at training entrypoints and duplicate CSV imports. Add synthetic storage, authentication, and log checks; update documentation and frontend assets.
- Added default values for batch size, max tokens, and timeout in distill_profile.py.
- Refactored required configuration functions to support section-specific error messages.
- Introduced positive and optional positive integer validation functions for configuration.
- Updated resolve_llm_args to utilize new configuration validation functions.
- Modified organize_memories.py to load agent distill configuration and handle missing model gracefully.
- Improved stage 2 output file management in make_dataset_stage2.py, ensuring proper validation against manifest files.
- Added new web assets including HTML, CSS, and JS files for profile review interface.
- Set up default static directory for serving web assets in profile_review.py.