Tags: AIahmedshrf/multica
Tags
Merge pull request multica-ai#894 from multica-ai/agent/j/4ae97f0b revert: handle control_request messages in claude backend (multica-ai#811)
refactor(cli): separate install from setup, redesign CLI configuratio… …n flow (multica-ai#888) Decouple install.sh from environment configuration — install.sh now only installs the CLI binary (and optionally Docker via --with-server), while all environment configuration moves to `multica setup` subcommands. Key changes: - install.sh: remove config writes, rename --local to --with-server - multica setup: add cloud/self-host subcommands with --server-url, --app-url, --port, --frontend-port flags and --profile support - Add config overwrite protection with interactive prompt - Remove redundant commands: `config local`, `auth login` alias - Replace silent multica.ai fallbacks with explicit errors - Onboarding wizard: dynamically show correct setup command for Cloud vs Self-host environments - Update all docs, landing page, and install scripts for consistency
Merge pull request multica-ai#869 from multica-ai/NevilleQingNY/edito… …r-audit feat(editor): add bubble menu for text formatting
fix(handler): add .claude/skills/ candidate path for skills.sh import (… …multica-ai#792) Skills stored under .claude/skills/{name}/SKILL.md (the Claude Code native discovery convention) were not found during skills.sh import, causing a 502 error. Add this path to the candidate list. Fixes multica-ai#777
fix(cli): ensure cloud URLs are configured when not using local mode (m… …ultica-ai#733) After installing via `curl | bash` (default/cloud mode) or running `multica setup` without a local server, the CLI config could retain stale localhost URLs from a previous `multica config local` or `--local` install. This caused `multica login` to connect to localhost instead of multica.ai. Fix: explicitly write cloud URLs (api.multica.ai / multica.ai) to the config in both the install script's cloud mode and the setup command's cloud fallback path.
fix(cli): poll health endpoint instead of fixed sleep in daemon start (… …multica-ai#716) * fix(cli): poll health endpoint instead of fixed sleep in daemon start The daemon start command waited a fixed 2 seconds then checked the health endpoint once. If the daemon took longer to initialize (auth, workspace loading), the check failed and printed a misleading error even though the daemon started successfully. Replace the single check with a polling loop (500ms interval, 15s timeout) so the CLI waits for the daemon to actually be ready. * fix(agent): rewrite openclaw tests to match new backend API The openclaw backend was rewritten in multica-ai#715 to parse a single JSON blob instead of streaming NDJSON events. The tests still referenced the old types (openclawEvent) and methods (handleOCTextEvent, etc.), causing a build failure in CI. Rewrite all tests to exercise the new processOutput method and openclawInt64 helper.
Merge pull request multica-ai#699 from multica-ai/agent/j/696a5ce1 docs: add v0.1.23 and v0.1.24 changelog (2026-04-11)
fix: sanitize markdown rendering in comments and shared renderers (mu… …ltica-ai#679) * fix: sanitize markdown rendering in comments and shared renderers Add rehype-sanitize to both ReadonlyContent and Markdown components so that raw HTML parsed by rehype-raw is sanitized against a strict allowlist before reaching the DOM. On the backend, add a bluemonday sanitization pass when creating and updating comments to strip dangerous tags as defense-in-depth. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: add mention:// protocol to sanitize allowlist and validate file card URLs - Add mention:// to rehype-sanitize protocols.href in both ReadonlyContent and Markdown so @mention links survive sanitization - Validate data-href on file cards to only allow http(s) URLs, blocking javascript: and data: schemes in both frontend click handler and backend bluemonday policy - Narrow class attribute allowlist to specific elements (code, div, span, pre) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix(my-issues): use server-side filtering instead of client-side (mul… …tica-ai#649) * fix(my-issues): use server-side filtering instead of client-side My Issues was fetching ALL workspace issues and filtering client-side, causing the Done column to show wrong counts (269 vs user's actual count) and only 2-3 done issues to appear from the first 50-item page. Backend: - Add creator_id and assignee_ids (uuid[]) filters to ListIssues, ListOpenIssues, and CountIssues SQL queries - Parse creator_id and assignee_ids (comma-separated) query params Frontend: - Add myIssueListOptions with per-scope server-filtered queries - Each tab now calls the API with the right filter: Assigned → assignee_id, Created → creator_id, My Agents → assignee_ids - Add useLoadMoreMyDoneIssues for server-filtered done pagination - WS events invalidate My Issues cache via issueKeys.myAll Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor(my-issues): merge duplicate load-more hooks into one Both board-view and list-view were unconditionally calling two hooks (useLoadMoreDoneIssues + useLoadMoreMyDoneIssues) and picking one at runtime. Merged into a single useLoadMoreDoneIssues with an optional myIssues param so only one hook runs per render. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
PreviousNext