Change Log — Balladeer 0.42.0

# Change Log

## 0.47.0

- Better error handling when building to spec.

- Page creates outer div for zones (by default; basket, inputs, svg, and bucket).

## 0.46.0

- Fixed a bug casting invalid scene files.

- discover_assets sorts by path.

- Ensure types is a set when building to spec.

- Fix bug to ensure all spec types required for a role.

- Populate endpoint metadata from quick_start keyword arguments.

- App session renders options list for command.

## 0.45.0

- Added goal to Detail state.

- Added a utility to generate Conversation diagram.

- Add a Presenter class for sanitization of HTML output.

- Insert ‘target=”_blank” rel=”noopener noreferrer”’ into hyperlinks.

- WorldBuilder default behaviour is to create Entities from asset specs.

## 0.44.0

- Make Turn a module-level type.

- Fixed a bug in App after Turn refactoring.

- All class discovery magic refactored to quick_start function.

- All Builder classes have a make method now.

- Fixed a bug in Story.__deepcopy__.

## 0.43.0

- Condition specifications now evaluate simple attributes as boolean.

- Created SpeechTables mixin and tests for conversation tree.

- New Sphinx theme for documentation.

## 0.42.0

- Fix an issue which was ignoring all but the final directive of a scene.

- More robust organisation of directors notes. Key is formally (path, shot_id, cue_index).

## 0.41.0

- Pass Turn attributes as keyword parameters to each Drama directive handler.

- Fix content of About endpoint.

## 0.40.0

- Some documentation fixes.

- Fix packaging of balladeer.utils.

## 0.39.0

- Allow parameter class from cue which renders at blockquote level.

- Render theme parameters as CSS root variables with ballad- prefix.

- Allow parameter theme from cue which populates root variables.

- Add theme utility to render colour swatches.

- Loader excludes style files by default.

- Allow parameter style from cue which specifies named style files.

- Improvements to Page.paste method.

- Detect sqlite files as Assets.

## 0.38.0

- Fixed a bug when building an assembly with Entity links.

- First online documentation.

## 0.37.0

Adds functionality for text adventures.

- Example 11: Cloak of Darkness. First working implementation.

- Added a standard Detail state for controlling verbosity.

- Unified the classic Waypoint with State.

- Added the compass module with classic code and tests.

- Added the description property to Entity.

- Entity gets revert attribute.

- Began to create API documentation.

- Drama.active is now a dictionary whose values are valid commands.

## 0.36.0

Minor fixes while preparing development blog.

- Fixes to examples 1 and 10.

- Better error handling during Asset discovery.

- Story.context now orders drama by integer state.

- Top-level imports are now all from balladeer.lite.

## 0.35.0

Bugfixes to example 8.

- Loader now offers better filtering of test modules, etc.

- Settled on a convention for naming of controls.

## 0.34.0

All examples now converted to the lite format.

- Loader discovery enhanced for hierarchical directories.

- Better calculation of asset paths.

- Command options added to assembly output.

## 0.33.0

Support for audio assets.

- Unique index and ordinal for each rendered block.

- Better structure for Director’s notes.

- audio tags are rendered inside details.

- audio playback triggered by JS timer.

## 0.32.0

This is the ‘MVP’ release of the new lite format.

- <cite> tags get animation timing similar to <p> tags.

- Story objects now accept Speech on instantiation.

- Fixes to layout and formatting of some examples.

## 0.31.0

Provides a well-formed example to demonstrate JS integration.

- Refactored Story for easier override of page composition.

- Director notes now accessible via Turn object.

- Fix for Assembly endpoint.

- Better management and distribution of discovered assets.

- ex_06_js_frontend demonstrates integration with a JS application.

## 0.30.0

Full steam ahead with the lite variant. Extensive refactoring to implement these key features:

- Standardised on Grouping.typewise wherever appropriate.

- Added sketch and aspect to Entity.

- Director keeps sequential notes in a ChainMap.

- Clarified concepts of scene/shot/speech.

- Clarified Drama interfaces to actions/interlude/directions.

- Drama adopts Prologue/Dialogue/Epilogue as return types.

- Drama owns prompt.

- Director rewrite can re-order Prologue/Dialogue/Epilogue.

- Story is now a context manager and has return type Turn.

The following examples have been converted to use the lite API:

- ex_06_js_frontend

- ex_10_lite_sequence

## 0.29.0

Substantial effort towards implementation of lite variant. Some key things to note:

- Decision on convention for naming of scene files (.scene.toml).

- Recreation of previous cartoon fight example to pin down casting priorities.

- Decoupling of Story (organisation) from Director (presentation).

- Some refinement around previous patterns used for World and Map.

- Lots more unit tests. Commitment to TDD. They run fast, too.

## 0.28.0

This is a transitional release towards Balladeer lite.

I have adopted TOML as the new format for scene files. Character dialogue uses SpeechMark.

Documentation refers to the classic format. This will be corrected in further releases over the next few weeks.

Fixes to classic:

- Repin to turberfield-dialogue 0.47.0.

- Folio introduces named page styles for front and rear matter.

- Fix errant spaces in Folio output.

- Add a chapter variable to the style of each section.

## 0.27.0

- Add folio module for generation of transcripts.

- Repin to turberfield-dialogue 0.46.1.

- Repin to turberfield-utils 0.47.0.

## 0.26.0

- Repin to turberfield-dialogue 0.40.0.

## 0.25.0

- Repin to turberfield-catchphrase 0.25.0.

## 0.24.0

- Added optional Presenter factory parameter to Story.represent.

- Repin to turberfield-dialogue 0.39.0.

- Repin to turberfield-catchphrase 0.24.0.

- Repin to docutils 0.18.1.

## 0.23.0

- Improve routing algorithm to avoid loops.

## 0.22.0

- Repin to turberfield-dialogue.

## 0.21.0

- Repin to turberfield-dialogue.

## 0.20.0

- Fix cartography types.

## 0.19.0

- Story.context is now a property; more convenient when subclassing.

## 0.18.0

- Transition is now returned in Map.options property.

## 0.17.0

- Repin to turberfield-utils.

- Add cartography module.

## 0.16.0

- Various fixes to examples.

- Various updates to development blog.

## 0.15.0

- Added an example on basic use of parser.

- Now using output of interlude as fact keywords.

## 0.14.0

- Allow keyword arguments in represent.

## 0.13.0

- Add examples directory.

- Repin to turberfield-dialogue.

## 0.12.0

- Allow easier setting of Story context.

- Provide default empty ensemble.

- Repin to turberfield-catchphrase.

- Repin to docutils.

## 0.11.0

- Adopt absolute pinning for dependencies.

## 0.10.0

- Gesture property names are now unique across Head and Hand.

- Gesture attribute access implemented via ChainMap.

## 0.9.0

- Add __str__ method for Gesture.

## 0.8.0

- Use Brew class in unit tests for Gesture.

## 0.7.0

- Add tests for Drama.next_states.