v0.17.11 — honesty + quality-of-life patch
Summary
Dogfooding-driven honesty + quality-of-life release. 4 commits addressing real bugs + UX gaps surfaced by today's (2026-04-23) Scottish-Chinese fusion showcase + parallel codex + superpowers:code-reviewer product audit. User asked "我们的产品好不好?使用起来有bug吗?" — here's the answer.
What's in
1. Style-Treatment 7th question-bank dimension (commit `69dbd5d1`)
- `/visual-brainstorm` now asks a mandatory 7th dimension: how the tradition is applied — `additive` (photo preserved, elements painted on top) / `unified` (whole-image transformation) / `collage` (visible cut-outs) / `wash` (global filter).
- Closes the UX gap where gpt-image-1.5 smoke test produced a whole-image painterly overlay when user wanted additive treatment — the 6-dim question bank simply didn't ask about style application mode.
- Propagated to `/visual-spec` C.prompt derivation + S4 invariant. `proposal.md` frontmatter now 8 fields (`style_treatment` added).
2. Provider error messages normalized (commit `437f4dc0`)
- Gemini — classifies empty `response.candidates` into quota-exhaustion vs content-policy vs generic via `prompt_feedback.block_reason`. Points to aistudio.google.com for free-tier quota hits.
- OpenAI — user-facing messages for 402 billing + 400 content-policy + 429 rate-limit on top of existing 403 Org-verify. Retryability preserved via (fragile) string-match — hardening in v0.17.12.
- ComfyUI — execution-error extractor surfaces first meaningful message from `status.messages`; invalid-image hint explains likely checkpoint/VAE failure.
3. MCP surface cleanup (commit `5bf4b1ca`)
- BREAKING: `create_artwork.ref_type` parameter removed — dead code that silently dropped user input. SDK-level `ref_type` unchanged in this release (scoped v0.18+).
- `layers_split.plan` now documented in Args block; `layers_edit` visible/locked split into 2 lines.
- Hardcoded `/Users/yhryzy/` paths in shipped docs replaced with `` placeholders.
4. README + BP honesty (commit `856ce54c`)
- README: "Try it in 60 seconds" → "Quick start" with realistic time breakdown (~1 min if Claude Code + `uv` ready, ~5-10 min from scratch).
- BP §5.4 moat claim softened: "24 个月以上难以复制" → "12 个月以上需专门投入" + explicit "3 cultural consultants for a quarter" reality check.
- `.gitignore` adds `/gen_.png`, `/gen_.jpg`, `tmp-shipgate-/` (75 gen_.png removed from repo root).
Review consensus
Both reviewers say ship-with-caveats, no hard blockers.
- Code: B+ → A-
- Skill design: B → A-
- UX: C+ → B
- Docs: C → B
Known follow-ups (v0.17.12)
- `/visual-plan` Phase 3 reads `C.style_treatment` (currently declared in design.md but inert in execution; `/visual-spec` governance puts the directive in `base_prompt` so effect exists, just undocumented)
- `openai_provider._is_retryable` robustness (replace string-match with exception subclass chain)
- SDK-level `create_artwork.ref_type` cleanup (mirror MCP surface removal)
Tests
1920 passed / 12 pre-existing baseline failures / zero regressions (same baseline as v0.17.10).
Install
```bash
pip install vulca[mcp]==0.17.11
```
Or via uvx in Claude Code MCP config:
```json
{"mcpServers": {"vulca": {"command": "uvx", "args": ["--from", "vulca[mcp]==0.17.11", "vulca-mcp"]}}}
```