15 Commits
Author SHA1 Message Date
xming521andClaude Opus 5.5 e43b942976 refactor(ui): drop 生活 before 板块
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>
2026-10-28 22:56:33 +08:00
xming521andClaude Opus 5.5 61ac1b7e4a refactor(ui): say 板块 instead of 领域 in Chinese text
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>
2026-10-28 22:40:23 +08:00
xming521andClaude Opus 5.5 ee60a089ac feat(web): English UI with a 中/EN switch
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>
2026-10-28 00:55:40 +08:00
xming521andClaude Opus 5.5 5981aeb72b feat(server): token access to /v1 for chat bots
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>
2026-10-27 17:45:36 +08:00
xming521andClaude Opus 5.5 ec1b39f3db feat(server): MCP endpoint for personal assistants
- 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>
2026-10-27 11:22:12 +08:00
xming521andClaude Opus 5.5 9690b1bb1f refactor(agent): drop compat paths for earlier agent data
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>
2026-10-26 19:52:32 +08:00
xming521andClaude Opus 5.5 2484b4f288 feat(web): domain summary page
- #/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>
2026-10-26 19:08:02 +08:00
xming521andClaude Opus 5.5 5845555529 feat(web): canvas profile atlas with night intro, and a domain view
- 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>
2026-10-21 19:13:01 +08:00
xming521andClaude Opus 5.5 ad288b7bd7 Refactor profile web UI into atlas/review modules and improve graph layout
- 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>
2026-10-16 20:09:16 +08:00
xming521 b43033f97d Update index.html to reference new JavaScript and CSS files; add new CSS styles for improved layout and design. 2026-10-03 18:03:09 +08:00
xming521 040b6f3af1 Fix password bounds, filtered profile scope and input hashing 2026-10-03 13:27:16 +08:00
xming521 4b95b885c7 Refine profile review navigation, controls and source chat display 2026-10-03 00:52:02 +08:00
xming521 58312f84ad feat: add SourceChatPanel component and backend support for source chat retrieval
- 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.
2026-10-02 23:46:15 +08:00
xming521 7daa270736 Add encrypted chat storage and shared-password workflows
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.
2026-10-02 23:18:07 +08:00
xming521 3086a82934 feat: Enhance agent distillation configuration and improve memory organization
- 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.
2026-09-27 17:16:37 +08:00