ChangeLog
=========


2022-03-14: quickly-0.7.0

- fix issue #3, allow adding octave to notes in chordmode, but not to the
  inversion
- fix issue #4, relative to absolute yields incorrect results
- removed the quickly.registry module, included languages are now added to
  parce's global registry
- correctly handle \skip with music instead of a single duration (Lily>=2.23.6)
- rhythm.transform() now also handles duration in commands like \tempo, \tuplet,
  \after and \partial
- documentation improvements


2022-02-12: quickly-0.6.0

- requires parce-0.31.0
- small registry module changes to adapt to parce


2022-01-23: quickly-0.5.0

- requires parce-0.30.0
- added time module for time computations
- added key module for key signature and tonic computations
- added rhythm module to manipulate durations in music or a part thereof
- added dom.scope module to find nodes from included files
- modified PitchProcessor:
    - note names now carry a default octave
    - pitch() method now returns a Pitch, old pitch() renamed to process()
- introduced lily.ChordBody and FigureBody, to be able to add Duration at Chord
  and Figure directly
- added lily.Durable as base type for any stuff that can have a Duration
- notes as argument to \relative, \key or \transpose are now Pitch, not Note
- handle single durations in lyricmode, just like Unpitched
- improvements to duration module, add duration.Transform
- added transform() method to all Music nodes, to calculate durations in child
  nodes
- added properties() method to Music node type, to store information during
  processing of descendant music
- added datatypes module for small datatype helper classes, featuring Properties
- documentation improvements


2021-12-31: quickly-0.4.0

- added relative module, with abs2rel and rel2abs functions
- possible to direct generators in Node and Range to not descend in a node
- added node.Range class, to denote a range within a Node tree
- added end parameter to Element.find_descendant(s)
- added Element.find_descendant_right() and -left()
- added dom.edit module to edit a parce document via the DOM node tree
- added pitch.PitchProcessor.find_language and follow_language()
- some methods/functions renamed and API cleanups
- documentation improvements


2021-12-21: quickly-0.3.0

- requires parce-0.28.0
- DOM elegantly handles untransformed parce stuff such as CSS/JS in Html
- Note and positioned Rest now have attrs for octave, accidental and oct_check
- pitch: added Pitch and PitchProcessor to read/write pitch names in all
  languages, with style preferences for writing pitch names
- added lily.Spanner.find_parallel() to find the other end of a spanner
- added transpose module, transpose music in a node or (part of) parce.Document


2021-12-09: quickly-0.2.0

- requires parce-0.27.0
- added registry module to find and guess languages (like parce)
- added LaTeX language and transform (for lilypond-book)
- added element constructor helper for dom.htm module
- added Element.py_dump() to create tree structures in Python code
- simplified dom.read module and API, now that parce's Transform finding
  algorithm is configurable
- small bugfixes, improvements and documentation updates


2021-11-25: quickly-0.1.0

- requires parce-0.26.0
- added html language and transform (for lilypond-book)
- add dom.htm element types (for lilypond-book HTML documents)
- added indent module and support for creating properly indented output
- documentation improvements


2021-11-11: quickly-0.0.9

- requires parce-0.25.0
- Add support for some new LilyPond-2.23 commands
- fixed case where a symbol was interpreted as a pitch eg: \tweak color red do
- fixed some cases where incorrect input was not handled neatly
- documentation improvements


2021-08-08: quickly-0.0.8

- requires parce-0.24.0
- fixed instance dict in Element nodes, added empty __slots__to mixins
- added Node.filter() and Node.instances_of()
- added a logo (two eighth rests, looking like "ly")
- new website at https://quick-ly.info/
- small optimizations and documentation improvements


2021-03-08: quickly-0.0.7

- requires parce-0.23.0
- added quickly.numbering module
- added dom.read module to construct elements/documents from text
- removed some temp methods from dom.util
- Element.copy_with_origin now works properly everywhere
- Node.equals() now works for TextElement, by implementing body_equals()
- improvements to TextElement, optional head value checking
- renamed lily.PropToggle to Toggle
- fixed escape warnings in source files
- added duration.shift_duration()
- moved scm.Int to scm.Number in some forgotten places


2021-02-16: quickly-0.0.6

- required parce version 0.22.0
- lily.Header, lily.Paper and lily.Layout now have easy to use properties to
  set variables like title, composer, etc.
- lily.Document now has version attribute to read/set LilyPond version
- added markup construction helper in quickly.dom.markup
- Scheme transform handles all Scheme number features, e.g. #xb/f (a fraction
  in hex) and even complex numbers


2021-02-11: quickly-0.0.5

- Milestone: quickly correctly parses my Mouvement piece!
  https://github.com/wbsoft/lilymusic/blob/master/berendsen/mouvement.ly
- fixed \rest before duration
- fixed dot missing in scheme pair
- add space after markup commands
- fixed dom.element.build_tree, it lost a node after two \repeat nodes
- parce removed identifier context; we only create Identifier with Assignment
- smartly support \tag and \tweak without direction prepended
- fixed documentation build errors.


2021-02-07: quickly-0.0.4

- still pre-alpha but work in progress
- quickly.dom.lily now has much more elements
- correctly parse lists, property paths etc
- added chordmode and chord modifiers, figuremode
- quickly.lang.lilypond now transforms almost a full document
- commands are combined with their arguments, based on signatures
- work started on documentation with a quickly.dom explanation


2021-01-31: quickly-0.0.3

- still pre-alpha
- much more robust already
- dom.element now has the four basic Element node types
- dom.element can be constructed manually or via LilyPondTransform
- writing back to document works
- scheme expressions are fully read/built
- markup expressions are fully read/built
- complex articulations, tweak, tremolo etc. work well
- toplevel and in block assignment is wrapped in Assignment node
- lyricmode and drummode work
- todo: music functions
- some test files were added. todo: more test files
- module documentation in good shape. todo: user documentation

