All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
1.0.0-m.7 - 2017-08-24
Milestone 7 release
- Avoid TypeScript keywords in function parameter names #664 and clean up generated TypeScript
1.0.0-m.6 - 2017-08-17
Milestone 6 (tweaks) release
- Can now set
parameterName
on IdentifiableInstruction in Directed/Response Messages for use in select boxes - Parameter and MappedParameter decorated properties from super classes are now inherited by sub-classes #646
- Added
GITHUB_DEFAULT_REPO_VISIBILITY
mapped parameter that determines repository visibility based on organization GitHub plan - MappedParameters.{CORRELATION_ID,GITHUB_URL} in TypeScript
- Updated typescript & typedoc used for doc generation to 2.4.1 and 0.7.1 respectively
- Added
post
property toUpdatableMessage
to indicate if we message should be written if it didn't previously existed - Leave timestamp undefined when creating UpdatableMessage #654
- Export LocallyRenderedMessage in TypeScript
- Slice with out-of-bounds numbers works OK in JS, so we should allow them here instead of failing with exceptions.
- Ensure default values for optional parameters to Rug Functions are used, instead of null. Primitives are converted to 0 or false
1.0.0-m.5 - 2017-07-11
Milestone 5 (Summer) release
- Added new
UpdatableMessage
to allow messages to be re-written in the bot
- BREAKING Removed all usage of Scala
Future
inPlanRunner
and corresponding APIs - Updated JavaParser to 3.2.8
- Updated artifact-source to 1.0.0-m.5
- Ensure index and original array are also passed to map callback functions #632
- Now only load Gherkin feature definitions from the
.atomist/tests
directory #629
1.0.0-m.4 - 2017-06-01
Milestone 4 (whiskey) release
- Add internal support for
Scope
on Rugs. Currently this is only used on Response Handlers, and will be used to change the visibility of auto-generated ones so they are not indexed, displayed etc by the CLI or Bot. - Add support for @IntegrationTest decorator. TypeScript Classes with this decorator will behave much like Command Handlers, except in that they will have additional metadata allowing the CLI or runtime to behave differently when required.
- Exposed underlying TypeScript class decorator logic so that they can be called directly to emit Rugs programmatically #595
- Allow
commitMessage
to be set onEdit
instructions #593 - Ability to implement the
startingPoint
method in a generator to start with an empty repo or the content of a Git repo, if the runtime permits. - Added
HandlerContext
as second parameter toResponseHandler.handle
invocations #587 - Added
Identifiable
instruction that can be used forDirectedMessage
andResponseMessage
- Rug Language Extensions can provide a preprocessing (and postprocessing) step. This lets them do string manipulation before parsing, and undo it afterward.
- BREAKING Removed support for Velocity templates from
Project
- Allow
editWith
andgenerateWith
calls in Gherkin tests without parameters - Parameters passed to ResponseHandlers with no declared parameters are now set directly on the instance. This can be used to avoid using @Parameter declarations
- Handle project generate failures
- BREAKING remove ProjectEditor & ProjectGenerator interfaces. This also removes support for legacy parameter[] Parameter declarations
- BREAKING remove tags from Parameters (they are unused)
- Remove some more remnants of reviewers
- Harmonized much of the Rug loading code between project operations and handlers
- RugLanguageExtensions may return a smaller interface,
ParsedNode
from their parsing methodfileToRawNode
, instead of requiringPositionedTreeNode
- Removed CommonViewOperations with its deprecated
fail
andprintln
methods - Removed unnecessary InstantEditorFailureException as TypeScript can throw errors
- Decorators now hide defined properties by setting
enumerable=false
#554 - Fixed handling of fields set with Object.defineProperty (now enumerable)
- @Editor, @Generator, and @EventHandler decorators now allow 'name' to be omitted. If you omit the name, it uses the name of the class.
files
in ProjectView now returns a list of FileMutableView #623
1.0.0-m.3 - 2017-05-09
May milestone 3 release
pathExpressionEngine
andcontextRoot
now available within event handlers- BREAKING Added ability to specific
target
of an Edit Instruction so that source/target branches, title and body can be specified. Breaks the ProjectManagement Scala interface only. - Added ability to indicate in TypeScript generated interfaces when a
JVM method being exposed is marked as
@Deprecated
- Ability to test when a scenario aborts #569
- Types to Gherkin well-known step callback signatures #574
- Standardize use of
Object.defineProperty
in TypeScript decorators - If the first parameter to a Rug Kind TypeScript decorator is
omitted, the constructor's name is used instead. E.g. it is now
possible to declare a command handler with:
@CommandHandler("description only")
- BREAKING Gherkin handler step 'parameters were invalid' renamed to 'handler parameters were invalid' #566
- BREAKING Removed Spring and Spring project types, these don't
belong in
rug
and will resurface in a separate project - Add instructions to DirectedMessage and ResponseMessage
- Add optional id to Presentable instruction
- Missing implementations of Given and When steps now are returned as NotYetImplemented in testing results #570
- Improve archive loading performance by creating new ArtifactSource with only Rug content, instead of filtering all files in original archive
- Throw exceptions if there is more than one Rug with the same name in an archive #561
- Fix StackOverflow when calling toString on LinkableContainerTreeNode, can't recurse as this is a graph not a tree.
- Remove node_modules from TypeScript sources path #442
1.0.0-m.2 - 2017-04-26
Initial milestone 2 release
- Fix NPM publish for milestone and release candidate releases
- Consolidate NPM publish for dev and release versions
1.0.0-m.1 - 2017-04-26
Initial milestone 1 release
- Support for cloning a repo from GitHub in Gherkin tests, via
ScenarioWorld
- BREAKING TypeScript
Match
now uses property access, not function - Updated all Atomist dependencies to 1.0.0-m.1 versions
- Handlers are now picked up from arrays as well as regular
vars
project.findFile
now works on paths starting with a '/' #523- Rug Function exceptions are now passed to error handlers. Maybe: Response now passed to handlers when unknown Rug Functions are encountered #536
0.26.1 - 2017-04-24
Secret release
- Added support for resolution of Secrets from Event Handlers. NOTE: it's up to secret resolver implementations to make sense of what this means in the particular context!
- Improved JVM
toString
behavior for JavaScript proxies - Added reducer to allow JSON.stringify to be used with JVM-backed nodes
0.26.0 - 2017-04-21
Election Release
- Added ability to resolve
Project
objects fromRepo
orCommit
, if aRepoResolver
is provided by the runtime - Added
Impact
object to enable drilling into the changes in aPush
in a path expression, extracting old and new files. - Added
stringify
function onTreeHelper.ts
to help dump hierarchy of AST nodes when debugging. jsSafeCommittingProxy
now returnsundefined
on unknown properties on dynamic nodes rather than throwing an exceptions
- Response.Status of instructions whose failure is handled by a ResponseHandler
now have a status of
Handled
instead ofFailed
- BREAKING Event and Command Handlers must return EventPlan and CommandPlan respectively to remove confusion as to the different capabilities
- Project test steps can now return
void
, as for handlers.
0.25.3 - 2017-04-13
Parameter release
- Parameter decorator now takes a copy of the parameter configuration. It was overwriting its contents.
0.25.2 - 2017-04-13
Signature release
- Add GPG signing of published artifacts
-
Fixes #517: Converting script objects returned from tests to GraphNode
-
Better error message when LifecycleMessage does not contain a GraphNode
0.25.1 - 2017-04-11
Last minute release
- msg, body, code and status are now properties of TS Response
0.25.0 - 2017-04-11
Judgement Day Release
- BREAKING Generated TypeScript project model types use
properties rather than functions for no-arg operations marked with
@ExportFunction
when the newexposeAsProperty
flag is true - BREAKING All Generated TypeScript Cortex types use properties rather than functions for all navigation
- BREAKING Use specific message types in Plans for the different scenarios (directed, lifecycle and response) as per #501
- Improved build
- Make TypeScript generator for rug more like that for cortex
- Improve release documentation
- The
@atomist/rug
npm module snapshots are now published to https://atomist.jfrog.io/atomist/api/npm/npm-dev
- BREAKING The Stubs.ts file is no longer generated, use the Types.ts instead
0.24.0 - 2017-04-04
The one TS to rule all stubs
- Model stubs are generated in one uber file
- Generally refined TS generation
- Set the channel id on a message with
withChannelId
0.23.0 - 2017-03-31
TypeScript stub generation and proxy improvement release
- Now generating
add
instead ofwith
methods to handle arrays in TypeScript code generation
0.22.0 - 2017-03-31
- BREAKING internal API for resolving and loading Rugs has changed to deal with more complex dependency resolution scenarios. Also removal of AddressableRug and RugSupport traits.
Back from the future release
- Removed use of
Futures
inLocalPlanRunner
- Changed
ServiceLoader
-based registries to not use caching - If the fixture is the same as the world in a Gherkin step, pass only one parameter. This changes the signatures of handler tests.
0.21.0 - 2017-03-30
Handler return release
- BREAKING Handlers must return
Plan
, notMessage
- BREAKING Messages can only contain a string value, not JSON
- Cardinality is processed in
TreeNode
deserialization from Cortex ingestion
0.20.0 - 2017-03-29
Handler testing improvement release
- Added defaultValue parameter to @Parameter annotation
- Publishing events on path expression evaluations in handler tests
- Now pass back JavaScript Plan to Gherkin steps
- Can now record more than one plan in Gherkin handler tests. Fixes #480
- TypeScript Plan class now exposes properties rather than functions
- Do not include TypeDoc in NPM module
0.19.0 - 2017-03-28
- Added tag to commit back relationship
- Added platform property on builds
- Added new methods for pluginManagement
- Better error message when failing to navigate property
- Better error message when handler was not registered in a test
- Building typedocs for cortex as well as rug
0.18.3 - 2017-03-27
Minor path expression fix release
0.18.2 - 2017-03-27
Re-Re-Cortex release
- NPM publish of cortex
0.18.1 - 2017-03-27
Re-Cortex release
- Cortex package.json
- Generate and publish cortex TypeDoc
0.18.0 - 2017-03-27
Cortex release
- Add placeholder npm module @atomist/native for pure TypeScript/JavaScript helpers that have no reliance on JVM objects (to be split out later)
- Support for generation of TypeScript interfaces and stub classes for Atomist "cortex" model around commits, builds etc. Lives in @atomist/cortex module.
- Travis CI build always uses npm-release Maven profile
0.17.3 - 2017-03-24
Fixup before prod rollout release
- 'null' and undefined are not serialized to JSON in instruction parameters #466
- NodesWithTag allows dynamic nodes on
Child
axis to not match without error - Don't set default parameter values if they are null #458
- Support optional parameters in AnnotatedRugFunctions #462
0.17.2 - 2017-03-22
Quiet release
- Allow type safe creation of plan instructions using instantiated operations
- Allow construction of Message without body
- Ensure Event Handlers are not invoked if there are no PE matches #454
- A message method on
HandlerScenarioWorld
when an handler only returns a message without a plan
0.17.1 - 2017-03-20
Relaxed release
- Removed validation of secret paths as this contract is owned by the bot
0.17.0 - 2017-03-20
Handler cleanup release
- Added support for parameterized Gherkin steps, per #431
- BREAKING MappedParameter names changed to be more specific
- BREAKING changed
withTreeNode
towithNode
in Message class in Handlers.ts
0.16.0 - 2017-03-19
Test good parameters release
- Testing well-known step "parameter were valid"
0.15.1 - 2017-03-19
Test bad parameters release
- Testing editors no longer crashes when provided invalid parameters #444
- Query by example option for authoring path expressions against model
0.15.0 - 2017-03-17
Early often release
- Next phase of handler testing support
- Adds the concept of a contextRoot node to RugContext to enable handlers to run path expressions as needed. This change impacts runtime as well as testing, but is necessary to support our programming model.
- Gherkin testing "the archive root" Given
- TypeScript test documentation to generated TypeDoc
- BREAKING Removed
TreeHelper
class. This module now contains only functions, as a class was not necessary. - BREAKING Python Requirements old type has been removed as it was not matching the current programming model. It will be moved to its own project. #434
- Improve duplicate removal in expression engine
- Make TypeScript test stubs addressable (to help with deduping)
- Correct some usages of TreeNode where GraphNode could be used
- BREAKING The
generateWith
method used in testing has an additionalprojectName
parameter between the generator and its parameters.
- Editor test project objects have a name #436
0.14.0 - 2017-03-15
Ides of March release
- TypeDoc, ScalaDoc, and scoverage reports are now published automatically
- Xml extension can now derive itself from a file
RugContext
now exposes acontextRoot
to allow handlers to execute arbitrary path expressions- Generators should now be under
.atomist/generators
but are still found under.atomist/editors
- Command and event handler testing
- TypeScript "it should fail" test step via @justinedelson #429
- Xml
addNodeIfNotPresent
via @justinedelson #423
- TypeScript interface and class generation #427
0.13.0 - 2017-03-10
Unlucky release
- Annotations and helper class for implementing RugFunctions
- New BDD test framework for Rug archives, based on Gherkin and TypeScript/JavaScript
- Support for replacing tokens with secrets in RugFunction parameters
- Support for resolving secrets during Plan execution
- Support for MappedParameters to pull config from other systems
- Support for Secrets in RugCommands
- Support for Command, Event and Response Handlers. All return Plans
- Support for RugFunctions - parameterized JVM functions for Handlers
- Directory extension now public #409
- Referencing of editors in other archives in JS archives
- Bug in LinkedJsonTreeDeserializer where it threw NPE on empty result set from neo4j-ingester e.g. where the PE didn't match. Now returns EmptyLinkableContainerTreeNode
- Upgraded TypeScript to 2.2.1 via rug-typescript-compiler 0.12.0
- BREAKING Removed Rug DSL-based BDD support. Use new Gherkin-based support.
- BREAKING Removed rug namespace support in preference to common approach of group:artifact:name This means that DSL based rugs no longer contain their namepsace in their name
- BREAKING Only require context when running handlers
- BREAKING Removed CommandRegistry and related usages
- BREAKING Renamed old RugFunction to RugDslFunction
- New text node structure. See docs/treenodes.md.
- BREAKING Removed ProjectOperationArguments. Use ParameterizedRug instead
- BREAKING Refactored loading of Rugs from archives. Now returns
Rugs
- BREAKING Removed Executor and old Handlers completely
0.12.0 - 2017-02-14
Valentine release
- Added YamlType and YamlFileType classes to replace YmlType and YmlFileType respectively. Deprecated the latter classes.
- Support PathExpressions that start with a NodesWithTag
- Support for
contains
andstarts-with
path expression functions - Beginning of a TypeScript class library to simplify working with tree nodes and transparently decorate tree nodes if a decoration strategy is provided in TypeScript.
- Add new minimal TS interfaces for use with class decorators. e.g. EditProject
- Added support for @Editor, @Generator, @Reviewer and @Tags class decorators in TS.
- Added
ScalaFileType
backed by ScalaMeta
- Elm parser failed on files with two multiline comments #268
- Raise an
InvalidRugTestScenarioName
when a Rug test scenario is missing a name #71 - Implicit DLS parameters (from
uses
) are no longer duplicate if multiple editors declare the same parameter. The first one is chosen #258 - Ensure TS parameters are required by default, and ensure defaults are applied before validation #224
- Changed how descendants were found and processed in tree expressions which fixed two pendingUntilFixed tests
- Upgrade TS compiler to 2.1.5
scalar
method on TypeScriptPathExpressionEngine
taking string is now calledscalarStr
. This change was necessary to avoid conflicts with method overloading in TypeScript/JavaScript.TreeNodeUtils.toShorterString
now optionally takes a function to customize the display of each node.- BREAKING
value
,update
andformatInfo
functions from TypeScriptTreeNode
moved to newTextTreeNode
sub-interface. - BREAKING The interface for Rug extensions, formerly Rug types, was simplified. resolvesFromNodeTypes was eliminated and the signature for findAllIn was simplified. They should also directly extend ChildResolver instead of some sort of ViewFinder.
0.11.0 - 2017-02-01
- Implement JsonBackedContainerTreeNode, allows a ContainerTreeNode to maintain the Json is was generated from
- Add correlationId to Message, allows handler to define how Messages are correlated
- Support for @parameter TS class field decorators as per #229
- Support for a new TS (JS) Handler programming model as per #105
- Support for Type extensions/TreeNode written in TypeScript as per #214
- Generators are now declared with the
generator
keyword - Optional predicates in tree expressions
- LinkedJsonTreeDeserializer now properly returns string values
- LinkedJsonTreeDeserializer now works when an already linked object is updated
- TS generators are now passed project name as second argument as per TS contract
- Retain all changes from an editor #199
- Yml type can now be instantiated from ProjectMutableView, DirectoryMutableView, and FileMutableView #250
- Handle YAML files with multiple documents, but only first is parsed and addressable.
- BREAKING
TreeNode.nodeType
renamed toTreeNode.nodeTags
- We now create a new JS rug for each thread for safety #78
- BREAKING all JS based Rugs must export (a la Common-JS) vars implementing the associated interfaces. Previously we scanned for all top level vars.
- BREAKING Remove Executor support from Rug DSL as per #206
- TypeScript editors now return void. Use the new
ProjectMutableView
describeChange
method to add any comments about the working of your editor. - BREAKING CustomizingProjectGenerator was removed from ProjectGenerator.ts as it's no longer required, and it's thought that it's not being used at all yet.
- BREAKING signature of TypeScript ProjectGenerator.populate()
changed: parameter
projectName
got removed. Name of the generated project can be obtained viaproject.name()
. - Core.ts is generated and compiled on-the-fly during unit-testing so that the build is not dependent on network or later maven phases until deployment
- Scala compiler warnings are now fatal by default, use
-P allow-warnings
profile to have the old behavior. The Travis CI build uses the allow-warnings profile.
- The
@generator
has been deprecated in favor of thegenerator
keyword
0.10.0 - 2017-01-18
- Parameter validation regex
@version_range
- ScriptExceptions during initial eval of JavaScript now include filename
- EveryPom type curtesy of @justinedelson
- TypeScript/JavaScript should now "export" instances of Rugs inline with CommonJS standard. Hopefully not a breaking change as there is limited support for automatically exporting legacy ones.
- Comments are removed from JS files as they are 'required', and relative imports now work correctly when 'export' is used from TS or vars are added to the global exports var #156
- Generation of Rug types documentation
- minLength and maxLength now default to -1 as per Rug DSL #169
- Allow Java annotations with properties #164
- Default parameter values are now validated #168
- Output parameter name when pattern fails to validate #58
- In the DSL, parameters no longer accept an array of allowed values for validation.
0.9.0 - 2017-01-09
TypeScripting release
- TypeScript Reviewers
- TS parameter tags were not being extracted #151
- Parameters for TS editors/generators were defaulting to displayable=false. They now default to displayable=true. #148
0.8.0 - 2017-01-04
Breaking release
- NavigationAxis: New AxisSpecifier that allows navigating via a property in path expression language
- Path expression predicates can contain path expressions
- BREAKING Naming convention for Rug types now UpperCamelCase, basically the same as the Scala class/type without the trailing Type, MutableView, or TreeNode
- BREAKING Rug tree expression syntax has been changed to more closely resemble XPath where possible
- BREAKING Rug DSL: A Rug can no longer specify its action in JavaScript: In this case, use TypeScript or JavaScript.
- BREAKING FileArtifactMutableView is now named FileMutableView
- @any parameter validation regex now works in both Java and Javascript
- Double-quoted strings in Rug DSL are now interpreted similarly to Java double-quoted strings
- LABEL section in files parsed by Dockerfile type did not handle multi-line strings correctly as per #140
0.7.1 - 2016-12-19
- Assertions can use 'not'
- Improve javadoc
- Various microgrammar improvements
- Update to latest rug-typescript-compiler
0.7.0 - 2016-12-16
- Breaking change to the Typescript Rug programming model. Decorators are no longer used, the interface signatures have changed, and the mechanism for retrieving the PathExpressionEngine has changed. See #24 for details.
- Breaking change to the Message trait. Now required to implement withActionNamed
- Breaking change to message.Rug interface, type is now part of Rug not calledback
- Event handlers definitions moved into Rug open source project
- Added new node levels in microgrammar returns
0.6.0 - 2016-12-14
- Improved microgrammer tests
- Fixed error in MatcherMicrogrammar.strictMatch with extra node level
- Update dependencies to latest
- Only load javascript from .atomist directory
- Added Rename for microgrammers
0.5.4 - 2016-12-12
Mutually assured success release
- TypeScript Rugs are loaded first, allowing them to be called from Rug DSL Rugs
- All parameter regular expressions must be anchored, i.e., start
with
^
and end with$
- The name of the Atomist ignore file is now
.atomist/ignore
- project.AddFile is now idempotent
- Documentation
- This CHANGELOG
0.5.3 - 2016-12-09
The single triple double release
- Single double-quotes are now properly ignored within triple double-quotes
- Timestamped builds are now published to a dev repo