Releases: niq-run/niq
Releases · niq-run/niq
Release list
v0.4.0
Changelog
- 6ef2f28 feat(control): provider config management API
- c29fce4 feat(project): {project} mount placeholder and upload_dir convention
- 016dc9b feat(reason): persist tool-call tracker across restarts
- 4470343 feat(reason): talk input attachments
- 635df82 feat(templates): export projects as templates with an editable draft UI
- 833f126 feat(webui): manage a workspace worker's mounts from its detail view
- a490bcf feat(webui): model providers panel, unified view headers, lifecycle UX
- ef6f4f3 feat(workspace): multi-mount boundary with approval flow and read-only mode
- b10df78 fix(bus): detach stale HTTP worker connections so restart reconnects
- f88723d fix(reason): meta tool dispatch carries the tool call id as RequestId
- 86e214d fix(webui): add the rebuilt stylesheet the previous commit missed
- 028d4de fix(webui): place talk blocks by one shared alignment rule
- c77a1c9 style(webui): unify the accent colour on rgb(60,120,180)
v0.3.0
Changelog
- 0f8ef7f build(npm): ship a README in the main package; skip already-published versions
- 1f375f3 build: installer wires niq into PATH automatically
- ce76c4b build: move publish-npm.sh into npm/ and add make npm-publish target
- aea4e6d build: release pipeline with goreleaser, npm platform packages, and install.sh
- 30a520d chore(project): events dir is plural (events/), matching other dirs
- a5bfc06 chore(reason): batch streaming deltas every 1s
- a6ef8fa chore(reason): remove TODO.md
- 0698a5f chore(webui): update dist entry html for the rebuilt assets
- 870df70 chore(webui): update dist entry html for the rebuilt assets
- 9310ed6 core/bus: define core protocol interfaces
- 9abdfab core/event: add Recipients field for delivery tracking
- 33ddf63 docs(bus): document the registry API's omitted-allow-list default
- 0d600bd docs(reason): align ToolProvider comment with BuiltinTools (own call-and-answer tools)
- 1c532f4 docs(reason): clarify BuiltinTools is the worker's own call-and-answer tools
- 1dc2f06 docs(reason): don't reference future upstream workers from a dependency
- a4a3140 docs(reason): drop 'conversation' from comments/descriptions
- 7f4775d docs(reason): drop the 'shell' metaphor from comments
- 31a7abe docs(reason): fix package/comments after BaseReasonWorker extraction
- f159d47 docs(reason): fix stale comments after the refactor
- 43ea7cc docs(reason): relocate and rewrite README/TODO; inline tool-result helpers
- 96d07e6 docs(reason): replace 'domain-agnostic' with a defensible split
- 74d5029 docs(reason): treat the three input modes as a spectrum, not a default
- 5f406e7 feat(bus): enforce publish ACL with target restriction
- aaeb149 feat(config): move providers & templates under the shared common dir
- ff5302f feat(config): subscriptions support source-restricted patterns
- 6f9dbe4 feat(control): fixed-port control plane with project start + SPA mode context
- c396b55 feat(control,webui): create a new project from a template and start it
- 165508d feat(control,webui): template management panel; running detects manual CLI starts
- a7a62a4 feat(eventbus): multi-worker filter, target_worker_id, deterministic order
- 6b27c2c feat(events): per-worker traffic role filter; recipients normalized to a table
- 09a5b15 feat(llm): support provider.json and additional LLM APIs
- de9863e feat(project): consolidate sqlite event files under an event/ dir
- 42e3b17 feat(project): migrate legacy global swarm into a project
- 4fdad3c feat(project): persisted ports are authoritative — kill any holder
- 69f4bc2 feat(project): project definition store + project.json CLI
- 6d6b475 feat(project): reclaim a stale process and check ports on start
- ebec9fa feat(project): run a project instance with its own bus, ports and data dirs
- 8bf1430 feat(provider): configured models list is authoritative over API discovery
- ec7f221 feat(providercfg,reason): multi-model providers + runtime LLM provider switching
- 642f9e1 feat(reason): align handleInput with all three input levels
- 01f9231 feat(reason): append a completion note after context compaction
- de2dd76 feat(reason): cap oversized transcript payloads at 20KB
- 662e149 feat(reason): context builder — transcript projection, compaction, episodes, spawn seeding
- 6c5f9ee feat(reason): expose the provider.* domain to the worker's own LLM
- c27708a feat(reason): extract Compactor as a replaceable compression strategy
- 2a5ed81 feat(reason): fall back to the full reply payload when a tool result has no recognized field
- 476f56a feat(reason): get_worker_info — the detail view behind the slimmed list_workers
- 31fbd1f feat(reason): meta ops as their own event types; unify responses on request.* + Event.RequestId
- 2f2eed5 feat(reason): program.query/program.update meta-extensions with durable programs
- a8eecb2 feat(reason): retire tool.request — tools become their own event types
- a442980 feat(reason): self-synchronized transcript with edit-buffered Apply
- f76c172 feat(reason): unify meta operations (compress/rotate) via worker.update
- e110e2b feat(swarm): launch and supervise unmanaged (external) workers
- 0c55c4e feat(swarm): print webui url to stdout and open it in the browser
- 4a5a91a feat(swarm): wire the SQLite event store per project
- 77311e6 feat(template): JSON project templates; default template auto-uses providers.json
- a489cd7 feat(transport,webui): support dynamic (:0) port allocation
- c4c1433 feat(webui): add favicon from the niq logo
- 319e116 feat(webui): archived workers sort last and show an archived status
- e5e66b9 feat(webui): archiving a worker suspends it first; restore resumes it
- 98b4cdc feat(webui): create workers from the workers view
- 6b62d99 feat(webui): edit worker subscribe_allow against the bus registry
- a0e3d13 feat(webui): gate oversized event payloads behind a hint
- 4887114 feat(webui): launch declared-but-idle external workers from project.json
- 5279b58 feat(webui): mention popup left-aligned, right check, exclude archived/suspended
- 7e61338 feat(webui): persistent worker delete; fix external-worker lifecycle
- d6b28ab feat(webui): query and switch a reason worker's provider over the bus
- b07bc95 feat(webui): restart a running project, and a real loading state
- f46f2f5 feat(webui): send events from a worker's watch contract with schema form
- 75024de feat(webui): send worker events from its watch contract via schema form
- 32bd183 feat(webui): show current project name under the logo
- 4b29439 feat(webui): soft-wrap toggle for tool JSON + click-blank to collapse
- 0597953 feat(webui): start/create no longer redirect — stay on the Projects page
- f5dab83 feat(webui): syntax-highlight the tool_call / tool_call_result JSON
- 56899d2 feat(webui): talk/events/workers UI overhaul
- ee26094 feat(webui): trim the workers list — drop Action and Subscribe columns
- 18313b9 feat(webui): workers managed column, model switcher, allow-list tags
- 550d978 feat(worker/reason): pass Compactor and BuiltinTools through the shell
- 3028ab8 feat(workerhost): durable-change checkpointing; persist runtime provider switches
- 1b03606 feat(workerhost,swarm): persisted-authoritative worker recovery
- 04e9f43 feat(workspace): bound bash tool output at 20KB head+tail
- 39f372c feat: bus-level source-filtered subscriptions, ReplyRejected, UUIDv7 event ids
- 5dcdc11 feat: drop the tool name from request.* results; merge results into invocations
- 0f21c17 feat: flat project layout + archived workers
- 78e6320 feat: init
- 3d1df92 feat: template detail panel + per-project dated logs
- e2354cb feat: worker lifecycle suspend/resume + persistence + WebUI worker view
- 7b9fb35 fix eventbus: wire EventLog via Engine.OnEvent so Send events reach SSE stream
- 5e364a8 fix(control): don't respawn a project that is already running
- 7341ccd fix(control,webui): real running state; Start/Stop/Jump by liveness, not stale ports
- 2058ad5 fix(discovery): restore worker.discover subscription for managed wo...
v0.2.0
Changelog
- 3e7825e build: installer wires niq into PATH automatically
- c17ff02 chore(reason): batch streaming deltas every 1s
- 5193657 docs(bus): document the registry API's omitted-allow-list default
- f421bee feat(bus): enforce publish ACL with target restriction
- 96508f4 feat(events): per-worker traffic role filter; recipients normalized to a table
- 052f5a0 feat(reason): expose the provider.* domain to the worker's own LLM
- 1bcf8b3 feat(reason): fall back to the full reply payload when a tool result has no recognized field
- 017d5bb feat(reason): get_worker_info — the detail view behind the slimmed list_workers
- c77cf7d feat(reason): program.query/program.update meta-extensions with durable programs
- b522f22 feat(webui): persistent worker delete; fix external-worker lifecycle
- ace03f9 feat(webui): send events from a worker's watch contract with schema form
- 38d0187 feat(webui): send worker events from its watch contract via schema form
- 6d3d461 feat(workerhost): durable-change checkpointing; persist runtime provider switches
- f0bc005 fix(eventbus): apply sqlite pragmas via DSN so every pooled connection gets them
- c486f7c fix(eventbus): deliver the watermark event on the live stream
- f0f0892 fix(eventbus): set sqlite busy_timeout to stop silent event drops
- 1cdaa47 fix(project): reason spec subscriptions are broadcast lifecycle only
- 5d8978c fix(reason): subscribe the default worker to get_worker_info
- 4c15bb3 perf(persist): store snapshots as raw JSON; slim list_workers results
- 1584319 refactor(bus): remove the worker-side subscription declaration entirely
- b9429a1 refactor(event): drop discriminator/arguments — event type + payload are the whole contract
- 5f3ac0b refactor(event): unify grant JSON tags to target / source
- b30f55a refactor(project): replace wildcard publish/subscribe defaults with explicit grants
- b97b728 refactor(reason): subscriptions list only broadcast-delivered events
- 10c08ad refactor(reason): swap append/schedule input_mode names to match semantics
- 2e10af5 style(webui): unify worker delete button layout with the action buttons
- 73cefba test(bus): lock the type-wildcard target-narrowing publish path; fix target spelling
- 0d52ed8 webui: add en/zh i18n with language toggle and rebuild dist
- 75faf38 webui: cap event history fetch and pagination at 30
- 412528c webui: stop runaway top-loading in events list; add scroll-to-bottom button
- 71f56e6 webui: unify fonts, collapsible code blocks, and worker selector polish
v0.1.1
Changelog
- 7a15446 build(npm): ship a README in the main package; skip already-published versions
- c571a26 build: move publish-npm.sh into npm/ and add make npm-publish target
- aea4e6d build: release pipeline with goreleaser, npm platform packages, and install.sh
- 30a520d chore(project): events dir is plural (events/), matching other dirs
- d14a5fc chore(reason): remove TODO.md
- 2684e1f chore(webui): update dist entry html for the rebuilt assets
- f1856b8 chore(webui): update dist entry html for the rebuilt assets
- 9310ed6 core/bus: define core protocol interfaces
- 9abdfab core/event: add Recipients field for delivery tracking
- 0d600bd docs(reason): align ToolProvider comment with BuiltinTools (own call-and-answer tools)
- 1c532f4 docs(reason): clarify BuiltinTools is the worker's own call-and-answer tools
- 1dc2f06 docs(reason): don't reference future upstream workers from a dependency
- a4a3140 docs(reason): drop 'conversation' from comments/descriptions
- 7f4775d docs(reason): drop the 'shell' metaphor from comments
- 31a7abe docs(reason): fix package/comments after BaseReasonWorker extraction
- 54410ec docs(reason): fix stale comments after the refactor
- 43ea7cc docs(reason): relocate and rewrite README/TODO; inline tool-result helpers
- 96d07e6 docs(reason): replace 'domain-agnostic' with a defensible split
- 74d5029 docs(reason): treat the three input modes as a spectrum, not a default
- aaeb149 feat(config): move providers & templates under the shared common dir
- 05a355f feat(config): subscriptions support source-restricted patterns
- 6f9dbe4 feat(control): fixed-port control plane with project start + SPA mode context
- c396b55 feat(control,webui): create a new project from a template and start it
- 165508d feat(control,webui): template management panel; running detects manual CLI starts
- a7a62a4 feat(eventbus): multi-worker filter, target_worker_id, deterministic order
- 09a5b15 feat(llm): support provider.json and additional LLM APIs
- de9863e feat(project): consolidate sqlite event files under an event/ dir
- 42e3b17 feat(project): migrate legacy global swarm into a project
- 4fdad3c feat(project): persisted ports are authoritative — kill any holder
- 69f4bc2 feat(project): project definition store + project.json CLI
- 6d6b475 feat(project): reclaim a stale process and check ports on start
- ebec9fa feat(project): run a project instance with its own bus, ports and data dirs
- 2021a80 feat(provider): configured models list is authoritative over API discovery
- ec7f221 feat(providercfg,reason): multi-model providers + runtime LLM provider switching
- 642f9e1 feat(reason): align handleInput with all three input levels
- 01f9231 feat(reason): append a completion note after context compaction
- de2dd76 feat(reason): cap oversized transcript payloads at 20KB
- 662e149 feat(reason): context builder — transcript projection, compaction, episodes, spawn seeding
- c27708a feat(reason): extract Compactor as a replaceable compression strategy
- 92e0ddd feat(reason): meta ops as their own event types; unify responses on request.* + Event.RequestId
- 2570a32 feat(reason): retire tool.request — tools become their own event types
- a442980 feat(reason): self-synchronized transcript with edit-buffered Apply
- f76c172 feat(reason): unify meta operations (compress/rotate) via worker.update
- e110e2b feat(swarm): launch and supervise unmanaged (external) workers
- 0c55c4e feat(swarm): print webui url to stdout and open it in the browser
- 4a5a91a feat(swarm): wire the SQLite event store per project
- 77311e6 feat(template): JSON project templates; default template auto-uses providers.json
- a489cd7 feat(transport,webui): support dynamic (:0) port allocation
- c4c1433 feat(webui): add favicon from the niq logo
- 319e116 feat(webui): archived workers sort last and show an archived status
- e5e66b9 feat(webui): archiving a worker suspends it first; restore resumes it
- 83dc9e6 feat(webui): edit worker subscribe_allow against the bus registry
- ff34c76 feat(webui): gate oversized event payloads behind a hint
- 89549b6 feat(webui): launch declared-but-idle external workers from project.json
- 5279b58 feat(webui): mention popup left-aligned, right check, exclude archived/suspended
- 04c5b78 feat(webui): query and switch a reason worker's provider over the bus
- 8879ae3 feat(webui): restart a running project, and a real loading state
- 32bd183 feat(webui): show current project name under the logo
- 4b29439 feat(webui): soft-wrap toggle for tool JSON + click-blank to collapse
- 0597953 feat(webui): start/create no longer redirect — stay on the Projects page
- f5dab83 feat(webui): syntax-highlight the tool_call / tool_call_result JSON
- 56899d2 feat(webui): talk/events/workers UI overhaul
- ee26094 feat(webui): trim the workers list — drop Action and Subscribe columns
- 04be219 feat(webui): workers managed column, model switcher, allow-list tags
- 550d978 feat(worker/reason): pass Compactor and BuiltinTools through the shell
- 1b03606 feat(workerhost,swarm): persisted-authoritative worker recovery
- 04e9f43 feat(workspace): bound bash tool output at 20KB head+tail
- 39f372c feat: bus-level source-filtered subscriptions, ReplyRejected, UUIDv7 event ids
- 381d23e feat: drop the tool name from request.* results; merge results into invocations
- 0f21c17 feat: flat project layout + archived workers
- 78e6320 feat: init
- 3d1df92 feat: template detail panel + per-project dated logs
- e2354cb feat: worker lifecycle suspend/resume + persistence + WebUI worker view
- 7b9fb35 fix eventbus: wire EventLog via Engine.OnEvent so Send events reach SSE stream
- 5e364a8 fix(control): don't respawn a project that is already running
- 7341ccd fix(control,webui): real running state; Start/Stop/Jump by liveness, not stale ports
- 5519989 fix(eventbus): don't persist transient streaming deltas
- 1803446 fix(evtstore): order & paginate by insertion order (rowid/index), not timestamp
- 1acd828 fix(evtstore,webui): persist request_id; name tool invocations from their type
- d694d9f fix(httptrans): check scanner.Err() after the SSE read loop
- 1dc5392 fix(llm): guarantee a tool_call_id on every tool call
- 54430c6 fix(preset): update default.json to the request.* event convention
- 6355abe fix(project): stop churning project.json on every start
- 64a3e9e fix(project): validate persisted ports (1-65535)
- 00f9536 fix(reason): DefaultConverter text branch keeps intended shape (no payload repeat)
- d008020 fix(reason): drop tautological parked != nil check on late result
- 2467717 fix(reason): keep meta tool calls out of the transcript
- 77fe8c9 fix(reason): precise LLM error policy with event-driven 429 backoff
- 98e1306 fix(reason): restore tool-name reverse mapping for dotted tool dispatch
- 9f1470a fix(reason): retry transient provider errors; fix ContextLength retry
- 2f280e6 fix(reason): route ErrorContextLength compaction through worker.update; rename emitMetaRequest
- e3062b9...