Changelog¶
All notable changes to Pipelit will be documented here.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.3.16] - 2026-03-21¶
Added¶
import-fixtureCLI command — Generic fixture loader that creates workflows from JSON fixture files, remapping LLM credential and model config references to the local DB. Usage:python -m cli import-fixture path/to/fixture.json(#176)validate_gherkintool — New tool component that validates Gherkin.featurespecs viagherkin-officialparser (syntax) andgherlintCLI through sandbox backend (lint). Returns structured JSON with parse errors, lint warnings/errors. (#178)validate_topologytool — New tool component that wraps the DSL compiler'svalidate_dsl()in dry-run mode for topology YAML validation. Pure Python, no subprocess. (#179)dev.shagent-oriented dev harness — Container dev script with JSON output, health checks, agent API key management, and hot-reload. Subcommands:up,down,restart,status,logs,exec,test.- Workflow-generator fixture updated — Validation tools wired to Gherkin Agent and Topology Agent via tool edges. Agent prompts updated with
[validation]section for self-validation before output. 20 nodes, 19 edges.
Changed¶
- DSL compiler updated — Added 9 step types (
deep_agent,reply_chat,categorizer,router,extractor,filter,merge,wait,identify_user), 13 tool types,schedule/error/workflowtriggers, skill edge support. Removed broken ghost mappings (code_execute,http_request). Updated model preference table. (#177)
Fixed¶
- Auto-reply for terminal agent nodes — When an agent or deep_agent node is terminal and the workflow has no explicit
reply_chatnode, the orchestrator now auto-promotes its output sodeliver()sends the response back via the gateway. (#174)
[0.3.14] - 2026-03-20¶
Fixed¶
- Auto-reply for terminal agent nodes — When an agent or deep_agent node is terminal (no downstream executable nodes) and the workflow has no explicit
reply_chatnode, the orchestrator now auto-promotes its output tostate["output"]sodeliver()sends the response back via the gateway. Fixes E2E chat round-trip for thedefault-agentworkflow. (#174)
[0.3.12] - 2026-03-19¶
Added¶
input_templatefor node input scoping — Agent and deep_agent nodes can declareinput_templateinextra_configto receive a specific slice of state as their input message (e.g.{{ scribe.output }}), instead of inheriting the full conversation history. Enables clean parallel fan-out patterns.reply_chatterminal node — New component type that sends a message back to the chat caller and ends the workflow. Reads message fromsystem_prompt(Jinja-resolved) withextra_config.messagefallback. Registered in frontend Output category.- Node input/output debug logging —
execution_logs.inputcolumn now stores resolvedsystem_promptandinput_templatevalues per node execution for full observability. - Frontend:
input_templatefield — Visible in agent/deep_agent node config panel with Jinja template support. - Frontend:
reply_chatnode type — Available in Output category of node palette with message field.
Fixed¶
- Parallel state race condition —
save_statenow uses RedisWATCH/MULTIfor atomic read-merge-write ofnode_outputs, preventing parallel workers from overwriting each other's outputs. _input_overridestate leak — Cleared after each node completes so downstream nodes don't inherit stale overrides.- Merge node type validation — Changed merge input type from
ARRAYtoANYso it can accept outputs from agent/deep_agent nodes in fan-in patterns.
[0.3.11] - 2026-03-19¶
Fixed¶
- SPA client-side routing -- Routes like
/login,/workflowsnow correctly serveindex.htmlinstead of returning 404. Static assets and API routes are unaffected.
[0.3.10] - 2026-03-19¶
Added¶
- Frontend serving via env var --
FRONTEND_DIST_PATHenv var allows serving the React SPA from a path outside the default location, fixing frontend not served in Docker when volume mounts shadow the built dist (#170) - Frontend E2E test -- Smoke test now verifies the frontend is served from the root URL (section 7) (#170)
- DSL test fixtures -- Six topology + Gherkin behavior spec pairs covering complete agent, branching, loop/filter, memory/subworkflow, deep agent meta, and error routing scenarios (#170)
[0.3.9] - 2026-03-15¶
Added¶
- E2E smoke test infrastructure -- Mock LLM server and 17-assertion smoke test script for CI validation (#159)
- User management API -- Full CRUD for user accounts with multi-key API system. Users can have multiple named API keys with optional expiration, soft-revocation, and usage tracking (#155, #156)
- Chat API endpoints -- Restored
POST /workflows/{slug}/chat/andDELETE /workflows/{slug}/chat/historyendpoints for direct workflow chat interaction (#154) - RBAC (Role-Based Access Control) -- Two roles:
adminandnormal. Admin-only operations include user management, role assignment, and key management for other users. Last-admin protection prevents lockout (#142) - CLI setup commands --
python -m cli setupreplaces the web-based setup wizard for initial admin account creation.python -m cli apply-fixturebootstraps a working workflow with LLM credentials (#144, #146) - Message gateway integration -- External messaging channels (Telegram, chat clients) are now handled by the plit message gateway. Inbound messages arrive at
POST /api/v1/inbound, responses delivered via gateway send API (#135) - Gateway credential type -- New
gatewaycredential type for managing gateway adapter connections, replacing direct Telegram bot token credentials - Gateway-mediated triggers -- Chat and Telegram triggers now receive messages via the gateway rather than direct webhook/polling. The gateway handles bot registration, webhook setup, and message routing
- Web search tool -- SearXNG-powered web search tool for agents
Changed¶
- Sandbox security hardened -- Removed unsandboxed execution fallback. If no sandbox (bubblewrap or container) is available, shell execution is refused with a clear error message (#140)
- Network access enabled by default -- Sandbox workspaces now have network access enabled by default (
--share-net), allowing agents to usecurl,git, web search, and other network tools without manual configuration (#150) - Deep agent AI model linking --
ai_modelconfig now properly linked todeep_agentviallm_model_config_id(#148) - Migration hardening -- Fixed SQLite unnamed unique constraint issue on fresh databases (#157), hardened downgrades for non-numeric string IDs, added missing
add_columnin rename migration (#147) - Credential ownership checks -- Added ownership verification and TOCTOU race fix for credential operations
Removed¶
- Setup wizard -- Web-based
SetupPageremoved from frontend. Initial setup now handled via CLI commands (#144) - Direct Telegram integration -- Telegram webhook handler, polling mode, and
TelegramCredentialmodel removed. Telegram messaging now handled by the message gateway - Telegram poller -- Self-rescheduling RQ-based Telegram polling job removed
- MCP server -- Removed unused MCP server module
- Workflow collaborators -- Removed collaborator model (replaced by RBAC roles)
[0.1.0] - 2026-02-23¶
Added¶
- Deep Agent node type (
deep_agent) -- advanced agent with built-in task planning (todos), filesystem tools, and inline subagent delegation via thedeepagentslibrary - Agent middleware architecture -- shared
PipelitAgentMiddlewarefor tool status WebSocket events and streaming across agent types - LangGraph v1 migration --
create_react_agentreplaced withcreate_agent - Real-time chat streaming -- intermediate agent LLM responses streamed to the chat panel during execution
- Dynamic Anthropic model fetching from API
- Auto-generated node IDs (
{type}_{hex}) and node rename support on the canvas - Documentation site with MkDocs Material
- Full component reference for all 42+ node types
- API reference documentation
- Architecture documentation with Mermaid diagrams
- Getting started guide and tutorials
- Deployment guides for Docker, production, and reverse proxy setups
For the full commit history, see the GitHub repository.