@ammduncan/easel 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/dist/cli.js +18 -1
- package/dist/mcp.js +10 -5
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to easel. This project adheres to [Semantic Versioning](https://semver.org/).
|
|
4
4
|
|
|
5
|
+
## 0.2.2 — 2026-05-22
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
- **MCP servers wired via `npx -y @ammduncan/easel` now boot the MCP server instead of printing CLI help.** When stdin isn't a TTY (i.e. the process is launched over a pipe by an MCP client), the bin transparently boots the MCP server. Interactive terminal use still shows help. Previously, Claude Desktop, Cursor, and Windsurf saw the CLI's help text on stdout and reported `Unexpected token 'e' is not valid JSON` for every line.
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Explicit `easel mcp` subcommand that runs the stdio MCP server in the foreground (used internally by the no-TTY auto-detection; available as an explicit entry point for clients that want it).
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
- `dist/mcp.js` now exports `main()` and only auto-runs when invoked directly (not when imported), so the CLI can route to it without double-booting.
|
|
15
|
+
|
|
5
16
|
## 0.2.1 — 2026-05-22
|
|
6
17
|
|
|
7
18
|
### Added
|
package/dist/cli.js
CHANGED
|
@@ -28,6 +28,7 @@ Usage:
|
|
|
28
28
|
easel setup --client claude-desktop register the MCP in Claude Desktop's config
|
|
29
29
|
easel setup --client windsurf register the MCP in Windsurf's config
|
|
30
30
|
easel update git pull + npm install + build + setup (re-runs setup to apply new conventions)
|
|
31
|
+
easel mcp run the stdio MCP server in the foreground (used by clients)
|
|
31
32
|
easel restart kill the running HTTP server and respawn it (picks up new builds/paths)
|
|
32
33
|
easel server run the HTTP server in the foreground (debug)
|
|
33
34
|
easel version
|
|
@@ -377,7 +378,23 @@ async function main() {
|
|
|
377
378
|
case "-v":
|
|
378
379
|
cmdVersion();
|
|
379
380
|
return;
|
|
380
|
-
case
|
|
381
|
+
case "mcp": {
|
|
382
|
+
const { main: mcpMain } = await import("./mcp.js");
|
|
383
|
+
await mcpMain();
|
|
384
|
+
return;
|
|
385
|
+
}
|
|
386
|
+
case undefined: {
|
|
387
|
+
// When invoked over a pipe (no TTY on stdin) — e.g. an MCP client
|
|
388
|
+
// launching us via `npx -y @ammduncan/easel` — boot the MCP server.
|
|
389
|
+
// Interactive terminal use still gets the help text.
|
|
390
|
+
if (!process.stdin.isTTY) {
|
|
391
|
+
const { main: mcpMain } = await import("./mcp.js");
|
|
392
|
+
await mcpMain();
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
help();
|
|
396
|
+
return;
|
|
397
|
+
}
|
|
381
398
|
case "help":
|
|
382
399
|
case "--help":
|
|
383
400
|
case "-h":
|
package/dist/mcp.js
CHANGED
|
@@ -79,7 +79,7 @@ async function pushToServer(args) {
|
|
|
79
79
|
}
|
|
80
80
|
return (await r.json());
|
|
81
81
|
}
|
|
82
|
-
async function main() {
|
|
82
|
+
export async function main() {
|
|
83
83
|
const server = new Server({ name: "easel", version: "0.1.0" }, { capabilities: { tools: {} } });
|
|
84
84
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
85
85
|
tools: [
|
|
@@ -229,7 +229,12 @@ async function main() {
|
|
|
229
229
|
const transport = new StdioServerTransport();
|
|
230
230
|
await server.connect(transport);
|
|
231
231
|
}
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
232
|
+
// Auto-run when invoked directly (e.g. `node dist/mcp.js`), not when imported.
|
|
233
|
+
const invokedDirectly = import.meta.url === `file://${process.argv[1]}` ||
|
|
234
|
+
import.meta.url.endsWith("/dist/mcp.js");
|
|
235
|
+
if (invokedDirectly) {
|
|
236
|
+
main().catch((err) => {
|
|
237
|
+
console.error("[easel mcp] fatal:", err);
|
|
238
|
+
process.exit(1);
|
|
239
|
+
});
|
|
240
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ammduncan/easel",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "A live browser tab for every Claude Code (and MCP) session. The push MCP tool appends HTML cards to a scrolling feed you keep open in split-screen.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|