mirror of
https://github.com/awizemann/scarf.git
synced 2026-05-10 10:36:35 +00:00
3af99d9d9c
The template's dashboard shipped with two hardcoded example URLs (https://example.com + https://example.org) baked into a "Configured Sites" list widget, and the widget title still said "from sites.txt" — stale from the v1.0.0 layout before we moved to config.json. After the v1.1.0 configure-on-install flow lands, the user fills in a real sites list through the Configure form (which correctly lands in `.scarf/config.json` — the editor modal confirms that), but the dashboard still rendered the baked-in example URLs. The agent would overwrite them on the first cron run, but until then the dashboard misrepresents reality. Two orthogonal paths to fix this — populate the dashboard's items from config.json at install time (requires Scarf-side template-value interpolation, which is a v2.3.1 feature), or ship a dashboard that clearly advertises "nothing has run yet." Taking the second path for v1.1.0: replace the example URLs with a single placeholder row with status "pending" pointing the user at running the check. The agent replaces the row with real data on the first cron run. Also: widget title fixed ("Watched Sites (populated after first run)" instead of the stale sites.txt reference), top-of-dashboard description updated, and the Quick Start text now mentions the Configuration button as the way to set sites, not the long-gone sites.txt. Bundle + catalog rebuilt; ProjectTemplateExampleTemplateTests still passes (it asserts against cron prompt + schema shape, not dashboard content, so the dashboard edit doesn't affect it). --- Secondary fix: test deflake from the saveRegistry throw change. Making saveRegistry throw exposed a pre-existing parallel-test race: three suites (ProjectTemplateInstallerTests, ProjectTemplateUninstallerTests, ProjectTemplateConfigInstallTests) all write to the real `~/.hermes/scarf/projects.json`. Swift Testing's `.serialized` trait only serializes within a single suite — multiple suites still run in parallel. Before, writes silently failed on the racing-loser side and tests passed by accident; now the loser's test throws "couldn't be saved in the folder 'scarf'". Added TestRegistryLock — a module-level NSLock that all three suites' snapshotRegistry/restoreRegistry helpers share. acquireAndSnapshot() locks + reads; restore(_:) writes + unlocks. The paired snapshot-in-test-body / defer-restore pattern keeps acquire + release balanced. Replaced the three per-suite copies of the helpers with thin delegates to the shared lock. Verified by running the full test suite 3 consecutive times: 53/53 tests pass each run, no flakes. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
69 lines
2.2 KiB
JSON
69 lines
2.2 KiB
JSON
{
|
|
"generated": true,
|
|
"schemaVersion": 1,
|
|
"templates": [
|
|
{
|
|
"author": {
|
|
"name": "Alan Wizemann",
|
|
"url": "https://github.com/awizemann/scarf"
|
|
},
|
|
"bundleSha256": "3274964418b7cb1e4df2980936e16f9afdf3d4e90c91ae76dead6e5065306818",
|
|
"bundleSize": 6880,
|
|
"category": "monitoring",
|
|
"config": {
|
|
"modelRecommendation": {
|
|
"preferred": "claude-haiku-4",
|
|
"rationale": "Simple tool-use task \u2014 HTTP GETs + a short summary. Haiku is plenty and keeps cost low when the cron runs daily."
|
|
},
|
|
"schema": [
|
|
{
|
|
"default": [
|
|
"https://example.com",
|
|
"https://example.org"
|
|
],
|
|
"description": "One URL per item. HTTP or HTTPS. You can add and remove entries after install via the Configuration button on the dashboard.",
|
|
"itemType": "string",
|
|
"key": "sites",
|
|
"label": "Sites to Watch",
|
|
"maxItems": 25,
|
|
"minItems": 1,
|
|
"required": true,
|
|
"type": "list"
|
|
},
|
|
{
|
|
"default": 10,
|
|
"description": "How long to wait for each URL before giving up.",
|
|
"key": "timeout_seconds",
|
|
"label": "Request Timeout (seconds)",
|
|
"max": 60,
|
|
"min": 1,
|
|
"required": false,
|
|
"type": "number"
|
|
}
|
|
]
|
|
},
|
|
"contents": {
|
|
"agentsMd": true,
|
|
"config": 2,
|
|
"cron": 1,
|
|
"dashboard": true
|
|
},
|
|
"description": "A daily uptime check for a list of URLs you configure on install. Writes status to status-log.md and updates the dashboard with current counts.",
|
|
"detailSlug": "awizemann-site-status-checker",
|
|
"id": "awizemann/site-status-checker",
|
|
"installUrl": "https://raw.githubusercontent.com/awizemann/scarf/main/templates/awizemann/site-status-checker/site-status-checker.scarftemplate",
|
|
"minHermesVersion": "0.9.0",
|
|
"minScarfVersion": "2.3.0",
|
|
"name": "Site Status Checker",
|
|
"tags": [
|
|
"monitoring",
|
|
"uptime",
|
|
"cron",
|
|
"starter",
|
|
"configurable"
|
|
],
|
|
"version": "1.1.0"
|
|
}
|
|
]
|
|
}
|