Skip to content

Releases: Saku0512/specter

v1.0.1

Choose a tag to compare

@github-actions github-actions released this 19 Jun 18:12
ac4dd8c

v1.0.1 - 2026-06-20

Patch release for the release automation and Homebrew formula update flow.

Changed

  • Updated the release workflow so Homebrew formula changes are prepared on a dedicated branch instead of being pushed directly to main.
  • Added automated SHA256 updates for all Homebrew formula binary targets.
  • Published fresh v1.0.1 binaries for macOS, Linux, and Windows.

Follow-up

  • Homebrew formula update is tracked in PR #46.

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 19 Jun 17:57
8423353

v1.0.0 - 2026-06-20

Specter v1.0.0 is the first stable release of the project: a lightweight, config-driven mock API server for frontend development, E2E tests, demos, and local integration work.

This release brings together the mock server, CLI workflows, editor support, documentation site, and safety improvements into a complete local development toolkit.

Highlights

  • Define mock APIs in YAML and run them from a single binary with hot reload.
  • Build realistic flows with state, vars, stores, seeded data, scenario presets, timelines, delays, rate limits, and fault injection.
  • Generate and validate configs with OpenAPI support, JSON Schema, specter validate, and specter doctor.
  • Inspect and control a running server from the built-in web UI.
  • Author configs with the Specter Mock Server VS Code extension from the Visual Studio Marketplace.
  • Browse the GitHub Pages documentation with search, copyable snippets, examples, and comparison guides.

Mock Server

  • Added scenario presets for switching state, vars, and store contents on a running server.
  • Added timeline responses for scripted multi-step flows and polling scenarios.
  • Added persistent stores backed by a JSON file for local CRUD state across restarts.
  • Added seed data for store-backed mock endpoints.
  • Added latency profiles with fixed and jittered delays.
  • Added fault profiles for timeout, connection reset, malformed JSON, empty body, and HTTP error simulation.
  • Added richer request assertions with method/path overrides, query/header/body matching, body path matching, and count checks.
  • Added dynamic route CRUD endpoints and UI support for editing routes at runtime.
  • Added config validation endpoints for safe YAML validation from the UI.
  • Added redaction for sensitive request logs.

CLI

  • Added specter init --template starters for basic, CRUD, auth, and OpenAPI workflows.
  • Added specter examples to list and generate sample configs.
  • Added specter doctor to diagnose config loading, includes, referenced files, OpenAPI specs, duplicate routes, and port conflicts.
  • Added specter scenario to list, apply, and inspect scenario presets on a running server.
  • Expanded specter gen, specter validate, and specter record documentation and coverage.

Editor And Schema Support

  • Published a canonical Specter config JSON Schema for editor completion and validation.
  • Added schema docs for VS Code and yaml-language-server compatible editors.
  • Added the Specter Mock Server VS Code extension with YAML completion and inline validation for Specter config files.
  • Added Marketplace links and badges to the project README.
  • Added automated VSIX artifact generation for VS Code extension changes.

Documentation And Website

  • Added GitHub Pages documentation for quick start, config reference, recipes, CLI reference, and contribution guidance.
  • Added an examples gallery covering auth, CRUD, pagination, OpenAPI, webhooks, SSE, GraphQL, errors, and polling-style flows.
  • Added a comparison guide for json-server, Prism, WireMock, and Specter.
  • Added docs search and copyable command/config snippets.
  • Added a homepage feature section that explains the CLI, VS Code extension, mock behavior, and docs workflow.

Quality

  • Added tests across config loading, schema coverage, validation, dynamic routes, timelines, persistent stores, seeded stores, latency profiles, fault profiles, request assertions, examples, doctor diagnostics, and UI rendering.
  • Added checks to keep the canonical schema, site schema, and VS Code extension schema synchronized.
  • Improved GitHub Actions permissions and release/package workflows.

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 19 Jun 04:28

What's New

Compared with v0.5.0, this release focuses on a much stronger built-in UI, richer request matching, and a smoother local developer experience.

New Features

  • Web UI refresh — the built-in dashboard is now a real control room: request and route detail panes, state and vars editing, store JSON editing, dynamic route cleanup, reset actions, and auto-refresh controls
  • Schema-based random responses--random can generate mock responses from OpenAPI schemas when a route does not define an explicit response body
  • JSON Schema body matchingmatch.body_schema lets routes branch on request bodies using inline JSON Schema in OpenAPI schema format
  • Route priority and exhaustionpriority and times make it easier to model overlapping routes, fallback handlers, and limited-use scenarios

Improvements

  • Version output-v / --version now prints a branded specter banner
  • Local developer workflow — new Makefile targets for build, version, init, run, try, test, and clean
  • Installer polishinstall.sh and install.ps1 now show colorized, step-by-step install output
  • Validation coveragespecter validate now checks priority, times, and body_schema-only match entries
  • Test coverage — added UI handler/render tests and expanded server tests for the new matching and routing behavior
  • Dependencies — bumped github.com/quic-go/quic-go from 0.59.0 to 0.59.1

Upgrade

brew upgrade specter

or download the latest binaries from the releases page.

Full Changelog: v0.5.0...v0.6.0

v0.5.0

Choose a tag to compare

@Saku0512 Saku0512 released this 24 Mar 10:03
9c959e8

What's New

New Features

  • Config include — split config files with include glob patterns; nested includes with cycle detection
  • Store filter / sort / paginationstore_list now supports ?filter=, ?sort=, ?order=, ?limit=, ?offset= query params
  • Script store access{{ store "name" }}, {{ storeGet "name" "id" }}, {{ storeCount "name" }} in Go templates
  • Server-Sent Events (SSE)stream: true with events list; optional stream_repeat loop
  • Form body matchingmatch.form for application/x-www-form-urlencoded fields (regex)
  • GraphQL matchingmatch.graphql.operation and match.graphql.variables (regex)
  • OpenAPI response validationopenapi_strict_response: true returns 500 when mock violates schema
  • specter export — generate a starter config from a running specter's request history
  • Match-level response_headers — override response headers per match entry
  • Match-level delay — add extra delay per match entry (additive)
  • Redirect shorthandredirect + redirect_status (301/302/303/307/308)
  • Cookie matchingmatch.cookies map (regex); cookie injection via set_cookies on route

Improvements

  • Refactoringserver/server.go split into 12 focused files for maintainability
  • Auto-formatgofmt runs automatically on commit via .githooks/pre-commit; CI enforces formatting

Upgrade

brew upgrade specter

or download from the releases page.

v0.4.0

Choose a tag to compare

@Saku0512 Saku0512 released this 23 Mar 11:14
1c6bd54

What's new in v0.4.0

Introspection API

  • Request historyGET /__specter/requests records all incoming requests (up to 200)
  • Request assertionPOST /__specter/requests/assert verifies expected calls in CI/E2E tests
  • State APIGET/PUT /__specter/state to read/override stateful mock state
  • Vars APIGET/PUT/DELETE /__specter/vars multi-variable key-value store
  • Dynamic routesPOST /__specter/routes to add/remove routes at runtime without restarting

Matching

  • Header matchingmatch[].headers to branch on request headers
  • JSONPath / regexmatch[].body_path matches nested body fields using dot-notation and Go regular expressions
  • N-th call matchingon_call: N on routes or responses[] entries matches only on the Nth call (retry simulation)

Responses

  • Response templates{{ .body.field }}, {{ .query.param }}, {{ .params.name }}, {{ .headers.X-Foo }}, {{ .method }}, {{ .path }}
  • Faker{{ fake "uuid" }}, {{ fake "name" }}, 25+ types
  • Scriptscript: field generates response body from a Go template with helpers (upper, lower, trim, default, now, add, sub)
  • File responsesfile: serves .json, .yaml, .yml, or text files as response bodies
  • Multiple responsesresponses[] with sequential (default) or random mode
  • Content-typecontent_type: field for non-JSON responses (text/plain, text/html, …)

Stateful mocking

  • Statestate: / set_state: for single-variable stateful flows (login/logout simulation)
  • Varsvars: / set_vars: for multi-variable scenarios (role-based access, shopping carts)

Fault simulation

  • Rate limitingrate_limit: / rate_reset: returns 429 after N requests, with Retry-After header
  • Chaos injectionerror_rate: (random 5xx), delay_min: / delay_max: (jitter latency)
  • Webhookswebhook: fires an async HTTP callback after responding (payment callbacks, async jobs)

Server

  • HTTPS--cert / --key for custom certificates; --tls for auto-generated self-signed cert
  • OpenAPI validationopenapi: validates incoming requests against a spec; non-blocking (always serves mock response)
  • Proxy fallbackproxy: forwards unmatched requests to a real API

CLI

  • specter init — creates a starter config.yml
  • specter validate — validates a config file before starting
  • specter gen — generates a specter config from an OpenAPI spec
  • specter record — proxies a real API and records responses to config.yml

v0.3.0

Choose a tag to compare

@Saku0512 Saku0512 released this 23 Mar 08:41
832db96

What's New

Features

  • Query parameter matchingmatch + query でクエリパラメータによるレスポンス切り替え
  • Request body matchingmatch + body でリクエストボディによるレスポンス切り替え(query との AND 条件も可)
  • Graceful shutdown — SIGINT/SIGTERM で処理中リクエストを完了してから終了(タイムアウト 5 秒)
  • Environment variablesSPECTER_CONFIG / SPECTER_PORT / SPECTER_HOST / SPECTER_VERBOSE に対応
  • --host flag — バインドするホストを指定(デフォルト: 全インターフェース)
  • Help display — 引数なし起動・-h--help でヘルプ表示
  • Docker imageghcr.io/saku0512/specter で公開(linux/amd64, linux/arm64)
  • Homebrew formulabrew tap でインストール可能、リリース時に自動更新
  • Windows supportspecter_windows_amd64.exe バイナリと PowerShell インストールスクリプト

Installation

# macOS / Linux (curl)
curl -fsSL https://raw.githubusercontent.com/Saku0512/specter/main/install.sh | bash

# macOS / Linux (Homebrew)
brew tap Saku0512/specter https://github.com/Saku0512/specter
brew install specter

# Windows (PowerShell)
irm https://raw.githubusercontent.com/Saku0512/specter/main/install.ps1 | iex

# Docker
docker run -v $(pwd)/config.yml:/config.yml ghcr.io/saku0512/specter -c /config.yml

v0.2.0

Choose a tag to compare

@Saku0512 Saku0512 released this 23 Mar 07:59
c5f8bfb

What's New

Features

  • Hot reload — config.yml を保存するだけでサーバー再起動なしに反映
  • CORS supportcors: true で全ルートに CORS ヘッダーを付与、プリフライトも自動処理
  • Response delaydelay: 1000 (ms) でレスポンス遅延をシミュレート
  • Custom response headersheaders フィールドで任意のレスポンスヘッダーを設定
  • Multiple responsesmode: sequential / mode: random で複数レスポンスを切り替え
  • Path parameter embedding:id をレスポンスに埋め込み可能。数値は自動型変換
  • Verbose logging--verbose でリクエストヘッダーとボディをログ出力
  • OpenAPI → config generationspecter gen -i openapi.yml で config を自動生成
  • Version flag-v / --version でバージョンを表示

Example config

See config.example.yml for a full example covering all features.

Installation

curl -fsSL https://raw.githubusercontent.com/Saku0512/specter/main/install.sh | bash

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 23 Mar 07:11
dd83155
feat: install script