mirror of
https://github.com/multica-ai/multica.git
synced 2026-08-03 11:10:23 +02:00
* feat(daemon): inject project description into the agent brief Issues bound to a project only surfaced the project title in the runtime brief; the project description (durable, project-wide context the owner sets) was loaded but dropped. Carry it end-to-end: - claim handler reads proj.Description onto the response (issue-bound and quick-create paths) - new ProjectDescription field on AgentTaskResponse, daemon Task, and TaskContextForEnv - rendered in the brief's `## Project Context` section and written to .multica/project/resources.json as project_description Empty descriptions render nothing (no extra heading). Updated the projects-and-resources built-in skill docs in the same change. MUL-3465 Co-authored-by: multica-agent <github@multica.ai> * feat(projects): clarify project description is injected as agent context The project description is now durable context injected into every task's brief, but the UI still presented it as a plain "Description" field, so existing descriptions could silently become agent input. Add a hint under the description editor on the project detail page and in the create-project modal, in all four locales, stating it is shared with agents as context for every task in the project. No data-semantics change. Addresses review feedback on PR #4395. MUL-3465 Co-authored-by: multica-agent <github@multica.ai> * test(handler): assert project description flows through task claim The execenv tests cover brief rendering, but nothing pinned the claim handler boundary where proj.Description is read onto the response. Add two tests — issue-bound and quick-create paths — so a regression in that assignment fails loudly instead of silently dropping the description. Addresses review feedback on PR #4395. MUL-3465 Co-authored-by: multica-agent <github@multica.ai> --------- Co-authored-by: J <j@multica.ai> Co-authored-by: multica-agent <github@multica.ai>
149 lines
5.5 KiB
JSON
149 lines
5.5 KiB
JSON
{
|
|
"page": {
|
|
"title": "Projects",
|
|
"new_project": "New project",
|
|
"empty": "No projects yet",
|
|
"create_first": "Create your first project",
|
|
"view_compact": "Compact",
|
|
"view_comfortable": "Comfortable",
|
|
"search_placeholder": "Search projects...",
|
|
"no_search_results": "No results match your search",
|
|
"view_table": "Table",
|
|
"view_cards": "Cards",
|
|
"row_menu": "Project actions",
|
|
"pin": "Pin to sidebar",
|
|
"unpin": "Unpin",
|
|
"delete": "Delete",
|
|
"no_matches": "No projects match",
|
|
"selected_one": "{{count}} selected",
|
|
"selected_other": "{{count}} selected",
|
|
"clear_selection": "Clear selection"
|
|
},
|
|
"table": {
|
|
"name": "Name",
|
|
"priority": "Priority",
|
|
"status": "Status",
|
|
"progress": "Progress",
|
|
"lead": "Lead",
|
|
"created": "Created",
|
|
"issues": "Issues"
|
|
},
|
|
"status": {
|
|
"planned": "Planned",
|
|
"in_progress": "In Progress",
|
|
"paused": "Paused",
|
|
"completed": "Completed",
|
|
"cancelled": "Cancelled"
|
|
},
|
|
"priority": {
|
|
"urgent": "Urgent",
|
|
"high": "High",
|
|
"medium": "Medium",
|
|
"low": "Low",
|
|
"none": "No priority"
|
|
},
|
|
"lead": {
|
|
"no_lead": "No lead",
|
|
"assign_placeholder": "Assign lead...",
|
|
"members_group": "Members",
|
|
"agents_group": "Agents",
|
|
"no_results": "No results"
|
|
},
|
|
"relative_date": {
|
|
"today": "Today",
|
|
"one_day_ago": "1d ago",
|
|
"days_ago": "{{count}}d ago",
|
|
"months_ago": "{{count}}mo ago"
|
|
},
|
|
"detail": {
|
|
"not_found": "Project not found",
|
|
"breadcrumb_fallback": "Projects",
|
|
"title_placeholder": "Project title",
|
|
"icon_tooltip": "Change icon",
|
|
"pin_tooltip": "Pin to sidebar",
|
|
"unpin_tooltip": "Unpin from sidebar",
|
|
"sidebar_tooltip": "Toggle sidebar",
|
|
"copy_link": "Copy link",
|
|
"delete_action": "Delete project",
|
|
"section_properties": "Properties",
|
|
"section_progress": "Progress",
|
|
"section_description": "Description",
|
|
"description_placeholder": "Add description...",
|
|
"description_hint": "Shared with agents as context for every task in this project.",
|
|
"empty_issues_title": "No issues linked",
|
|
"empty_issues_hint": "Create a new issue or assign existing ones to this project.",
|
|
"empty_issues_new_button": "New Issue",
|
|
"no_issues_yet": "No issues yet",
|
|
"toast_link_copied": "Link copied",
|
|
"toast_project_deleted": "Project deleted",
|
|
"toast_move_issue_failed": "Failed to move issue"
|
|
},
|
|
"resources": {
|
|
"section_header": "Resources",
|
|
"empty": "No resources attached.",
|
|
"add_button": "Add resource",
|
|
"popover_title": "Attach a GitHub repo",
|
|
"repos_search_placeholder": "Search repositories...",
|
|
"repos_search_empty": "No repositories match your search.",
|
|
"attached_badge": "attached",
|
|
"remove_tooltip": "Remove",
|
|
"url_placeholder": "https://github.com/owner/repo or git@github.com:owner/repo.git",
|
|
"url_submit": "Add",
|
|
"toast_attached": "Repository attached",
|
|
"toast_attach_failed": "Failed to attach",
|
|
"toast_removed": "Resource removed",
|
|
"toast_remove_failed": "Failed to remove resource",
|
|
"add_local_directory_button": "Add local directory",
|
|
"local_daemon_offline_hint": "Start the local daemon to attach a directory on this machine.",
|
|
"local_daemon_already_attached_hint": "This machine already has a local directory attached. Remove it before adding another.",
|
|
"local_rename_tooltip": "Rename",
|
|
"local_rename_label": "Local directory label",
|
|
"local_no_daemon_tooltip": "Local daemon isn't reporting an ID yet — the agent can't open this directory.",
|
|
"local_other_machine_tooltip": "Only available on the machine that registered this directory.",
|
|
"chat_hint_prefix": "Agent will work in-place at",
|
|
"toast_local_attached": "Local directory attached",
|
|
"toast_local_renamed": "Renamed",
|
|
"toast_local_rename_failed": "Failed to rename",
|
|
"toast_local_pick_failed": "Failed to pick directory",
|
|
"toast_local_already_attached": "This directory is already attached to the project on this machine.",
|
|
"toast_local_daemon_already_attached": "This machine already has a local directory attached to this project. Remove it before adding another.",
|
|
"toast_local_daemon_not_running": "Local daemon isn't running.",
|
|
"local_validate_not_absolute": "Pick an absolute path.",
|
|
"local_validate_not_found": "Path doesn't exist.",
|
|
"local_validate_not_a_directory": "Path is not a directory.",
|
|
"local_validate_not_readable": "Directory is not readable.",
|
|
"local_validate_not_writable": "Directory is not writable.",
|
|
"local_validate_unsupported": "Local directories can only be picked on the desktop app."
|
|
},
|
|
"delete_dialog": {
|
|
"title": "Delete project",
|
|
"description": "This will delete the project. Issues will not be deleted but will be unlinked.",
|
|
"confirm": "Delete",
|
|
"cancel": "Cancel"
|
|
},
|
|
"picker": {
|
|
"no_project": "No project",
|
|
"remove": "Remove from project",
|
|
"empty": "No projects yet"
|
|
},
|
|
"chip": {
|
|
"fallback_label": "Project"
|
|
},
|
|
"toolbar": {
|
|
"result_count_title": "Matching projects / all projects",
|
|
"filter_label": "Filter",
|
|
"filter_active_count_one": "{{count}} filter",
|
|
"filter_active_count_other": "{{count}} filters",
|
|
"clear_filters": "Clear filters",
|
|
"section_status": "Status",
|
|
"section_priority": "Priority",
|
|
"section_lead": "Lead",
|
|
"display": "Display",
|
|
"sort_by": "Sort by",
|
|
"direction_asc": "Ascending",
|
|
"direction_desc": "Descending",
|
|
"section_columns": "Columns",
|
|
"view": "View"
|
|
}
|
|
}
|