This repository has been archived on 2026-04-03. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
core/packages/tasks/manifest.json
Jeffrey Smith 22c70034c6 Feat v0.2.4: SDK Topbar, Schedules surface, manifest icons, UserMenu cleanup
Shell navigation:
- sw.shell.Topbar — composable nav bar (title + slot + bell + user menu)
- Topbar CSS in sw-shell.css, wired into SDK via dynamic import

Schedules surface (packages/schedules/):
- Wraps kernel /api/v1/schedules CRUD + run + logs
- Table view with cron badge, human-readable preview, enable toggle
- Create/edit dialog with live cron-to-english preview

Manifest icons:
- icon field in manifest.json (emoji string)
- Surfaces API returns icon from package manifest
- UserMenu renders per-surface icons

UserMenu cleanup:
- Removed dead Chat/Notes/Projects hardcoded links
- Menu now driven by /api/v1/surfaces API (installed surfaces only)
- Core surfaces filtered via CORE_IDS set

Bug fixes:
- isAdmin() in can.js now checks surface.admin.access RBAC grant
  instead of deprecated user.role column (v0.2.0 regression)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 10:16:37 +00:00

75 lines
1.7 KiB
JSON

{
"id": "tasks",
"title": "Tasks",
"type": "full",
"tier": "starlark",
"route": "/s/tasks",
"auth": "authenticated",
"layout": "single",
"version": "0.1.0",
"icon": "✅",
"description": "Task management surface with lifecycle events, webhook integration, and scheduled reminders.",
"author": "switchboard",
"permissions": ["db.write", "notifications.send"],
"api_routes": [
{"method": "GET", "path": "/items"},
{"method": "POST", "path": "/items"},
{"method": "GET", "path": "/items/*"},
{"method": "PUT", "path": "/items/*"},
{"method": "DELETE", "path": "/items/*"},
{"method": "GET", "path": "/stats"}
],
"db_tables": {
"items": {
"columns": {
"title": "text",
"description": "text",
"status": "text",
"priority": "text",
"assignee_id": "text",
"creator_id": "text",
"due_date": "text",
"tags": "text",
"updated_at": "text",
"completed_at": "text"
},
"indexes": [
["status"],
["assignee_id"],
["creator_id"]
]
}
},
"triggers": [
{
"type": "event",
"pattern": "task.*",
"entry_point": "on_task_event"
},
{
"type": "webhook",
"slug": "create",
"entry_point": "on_webhook"
}
],
"settings": {
"statuses": {
"type": "string",
"label": "Statuses",
"description": "Comma-separated task statuses",
"default": "todo,in_progress,done,cancelled"
},
"priorities": {
"type": "string",
"label": "Priorities",
"description": "Comma-separated task priorities",
"default": "low,medium,high,urgent"
}
}
}