Releases: littlehorse-enterprises/littlehorse
Releases · littlehorse-enterprises/littlehorse
v0.15.1
v0.15.1-RC1
[0.15.1-RC1] - 2025-11-11
Bug Fixes
- (server) Fix issues from 0.15.0-RC2 (#1900)
- (server) Handle child wfrun in SleepNodeMaturedModel (#1908)
- (server) Reject invalid rpc SearchUserTaskRun (#1901)
- Improve littlehorse test container class (#1907)
- (server) Allow searching indexed json fields (#1923)
- (sdk-java) Close PollThread when receiving any exception during processing (#1928)
- (server) Limit the amount of bytes for each record in the core store (#1934)
Miscellaneous Tasks
- (sdk-java) Fix flaky test for PollThreadTest (#1938)
Performance
v0.15.0
[0.15.0] - 2025-10-22
Full Changelog: v0.14.0...v0.15.0
Features
- (dashboard) Support LHPath when displaying variable names (#1899)
- (dashboard) Struct def page & support (#1885)
- (server) Allow using direct io for rocksdb (#1604)
- (server) Add delete correlated event request (#1612)
- (server) Add comment events to userTaskRun (#1569)
- (server) Add user task event completed(#1623)
- (sdk-java) Allow registration of workfloweventdef in dsl (#1628)
- (lhctl) Commands for put, edit, and deleting comments on a UserTaskRun (#1630)
- (dashboard) New dashboard
- (dashboard) Nextjs metrics (#1648)
- (dashboard) Show the current version (#1654)
- (server) Support masked correlation keys (#1660)
- (dashboard) Enhance time range display and add new time range options (#1666)
- Update nimbus dependency, it upgrades json-smart dependency (#1668)
- (server) Rocksdb compaction optimizations (#1656)
- (sdk-python) Masked correlation id support in python (#1679)
- (dashboard) Enhance search functionality and update default search limit (#1685)
- (server) Support WfRunId variables in a workflow (#1683)
- (dashboard) Proto representation on right-sidebar (#1687)
- (dashboard) Add workflow action buttons and execution dialog (#1658)
- (dashboard) Enable & support ts-proto oneof=unions option (#1696)
- (sdk-dotnet) Support for masked correlation id in C# (#1694)
- (sdk-dotnet) Adds native support for async Tasks in .NET (#1678)
- (canary) Reduce noisy logs for canary when LHServer is not healthy (#1733)
- (server) Reject incoming requests during shutdown (#1680)
- (sdk-python) Register ExternalEventDef and WorkflowEventDef (#1727)
- (sdk-dotnet) Register ExternalEventDef and WorkflowEventDef (with correlated event config support) (#1718)
- (server) Extend SearchNodeRun to Support Filtering by ExternalEventDef (#1758)
- (server) Dockerfile sets default value for state directory (#1764)
- (canary) Canary metronome inflight wfruns (#1776)
- (dashboard) LHExpressions and Variables handling (#1775)
- (dashboard) Scale data groups with reactflow transform & add diagram arrow
- (server) Rpc searchStructDef (#1787)
- (server) Add support for searching WfRuns by parent WfRun ID (#1768)
- (examples) Consolidate examples in the same dir (#1799)
- (dashboard) Add correlated events support with refactored variable input components (#1778)
- (server) Add ability for threadrun to return output (#1793)
- (server) Add state cleanup delay configuration for Kafka streams (#1760)
- (sdk-go) Register ExternalEventDef and WorkflowEventDef (#1731)
- Add child workflow runs to WfRun view (#1810)
- (server) Separate liveness and readiness probes (#1824)
- Add support for inherited variable values on child workflows (#1835)
- (server) Add structs to
serverandsdk-java(#1796) - (server) Add supporf for casting on primitive types (#1806)
- (server) Implements ttl for correlated events (#1880)
- (server) Run child wf from inside
WfSpec(#1808) - (server) Introduce durable execution through
CheckpointinTaskRun(#1881) - (sdk-java) Allow users to Put and Validate StructDefs individually (#1890)
- (server) Add
LHPathfor accessing Struct fields at runtime (#1882)
Bug Fixes
- (server) Dodge tombstones on rehydration (#1902)
- (server) Properly handle case when task is already claimed (#1903)
- (server) Default to JSON_OBJ when typeDef defined case is not set (#1905)
- (dotnet-sdk) Stop throwing an exception on empty variable values (#1599)
- (server) Don't log status runtime exceptions (#1615)
- (server,test-utils) Output topic handler input variables and e2e tenant creation (#1614)
- (lhctl) Throw error if
search wfRuncalled with no args (#1619) - (sdk-dotnet) Add validations to handle cases when new nodes are added after a complete. (#1559)
- (dashboard) Use
LHStatusenum (#1663) - (dashboard) Remove taskrun from metadata search (#1665)
- (server) Fix race condition during await workflow event (#1662)
- (dotnet-sdk) Downgrades examples from .NET 8 to .NET 6 (#1600)
- (canary) Remove server version (#1657)
- (server) Fix search principal when tenant id and admin not set (#1698)
- (sdk-go) Fix struct and interface structure of nodeoput (#1690)
- (sdk-dotnet) Removes openid scope from token request so that the kernel knows it's a machine (#1699)
- (dashboard) Use correct quotes based on config file (#1701)
- (dashboard) Update variable type display in TaskDefClient component (#1713)
- (dashboard) Fix duplicate thread ID
- (ci) Dashboard type imports to fix build (#1716)
- (sdk-java) Close PollTask observers when the application shutdowns (#1610)
- (server) Async remote wait for command (#1741)
- (lhctl) Support nested parent wfrunid in lhctl run (#1752)
- (server) Wait for task claim event before sending response back to the client observer (#1753)
- (pipeline) Publish docker pipeline (#1756)
- (pipeline) Publish server docker image (#1757)
- (dashboard) Fix run child workflow (#1743)
- (dashboard) Fix TaskAttempt worker log output overflowing (#1767)
- (server) Properly check type definitions (#1774)
- (server) Validates existence of a child wf run for a given id
- (server) Npe handling putwfspecrequest with invalid nodeoutputreference (#1786)
- (docs) Refactored proposal numbers and added type casting (#1788)
- PutWfSpec ACL (#1792)
- (server) Mark wfrun as halted when processing stop wfrun requests (#1789)
- (server) Proper handle task already claimed case (#1807)
- (server) Ignore metrics that reports negative values when using trace metrics (#1811)
- (server) Strict limit for the global block cache (#1812)
- (server) Optimize getable manager to reduce the number of calls to the store (#1813)
- (server) Properly interpret state store names in HealthService (#1821)
- (server) Remove unused fields in WfService (#1826)
- Cliff command (#1827)
- (lhctl) Fix TaskDef commands arguments and descriptions (#1834)
- (server) Disable automatic log4j shutdown hook (#1832)
- (standalone) Use ubuntu LTS 24.04 (#1836)
- (server) Uuid in timer key (#1838)
- (pipeline) Upgrade java to 24 on publish-docker (#1847)
- (standalone) Upgrade Java by using amazoncorretto:24-alpine (#1850)
- (server) Refactor AsyncWaiter class to complete the correct stage (#1852)
- (server) Support assigning null to a variable (#1854)
- (server) Restore gradle wrapper to version 8.14 (#1855)
- (server) Revert kafka from 4.1.0 to 4.0.0
- (standalone) Use server dist binary (#1857)
- (dashboard) Render NULL when VariableValue is null (#1868)
- (docker) Fix execution permissions for canary and standalone (#1869)
- (server) Remove debug print statement from validateValue method (#1870)
- (server) Respect LHS_OUTPUT_TOPIC_PARTITIONS config (#1874)
- (dashboard) Wait for condition handling (#1872)
- (server) Remove partial InlineArrayDef support (#1878)
- (server) Shutdown http server
- (server) WaitForThreads checks interrupt handlers on childs (#1879)
Miscellaneous Tasks
- (prerelease) Close sonatype artifacts (#1896)
- (release) Fix java and python publish (#1894)
- (release) Fix workflow conditionals (#1895)
- (server) Fix capitalization on updatecorrelationmarkerpb (#1611)
- (security) Upgrade dependencies (#1622)
- (server) Make correlated event native to e2e (#1625)
- (server) Clean up correlation marker when wfrun deleted (#1629)
- (proposal) Add child workflow proposal (#1551)
- (dashboard) Auth secret instructions (#1691)
- (dashboard) Remove unused assets and refactor imports (#1703)
- (server) Add experimental configs for rocksdb logging and compaction style (#1732)
- (canary) Remove nonessential ingo log (#1734)
- (dashboard) Remove unused imports & vars (#1735)
- (sdk-dotnet) Resolve lh configs from user path (#1736)
- (server) Remove unused network threads config (#1754)
- (server) Set ZGC as default java garbage collector (#1755)
- (server) Use Netty for http status endpoints (#1769)
- (examples) Add LHExpression example (#1780)
- (proposals) Fix authors for structdef (#1791)
- (lhctl) Clean stop command (#1790)
- (dashboard) Organize readme.md and add oauth guide (#1797)
- (server) Remove deprecated server configs (#1815)
- (server) Unify metrics configurations (#1816)
- (sdk-java) Improve logging of task worker connections (#1822)
- (server) Clean up session and transaction timeout configs (#1819)
- (all) Upgrade java and protobuf (#1844)
- (server) Upgrade to kafka 4.1.0 (#1846)
- (server) Reduce chattiness of error logs (#1848)
- Automatically build and publish snapshot versions into maven repositories. (#1863)
Documentation
- (proposal) Add completed UserTaskEvent (#1607)
- (readme) Fix golang badge (#1684)
- (proposal) Add Arrays to Proposal #000 (#1783)
- (proposal) Add
StructDefnaming convention to proposal #000 (#1570) - (proposals) Add proposal for type safe field access in
WfSpecs(#1873)
Performance
- (server) Remember start key in timer topology range scan (#1719)
- (server) Reduce the number of records in each poll request for main consumer (#1798)
- (server) Enable zstd compression (#1814)
- (server) Remove NodeRunModel status Tag (#1817)
- (rocksdb) Compress only bottom level (#1818)
- (server) Shorten UserTaskRunId and TaskRunId (#1839)
- (server) Optimize rocksdb compaction configs (#1841)
Refactor
v0.15.0-RC3
v0.14.1
[0.14.1] - 2025-07-02
Bug Fixes
- (sdk-dotnet) Removes openid scope from token request so that the kernel knows it's a machine (#1699)
- (sdk-dotnet) Add validations to handle cases when new nodes are added after a complete. (#1559)
- (sdk-go) Fix struct and interface structure of nodeoput (#1690)
- (canary) Remove server version (#1657)
- (lhctl) Throw error if
search wfRuncalled with no args (#1619) - (server,test-utils) Output topic handler input variables and e2e tenant creation (#1614)
- (server) Fix search principal when tenant id and admin not set (#1698)
Features
- (sdk-dotnet) Adds native support for async Tasks in .NET (#1678)
- (server) Add delete correlated event request (#1612)
- (server) Add delete correlated event request (#1612)
- (server) Support masked correlation keys (#1660)
- (server) Allow using direct io for rocksdb (#1604)
- (server) Rocksdb compaction optimizations (#1656)
- (sdk-java) Allow registration of workfloweventdef in dsl (#1628)
- (sdk-dotnet) Support for masked correlation id in C# (#1694)
Miscellaneous Tasks
- (security) Upgrade dependencies (#1622)
- (server) Fix capitalization on updatecorrelationmarkerpb (#1611)
- (server) Clean up correlation marker when wfrun deleted (#1629)
- (server) Make correlated event native to e2e (#1625)
Testing
- Fix canary flaky tests (#1601)
v0.14.0
[0.14.0] - 2025-06-09
Bug Fixes
- (sdk-python) Windows compatible (#1474)
- (sdk-python) Add validation to throws an error when do_else is called multiple times (#1480)
- (README) Update Slack URL (#1481)
- (dashboard) Better edge handling (#1489)
- (sdk-python) Ensure user id or user group is not empty in user task (#1477)
- (lhctl) Fix build issues from External Event typing PR (#1493)
- (sdk-go) Ensure user id or user group is not empty in user task (#1486)
- (sdk-dotnet) Ensure user id or user group is not empty in user task (#1479)
- (sdk-python) Implement
VariableDef.type_def, bundletypeandmasked(#1498) - (dashboard) Restore TaskDetails modal (#1504)
- (dashboard) Implement missing
TypeDefinitionfunctionality (#1503) - (sdk-dotnet) Fix do else if implementation when it is called between other LH statements (#1505)
- (sdk-python) Validate that do_if_else is working between other lh statements (#1506)
- (lhctl) Update outdated
VariableDefs to useTypeDefinitionfor typing - (server) Ensure userId or userGroup is not empty in user task (#1473)
- (sdk-java) Fixed null value from workerContext log (#1517)
- (sdk-java) Fix get credentials method (#1522)
- (lhctl) Update
godependency files based on Dependabot fixes (#1523) - (sdk-dotnet) Replace threadvar type by typedef and fix unit tests (#1524)
- (sdk-go) Replace type in variable def (#1525)
- (sdk-go) Jsonpath return pointer and return correct varType (#1530)
- (lhctl) Remove required flag
taskDefNameonsearch taskrun(#1497) - (dashboard) Don't enforce
JSON_ARRto include objects (#1539) - (lhctl) Properly infer vartype from vardef (#1541)
- (server) Handle API exception at request authorizer level (#1538)
- (server) Fixes ineffective external event e2e test (#1552)
- (server) Halted state should be considered as resolved when handling halt reasons on child threads (#1409)
Documentation
- (arc) Add struct and structdef proposal (#1471)
- (README) Update Learn URL (#1485)
- (proposals) Adds output topic proposal (#1484)
- (README) Update
Learnbadge URL (#1537) - (proposals) Revise
Proposal #000(#1529) - (proposal) Add proposal for UserTaskRunComment (#1561)
Features
- Add getClientConfig to test utils lib (#1487)
- (sdk-dotnet) Add implementation for doelseif and doelse statements in thread (#1475)
- Enable strong typing on external events (#1412)
- (server) Adds output topic proto (#1495)
- (server) Implements output topic metadata management (#1500)
- (sdk-java) Add
WorkflowIfStatement,doElseIfanddoElsemethods (#1492) - (sdk-go) Add implementation for doelseif and doelse statements in thread (#1491)
- (sdk-dotnet) Mark old doIf method as obsolete (#1501)
- (sdk-go) Throw error when
WorkerContextused as param without ptr (#1536) - (sdk-java) Utility for registering externaleventdefs (#1542)
- (server) Send records to output topic (#1509)
- (proposals) Strong typing deprecations proposal (#1550)
- (sdk-dotnet) Evaluate conditions within WfRunVariables (#1535)
- (sdk-python) Add
WorkflowThread#complete()(#1557) - (server) Add
StructDefs (#1508) - (server) Add experimental feature flag config for
StructDefs (#1595) - (server) Support correlation id on external events (#1594)
Fix
- (docs) Removed e2e links from local-dev readme (#1515)
Miscellaneous Tasks
- (github) Update issue templates (#1478)
- (github) Revise new issue templates for improved clarity and less bloat (#1488)
- (sdk-dotnet) Remove obsolete tag from DoIf method (#1513)
- (sdk-java) Remove deprecate tag from doIfElse method (#1512)
- (server) Update kafka to 4.0.0 (#1421)
- (server) Upgrade micrometer-registry dep (#1510)
- (project) Adds project lifecycle document (#1549)
- Update commit message snippet for skipping tests (#1560)
- (littlehorse) Import nexus plugin and migrate to the new Central Publishing portal (#1556)
Performance
- (server) Avoid sending extra writes to rocksdb (#1490)
Refactor
- (server) Introducing InMemory getable managers for test (#1511)
- (sdk-go) Split node output timeout method functionality (#1528)
- (sdk-dotnet) Split node output timeout method functionality (#1527)
Testing
- (sdk-python) Add test validating lambda support (#1472)
- (server) Simplify unit testing for OneTaskQueue class (#1532)
- (server) Allow 500 ms between task run retry and retry in flaky test (#1555)
Build
v0.13.2
[0.13.2] - 2025-04-25
Bug Fixes
- (dashboard) Revalidate cache with proper keys (#1416)
- (lhctl) Update WfRun related commands to use proper arg rules (#1417)
- (sdk-dotnet) Fix parent variable mutation from child thread (#1424)
- (sdk-java) Set active thread to mutate a parent variable from child nested threads (#1434)
- (sdk-python) Set active thread to mutate parent variable from child nested threads (#1440)
- (dashboard) Handle large thread spec lists in tool tip (#1450)
- (dashboard) Quotes around raw string values (#1449)
- (dashboard) Scrollable thread panels (#1448)
- (dashboard) '.' replacement & conversions in form (#1452)
- (sdk-go) Set active thread to mutate parent variable from child nested threads (#1443)
- (dashboard) Disallow negative durations (#1464)
- (server) Fixes a security issue with the experimental WorkflowEvents feature(#1467)
- (server) Send an empty response for DeleteExternalEventDefRequestModel (#1469)
Features
- (sdk-python) Load configs form dictionary (#1410)
- (dashboard) Post external event (#1419)
- (dashboard) Child threads diagraming (#1422)
- (sdk-dotnet) Enable documentation in dotnet missing code (#1418)
- (server) Gracefully handle deserialization errors on ReportTaskRuns (#1286)
- (sdk-python) Add chainable If Statements with
do_else_if()method (#1463) - (sdk-python) Add lambdas support for
ThreadInitializers (#1470)
Miscellaneous Tasks
- (libs) Improve java lib descriptions (#1408)
- Re-license to agplv3 to become open-source certified (#1425)
- (sdk-js) License to agplv3 (#1426)
- (lhctl) Bump Go version in
lhctlDockerfile (#1438)
Refactor
- (sdk-java) Move
NodeOutput#timeoutmethod to TaskNode and ExtEvtNode Outputs (#1430) - (sdk-java) Rename exception classes. (#1429)
- (server) Increase default task timeout 15s -> 60s (#1427)
Build
v0.13.1
[0.13.1] - 2025-03-27
Bug Fixes
- (sdk-dotnet) Add jsopath in nodeoutput (#1343)
- (canary) Change wf status retryable conditions (#1347)
- (dashboard) Correct input validation (#1355)
- (dashboard) Sign in if accessToken invalid (#1348)
- (server) Make standby on instance tracker synchronized for multiple threads (#1323)
- (server) Validate null on UserTaskRun arrival for userId and userGroup (#1333)
- (server) Removes kafka streams state metrics for metric info level (#1351)
- (server) Handles idempotency for external events (#1363)
- (sdk-java) Improve Array mapping from TaskDef input types to LH VariableTypes (#1370)
- (server) Support null assignments for workflow variables (#1374)
- (dashboard) Fix sign out (#1405)
Features
- (sdk-dotnet) Add child threads implementation (#1339)
- (dashboard) Metrics (#1345)
- (sdk-dotnet) Implement child threads foreach in workflow thread (#1349)
- (sdk-dotnet) Add interrupt handler and sleep node in workflow thread (#1352)
- (sdk-dotnet) Add advanced features in workflow thread (#1357)
- (dotnet) Support multitenancy (#1350)
- (sdk-dotnet) Implement methods to manage user tasks from the wf thread (#1367)
- (sdk-java) Add config builder (#1377)
- (local-dev) Add additional scripts (#1380)
- (sdk-dotnet) Add features to set retention policy and execute tasks dinamically (#1381)
- (canary) Healthy checks (#1346)
- (test-utils) Change LittleHorseContainer visibility (#1402)
- (sdk-dotnet) Support for SleepUntil methods and Update policies in WfSpecs (#1398)
- (dashboard) Identifiable data on wfrunid (#1406)
Miscellaneous Tasks
Refactor
- (examples) Readme clarification (#1382)
- (dashboard) Most recent selection (#1386)
- (dashboard) Use latest noderun (#1393)
- (dashboard) Double equals comparator
- (sdk-dotnet) Remove unnecessary integer converter class (#1389)
- (server) Remove mentions of LHW_SERVER_CONNECT_LISTENER config (#1399)
Build
v0.13.0
[0.13.0] - 2025-02-25
Bug Fixes
- (server) NodeRun status set to failure status (#1282)
- (examples) Typo
tha->the(#1281) - (sdk-java, server) Serde Java Objects into proper VariableValue types using Gson (#1275)
- (security) Update python version and cryptography, python >=3.10 required (#1285)
- (dashboard) Retrieve parent wf variables (#1288)
- Trim space (#1290)
- (examples) Fix typo on User Tasks example (#1302)
- (dashboard) Wfrun blank page (#1316)
- (server) External-event timeout (#1313)
- (dashboard) Nested parents (#1317)
- (lhctl) Support completing
UserTaskRuns on Windows by trimming return characters (#1299) - (sdk-dotnet) Register external event before registering workflow (#1322)
- (dashboard) Swr rerendering & noderun display (#1320)
- Conditionally render sign out (#1327)
- (dashboard) Explicitly state none found (#1328)
- (canary) Add grpc code status to canary metrics (#1324)
- (server) Reject invalid arguments in
RunWfRequest(#1321)
Features
- (tests-util) Add get network to lh test container (#1274)
- (dashboard) State no vars / muts
- (dashboard) Stop, resume, rescue (#1277)
- (sdk-dotnet) Implement do while conditional in wfspec (#1280)
- (dashboard) Restyle wfspecs usage display (#1284)
- (sdk-dotnet) Add mutation expression in the workflow thread (#1283)
- (sdk-dotnet) Add external events in workflow thread (#1292)
- (sdk-dotnet) Implement retries in task nodes and timeouts in external events (#1300)
- (sdk-dotnet) Add error handler to workflow thread (#1314)
- (dashboard) Use selectionlink (#1329)
- (sdk-dotnet) Add exception hablers in wf thread (#1325)
Miscellaneous Tasks
- (dashboard) Pins nginx-nodejs image to version v1 (#1301)
Refactor
v0.12.5
[0.12.5] - 2025-01-29
Bug Fixes
- (sdk-go) Use
int32onWithRetries, TestWithExponentialBackoff(#1263) - (sdk-go) Change
intargs to match proto (#1264) - (sdk-java) Adds missing configs to sdk java (#1265)
- (sdk-go) Move variable default logic to
WithDefaultmethod (#1268) - (sdk-python) Add optional
default_valueparameter todeclarevar methods (#1269) - (sdk-go) Catch
nilvalue early when converting interface to var val (#1271)
Features
- (sdk-dotnet) Add execute task feature to workflow spec (#1262)
- (sdk-dotnet) Add declare variables to wfspec (#1267)
Refactor
- (sdk-dotnet) Change tests to avoid using mocks at the maximum (#1270)