2023-09-10 Tim Janik # e693acb4d84

MISC: publish.sh: determine version from tarball, show progress

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-10 Tim Janik # 4fc0a5c13a0

MISC: publish.sh: use assets/ directory contents if present

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-10 Tim Janik # f2c293f6373

GITHUB: workflows/testing.yml: use download-artifact@v3 to fetch release assets

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # efabb786a03

GITHUB: workflows/testing.yml: make sure to generate PDF docs early on

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # 792c3174c5d

GITHUB: workflows/testing.yml: provide GH_TOKEN for gh in publish.sh

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # 0ee27046f7c

GITHUB: workflows/testing.yml: first build docs, then upload docs/ artifact

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # c15a049e69d

GITHUB: workflows/testing.yml: fix Release-Upload deps, avoid skipped jobs

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # 1ba57dc81c1

GITHUB: workflows/testing.yml: allow skipped jobs in Ping-IRC

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # 92f8aa6ceba

GITHUB: workflows/testing.yml: use github expression for negating if

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # 5335902452e

GITHUB: workflows/testing.yml: escape exclamation mark for yaml

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # 881b47121af

GITHUB: workflows/testing.yml: skip Focal-Clang-Tidy for release tags

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # bf15aed5d89

GITHUB: workflows/testing.yml: uplaod releases via misc/publish.sh

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # ceb16e73613

GITHUB: workflows/release.yml: remove, releases moved into testing.yml

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # d8e7ab9d270

MISC: publish.sh: download artifacts and create a release

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # c210bb23149

MISC: cirun.sh: properly dockerize clang-tidy

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # 24a5532bc18

MISC: cirun.sh: support V=1

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # b7c38b781de

GITHUB: workflows/testing.yml: run clang-tidy on focal

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # 967b892cddb

MISC: cirun.sh: use 1000:1000 to chown files for docker containers

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # b2b7f164411

MISC: mkassets.sh: add missing auto to cp --reflink=auto

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # 4814077b6e2

GITHUB: workflows/testing.yml: fix env syntax for gha

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # 3f5334ee45b

GITHUB: workflows/testing.yml: use cirun.sh for all CI jobs

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # 22e178e7688

GITHUB: workflows/testing.yml: use cirun.sh on Focal for docs

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # 587f371f588

MISC: cirun.sh: support $CITAG to determine docker run image

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # 4ecd2e7c896

MISC: Dockerfile.lunar: install missing clang aliases

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # c3398c8f80a

MISC: cirun.sh: add script that runs all CI stages via docker

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # 8bc6875d414

MISC: Dockerfile.focal: install poxy==0.13.0

Versions poxy>=0.13.1 have problems with python-3.8 on focal.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # 56484c787a6

MISC: Dockerfile.focal: install pandoc-3.1.6.2

Using pandoc-3.1.7 seems to have issues with PDF generation, anchors
in section titles cause an error and SVG images are not found.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-09 Tim Janik # ef5ffc7791f

.gitignore: minor addition

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-08 Tim Janik # bb7352e4039

MISC: Dockerfile.focal: add clang-17 aliases

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-08 Tim Janik # 73ccb408213

MISC: Dockerfile.focal: provide xetex, poxy and clang++-17

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-08 Tim Janik # 3bc17349835

GITHUB: workflows/release.yml: upload draft releases for CI tests

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-08 Tim Janik # 6e53fbdc448

GITHUB: workflows/release.yml: cache focal docker builds with buildx

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-08 Tim Janik # 0d3714f4026

GITHUB: workflows/testing.yml: fix comment

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-08 Tim Janik # 1199d799005

GITHUB: workflows/testing.yml: cache arch docker builds with buildx

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-08 Tim Janik # 949f7a31721

GITHUB: workflows/testing.yml: cache lunar and jammy docker builds with buildx

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-08 Tim Janik # d8465fd88ff

Merge branch 'release-fixes'

* release-fixes:
  MISC: mknews.sh: print latest NEWS.md version with `misc/mknews.sh --version`
  GITHUB: workflows/release.yml: set prerelease:false for annotated tags
	Fix actions/checkout@v3 and actions/checkout@v4 messing up the annotation of
	the currently fetched tag, even with fetch-depth:0, see: actions/checkout#290
  MISC: mknews.sh: for release tags, copy news section from NEWS.md

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-06 Tim Janik # 3db0bb123f8

MISC: mknews.sh: print latest NEWS.md version with `misc/mknews.sh --version`

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-06 Tim Janik # ea5b2837814

GITHUB: workflows/release.yml: set prerelease:false for annotated tags

Fix actions/checkout@v3 and actions/checkout@v4 messing up the annotation of
the currently fetched tag, even with fetch-depth:0, see: actions/checkout#290

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-06 Tim Janik # 9dfb0918512

MISC: mknews.sh: for release tags, copy news section from NEWS.md

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-06 Tim Janik # e4007d4fcab

NEWS.md: Anklang 0.2.0

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-06 Tim Janik # 2a4c7dea028

Merge branch 'rebuild-focal'

* rebuild-focal:
  MISC: Dockerfile.focal: remove NOTEX argument
  MISC: mknews.sh: print news in chronological order

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-05 Tim Janik # ec144c520da

MISC: Dockerfile.focal: remove NOTEX argument

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-03 Tim Janik # fa1f8d4ab69

MISC: mknews.sh: print news in chronological order

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-01 Tim Janik # 39ac286028b

Merge branch 'fix-unstyled-content-flashing'

* fix-unstyled-content-flashing:
  UI: b/contextmenu.js: fix layout interference inside flexbox during popup
  UI: index.html: load global.css via style+@import, mark as data-4litcomponent
  UI: little.js: add adopt_component_styles() for simple style+@import cloning
	This allows to work around FOUC issues with Chrome, see comments.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-01 Tim Janik # 391a16aa811

UI: b/contextmenu.js: fix layout interference inside flexbox during popup

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-01 Tim Janik # 9e56a9d578a

UI: index.html: load global.css via style+@import, mark as data-4litcomponent

Signed-off-by: Tim Janik <timj@gnu.org>

2023-09-01 Tim Janik # 013349841ca

UI: little.js: add adopt_component_styles() for simple style+@import cloning

This allows to work around FOUC issues with Chrome, see comments.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-30 Tim Janik # 395757948cd

Merge branch 'propgroup-litcomponent'

* propgroup-litcomponent:
  UI: b/pianoroll.js: add todo comment
  UI: b/knob.js: use fixed adjustment factors for wheel events
  UI: util.js: wheel_delta: normalize delta to pixels for modern browsers
	Work around Firefox changing deltaY vs deltaMode depending on the order
	of access! Throw away old compat code.
  UI: b/knob.js: fix invalid field access
  UI: b/propgroup.js: avoid shadowRoot
  UI: util.js: refuse pointer lock grabbing on orphans and shadowRoot descendants
  UI: b/propgroup.js: port to LitComponent
  UI: b/deviceeditor.vue: use b-propgroup
  UI: b/propinput.js: support readonly + disabled state
  UI: b/propinput.js: add support for <b-knob/> as property field
  UI: b/propinput.js: let labeled default to false
  UI: b/toggle.js: store pressed button number
  UI: util.js: add uuname()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-30 Tim Janik # 10b4a30916d

UI: b/pianoroll.js: add todo comment

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-30 Tim Janik # ee115d9fbd3

UI: b/knob.js: use fixed adjustment factors for wheel events

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-30 Tim Janik # 336c93547a6

UI: util.js: wheel_delta: normalize delta to pixels for modern browsers

Work around Firefox changing deltaY vs deltaMode depending on the order
of access! Throw away old compat code.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-30 Tim Janik # 31a5caa5007

UI: b/knob.js: fix invalid field access

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-30 Tim Janik # 4bf3efa4f5c

UI: b/propgroup.js: avoid shadowRoot

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-29 Tim Janik # 6b2e5a19fc8

UI: util.js: refuse pointer lock grabbing on orphans and shadowRoot descendants

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-27 Tim Janik # 120deaf9458

UI: b/propgroup.js: port to LitComponent

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-27 Tim Janik # 46e6b24fa5d

UI: b/deviceeditor.vue: use b-propgroup

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-29 Tim Janik # 469cc78e6ee

UI: b/propinput.js: support readonly + disabled state

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-29 Tim Janik # 8de5eeda206

UI: b/propinput.js: add support for <b-knob/> as property field

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-28 Tim Janik # 41b84fadfcb

UI: b/propinput.js: let labeled default to false

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-28 Tim Janik # 36fff23dad1

UI: b/toggle.js: store pressed button number

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-27 Tim Janik # 523eefd3c28

UI: util.js: add uuname()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-23 Tim Janik # a7ab3487142

Merge branch 'b-propinput-litcomponent'

* b-propinput-litcomponent:
  UI: b/propinput.js: port to LitComponent
  UI: b/choiceinput.js: support label attribute as choice tip
  UI: little.js: add LitComponent.request_update_()
  UI: util.js: add addnotify_() and delnotify_() to extended properties
  UI: b/pro-group.vue: use <b-propinput/>
  UI: b/knob.js: simplify
  MISC: package.json.in: extend nodemon delay to reduce conflicts with lint rules
	Sometimes when ui/lint is triggered, files are written and make serve also runs
	rebuild rules due to nodemon.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-18 Tim Janik # 472ebd4629c

UI: b/propinput.js: port to LitComponent

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-23 Tim Janik # 9de11d65d41

UI: b/choiceinput.js: support label attribute as choice tip

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-23 Tim Janik # 3e3177f8b05

UI: little.js: add LitComponent.request_update_()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-23 Tim Janik # 7cbff87463e

UI: util.js: add addnotify_() and delnotify_() to extended properties

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-19 Tim Janik # a0c068d59b5

UI: b/pro-group.vue: use <b-propinput/>

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-23 Tim Janik # e7dfb0b90c3

UI: b/knob.js: simplify

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-23 Tim Janik # 50d5b366df0

MISC: package.json.in: extend nodemon delay to reduce conflicts with lint rules

Sometimes when ui/lint is triggered, files are written and make serve also runs
rebuild rules due to nodemon.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-19 Tim Janik # 64882dcc3cc

Merge branch 'fix-raw-tex'

* fix-raw-tex:
  UI: xbcomments.js: properly quote special characters in docs
  DOC: Makefile.mk: do not parse source comments as raw_tex

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-19 Tim Janik # 8e080040c63

UI: xbcomments.js: properly quote special characters in docs

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-19 Tim Janik # 1ed6b99d6f8

DOC: Makefile.mk: do not parse source comments as raw_tex

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-19 Tim Janik # b554e803cb7

Merge branch 'anklang-internals+jsdocs'

* anklang-internals+jsdocs:
  UI: b/basics.js: small docu update
  DOC: Makefile.mk: integrate JS component docs into internal manual
  DOC: jsdoc2md.js: skip extra subsection indentation
  UI: Makefile.mk: optimize *.jscss build, fix anklang-internals.html dependency
  UI: b/*.js: use three hashes '###' to indent docu subsections

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-18 Tim Janik # d4130cabe70

UI: b/basics.js: small docu update

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-18 Tim Janik # 7d0cac3054c

DOC: Makefile.mk: integrate JS component docs into internal manual

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-18 Tim Janik # 53fcb6caa1f

DOC: jsdoc2md.js: skip extra subsection indentation

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-18 Tim Janik # 5ba2edc5a03

UI: Makefile.mk: optimize *.jscss build, fix anklang-internals.html dependency

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-18 Tim Janik # fbeb121a12c

UI: b/*.js: use three hashes '###' to indent docu subsections

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-03 Tim Janik # ec269054cad

Merge branch 'swesterfeld-piano-roll-move', closes #16

* swesterfeld-piano-roll-move:
  UI: b/piano-ctrl.js: support moving/copying notes with the mouse
  UI: b/cliplist.js: restore user manual docs

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-03 Stefan Westerfeld # d1f2d31419f

UI: b/piano-ctrl.js: support moving/copying notes with the mouse

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>

2023-08-03 Tim Janik # db94e9a39e4

UI: b/cliplist.js: restore user manual docs

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-03 Tim Janik # 9d0c8defdf0

Merge branch 'jsdoc-elements'

* jsdoc-elements:
  DOC: poxystyle.css: fix dark theme colors
  DOC: jsdoc2md.js: use pandoc anchors everywhere with data-4search hints
  DOC: poxy.sh: forbid raw-html and support data-4search on <span/>
  UI: b/*.js: reformat documentation to use @class and @description commands
	See also: https://jsdoc.app/tags-description.html
  DOC: poxy.sh: parallelize JsDoc processing
  DOC: poxy.sh: fix exit code and compact markdown
  DOC: poxy.sh: add ui/ch-*.md files to poxy docs
  DOC: jsdoc2md.js: allow descriptions of virtual classes as docu sections
  DOC: copyright.ini: assign MPL-2 to ch-*.md documentation files
  DOC: Makefile.mk: integrate ui/ch-component.md
  Makefile.mk: add html/ to CLEANDIRS
  Makefile.mk: clean poxy/ and assets/
  DOC: ch-development.md: explicitely describe ASE
  UI: ch-component.md: describe lit components
  UI: ch-component.md: rename from ui/b/ch-vue.md
  README.md: add Star History Chart

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-03 Tim Janik # 0d6c36e73ed

DOC: poxystyle.css: fix dark theme colors

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-03 Tim Janik # 147d2ceb8f6

DOC: jsdoc2md.js: use pandoc anchors everywhere with data-4search hints

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-03 Tim Janik # de871ebe3e8

DOC: poxy.sh: forbid raw-html and support data-4search on <span/>

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-03 Tim Janik # 6d7cc3626be

UI: b/*.js: reformat documentation to use @class and @description commands

See also: https://jsdoc.app/tags-description.html

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-03 Tim Janik # 66cac845607

DOC: poxy.sh: parallelize JsDoc processing

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-03 Tim Janik # c776a608776

DOC: poxy.sh: fix exit code and compact markdown

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-02 Tim Janik # 6d995570293

DOC: poxy.sh: add ui/ch-*.md files to poxy docs

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-03 Tim Janik # 5d502ea79d6

DOC: jsdoc2md.js: allow descriptions of virtual classes as docu sections

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-02 Tim Janik # 218c76416f3

DOC: copyright.ini: assign MPL-2 to ch-*.md documentation files

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-02 Tim Janik # 034e9573800

DOC: Makefile.mk: integrate ui/ch-component.md

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-03 Tim Janik # 328f8482f8e

Makefile.mk: add html/ to CLEANDIRS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-02 Tim Janik # 298f24207f0

Makefile.mk: clean poxy/ and assets/

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-02 Tim Janik # 12809eb2d2d

DOC: ch-development.md: explicitely describe ASE

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-02 Tim Janik # 3e44f6739d4

UI: ch-component.md: describe lit components

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-02 Tim Janik # 4ec63d308a9

UI: ch-component.md: rename from ui/b/ch-vue.md

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-02 Tim Janik # a6d68b2a0b1

README.md: add Star History Chart

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-03 Tim Janik # 0eba7decc88

Merge branch 'toggle-as-lit'

* toggle-as-lit:
  UI: b/pro-input.vue: handle @valuechange on b-toggle
  UI: b/toggle.js: port to LitComponent

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-02 Tim Janik # bfc104e92cf

UI: b/pro-input.vue: handle @valuechange on b-toggle

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-02 Tim Janik # dc6d13a1d12

UI: b/toggle.js: port to LitComponent

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-02 Tim Janik # 8712b436827

Merge branch 'x11test-delay'

* x11test-delay:
  X11TEST: ereplay.cjs: add delay to mitigate a UI-reload race on project changes
  X11TEST: replay.sh: simplify AnklangSynthEngine executable check

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-02 Tim Janik # 1dcbdf00154

X11TEST: ereplay.cjs: add delay to mitigate a UI-reload race on project changes

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-02 Tim Janik # 1a0c4ed0f64

X11TEST: replay.sh: simplify AnklangSynthEngine executable check

Signed-off-by: Tim Janik <timj@gnu.org>

2023-08-02 Tim Janik # 3be13e1bfc1

Merge branch 'poxy-on-jammy'

* poxy-on-jammy:
  GITHUB: workflows/testing.yml: run poxy on ubuntu:22.04
  MISC: docker_run: fix interactive invocations
  MISC: Dockerfile.jammy: setup development tools for ubuntu:22.04 builds

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-31 Tim Janik # a7b0307dc4f

GITHUB: workflows/testing.yml: run poxy on ubuntu:22.04

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-31 Tim Janik # 46933a84209

MISC: docker_run: fix interactive invocations

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-31 Tim Janik # 30081a554c9

MISC: Dockerfile.jammy: setup development tools for ubuntu:22.04 builds

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-31 Tim Janik # 4694aa8e381

Merge branch 'make-dist-and-assets'

* make-dist-and-assets:
  GITHUB: workflows/release.yml: add Ping-IRC job
  GITHUB: workflows/release.yml: use misc/docker_run
  GITHUB: workflows/release.yml: add action to build & create releases from tags
  Makefile.mk: dist: assign release version to misc/version.sh:BAKED_DESCRIBE
  MISC: version.sh: prepare BAKED_DESCRIBE variable to define baked in version
  MISC: version.sh: support lightweight release tags via exact match
  UI: Makefile.mk: fix unintentional tscheck remakes
  DOC: Makefile.mk: add doc/ch-releasing.md to internal manual
  ASE: Makefile.mk: rebuild ase/buildversion*.cc if GITCOMMITDEPS changes
  Makefile.mk: rebuild package.json if GITCOMMITDEPS changes
  MISC: config-utils.mk: take tags and packed-refs into account for GITCOMMITDEPS
  DOC: ch-releasing.md: elaborate on releases and assets
  DOC: ch-releasing.md: start describing versioning and the release process
  MISC: mknews.sh: add development version disclaimer
  MISC: Makefile.mk: remove partial release build rules
  MISC: mkassets.sh: simplify to just make dist and trigger release asset builds
  MISC: mkAppImage.sh: build AppImage in assets/
  MISC: mkAppImage.sh: use tools from appimagetools/ dir
  MISC: Makefile.mk: cache downloads of appimage tools
  Makefile.mk: make dist: also generate assets/ChangeLog
  MISC: mkdeb.sh: create debian package in assets/
  DOC: Makefile.mk: support building assets/pdf
  MISC: Makefile.mk: avoid depending on appimage-runtime-zstd for normal builds
  UI: tsconfig.json: remove exclude section
  Makefile.mk: grep-reminders: only inspect existing files
  Makefile.mk: add recent commits to NEWS.md
  Makefile.mk: build dist tarball in assets/ with high compression
  ASE: main.cc: for --version, show short version and build id
  MISC: config-checks.mk: use version_short
  ELECTRON: Makefile.mk: use version_short
  ASE: Makefile.mk: use version_short
  Makefile.mk: extract version_hash, use version_short for brief version identifiers
	* Remove version_m.m.m use version_short instead
	* Remove version_buildid, that is actually version_short + version_hash
  MISC: Makefile.mk: remove unused release-news
  MISC: mknews.sh: generate most recent section of NEWS.md
  MISC: mkdeb.sh: parse hash from misc/version.sh
  MISC: version.sh: reduce logic to produce baked/git/fallback version/hash/date

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-31 Tim Janik # 6ffbebbcce0

GITHUB: workflows/release.yml: add Ping-IRC job

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-31 Tim Janik # 94ba2ad4161

GITHUB: workflows/release.yml: use misc/docker_run

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-30 Tim Janik # 3613bc66dea

GITHUB: workflows/release.yml: add action to build & create releases from tags

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-30 Tim Janik # bc60e2c177d

Makefile.mk: dist: assign release version to misc/version.sh:BAKED_DESCRIBE

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-30 Tim Janik # 2c6643d6399

MISC: version.sh: prepare BAKED_DESCRIBE variable to define baked in version

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-30 Tim Janik # 2aa219f972b

MISC: version.sh: support lightweight release tags via exact match

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-29 Tim Janik # 164f5f8d62c

UI: Makefile.mk: fix unintentional tscheck remakes

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-29 Tim Janik # 594dd26e877

DOC: Makefile.mk: add doc/ch-releasing.md to internal manual

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-29 Tim Janik # 4a3959522c7

ASE: Makefile.mk: rebuild ase/buildversion*.cc if GITCOMMITDEPS changes

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-29 Tim Janik # 9a242cf5339

Makefile.mk: rebuild package.json if GITCOMMITDEPS changes

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-29 Tim Janik # 1be8865b538

MISC: config-utils.mk: take tags and packed-refs into account for GITCOMMITDEPS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-29 Tim Janik # b5e9ee2abed

DOC: ch-releasing.md: elaborate on releases and assets

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-29 Tim Janik # aad33755caf

DOC: ch-releasing.md: start describing versioning and the release process

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-29 Tim Janik # 59a103042e5

MISC: mknews.sh: add development version disclaimer

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-29 Tim Janik # b3c8fd31799

MISC: Makefile.mk: remove partial release build rules

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-29 Tim Janik # 3f9f22e8b61

MISC: mkassets.sh: simplify to just make dist and trigger release asset builds

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-29 Tim Janik # d8a191c88a7

MISC: mkAppImage.sh: build AppImage in assets/

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-29 Tim Janik # 27c0407e6db

MISC: mkAppImage.sh: use tools from appimagetools/ dir

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-29 Tim Janik # 46dd66faa38

MISC: Makefile.mk: cache downloads of appimage tools

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-28 Tim Janik # 6a9d634c385

Makefile.mk: make dist: also generate assets/ChangeLog

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-28 Tim Janik # 10d8bae4bda

MISC: mkdeb.sh: create debian package in assets/

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-28 Tim Janik # bb91f0b7a1c

DOC: Makefile.mk: support building assets/pdf

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-28 Tim Janik # bd4e83e299a

MISC: Makefile.mk: avoid depending on appimage-runtime-zstd for normal builds

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-28 Tim Janik # 75394fbb81b

UI: tsconfig.json: remove exclude section

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-28 Tim Janik # 4d64ba3e426

Makefile.mk: grep-reminders: only inspect existing files

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-28 Tim Janik # f99ecf825be

Makefile.mk: add recent commits to NEWS.md

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-28 Tim Janik # b666707cb95

Makefile.mk: build dist tarball in assets/ with high compression

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-28 Tim Janik # 8e9d86eb999

ASE: main.cc: for --version, show short version and build id

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-28 Tim Janik # d6a6eefcd1f

MISC: config-checks.mk: use version_short

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-28 Tim Janik # 6eab3c7590d

ELECTRON: Makefile.mk: use version_short

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-28 Tim Janik # 17e70101adf

ASE: Makefile.mk: use version_short

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-28 Tim Janik # fee71cc62c8

Makefile.mk: extract version_hash, use version_short for brief version identifiers

* Remove version_m.m.m use version_short instead
* Remove version_buildid, that is actually version_short + version_hash

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-28 Tim Janik # 27aea55f26b

MISC: Makefile.mk: remove unused release-news

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-28 Tim Janik # a1495a4b2e4

MISC: mknews.sh: generate most recent section of NEWS.md

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-28 Tim Janik # fd43ac38664

MISC: mkdeb.sh: parse hash from misc/version.sh

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-28 Tim Janik # 20824612baf

MISC: version.sh: reduce logic to produce baked/git/fallback version/hash/date

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-31 Tim Janik # acafef28f08

Merge branch 'docker_build_run_clean'

* docker_build_run_clean:
  GITHUB: workflows/testing.yml: remove duplicate chown invokation
  GITHUB: workflows/testing.yml: use misc/docker_build, docker_run, docker_clean
  MISC: docker_clean: cleanup permissions and CI image tag
  MISC: docker_run: run in a CI image built by docker_build
  MISC: docker_build: build a Dockerfile CI image with ghcr.io cache support
  UI: Makefile.mk: make sure all JS files are built before running tscheck

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-31 Tim Janik # 7404a810934

GITHUB: workflows/testing.yml: remove duplicate chown invokation

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-31 Tim Janik # 6d1ce95e137

GITHUB: workflows/testing.yml: use misc/docker_build, docker_run, docker_clean

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-31 Tim Janik # 94cee43de86

MISC: docker_clean: cleanup permissions and CI image tag

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-31 Tim Janik # a9c7002a411

MISC: docker_run: run in a CI image built by docker_build

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-31 Tim Janik # 2181810c8f7

MISC: docker_build: build a Dockerfile CI image with ghcr.io cache support

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-28 Tim Janik # ae874be6654

UI: Makefile.mk: make sure all JS files are built before running tscheck

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # d11572308b1

Merge branch 'swesterfeld-piano-roll-note-length', closes #15

* swesterfeld-piano-roll-note-length:
  UI: b/piano-ctrl.js: cleanup note_duration_delta at the end of a drag
  UI: b/piano-ctrl.js: support resizing multiple notes in a selection

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # 9d6d721279d

UI: b/piano-ctrl.js: cleanup note_duration_delta at the end of a drag

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Stefan Westerfeld # f334f12fa60

UI: b/piano-ctrl.js: support resizing multiple notes in a selection

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>

2023-07-27 Tim Janik # 1c13e75f808

Merge branch 'simple-vue-ports'

* simple-vue-ports:
  UI: Makefile.mk: adapt make install wildcards
  UI: b/statusbar.js: port to LitComponent
  UI: b/databubble.js: port to native HTML component
  UI: b/partthumb.vue: retire partthumb which is superceded by clipview
  UI: b/hscrollbar.vue: retire hscrollbar code until we really need one
  UI: b/color-picker.vue: retire color picker code until we really need one

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # f0a6c736989

UI: Makefile.mk: adapt make install wildcards

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # 52e67bf17a9

UI: b/statusbar.js: port to LitComponent

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # c0e92e327fb

UI: b/databubble.js: port to native HTML component

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # dbc4fac14db

UI: b/partthumb.vue: retire partthumb which is superceded by clipview

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # 8e43797ca77

UI: b/hscrollbar.vue: retire hscrollbar code until we really need one

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # a88415ed122

UI: b/color-picker.vue: retire color picker code until we really need one

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # c402d5e88f7

Merge branch 'global-css-rename'

* global-css-rename:
  UI: index.html: load global.css
  UI: Makefile.mk: generate global.css
  UI: b/shell.vue: fix comment
  UI: global.scss: rename (from globals.scss) b/c it now contains global CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # 48f3e80759a

UI: index.html: load global.css

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # a9412512f1b

UI: Makefile.mk: generate global.css

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # 28adaf7b004

UI: b/shell.vue: fix comment

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # 5aab016a3f8

UI: global.scss: rename (from globals.scss) b/c it now contains global CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # 7a7dd7e676d

Merge branch 'globalscss-icon-fonts'

* globalscss-icon-fonts:
  UI: b/app.js: add comment for spinner testing
  UI: index.html: adjust font resource paths
  UI: globals.scss: import all icon SCSS defs
  UI: dom.js: properly quote font names
  ASE: websocket.cc: use CACHE_AUTO since we do not handle conditional requests
  UI: b/menuseparator.js: fix customElements extends specification
  UI: b/icon.js: leave icon font loading to globals.scss, assert font presence
  UI: b/shell.vue: spinner.scss is already imported by globals.scss
  UI: Makefile.mk: move fonts into ui/ and merge globals.scss dependencies
  UI: globals.scss: rename normalize.scss for merging import
  UI: postcss.js: keep .css imports, include all others
  UI: b/icon.js: assert "Material Icons" font_family instead of loading material-icons.css
  UI: globals.scss: directly include material-icons.css
  UI: Makefile.mk: prepare ui/material-icons.css for globals.css
  UI: dom.js: add font_family_loaded()
  UI: dom.js: add file for DOM utilities

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # cf96f0e64af

UI: b/app.js: add comment for spinner testing

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # d2df951f171

UI: index.html: adjust font resource paths

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # c2c19c659ee

UI: globals.scss: import all icon SCSS defs

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # e7e7c2238f2

UI: dom.js: properly quote font names

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # 0a71c4a0aa4

ASE: websocket.cc: use CACHE_AUTO since we do not handle conditional requests

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # 56ade7aeaa7

UI: b/menuseparator.js: fix customElements extends specification

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # 41fe9dc43ef

UI: b/icon.js: leave icon font loading to globals.scss, assert font presence

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # e1bc36bb0ef

UI: b/shell.vue: spinner.scss is already imported by globals.scss

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # 7b23caf18a6

UI: Makefile.mk: move fonts into ui/ and merge globals.scss dependencies

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # b729f77e584

UI: globals.scss: rename normalize.scss for merging import

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # 9b614cc0ca4

UI: postcss.js: keep .css imports, include all others

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # f07f0fa46a2

UI: b/icon.js: assert "Material Icons" font_family instead of loading material-icons.css

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 8ad57a560bd

UI: globals.scss: directly include material-icons.css

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # c6abd06e752

UI: Makefile.mk: prepare ui/material-icons.css for globals.css

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # c9e019e7899

UI: dom.js: add font_family_loaded()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 1535fa98430

UI: dom.js: add file for DOM utilities

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # 0b1e7e7c180

Merge branch 'csshash-2fix-fouc'

* csshash-2fix-fouc:
  UI: index.html: mark globals.css as data-4litcomponent
  UI: little.js: clone stylesheet links marked data-4litcomponent into shadowRoot
  UI: index.html: reload vue-styles.css and globals.css once the CSSHASH changes
  UI: Makefile.mk: support @--CSSHASH--@ insertions fro index.html
  ASE: websocket.cc: send "forever" Cache-Control with text/css to reduce FOUC

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # c689e2c4c08

UI: index.html: mark globals.css as data-4litcomponent

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # d05e434d81d

UI: little.js: clone stylesheet links marked data-4litcomponent into shadowRoot

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 525f21f8d44

UI: index.html: reload vue-styles.css and globals.css once the CSSHASH changes

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # eff0f6c5678

UI: Makefile.mk: support @--CSSHASH--@ insertions fro index.html

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 7765f16fda8

ASE: websocket.cc: send "forever" Cache-Control with text/css to reduce FOUC

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # 709f4e9044f

Merge branch 'globalscss-4-litcomponents'

* globalscss-4-litcomponents:
  UI: Makefile.mk: run stylelint on ui/globals.css
  UI: b/positionview.js: add CSS to globals.css, avoid shadowRoot
  UI: b/playcontrols.js: add CSS to globals.css, avoid shadowRoot
  UI: b/pianoroll.js: add CSS to globals.css, avoid shadowRoot
  UI: b/partlist.js: add CSS to globals.css, avoid shadowRoot
  UI: globals.scss: only style button and push-button for LightDOM
  UI: b/objecteditor.js: add CSS to globals.css, avoid shadowRoot
  UI: b/switchinput.js: add CSS to globals.css, avoid shadowRoot
  UI: b/numberinput.js: add CSS to globals.css, avoid shadowRoot
  UI: b/textinput.js: add CSS to globals.css, avoid shadowRoot
  UI: b/more.js: add CSS to globals.css, avoid shadowRoot
  UI: b/tracklist.js: add CSS to globals.css, avoid shadowRoot
  UI: b/trackview.js: add CSS to globals.css, avoid shadowRoot
  UI: b/menubar.js: fix b-menuseparator
  UI: b/trackview.js: fix b-menuseparator
  UI: b/menutitle.js: add CSS to globals.css
  UI: b/menuseparator.js: make b-menuseparator a simple HTMLHRElement
  UI: b/menurow.js: add CSS to globals.css, avoid shadowRoot
  UI: b/menuitem.js: add CSS to globals.css
  UI: b/menubar.js: add CSS to globals.css, avoid shadowRoot
  UI: b/knob.js: add CSS to globals.css, avoid shadowRoot
  UI: b/icon.js: add CSS to globals.css
  UI: b/editable.js: add CSS to globals.css
  UI: b/contextmenu.js: add CSS to globals.css
  UI: b/clipview.js: add CSS to globals.css, avoid shadowRoot
  UI: b/cliplist.js: add CSS to globals.css, avoid shadowRoot
  UI: b/choiceinput.js: add CSS to globals.css, avoid shadowRoot
  UI: b/buttonbar.js: add CSS to globals.css, avoid shadowRoot
  UI: b/basics.js: add CSS to globals.css, cleanups
  UI: b/aboutdialog.js: add CSS to globals.css, avoid shadowRoot
  UI: globals.scss: merge contents of grid.scss
  UI: Makefile.mk: fix globals.scss cleanup
  UI: Makefile.mk: include *.jscss contents in globals.css

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 02fb333c9a9

UI: Makefile.mk: run stylelint on ui/globals.css

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # b3c7d2c2c8e

UI: b/positionview.js: add CSS to globals.css, avoid shadowRoot

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # a907dfbc98f

UI: b/playcontrols.js: add CSS to globals.css, avoid shadowRoot

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 65381a89e74

UI: b/pianoroll.js: add CSS to globals.css, avoid shadowRoot

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # db4011ba3af

UI: b/partlist.js: add CSS to globals.css, avoid shadowRoot

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 7c6f08bcfb1

UI: globals.scss: only style button and push-button for LightDOM

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 5bb93ca5832

UI: b/objecteditor.js: add CSS to globals.css, avoid shadowRoot

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 465f6ff21fe

UI: b/switchinput.js: add CSS to globals.css, avoid shadowRoot

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 1f95613f3e2

UI: b/numberinput.js: add CSS to globals.css, avoid shadowRoot

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 060f073dbc7

UI: b/textinput.js: add CSS to globals.css, avoid shadowRoot

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 9782c8ce252

UI: b/more.js: add CSS to globals.css, avoid shadowRoot

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # dcd0e2c0f90

UI: b/tracklist.js: add CSS to globals.css, avoid shadowRoot

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # f2d4728ecb5

UI: b/trackview.js: add CSS to globals.css, avoid shadowRoot

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # fe10728e6f4

UI: b/menubar.js: fix b-menuseparator

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 19864eee9c5

UI: b/trackview.js: fix b-menuseparator

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 9b494c2ac03

UI: b/menutitle.js: add CSS to globals.css

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 57507984a2f

UI: b/menuseparator.js: make b-menuseparator a simple HTMLHRElement

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 7c01eecac20

UI: b/menurow.js: add CSS to globals.css, avoid shadowRoot

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # d2e2e74c70d

UI: b/menuitem.js: add CSS to globals.css

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 59819a6cbee

UI: b/menubar.js: add CSS to globals.css, avoid shadowRoot

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 07e100f8574

UI: b/knob.js: add CSS to globals.css, avoid shadowRoot

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 0e133089887

UI: b/icon.js: add CSS to globals.css

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # ed754192b4c

UI: b/editable.js: add CSS to globals.css

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 811cdb2216b

UI: b/contextmenu.js: add CSS to globals.css

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 58227b15fff

UI: b/clipview.js: add CSS to globals.css, avoid shadowRoot

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 76e500af4e5

UI: b/cliplist.js: add CSS to globals.css, avoid shadowRoot

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 6e479b94fec

UI: b/choiceinput.js: add CSS to globals.css, avoid shadowRoot

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 63595e5f3cb

UI: b/buttonbar.js: add CSS to globals.css, avoid shadowRoot

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # c175a34e778

UI: b/basics.js: add CSS to globals.css, cleanups

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # ed032cc9218

UI: b/aboutdialog.js: add CSS to globals.css, avoid shadowRoot

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # e4435b600f4

UI: globals.scss: merge contents of grid.scss

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-26 Tim Janik # 9e816d3f46d

UI: Makefile.mk: fix globals.scss cleanup

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # 3e5761dae32

UI: Makefile.mk: include *.jscss contents in globals.css

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # 746575faa90

Merge branch 'postcss-normalize-charset'

* postcss-normalize-charset:
  UI: postcss.js: postprocess CSS with postcss-normalize-charset
  MISC: package.json.in: install postcss-normalize-charset
  UI: postcss.js: add support for -I to add include paths

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # 3d692a6e813

UI: postcss.js: postprocess CSS with postcss-normalize-charset

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # 956c5770920

MISC: package.json.in: install postcss-normalize-charset

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-16 Tim Janik # c9529d5ef16

UI: postcss.js: add support for -I to add include paths

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-27 Tim Janik # 874535f25a1

Merge branch 'aboutdialog-lit'

* aboutdialog-lit:
  UI: index.html: add comments to start_view_transition()
  UI: globals.scss: add b-dialog styling
  UI: b/contextmenu.js: use transparent backdrop for menus
  UI: globals.scss: add view-transition-group defaults, add scale0 keyframes
  UI: dark.scss: add b-animation-duration and b-dialog-colors
  UI: tsconfig.json: avoid checks of postcss.js.tst.js
  UI: b/menubar.js: make use of Shell.show_about_dialog()
  UI: b/app.js: leave aboutdialog handling to Shell.show_about_dialog()
  UI: b/shell.vue: use b-aboutdialog.shown, add show_about_dialog(), handle close
	* Use proper internal state for showing b-aboutdialog
	* Expose showing/hiding through show_about_dialog()
	* Allow animated closing of b-aboutdialog with start_view_transition
  UI: b/aboutdialog.js: display Lit version number
  UI: b/aboutdialog.js: port to LitComponent
  UI: eslintrc.js: declare start_view_transition as global symbol
  UI: index.html: define start_view_transition()
	This is a Vue-aware wrapper around document.startViewTransition() (atm Chrome
	specific), that still does the right thing on Firefox and has a disable flag.
  UI: Makefile.mk: index.html: add lit_version to config_json

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # a80e92d057a

UI: index.html: add comments to start_view_transition()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # c54b70424ea

UI: globals.scss: add b-dialog styling

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # 915baedb141

UI: b/contextmenu.js: use transparent backdrop for menus

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # 2caf2b375d5

UI: globals.scss: add view-transition-group defaults, add scale0 keyframes

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # 5c8f6dfc564

UI: dark.scss: add b-animation-duration and b-dialog-colors

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-16 Tim Janik # 20a443b8ded

UI: tsconfig.json: avoid checks of postcss.js.tst.js

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-16 Tim Janik # 876923bd23f

UI: b/menubar.js: make use of Shell.show_about_dialog()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-16 Tim Janik # 208c5e6287c

UI: b/app.js: leave aboutdialog handling to Shell.show_about_dialog()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-16 Tim Janik # 33a3a3454df

UI: b/shell.vue: use b-aboutdialog.shown, add show_about_dialog(), handle close

* Use proper internal state for showing b-aboutdialog
* Expose showing/hiding through show_about_dialog()
* Allow animated closing of b-aboutdialog with start_view_transition

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-16 Tim Janik # 3dbf4e4fdde

UI: b/aboutdialog.js: display Lit version number

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-06 Tim Janik # 0e444f650be

UI: b/aboutdialog.js: port to LitComponent

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-21 Tim Janik # 170bbbd5353

UI: eslintrc.js: declare start_view_transition as global symbol

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-21 Tim Janik # 31dd417c142

UI: index.html: define start_view_transition()

This is a Vue-aware wrapper around document.startViewTransition() (atm Chrome
specific), that still does the right thing on Firefox and has a disable flag.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-16 Tim Janik # 69a4ed3eacc

UI: Makefile.mk: index.html: add lit_version to config_json

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # 61e1ecdf0c8

Merge branch 'dark-palette'

* dark-palette:
  UI: dark.scss, globals.scss: use palette for body colors
  UI: Makefile.mk: add palette.scss to scss files
  UI: palette.scss: add warm grey palette based on ZCAM Jz (lightness) steps

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # fdf7ae821a4

UI: dark.scss, globals.scss: use palette for body colors

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # 47349149558

UI: Makefile.mk: add palette.scss to scss files

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # ed796e145c0

UI: palette.scss: add warm grey palette based on ZCAM Jz (lightness) steps

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # aa3a6b6afef

Merge branch 'modern-normalize'

* modern-normalize:
  UI: little.js: load globals.css into every LitComponent
  UI: index.html: give globals.css precedence over vue-styles.css
  UI: index.html: remvoe shadow.css
  UI: Makefile.mk: remove ui/elements.scss ui/shadow.scss
  Makefile.mk: run 'lint' during `make check`
  UI: remove unused files elements.scss and shadow.scss
  UI: globals.scss: merge styles from elements.scss and shadow.scss
  UI: globals.scss: use normalize.css to normalize latest Chrome & Firefox
  UI: normalize.css: leave font-family setting to our own theme
  MISC: mkcopyright.py: fix MIT License pattern to deal with case and 'd'-ending
  UI: normalize.css: insert MIT License and add Copyright notices
  UI: normalize.css: add renamed modern-normalize.css version 2.0.0
	Add modern-normalize.css from https://github.com/sindresorhus/modern-normalize
	licensed MIT.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # e88e7457df8

UI: little.js: load globals.css into every LitComponent

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # d7e9a3dfdaa

UI: index.html: give globals.css precedence over vue-styles.css

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # 0cae46322ab

UI: index.html: remvoe shadow.css

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # b7cf5319431

UI: Makefile.mk: remove ui/elements.scss ui/shadow.scss

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # de79ea97984

Makefile.mk: run 'lint' during `make check`

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # 058fd2d61a5

UI: remove unused files elements.scss and shadow.scss

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # 273596217e1

UI: globals.scss: merge styles from elements.scss and shadow.scss

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # 13bd840de05

UI: globals.scss: use normalize.css to normalize latest Chrome & Firefox

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # 16c5af36353

UI: normalize.css: leave font-family setting to our own theme

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # ae8122dd61a

MISC: mkcopyright.py: fix MIT License pattern to deal with case and 'd'-ending

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # b32eec14fb3

UI: normalize.css: insert MIT License and add Copyright notices

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # 6bbef85ab43

UI: normalize.css: add renamed modern-normalize.css version 2.0.0

Add modern-normalize.css from https://github.com/sindresorhus/modern-normalize
licensed MIT.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-24 Tim Janik # 7134954717f

Merge branch 'poxystyle'

* poxystyle:
  DOC: poxy.sh: allow doc/poxystyle.css to fixup colors
  DOC: poxystyle.css: fix light theme colors and sizes
  UI: b/cliplist.js: minor edit
  README.md: update roadmap with items from Stefan Westerfeld

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-05 Tim Janik # 80657d970cf

DOC: poxy.sh: allow doc/poxystyle.css to fixup colors

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-05 Tim Janik # 98c61c47c0a

DOC: poxystyle.css: fix light theme colors and sizes

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-16 Tim Janik # f2858225fca

UI: b/cliplist.js: minor edit

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-21 Tim Janik # 13f379fe5f5

README.md: update roadmap with items from Stefan Westerfeld

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-03 Tim Janik # a7ea5f44588

Merge branch 'ts-check-lit-components', add ts-check and fix lint issues

* ts-check-lit-components:
  UI: b/app.js: reload UI on project changes
  UI: b/objecteditor.js: fix output
  UI: util.js: add missing type annotations
  UI: kbd.js: add missing type annotations
  UI: b/trackview.js: add @ts-check and missing type annotations
  UI: b/tracklist.js: add @ts-check and missing properties
  UI: b/playcontrols.js: add @ts-check
  UI: b/pianoroll.js: add @ts-check and missing type annotations
  UI: b/piano-ctrl.js: minor type fix
  UI: b/partlist.js: add @ts-check
  UI: b/more.js: add @ts-check
  UI: b/menutitle.js: add @ts-check
  UI: b/menuseparator.js: add @ts-check
  UI: b/menurow.js: add @ts-check
  UI: b/menuitem.js: add @ts-check
  UI: b/knob.js: add @ts-check and missing type annotations
  UI: b/editable.js: add @ts-check
  UI: b/contextmenu.js: add @ts-check and missing type annotations
  UI: b/clipview.js: add @ts-check and missing type
  UI: b/buttonbar.js: add @ts-check
  README.md: escape FIXME keywords
  UI: Makefile.mk: grep for reminders in ui/lint
  DEVICES: Makefile.mk: grep for reminders in devices/lint
  Makefile.mk: at the end of 'all', grep for reminder keywords in known sources
  Makefile.mk: ls-tree.d needs GITCOMMITDEPS, i.e. misc/config-utils.mk
  ASE: Makefile.mk: grep for reminders in ase/lint
  Makefile.mk: add 'lint' as toplevel phony rule
  UI: b/tracklist.js: cleanup CSS
  UI: b/textinput.js: cleanup CSS
  UI: b/switchinput.js: cleanup CSS
  UI: b/shell.vue: cleanup CSS
  UI: b/positionview.js: cleanup CSS
  UI: b/pianoroll.js: cleanup CSS
  UI: b/noteboard.vue: cleanup CSS
  UI: b/menutitle.js: cleanup CSS
  UI: b/menurow.js: cleanup CSS
  UI: b/menuitem.js: cleanup CSS
  UI: b/knob.js: cleanup CSS
  UI: b/icon.js: cleanup CSS
  UI: b/folderview.vue: cleanup CSS
  UI: b/filedialog.vue: cleanup CSS
  UI: b/editable.js: cleanup CSS
  UI: b/dialog.vue: cleanup CSS
  UI: b/databubble.vue: cleanup CSS
  UI: b/contextmenu.js: cleanup CSS
  UI: b/clipview.js: cleanup CSS
  UI: b/basics.js: inlcude v-flex mixin
  UI: theme.scss: fix color syntax
  UI: startup.js: fix import path
  UI: Makefile.mk: use stylelint with -f unix only inside emacs
  UI: Makefile.mk: add missing ui/spinner.scss dependency
  UI: stylelintrc.cjs: ignore whitespace rules
  UI: Makefile.mk: add Ase.server @type
  UI: mixins.scss: add v-flex mixin
  UI: mixins.scss: use $b-font-stack-kbd-mono
  UI: dark.scss: define $b-font-stack-kbd-mono for hotkey rendering
  UI: b/menubar.js: port to LitComponent
	* Cleanup <b-positionview/> markup
	* Cleanup CSS
  UI: b/positionview.js: port to LitComponent
  UI: b/basics.js: use h-flex()
  UI: mixins.scss: add h-flex() mixin
  MISC: Dockerfile.arch: install unzip

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-03 Tim Janik # 9ccadc2786b

UI: b/app.js: reload UI on project changes

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-03 Tim Janik # 7b7c9d33912

UI: b/objecteditor.js: fix output

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 2a88ba2340e

UI: util.js: add missing type annotations

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # b8d9cba7775

UI: kbd.js: add missing type annotations

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 41e7e224be8

UI: b/trackview.js: add @ts-check and missing type annotations

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # ddd3745b6a7

UI: b/tracklist.js: add @ts-check and missing properties

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 4f3b2262c48

UI: b/playcontrols.js: add @ts-check

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # e51937a2cb6

UI: b/pianoroll.js: add @ts-check and missing type annotations

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 885cc408575

UI: b/piano-ctrl.js: minor type fix

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 50508333cd6

UI: b/partlist.js: add @ts-check

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 8d50f563baa

UI: b/more.js: add @ts-check

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # b8131bc39be

UI: b/menutitle.js: add @ts-check

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # e6e4a6c10bb

UI: b/menuseparator.js: add @ts-check

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 45aba5a85ba

UI: b/menurow.js: add @ts-check

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # a2f8aa8e84f

UI: b/menuitem.js: add @ts-check

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # e8be9a99e81

UI: b/knob.js: add @ts-check and missing type annotations

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 08e9a46e443

UI: b/editable.js: add @ts-check

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # b1944c985c1

UI: b/contextmenu.js: add @ts-check and missing type annotations

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 366c2c79ee4

UI: b/clipview.js: add @ts-check and missing type

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 326826664dd

UI: b/buttonbar.js: add @ts-check

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 687261f53db

README.md: escape FIXME keywords

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # f36e7064566

UI: Makefile.mk: grep for reminders in ui/lint

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 3fd2620174c

DEVICES: Makefile.mk: grep for reminders in devices/lint

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 057b33c0085

Makefile.mk: at the end of 'all', grep for reminder keywords in known sources

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 05d69923bd4

Makefile.mk: ls-tree.d needs GITCOMMITDEPS, i.e. misc/config-utils.mk

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 842de83e14b

ASE: Makefile.mk: grep for reminders in ase/lint

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 0b97aa6cd60

Makefile.mk: add 'lint' as toplevel phony rule

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 94934c0cb1a

UI: b/tracklist.js: cleanup CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # b84c1a88068

UI: b/textinput.js: cleanup CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 4e9243d27c6

UI: b/switchinput.js: cleanup CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # c599a64857d

UI: b/shell.vue: cleanup CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # b3994062ba2

UI: b/positionview.js: cleanup CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 96c51121a49

UI: b/pianoroll.js: cleanup CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # c22a3a9d4bc

UI: b/noteboard.vue: cleanup CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 79f29acef3f

UI: b/menutitle.js: cleanup CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # fb841665b31

UI: b/menurow.js: cleanup CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # b722c77974e

UI: b/menuitem.js: cleanup CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 753ca271cd0

UI: b/knob.js: cleanup CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # a0bcf394e4b

UI: b/icon.js: cleanup CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # d10bcfc1f66

UI: b/folderview.vue: cleanup CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # f1620c4e6f8

UI: b/filedialog.vue: cleanup CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # e8864225fd7

UI: b/editable.js: cleanup CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # d41a6ce8a9b

UI: b/dialog.vue: cleanup CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 0cf9e27176f

UI: b/databubble.vue: cleanup CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 070eadb260c

UI: b/contextmenu.js: cleanup CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # ede36359866

UI: b/clipview.js: cleanup CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # a4542ed4b4c

UI: b/basics.js: inlcude v-flex mixin

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # d66c64af03d

UI: theme.scss: fix color syntax

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # d2a5bc1ef49

UI: startup.js: fix import path

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # b4d7f94993c

UI: Makefile.mk: use stylelint with -f unix only inside emacs

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # ae8240e5da4

UI: Makefile.mk: add missing ui/spinner.scss dependency

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 30ca15c2ab1

UI: stylelintrc.cjs: ignore whitespace rules

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # cf83e8ac686

UI: Makefile.mk: add Ase.server @type

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # dc7d09b5217

UI: mixins.scss: add v-flex mixin

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 89de2048880

UI: mixins.scss: use $b-font-stack-kbd-mono

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-02 Tim Janik # 2b7e207192d

UI: dark.scss: define $b-font-stack-kbd-mono for hotkey rendering

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-01 Tim Janik # ea70787993d

UI: b/menubar.js: port to LitComponent

* Cleanup <b-positionview/> markup
* Cleanup CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-01 Tim Janik # a2f15848158

UI: b/positionview.js: port to LitComponent

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-01 Tim Janik # 2e15e5fd588

UI: b/basics.js: use h-flex()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-07-01 Tim Janik # d82cf775adf

UI: mixins.scss: add h-flex() mixin

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-27 Tim Janik # 88838848240

MISC: Dockerfile.arch: install unzip

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-27 Tim Janik # 2ddfe22e7b2

Merge branch 'inputs-as-litelement'

* inputs-as-litelement:
  X11TEST: play-notes.json: adjust recording for new web components
  ASE: server.cc: listen on "notify" emissions from properties
  ASE: properties.cc: fix notifications, emit notify:identifier
  UI: util.js: turn xprop.value_ into a reactive property
  UI: b/choiceinput.js: take b-objecteditor into account in CSS
  UI: b/pro-input.vue: use @valuechange on b-choiceinput
  UI: b/preferencesdialog.vue: use b-objecteditor
  UI: util.js: avoid extending the same property twice
  UI: util.js: export fullstop()
  UI: Makefile.mk: use tsc with --pretty false only inside emacs
  UI: b/objecteditor.js: port to LitComponent
	* Turn into shadowless component
	* Properly prefix CSS classes
	* Listen on and handle @valuechange events
	* Do not freeze extended properties that we keep mutating
	* Remove old resize blocker logic
  UI: startup.js: load basic custom components early on
  UI: b/basics.js: move h-flex, v-flex, c-grid, push-button here, shadowless
	Make these simple basic containers shadowless, i.e. without shadow root.
  UI: b/pro-input.vue: add support for b-choiceinput
  UI: little.js: export 'nothing' from Lit
  UI: types.d.ts: add debug() global
  UI: b/fed-object.vue: add support for b-choiceinput
  UI: b/choiceinput.js: port to LitComponent, render on demand only
  UI: b/tracklist.js: fix stacking of top border shadow
  UI: b/switchinput.js: allow LEFT/RIGHT/UP/DOWN to toggle
  UI: b/fed-object.vue: add support for b-switchinput
  UI: b/switchinput.js: port to LitComponent
  UI: types.d.ts: declare global CONFIG
  UI: b/fed-object.vue: add support for b-numberinput
  UI: b/numberinput.js: simplify and fix sizing
  UI: b/numberinput.js: port to LitComponent
  UI: b/textinput.js: dispatch value changes as valuechange "event"

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-27 Tim Janik # 6a1f52feca0

X11TEST: play-notes.json: adjust recording for new web components

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-27 Tim Janik # 481005f5283

ASE: server.cc: listen on "notify" emissions from properties

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-27 Tim Janik # 3fb82e7f992

ASE: properties.cc: fix notifications, emit notify:identifier

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-27 Tim Janik # b74a68d390d

UI: util.js: turn xprop.value_ into a reactive property

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-27 Tim Janik # 221b932b807

UI: b/choiceinput.js: take b-objecteditor into account in CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-27 Tim Janik # dba54e6c9e2

UI: b/pro-input.vue: use @valuechange on b-choiceinput

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-27 Tim Janik # 0ddcc1e91b5

UI: b/preferencesdialog.vue: use b-objecteditor

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-27 Tim Janik # 7ce840d9cb6

UI: util.js: avoid extending the same property twice

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-27 Tim Janik # d911103a3fa

UI: util.js: export fullstop()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-27 Tim Janik # 3ead04ab2c2

UI: Makefile.mk: use tsc with --pretty false only inside emacs

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-26 Tim Janik # e5f424b53c2

UI: b/objecteditor.js: port to LitComponent

* Turn into shadowless component
* Properly prefix CSS classes
* Listen on and handle @valuechange events
* Do not freeze extended properties that we keep mutating
* Remove old resize blocker logic

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-25 Tim Janik # 01eed16f577

UI: startup.js: load basic custom components early on

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-25 Tim Janik # c60c2971260

UI: b/basics.js: move h-flex, v-flex, c-grid, push-button here, shadowless

Make these simple basic containers shadowless, i.e. without shadow root.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-25 Tim Janik # 24b4e800206

UI: b/pro-input.vue: add support for b-choiceinput

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-25 Tim Janik # 9f2ee888205

UI: little.js: export 'nothing' from Lit

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-25 Tim Janik # 4159f9a4b0c

UI: types.d.ts: add debug() global

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-25 Tim Janik # 314cb84d0fb

UI: b/fed-object.vue: add support for b-choiceinput

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-25 Tim Janik # 97cd5d4ad53

UI: b/choiceinput.js: port to LitComponent, render on demand only

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-25 Tim Janik # 41cdec83228

UI: b/tracklist.js: fix stacking of top border shadow

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-25 Tim Janik # 7b75984c3cb

UI: b/switchinput.js: allow LEFT/RIGHT/UP/DOWN to toggle

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-24 Tim Janik # 06ae6889657

UI: b/fed-object.vue: add support for b-switchinput

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-24 Tim Janik # 1e7b44906ba

UI: b/switchinput.js: port to LitComponent

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-23 Tim Janik # e77023e348e

UI: types.d.ts: declare global CONFIG

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-23 Tim Janik # adcc49cf5bc

UI: b/fed-object.vue: add support for b-numberinput

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-23 Tim Janik # 76fe2a76e0b

UI: b/numberinput.js: simplify and fix sizing

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-23 Tim Janik # 57a1094f99d

UI: b/numberinput.js: port to LitComponent

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-27 Tim Janik # b3c4c96e163

UI: b/textinput.js: dispatch value changes as valuechange "event"

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-22 Tim Janik # 31da2dde14d

Merge branch 'fix-lit-html'

* fix-lit-html:
  UI: b/*.js: fix trailing-solidus in html`` markup
  UI: eslintrc.js: add plugin:lit/recommended to linting rules
  MISC: package.json.in: install eslint-plugin-lit

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-22 Tim Janik # 69bbf6dfb3e

UI: b/*.js: fix trailing-solidus in html`` markup

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-22 Tim Janik # 4b41f301a62

UI: eslintrc.js: add plugin:lit/recommended to linting rules

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-22 Tim Janik # 9282e8e0c33

MISC: package.json.in: install eslint-plugin-lit

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-22 Tim Janik # 89c9d0114d6

Merge branch 'InterDisplay', based on InterVariable-4.0 font

* InterDisplay:
  UI: dark.scss: add a fallback font stack
  UI: theme.scss: remove outdated font stuff
  UI: mixins.scss: move b-kbd-hotkey here
  UI: elements.scss: use b-font-weight-bold() and b-font-weight-bolder()
  UI: b/*.vue, b/*.js: use b-font-weight-bold() and its variants
  UI: dark.scss: define b-font-weight-{normal|bold|bolder} mixins
  UI: b/menutitle.js: use drop-caps while InterVariable-4.0 small-caps are broken
	See also: https://github.com/rsms/inter/issues/556#issuecomment-1598010623
  UI: elements.scss: leave font handling to theme, globals and shadow
  UI: b/pianoroll.js: use b-canvas-font
  UI: b/partthumb.vue: use b-canvas-font
  UI: b/clipview.js: use b-canvas-font
  UI: shadow.scss: use b-ui-font() inside shadow DOMs
  UI: globals.scss: make use of b-ui-font()
  UI: dark.scss: configure b-ui-font() for "InterVariable" in InterDisplay style
  UI: globals.scss: leave font-face defs to index.html
  UI: index.html: cleanup preloads, add @font-face for "InterVariable"
  UI: b/icon.js: add small comment
  UI: Makefile.mk: download InterVariable.woff2
  UI: stylelintrc.cjs: disable "font-family-name-quotes" to allow quoted font names

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-22 Tim Janik # 34e9761e49b

UI: dark.scss: add a fallback font stack

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-22 Tim Janik # f06611a1abf

UI: theme.scss: remove outdated font stuff

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-22 Tim Janik # 0759afa474e

UI: mixins.scss: move b-kbd-hotkey here

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-22 Tim Janik # 747ed41862c

UI: elements.scss: use b-font-weight-bold() and b-font-weight-bolder()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-22 Tim Janik # 22b8985f656

UI: b/*.vue, b/*.js: use b-font-weight-bold() and its variants

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-22 Tim Janik # ee27d939ebc

UI: dark.scss: define b-font-weight-{normal|bold|bolder} mixins

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-21 Tim Janik # 732ab4756d2

UI: b/menutitle.js: use drop-caps while InterVariable-4.0 small-caps are broken

See also: https://github.com/rsms/inter/issues/556#issuecomment-1598010623

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-20 Tim Janik # 3300e93beb2

UI: elements.scss: leave font handling to theme, globals and shadow

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-20 Tim Janik # 290f583eeed

UI: b/pianoroll.js: use b-canvas-font

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-20 Tim Janik # 78e9afb7587

UI: b/partthumb.vue: use b-canvas-font

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-20 Tim Janik # 997543b6eea

UI: b/clipview.js: use b-canvas-font

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-21 Tim Janik # b56b7d2df0c

UI: shadow.scss: use b-ui-font() inside shadow DOMs

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-20 Tim Janik # 9e99536b06a

UI: globals.scss: make use of b-ui-font()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-20 Tim Janik # 322d886279e

UI: dark.scss: configure b-ui-font() for "InterVariable" in InterDisplay style

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-21 Tim Janik # ecf133d3495

UI: globals.scss: leave font-face defs to index.html

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-21 Tim Janik # c2e9ed3909e

UI: index.html: cleanup preloads, add @font-face for "InterVariable"

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-21 Tim Janik # e1a9791a75c

UI: b/icon.js: add small comment

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-20 Tim Janik # 93d99c295e2

UI: Makefile.mk: download InterVariable.woff2

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-20 Tim Janik # ce23d40a41c

UI: stylelintrc.cjs: disable "font-family-name-quotes" to allow quoted font names

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-21 Tim Janik # 234bf99e99c

Merge branch 'component-styling'

* component-styling:
  UI: b/playcontrols.js: use JsExtract.css_url()
  UI: b/icon.js: use JsExtract.css_url()
  UI: b/textinput.js: make this a shadowless component
  UI: little.js: add JsExtract.css_url()
  UI: little.js: use cast to work around TS2425
  UI: b/playcontrols.js: port to LitComponent
  UI: Makefile.mk: remove temporary file
  UI: b/*.vue: remove useless mixins import
  UI: index.html: import globals.css
  UI: globals.scss: import elements.scss which includes mixins
  UI: Makefile.mk: create globals.css and auto-import mixins.scss for vue styles
  UI: elements.scss: rename from domstyles.scss
  UI: b/button-bar.vue: port to LitComponent
  UI: b/*.js: access only LitComponent fields (not LitElement)
  UI: little.js: remove LitElement export
  UI: startup.js: derive from LitComponent (not LitElement)
  UI: b/*.js: derive from LitComponent (not LitElement)
  UI: b/partlist.js: embed and load CSS via JsExtract
  UI: Makefile.mk: fix dependenc for scss rebuilds
  UI: b/partlist.js: import Util
  UI: types.d.ts: declare __DEV__ global
  UI: b/pianoroll.js: extend LitComponent and use reactive_wrapper to track notes
	Also, merge multiple repaint requests into the same micro task.
  UI: b/clipview.js: leave width to parent
  UI: b/cliplist.js: set 'data-f1' only once suffices
  UI: b/trackview.js: render b-trackview context menu on demand
  UI: b/contextmenu.js: fix close() and synchronize updates
	* await this.updateComplete before showModal()
	* properly emit 'close', take nesting into account
  UI: b/partlist.js: port to LitElement
  UI: mixins.scss: add transparent-scrollbars mixin

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-21 Tim Janik # 7e6ebcd5294

UI: b/playcontrols.js: use JsExtract.css_url()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-21 Tim Janik # fee9f313c35

UI: b/icon.js: use JsExtract.css_url()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-21 Tim Janik # de3d32ca3db

UI: b/textinput.js: make this a shadowless component

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-21 Tim Janik # 8fe013c0e1d

UI: little.js: add JsExtract.css_url()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-21 Tim Janik # 433cd90bfac

UI: little.js: use cast to work around TS2425

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-20 Tim Janik # e8d7c92692e

UI: b/playcontrols.js: port to LitComponent

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-20 Tim Janik # 48e5bdb083f

UI: Makefile.mk: remove temporary file

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-20 Tim Janik # 7a85176b70c

UI: b/*.vue: remove useless mixins import

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-20 Tim Janik # ec362371e53

UI: index.html: import globals.css

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-20 Tim Janik # a3e18687646

UI: globals.scss: import elements.scss which includes mixins

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-20 Tim Janik # 86754b35e0e

UI: Makefile.mk: create globals.css and auto-import mixins.scss for vue styles

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-20 Tim Janik # eb211677e85

UI: elements.scss: rename from domstyles.scss

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-20 Tim Janik # b0da152808a

UI: b/button-bar.vue: port to LitComponent

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-20 Tim Janik # c96793b156d

UI: b/*.js: access only LitComponent fields (not LitElement)

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-20 Tim Janik # fddb3a11520

UI: little.js: remove LitElement export

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-20 Tim Janik # 2c5efdb7a98

UI: startup.js: derive from LitComponent (not LitElement)

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-20 Tim Janik # ed007eb923b

UI: b/*.js: derive from LitComponent (not LitElement)

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-20 Tim Janik # 5a54f07f528

UI: b/partlist.js: embed and load CSS via JsExtract

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-20 Tim Janik # ca6c073f767

UI: Makefile.mk: fix dependenc for scss rebuilds

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-19 Tim Janik # e79767fec25

UI: b/partlist.js: import Util

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-19 Tim Janik # 045ccdf2790

UI: types.d.ts: declare __DEV__ global

Signed-off-by: Tim Janik <timj@gnu.org>

2023-02-20 Tim Janik # a1c295ac575

UI: b/pianoroll.js: extend LitComponent and use reactive_wrapper to track notes

Also, merge multiple repaint requests into the same micro task.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-18 Tim Janik # b5ae56761ed

UI: b/clipview.js: leave width to parent

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-18 Tim Janik # aef1ff8a09c

UI: b/cliplist.js: set 'data-f1' only once suffices

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-18 Tim Janik # 353a31f5d1d

UI: b/trackview.js: render b-trackview context menu on demand

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-17 Tim Janik # a7b0f31f492

UI: b/contextmenu.js: fix close() and synchronize updates

* await this.updateComplete before showModal()
* properly emit 'close', take nesting into account

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-15 Tim Janik # 9114700d6ee

UI: b/partlist.js: port to LitElement

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-18 Tim Janik # 620aa484364

UI: mixins.scss: add transparent-scrollbars mixin

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-18 Tim Janik # 29cc5ffb511

Merge branch 'clang-tidy'

* clang-tidy:
  MISC: mkassets.sh: always use /tmp/anklang-mkassets/ for release builds
  GITHUB: workflows/testing.yml: fix key file permissions
  GITHUB: workflows/testing.yml: fixup permissions at CI end
  GITHUB: workflows/testing.yml: remove missing variable reference
  GITHUB: workflows/testing.yml: fix arch perms and focal redirection
  GITHUB: workflows/testing.yml: use $DOCKER_RUN and ghcr.io for all tasks
	* use $DOCKER_RUN and ghcr.io caching for Focal-Docs
	* adjusting git.safe.directory is not needed for Lunar
	* use $DOCKER_RUN and ghcr.io caching for Arch-Replay
  MISC: Dockerfile.focal: remove unused RUNs, rename user to ubuntu
	* remove unused OOTBUILD, rename builder user to ubuntu
	* add a comment howto build and run this image
	* use fixed user and group id of 1000
  MISC: Dockerfile.arch: use fixed user and group ids of 1000
  MISC: Dockerfile.arch: remove unused OOTBUILD and unused poxy
  MISC: Dockerfile.lunar: remove unused OOTBUILD
  GITHUB: workflows/testing.yml: directly use docker run for lunar and fix perms
  MISC: Dockerfile.lunar: upgrade to nodejs-20
  MISC: package.json.in: upgrade npm build tools and electron-25
  MISC: package.json.in: remove unused rollup-plugin-node-resolve
  MISC: Makefile.mk: fix missing directory dependency
  GITHUB: workflows/testing.yml: add Lunar-Clang-Tidy, rename Focal-Docs
  MISC: Dockerfile.lunar: provide build environment with clang-17 on ubuntu:23.04
  MISC: colorize.sh: colorize error, warning, note and special case Emacs
  MISC: Makefile.mk: reimplement clang-tidy and clang-tidy-clean rules
  Makefile.mk: defined CLANG_TIDY
  Makefile.mk: create ls-tree.d and provide $(LS_TREE_LST)

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-14 Tim Janik # 0c6ee0d170e

MISC: mkassets.sh: always use /tmp/anklang-mkassets/ for release builds

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-14 Tim Janik # 2ef478af0b6

GITHUB: workflows/testing.yml: fix key file permissions

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-14 Tim Janik # 3476b5a4d8d

GITHUB: workflows/testing.yml: fixup permissions at CI end

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-14 Tim Janik # 9055195e23b

GITHUB: workflows/testing.yml: remove missing variable reference

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-14 Tim Janik # 3b9299de1b7

GITHUB: workflows/testing.yml: fix arch perms and focal redirection

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-14 Tim Janik # b3ffd2286d7

GITHUB: workflows/testing.yml: use $DOCKER_RUN and ghcr.io for all tasks

* use $DOCKER_RUN and ghcr.io caching for Focal-Docs
* adjusting git.safe.directory is not needed for Lunar
* use $DOCKER_RUN and ghcr.io caching for Arch-Replay

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-14 Tim Janik # 35a280eeaab

MISC: Dockerfile.focal: remove unused RUNs, rename user to ubuntu

* remove unused OOTBUILD, rename builder user to ubuntu
* add a comment howto build and run this image
* use fixed user and group id of 1000

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-14 Tim Janik # e3f20c6450d

MISC: Dockerfile.arch: use fixed user and group ids of 1000

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-14 Tim Janik # 3920eb8834e

MISC: Dockerfile.arch: remove unused OOTBUILD and unused poxy

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-14 Tim Janik # f3bb3b9138a

MISC: Dockerfile.lunar: remove unused OOTBUILD

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-13 Tim Janik # c7dab2401ad

GITHUB: workflows/testing.yml: directly use docker run for lunar and fix perms

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-13 Tim Janik # edabcd94857

MISC: Dockerfile.lunar: upgrade to nodejs-20

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-13 Tim Janik # 5c44f046247

MISC: package.json.in: upgrade npm build tools and electron-25

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-13 Tim Janik # 3d252c26241

MISC: package.json.in: remove unused rollup-plugin-node-resolve

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-13 Tim Janik # 47d7c27fcb4

MISC: Makefile.mk: fix missing directory dependency

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-13 Tim Janik # cee3e570cb5

GITHUB: workflows/testing.yml: add Lunar-Clang-Tidy, rename Focal-Docs

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-13 Tim Janik # 230144f2b85

MISC: Dockerfile.lunar: provide build environment with clang-17 on ubuntu:23.04

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-13 Tim Janik # 0174a5c3364

MISC: colorize.sh: colorize error, warning, note and special case Emacs

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-13 Tim Janik # c14f89dad40

MISC: Makefile.mk: reimplement clang-tidy and clang-tidy-clean rules

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-13 Tim Janik # 3f16fa015fc

Makefile.mk: defined CLANG_TIDY

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-13 Tim Janik # 1b3dce3b05b

Makefile.mk: create ls-tree.d and provide $(LS_TREE_LST)

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-08 Tim Janik # 7b3b3807780

Merge branch 'sorted-vector'

* sorted-vector:
  ASE: sortnet: implement SortedVector
  ASE: testing.hh: TFLOATS(): assert float equality within an apsilon
  ASE: combo.cc: add SPL link

Signed-off-by: Tim Janik <timj@gnu.org>

2023-02-05 Tim Janik # d4d15a69797

ASE: sortnet: implement SortedVector

Signed-off-by: Tim Janik <timj@gnu.org>

2023-02-08 Tim Janik # 02ec2c7bc0c

ASE: testing.hh: TFLOATS(): assert float equality within an apsilon

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-23 Tim Janik # 8273f3c449b

ASE: combo.cc: add SPL link

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-07 Tim Janik # 1d49d488dc3

Merge branch 'swesterfeld-fix-pcg-ub'

* swesterfeld-fix-pcg-ub:
  ASE: randomhash: fix undefined behaviour in Pcg32Rng
	Left shifting a 32bit value by 32 bits is UB.
* Closes #14

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-29 Stefan Westerfeld # b816b57c71f

ASE: randomhash: fix undefined behaviour in Pcg32Rng

Left shifting a 32bit value by 32 bits is UB.

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>

2023-06-07 Tim Janik # f609e1ec495

Merge branch 'appimage-rpath-fix'

* appimage-rpath-fix:
  MISC: mkAppImage.sh: avoid `linuxdeploy {-e|-l}` which change binary locations
	Avoid `linuxdeploy {-e|-l}`, these options change the binary locations by copying.
	The copies mess up ELF location detection and restoring the original locations
	causes wrong relative $ORIGIN paths. We just use --deploy-deps-only now, which
	keeps the binaries in place and correctly adjusts the relative $ORIGIN path.
  MISC: mkAppImage.sh: remove unused command

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-07 Tim Janik # f0ae8c11193

MISC: mkAppImage.sh: avoid `linuxdeploy {-e|-l}` which change binary locations

Avoid `linuxdeploy {-e|-l}`, these options change the binary locations by copying.
The copies mess up ELF location detection and restoring the original locations
causes wrong relative $ORIGIN paths. We just use --deploy-deps-only now, which
keeps the binaries in place and correctly adjusts the relative $ORIGIN path.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-06 Tim Janik # b106ba3d84f

MISC: mkAppImage.sh: remove unused command

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-06 Tim Janik # 1696a12f5b4

Merge branch 'appimage-dependencies'

* appimage-dependencies:
  MISC: mkAppImage.sh: reduce workarounds by using linuxdeploy --deploy-deps-only
  MISC: mkAppImage.sh: add ELF dependencies for AnklangSynthEngine and gtk2wrap
	This adds libFLAC.so, libogg.so, libopus.so and
	libgdk-x11-2.0.so, libgtk-x11-2.0.so to the AppImage.
	Closes #13.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-06 Tim Janik # 41dc0470ba8

MISC: mkAppImage.sh: reduce workarounds by using linuxdeploy --deploy-deps-only

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-06 Tim Janik # 4d0c085e4fc

MISC: mkAppImage.sh: add ELF dependencies for AnklangSynthEngine and gtk2wrap

This adds libFLAC.so, libogg.so, libopus.so and
libgdk-x11-2.0.so, libgtk-x11-2.0.so to the AppImage.
Closes #13.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-06 Tim Janik # 1b47b9ebaf9

Merge branch 'fix-imports'

* fix-imports:
  UI: util.js: add missing Kbd import
  UI: eslintrc.js: remove 'Util' global
  UI: b/*.vue: add missing Util imports
  UI: b/*.js: add missing Util imports

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-06 Tim Janik # 51b92566a42

UI: util.js: add missing Kbd import

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-06 Tim Janik # 2d5a3d0c435

UI: eslintrc.js: remove 'Util' global

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-06 Tim Janik # 0a29e8b1eeb

UI: b/*.vue: add missing Util imports

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-06 Tim Janik # ffe590b6bf4

UI: b/*.js: add missing Util imports

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-05 Tim Janik # c184b5e247e

Merge branch 'jsdoc-tsimport'

* jsdoc-tsimport:
  UI: b/cliplist.js: jsdoc-tsimport-plugin does not support a blank after import
  DOC: jsdocrc.json: use jsdoc-tsimport-plugin to parse tsc file imports
	* Fix JsDoc choking on typescript import statements that import typed from
	  other JS files.
	* See also: https://github.com/jsdoc/jsdoc/issues/1645#issuecomment-768293857
  MISC: package.json.in: install jsdoc-tsimport-plugin

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-05 Tim Janik # 3474742bf94

UI: b/cliplist.js: jsdoc-tsimport-plugin does not support a blank after import

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-05 Tim Janik # 0632609fc9d

DOC: jsdocrc.json: use jsdoc-tsimport-plugin to parse tsc file imports

* Fix JsDoc choking on typescript import statements that import typed from
  other JS files.
* See also: https://github.com/jsdoc/jsdoc/issues/1645#issuecomment-768293857

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-05 Tim Janik # 2238d9d1fca

MISC: package.json.in: install jsdoc-tsimport-plugin

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-05 Tim Janik # 819895ca3c7

Merge branch 'typescript-jsdoc-checks'

* typescript-jsdoc-checks:
  UI: types.d.ts: allow App, Data, Shell Ase globals
  UI: index.html: add importmap to allow lit module imports
  UI: tsconfig.json: configure typescript checks, allow JS type checks + imports
  UI: wrapper.js: add @param type
  UI: little.js: add @ts-check, add types, add explicit exports for tsc
  UI: b/app.js: add @ts-check and missing property decl
  UI: b/cliplist.js: add @ts-check, missing imports, exports and initializations
  UI: b/clipview.js: export class
  UI: wrapper.js: add @ts-check and type annotations
  UI: b/statusbar.vue: use material icons for info and instrument panel
  UI: b/icon.js: fix material-icons size
  UI: Makefile.mk: add 'tscheck', 'stylelint' and 'lint' rules
	* add 'lint' dependency to run all of stylelint eslint tscheck
	* add 'tscheck' rule to selectively run typescript checks
	* add explicit 'stylelint' rule
	* simplify lit.js rollup
	* ui/vue.js: leave eslint cache alone
	* install material-icons from npm
	* cleanup eslint rule
	* ui/rebuild: avoid bg jobs, no need to print dir in sub MAKE
  MISC: package.json.in: cleanup serve and rebuild scripts
  MISC: package.json.in: remove eslint script, use make eslint instead
  MISC: package.json.in: install material-icons@1.13.6
  Makefile.mk: whitespace fix
  GITHUB: workflows/testing.yml: use git fetch --unshallow
	Apparently `git fetch --shallow-since` does not work with the merge commit
	created by PR checkouts. Using `git fetch --unshallow` might be less efficient
	for regular branches, but at least works with trunk and PRs.
  MISC: package.json.in: upgrade lit, electron, vue, postcss, etc
  UI: b/pianoroll.js: fix indicator interacting with the cursor
  MISC: package.json.in: install typescript to enable code checks

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-21 Tim Janik # 1c10d469755

UI: types.d.ts: allow App, Data, Shell Ase globals

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-23 Tim Janik # e5aa1bed447

UI: index.html: add importmap to allow lit module imports

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-21 Tim Janik # af624ac690d

UI: tsconfig.json: configure typescript checks, allow JS type checks + imports

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-21 Tim Janik # 82fe24f8536

UI: wrapper.js: add @param type

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-21 Tim Janik # d53e4e92147

UI: little.js: add @ts-check, add types, add explicit exports for tsc

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-21 Tim Janik # f0f107ff7ec

UI: b/app.js: add @ts-check and missing property decl

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-21 Tim Janik # fc235bf8cb8

UI: b/cliplist.js: add @ts-check, missing imports, exports and initializations

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-23 Tim Janik # 3818a25e665

UI: b/clipview.js: export class

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-21 Tim Janik # 0232cab9e7f

UI: wrapper.js: add @ts-check and type annotations

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-20 Tim Janik # 8b0bdebc667

UI: b/statusbar.vue: use material icons for info and instrument panel

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-20 Tim Janik # 2b7b1e3c5d6

UI: b/icon.js: fix material-icons size

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-23 Tim Janik # e75f9c71c22

UI: Makefile.mk: add 'tscheck', 'stylelint' and 'lint' rules

* add 'lint' dependency to run all of stylelint eslint tscheck
* add 'tscheck' rule to selectively run typescript checks
* add explicit 'stylelint' rule
* simplify lit.js rollup
* ui/vue.js: leave eslint cache alone
* install material-icons from npm
* cleanup eslint rule
* ui/rebuild: avoid bg jobs, no need to print dir in sub MAKE

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-23 Tim Janik # ea84caf9cf0

MISC: package.json.in: cleanup serve and rebuild scripts

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-23 Tim Janik # e858e54f339

MISC: package.json.in: remove eslint script, use make eslint instead

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-20 Tim Janik # 75ba4af4d2e

MISC: package.json.in: install material-icons@1.13.6

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-21 Tim Janik # 2f2d168491f

Makefile.mk: whitespace fix

Signed-off-by: Tim Janik <timj@gnu.org>

2023-06-05 Tim Janik # eb345f86488

GITHUB: workflows/testing.yml: use git fetch --unshallow

Apparently `git fetch --shallow-since` does not work with the merge commit
created by PR checkouts. Using `git fetch --unshallow` might be less efficient
for regular branches, but at least works with trunk and PRs.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-20 Tim Janik # b37afbf7ca3

MISC: package.json.in: upgrade lit, electron, vue, postcss, etc

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-20 Tim Janik # ef3aa2cdac5

UI: b/pianoroll.js: fix indicator interacting with the cursor

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-20 Tim Janik # 3b112868412

MISC: package.json.in: install typescript to enable code checks

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-20 Tim Janik # 8459bbbd21c

Merge branch 'nightly-version'

* nightly-version:
  MISC: Makefile.mk: update Nightly releases to avoid excessive emails
  MISC: gh_delete_assets.sh: add script to delete all release assets via gh
  README.md: update documentation links
  MISC: version.sh: use 0.1.2.dev3 for development versions for proper ordering
	Using .dev[0-9] postfixes properly sorts: 0.1.2 < 0.1.2.dev3 < 0.1.3
	This works for sort -V, dpkg, rpm and PIP versions.
	See: https://peps.python.org/pep-0440/#public-version-identifiers
  MISC: Makefile.mk: fix typo

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-19 Tim Janik # 422c697a103

MISC: Makefile.mk: update Nightly releases to avoid excessive emails

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-19 Tim Janik # da785776a3d

MISC: gh_delete_assets.sh: add script to delete all release assets via gh

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-19 Tim Janik # 8258d16bd33

README.md: update documentation links

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-19 Tim Janik # a43f4533989

MISC: version.sh: use 0.1.2.dev3 for development versions for proper ordering

Using .dev[0-9] postfixes properly sorts: 0.1.2 < 0.1.2.dev3 < 0.1.3
This works for sort -V, dpkg, rpm and PIP versions.
See: https://peps.python.org/pep-0440/#public-version-identifiers

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-19 Tim Janik # 60f4433aaf8

MISC: Makefile.mk: fix typo

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-19 Tim Janik # 580cf66e8cb

Merge branch 'ci-build-updates'

* ci-build-updates:
  MISC: Makefile.mk: use gh, keed *-dev version number for Nightly releases
	* Use gh instead of hub to create releases
	* Keep the development version number for Nightly releases
	* Add a brief disclaimer about Nightly releases
  MISC: version.sh: simplify, support --commit-date and $RELEASE_VERSION
  GITHUB: workflows/testing.yml: add named step "Fetch last release tag"
  GITHUB: workflows/testing.yml: fetch git history since last release tag
  GITHUB: workflows/testing.yml: update ping deps
  GITHUB: workflows/testing.yml: fix workflow names
  GITHUB: workflows/testing.yml: run (full) docu upload on Ubuntu
  GITHUB: workflows/testing.yml: run X11 tests on Arch
  DOC: poxy.sh: include all Anklang docs in upload
  MISC: Dockerfile.focal: install pip, doxygen and poxy
  MISC: Dockerfile.focal: install twm for x11test
  MISC: Dockerfile.arch: install libgtk3 and libnss for Electron
  MISC: Dockerfile.arch: install xvfb ffmpeg twm for x11test-v
  X11TEST: x11rec.sh: switch to using twm with auto placement
  GITHUB: workflows/testing.yml: use full doc/ install dir as doc artifact
  GITHUB: workflows/testing.yml: test clang builds under Ubuntu
  GITHUB: workflows/testing.yml: remove unused env var from Arch build rule

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-18 Tim Janik # 3319cb97e14

MISC: Makefile.mk: use gh, keed *-dev version number for Nightly releases

* Use gh instead of hub to create releases
* Keep the development version number for Nightly releases
* Add a brief disclaimer about Nightly releases

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-19 Tim Janik # cda3bc08bb5

MISC: version.sh: simplify, support --commit-date and $RELEASE_VERSION

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-19 Tim Janik # c1af95d160e

GITHUB: workflows/testing.yml: add named step "Fetch last release tag"

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-19 Tim Janik # dc974125852

GITHUB: workflows/testing.yml: fetch git history since last release tag

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-18 Tim Janik # 8ce1904eac8

GITHUB: workflows/testing.yml: update ping deps

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-18 Tim Janik # 2d05f7f5b72

GITHUB: workflows/testing.yml: fix workflow names

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-18 Tim Janik # 472499ae9aa

GITHUB: workflows/testing.yml: run (full) docu upload on Ubuntu

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-18 Tim Janik # 52053917c19

GITHUB: workflows/testing.yml: run X11 tests on Arch

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-18 Tim Janik # 3f469f06b1f

DOC: poxy.sh: include all Anklang docs in upload

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-18 Tim Janik # 7e3b264f1e5

MISC: Dockerfile.focal: install pip, doxygen and poxy

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-18 Tim Janik # f2a24f40bdb

MISC: Dockerfile.focal: install twm for x11test

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-18 Tim Janik # 8d5dd270c39

MISC: Dockerfile.arch: install libgtk3 and libnss for Electron

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-18 Tim Janik # 976664c6807

MISC: Dockerfile.arch: install xvfb ffmpeg twm for x11test-v

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-18 Tim Janik # 0a1af1504d4

X11TEST: x11rec.sh: switch to using twm with auto placement

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-17 Tim Janik # ffc2450ae70

GITHUB: workflows/testing.yml: use full doc/ install dir as doc artifact

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-17 Tim Janik # 66c5ca99952

GITHUB: workflows/testing.yml: test clang builds under Ubuntu

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-17 Tim Janik # bc58c7bcb79

GITHUB: workflows/testing.yml: remove unused env var from Arch build rule

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-17 Tim Janik # 8404380bca9

Merge branch 'g++-fixes'

* g++-fixes:
  ASE: cxxaux.hh: fix internal member typedef name
  ASE: cxxaux.hh: use std::conditional_t<> for rebind::other, fix for g++-12
	With template specializations, g++-11 and g++-12 error out with "explicit
	specialization in non-namespace scope", so we use std::conditional_t<> which
	seems to work with g++-12 and clnag++-15.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-17 Tim Janik # 43f9e6000b6

ASE: cxxaux.hh: fix internal member typedef name

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-17 Tim Janik # b3597e1840b

ASE: cxxaux.hh: use std::conditional_t<> for rebind::other, fix for g++-12

With template specializations, g++-11 and g++-12 error out with "explicit
specialization in non-namespace scope", so we use std::conditional_t<> which
seems to work with g++-12 and clnag++-15.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-17 Tim Janik # c0f01a01f3b

Merge branch 'libstdc++-13'

* libstdc++-13:
  ASE: cxxaux.hh: patch up make_shared() to make libstdc++13 happy
	* Move shared ptr allocator out of function scope (to allow template specialization)
	* Add rebind<> template to shared ptr allocator which derives from std::allocator
	* Specialize rebind<> so it yields the same allocator for only the shared ptr
	  value type
	* This "fixes" two static assertions that were added in libstdc++13, see:
	  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72792#c12
  ASE: cxxaux.hh: remove unused FriendAllocator<>
  ASE: cxxaux.hh: fix missing <string> include
  ASE: loop.hh: always use ASE_DEFINE_MAKE_SHARED() to implement make_shared()
  ASE: formatter.hh: include cstdint for int32_t
  ASE: clapplugin.cc: add missing braces for clap_event_transport_t initializer
  UI: wrapper.js: add missing Util import
  Makefile.mk: add simple rule to generate +compile_commands.json

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-16 Tim Janik # 869b2db1700

ASE: cxxaux.hh: patch up make_shared() to make libstdc++13 happy

* Move shared ptr allocator out of function scope (to allow template specialization)
* Add rebind<> template to shared ptr allocator which derives from std::allocator
* Specialize rebind<> so it yields the same allocator for only the shared ptr
  value type
* This "fixes" two static assertions that were added in libstdc++13, see:
  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72792#c12

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-16 Tim Janik # b84fac7de22

ASE: cxxaux.hh: remove unused FriendAllocator<>

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-16 Tim Janik # d21292fb01a

ASE: cxxaux.hh: fix missing <string> include

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-16 Tim Janik # 45968a57d67

ASE: loop.hh: always use ASE_DEFINE_MAKE_SHARED() to implement make_shared()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-16 Tim Janik # 322e1d61383

ASE: formatter.hh: include cstdint for int32_t

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-16 Tim Janik # c1bf69cdea5

ASE: clapplugin.cc: add missing braces for clap_event_transport_t initializer

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-11 Tim Janik # 99a6b6904e9

UI: wrapper.js: add missing Util import

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-11 Tim Janik # 0a7cb044686

Makefile.mk: add simple rule to generate +compile_commands.json

Signed-off-by: Tim Janik <timj@gnu.org>

2023-05-12 Tim Janik # 3819f90de19

Merge branch 'transportinfo', closes #5

* transportinfo:
  ASE: clapplugin: provide transport information for the plugin
  MISC: config-uname.mk: link -shared: allow undefined symbols with sanitizers

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-25 Stefan Westerfeld # 9a2e6d6d4d2

ASE: clapplugin: provide transport information for the plugin

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>

2023-02-06 Tim Janik # 35fec9e8898

MISC: config-uname.mk: link -shared: allow undefined symbols with sanitizers

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-15 Tim Janik # 54353a77847

Merge branch 'build-time-postcss'

* build-time-postcss:
  UI: split styles into dark, grid, domstyles, mixins, shadow, globals SCSS files
	globals.scss: styles for the LightDOM only
	shadow.scss: styles only for ShadowDOM components
	domstyles.scss: common styles for the LightDOM and ShadowDOM
	grid.scss: provide <grid/> helpers
	mixins.scss: base to customize components
	dark.scss: basic theme, allow switching via import $themename_scss;
	cursors/cursors.css: provide CSS variables for custom cursors
  UI: cursors/cursors.css: fix quotes
  UI: cursors/cursors.css: introduce --svg-cursor-* variables at :root{} scope
	This is needed to make cursors.css actualy valid CSS.
  UI: index.html: remove postfix and css validator, load vue-styles.css, fix preloads
  UI: b/clipview.js: use zcam directly
  UI: b/*.js: embed and load CSS via JsExtract
  UI: b/positionview.vue: use $b-lcdscreen-fg, $b-lcdscreen-bg
  UI: b/: fix $b-button-radius $b-button-radius $b-track-meter-gap $b-track-meter-thickness
  UI: b/pianoroll.js: import grid.scss
  UI: b/positionview.vue: use t-lcdscreen-fg, t-lcdscreen-bg
  UI: b/trackview.js: add --track-meter-thickness, --track-meter-gap
  UI: b/*.vue: use --button-radius
  UI: b/*.js: use --button-radius
  UI: b/*.js: use var(--button-radius);
  UI: b/*.vue: use var(--button-radius);
  UI: b/deviceeditor.vue, b/pro-group.vue: use --device-radius
  UI: b/shell.vue: remove unused styles
  UI: b/pianoroll.js: remove useless color assignment
  UI: b/textinput.js: include mixins.scss to use SCSS variable
  UI: b/menuseparator.js: include mixins.scss to use SCSS variable
  UI: b/*.js: extend componenets from LitComponent instead of LitElement
  UI: b/dialog.vue: inline box-shadow styling
  UI: b/pianoroll.js: import grid helpers from grid.css
  UI: b/menubar.vue: specify 'justify-content: space-between' directly
  UI: b/pianoroll.js: rely on global cursors.css import
  UI: startup.js: remove unused postcss import
  UI: jsextract.js: document jsextract.js usage
  UI: jsextract.js: extract JsExtract.scss`` marker snippets into *.jscss files
  UI: little.js: document JsExtract usage
  UI: little.js: fix .css URL construction to always have an extension
  UI: little.js: load <link rel=stylesheet href=shadow.css> into shadow roots
  UI: little.js: add ./shadow.css to LitComponent
  UI: little.js: remove postcss
  UI: little.js: export JsExtract with scss`` and fetch_css()
  UI: little.js: add default define $themename_scss:dark.scss;
	Also, disable csstree-validator which yields outdated warnings.
  UI: little.js: load shadow.scss into all LitComponent elements
  UI: little.js: LitComponent: always adopt shadow.css in createRenderRoot()
  UI: little.js: CSS import: remove premature fetch + caching, always import all
  UI: little.js: remove cursors/cursors.css from memorized imports
  MISC: package.json.in: add stylelint
  MISC: package.json.in: remove perfectionist-dfd
  UI: sfc-compile.js: extract *.vuecss files
  UI: Makefile.mk: remove csstree-validator and postcss browserify bundling
  UI: Makefile.mk: run stylelint from output dir
  UI: stylelintrc.cjs: add stylelint config
  UI: Makefile.mk: extract, process and run stylelint on *.jscss files
  UI: Makefile.mk: process *.vuecss files
  UI: Makefile.mk: run stylelint on processed styles
  UI: Makefile.mk: generate vue-styles.css
  UI: Makefile.mk: remove Vue css rules
  UI: Makefile.mk: take quoted cursor urls into account
  UI: Makefile.mk: move theming into ui/dark.scss, build .css from .scss
  UI: Makefile.mk: use postcss.js with --map and -i
  UI: Makefile.mk: fix install pattern for ui/b/
  UI: postcss.js: support stdout output
  UI: postcss.js: fix exit code by re-throwing errors
  UI: postcss.js: add -Dvar=value for predefined variables
  UI: postcss.js: add -C <working-dir> to find imports
  UI: postcss.js: directly print PostCSS exceptions to provide useful stacktraces
  UI: postcss.js: support fetching imports from network
  UI: postcss.js: remove perfectionist-dfd, auto-import *.scss unless -i is given
  UI: postcss.js: add zlerp() CSS function
  UI: postcss.js: add zmod4() CSS function
  UI: postcss.js: make source map configurable
  UI: colors.js: add zlerp() for color interpolation
  UI: colors.js: fix missing ZCAM attributes
  UI: colors.js: add zmod4() to debug ZCAM attributes for colors
  UI: colors.js: support missing first zmod() color argument
  DOC: jsdoc2md.js: fix @file docu being ignored in some cases
  DOC: jsdoc2md.js: add anchor to constants
  ASE: websocket.cc: allow caching of duplicate requests within 1 second

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # 87f0ac96ba1

UI: split styles into dark, grid, domstyles, mixins, shadow, globals SCSS files

globals.scss: styles for the LightDOM only
shadow.scss: styles only for ShadowDOM components
domstyles.scss: common styles for the LightDOM and ShadowDOM
grid.scss: provide <grid/> helpers
mixins.scss: base to customize components
dark.scss: basic theme, allow switching via import $themename_scss;
cursors/cursors.css: provide CSS variables for custom cursors

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-10 Tim Janik # bab03578f1e

UI: cursors/cursors.css: fix quotes

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # 36206835110

UI: cursors/cursors.css: introduce --svg-cursor-* variables at :root{} scope

This is needed to make cursors.css actualy valid CSS.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # 9fdba16a2c8

UI: index.html: remove postfix and css validator, load vue-styles.css, fix preloads

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-11 Tim Janik # 45077bab40d

UI: b/clipview.js: use zcam directly

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-12 Tim Janik # b8e041d7e72

UI: b/*.js: embed and load CSS via JsExtract

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-11 Tim Janik # a132b29ec22

UI: b/positionview.vue: use $b-lcdscreen-fg, $b-lcdscreen-bg

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-10 Tim Janik # 8e585f06dc3

UI: b/: fix $b-button-radius $b-button-radius $b-track-meter-gap $b-track-meter-thickness

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-10 Tim Janik # 56ea9df5982

UI: b/pianoroll.js: import grid.scss

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-09 Tim Janik # 96ca0152750

UI: b/positionview.vue: use t-lcdscreen-fg, t-lcdscreen-bg

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-09 Tim Janik # ce37b44ecfe

UI: b/trackview.js: add --track-meter-thickness, --track-meter-gap

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-09 Tim Janik # 163e9ae31c1

UI: b/*.vue: use --button-radius

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-09 Tim Janik # 25745139c1b

UI: b/*.js: use --button-radius

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-09 Tim Janik # 9e17acac2b4

UI: b/*.js: use var(--button-radius);

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-09 Tim Janik # cb34d9453fe

UI: b/*.vue: use var(--button-radius);

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # 16e6e4cdb42

UI: b/deviceeditor.vue, b/pro-group.vue: use --device-radius

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # 5573be91c36

UI: b/shell.vue: remove unused styles

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # f6679b29b2f

UI: b/pianoroll.js: remove useless color assignment

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # 1fc55ff022e

UI: b/textinput.js: include mixins.scss to use SCSS variable

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # 3e5d9f60953

UI: b/menuseparator.js: include mixins.scss to use SCSS variable

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # 8a93e44c751

UI: b/*.js: extend componenets from LitComponent instead of LitElement

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # 616f298d02c

UI: b/dialog.vue: inline box-shadow styling

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # 9d07a671200

UI: b/pianoroll.js: import grid helpers from grid.css

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # 79949a4b836

UI: b/menubar.vue: specify 'justify-content: space-between' directly

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # ee2d9527454

UI: b/pianoroll.js: rely on global cursors.css import

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-11 Tim Janik # 052a25497d5

UI: startup.js: remove unused postcss import

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-13 Tim Janik # be27b7c5730

UI: jsextract.js: document jsextract.js usage

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-11 Tim Janik # 7ddf779f58b

UI: jsextract.js: extract JsExtract.scss`` marker snippets into *.jscss files

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-13 Tim Janik # 81643f036e7

UI: little.js: document JsExtract usage

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-13 Tim Janik # cce600c3cb2

UI: little.js: fix .css URL construction to always have an extension

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-11 Tim Janik # 9f347365822

UI: little.js: load <link rel=stylesheet href=shadow.css> into shadow roots

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-11 Tim Janik # c75e5b43664

UI: little.js: add ./shadow.css to LitComponent

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-12 Tim Janik # 61dd2d5cf0c

UI: little.js: remove postcss

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-11 Tim Janik # 52438fd7879

UI: little.js: export JsExtract with scss`` and fetch_css()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-10 Tim Janik # 2d279bff1c0

UI: little.js: add default define $themename_scss:dark.scss;

Also, disable csstree-validator which yields outdated warnings.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-10 Tim Janik # 55f1822d510

UI: little.js: load shadow.scss into all LitComponent elements

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # bc0d80f1032

UI: little.js: LitComponent: always adopt shadow.css in createRenderRoot()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # cbbeedbdea8

UI: little.js: CSS import: remove premature fetch + caching, always import all

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # 5c20d03c956

UI: little.js: remove cursors/cursors.css from memorized imports

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-10 Tim Janik # 4153810ccd0

MISC: package.json.in: add stylelint

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-10 Tim Janik # 793f6641533

MISC: package.json.in: remove perfectionist-dfd

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-11 Tim Janik # 3465de3f4bc

UI: sfc-compile.js: extract *.vuecss files

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-11 Tim Janik # b83a578cce5

UI: Makefile.mk: remove csstree-validator and postcss browserify bundling

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-11 Tim Janik # 328cbef1d99

UI: Makefile.mk: run stylelint from output dir

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-10 Tim Janik # c853e9f8f9e

UI: stylelintrc.cjs: add stylelint config

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-11 Tim Janik # 18372f9acea

UI: Makefile.mk: extract, process and run stylelint on *.jscss files

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-11 Tim Janik # ccc2cb5921a

UI: Makefile.mk: process *.vuecss files

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-10 Tim Janik # 8ce1002b8a0

UI: Makefile.mk: run stylelint on processed styles

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-10 Tim Janik # edf5a7869cd

UI: Makefile.mk: generate vue-styles.css

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-10 Tim Janik # 6799095c726

UI: Makefile.mk: remove Vue css rules

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-10 Tim Janik # aa2b1b7b31d

UI: Makefile.mk: take quoted cursor urls into account

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # ffb6ab4af00

UI: Makefile.mk: move theming into ui/dark.scss, build .css from .scss

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-07 Tim Janik # 9b1d0be5714

UI: Makefile.mk: use postcss.js with --map and -i

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-11 Tim Janik # ae367420547

UI: Makefile.mk: fix install pattern for ui/b/

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-12 Tim Janik # 0df9528b09e

UI: postcss.js: support stdout output

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-10 Tim Janik # cc6556f8545

UI: postcss.js: fix exit code by re-throwing errors

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-09 Tim Janik # 63d5e0f0f2d

UI: postcss.js: add -Dvar=value for predefined variables

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-09 Tim Janik # 2a2440a2606

UI: postcss.js: add -C <working-dir> to find imports

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # 2a0a362b964

UI: postcss.js: directly print PostCSS exceptions to provide useful stacktraces

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # 98ffe357b4e

UI: postcss.js: support fetching imports from network

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # 6f9d4ad03d7

UI: postcss.js: remove perfectionist-dfd, auto-import *.scss unless -i is given

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # d64ab2f3bc0

UI: postcss.js: add zlerp() CSS function

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # b57685f533b

UI: postcss.js: add zmod4() CSS function

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-07 Tim Janik # b0660c2b5af

UI: postcss.js: make source map configurable

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # 59cc926fa12

UI: colors.js: add zlerp() for color interpolation

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # 63c52192ecc

UI: colors.js: fix missing ZCAM attributes

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # 150cdfcaa3b

UI: colors.js: add zmod4() to debug ZCAM attributes for colors

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # fa1b8e9ed8f

UI: colors.js: support missing first zmod() color argument

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-13 Tim Janik # 4f3638967da

DOC: jsdoc2md.js: fix @file docu being ignored in some cases

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-12 Tim Janik # 92171d5e8a3

DOC: jsdoc2md.js: add anchor to constants

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # b0f1f9ee0e1

ASE: websocket.cc: allow caching of duplicate requests within 1 second

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-08 Tim Janik # 6f6d3be160c

Merge branch 'reactive-render'

* reactive-render:
  UI: startup.js: rerender all LitElements and known Vue components on resize
  UI: little.js: export LitComponent, which has reactive render() and updated()
  UI: little.js: add lit_update_all()
  UI: wrapper.js: improve error message for missing getters
  UI: wrapper.js: support reactive_wrapper() callbacks for wrap_ase_object() fields
  UI: wrapper.js: implement define_reactive() and reactive_wrapper()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-02-15 Tim Janik # f5586337cb5

UI: startup.js: rerender all LitElements and known Vue components on resize

Signed-off-by: Tim Janik <timj@gnu.org>

2023-02-20 Tim Janik # 30b93528ade

UI: little.js: export LitComponent, which has reactive render() and updated()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-02-15 Tim Janik # 685764d1225

UI: little.js: add lit_update_all()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-07 Tim Janik # 3d0df2434f2

UI: wrapper.js: improve error message for missing getters

Signed-off-by: Tim Janik <timj@gnu.org>

2023-02-19 Tim Janik # 86c78a58c70

UI: wrapper.js: support reactive_wrapper() callbacks for wrap_ase_object() fields

Signed-off-by: Tim Janik <timj@gnu.org>

2023-02-07 Tim Janik # 9bb10d1d274

UI: wrapper.js: implement define_reactive() and reactive_wrapper()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-05 Tim Janik # dc2f6401438

Merge branch 'jsdoc-search'

* jsdoc-search:
  DOC: poxy.sh: ignore case during search
  UI: util.js: add PointerDrag comment
  DOC: poxy.sh: extend searchdata-v2.js with token list from JS docs
  DOC: poxy.sh: avoid fake 'Export' prefix for JS symbols
  DOC: jsdoc2md.js: use <a/> for anchors, add data-4search to anchors
	The old empty span anchors could be removed by some HTML processors.
  DOC: poxy.sh: jsdoc2md will now directly generate markdown from JS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-05 Tim Janik # 2283caed938

DOC: poxy.sh: ignore case during search

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-05 Tim Janik # 8c2b0be44df

UI: util.js: add PointerDrag comment

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-05 Tim Janik # 308e6784b5e

DOC: poxy.sh: extend searchdata-v2.js with token list from JS docs

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-05 Tim Janik # 893a7780254

DOC: poxy.sh: avoid fake 'Export' prefix for JS symbols

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-05 Tim Janik # 168392065d6

DOC: jsdoc2md.js: use <a/> for anchors, add data-4search to anchors

The old empty span anchors could be removed by some HTML processors.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-03 Tim Janik # 2db150b1c2f

DOC: poxy.sh: jsdoc2md will now directly generate markdown from JS

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-03 Tim Janik # 63bd26e08e8

Merge branch 'api-docs'

* api-docs:
  GITHUB: workflows/testing.yml: rename CI jobs
  GITHUB: workflows/testing.yml: add step to build and upload API docs
  MISC: Dockerfile.arch: provide doxygen openssh and poxy via pip
  MISC: Dockerfile.arch: first update archlinux-keyring
	This works around an outdated keyring in the archlinux:latest docker image.
  MISC: dbuild.sh: add support for the docker -p <PORTS> option
  DOC: poxy.sh: setup AUTHOR/COMITTER EMAIL/NAME, GIT_SSH_COMMAND for uploads
  DOC: poxy.sh: provide NODE_PATH
  DOC: poxy.sh: add program doc/ dir to documentation output
  DOC: poxy.sh: add README as main index page
  DOC: poxy.sh: add project version to docs
  DOC: poxy.sh: upload to the `publish` branch
  DOC: poxy.sh: support conditional builds
  DOC: poxy.sh: move build commands into poxy_build function
  DOC: poxy.sh: add -u for upload
  DOC: poxy.sh: support accesskey="f" for Search
  DOC: poxy.sh: support -s to serve html/ contents
  DOC: poxy.sh: add NEWS.md
  DOC: poxy.sh: add ch-scripting.md to UI docs
  DOC: poxy.sh: generate API reference documentation with Poxy
  UI: Makefile.mk: remove rules to build JS docs
  DOC: Makefile.mk: build scripting docs from ui/host.js and ch-scripting.md
  DOC: copyright.ini: fix doc/jsdocrc.json path
  DOC: ch-scripting.md: move here from ui/
  DOC: jsdoc2md.js: generate markdown from *.js via jsdoc-api
  DOC: jsdocrc.json: configure JsDoc to use doc/jsdoc-slashes.js
  DOC: jsdoc-slashes.js: move here from ui/slashcomment.js
  DOC: jsdoc2md.js: guard aganst doclets with non-string name
	I.e. doclet.meta.code.name can be an Integer.
  MISC: package.json.in: add jsdoc-api
  UI: b/shell.vue: add basic docs
  ASE: testing.hh: document Test namespace
  ASE: api.hh: add docu comment to Ase namespace
  README.md: fix github workflow badge URL

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-03 Tim Janik # 11b1028f17e

GITHUB: workflows/testing.yml: rename CI jobs

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-03 Tim Janik # 489355747e7

GITHUB: workflows/testing.yml: add step to build and upload API docs

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-03 Tim Janik # 4c276e336af

MISC: Dockerfile.arch: provide doxygen openssh and poxy via pip

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-03 Tim Janik # 2220047ce35

MISC: Dockerfile.arch: first update archlinux-keyring

This works around an outdated keyring in the archlinux:latest docker image.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-03 Tim Janik # d5d3acc0b1d

MISC: dbuild.sh: add support for the docker -p <PORTS> option

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-03 Tim Janik # 64d95784653

DOC: poxy.sh: setup AUTHOR/COMITTER EMAIL/NAME, GIT_SSH_COMMAND for uploads

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-02 Tim Janik # 3ea9a136889

DOC: poxy.sh: provide NODE_PATH

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-02 Tim Janik # f1b71676288

DOC: poxy.sh: add program doc/ dir to documentation output

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-02 Tim Janik # 1598bd2f32b

DOC: poxy.sh: add README as main index page

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-02 Tim Janik # 6b909b22cb3

DOC: poxy.sh: add project version to docs

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-02 Tim Janik # 80811639d26

DOC: poxy.sh: upload to the `publish` branch

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-02 Tim Janik # 9080c871902

DOC: poxy.sh: support conditional builds

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-02 Tim Janik # 99d24aeb458

DOC: poxy.sh: move build commands into poxy_build function

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-02 Tim Janik # a04b3ff97d3

DOC: poxy.sh: add -u for upload

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-01 Tim Janik # c4560ee77b8

DOC: poxy.sh: support accesskey="f" for Search

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-01 Tim Janik # 51054e5c80e

DOC: poxy.sh: support -s to serve html/ contents

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-01 Tim Janik # 408895c551c

DOC: poxy.sh: add NEWS.md

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-01 Tim Janik # 8f50c244845

DOC: poxy.sh: add ch-scripting.md to UI docs

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-01 Tim Janik # 399b548b194

DOC: poxy.sh: generate API reference documentation with Poxy

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-02 Tim Janik # 98517e0ccd1

UI: Makefile.mk: remove rules to build JS docs

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-02 Tim Janik # 7b38ae37a9a

DOC: Makefile.mk: build scripting docs from ui/host.js and ch-scripting.md

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-03 Tim Janik # 831175a8190

DOC: copyright.ini: fix doc/jsdocrc.json path

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-01 Tim Janik # 2c3983df6f0

DOC: ch-scripting.md: move here from ui/

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-02 Tim Janik # c7337194b1b

DOC: jsdoc2md.js: generate markdown from *.js via jsdoc-api

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-02 Tim Janik # aa1bd331eea

DOC: jsdocrc.json: configure JsDoc to use doc/jsdoc-slashes.js

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-02 Tim Janik # 06d86c73e3a

DOC: jsdoc-slashes.js: move here from ui/slashcomment.js

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-01 Tim Janik # 6dae0105e90

DOC: jsdoc2md.js: guard aganst doclets with non-string name

I.e. doclet.meta.code.name can be an Integer.

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-02 Tim Janik # 14dc3b51cd0

MISC: package.json.in: add jsdoc-api

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-01 Tim Janik # 9f27dbff4a8

UI: b/shell.vue: add basic docs

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-01 Tim Janik # 7325c07a749

ASE: testing.hh: document Test namespace

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-01 Tim Janik # da7c4b82f0a

ASE: api.hh: add docu comment to Ase namespace

Signed-off-by: Tim Janik <timj@gnu.org>

2023-03-02 Tim Janik # 0ccb32280fa

README.md: fix github workflow badge URL

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-10 Tim Janik # 3e64716fc0b

Merge branch 'lit-tracklist'

* lit-tracklist:
  UI: b/tracklist.js: hide HEADER and FOOTER
  UI: b/tracklist.js: add scrollshadow at the top
  UI: theme.scss: remove fragile parts of scrollbar styling
  UI: b/tracklist.js: fix layout for few tracks
  UI: b/tracklist.js: support x/y scrolling
  UI: b/cliplist.js: clipview children must not shrink
  UI: b/tracklist.js: port <b-tracklist/> to LitElement
  UI: b/trackview.js: increase width of level meters
  UI: b/clipview.js: use track.$id for colorization
  UI: b/cliplist.js: fix setting of b-clipview.track property
  UI: b/app.js: provide App.project
  ASE: object.cc: skip notifications for objects without shared_ptr
  ASE: api.hh: rename and notify Project.all_tracks() (former list_tracks)

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-10 Tim Janik # 1235e756b8c

UI: b/tracklist.js: hide HEADER and FOOTER

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-10 Tim Janik # 7ee9c2024b8

UI: b/tracklist.js: add scrollshadow at the top

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-10 Tim Janik # 24cc795de10

UI: theme.scss: remove fragile parts of scrollbar styling

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-09 Tim Janik # 98d7fa9bddd

UI: b/tracklist.js: fix layout for few tracks

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-09 Tim Janik # fde90a0b7d5

UI: b/tracklist.js: support x/y scrolling

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-09 Tim Janik # 3c981a559d3

UI: b/cliplist.js: clipview children must not shrink

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-08 Tim Janik # 7782f0c8fd0

UI: b/tracklist.js: port <b-tracklist/> to LitElement

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-09 Tim Janik # 8b7af737041

UI: b/trackview.js: increase width of level meters

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-09 Tim Janik # 20d7786c797

UI: b/clipview.js: use track.$id for colorization

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-08 Tim Janik # 91a508be909

UI: b/cliplist.js: fix setting of b-clipview.track property

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-08 Tim Janik # b23598b41f8

UI: b/app.js: provide App.project

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-08 Tim Janik # 9ff4d9598c7

ASE: object.cc: skip notifications for objects without shared_ptr

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-08 Tim Janik # 69e2c656e8e

ASE: api.hh: rename and notify Project.all_tracks() (former list_tracks)

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-08 Tim Janik # 529af30208a

Merge branch 'lit-trackview'

* lit-trackview:
  UI: b/trackview.js: render sound level meter from telemetry
  UI: b/cliplist.js: minor formatting
  ASE: track.cc: add dbspl0 and dbspl1 to telemetry
  ASE: combo: add sound level probing in dB to AudioChain
  ASE: datautils: add square_max()
  ASE: midilib.cc: reserve space to avoid malloc
  ASE: datautils: add square_sum() for FPU floats
  ASE: cxxaux.hh: add ASE_ALIGNED16() and ALIGNMENT16()
  UI: b/app.js: maintain App.current_track, notify <b-trackview/> accordingly
  ASE: track: support midi_channel changes
  UI: b/*.js: fix ${ref} syntax
  UI: b/trackview.js: port <b-trackview/> to LitElement

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-07 Tim Janik # 39be2379aaf

UI: b/trackview.js: render sound level meter from telemetry

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-07 Tim Janik # a8cddf7aaad

UI: b/cliplist.js: minor formatting

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-07 Tim Janik # 596ef0c3ccc

ASE: track.cc: add dbspl0 and dbspl1 to telemetry

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-07 Tim Janik # 965eff82054

ASE: combo: add sound level probing in dB to AudioChain

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-07 Tim Janik # 1233ade6143

ASE: datautils: add square_max()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-07 Tim Janik # 24eb9de22e8

ASE: midilib.cc: reserve space to avoid malloc

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-07 Tim Janik # 1626260fa4a

ASE: datautils: add square_sum() for FPU floats

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-07 Tim Janik # 09653a7eeca

ASE: cxxaux.hh: add ASE_ALIGNED16() and ALIGNMENT16()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-06 Tim Janik # e7e625ef207

UI: b/app.js: maintain App.current_track, notify <b-trackview/> accordingly

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-06 Tim Janik # 5409ef9b627

ASE: track: support midi_channel changes

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-06 Tim Janik # 82bf641c103

UI: b/*.js: fix ${ref} syntax

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-06 Tim Janik # e2a8b22c5b8

UI: b/trackview.js: port <b-trackview/> to LitElement

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-08 Tim Janik # b1b949d98c6

Merge branch 'lit-editable'

* lit-editable:
  UI: b/trackview.vue: adjust b-editable use
  UI: b/positionview.vue: adjust property editing
  ASE: project.cc: add missing notifications
  UI: b/editable.js: port <b-editable/> to LitElement

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-06 Tim Janik # 2fbb3fa0307

UI: b/trackview.vue: adjust b-editable use

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-06 Tim Janik # 744d7788bc9

UI: b/positionview.vue: adjust property editing

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-06 Tim Janik # 41397b2bc90

ASE: project.cc: add missing notifications

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-06 Tim Janik # abd97d8e861

UI: b/editable.js: port <b-editable/> to LitElement

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-07 Tim Janik # 27242835b05

Merge branch 'lit-cliplist'

* lit-cliplist:
  UI: b/partlist.vue: disable old code
  DOC: Makefile.mk: add docs from b/cliplist.md
  ASE: api.hh: rename Track.launcher_clips() and ass 'notify:launcher_clips'
  UI: b/statusbar.vue: use Util.find_element_from_point()
  UI: b/shell.vue: determine F1 anchor from find_element_from_point()
  UI: util.js: add find_element_from_point(), supporting shadow DOMs
  UI: b/clipview.js: fix properties
  UI: b/cliplist.js: support F1 help for ClipList
  UI: b/cliplist.js: port to LitElement
  UI: b/app.js: add App.zmove_last()
  UI: b/pianoroll.js: minor rename

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-06 Tim Janik # de7d5e37fa5

UI: b/partlist.vue: disable old code

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-02 Tim Janik # f6107405a2f

DOC: Makefile.mk: add docs from b/cliplist.md

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-02 Tim Janik # d60ec0e6bd8

ASE: api.hh: rename Track.launcher_clips() and ass 'notify:launcher_clips'

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-02 Tim Janik # 1b56ddd001c

UI: b/statusbar.vue: use Util.find_element_from_point()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-02 Tim Janik # d237707800c

UI: b/shell.vue: determine F1 anchor from find_element_from_point()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-02 Tim Janik # 7adfe0a48e4

UI: util.js: add find_element_from_point(), supporting shadow DOMs

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-02 Tim Janik # 444ac2270fc

UI: b/clipview.js: fix properties

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-02 Tim Janik # 39176e52091

UI: b/cliplist.js: support F1 help for ClipList

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-02 Tim Janik # 7add4cd4e83

UI: b/cliplist.js: port to LitElement

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-02 Tim Janik # 3f409edffb9

UI: b/app.js: add App.zmove_last()

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-02 Tim Janik # f94e33a2355

UI: b/pianoroll.js: minor rename

Signed-off-by: Tim Janik <timj@gnu.org>

2023-01-07 Tim Janik # ee3d1f0a659

Merge branch 'lit-clipview'

* lit-clipview:
  ASE: api.hh: add Clip.all_notes read-only property
	Enable property caching UI code for fetching notes and updates.
  UI: b/pianoroll.js: use Util.wrap_ase_object() to fetch Clip notes
  UI: b/piano-ctrl.js: use Util.wrap_ase_object() to fetch Clip notes
  UI: b/clipview.js: use wrap_ase_object() to access Clip properties
  UI: util.js: export the wrapper.js API
  UI: wrapper.js: add AseObject wrapper to cache properties
  UI: startup.js: add class name to GC debug messages
  UI: b/shell.vue: provide Shell.piano_roll
  UI: Makefile.mk: use Vue production build unless MODE=debug
	This avoids massive memory leaks of Vue components.
  UI: Makefile.mk: fix missing dependency
  MISC: package.json.in: upgrade to vue-3.2.45 and lit-2.5.0
  UI: Makefile.mk: use 'npm --prefer-offline' only when rebuilding
  MISC: config-checks.mk: do not force '--prefer-offline' on npm
  MISC: config-uname.mk: define __UIDEBUG__=1 for MODE=debug
  UI: b/pianoroll.js: remove old debug()
  UI: b/contextmenu.js: remove useless performance hog
  UI: b/tracklist.vue: add new track on dblclick on track list only
  UI: b/pianoroll.js: fix stale play cursor on clip change
  UI: b/clipview.js: port BClipView to LitElement
  UI: b/: use Track.list_launcher_clips()
  ASE: api.hh. track: rename Track.list_launcher_clips()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-30 Tim Janik # fb885704e85

ASE: api.hh: add Clip.all_notes read-only property

Enable property caching UI code for fetching notes and updates.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-30 Tim Janik # 4ac4a3456a3

UI: b/pianoroll.js: use Util.wrap_ase_object() to fetch Clip notes

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-31 Tim Janik # b75f6f956f0

UI: b/piano-ctrl.js: use Util.wrap_ase_object() to fetch Clip notes

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-31 Tim Janik # bb0b81649d7

UI: b/clipview.js: use wrap_ase_object() to access Clip properties

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-31 Tim Janik # 76c40d785d9

UI: util.js: export the wrapper.js API

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-31 Tim Janik # d2384fe6775

UI: wrapper.js: add AseObject wrapper to cache properties

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-31 Tim Janik # 11b2ba5c7f9

UI: startup.js: add class name to GC debug messages

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-31 Tim Janik # 2978c354fdd

UI: b/shell.vue: provide Shell.piano_roll

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-31 Tim Janik # 19527ffb905

UI: Makefile.mk: use Vue production build unless MODE=debug

This avoids massive memory leaks of Vue components.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-31 Tim Janik # 9cd3b5f4a6b

UI: Makefile.mk: fix missing dependency

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-31 Tim Janik # dd0856fb300

MISC: package.json.in: upgrade to vue-3.2.45 and lit-2.5.0

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-31 Tim Janik # bc2afeba718

UI: Makefile.mk: use 'npm --prefer-offline' only when rebuilding

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-31 Tim Janik # 3f302976dbd

MISC: config-checks.mk: do not force '--prefer-offline' on npm

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-31 Tim Janik # fb3045dc115

MISC: config-uname.mk: define __UIDEBUG__=1 for MODE=debug

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-29 Tim Janik # 4de4cb9b427

UI: b/pianoroll.js: remove old debug()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-29 Tim Janik # f28b24716d4

UI: b/contextmenu.js: remove useless performance hog

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-29 Tim Janik # ae797bea93a

UI: b/tracklist.vue: add new track on dblclick on track list only

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-29 Tim Janik # 770659fca1f

UI: b/pianoroll.js: fix stale play cursor on clip change

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-29 Tim Janik # ca1c59dacc7

UI: b/clipview.js: port BClipView to LitElement

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-28 Tim Janik # 7ae2170607d

UI: b/: use Track.list_launcher_clips()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-28 Tim Janik # 985c76485ba

ASE: api.hh. track: rename Track.list_launcher_clips()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-28 Tim Janik # ea7b53b08c2

Merge branch 'fix-embed-fd-hangs'

* fix-embed-fd-hangs:
  ASE: clapplugin.cc: map PollFD::NVAL to CLAP_POSIX_FD_ERROR
  ASE: loop.*: support POLLWRBAND, always pass on POLLNVAL, POLLERR and POLLHUP

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-27 Tim Janik # 3d5bc2c7fa3

ASE: clapplugin.cc: map PollFD::NVAL to CLAP_POSIX_FD_ERROR

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-27 Tim Janik # e56033921bb

ASE: loop.*: support POLLWRBAND, always pass on POLLNVAL, POLLERR and POLLHUP

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-28 Tim Janik # 215830f0ae0

Merge branch 'build-fixes'

* build-fixes:
  UI: Makefile.mk: add missing dependency from ui/colors.js on ui/zcam-js.mjs
	This fixes postcss errors due to missing zcam-js.mjs.
  X11TEST: play-notes.json: adjust simlpe UI test to UI path changes
  UI: cursors/cursors.css: add MPL-2 copyright

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-27 Tim Janik # 975586501ea

UI: Makefile.mk: add missing dependency from ui/colors.js on ui/zcam-js.mjs

This fixes postcss errors due to missing zcam-js.mjs.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-27 Tim Janik # df498f8bed5

X11TEST: play-notes.json: adjust simlpe UI test to UI path changes

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-23 Tim Janik # 6fa62720971

UI: cursors/cursors.css: add MPL-2 copyright

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-22 Tim Janik # 11d3cc23e38

Merge branch 'documentation-sections'

* documentation-sections:
  DOC: Makefile.mk: link to and search for ui/cursors/
  UI: b/pianoroll.js: add data-f1="#piano-roll" to link F1 to piano roll manual
  UI: b/shell.vue: popup manual on 'F1', support anchors via data-f1="#anchor"
  UI: kbd.js: allow event.keyCode filtering
  DOC: Makefile.mk: include docs from pianoroll and piano-ctrl
  DOC: ch-editing.md: add brief editing introduction
  UI: Makefile.mk: extract Markdown sections from JS files into doc/b/*.md
  UI: xbcomments.js: extract Markdown sections from JavaScript comment blocks

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-22 Tim Janik # 4c5af4a673e

DOC: Makefile.mk: link to and search for ui/cursors/

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-21 Tim Janik # dc16d507a60

UI: b/pianoroll.js: add data-f1="#piano-roll" to link F1 to piano roll manual

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-21 Tim Janik # 1e659a6164e

UI: b/shell.vue: popup manual on 'F1', support anchors via data-f1="#anchor"

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-21 Tim Janik # b6193be4497

UI: kbd.js: allow event.keyCode filtering

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-21 Tim Janik # d6d63585693

DOC: Makefile.mk: include docs from pianoroll and piano-ctrl

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-21 Tim Janik # dfc53bb11f6

DOC: ch-editing.md: add brief editing introduction

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-21 Tim Janik # 5ef56c08375

UI: Makefile.mk: extract Markdown sections from JS files into doc/b/*.md

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-21 Tim Janik # 358057f3df4

UI: xbcomments.js: extract Markdown sections from JavaScript comment blocks

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-22 Tim Janik # 57726250c66

Merge branch 'piano-roll-and-shell-grid-layout'

* piano-roll-and-shell-grid-layout:
  UI: b/pianoroll.js: document piano-roll use and fix hover handling
  UI: b/piano-ctrl.js: add convenient tool registration helpers
  UI: eslintrc.js: allow empty blocks
  UI: util.js: allow PointerDrag cleanup handler
  UI: b/pianoroll.js: fix scroll and select notes_canvas tool on hover
  UI: b/piano-ctrl.js: implement note resize tool
  UI: b/piano-ctrl.js: implement select, paint, erase as dedicated tools
  UI: b/pianoroll.js: context menu cleanup
  UI: b/clipview.vue: let the canvas fill parentElement
  UI: styles.scss, startup.js: turn HFlex & VFlex into LitElement
  UI: b/pianoroll.js: use one source for DPR calculations
  UI: b/pianoroll.js: properly align toolmenu button
  UI: b/pianoroll.js: fix background color
  UI: b/pianoroll.js: add pianorollmenu items
  UI: b/treeselector-item.vue: fix 'event' reference
  UI: b/knob.js: fix 'event' reference
  UI: b/editable.vue: fix 'event' reference
  UI: eslintrc.js: warn if a global 'event' is referenced
  UI: b/piano-ctrl.js: fix merging of selection changes with note modifications
  UI: b/pianoroll.js: handle menu hotkeys
  UI: b/contextmenu.js: fix unmapping in map_kbd_hotkeys()
  UI: kbd.js: handle document.activeElement == null
  UI: b/piano-ctrl.js: stop event if a key was handled
  UI: b/pianoroll.js: grab focus
  UI: b/piano-ctrl.js: adjust piano_roll access patterns
  UI: b/pianoroll.js: provide .srect property, repaint upon changes
  UI: b/pianoroll.js: handle tool menu and hook up piano-ctrl
  UI: theme.scss: move scrollbar styling here to work inside shadow DOMs
  UI: startup.js: turn CGrid into a LitElement to work inside shadow DOMs
  UI: b/pianoroll.js: work around FireFox exception when ctx.font is assigned
  UI: b/shell.vue: allow notification callbacks on get_note_cache()
  UI: b/statusbar.vue: use elementsFromPoint() to find Tips inside shadowRoots
  UI: b/contextmenu.js: support @activate="handler" notifications
  UI: b/menubar.vue: move comment to work around Vue's template child handling
  UI: b/knob.js: ignore hscrolls to allow horizontal device panel scrolling
  UI: b/devicepanel.vue: adjust to b-shell grid layout
  UI: b/pianoroll.js: fix scrollbar style
  UI: b/pianoroll.js: add indicator to show the current tick
  UI: b/shell.vue: use <grid/> for the basic layout
  UI: b/pianoroll.js: implement <b-piano-roll/> as LitElement
  UI: b/pianoroll.js: add skeleton
  UI: b/piano-roll.vue: remove Vue based piano-roll

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-22 Tim Janik # 7a87bb144de

UI: b/pianoroll.js: document piano-roll use and fix hover handling

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-22 Tim Janik # e9da8527d54

UI: b/piano-ctrl.js: add convenient tool registration helpers

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-17 Tim Janik # 8f51c57ede2

UI: eslintrc.js: allow empty blocks

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-17 Tim Janik # 95f07858bda

UI: util.js: allow PointerDrag cleanup handler

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-17 Tim Janik # c53223def04

UI: b/pianoroll.js: fix scroll and select notes_canvas tool on hover

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-17 Tim Janik # 94b2f1f64d6

UI: b/piano-ctrl.js: implement note resize tool

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-17 Tim Janik # 02f805bb67a

UI: b/piano-ctrl.js: implement select, paint, erase as dedicated tools

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-16 Tim Janik # 4ba1a541279

UI: b/pianoroll.js: context menu cleanup

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-15 Tim Janik # 0b46cf3ec17

UI: b/clipview.vue: let the canvas fill parentElement

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-15 Tim Janik # 376eb776abb

UI: styles.scss, startup.js: turn HFlex & VFlex into LitElement

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-15 Tim Janik # 8f9be54be32

UI: b/pianoroll.js: use one source for DPR calculations

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-15 Tim Janik # 7bce614e6e8

UI: b/pianoroll.js: properly align toolmenu button

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-15 Tim Janik # 6ff7be9355d

UI: b/pianoroll.js: fix background color

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # 665b41bf97c

UI: b/pianoroll.js: add pianorollmenu items

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # 4ff98923812

UI: b/treeselector-item.vue: fix 'event' reference

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # 541e6ba8ae3

UI: b/knob.js: fix 'event' reference

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # 78a722bf190

UI: b/editable.vue: fix 'event' reference

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # a44d2999589

UI: eslintrc.js: warn if a global 'event' is referenced

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # 55c6868e7ca

UI: b/piano-ctrl.js: fix merging of selection changes with note modifications

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # c42dba6efb7

UI: b/pianoroll.js: handle menu hotkeys

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # 4a518284a17

UI: b/contextmenu.js: fix unmapping in map_kbd_hotkeys()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # 44374741979

UI: kbd.js: handle document.activeElement == null

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # eeb56496dc4

UI: b/piano-ctrl.js: stop event if a key was handled

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # 2b1804d297d

UI: b/pianoroll.js: grab focus

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # 2d93ac9e528

UI: b/piano-ctrl.js: adjust piano_roll access patterns

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # 24bb41cbc73

UI: b/pianoroll.js: provide .srect property, repaint upon changes

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # 376b7c84334

UI: b/pianoroll.js: handle tool menu and hook up piano-ctrl

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # 7e05c33e440

UI: theme.scss: move scrollbar styling here to work inside shadow DOMs

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # aa6020a52d2

UI: startup.js: turn CGrid into a LitElement to work inside shadow DOMs

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # c37ec9e0407

UI: b/pianoroll.js: work around FireFox exception when ctx.font is assigned

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # 1ae108ce0d5

UI: b/shell.vue: allow notification callbacks on get_note_cache()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # 90092ccb186

UI: b/statusbar.vue: use elementsFromPoint() to find Tips inside shadowRoots

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # 5b9e6a73d0b

UI: b/contextmenu.js: support @activate="handler" notifications

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # bebdd562dd2

UI: b/menubar.vue: move comment to work around Vue's template child handling

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # d3227fcf06a

UI: b/knob.js: ignore hscrolls to allow horizontal device panel scrolling

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-14 Tim Janik # 0184284be3c

UI: b/devicepanel.vue: adjust to b-shell grid layout

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-13 Tim Janik # 4172f3100ba

UI: b/pianoroll.js: fix scrollbar style

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-13 Tim Janik # 15d0f4b498a

UI: b/pianoroll.js: add indicator to show the current tick

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-13 Tim Janik # b9105445537

UI: b/shell.vue: use <grid/> for the basic layout

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-13 Tim Janik # e9c8dde1ac1

UI: b/pianoroll.js: implement <b-piano-roll/> as LitElement

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-19 Tim Janik # 2d7ccab8c59

UI: b/pianoroll.js: add skeleton

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-19 Tim Janik # dc898ed782d

UI: b/piano-roll.vue: remove Vue based piano-roll

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-22 Tim Janik # 32b1518f462

Merge branch 'cursors'

* cursors:
  IMAGES: anklangicons.sh: fixes for svgo 2.8.0 and Inkscape >= 1.0
  IMAGES: anklangicons.sh: remove unused cursor commands
  RAND: hotspots.sh: add simple script to debug hotspot coords in cursors
  UI: b/piano-roll.vue: remove AnklangCursors.scss references
  UI: Makefile.mk: remove AnklangCursors.scss copy
  UI: Makefile.mk: copy cursors/cursors.css and all cursor SVGs
  UI: little.js: allow runtime postcss imports from cursors/cursors.css
  UI: cursors/cursors.css: add CSS vars for: cross eraser hresize knife move pen
  UI: cursors/knife.svg: add 28x28 pixel "knife" cursor
  UI: cursors/hresize.svg: add 28x28 pixel "horizontal resize" cursor
  UI: cursors/cross.svg: add 28x28 pixel "cross" cursor
  UI: cursors/move.svg: add 28x28 pixel "move" cursor
  UI: cursors/eraser.svg: make cursor 28x28 pixels
  UI: cursors/pen.svg: make cursor 28x28 pixels
  UI: cursors/: move eraser.svg and pen.svg here

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-21 Tim Janik # c31425a87ba

IMAGES: anklangicons.sh: fixes for svgo 2.8.0 and Inkscape >= 1.0

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-21 Tim Janik # 2ea414dd285

IMAGES: anklangicons.sh: remove unused cursor commands

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-21 Tim Janik # 2d807356d3b

RAND: hotspots.sh: add simple script to debug hotspot coords in cursors

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-21 Tim Janik # a76611b9545

UI: b/piano-roll.vue: remove AnklangCursors.scss references

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-21 Tim Janik # 927a5242e24

UI: Makefile.mk: remove AnklangCursors.scss copy

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-21 Tim Janik # b27504e4444

UI: Makefile.mk: copy cursors/cursors.css and all cursor SVGs

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-21 Tim Janik # 5f7ed60e5d0

UI: little.js: allow runtime postcss imports from cursors/cursors.css

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-21 Tim Janik # 7cb1bd09e69

UI: cursors/cursors.css: add CSS vars for: cross eraser hresize knife move pen

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-21 Tim Janik # 00477f2973e

UI: cursors/knife.svg: add 28x28 pixel "knife" cursor

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-21 Tim Janik # 79bcf9b08eb

UI: cursors/hresize.svg: add 28x28 pixel "horizontal resize" cursor

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-21 Tim Janik # 994e8daf3c8

UI: cursors/cross.svg: add 28x28 pixel "cross" cursor

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-21 Tim Janik # b289b806433

UI: cursors/move.svg: add 28x28 pixel "move" cursor

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-21 Tim Janik # 7b6288c5d6f

UI: cursors/eraser.svg: make cursor 28x28 pixels

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-21 Tim Janik # dea23e80e8e

UI: cursors/pen.svg: make cursor 28x28 pixels

Signed-off-by: Tim Janik <timj@gnu.org>

2022-12-21 Tim Janik # b678e75a97d

UI: cursors/: move eraser.svg and pen.svg here

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-17 Tim Janik # 54726cd3d63

Merge branch 'swesterfeld-blepsynth-adsr-time-fix'

* swesterfeld-blepsynth-adsr-time-fix:
  DEVICES: blepsynth: use non-linear mapping for ADSR times
  ASE: sortnet.hh: update URLs in comments

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-09 Stefan Westerfeld # 8b67ac5b6b6

DEVICES: blepsynth: use non-linear mapping for ADSR times

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>

2022-11-17 Tim Janik # ede4663e7b2

ASE: sortnet.hh: update URLs in comments

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-16 Tim Janik # 439c3b83048

Merge branch 'sprite-knob'

* sprite-knob:
  MISC: Dockerfile.focal: install librsvg2-bin for rsvg-convert
  UI: remove unused eknob.svg embedding
  UI: b/knob.vue: remove Vue based knob implementation
  UI: b/pro-input.vue: remove unused knob handling
  UI: b/pro-group.vue: use b-knob for scalar Property editing
  UI: b/knob.js: rewrite b-knob as LitElement with sprites
  UI: b/deviceeditor.vue: use Util.extend_property() to cache Property fields
  UI: Makefile.mk: provide control knob sprite assets
  Makefile.mk: include images/knobs/Makefile.mk
  IMAGES: knobs/cknob.svg: add MPL-2.0 license
  IMAGES: knobs/Makefile.mk: build bi- and unidirectional control knob sprites
  IMAGES: knobs/mksprite.py: rotate svg knob and add level indicator
  IMAGES: knobs/cknob.svg: add rotatable control knob
  UI: util.js: wheel_delta: adjust factors for modern Firefox and Chrome versions
  UI: startup.js: set CONFIG.dpr_movement for Chrome<=100 and Gecko
	As of Firefox-106, dpr_movement is needed and for Chrome-107 it is not.
  UI: util.js: use internal Symbol for request_pointer_lock() state handling
  UI: util.js: fix value updates of extended properties
	Catch the right event and normalize the value in JS.
  UI: util.js: add methods to handle destroy callbacks on objects
  UI: b/shell.vue: comment fixup
  UI: b/databubble.vue: hook into App.zmove for all event handling
	Also, fix stuck bubbles when rehovering the same element.
  UI: b/app.js: generate zmove events for pointerdown, pointermove, pointerup
  UI: b/app.js: make sure "mousemove" triggers ZMove updates
  ASE: processor.cc: keep constant number of characters for % values
  ASE: processor: send property notifies early, account for inflight values
  ASE: api.hh: add missing const
  ASE: crawler: use emit_notify() and avoid emit during ctor
  ASE: *.cc: use emit_notify() where possible

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-16 Tim Janik # d3fdc383bc0

MISC: Dockerfile.focal: install librsvg2-bin for rsvg-convert

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-16 Tim Janik # 6d314a41c08

UI: remove unused eknob.svg embedding

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-05 Tim Janik # 3535e1bca86

UI: b/knob.vue: remove Vue based knob implementation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-05 Tim Janik # 549bc713ad9

UI: b/pro-input.vue: remove unused knob handling

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-16 Tim Janik # 1aa09110989

UI: b/pro-group.vue: use b-knob for scalar Property editing

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-16 Tim Janik # 5131f85e2de

UI: b/knob.js: rewrite b-knob as LitElement with sprites

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-16 Tim Janik # 591dc49c9fe

UI: b/deviceeditor.vue: use Util.extend_property() to cache Property fields

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-15 Tim Janik # ade7808d411

UI: Makefile.mk: provide control knob sprite assets

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-14 Tim Janik # e7752c282b2

Makefile.mk: include images/knobs/Makefile.mk

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-16 Tim Janik # b94edb5852b

IMAGES: knobs/cknob.svg: add MPL-2.0 license

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-14 Tim Janik # ee5347c8bcb

IMAGES: knobs/Makefile.mk: build bi- and unidirectional control knob sprites

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-14 Tim Janik # a3c16d47d7a

IMAGES: knobs/mksprite.py: rotate svg knob and add level indicator

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-14 Tim Janik # 2a9e2951173

IMAGES: knobs/cknob.svg: add rotatable control knob

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-16 Tim Janik # 48f17d1e235

UI: util.js: wheel_delta: adjust factors for modern Firefox and Chrome versions

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-16 Tim Janik # 2e8d94f080d

UI: startup.js: set CONFIG.dpr_movement for Chrome<=100 and Gecko

As of Firefox-106, dpr_movement is needed and for Chrome-107 it is not.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-15 Tim Janik # 4c5914aa077

UI: util.js: use internal Symbol for request_pointer_lock() state handling

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-15 Tim Janik # d0a8af6d5ee

UI: util.js: fix value updates of extended properties

Catch the right event and normalize the value in JS.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-15 Tim Janik # 249ddeda3a3

UI: util.js: add methods to handle destroy callbacks on objects

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-15 Tim Janik # b91a66e920b

UI: b/shell.vue: comment fixup

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-10 Tim Janik # d40b20fcc94

UI: b/databubble.vue: hook into App.zmove for all event handling

Also, fix stuck bubbles when rehovering the same element.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-15 Tim Janik # 02a395abfd3

UI: b/app.js: generate zmove events for pointerdown, pointermove, pointerup

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-10 Tim Janik # cc5ed860101

UI: b/app.js: make sure "mousemove" triggers ZMove updates

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-14 Tim Janik # c25a27a893e

ASE: processor.cc: keep constant number of characters for % values

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-09 Tim Janik # f06f6477ab6

ASE: processor: send property notifies early, account for inflight values

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-09 Tim Janik # a2ed448018a

ASE: api.hh: add missing const

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-08 Tim Janik # b391db724b1

ASE: crawler: use emit_notify() and avoid emit during ctor

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-08 Tim Janik # eee4f715bec

ASE: *.cc: use emit_notify() where possible

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-16 Tim Janik # 8e65adf7718

Merge branch 'zoom-ui'

* zoom-ui:
  UI: b/menubar.vue: support Zoom In/Out/Reset for Electron
  ELECTRON: main.js: export zoom_level() to allow UI zoom adjustments
  UI: kbd.js: match_key_event: split 'Ctrl++' only once
  DOC: ch-development.md, ch-intro.md: fix testbit.eu URL
  ASE: randomhash: fix testbit.eu URL
  ASE: track.cc: fix MASTER_TRACK flag

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-15 Tim Janik # 6276402ddd2

UI: b/menubar.vue: support Zoom In/Out/Reset for Electron

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-15 Tim Janik # 39553c9345a

ELECTRON: main.js: export zoom_level() to allow UI zoom adjustments

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-15 Tim Janik # 0729f5de1f2

UI: kbd.js: match_key_event: split 'Ctrl++' only once

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-10 Tim Janik # 2a621d9a4a9

DOC: ch-development.md, ch-intro.md: fix testbit.eu URL

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-10 Tim Janik # 3eba14da7ed

ASE: randomhash: fix testbit.eu URL

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-04 Tim Janik # d7dedab219b

ASE: track.cc: fix MASTER_TRACK flag

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-03 Tim Janik # 203c246eaa0

Merge branch 'swesterfeld-vcf-cutoff-fix'

* swesterfeld-vcf-cutoff-fix:
  DEVICES: blepsynth: fix cutoff frequency modulation for filter
	Fix frequency scaling problems: the freq_in array now passes its frequency to
	the filter as plain Hz.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-02 Stefan Westerfeld # f333c7c072a

DEVICES: blepsynth: fix cutoff frequency modulation for filter

Fix frequency scaling problems: the freq_in array now passes its frequency to
the filter as plain Hz.

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>

2022-11-03 Tim Janik # 6d531e698af

Merge branch 'time-autostop'

* time-autostop:
  GITHUB: workflows/testing.yml: add repository and gh-user to IRC notifications
  GITHUB: workflows/ircbot.py: support -R for initiating repository name
  GITHUB: workflows/testing.yml: skip IRC bot name
  GITHUB: workflows/ircbot.py: set "YYBOT" as bot name
  ASE: main: add autostop handling and implement -t <time> to trigger autostop
  ASE: project: start_playback(): pass autostop into engine
  ASE: engine: add autostop handling and delay capture until transport is running
  ASE: defs.hh: add D64MAX
  ASE: strings.cc: add string_to_seconds()
  ASE: formatter.cc: test atomic<bool> which is a struct and needs %s
  UI: b/treeselector-item.vue: use ContextMenu.valid_uri() to check valid uri
  UI: b/contextmenu.js: always use valid_uri() for uri in boolean contexts

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-03 Tim Janik # 635cb2acf99

GITHUB: workflows/testing.yml: add repository and gh-user to IRC notifications

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-03 Tim Janik # f5f5df8c008

GITHUB: workflows/ircbot.py: support -R for initiating repository name

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-03 Tim Janik # 8d4221e9691

GITHUB: workflows/testing.yml: skip IRC bot name

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-24 Tim Janik # b94448e849d

GITHUB: workflows/ircbot.py: set "YYBOT" as bot name

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-02 Tim Janik # 45c2b5b15e5

ASE: main: add autostop handling and implement -t <time> to trigger autostop

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-02 Tim Janik # f770f10773f

ASE: project: start_playback(): pass autostop into engine

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-02 Tim Janik # 4790ad56a70

ASE: engine: add autostop handling and delay capture until transport is running

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-01 Tim Janik # 739fc884004

ASE: defs.hh: add D64MAX

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-01 Tim Janik # 09a5e5814bd

ASE: strings.cc: add string_to_seconds()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-11-01 Tim Janik # 9b048c994f7

ASE: formatter.cc: test atomic<bool> which is a struct and needs %s

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-31 Tim Janik # b0ff65cf914

UI: b/treeselector-item.vue: use ContextMenu.valid_uri() to check valid uri

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-31 Tim Janik # d10f9b862ad

UI: b/contextmenu.js: always use valid_uri() for uri in boolean contexts

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-28 Tim Janik # bb7a44285c4

Merge branch 'opus-wav-flac' - capture engine output

* opus-wav-flac:
  UI: b/aboutdialog.vue: display FLAC version
  ASE: api: export get_flac_version()
  UI: b/aboutdialog.vue: show Opus version
	Remove unused Vorbis version.
  ASE: api.hh: export Opus version
	Remove unused Vorbis and MP3 version export.
  MISC: Dockerfile.focal: provide libopus
  MISC: config-checks.mk: provide ogg-1.3.4 and opus-1.3.1
	Remvoe Vorbis requirement, which is unused.
  ASE: main.cc: exit with atquit_run() upon SIGINT
  ASE: loop: USignalSource::install_sigaction(): install unix signal handler
  ASE: utils: provide atquit handlers
  ASE: loop.hh: minimize latency of signal handlers by running at high priority
  ASE: main: add -o wavfile to the CLI
  ASE: engine: support engine output capturing into wave files
	Squashed commits of engine capturing development:
	  ASE: engine: add queue_capture_start() and queue_capture_stop()
	  ASE: engine.cc: stall engine once program is aborted (atquit_triggered)
	  ASE: engine.cc: capture output via wave_writer_create_opus()
	  ASE: engine.cc: capture output via wave_writer_create_wav()
	  ASE: engine.cc: capture output via wave_writer_create_flac()
  ASE: wave: add wave file writer for WAV, OPUS, FLAC
	Squashed commits of wave file development:
	  ASE: wave.hh: add WaveWriter interface
	  ASE: wave: add writer for WAV files with support for PCM and FLOAT
	  ASE: wave: implement Opus writer and export Opus version
	  ASE: wave.cc: write extension header for FLOAT format
	    For example SoX(1) complains about float WAV files 'missing extended part of fmt chunk'
	  ASE: wave: add FLAC writer and export FLAC version
	  ASE: wave: install atquit handlers to flush/finalize wave files
  ASE: main: load projects without '--preload' and support --play-autostart
  ASE: main.cc: auto-load projects passed on the CLI

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-28 Tim Janik # 1592603f465

UI: b/aboutdialog.vue: display FLAC version

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-28 Tim Janik # c1c611bf9fe

ASE: api: export get_flac_version()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-11 Tim Janik # c259790fdb5

UI: b/aboutdialog.vue: show Opus version

Remove unused Vorbis version.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-11 Tim Janik # badf458147a

ASE: api.hh: export Opus version

Remove unused Vorbis and MP3 version export.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-09 Tim Janik # b30d2119e1e

MISC: Dockerfile.focal: provide libopus

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-07 Tim Janik # ec302f21674

MISC: config-checks.mk: provide ogg-1.3.4 and opus-1.3.1

Remvoe Vorbis requirement, which is unused.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-07 Tim Janik # e406273d231

ASE: main.cc: exit with atquit_run() upon SIGINT

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-07 Tim Janik # 67786afddfe

ASE: loop: USignalSource::install_sigaction(): install unix signal handler

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-07 Tim Janik # 240ee42bb56

ASE: utils: provide atquit handlers

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-07 Tim Janik # 95cfe3eff43

ASE: loop.hh: minimize latency of signal handlers by running at high priority

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-06 Tim Janik # 1d8f68b0653

ASE: main: add -o wavfile to the CLI

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-06 Tim Janik # c0bbbfd71f6

ASE: engine: support engine output capturing into wave files

Squashed commits of engine capturing development:

  ASE: engine: add queue_capture_start() and queue_capture_stop()
  ASE: engine.cc: stall engine once program is aborted (atquit_triggered)
  ASE: engine.cc: capture output via wave_writer_create_opus()
  ASE: engine.cc: capture output via wave_writer_create_wav()
  ASE: engine.cc: capture output via wave_writer_create_flac()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-06 Tim Janik # a9573c1d97b

ASE: wave: add wave file writer for WAV, OPUS, FLAC

Squashed commits of wave file development:

  ASE: wave.hh: add WaveWriter interface
  ASE: wave: add writer for WAV files with support for PCM and FLOAT
  ASE: wave: implement Opus writer and export Opus version
  ASE: wave.cc: write extension header for FLOAT format
    For example SoX(1) complains about float WAV files 'missing extended part of fmt chunk'
  ASE: wave: add FLAC writer and export FLAC version
  ASE: wave: install atquit handlers to flush/finalize wave files

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-06 Tim Janik # 3ea4cb93925

ASE: main: load projects without '--preload' and support --play-autostart

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-06 Tim Janik # a67a43d3183

ASE: main.cc: auto-load projects passed on the CLI

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-26 Tim Janik # 84ff17e4a49

Merge branch 'loft'

* loft:
  ASE: main.cc: configure Loft and concurrently preallocate pages on demand
  ASE: tests/benchmarks.cc: benchmark loft_calloc()
  ASE: loft: add Loft - a lock- and obstruction-free thread memory allocator
	Squashed commits of Loft development:
	  ASE: loft: implement mmap() based bump allocator
	  ASE: loft: implement MpmcStack based bucket allocator
	  ASE: loft: add loft_alloc()
	  ASE: loft: add loft_make_unique() and LoftFree::operator()()
	  ASE: loft: add loft_calloc()
	  ASE: loft: add multithreaded allocator stress test
	  ASE: loft: use FastRng for testing
	  ASE: loft: add loft_bucket_size()
	  ASE: loft: add loft_get_stats(), loft_stats_string()
	  ASE: loft: add loft_get_config(), loft_set_config(), config flags
	  ASE: loft: add loft_grow_preallocate(), loft_set_notifier()
	  ASE: loft: issue a warning if allocations via syscall happen inline
  ASE: atomics.hh: add MpmcStack.peek
  ASE: atomics.cc: fix signedness
  ASE: atomics.cc: add test for MpmcStack<>
  ASE: atomics.hh: add MpmcStack<>, a lock-free stack for non-reclaimable memory

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-24 Tim Janik # 12c0d8bd7f7

ASE: main.cc: configure Loft and concurrently preallocate pages on demand

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-04 Tim Janik # 86e657b5cc4

ASE: tests/benchmarks.cc: benchmark loft_calloc()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-04 Tim Janik # 59eae7fb6cf

ASE: loft: add Loft - a lock- and obstruction-free thread memory allocator

Squashed commits of Loft development:

  ASE: loft: implement mmap() based bump allocator
  ASE: loft: implement MpmcStack based bucket allocator
  ASE: loft: add loft_alloc()
  ASE: loft: add loft_make_unique() and LoftFree::operator()()
  ASE: loft: add loft_calloc()
  ASE: loft: add multithreaded allocator stress test
  ASE: loft: use FastRng for testing
  ASE: loft: add loft_bucket_size()
  ASE: loft: add loft_get_stats(), loft_stats_string()
  ASE: loft: add loft_get_config(), loft_set_config(), config flags
  ASE: loft: add loft_grow_preallocate(), loft_set_notifier()
  ASE: loft: issue a warning if allocations via syscall happen inline

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-24 Tim Janik # 7e8dac6d1f1

ASE: atomics.hh: add MpmcStack.peek

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-05 Tim Janik # a8abb0ce5e3

ASE: atomics.cc: fix signedness

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-02 Tim Janik # 3ab607707ac

ASE: atomics.cc: add test for MpmcStack<>

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-02 Tim Janik # abaf1e2a464

ASE: atomics.hh: add MpmcStack<>, a lock-free stack for non-reclaimable memory

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-26 Tim Janik # 153071d1906

Merge branch 'mwc256-prng'

* mwc256-prng:
  ASE: randomhash.cc: add FastRng jump ahead tests
  ASE: main.cc: add --rand64 to generate 64bit FastRng numbers on stdout
	This can be used to test the PRNG quality with for example PractRand:
	  AnklangSynthEngine --rand64 | RNG_test stdin64 -multithreaded
  ASE: randomhash: add FastRng, a multiply-with-carry PRNG with period 2^255
  ASE: tests/benchmarks.cc: use 3k as max chunk size to avoid memset benchmarking
  ASE: sortnet.cc: speed up test by reducing the checked 10-element permutations

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-24 Tim Janik # a0b4e5a2048

ASE: randomhash.cc: add FastRng jump ahead tests

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-22 Tim Janik # 418d5699772

ASE: main.cc: add --rand64 to generate 64bit FastRng numbers on stdout

This can be used to test the PRNG quality with for example PractRand:
  AnklangSynthEngine --rand64 | RNG_test stdin64 -multithreaded

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-22 Tim Janik # 0fa2f04f2e9

ASE: randomhash: add FastRng, a multiply-with-carry PRNG with period 2^255

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-04 Tim Janik # 8f3c04a0ee7

ASE: tests/benchmarks.cc: use 3k as max chunk size to avoid memset benchmarking

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-05 Tim Janik # a03db576a8b

ASE: sortnet.cc: speed up test by reducing the checked 10-element permutations

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-26 Tim Janik # a252fc9d284

Merge branch 'update-sanitizers'

* update-sanitizers:
  JSONIPC: jsonipc.hh: fix atexit memory leak
  ASE: formatter.hh: properly handle nullptr_t for %p
  ASE: nativedevice.cc: fix signedness
  ASE: serialize.cc: fix unit test memory leak
  UI: Makefile.mk: ignore asan when running AnklangSynthEngine
  DOC: Makefile.mk: ignore asan when running AnklangSynthEngine
  MISC: config-uname.mk: update sanitizer linkage
  GITHUB: workflows/testing.yml: upgrade actions/checkout and actions/cache to v3
  MISC: Dockerfile.focal: comment fixups
  GITHUB: workflows/testing.yml: allow TeX installation during CI builds

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-04 Tim Janik # 633a4a1b682

JSONIPC: jsonipc.hh: fix atexit memory leak

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-05 Tim Janik # 92f049d6f3f

ASE: formatter.hh: properly handle nullptr_t for %p

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-05 Tim Janik # aa6fdbd647e

ASE: nativedevice.cc: fix signedness

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-05 Tim Janik # ed48f05e559

ASE: serialize.cc: fix unit test memory leak

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-05 Tim Janik # f602ce2b1e4

UI: Makefile.mk: ignore asan when running AnklangSynthEngine

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-05 Tim Janik # a31e418e148

DOC: Makefile.mk: ignore asan when running AnklangSynthEngine

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-05 Tim Janik # d196a74ea7d

MISC: config-uname.mk: update sanitizer linkage

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-26 Tim Janik # 95c089d9deb

GITHUB: workflows/testing.yml: upgrade actions/checkout and actions/cache to v3

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-25 Tim Janik # 6bb9f58b9f0

MISC: Dockerfile.focal: comment fixups

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-25 Tim Janik # 359d9d53338

GITHUB: workflows/testing.yml: allow TeX installation during CI builds

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-25 Tim Janik # e0272bd8ff9

Merge branch 'pdf-artifacts'

* pdf-artifacts:
  GITHUB: workflows/testing.yml: build PDF and upload 'docs' build artifact
  MISC: mkassets.sh: use 'pdf' shorthand in build rule
  DOC: Makefile.mk: require explicit 'pdf' rule to build PDF manuals via TeX
	By default, only the HTML manuals are built and installed (without TeX
	dependency). The PDF variants can be built explicitely with `make pdf`.
	The PDF manuals are installed if they are present at install time.
  GITHUB: workflows/testing.yml: enable CI for 'next' and PRs

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-25 Tim Janik # 9785f41c819

GITHUB: workflows/testing.yml: build PDF and upload 'docs' build artifact

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-25 Tim Janik # f0a4e336e2e

MISC: mkassets.sh: use 'pdf' shorthand in build rule

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-25 Tim Janik # d9c2615b5c6

DOC: Makefile.mk: require explicit 'pdf' rule to build PDF manuals via TeX

By default, only the HTML manuals are built and installed (without TeX
dependency). The PDF variants can be built explicitely with `make pdf`.
The PDF manuals are installed if they are present at install time.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-21 Tim Janik # ee3959f030f

GITHUB: workflows/testing.yml: enable CI for 'next' and PRs

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-21 Tim Janik # 8032e64e952

Merge branch 'litelement-menu'

* litelement-menu:
  X11TEST: play-notes.json: update UI test
  UI: b/*: assign aria-label where appropriate
  UI: b/*.vue: add html id to context menus
  UI: b/menuitem.js: always strip slot_label
  UI: util.js: remove unused dropdown()
  UI: b/color-picker.vue: fix menu and support click-drag selection
  UI: b/contextmenu.js: expose dialog via part=dialog to CSS rules
  UI: b/trackview.vue: popup context menu at cursor
  UI: b/piano-roll.vue: fix popup position
  UI: b/piano-ctrl.js: avoid stealing unhandled key presses
  UI: b/dialog.vue: close on regular Escape presses, avoid stealing Escape
  UI: b/contextmenu.js: stop handled dialog Escape key from bubbling further
  UI: util.js: allow shields without Escape key stealing
  UI: b/choice.vue: fix menu and key handling to work like all menus
  UI: b/contextmenu.js: provide .open read-only property
  UI: b/menuitem.js: remove unused code
  UI: b/contextmenu.js: fix data-contextmenu styling
  UI: b/fed-picklist.vue: remove unused component
  UI: b/devicepanel.vue: fix menu origin and insertion pos
  ASE: nativedevice.cc: fix device insertion order
  UI: b/contextmenu.js: close menu on backdrop clicks
  UI: util.js: dialog_backdrop_mousedown(): close dialogs on backdrop clicks
  UI: b/menubar.vue: use b-contextmenu .activate and .isactive
  UI: b/piano-roll.vue: use b-contextmenu .activate and .isactive
  UI: b/deviceeditor.vue: use b-contextmenu .activate and .isactive
  UI: b/treeselector-item.vue: use frame stamp to ignore duplicate clicks
  UI: b/menubar.vue: use frame stamp to ignore duplicate clicks
  UI: b/contextmenu.js: make FF auto-focus an element on showModal(), like Chrome
  UI: b/contextmenu.js: use frame stamp to ignore duplicate clicks and popup()s
	Note that keyboard presses, mouse clicks, drag selections and event bubbling can
	all cause menu item clicks and contextmenu activation.
	In order to deduplicate multiple events that arise from the same user interaction,
	*one* popup request and *one* click activation is processed per animation frame.
  UI: util.js: add frame_stamp(), retrieve a timestamp unique per animation frame
  UI: kbd.js: move_focus(): fallback to move focus inside body
  UI: kbd.js: list_focusables(): take [open]:modal in shadow DOMs into account
  UI: kbd.js: list_focusables(): take [open]:modal dialogs into account
  UI: b/treeselector-item.vue: fix single-click menu activation and styling
  UI: b/trackview.vue: fix menu activation
  UI: b/piano-roll.vue: fix menu activation, allow click-drag menu selection
  UI: b/devicepanel.vue: fix menu activation
  UI: b/menubar.vue: allow click-drag menu selection
  UI: b/menuitem.js: use .activate and .isactive callbacks for item activation
  UI: b/contextmenu.js: use .activate and .isactive callbacks for menu activation
  ASE: project.cc: fix some missing notify::dirty emissions
  UI: b/menubar.vue: adapt context menu clicks, popup menus early (mousedown)
  UI: b/menuitem.js: adjust for b-contextmenu as LitElement
  UI: kbd.js: fix keydown_move_focus() for shadow DOMs
  UI: util.js: add prevent_event()
  UI: b/contextmenu.js: port b-contextmenu to LitElement
  UI: b/menuitem.js: use 'b-menurow' CSS selector
  UI: b/menurow.js: port b-menurow to LitElement
  UI: b/menuitem.js: pass b-menurow turn / noturn attributes to button
  UI: util.js: add closest() for shadow DOMs
  UI: b/trackview.vue: always use the b-icon ic="" attribute
  UI: b/menuitem.js: export KeymapEntry as this.keymap_entry
  UI: b/contextmenu.vue: collect and register KeymapEntry props from descendants
  UI: kbd.js: support add+remove of global keymaps
  UI: b/menuitem.js: port b-menuitem to LitElement
  UI: util.js: add lrstrip() and collect_text_content()
  UI: kbd.js: make activeElement and list_focusables shadow DOM aware
	This allows transparent handling of custom focus navigation and hotkey
	activation in shadow DOMs.
  UI: util.js: extend has_ancestor() to support open shadow DOMs
  UI: b/contextmenu.vue: support click, keymap, b-contextmenu-menudata on Element
  UI: b/icon.js: port b-icon from vue to LitElement
  UI: util.js: add adopt_style() and add_style_sheet()
  UI: b/*.vue: always use the b-icon ic="" attribute
  GITHUB: workflows/testing.yml: update github actions

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-21 Tim Janik # c7125167fdb

X11TEST: play-notes.json: update UI test

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-21 Tim Janik # 8854fbedf70

UI: b/*: assign aria-label where appropriate

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-21 Tim Janik # a2f2354933a

UI: b/*.vue: add html id to context menus

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-21 Tim Janik # d8785a34bd4

UI: b/menuitem.js: always strip slot_label

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-21 Tim Janik # c2ac7b174b3

UI: util.js: remove unused dropdown()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-21 Tim Janik # 7a0a6ca897f

UI: b/color-picker.vue: fix menu and support click-drag selection

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-21 Tim Janik # 2ce4c116e40

UI: b/contextmenu.js: expose dialog via part=dialog to CSS rules

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-21 Tim Janik # 8b3904d9881

UI: b/trackview.vue: popup context menu at cursor

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-21 Tim Janik # 86bd1b6583c

UI: b/piano-roll.vue: fix popup position

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-21 Tim Janik # df68ea92d08

UI: b/piano-ctrl.js: avoid stealing unhandled key presses

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-21 Tim Janik # 3fa08759abd

UI: b/dialog.vue: close on regular Escape presses, avoid stealing Escape

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-21 Tim Janik # 6140b85ffa9

UI: b/contextmenu.js: stop handled dialog Escape key from bubbling further

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-21 Tim Janik # 931bc998775

UI: util.js: allow shields without Escape key stealing

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-21 Tim Janik # 52ae3f07552

UI: b/choice.vue: fix menu and key handling to work like all menus

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-21 Tim Janik # f9de8371a16

UI: b/contextmenu.js: provide .open read-only property

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-20 Tim Janik # 13eece61bf7

UI: b/menuitem.js: remove unused code

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-20 Tim Janik # 2ebbb7e7ec2

UI: b/contextmenu.js: fix data-contextmenu styling

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-20 Tim Janik # 4ed7859a98f

UI: b/fed-picklist.vue: remove unused component

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-20 Tim Janik # 63a01302360

UI: b/devicepanel.vue: fix menu origin and insertion pos

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-20 Tim Janik # 54b1f500900

ASE: nativedevice.cc: fix device insertion order

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-20 Tim Janik # babd3bde394

UI: b/contextmenu.js: close menu on backdrop clicks

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-20 Tim Janik # d8a76335ccd

UI: util.js: dialog_backdrop_mousedown(): close dialogs on backdrop clicks

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-20 Tim Janik # 35f216ace8a

UI: b/menubar.vue: use b-contextmenu .activate and .isactive

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-20 Tim Janik # 2dc8443240d

UI: b/piano-roll.vue: use b-contextmenu .activate and .isactive

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-20 Tim Janik # 931c6fc4960

UI: b/deviceeditor.vue: use b-contextmenu .activate and .isactive

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-20 Tim Janik # 272ed1e30a9

UI: b/treeselector-item.vue: use frame stamp to ignore duplicate clicks

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-20 Tim Janik # dfd827bf60c

UI: b/menubar.vue: use frame stamp to ignore duplicate clicks

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-20 Tim Janik # a825ea9b503

UI: b/contextmenu.js: make FF auto-focus an element on showModal(), like Chrome

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-20 Tim Janik # 8f6a8bd04a3

UI: b/contextmenu.js: use frame stamp to ignore duplicate clicks and popup()s

Note that keyboard presses, mouse clicks, drag selections and event bubbling can
all cause menu item clicks and contextmenu activation.
In order to deduplicate multiple events that arise from the same user interaction,
*one* popup request and *one* click activation is processed per animation frame.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-20 Tim Janik # 3fb48ef718e

UI: util.js: add frame_stamp(), retrieve a timestamp unique per animation frame

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-20 Tim Janik # a525b416eec

UI: kbd.js: move_focus(): fallback to move focus inside body

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-20 Tim Janik # 0d37d05bf63

UI: kbd.js: list_focusables(): take [open]:modal in shadow DOMs into account

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-20 Tim Janik # 6f0e662a9f5

UI: kbd.js: list_focusables(): take [open]:modal dialogs into account

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-19 Tim Janik # 03111788791

UI: b/treeselector-item.vue: fix single-click menu activation and styling

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-19 Tim Janik # e55a3c834e8

UI: b/trackview.vue: fix menu activation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-19 Tim Janik # 0bc1677d8cb

UI: b/piano-roll.vue: fix menu activation, allow click-drag menu selection

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-19 Tim Janik # e26a6c19b0b

UI: b/devicepanel.vue: fix menu activation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-19 Tim Janik # 67193dafafc

UI: b/menubar.vue: allow click-drag menu selection

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-19 Tim Janik # 44d7df8679a

UI: b/menuitem.js: use .activate and .isactive callbacks for item activation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-19 Tim Janik # ee9501f8576

UI: b/contextmenu.js: use .activate and .isactive callbacks for menu activation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-19 Tim Janik # f6e62fd773f

ASE: project.cc: fix some missing notify::dirty emissions

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-18 Tim Janik # b32344a0d2d

UI: b/menubar.vue: adapt context menu clicks, popup menus early (mousedown)

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-18 Tim Janik # e71a27dc48b

UI: b/menuitem.js: adjust for b-contextmenu as LitElement

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-18 Tim Janik # 281055cd4bf

UI: kbd.js: fix keydown_move_focus() for shadow DOMs

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-18 Tim Janik # bc60e6ffe78

UI: util.js: add prevent_event()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-18 Tim Janik # 541016abecf

UI: b/contextmenu.js: port b-contextmenu to LitElement

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-16 Tim Janik # 38e3c7abfce

UI: b/menuitem.js: use 'b-menurow' CSS selector

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-16 Tim Janik # b79018b392a

UI: b/menurow.js: port b-menurow to LitElement

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-16 Tim Janik # 646aabb8e7d

UI: b/menuitem.js: pass b-menurow turn / noturn attributes to button

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-16 Tim Janik # 3fd59c6ee34

UI: util.js: add closest() for shadow DOMs

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-15 Tim Janik # 8188c9f3545

UI: b/trackview.vue: always use the b-icon ic="" attribute

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-15 Tim Janik # 3929feaee3f

UI: b/menuitem.js: export KeymapEntry as this.keymap_entry

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-15 Tim Janik # dd653b131fc

UI: b/contextmenu.vue: collect and register KeymapEntry props from descendants

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-15 Tim Janik # e363bd0ebf2

UI: kbd.js: support add+remove of global keymaps

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-15 Tim Janik # c29aa106ccb

UI: b/menuitem.js: port b-menuitem to LitElement

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-21 Tim Janik # 892c30f4a08

UI: util.js: add lrstrip() and collect_text_content()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-15 Tim Janik # a505069ed78

UI: kbd.js: make activeElement and list_focusables shadow DOM aware

This allows transparent handling of custom focus navigation and hotkey
activation in shadow DOMs.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-15 Tim Janik # fb4523edb72

UI: util.js: extend has_ancestor() to support open shadow DOMs

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-15 Tim Janik # ad324798c09

UI: b/contextmenu.vue: support click, keymap, b-contextmenu-menudata on Element

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-14 Tim Janik # 7ec360fb99f

UI: b/icon.js: port b-icon from vue to LitElement

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-21 Tim Janik # 51f183d8b2b

UI: util.js: add adopt_style() and add_style_sheet()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-14 Tim Janik # a88478fa725

UI: b/*.vue: always use the b-icon ic="" attribute

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-12 Tim Janik # 7f211af9f46

GITHUB: workflows/testing.yml: update github actions

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-12 Tim Janik # 84e7c324395

Merge branch 'package-updates'

* package-updates:
  ASE: clip.cc: fix macro clash
  MISC: package.json.in: update various npm packages
  Makefile.mk: clean x11test/ output dir

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-12 Tim Janik # a4078bb5b46

ASE: clip.cc: fix macro clash

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-12 Tim Janik # 50e50f91a43

MISC: package.json.in: update various npm packages

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-12 Tim Janik # a787d9298b6

Makefile.mk: clean x11test/ output dir

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-12 Tim Janik # 4e5ac8b2358

Merge branch 'activate+deactivate'

* activate+deactivate:
  ASE: object.cc: properly check Connection ptr before use
  ASE: track.cc: remove over eager assertion
  ASE: project.cc: start_playback(): switch current engine project on demand
  Makefile.mk: allow make default to configure INSN
  ASE: project: move activate/deactive to Project
  ASE: engine.cc: fix loss of "change:prefs" notification connection
  ASE: engine: add API to set up exclusive Engine + Project relation
  ASE: track: require Project as parent of track
  ASE: gadget: add flags field to be used for gadgets and derived types
  ASE: clapplugin: rename clap_deactivate() and variants
  ASE: api.hh: use GadgetImpl as parent pointer
  ASE: api.hh: derive Track from Device
  ASE: api.hh: derive Project from Device
  ASE: device: rename and move Device::extract_info() here
  ASE: clapdevice.cc: fix call to inherited methods
  ASE: nativedevice: provide remove_all_devices(), implement activation
  ASE: api.hh: Device: provide _activate() _deactivate() is_active()
  ASE: nativedevice.cc: clarify TODO
  ASE: split DeviceImpl into Device and NativeDevice
  ASE: engine: turn the engine into a global singleton
  ASE: engine: simnply wrap AudioEngineImpl calls into AudioEngine methods
  ASE: engine: rename AudioEngineImpl
  ASE: main: export main_loop_wakeup()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-12 Tim Janik # a7fc6cecff3

ASE: object.cc: properly check Connection ptr before use

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-06 Tim Janik # d5a961ce868

ASE: track.cc: remove over eager assertion

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-06 Tim Janik # 28c42e4c4ca

ASE: project.cc: start_playback(): switch current engine project on demand

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-05 Tim Janik # 996a1920055

Makefile.mk: allow make default to configure INSN

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-02 Tim Janik # cb92af12bff

ASE: project: move activate/deactive to Project

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-12 Tim Janik # 8e3d5e3ac96

ASE: engine.cc: fix loss of "change:prefs" notification connection

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-28 Tim Janik # 9149037710a

ASE: engine: add API to set up exclusive Engine + Project relation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-28 Tim Janik # 2906cf23ea3

ASE: track: require Project as parent of track

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-19 Tim Janik # 3abeba757c8

ASE: gadget: add flags field to be used for gadgets and derived types

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-19 Tim Janik # e94f04be875

ASE: clapplugin: rename clap_deactivate() and variants

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-28 Tim Janik # 1c70014d4d7

ASE: api.hh: use GadgetImpl as parent pointer

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-28 Tim Janik # ae6ee46375e

ASE: api.hh: derive Track from Device

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-28 Tim Janik # 04d767df150

ASE: api.hh: derive Project from Device

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-28 Tim Janik # bab2f539c49

ASE: device: rename and move Device::extract_info() here

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-28 Tim Janik # 9ce582b34e7

ASE: clapdevice.cc: fix call to inherited methods

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-28 Tim Janik # 9e43084438b

ASE: nativedevice: provide remove_all_devices(), implement activation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-28 Tim Janik # cb1f3af7625

ASE: api.hh: Device: provide _activate() _deactivate() is_active()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-12 Tim Janik # c370fcbb428

ASE: nativedevice.cc: clarify TODO

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-21 Tim Janik # 584f9eed47f

ASE: split DeviceImpl into Device and NativeDevice

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-19 Tim Janik # 5c86b354fe8

ASE: engine: turn the engine into a global singleton

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-19 Tim Janik # 73dee4d78d1

ASE: engine: simnply wrap AudioEngineImpl calls into AudioEngine methods

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-19 Tim Janik # 493a89b59f9

ASE: engine: rename AudioEngineImpl

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-19 Tim Janik # 062b25db73d

ASE: main: export main_loop_wakeup()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-11 Tim Janik # bd540be58d1

Merge branch 'ci-job-split'

* ci-job-split:
  GITHUB: workflows/testing.yml: split jobs for Ubuntu, Arch, IRC
  DOC: copyright.ini: assume MPL-2 for x11test/*.json

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-10 Tim Janik # 71206af61a7

GITHUB: workflows/testing.yml: split jobs for Ubuntu, Arch, IRC

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-10 Tim Janik # 7848f25ad50

DOC: copyright.ini: assume MPL-2 for x11test/*.json

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-10 Tim Janik # 662fd7a0936

Merge branch 'x11test'

* x11test:
  X11TEST: play1note.json: add recording to play a single MIDI note
  GITHUB: workflows/testing.yml: run x11test-v on Ubuntu build and upload result
  Makefile.mk: docuemnt x11test and x11test-v
  Makefile.mk: add x11test, x11test-v to run (headless) end-to-end tests
  X11TEST: replay.sh: play Anklang DevTools recording in Electron via Puppetteer
  X11TEST: ereplay.cjs: use Electron and Puppetteer to replay DevTools recording
  X11TEST: x11rec.sh: run and record a command in a virtual or nested X11 session
  MISC: package.json.in: add puppeteer packages
  MISC: Dockerfile.focal: provide xvfb 9wm ffmpeg

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-10 Tim Janik # c71575882c3

X11TEST: play1note.json: add recording to play a single MIDI note

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-10 Tim Janik # 4a12f05c4b9

GITHUB: workflows/testing.yml: run x11test-v on Ubuntu build and upload result

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-10 Tim Janik # fa48b2d6f2e

Makefile.mk: docuemnt x11test and x11test-v

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-10 Tim Janik # c82fedff490

Makefile.mk: add x11test, x11test-v to run (headless) end-to-end tests

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-10 Tim Janik # 4d2b07c3c41

X11TEST: replay.sh: play Anklang DevTools recording in Electron via Puppetteer

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-10 Tim Janik # 69e20e3e2bb

X11TEST: ereplay.cjs: use Electron and Puppetteer to replay DevTools recording

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-10 Tim Janik # a918a038d0c

X11TEST: x11rec.sh: run and record a command in a virtual or nested X11 session

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-09 Tim Janik # b488a2a521b

MISC: package.json.in: add puppeteer packages

Signed-off-by: Tim Janik <timj@gnu.org>

2022-10-09 Tim Janik # f7b31a97dee

MISC: Dockerfile.focal: provide xvfb 9wm ffmpeg

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-28 Tim Janik # 8bde98a0674

Merge branch 'print-class-tree'

* print-class-tree:
  DOC: Makefile.mk: anklang-internals: add "Ase Class Inheritance Tree"
  ASE: main: add --class-tree to print the class tree
  JSONIPC: jsonipc.hh: add ClassWalker
  ASE: internal.hh: add assert_unreached()
  ASE: engine: minor fixes

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-27 Tim Janik # 5918bb5f40e

DOC: Makefile.mk: anklang-internals: add "Ase Class Inheritance Tree"

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-28 Tim Janik # ffafe56853c

ASE: main: add --class-tree to print the class tree

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-27 Tim Janik # 35a4187211f

JSONIPC: jsonipc.hh: add ClassWalker

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-19 Tim Janik # c0d71150f97

ASE: internal.hh: add assert_unreached()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-19 Tim Janik # c43c2048d06

ASE: engine: minor fixes

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-28 Tim Janik # 6628472bceb

Merge branch 'fix-vue-3.2.28'

* fix-vue-3.2.28:
  UI: b/shell.vue: work around vue-3.2.38 breaking $forceUpdate() before mount()
	Avoid the Shell calling $forceUpdate() from created().
	That used to work up until Vue-3.2.27, but with .28 and .29 results in:
	vue.js:1843 Uncaught (in promise) TypeError: Cannot read properties of null (reading 'id')
	    at queueJob (vue.js:1843:17)
	    at i.f.i.f (vue.js:4591:44)
	Aparently $forceUpdate() calls are now broken before mount().
  UI: Makefile.mk: fix wildcard for lit.js to not catch little.js

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-28 Tim Janik # 46ce3eb9444

UI: b/shell.vue: work around vue-3.2.38 breaking $forceUpdate() before mount()

Avoid the Shell calling $forceUpdate() from created().
That used to work up until Vue-3.2.27, but with .28 and .29 results in:

vue.js:1843 Uncaught (in promise) TypeError: Cannot read properties of null (reading 'id')
    at queueJob (vue.js:1843:17)
    at i.f.i.f (vue.js:4591:44)

Aparently $forceUpdate() calls are now broken before mount().

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-27 Tim Janik # 8648ab013f2

UI: Makefile.mk: fix wildcard for lit.js to not catch little.js

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-27 Tim Janik # 6caa570cf9c

Merge branch 'fix-gc' - plugs a GC race condition

* fix-gc:
  JSONIPC: jsonipc.hh: InstanceMap: remove unused swap and move_into
  ASE: jsonapi.cc: fix GC bookkeeping with mark_unused() and purge_unused()
  JSONIPC: jsonipc.hh: InstanceMap: add mark_unused() and purge_unused()
  JSONIPC: jsonipc.hh: add CallbackInfo::classname() to improve error messages

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-26 Tim Janik # ab0c6786fda

JSONIPC: jsonipc.hh: InstanceMap: remove unused swap and move_into

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-26 Tim Janik # ed82baefe3e

ASE: jsonapi.cc: fix GC bookkeeping with mark_unused() and purge_unused()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-26 Tim Janik # eb465643a77

JSONIPC: jsonipc.hh: InstanceMap: add mark_unused() and purge_unused()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-26 Tim Janik # 9dde62a50d2

JSONIPC: jsonipc.hh: add CallbackInfo::classname() to improve error messages

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-27 Tim Janik # 9cf276d8894

Merge branch 'prefault-pages'

* prefault-pages:
  ASE: main.cc: prefault heap and stack pages
  ASE: main.cc: tune malloc via mallopt to reduce page fault probability

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-21 Tim Janik # 9e70cd9664d

ASE: main.cc: prefault heap and stack pages

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-21 Tim Janik # 1a3a3a05221

ASE: main.cc: tune malloc via mallopt to reduce page fault probability

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-27 Tim Janik # 931a674fcae

Merge branch 'build-improvements'

* build-improvements:
  MISC: config-uname.mk: enable link time optimization via -flto for MODE=production
  MISC: Makefile.mk: clean mkdeb/ if left over
  MISC: Dockerfile.focal: install libgtk-3-dev which also provides libdbus-1-dev

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-25 Tim Janik # 49b8f50fc83

MISC: config-uname.mk: enable link time optimization via -flto for MODE=production

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-21 Tim Janik # a1d4f55bd0a

MISC: Makefile.mk: clean mkdeb/ if left over

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-16 Tim Janik # a77ad859d3f

MISC: Dockerfile.focal: install libgtk-3-dev which also provides libdbus-1-dev

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-14 Tim Janik # 5184d18ff5b

Merge branch 'low-latency-sched'

* low-latency-sched:
  ASE: engine.cc: request low latency scheduling for the synthesis engine
  ASE: platform: add sched_{set|get|fast}_priority()
  ASE: dbus: add DBus methods rtkit_make_high_priority + rtkit_get_min_nice_level
  MISC: mkdeb.sh: postinst: add cap_sys_nice to AnklangSynthEngine
  MISC: config-checks.mk: add dbus-1 to ase dependencies
  ASE: utils.cc: allow mixed case debug keys
  ASE: Makefile.mk: use ASEDEPS_CFLAGS and ASEDEPS_LIBS
  MISC: config-checks.mk: provide just ASEDEPS_CFLAGS and ASEDEPS_LIBS for ase/

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-13 Tim Janik # 7980ba2bbd5

ASE: engine.cc: request low latency scheduling for the synthesis engine

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-13 Tim Janik # 9bfd9f412ed

ASE: platform: add sched_{set|get|fast}_priority()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-13 Tim Janik # c45f6dcd47b

ASE: dbus: add DBus methods rtkit_make_high_priority + rtkit_get_min_nice_level

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-13 Tim Janik # 3fd64dff0d2

MISC: mkdeb.sh: postinst: add cap_sys_nice to AnklangSynthEngine

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-13 Tim Janik # defb52f8c49

MISC: config-checks.mk: add dbus-1 to ase dependencies

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-13 Tim Janik # d8332b1d57a

ASE: utils.cc: allow mixed case debug keys

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-13 Tim Janik # ce1c4d92116

ASE: Makefile.mk: use ASEDEPS_CFLAGS and ASEDEPS_LIBS

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-13 Tim Janik # abb4697bc86

MISC: config-checks.mk: provide just ASEDEPS_CFLAGS and ASEDEPS_LIBS for ase/

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-14 Tim Janik # f59890ba036

Merge branch 'remote-gc'

* remote-gc:
  UI: startup.js: renew_gc() on object finalization, report_gc() when requested
  ASE: jsonapi.cc: support renew_gc() and report_gc() to start new GC cycle
	The basic idea behind remote GB by the UI requesting renew_gc() and the
	Jsonapi server swapping wrapper tables in response is described here:
		https://testbit.eu/2014/rapicorn-remote-reference-counting
  ASE: jsonapi.cc: test conscise erase() loop over std::map<>
	Checks the erase() loop used by Jsonipc over std::map<>, in
	particular ++end must be avoided for empty maps.
  JSONIPC: jsonipc.hh: support clear/swap/size/move_into for instance ptr map
  MISC: config-uname.mk: use -Og for debugging which improves debug info
	Using -Og is a better choice than -O0, because some compiler passes that
	collect debug information are disabled at -O0. (gcc docs)
  UI: startup.js: properly namespace Jsonapi/Trigger
  ASE: jsonapi.cc: properly namespace Jsonapi/Trigger
  DOC: ch-development.md: properly namespace Jsonapi/Trigger
  DOC: ch-development.md: minor update
  UI: startup.js: request Ase.Server via Jsonapi/initialize after handshake
  ASE: jsonapi.cc: provide Ase.Server object as Jsonapi/initialize reply
  JSONIPC: jsonipc.hh: reply to Jsonipc/handshake with protocol version 1
  JSONIPC: jsonipc.js: require Jsonipc/handshake with protocol version 1
  UI: startup.js: maintain $id GC list via Jsonipc.finalization_registration
  JSONIPC: jsonipc.js: call Jsonipc.finalization_registration hook from ctors
  UI: GNUmakefile: allow subdir builds

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-12 Tim Janik # 6f7fd610267

UI: startup.js: renew_gc() on object finalization, report_gc() when requested

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-12 Tim Janik # 6150f769e2e

ASE: jsonapi.cc: support renew_gc() and report_gc() to start new GC cycle

The basic idea behind remote GB by the UI requesting renew_gc() and the
Jsonapi server swapping wrapper tables in response is described here:
	https://testbit.eu/2014/rapicorn-remote-reference-counting

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-12 Tim Janik # d08eb54d691

ASE: jsonapi.cc: test conscise erase() loop over std::map<>

Checks the erase() loop used by Jsonipc over std::map<>, in
particular ++end must be avoided for empty maps.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-12 Tim Janik # 941fafe7324

JSONIPC: jsonipc.hh: support clear/swap/size/move_into for instance ptr map

Signed-off-by: Tim Janik <timj@gnu.org>

2022-09-11 Tim Janik # 6ac5adb6a7c

MISC: config-uname.mk: use -Og for debugging which improves debug info

Using -Og is a better choice than -O0, because some compiler passes that
collect debug information are disabled at -O0. (gcc docs)

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-27 Tim Janik # f1e26e881c9

UI: startup.js: properly namespace Jsonapi/Trigger

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-27 Tim Janik # dfc82ca9b9f

ASE: jsonapi.cc: properly namespace Jsonapi/Trigger

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-27 Tim Janik # e29ff5dd555

DOC: ch-development.md: properly namespace Jsonapi/Trigger

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-27 Tim Janik # 01e67912b89

DOC: ch-development.md: minor update

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-27 Tim Janik # 81f86410ae9

UI: startup.js: request Ase.Server via Jsonapi/initialize after handshake

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-27 Tim Janik # 1128118ca14

ASE: jsonapi.cc: provide Ase.Server object as Jsonapi/initialize reply

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-27 Tim Janik # 56a707e94a6

JSONIPC: jsonipc.hh: reply to Jsonipc/handshake with protocol version 1

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-27 Tim Janik # 27431d247f6

JSONIPC: jsonipc.js: require Jsonipc/handshake with protocol version 1

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-27 Tim Janik # 8c8e157ccf5

UI: startup.js: maintain $id GC list via Jsonipc.finalization_registration

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-27 Tim Janik # 7571dcb4b74

JSONIPC: jsonipc.js: call Jsonipc.finalization_registration hook from ctors

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-27 Tim Janik # 3c08e52c0a0

UI: GNUmakefile: allow subdir builds

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-24 Tim Janik # 72174fb5f39

Merge branch 'automatic-backup'

* automatic-backup:
  ASE: project.cc: automatically backup existing project files
  ASE: path: add glob()
  ASE: path: add rename()
  ASE: utils: add now_strftime()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-21 Tim Janik # e7cef958be1

ASE: project.cc: automatically backup existing project files

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-20 Tim Janik # c340d6dfbf3

ASE: path: add glob()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-20 Tim Janik # 60e82bb2658

ASE: path: add rename()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-20 Tim Janik # 47bddefe903

ASE: utils: add now_strftime()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-24 Tim Janik # 031c81f2efe

Merge branch 'clap-file-reference'

* clap-file-reference:
  ASE: clapplugin: clean up load_state() and save_state()
  ASE: *.cc: use operator<< where needed for serialization
  ASE: serialize.hh: add operator>> and operator<< to support pure const serialization
  ASE: serialize.hh: operator&: catch serialization into const at compile time
  ASE: project.cc: merge asset_hashes
  ASE: project.cc: use Error::NO_PROJECT_DIR if anklang.project is missing
  ASE: api.hh: add Error::NO_PROJECT_DIR
  ASE: clapplugin: implement file collection
  ASE: clapplugin.cc: save_state: request plugin_file_reference->save_resources()
  ASE: clapplugin.cc: add CLAP_EXT_FILE_REFERENCE skeleton
  ASE: serialize.cc: use TelemetryField for simple serialization tests
  ASE: serialize: support external serialize(T&,WritNode&) impls via ADL
  ASE: serialize.cc: test tuple serialization
  ASE: project.cc: loader_resolve: lookup and resolve files from project dir
  ASE: project.cc: serialize file hashes as tuple array
  ASE: serialize.hh: serialize tuple<...> types
  UI: b/menubar.vue: use project.saved_filename() as "Save" location
  ASE: api.hh: add Project.saved_filename()
  ASE: Makefile.mk: upgrade to clap-1.1.1.tar.gz
  UI: b/app.js: use save_project()
  ASE: api.hh: rename Project.save_project()
  ASE: project.cc: canonicalize project file name when saving
  ASE: project: properly implement writer_collect()
  ASE: project: add API to collect external files
  ASE: strings: add strings_version_sort()
  ASE: path: add dircontains() to check dir hierarchy and compute relative path
  ASE: path: add copy_file(), use FICLONE ioctl to create CoW clone if possible
	Currently, FICLONE is supported under Linux for XFS and BTRFS.
	Use `filefrag -v` to detext or debug shared file extents.
  ASE: path: add file_size(), gracefully handle errors
  ASE: clapplugin: derive ClapPluginHandle from GadgetImpl
  ASE: api.hh: print user notes and allow `rest` argument
  ASE: api.hh: introduce Gadget._project()
  ASE: strings: add string_to_hex()
  ASE: main.cc: add --blake3 <FILE> to test Blake3 hashing
  ASE: compress: add blake3_hash_file() and blake3_hash_string()
  ASE: storage: add stream_reader_from_file()
  ASE: Makefile.mk: compile BLAKE3 with SSE and AVX variants
  ASE: Makefile.mk: provide blake3.h from BLAKE3-1.3.1.tar.gz
  ASE: Makefile.mk: use SOURCE2_O
  MISC: config-uname.mk: add $(call SOURCE2_O) to create object extensions
  ASE: clapplugin.cc: fix warnings
  MISC: config-checks.mk: show sha256sum command used failing downloads

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-22 Tim Janik # ea9c87e510c

ASE: clapplugin: clean up load_state() and save_state()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-24 Tim Janik # 71f5d014573

ASE: *.cc: use operator<< where needed for serialization

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-24 Tim Janik # a398faab038

ASE: serialize.hh: add operator>> and operator<< to support pure const serialization

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-22 Tim Janik # 5635aa7b68b

ASE: serialize.hh: operator&: catch serialization into const at compile time

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-22 Tim Janik # 3e75180211a

ASE: project.cc: merge asset_hashes

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-22 Tim Janik # a4aae0d6fee

ASE: project.cc: use Error::NO_PROJECT_DIR if anklang.project is missing

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-22 Tim Janik # f2e03c414c7

ASE: api.hh: add Error::NO_PROJECT_DIR

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-22 Tim Janik # 8c2b3f788e3

ASE: clapplugin: implement file collection

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-13 Tim Janik # dde32e492b3

ASE: clapplugin.cc: save_state: request plugin_file_reference->save_resources()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-13 Tim Janik # e09cc3ecd4f

ASE: clapplugin.cc: add CLAP_EXT_FILE_REFERENCE skeleton

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-22 Tim Janik # 238d688ef16

ASE: serialize.cc: use TelemetryField for simple serialization tests

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-21 Tim Janik # dd3f5dd8831

ASE: serialize: support external serialize(T&,WritNode&) impls via ADL

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-21 Tim Janik # fa84014c25f

ASE: serialize.cc: test tuple serialization

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-21 Tim Janik # f12435091a7

ASE: project.cc: loader_resolve: lookup and resolve files from project dir

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-21 Tim Janik # c9307feb01f

ASE: project.cc: serialize file hashes as tuple array

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-21 Tim Janik # 154711ae50d

ASE: serialize.hh: serialize tuple<...> types

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-21 Tim Janik # 6db96a2081a

UI: b/menubar.vue: use project.saved_filename() as "Save" location

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-21 Tim Janik # a865f230a54

ASE: api.hh: add Project.saved_filename()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-13 Tim Janik # d95c1eb8a39

ASE: Makefile.mk: upgrade to clap-1.1.1.tar.gz

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-20 Tim Janik # afbe708fd29

UI: b/app.js: use save_project()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-20 Tim Janik # f56a742daa8

ASE: api.hh: rename Project.save_project()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-20 Tim Janik # 6e3e26ffefc

ASE: project.cc: canonicalize project file name when saving

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-20 Tim Janik # 4a6d13f7080

ASE: project: properly implement writer_collect()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-19 Tim Janik # ac60aeb12ca

ASE: project: add API to collect external files

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-20 Tim Janik # dedd0961b5d

ASE: strings: add strings_version_sort()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-20 Tim Janik # c810c7cdf00

ASE: path: add dircontains() to check dir hierarchy and compute relative path

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-19 Tim Janik # f8d5a70fa67

ASE: path: add copy_file(), use FICLONE ioctl to create CoW clone if possible

Currently, FICLONE is supported under Linux for XFS and BTRFS.
Use `filefrag -v` to detext or debug shared file extents.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-19 Tim Janik # 843a95f7ed2

ASE: path: add file_size(), gracefully handle errors

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-18 Tim Janik # 1e451f88798

ASE: clapplugin: derive ClapPluginHandle from GadgetImpl

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-18 Tim Janik # 327b1d92526

ASE: api.hh: print user notes and allow `rest` argument

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-18 Tim Janik # 40f7dd26223

ASE: api.hh: introduce Gadget._project()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-13 Tim Janik # c45452822d1

ASE: strings: add string_to_hex()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-13 Tim Janik # 020a93186d5

ASE: main.cc: add --blake3 <FILE> to test Blake3 hashing

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-13 Tim Janik # 1a58be901ae

ASE: compress: add blake3_hash_file() and blake3_hash_string()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-13 Tim Janik # 8ea4c3c6ef0

ASE: storage: add stream_reader_from_file()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-13 Tim Janik # e0a74afe89c

ASE: Makefile.mk: compile BLAKE3 with SSE and AVX variants

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-13 Tim Janik # e8102173caf

ASE: Makefile.mk: provide blake3.h from BLAKE3-1.3.1.tar.gz

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-13 Tim Janik # 43cd0285df6

ASE: Makefile.mk: use SOURCE2_O

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-13 Tim Janik # 2cdb05b48d3

MISC: config-uname.mk: add $(call SOURCE2_O) to create object extensions

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-13 Tim Janik # 7188b4c6d83

ASE: clapplugin.cc: fix warnings

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-13 Tim Janik # df5d962bdf2

MISC: config-checks.mk: show sha256sum command used failing downloads

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-12 Tim Janik # 5f771290989

Merge branch 'sse+fma-synth-engine' - build releases with SSE + FMA support

* sse+fma-synth-engine:
  ASE: Makefile.mk: build FMA variant iff MODE=production INSN=sse
  MISC: mkassets.sh: build releases with MODE=production INSN=sse
  MISC: Makefile.mk: remove INSN build remnants

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-12 Tim Janik # cea04b913bd

ASE: Makefile.mk: build FMA variant iff MODE=production INSN=sse

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-12 Tim Janik # 7e3557f60c3

MISC: mkassets.sh: build releases with MODE=production INSN=sse

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-12 Tim Janik # 65b93176383

MISC: Makefile.mk: remove INSN build remnants

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-12 Tim Janik # a1698874067

Merge branch 'fix-scripts'

* fix-scripts:
  MISC: mkassets.sh: handle unbound $V
  MISC: mkdeb.sh: handle unbound $V
  MISC: mkAppImage.sh: handle unbound $V
  MISC: dbuild.sh: handle unbound $V

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-11 Tim Janik # c8a1aa4de44

MISC: mkassets.sh: handle unbound $V

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-11 Tim Janik # 11f8b18c1a8

MISC: mkdeb.sh: handle unbound $V

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-11 Tim Janik # 39757c5eff5

MISC: mkAppImage.sh: handle unbound $V

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-11 Tim Janik # 4b7f1c2324c

MISC: dbuild.sh: handle unbound $V

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-11 Tim Janik # 2fd2f5f45d5

Merge branch 'dockerize-asset-builds'

* dockerize-asset-builds:
  MISC: Makefile.mk: adjust release-message
  MISC: Makefile.mk: export $V for build scripts
  MISC: Makefile.mk: simplify builds, merge upload-nightly and upload-release
  Makefile.mk: fix ls-tree.lst generation in tarballs
  MISC: mkassets.sh: extract release info, make AppImage
  MISC: mkAppImage.sh: move AppImage build logic here
  MISC: mkassets.sh: build binary packages from tarball
  MISC: mkdeb.sh: pass $V to make
  MISC: dbuild.sh: pass $V into docker env
  MISC: dbuild.sh: remove unused .dbuild/ handling
  MISC: Dockerfile.focal: reduce layers
  MISC: Dockerfile.focal: always become 'builder' user, prepare /ootbuild/

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-11 Tim Janik # b3424988f29

MISC: Makefile.mk: adjust release-message

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-11 Tim Janik # 2f33365415a

MISC: Makefile.mk: export $V for build scripts

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-11 Tim Janik # fbbb1076445

MISC: Makefile.mk: simplify builds, merge upload-nightly and upload-release

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-11 Tim Janik # 2dc45e24116

Makefile.mk: fix ls-tree.lst generation in tarballs

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-11 Tim Janik # e01a9295ecb

MISC: mkassets.sh: extract release info, make AppImage

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-11 Tim Janik # 3d62152511d

MISC: mkAppImage.sh: move AppImage build logic here

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-11 Tim Janik # 3aeda702df5

MISC: mkassets.sh: build binary packages from tarball

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-11 Tim Janik # 9f9bceccb5d

MISC: mkdeb.sh: pass $V to make

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-11 Tim Janik # 71bda689dd9

MISC: dbuild.sh: pass $V into docker env

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-11 Tim Janik # 3e61c9c5076

MISC: dbuild.sh: remove unused .dbuild/ handling

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-11 Tim Janik # b433d4cfd5e

MISC: Dockerfile.focal: reduce layers

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-11 Tim Janik # 415192dd74b

MISC: Dockerfile.focal: always become 'builder' user, prepare /ootbuild/

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-11 Tim Janik # 76c621462e7

Merge branch 'arch-ci'

* arch-ci:
  .gitignore: add ignores
  GITHUB: workflows/testing.yml: cleanup after each platform build
  GITHUB: workflows/testing.yml: build and test on arch, cache arch docker image
  MISC: Dockerfile.arch: setup archlinux dependencies for building Anklang
	Use upstream CastXML, the AUR version seems outdated and broken.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-09 Tim Janik # 2ad3eb6eb5e

.gitignore: add ignores

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-09 Tim Janik # fd7e8b75657

GITHUB: workflows/testing.yml: cleanup after each platform build

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-08 Tim Janik # 14cfe853cd8

GITHUB: workflows/testing.yml: build and test on arch, cache arch docker image

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-08 Tim Janik # 692ab0b65ee

MISC: Dockerfile.arch: setup archlinux dependencies for building Anklang

Use upstream CastXML, the AUR version seems outdated and broken.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-11 Tim Janik # 433f9bdab39

Merge branch 'docker-caching'

* docker-caching:
  MISC: dbuild.sh: skip TeX during docker image build with -T
  MISC: Dockerfile.focal: cleanup early to shrink docker image, possibly skip TeX
  MISC: dbuild.sh: use misc/Dockerfile.focal by default, remove -d, change -f
  MISC: Dockerfile.focal: rename from Dockerfile-apt, use FROM ubuntu:20.04
  ASE: Makefile.mk: add missing dependencies for includes
  ASE: sortnet.hh: include <functional> for std::less
  Makefile.mk: use `ctags` executable
  GITHUB: workflows/testing.yml: fix cache-hit detection
  GITHUB: workflows/testing.yml: skip docker caching on cache miss
  GITHUB: workflows/testing.yml: invalidate cache if misc/dbuild.sh changes
  GITHUB: workflows/testing.yml: remove docker image test
  MISC: get rid of --no-tex and $NO_TEX (now unused)
  GITHUB: workflows/testing.yml: remove '--no-tex'
	Avoiding Tex installation was only needed without docker image caching.
  MISC: dbuild.sh: fix SIGPIPE when searching docker image for INITIALIZE
  MISC: dbuild.sh: debug wrong INITIALIZE setting
  MISC: dbuild.sh: use 'ubuntu:20.04' as base instead of 'ubuntu:focal'
	Both are tags for the same image, but the former is already present
	on Github's stock system.
  GITHUB: workflows/testing.yml: fix grep exit status
  GITHUB: workflows/testing.yml: invalidate cache if misc/Dockerfile-apt changes
  GITHUB: workflows/testing.yml: stop forcing a docker build step
  GITHUB: workflows/testing.yml: upgrade to actions/checkout@v2.4.2
  GITHUB: workflows/testing.yml: cache docker image via github cache
  GITHUB: workflows/testing.yml: find version inside docker
  GITHUB: workflows/testing.yml: always use the same build arg for docker
  MISC: version.sh: ignore missing tags in Format:%(describe) workaround

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-08 Tim Janik # 2c839de1ef3

MISC: dbuild.sh: skip TeX during docker image build with -T

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-08 Tim Janik # 596be4e9b53

MISC: Dockerfile.focal: cleanup early to shrink docker image, possibly skip TeX

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-08 Tim Janik # 8719edce17d

MISC: dbuild.sh: use misc/Dockerfile.focal by default, remove -d, change -f

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-08 Tim Janik # 9abe313948b

MISC: Dockerfile.focal: rename from Dockerfile-apt, use FROM ubuntu:20.04

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-08 Tim Janik # f1a6818e0b6

ASE: Makefile.mk: add missing dependencies for includes

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-08 Tim Janik # b06056461da

ASE: sortnet.hh: include <functional> for std::less

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-08 Tim Janik # 7686e0dd9be

Makefile.mk: use `ctags` executable

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-07 Tim Janik # 15b4fbc61bb

GITHUB: workflows/testing.yml: fix cache-hit detection

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-07 Tim Janik # 74d992c41cb

GITHUB: workflows/testing.yml: skip docker caching on cache miss

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-07 Tim Janik # 04d9daa0a9a

GITHUB: workflows/testing.yml: invalidate cache if misc/dbuild.sh changes

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-07 Tim Janik # 7d98adb8d14

GITHUB: workflows/testing.yml: remove docker image test

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-07 Tim Janik # aabb1a7fa02

MISC: get rid of --no-tex and $NO_TEX (now unused)

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-07 Tim Janik # c8f090ae8cf

GITHUB: workflows/testing.yml: remove '--no-tex'

Avoiding Tex installation was only needed without docker image caching.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-07 Tim Janik # d994bcfec33

MISC: dbuild.sh: fix SIGPIPE when searching docker image for INITIALIZE

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-07 Tim Janik # 546323592c4

MISC: dbuild.sh: debug wrong INITIALIZE setting

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-07 Tim Janik # 85279caf093

MISC: dbuild.sh: use 'ubuntu:20.04' as base instead of 'ubuntu:focal'

Both are tags for the same image, but the former is already present
on Github's stock system.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-07 Tim Janik # d23b91ba2fa

GITHUB: workflows/testing.yml: fix grep exit status

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-07 Tim Janik # 57c18cc47d8

GITHUB: workflows/testing.yml: invalidate cache if misc/Dockerfile-apt changes

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-07 Tim Janik # 1a02ae57983

GITHUB: workflows/testing.yml: stop forcing a docker build step

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-07 Tim Janik # 33a7b7d3fd6

GITHUB: workflows/testing.yml: upgrade to actions/checkout@v2.4.2

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-07 Tim Janik # 3cd41fb85be

GITHUB: workflows/testing.yml: cache docker image via github cache

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-07 Tim Janik # e5b44862018

GITHUB: workflows/testing.yml: find version inside docker

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-07 Tim Janik # 9958fe85a5b

GITHUB: workflows/testing.yml: always use the same build arg for docker

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-06 Tim Janik # 1df39d3b751

MISC: version.sh: ignore missing tags in Format:%(describe) workaround

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-06 Tim Janik # 50d9c06da33

Merge branch 'dist-tarball' - create distribution tarballs

Adjust versioning and build rules to support proper distribution tarballs
that will build without .git/ history.

* dist-tarball:
  MISC: Dockerfile-apt: provide zstd
  MISC: Makefile.mk: re-enable nightly asset builds
  Makefile.mk: work around git 2.25.1 not handling Format:%(describe:match)
	Ubuntu 20.04 still runs git 2.25.1.
  MISC: version.sh: work around git 2.25.1 not handling Format:%(describe:match)
	Ubuntu 20.04 still runs git 2.25.1.
  MISC: Dockerfile-apt: add universal-ctags
  MISC: dbuild.sh: recognize --help
  Makefile.mk: use wildcard for toplevel CLEANFILES
  MISC: Makefile.mk: list Nightly changes
  MISC: Makefile.mk: fix upload-release
  MISC: Makefile.mk: use TARBALL version for build-assets
  MISC: Makefile.mk: minor fixups
  MISC: Makefile.mk: only check-copyright if .git/ exists
  MISC: Makefile.mk: remove versioned ChangeLog generation
  Makefile.mk: ChangeLog: use slightly longer hashes
  Makefile.mk: fix ChangeLog range
  Makefile.mk: use ls-tree.lst to generate TAGS
  MISC: Makefile.mk: use ls-tree.lst
  DOC: Makefile.mk: use ls-tree.lst
  Makefile.mk: create and distribute ls-tree.lst
  MISC: config-utils.mk: provide only $(HAVE_GIT) which is true if .git/ exists
	Using the old WITHGIT or WITHOUTGIT did not really work.
  MISC: Makefile.mk: avoid -j, rely on MAKEFLAGS for parallel submakes
  MISC: Makefile.mk: build-nightly: create and build dist tarball
  MISC: dbuild.sh: use .dlcache subdir for dockerized ccache
  MISC: Makefile.mk: build-assets: build from sources in $(TARBALL)
  MISC: Makefile.mk: record and use artifacts in build-assets
  MISC: Makefile.mk: add 'build-version' rule
  MISC: Makefile.mk: call version.sh --make-nightly for nightly builds
  MISC: Makefile.mk: check nightly versions
  MISC: Makefile.mk: add 'versioned-manuals' rule
  DOC: Makefile.mk: use packaged doc/copyright if Git is missing
  GITHUB: workflows/testing.yml: build with --no-tex and SKIP_LATEX=true
	Only the PDF manuals need Tex, skipping LaTex installation
	significantly speeds up the CI builds.
  MISC: dbuild.sh: add --no-tex (replaces --tex)
  MISC: Dockerfile-apt: default to building with Tex
  DOC: Makefile.mk: build PDF manuals, unless SKIP_LATEX=true
  DOC: Makefile.mk: skip misc/mkcopyright.py if .git is not present
  MISC: mkdeb.sh: use `misc/version.sh --commit-hash` instead of git
  MISC: version.sh: add --commit-hash
  MISC: version.sh: remove extra version printout for --make-nightly
  MISC: version.sh: add --help and --make-nightly
  MISC: version.sh: use the same COMMITINFO for archives and .git repos
  Makefile.mk: dist: allow packaging with NEWS.md worktree changes
  Makefile.mk: simplify make dist
  Makefile.mk: add hard dependency on ctags-universal
	Builds from Git need ctags-universal to reliably generate TAGS for
	make dist.
  Makefile.mk: provide $(builddir) and $>/ early on
  Makefile.mk: check misc/version.sh execution
  ASE: Makefile.mk: add missing minizip/mz_zip.h dependency
  DOC: copyright.ini: list freeverb sources under Public Domain dedication
  DEVICES: freeverb/freeverb.cc: license under MPL-2.0

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-06 Tim Janik # 8595b1c8d53

MISC: Dockerfile-apt: provide zstd

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-06 Tim Janik # b8d9e6a3ffc

MISC: Makefile.mk: re-enable nightly asset builds

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-06 Tim Janik # 163d4288bd8

Makefile.mk: work around git 2.25.1 not handling Format:%(describe:match)

Ubuntu 20.04 still runs git 2.25.1.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-06 Tim Janik # 4e79145d808

MISC: version.sh: work around git 2.25.1 not handling Format:%(describe:match)

Ubuntu 20.04 still runs git 2.25.1.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-06 Tim Janik # 90c77d2f4e2

MISC: Dockerfile-apt: add universal-ctags

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-06 Tim Janik # 314736150a9

MISC: dbuild.sh: recognize --help

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-06 Tim Janik # ff5b240e87d

Makefile.mk: use wildcard for toplevel CLEANFILES

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-06 Tim Janik # 5c222510317

MISC: Makefile.mk: list Nightly changes

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-06 Tim Janik # e691d67247e

MISC: Makefile.mk: fix upload-release

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-06 Tim Janik # 003315b95d8

MISC: Makefile.mk: use TARBALL version for build-assets

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-06 Tim Janik # d76981666ab

MISC: Makefile.mk: minor fixups

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-06 Tim Janik # c9ef52e309a

MISC: Makefile.mk: only check-copyright if .git/ exists

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-05 Tim Janik # e20cbac117a

MISC: Makefile.mk: remove versioned ChangeLog generation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-05 Tim Janik # d1380d1f4c6

Makefile.mk: ChangeLog: use slightly longer hashes

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-05 Tim Janik # c254b7b7321

Makefile.mk: fix ChangeLog range

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-05 Tim Janik # 0827b862569

Makefile.mk: use ls-tree.lst to generate TAGS

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-05 Tim Janik # df18c72f669

MISC: Makefile.mk: use ls-tree.lst

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-05 Tim Janik # 453fbd5933b

DOC: Makefile.mk: use ls-tree.lst

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-05 Tim Janik # df060345158

Makefile.mk: create and distribute ls-tree.lst

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-05 Tim Janik # d312cd19bcf

MISC: config-utils.mk: provide only $(HAVE_GIT) which is true if .git/ exists

Using the old WITHGIT or WITHOUTGIT did not really work.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-05 Tim Janik # 39f035aa6ce

MISC: Makefile.mk: avoid -j, rely on MAKEFLAGS for parallel submakes

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-05 Tim Janik # 9a31d425405

MISC: Makefile.mk: build-nightly: create and build dist tarball

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-06 Tim Janik # 4982dc83b91

MISC: dbuild.sh: use .dlcache subdir for dockerized ccache

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-05 Tim Janik # f3c1f478be1

MISC: Makefile.mk: build-assets: build from sources in $(TARBALL)

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-04 Tim Janik # e25a87bde3b

MISC: Makefile.mk: record and use artifacts in build-assets

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-06 Tim Janik # d091a081cce

MISC: Makefile.mk: add 'build-version' rule

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-04 Tim Janik # 61d6d4aedd1

MISC: Makefile.mk: call version.sh --make-nightly for nightly builds

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-03 Tim Janik # 93338790a2c

MISC: Makefile.mk: check nightly versions

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-03 Tim Janik # c4130d9562e

MISC: Makefile.mk: add 'versioned-manuals' rule

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-05 Tim Janik # ef959ead459

DOC: Makefile.mk: use packaged doc/copyright if Git is missing

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-06 Tim Janik # 445d9612287

GITHUB: workflows/testing.yml: build with --no-tex and SKIP_LATEX=true

Only the PDF manuals need Tex, skipping LaTex installation
significantly speeds up the CI builds.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-06 Tim Janik # 550c7640a09

MISC: dbuild.sh: add --no-tex (replaces --tex)

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-06 Tim Janik # 8727ad1c0ac

MISC: Dockerfile-apt: default to building with Tex

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-05 Tim Janik # 39d6d0805ba

DOC: Makefile.mk: build PDF manuals, unless SKIP_LATEX=true

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-05 Tim Janik # fe9e20751e9

DOC: Makefile.mk: skip misc/mkcopyright.py if .git is not present

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-06 Tim Janik # 14a45b2b848

MISC: mkdeb.sh: use `misc/version.sh --commit-hash` instead of git

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-06 Tim Janik # 0a099f33448

MISC: version.sh: add --commit-hash

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-05 Tim Janik # cc98c0a8dad

MISC: version.sh: remove extra version printout for --make-nightly

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-04 Tim Janik # 0b7889e0820

MISC: version.sh: add --help and --make-nightly

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-03 Tim Janik # fc530c2a557

MISC: version.sh: use the same COMMITINFO for archives and .git repos

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-05 Tim Janik # 37630198eb1

Makefile.mk: dist: allow packaging with NEWS.md worktree changes

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-05 Tim Janik # e204634f248

Makefile.mk: simplify make dist

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-05 Tim Janik # f2898bc7046

Makefile.mk: add hard dependency on ctags-universal

Builds from Git need ctags-universal to reliably generate TAGS for
make dist.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-04 Tim Janik # e0d0ce08298

Makefile.mk: provide $(builddir) and $>/ early on

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-03 Tim Janik # 942d9d663dd

Makefile.mk: check misc/version.sh execution

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-03 Tim Janik # 3eed9e02847

ASE: Makefile.mk: add missing minizip/mz_zip.h dependency

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-02 Tim Janik # d91c2d9d72b

DOC: copyright.ini: list freeverb sources under Public Domain dedication

Signed-off-by: Tim Janik <timj@gnu.org>

2022-08-02 Tim Janik # 162cb9bccba

DEVICES: freeverb/freeverb.cc: license under MPL-2.0

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-31 Tim Janik # 554794d7f85

Merge branch 'freeverb'

* freeverb:
  DEVICES: freeverb/freeverb.cc: turn into a working AudioProcessor for Ase
  DEVICES: freeverb/freeverb.cc: make query_info() const, i.e. MT-Safe
  DEVICES: freeverb/freeverb.cc: move all code completely into Anon namespace
  DEVICES: freeverb/freeverb.cc: use explicit add_param() IDs and fix arguments
  DEVICES: freeverb: implement STK and VLC damping
	Avoid reinforcing feedback loop in the original damping code,
	by providing VLC and STK damping modes. The latter is likely
	closest to the original intention so it is now the default.
	This also reorders some parameters and removes the original
	freezing mode, that does not really make sense for Processors.
  DEVICES: freeverb/freeverb.cc: add Freeverb Processor
  DEVICES: freeverb/revmodel.cpp: fix missing `int i` decls
  DEVICES: freeverb/Freeverb*: remove unused vst files
  DEVICES: freeverb/: fix up whitespace and \n without \r everywhere
  DEVICES: freeverb/: Freeverb - free public domain reverb SOURCE CODE
	Freeverb - Free, studio-quality reverb SOURCE CODE in the public domain
	Written by Jezar at Dreampoint - http://www.dreampoint.co.uk
  DEVICES: freeverb/Makefile.mk: add source file to devices/4ase.ccfiles
  DEVICES: freeverb/GNUmakefile: allow subdir builds
  DEVICES: Makefile.mk: add dependencies, clean rule, etc for devices/ sources
  DEVICES: blepsynth/Makefile.mk: simply add source files to devices/4ase.ccfiles
  UI: b/contextmenu.vue: allow 0 as valid menuitem.uri value
  UI: b/cliplist.vue: only call non-null Shell.piano_current_tick()
  README.md: fix manual link

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-30 Tim Janik # a94769b75f1

DEVICES: freeverb/freeverb.cc: turn into a working AudioProcessor for Ase

Signed-off-by: Tim Janik <timj@gnu.org>

2020-09-23 Tim Janik # 61c6c50a41d

DEVICES: freeverb/freeverb.cc: make query_info() const, i.e. MT-Safe

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-10 Tim Janik # 56b742a1106

DEVICES: freeverb/freeverb.cc: move all code completely into Anon namespace

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-09 Tim Janik # c2bfe139d15

DEVICES: freeverb/freeverb.cc: use explicit add_param() IDs and fix arguments

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-09 Tim Janik # 69a005460e8

DEVICES: freeverb: implement STK and VLC damping

Avoid reinforcing feedback loop in the original damping code,
by providing VLC and STK damping modes. The latter is likely
closest to the original intention so it is now the default.
This also reorders some parameters and removes the original
freezing mode, that does not really make sense for Processors.

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-09 Tim Janik # 9017a2d3e2f

DEVICES: freeverb/freeverb.cc: add Freeverb Processor

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-09 Tim Janik # 862b79fdc54

DEVICES: freeverb/revmodel.cpp: fix missing `int i` decls

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-09 Tim Janik # b9e48182e1e

DEVICES: freeverb/Freeverb*: remove unused vst files

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-09 Tim Janik # 3bae4f629af

DEVICES: freeverb/: fix up whitespace and \n without \r everywhere

Signed-off-by: Tim Janik <timj@gnu.org>

2000-05-24 Jeremy Wakefield # d221bb05512

DEVICES: freeverb/: Freeverb - free public domain reverb SOURCE CODE

Freeverb - Free, studio-quality reverb SOURCE CODE in the public domain
Written by Jezar at Dreampoint - http://www.dreampoint.co.uk

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-30 Tim Janik # 05941eb2fd1

DEVICES: freeverb/Makefile.mk: add source file to devices/4ase.ccfiles

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-30 Tim Janik # 1c44507fdcd

DEVICES: freeverb/GNUmakefile: allow subdir builds

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-30 Tim Janik # 00be5d77afc

DEVICES: Makefile.mk: add dependencies, clean rule, etc for devices/ sources

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-30 Tim Janik # 834c98d3db3

DEVICES: blepsynth/Makefile.mk: simply add source files to devices/4ase.ccfiles

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-30 Tim Janik # 817024fe85c

UI: b/contextmenu.vue: allow 0 as valid menuitem.uri value

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-30 Tim Janik # 3d708f70c71

UI: b/cliplist.vue: only call non-null Shell.piano_current_tick()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-30 Tim Janik # c066025b50a

README.md: fix manual link

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-29 Tim Janik # cc1cb08ab20

Merge branch 'jack-driver'

* jack-driver:
  DOC: ch-install.md: merge jack howto into driver-setup section
  DOC: ch-install.md: add chapter about download and installation
  ASE: main.cc: print the real executable_name() for --version and usage
  ASE: driver.cc: load jackdriver.so
  ASE: Makefile.mk: optionally build jackdriver.so
  MISC: config-checks.mk: check if jack.pc >= 0.125.0 is present
	Jack 0.125.0 ships with Ubuntu-20.04.
  ASE: driver-jack.cc: turn into a working PCM driver for Ase
  ASE: driver-jack.cc: adapto to Ase namespace
  ASE: merge original Jack driver by Stefan Westerfeld
	  Initial version of Jack driver using the new driver API
	  Add minimal jack howto
	  Block SIGPIPE to avoid crashes when jackd dies
	  Driver: return read and write latency for a pcm driver separately
		For instance for synchronizing the play position pointer ui with the audio
		buffering, you want to know how much write latency you have, but don't care
		about the amount of read latency.
	  Add list with possible improvements from PR 31
		https://github.com/tim-janik/beast/pull/31
	  Add some minor fixes as requested in review
  ASE: engine.cc: consistently calculate buffer size for multiple channels
  ASE: datautils.hh: add fast_copy() for floats and ints
  ASE: driver-alsa.cc: adjust debug messages, remove unused variable
  ASE: main.cc: require command line options to enable JSIPC logging

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-29 Tim Janik # 0788b89a319

DOC: ch-install.md: merge jack howto into driver-setup section

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-29 Tim Janik # f6668f5a32f

DOC: ch-install.md: add chapter about download and installation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-29 Tim Janik # 8ac84cae4e3

ASE: main.cc: print the real executable_name() for --version and usage

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-29 Tim Janik # 3b989073be9

ASE: driver.cc: load jackdriver.so

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-29 Tim Janik # 16f67f7ae44

ASE: Makefile.mk: optionally build jackdriver.so

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-29 Tim Janik # 591025bd181

MISC: config-checks.mk: check if jack.pc >= 0.125.0 is present

Jack 0.125.0 ships with Ubuntu-20.04.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-29 Tim Janik # 1a807e388f8

ASE: driver-jack.cc: turn into a working PCM driver for Ase

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-18 Tim Janik # acfbca65b59

ASE: driver-jack.cc: adapto to Ase namespace

Signed-off-by: Tim Janik <timj@gnu.org>

2019-09-19 Stefan Westerfeld # c793152f9c0

ASE: merge original Jack driver by Stefan Westerfeld

  Initial version of Jack driver using the new driver API
  Add minimal jack howto
  Block SIGPIPE to avoid crashes when jackd dies
  Driver: return read and write latency for a pcm driver separately
	For instance for synchronizing the play position pointer ui with the audio
	buffering, you want to know how much write latency you have, but don't care
	about the amount of read latency.
  Add list with possible improvements from PR 31
	https://github.com/tim-janik/beast/pull/31
  Add some minor fixes as requested in review

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>
Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-29 Tim Janik # 35b4683cf53

ASE: engine.cc: consistently calculate buffer size for multiple channels

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-29 Tim Janik # 6461bf663fb

ASE: datautils.hh: add fast_copy() for floats and ints

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-29 Tim Janik # 096df8d8e33

ASE: driver-alsa.cc: adjust debug messages, remove unused variable

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-29 Tim Janik # 45d6416d909

ASE: main.cc: require command line options to enable JSIPC logging

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-29 Tim Janik # 61e8d0544ff

Merge branch 'version-fixes'

* version-fixes:
  ASE: remove unneeded version postfix from AnklangSynthEngine
  MISC: version.sh: fix development postfix for shallow versions
  MISC: version.sh: fix build id with development postfix
  MISC: Makefile.mk, version.sh: fix release tag missing 'v'-prefix

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-29 Tim Janik # 6f94c9bf192

ASE: remove unneeded version postfix from AnklangSynthEngine

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-26 Tim Janik # c1dc2b8c6e0

MISC: version.sh: fix development postfix for shallow versions

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-26 Tim Janik # c1a34ca41b1

MISC: version.sh: fix build id with development postfix

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-26 Tim Janik # ff465e21493

MISC: Makefile.mk, version.sh: fix release tag missing 'v'-prefix

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-26 Tim Janik # bf4218380ff

NEWS.md: Anklang 0.1.0

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-26 Tim Janik # 76bfa6d1507

Merge branch 'desktop-file-fixes'

* desktop-file-fixes:
  GITHUB: workflows/testing.yml: remove action-docker-layer-caching
	Lately, action-docker-layer-caching@v0.0.11 keeps failing due to lack of
	space and that way wastes several minutes of build time.
  MISC: mkdeb.sh: add missing update-desktop-database for /usr/local/
  MISC: mkdeb.sh: use ZSTD compression for Debian packages

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-26 Tim Janik # 57bcf49dd60

GITHUB: workflows/testing.yml: remove action-docker-layer-caching

Lately, action-docker-layer-caching@v0.0.11 keeps failing due to lack of
space and that way wastes several minutes of build time.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-25 Tim Janik # c262f6490db

MISC: mkdeb.sh: add missing update-desktop-database for /usr/local/

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-25 Tim Janik # 503a4c4d2d5

MISC: mkdeb.sh: use ZSTD compression for Debian packages

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-25 Tim Janik # ccd830c4d5e

Merge branch 'cli-projects'

* cli-projects:
  UI: startup.js: load command line files
  ELECTRON: main.js: provide 'files' to the UI
  MISC: mkdeb.sh: run update-mime-database for usr/local after installation
  MISC: anklang.desktop: allow starting Anklang with project files

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-25 Tim Janik # c7b51b03627

UI: startup.js: load command line files

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-25 Tim Janik # 65afc209716

ELECTRON: main.js: provide 'files' to the UI

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-24 Tim Janik # 4f2b240aeaa

MISC: mkdeb.sh: run update-mime-database for usr/local after installation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-24 Tim Janik # ae8340b9903

MISC: anklang.desktop: allow starting Anklang with project files

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-25 Tim Janik # 1814efb78c7

Merge branch 'build-fixups'

* build-fixups:
  MISC: Makefile.mk: allow simple build-assets test builds
  ASE: main.cc: simplify --check option
  UI: b/aboutdialog.vue: properly show anklang version and sound engine build_id
  ASE: api.hh: export Server.get_build_id()
  MISC: Makefile.mk: add upload-release
  MISC: Makefile.mk: move build-assets rule
  MISC: Makefile.mk: remove DETAILED_VERSION from build-assets
  MISC: Makefile.mk: pass CHECKOUT_HEAD into build-assets
  MISC: Makefile.mk: add build-release
  MISC: Makefile.mk: adjust version tag pattern
  MISC: dbuild.sh: support podman, this needs PODMAN_USERNS=keep-id for volumes
  MISC: version.sh: add --release
  MISC: version.sh: improve error message
  MISC: version.sh: postfix devel versions and use git-describe in git archives
  ASE: Makefile.mk: use versioned filename for ase/buildversion-$(version).cc
  MISC: config-checks.mk: fluidsynth is not currently needed
  MISC: mkdeb.sh: fluidsynth is not currently needed
  MISC: Dockerfile-apt: fluidsynth is not currently needed
  GITHUB: workflows/ircbot.py: adjust mIRC RESET code to work without digits
	The Thunderbird IRC client hides text if mIRC default-fg+default-bg is sent,
	so instead, skip the numbers during reset, color codes are currently not
	followed by any digits anyway.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-24 Tim Janik # a2b770c119d

MISC: Makefile.mk: allow simple build-assets test builds

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-24 Tim Janik # 7255818b2a3

ASE: main.cc: simplify --check option

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-23 Tim Janik # 7326c73049d

UI: b/aboutdialog.vue: properly show anklang version and sound engine build_id

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-23 Tim Janik # 1ab8fbbe2a5

ASE: api.hh: export Server.get_build_id()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-23 Tim Janik # 89f9a224860

MISC: Makefile.mk: add upload-release

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-23 Tim Janik # 3422acd6c74

MISC: Makefile.mk: move build-assets rule

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-23 Tim Janik # 0eabcf1d879

MISC: Makefile.mk: remove DETAILED_VERSION from build-assets

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-23 Tim Janik # 4fdd89875a9

MISC: Makefile.mk: pass CHECKOUT_HEAD into build-assets

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-23 Tim Janik # 8ec45209fcd

MISC: Makefile.mk: add build-release

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-23 Tim Janik # 45dc640058c

MISC: Makefile.mk: adjust version tag pattern

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-23 Tim Janik # 40a2b0f9fab

MISC: dbuild.sh: support podman, this needs PODMAN_USERNS=keep-id for volumes

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-23 Tim Janik # c0961bee0f8

MISC: version.sh: add --release

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-23 Tim Janik # 3f4289d4c76

MISC: version.sh: improve error message

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-23 Tim Janik # e2dbd4681ab

MISC: version.sh: postfix devel versions and use git-describe in git archives

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-24 Tim Janik # 4ccdb508038

ASE: Makefile.mk: use versioned filename for ase/buildversion-$(version).cc

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-24 Tim Janik # 314037f7fc6

MISC: config-checks.mk: fluidsynth is not currently needed

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-24 Tim Janik # 530bc8dd953

MISC: mkdeb.sh: fluidsynth is not currently needed

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-24 Tim Janik # 11ed5a92328

MISC: Dockerfile-apt: fluidsynth is not currently needed

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-24 Tim Janik # 2de8ce54e30

GITHUB: workflows/ircbot.py: adjust mIRC RESET code to work without digits

The Thunderbird IRC client hides text if mIRC default-fg+default-bg is sent,
so instead, skip the numbers during reset, color codes are currently not
followed by any digits anyway.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-20 Tim Janik # 48efcd4d043

Merge branch '2k-engine-blocks'

* 2k-engine-blocks:
  UI: b/positionview.vue: use fixed width counter and timer to reduce relayouting
	The timer and counter receive frequent telemetry updates, and each update
	triggers a browser layout.
  UI: b/piano-roll.vue: transform indicator according to current tick
  UI: b/cliplist.vue: use $b-piano-roll-indicator
  UI: theme.scss: add $b-piano-roll-indicator color
  UI: b/cliplist.vue: update piano_current_tick if piano_current_clip matches
  UI: b/shell.vue: provide piano_current_clip, piano_current_tick for telemetry
  ASE: driver-alsa.cc: fix some ALSA debug messages
  ASE: driver-alsa.cc: use 384 as minimum period size for pulseaudio
	Avoid dropouts with pulseaudio, which is cannot operate at
	minimum latencies.
  ASE: driver-alsa.cc: allow 2k frame offsets
  ASE: processor.cc: render_block: assert AUDIO_BLOCK_MAX_RENDER_SIZE);
  ASE: engine.cc: use audio driver buffer size and preferences.synth_latency
  ASE: defs.hh: set AUDIO_BLOCK_MAX_RENDER_SIZE to 2k
	Move AUDIO_BLOCK_MAX_RENDER_SIZE out of transport.hh.
  ASE: midilib.cc: allow 2k frame offsets
  ASE: midievent: use 12 frame bits to address ±2k block offsets

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-15 Tim Janik # 3ac5a5b84b4

UI: b/positionview.vue: use fixed width counter and timer to reduce relayouting

The timer and counter receive frequent telemetry updates, and each update
triggers a browser layout.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-15 Tim Janik # 9ddadee1295

UI: b/piano-roll.vue: transform indicator according to current tick

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-15 Tim Janik # d1344b4bb87

UI: b/cliplist.vue: use $b-piano-roll-indicator

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-15 Tim Janik # 758f3117d35

UI: theme.scss: add $b-piano-roll-indicator color

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-15 Tim Janik # 72137051d5d

UI: b/cliplist.vue: update piano_current_tick if piano_current_clip matches

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-15 Tim Janik # efd8f89330d

UI: b/shell.vue: provide piano_current_clip, piano_current_tick for telemetry

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-20 Tim Janik # c7cb1be61b9

ASE: driver-alsa.cc: fix some ALSA debug messages

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-15 Tim Janik # fc55e05ff5b

ASE: driver-alsa.cc: use 384 as minimum period size for pulseaudio

Avoid dropouts with pulseaudio, which is cannot operate at
minimum latencies.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-15 Tim Janik # 47fdfa53ff8

ASE: driver-alsa.cc: allow 2k frame offsets

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-15 Tim Janik # 2aff33792fb

ASE: processor.cc: render_block: assert AUDIO_BLOCK_MAX_RENDER_SIZE);

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-15 Tim Janik # b9f9306d732

ASE: engine.cc: use audio driver buffer size and preferences.synth_latency

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-15 Tim Janik # d6635931229

ASE: defs.hh: set AUDIO_BLOCK_MAX_RENDER_SIZE to 2k

Move AUDIO_BLOCK_MAX_RENDER_SIZE out of transport.hh.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-15 Tim Janik # 6510035bc1a

ASE: midilib.cc: allow 2k frame offsets

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-15 Tim Janik # 15839f3ee11

ASE: midievent: use 12 frame bits to address ±2k block offsets

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-20 Tim Janik # 3999b60813c

Merge branch 'build-fixes'

* build-fixes:
  ASE: gtk2wrap.hh: newer STL needs explicit include <string>
  MISC: dbuild.sh: remove unused gitdir volume
  MISC: dbuild.sh: set CCACHE_DIR=/ootbuild/.ccache/ conditionally for -o <dir>
  MISC: Dockerfile-apt: ENV CCACHE_DIR breaks without a /ootbuild/ volume
  UI: Makefile.mk: avoid race when creating /ui/assets/

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-17 Tim Janik # 24e4a22f472

ASE: gtk2wrap.hh: newer STL needs explicit include <string>

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-07 Tim Janik # 732bd3e1a0c

MISC: dbuild.sh: remove unused gitdir volume

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-07 Tim Janik # 17c69a5283f

MISC: dbuild.sh: set CCACHE_DIR=/ootbuild/.ccache/ conditionally for -o <dir>

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-07 Tim Janik # e7550617570

MISC: Dockerfile-apt: ENV CCACHE_DIR breaks without a /ootbuild/ volume

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-13 Tim Janik # 0cf7e0eef90

UI: Makefile.mk: avoid race when creating /ui/assets/

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-13 Tim Janik # 6324699e5b2

Merge branch 'piano-ctrl-rewrite'

* piano-ctrl-rewrite:
  UI: b/app.js: pick a default clip for the piano roll
  UI: b/piano-ctrl.js: rewrite selection handling and tool implementations
	Describe and consistently apply transactional modifications.
	Process note changes via request queue, with reduced IPC.
	Reimplement drag selection and selection change logic.
	Implement simple paint notes variant for Pen tool.
	Implement Erase drag tool to erase consecutive strokes of notes.
	Implement horizontal selection as modification of rectangular selection.
	Implement SHIFT=add and CONTROL=subtract selection modifiers.
	Handle scroll area changes during selections.
	Implement select-previous and select-next note for ALT+Left and ALT+Right.
	Adjust piano-ctrl menu action handling in piano-roll.
  UI: b/piano-roll.vue: remove focus id handling entirely
  UI: b/piano-roll.vue: enable toolmenu hotkeys on hover
  UI: b/piano-roll.vue: remove unused click handler
  UI: b/piano-roll.vue: use Shell.get_note_cache()
  UI: b/piano-roll.vue: use PointerDrag and scroll events for drag_select()
  UI: b/piano-roll.vue: layout: provide xscroll/yscroll and xposition
  UI: b/clipview.vue: use Shell.get_note_cache()
  UI: b/shell.vue: introduce per clip note cache
  ASE: clip: change_batch: collapse notes, keep selections out of undo
  ASE: clip: rewrite change_batch, properly collapse, compress notes for undo
  ASE: clip: add stringify_clip_note()
  ASE: api.hh: Clip: remove insert_note, change_note, toggle_note
  ASE: eventlist.hh: add replace() and copy() and equals() for event vector
  ASE: compress: zstd: support compress levels and arbitrary memory regions
  ASE: project.cc: print undo memory and execution info for ASE_DEBUG=undo
	Add UDEBUG() to project.cc to print info for ASE_DEBUG=undo.
	Add Project.undo_size_guess() to make an uneducated undo storage guess.
	Add Project.undo_mem_counter to account for extra undo allocations without overhead.
	This only works reliable if *one* project is examined per runtime.
  ASE: jsonapi.cc: fix logging order to reflect message order
  ASE: jsonapi.cc: coalesce notifies during IPC calls
  ASE: clip.cc: use emit_notify()
  ASE: object: introduce emit_notify() and CoalesceNotifies
  ASE: platform: Stopwatch: print milliseconds and fix empty message in stop()
  ASE: api.hh: add undogroup to change_batch(), ignore empty modifications
  UI: util.js: add coalesced_events()
  UI: util.js: add raster_line()
  UI: util.js: cancel PointerDrag with Escape key
  UI: util.js: allow functions as PointerDrag method argument
  UI: util.js: PointerDrag: use configurable method and handle scroll events
  JSONIPC: jsonipc.js: use an $id -> WeakRef map to mainatin object identities

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-08 Tim Janik # 0aaa044582b

UI: b/app.js: pick a default clip for the piano roll

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-08 Tim Janik # ce92823d8c4

UI: b/piano-ctrl.js: rewrite selection handling and tool implementations

Describe and consistently apply transactional modifications.
Process note changes via request queue, with reduced IPC.
Reimplement drag selection and selection change logic.
Implement simple paint notes variant for Pen tool.
Implement Erase drag tool to erase consecutive strokes of notes.
Implement horizontal selection as modification of rectangular selection.
Implement SHIFT=add and CONTROL=subtract selection modifiers.
Handle scroll area changes during selections.
Implement select-previous and select-next note for ALT+Left and ALT+Right.
Adjust piano-ctrl menu action handling in piano-roll.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-13 Tim Janik # ba9832a88fe

UI: b/piano-roll.vue: remove focus id handling entirely

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-13 Tim Janik # 11bbfb32d6c

UI: b/piano-roll.vue: enable toolmenu hotkeys on hover

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-13 Tim Janik # 90441ee1b30

UI: b/piano-roll.vue: remove unused click handler

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-09 Tim Janik # dd36d54cd42

UI: b/piano-roll.vue: use Shell.get_note_cache()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-08 Tim Janik # 24bc1606c30

UI: b/piano-roll.vue: use PointerDrag and scroll events for drag_select()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-08 Tim Janik # ecc324c3146

UI: b/piano-roll.vue: layout: provide xscroll/yscroll and xposition

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-09 Tim Janik # a3e486e1e3c

UI: b/clipview.vue: use Shell.get_note_cache()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-09 Tim Janik # 2bdd04abd27

UI: b/shell.vue: introduce per clip note cache

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-12 Tim Janik # 2ae721e2ba3

ASE: clip: change_batch: collapse notes, keep selections out of undo

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-11 Tim Janik # 7cd33878e1b

ASE: clip: rewrite change_batch, properly collapse, compress notes for undo

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-11 Tim Janik # b59a1b60be9

ASE: clip: add stringify_clip_note()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-11 Tim Janik # 26f5e61834b

ASE: api.hh: Clip: remove insert_note, change_note, toggle_note

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-11 Tim Janik # cef7337fc6e

ASE: eventlist.hh: add replace() and copy() and equals() for event vector

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-11 Tim Janik # 07fd6465b88

ASE: compress: zstd: support compress levels and arbitrary memory regions

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-10 Tim Janik # f600660a4cc

ASE: project.cc: print undo memory and execution info for ASE_DEBUG=undo

Add UDEBUG() to project.cc to print info for ASE_DEBUG=undo.
Add Project.undo_size_guess() to make an uneducated undo storage guess.
Add Project.undo_mem_counter to account for extra undo allocations without overhead.
This only works reliable if *one* project is examined per runtime.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-12 Tim Janik # 3da478232ce

ASE: jsonapi.cc: fix logging order to reflect message order

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-09 Tim Janik # f1778717132

ASE: jsonapi.cc: coalesce notifies during IPC calls

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-09 Tim Janik # c6d417250d6

ASE: clip.cc: use emit_notify()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-09 Tim Janik # 004b0a823b1

ASE: object: introduce emit_notify() and CoalesceNotifies

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-09 Tim Janik # 223597bd0ef

ASE: platform: Stopwatch: print milliseconds and fix empty message in stop()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-09 Tim Janik # 2d8e9e2ffb3

ASE: api.hh: add undogroup to change_batch(), ignore empty modifications

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-13 Tim Janik # f0578bfc1fd

UI: util.js: add coalesced_events()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-13 Tim Janik # 3b93dc56c57

UI: util.js: add raster_line()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-13 Tim Janik # 13ac0d25ef8

UI: util.js: cancel PointerDrag with Escape key

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-08 Tim Janik # 9168bcf6976

UI: util.js: allow functions as PointerDrag method argument

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-08 Tim Janik # 1d22a222507

UI: util.js: PointerDrag: use configurable method and handle scroll events

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-09 Tim Janik # f83385853b6

JSONIPC: jsonipc.js: use an $id -> WeakRef map to mainatin object identities

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-07 Tim Janik # af4b3f26ba1

Merge branch 'nightly-manuals'

* nightly-manuals:
  .gitignore: ignore .dlcache/
  MISC: Makefile.mk: upload-nightly: use wildcard for asset uploads
  MISC: Makefile.mk: add anklang-manual.pdf and anklang-internals.pdf to nightly
  MISC: Makefile.mk: preserve .ccache/ in build dir
  MISC: Dockerfile-apt: allow ccache use under /ootbuild/.ccache/
  MISC: Makefile.mk: set WITH_LATEX if xelatex is present
  MISC: Dockerfile-apt: install texlive if TEX=y
  MISC: dbuild.sh: add TEX=y build arg for --tex
  ASE: atomics.hh: fix potential UB

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-07 Tim Janik # 66c0b573498

.gitignore: ignore .dlcache/

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-07 Tim Janik # d2244589396

MISC: Makefile.mk: upload-nightly: use wildcard for asset uploads

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-07 Tim Janik # 25d422f5530

MISC: Makefile.mk: add anklang-manual.pdf and anklang-internals.pdf to nightly

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-07 Tim Janik # 94e3acfd16d

MISC: Makefile.mk: preserve .ccache/ in build dir

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-07 Tim Janik # 7fed6c0dbe2

MISC: Dockerfile-apt: allow ccache use under /ootbuild/.ccache/

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-07 Tim Janik # 6f0395f69a9

MISC: Makefile.mk: set WITH_LATEX if xelatex is present

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-07 Tim Janik # 6759a764d81

MISC: Dockerfile-apt: install texlive if TEX=y

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-07 Tim Janik # ffa94134b9c

MISC: dbuild.sh: add TEX=y build arg for --tex

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-07 Tim Janik # 07aef6ff2ba

ASE: atomics.hh: fix potential UB

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-07 Tim Janik # 7006b70971d

Merge branch 'clap-parameters'

* clap-parameters:
  UI: b/deviceeditor.vue: split very large parameter groups
	Plugins with 10k+ properties are killing the current UI.
  ASE: clapdevice: use improved nick finder property_guess_nick()
  ASE: properties: property_guess_nick: reduce label to a few letters
	This attempts to extract significant digits and letters from a
	multi word label. The extractions are recombined to produce an
	abbreviation of up to 3 letters.
  ASE: clapplugin.cc: use AtomicBits for param change notification
  ASE: clapplugin: add params as Property, handle CLAP event_param_value/get/set
  ASE: processor: support atomic_bits_resize(), _iter() and atomic_bit_notify()
  ASE: atomics: add AtomicBits, a vector of atomic bits
  ASE: platform: add Stopwatch, a simple enter/exit timer for functions
  ASE: path: add stringappend() and allow memwrite() to append
  ASE: regex: add Re::sub() with back references
  ASE: regex: rename Re::subn()
  ASE: clapdevice: implement ClapPropertyImpl
  ASE: regex: implement Re::findall()
  ASE: device: remove duplicate access_property() implementation
  ASE: engine: fix misplaced assertion
  ASE: api.hh: make only Gadget.access_properties() pure virtual
	Avoid forcing derived object to reimplement access_property(),
	but allo reimplementing list_properties().
  README.md: checkmark CLAP support
  ASE: clapplugin: move ClapParamInfo definition into header file

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-07 Tim Janik # 2204aceb2c2

UI: b/deviceeditor.vue: split very large parameter groups

Plugins with 10k+ properties are killing the current UI.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-07 Tim Janik # 878e8cbf807

ASE: clapdevice: use improved nick finder property_guess_nick()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-07 Tim Janik # e9f10564d85

ASE: properties: property_guess_nick: reduce label to a few letters

This attempts to extract significant digits and letters from a
multi word label. The extractions are recombined to produce an
abbreviation of up to 3 letters.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-07 Tim Janik # 5f651677534

ASE: clapplugin.cc: use AtomicBits for param change notification

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-07 Tim Janik # fc6d3c2c36d

ASE: clapplugin: add params as Property, handle CLAP event_param_value/get/set

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-06 Tim Janik # 543fddff704

ASE: processor: support atomic_bits_resize(), _iter() and atomic_bit_notify()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-06 Tim Janik # 8d82e48635f

ASE: atomics: add AtomicBits, a vector of atomic bits

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-05 Tim Janik # 405c9025132

ASE: platform: add Stopwatch, a simple enter/exit timer for functions

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-05 Tim Janik # 2562f8614b4

ASE: path: add stringappend() and allow memwrite() to append

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-05 Tim Janik # 781bf16d1e1

ASE: regex: add Re::sub() with back references

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-05 Tim Janik # 29cbd82d7d7

ASE: regex: rename Re::subn()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-04 Tim Janik # 0e3d55f4b73

ASE: clapdevice: implement ClapPropertyImpl

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-04 Tim Janik # 7218c5e307c

ASE: regex: implement Re::findall()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-04 Tim Janik # fe4c805db2c

ASE: device: remove duplicate access_property() implementation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-04 Tim Janik # ecd1085a447

ASE: engine: fix misplaced assertion

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-04 Tim Janik # 648ba13ee33

ASE: api.hh: make only Gadget.access_properties() pure virtual

Avoid forcing derived object to reimplement access_property(),
but allo reimplementing list_properties().

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-04 Tim Janik # 070e6fa702d

README.md: checkmark CLAP support

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-04 Tim Janik # 3e07350a9b8

ASE: clapplugin: move ClapParamInfo definition into header file

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-03 Tim Janik # f00dfa71d6d

Merge branch 'clap-posix-fd-support'

* clap-posix-fd-support:
  ASE: clapplugin.cc: implement CLAP_EXT_POSIX_FD_SUPPORT
  ASE: loop: fix spurious IO source removal when its pollfd closes
  MISC: config-uname.mk: use '/.' to display installation dirs, not '/...'
  ASE: clapplugin.cc: avoid deinit() after init() returned false
	The CLAP spec recently clarified this:
	https://github.com/free-audio/clap/blob/e60671bec244f794e52c4d2c13a374c79883c51b/include/clap/entry.h#L49
  UI: b/piano-ctrl.js: guard against UI layout changes before event delivery
  UI: b/knob.vue: fix Shell.data_bubble references
  README.md: slight rearrangement of badges

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-03 Tim Janik # f8bab260892

ASE: clapplugin.cc: implement CLAP_EXT_POSIX_FD_SUPPORT

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-03 Tim Janik # 08a391660a3

ASE: loop: fix spurious IO source removal when its pollfd closes

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-03 Tim Janik # a5293ff1b92

MISC: config-uname.mk: use '/.' to display installation dirs, not '/...'

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-03 Tim Janik # 54a5fa0855b

ASE: clapplugin.cc: avoid deinit() after init() returned false

The CLAP spec recently clarified this:
https://github.com/free-audio/clap/blob/e60671bec244f794e52c4d2c13a374c79883c51b/include/clap/entry.h#L49

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-03 Tim Janik # 1af2ee0e73c

UI: b/piano-ctrl.js: guard against UI layout changes before event delivery

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-03 Tim Janik # 88235a6a8ed

UI: b/knob.vue: fix Shell.data_bubble references

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-03 Tim Janik # 5bd3120fa6e

README.md: slight rearrangement of badges

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-03 Tim Janik # 18888aa9b4c

Merge branch 'serialize-clap-plugins'

* serialize-clap-plugins:
  ASE: project.cc: use Error::BAD_PROJECT where appropriate
  ASE: storage.cc: fix minizip reporting broken archives as ENOENT
  ASE: api.hh: add Error::BAD_PROJECT
  ASE: api.hh: add RETRY, BROKEN_ARCHIVE errors, improve errno mapping
  UI: b/menubar.vue: fix 'Save' to use the last known filename
  UI: b/app.js: fix error dialog
  UI: theme.scss: hide Mozilla spin button arrows (unfit for dark theme)
  UI: b/app.js: show spinner while saving projects
  UI: b/shell.vue: add show_spinner() and hide_spinner() to display spinner.svg
  UI: eslintrc.js: support Shell global variable
  UI: b/app.js: define Shell, leave bubble handling to the Shell
  UI: b/shell.vue: introduce #b-shell-bubble-layer
  UI: b/databubble.vue: move bubbles into #b-shell-bubble-layer
  UI: Makefile.mk: extract keyframes from spinner.svg into spinner.scss
  UI: assets/spinner.svg: add "busy" indicator drawing
  UI: theme.scss, assets/spin-arrows.svg: rename & adjust spin-button arrows
  ASE: clapdevice: serialize CLAP plugin state and parameters
	Squashed commits to serialize plugin state:
		Serialize CLAP param values
		Add blob reading + writing to serialize()
		Serialize plugin state
		Cleanup CLAP plugin state serialization
  ASE: clapplugin: load and save plugin state and parameters
	Squashed commits to load/save plugin state:
		Add debug statements about dlopen/dlclose
		Scan, update, load and save parameters
		Move ClapFileHandle class definition into clapplugin.cc
		Keep ClapParamUpdateS around for activate()
		implement plugin_state load/save
  ASE: compress.cc: implement adaptive zstd compression, refine levels
	Streaming zstd compression will end a frame and lower the compression
	level at certain size to keep stream processing fairly fast.
  ASE: path.cc: stringread: properly handle maxlength
  ASE: storage: store_file: avoid ZIP-compressing compressed files
  ASE: project: add writer_add_file()
  ASE: project: add loader_archive() and writer_file_name()
  ASE: compress: add stream_writer_zstd() and stream_reader_zstd()
  ASE: storage: add stream_reader_zip_member() and stream_writer_create_file()
  ASE: storage.hh: add class StreamReader and class StreamWriter
  ASE: storage: add StorageWriter::store_file()
  ASE: defs.hh: add StreamWriter and StreamReader decls
  ASE: path: move rmrf() here
  ASE: formatter.cc: support (void*) as %s pointer
  ASE: testing.hh: avoid double evaluation of TCMP() arguments
  ASE: path.cc: check(): use L or h for links, S for sockets, z and s for sizes
  ASE: api.hh: add Device._project() and Device._track()
  ASE: utils.hh: add IterableContainer.index_of()
  ASE: storage.cc: preserve cachedir of live PIDs, detect via kill() or /proc/pid
  ASE: api.hh: add OPERATION_BUSY, renumber Error codes
  ASE: project: save_dir: provide temporary cachedir, cleanup stale dirs
  ASE: storage: rename stale cachedir cleanup, allow specific directory cleanup
  ASE: engine: add BorrowedPtr<> to use in audio-thread and delete in main-thread
  ASE: defs.hh: add ClapParamUpdate
  ASE: value: add is_numeric()
  ASE: device: load plugin state during insert called from serialize
  ASE: api.hh: add Device._activate() to activate devices before process() starts
  ASE: processor.cc: emit "params:change" event on Device for each PARAMCHANGE
  ASE: engine.cc: process async_jobs before const_jobs readouts

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-03 Tim Janik # 6ae020017ff

ASE: project.cc: use Error::BAD_PROJECT where appropriate

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-03 Tim Janik # cafaef91dfb

ASE: storage.cc: fix minizip reporting broken archives as ENOENT

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-03 Tim Janik # 50da4988b57

ASE: api.hh: add Error::BAD_PROJECT

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-03 Tim Janik # 3a90e001607

ASE: api.hh: add RETRY, BROKEN_ARCHIVE errors, improve errno mapping

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-03 Tim Janik # be5431212e1

UI: b/menubar.vue: fix 'Save' to use the last known filename

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-03 Tim Janik # f586bd38d9c

UI: b/app.js: fix error dialog

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-02 Tim Janik # 2a49e2b1de1

UI: theme.scss: hide Mozilla spin button arrows (unfit for dark theme)

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-02 Tim Janik # a849d4afb5d

UI: b/app.js: show spinner while saving projects

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-02 Tim Janik # 02d7f7f1387

UI: b/shell.vue: add show_spinner() and hide_spinner() to display spinner.svg

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-02 Tim Janik # 66a87243c70

UI: eslintrc.js: support Shell global variable

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-02 Tim Janik # da4a736e45c

UI: b/app.js: define Shell, leave bubble handling to the Shell

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-02 Tim Janik # 385cc00bfb3

UI: b/shell.vue: introduce #b-shell-bubble-layer

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-02 Tim Janik # 596f5592695

UI: b/databubble.vue: move bubbles into #b-shell-bubble-layer

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-02 Tim Janik # b7cf4ffc11e

UI: Makefile.mk: extract keyframes from spinner.svg into spinner.scss

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-02 Tim Janik # 2e0a277b37a

UI: assets/spinner.svg: add "busy" indicator drawing

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-02 Tim Janik # 71a98eae88c

UI: theme.scss, assets/spin-arrows.svg: rename & adjust spin-button arrows

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-26 Tim Janik # 9c07ecbfa15

ASE: clapdevice: serialize CLAP plugin state and parameters

Squashed commits to serialize plugin state:
	Serialize CLAP param values
	Add blob reading + writing to serialize()
	Serialize plugin state
	Cleanup CLAP plugin state serialization

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-26 Tim Janik # 3949ca52458

ASE: clapplugin: load and save plugin state and parameters

Squashed commits to load/save plugin state:
	Add debug statements about dlopen/dlclose
	Scan, update, load and save parameters
	Move ClapFileHandle class definition into clapplugin.cc
	Keep ClapParamUpdateS around for activate()
	implement plugin_state load/save

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-01 Tim Janik # de78e0ff3db

ASE: compress.cc: implement adaptive zstd compression, refine levels

Streaming zstd compression will end a frame and lower the compression
level at certain size to keep stream processing fairly fast.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-01 Tim Janik # 444ef65e718

ASE: path.cc: stringread: properly handle maxlength

Signed-off-by: Tim Janik <timj@gnu.org>

2022-07-01 Tim Janik # 742d532eee8

ASE: storage: store_file: avoid ZIP-compressing compressed files

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-29 Tim Janik # bf34885597b

ASE: project: add writer_add_file()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-29 Tim Janik # a50fab3ebb1

ASE: project: add loader_archive() and writer_file_name()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-29 Tim Janik # 56855e304ea

ASE: compress: add stream_writer_zstd() and stream_reader_zstd()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-29 Tim Janik # e1b33620973

ASE: storage: add stream_reader_zip_member() and stream_writer_create_file()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-30 Tim Janik # 02edc13ecd5

ASE: storage.hh: add class StreamReader and class StreamWriter

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-30 Tim Janik # 17fa4de7a77

ASE: storage: add StorageWriter::store_file()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-29 Tim Janik # 5a4aefb95ae

ASE: defs.hh: add StreamWriter and StreamReader decls

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-29 Tim Janik # 2f7b93b33e6

ASE: path: move rmrf() here

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-30 Tim Janik # 7785e848986

ASE: formatter.cc: support (void*) as %s pointer

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-29 Tim Janik # 18b13f99af9

ASE: testing.hh: avoid double evaluation of TCMP() arguments

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-29 Tim Janik # 71c457a4578

ASE: path.cc: check(): use L or h for links, S for sockets, z and s for sizes

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-29 Tim Janik # 89ae3154e42

ASE: api.hh: add Device._project() and Device._track()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-29 Tim Janik # 1a36acca2ac

ASE: utils.hh: add IterableContainer.index_of()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-28 Tim Janik # 88a3741fec2

ASE: storage.cc: preserve cachedir of live PIDs, detect via kill() or /proc/pid

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-28 Tim Janik # f042d9cc24a

ASE: api.hh: add OPERATION_BUSY, renumber Error codes

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-28 Tim Janik # e30fa2cb885

ASE: project: save_dir: provide temporary cachedir, cleanup stale dirs

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-28 Tim Janik # f1aef6bb812

ASE: storage: rename stale cachedir cleanup, allow specific directory cleanup

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-28 Tim Janik # 17225b46292

ASE: engine: add BorrowedPtr<> to use in audio-thread and delete in main-thread

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-27 Tim Janik # 51dd0f5ed73

ASE: defs.hh: add ClapParamUpdate

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-27 Tim Janik # 296f9a16e72

ASE: value: add is_numeric()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-26 Tim Janik # 522002dc0e2

ASE: device: load plugin state during insert called from serialize

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-26 Tim Janik # de0a687f13e

ASE: api.hh: add Device._activate() to activate devices before process() starts

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-26 Tim Janik # 0fabb532926

ASE: processor.cc: emit "params:change" event on Device for each PARAMCHANGE

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-25 Tim Janik # 378c7fb9f27

ASE: engine.cc: process async_jobs before const_jobs readouts

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-26 Tim Janik # 3b1b26ae467

Merge branch 'relax-json'

* relax-json:
  ASE: server.cc: stringify rc-file as RELAXED to support NAN, Inf, indentation
  ASE: project.cc: stringify projects as RELAXED to support NAN, Inf, indentation
  ASE: jsonapi.cc: stringify methods as STRICT for JS compliant JSON.parse()
  ASE: serialize: stringify STRICT or RELAXED: adds NAN, Inf, indentation
  ASE: serialize.cc: parse with full float precision and relax JSON syntax
  JSONIPC: jsonipc.hh: require STRICT or RELAXED write flag for json*_to_string()
  JSONIPC: testjsonipc.cc: use Jsonipc::rapidjson_parse_flags
  JSONIPC: jsonipc.hh: parse with full float precision and relax syntax

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-26 Tim Janik # 298041b2df8

ASE: server.cc: stringify rc-file as RELAXED to support NAN, Inf, indentation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-26 Tim Janik # 3ce32351bb8

ASE: project.cc: stringify projects as RELAXED to support NAN, Inf, indentation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-26 Tim Janik # a3d8ce4632a

ASE: jsonapi.cc: stringify methods as STRICT for JS compliant JSON.parse()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-26 Tim Janik # 5cc95ce0f1f

ASE: serialize: stringify STRICT or RELAXED: adds NAN, Inf, indentation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-26 Tim Janik # 49968ded30f

ASE: serialize.cc: parse with full float precision and relax JSON syntax

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-26 Tim Janik # dc04a025918

JSONIPC: jsonipc.hh: require STRICT or RELAXED write flag for json*_to_string()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-25 Tim Janik # 2af50b45170

JSONIPC: testjsonipc.cc: use Jsonipc::rapidjson_parse_flags

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-25 Tim Janik # f761677c18c

JSONIPC: jsonipc.hh: parse with full float precision and relax syntax

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-25 Tim Janik # ce566777755

Merge branch 'rapidjson-upgrade'

* rapidjson-upgrade:
  ASE: Makefile.mk: upgrade to rapidjson-232389d4f10 from 2022-05-24
  ASE: Makefile.mk: move rapidjson download here
  ASE: Makefile.mk: move minizip-ng-2.9.0.tar.gz download here
  ASE: Makefile.mk: move websocketpp-0.8.2.tar.gz download here
  MISC: config-checks.mk: cache third-party code in .dlcache/
	Avoid using or depending on various cache directories under $HOME.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-25 Tim Janik # 844ac129bc7

ASE: Makefile.mk: upgrade to rapidjson-232389d4f10 from 2022-05-24

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-25 Tim Janik # 1f9462d8cae

ASE: Makefile.mk: move rapidjson download here

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-25 Tim Janik # 5051d1e7b48

ASE: Makefile.mk: move minizip-ng-2.9.0.tar.gz download here

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-25 Tim Janik # e2be1809b56

ASE: Makefile.mk: move websocketpp-0.8.2.tar.gz download here

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-25 Tim Janik # 7f5fdfd846e

MISC: config-checks.mk: cache third-party code in .dlcache/

Avoid using or depending on various cache directories under $HOME.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-25 Tim Janik # 60f8ce67eec

Merge branch 'nightly-fixes'

* nightly-fixes:
  MISC: Makefile.mk: use clone instead of worktree for temporary build dirs
	This leaves the original .git/ dir (and its worktree states) alone, regardless
	of the fate of the build dir.
  MISC: Makefile.mk: fix misc/version.sh invocation
  MISC: Makefile.mk: allow local nightly builds with RELEASE_TEST

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-25 Tim Janik # 33c73921624

MISC: Makefile.mk: use clone instead of worktree for temporary build dirs

This leaves the original .git/ dir (and its worktree states) alone, regardless
of the fate of the build dir.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-25 Tim Janik # 29f4d6d73f6

MISC: Makefile.mk: fix misc/version.sh invocation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-25 Tim Janik # 8ca02ea079e

MISC: Makefile.mk: allow local nightly builds with RELEASE_TEST

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-24 Tim Janik # 738be6ce98f

Merge branch 'electron-fixes'

* electron-fixes:
  Makefile.mk: fix ase/Makefile.mk missing devices/Makefile.mk definitions
  MISC: package.json.in: downgrade to electron-18.3.5 due to a CORS bug
	Some requests fail sporadically with a "blocked by CORS policy" error.
	The details are described here:
	  Issue 1339128: Local CORS requests fail sproradically
	  https://bugs.chromium.org/p/chromium/issues/detail?id=1339128
  ELECTRON: main.js: support --dev option for devtools
  MISC: Makefile.mk: appimage: exclude libnss*3.so
	There seem to exist some incompatibilities with an appimage-packed libnss3.so
	loading it's corresponding libsoftokn3.so from the host system libraries.
	As a workaround, we avoid packaging libnss3.so alltogether which is present
	on at least Ubuntu 20.04, 22.04, Debian 11 and Arch in 2022.
	For a detailed discussion, see:
	https://github.com/probonopd/linuxdeployqt/issues/35#issuecomment-860977273

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-24 Tim Janik # 2bbd49b0c16

Makefile.mk: fix ase/Makefile.mk missing devices/Makefile.mk definitions

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-24 Tim Janik # 16376c68c22

MISC: package.json.in: downgrade to electron-18.3.5 due to a CORS bug

Some requests fail sporadically with a "blocked by CORS policy" error.
The details are described here:

  Issue 1339128: Local CORS requests fail sproradically
  https://bugs.chromium.org/p/chromium/issues/detail?id=1339128

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-24 Tim Janik # 30125ebaf16

ELECTRON: main.js: support --dev option for devtools

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-23 Tim Janik # 1d12b608350

MISC: Makefile.mk: appimage: exclude libnss*3.so

There seem to exist some incompatibilities with an appimage-packed libnss3.so
loading it's corresponding libsoftokn3.so from the host system libraries.
As a workaround, we avoid packaging libnss3.so alltogether which is present
on at least Ubuntu 20.04, 22.04, Debian 11 and Arch in 2022.

For a detailed discussion, see:
https://github.com/probonopd/linuxdeployqt/issues/35#issuecomment-860977273

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-23 Tim Janik # 6a06b72e484

Merge branch 'midi-expression'

* midi-expression:
  ASE: clapplugin.cc: send MIDI1 + NOTE + EXPRESSION, add ASE_DEBUG=clapevent
	Support MIDI1 next to CLAP_NOTE_ON + OFF + EXPRESSION in the same event queue.
	Add support for sending AFTERTOUCH, CC, CHANNEL_PRESSURE and PITCH_BEND.
	Use preferred MIDI dialect for plugins.
  Makefile.mk: adjust makefile order to build order
  ASE: utils.cc: fix case insensitivity for ASE_DEBUG
  UI: b/treeselector.vue: remove junk from tree
  UI: b/devicepanel.vue: remove junk from menu
  UI: b/deviceeditor.vue: toggle GUIs
  ASE: api.hh: add gui_toggle(), gui_supported(), gui_visible()
  UI: b/deviceeditor.vue: implement delete-device
  ASE: clapplugin.cc: print debug info for all plugin extension queries
  ASE: api.hh: implement Device.remove_self()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-23 Tim Janik # 9b8398910a1

ASE: clapplugin.cc: send MIDI1 + NOTE + EXPRESSION, add ASE_DEBUG=clapevent

Support MIDI1 next to CLAP_NOTE_ON + OFF + EXPRESSION in the same event queue.
Add support for sending AFTERTOUCH, CC, CHANNEL_PRESSURE and PITCH_BEND.
Use preferred MIDI dialect for plugins.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-23 Tim Janik # 2ccc6cf9f73

Makefile.mk: adjust makefile order to build order

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-23 Tim Janik # fab512bdfa4

ASE: utils.cc: fix case insensitivity for ASE_DEBUG

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-23 Tim Janik # 530a8c53736

UI: b/treeselector.vue: remove junk from tree

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-23 Tim Janik # ec0eee1327c

UI: b/devicepanel.vue: remove junk from menu

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-23 Tim Janik # a2da7520e80

UI: b/deviceeditor.vue: toggle GUIs

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-23 Tim Janik # e2ccaeab269

ASE: api.hh: add gui_toggle(), gui_supported(), gui_visible()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # ddc454fe850

UI: b/deviceeditor.vue: implement delete-device

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # 6b5800a7b9b

ASE: clapplugin.cc: print debug info for all plugin extension queries

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # 93997d30c67

ASE: api.hh: implement Device.remove_self()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # a42f663f3f9

Merge branch 'debian-stable-deps'

* debian-stable-deps:
  MISC: mkdeb.sh: deps: libboost is unused, electron needs gtk-3, libnss3
  MISC: mkdeb.sh: compress with -z7, debian:stable cannot handle zstd

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # 996cd9320da

MISC: mkdeb.sh: deps: libboost is unused, electron needs gtk-3, libnss3

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # b827789c0e0

MISC: mkdeb.sh: compress with -z7, debian:stable cannot handle zstd

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # 07fd2a53b3b

Merge branch 'docker-ootbuild'

* docker-ootbuild:
  MISC: Makefile.mk: use $OOTBUILD/ for out-of-tree builds
  MISC: dbuild.sh: support -o ootbiuld_dir volume mounts
  MISC: Dockerfile-apt: support $OOTBUILD=/ootbuild/
  MISC: Makefile.mk: check for /dev/fuse before use
  README.md: fix typo

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # 26aab51c15c

MISC: Makefile.mk: use $OOTBUILD/ for out-of-tree builds

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # 56905accb0a

MISC: dbuild.sh: support -o ootbiuld_dir volume mounts

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # eb8ab6424f4

MISC: Dockerfile-apt: support $OOTBUILD=/ootbuild/

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # 26c2e2f6036

MISC: Makefile.mk: check for /dev/fuse before use

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # ba434009cf8

README.md: fix typo

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # 1982ed95f1c

Merge branch 'build-fixes'

* build-fixes:
  README.md: clarify: This Source Code Form is licensed MPL-2.0
  LICENSE: This Source Code Form is licensed MPL-2.0
  DOC: copyright.ini: list LICENSE file
  MISC: mkdeb.sh: clarify: This Source Code Form is licensed MPL-2.0
  DOC: ch-intro.md: clarify: This Source Code Form is licensed MPL-2.0
  DOC: anklang.1.md: clarify: This Source Code Form is licensed MPL-2.0
  MISC: LGPL-2.1.txt: remove unused license
  MISC: Dockerfile-apt: install libXss.so, libgtk-3-0 for electron
  MISC: dbuild.sh: support --no-cache
  ASE: Makefile.mk: install & ship gtk2wrap.so for plugin GUIs
  ASE: tests/benchmarks.cc: fix test block length to always fit a double
  MISC: Makefile.mk: allow RELEASE_CONTINUATION=true to bypass the nightly check
  ASE: Makefile.mk: add missing dependency to provide clap.h

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # 0e88997bdcb

README.md: clarify: This Source Code Form is licensed MPL-2.0

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # 0e51d5fead1

LICENSE: This Source Code Form is licensed MPL-2.0

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # da6ece28a52

DOC: copyright.ini: list LICENSE file

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # 7af54165bac

MISC: mkdeb.sh: clarify: This Source Code Form is licensed MPL-2.0

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # 8c4c0e1e9a1

DOC: ch-intro.md: clarify: This Source Code Form is licensed MPL-2.0

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # 5472cd0eac1

DOC: anklang.1.md: clarify: This Source Code Form is licensed MPL-2.0

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # c7029f8a5c1

MISC: LGPL-2.1.txt: remove unused license

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # adb29cde7b5

MISC: Dockerfile-apt: install libXss.so, libgtk-3-0 for electron

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # 038f9b42947

MISC: dbuild.sh: support --no-cache

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # daad7519e85

ASE: Makefile.mk: install & ship gtk2wrap.so for plugin GUIs

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # 1a2f39951c5

ASE: tests/benchmarks.cc: fix test block length to always fit a double

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # 92f0466d0af

MISC: Makefile.mk: allow RELEASE_CONTINUATION=true to bypass the nightly check

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # 3e0dd214e74

ASE: Makefile.mk: add missing dependency to provide clap.h

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # b0ff54ebc83

MISC: Makefile.mk: fix for version evaluation order

GNU Make executes $(eval) at rule start, not mid-rule.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # 8eace685dbe

MISC: Makefile.mk: robustly update Nightly tag

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # b7da34bc7ca

Merge branch 'nightly-builds'

* nightly-builds:
  MISC: Makefile.mk: Nightly releases must be built from origin/trunk
  MISC: Makefile.mk: add build rules for Nightly releases
  MISC: version.sh: support $VERSION_HASHLENGTH and --nightly
	Also, get rid of git archive release builds, it is unused.
  MISC: Makefile.mk: show .deb build asset
  MISC: mkdeb.sh: use zstd compression

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # a0d39e42327

MISC: Makefile.mk: Nightly releases must be built from origin/trunk

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-21 Tim Janik # 6803ef50cce

MISC: Makefile.mk: add build rules for Nightly releases

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-21 Tim Janik # c1bab025a99

MISC: version.sh: support $VERSION_HASHLENGTH and --nightly

Also, get rid of git archive release builds, it is unused.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-22 Tim Janik # d262befe53f

MISC: Makefile.mk: show .deb build asset

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-21 Tim Janik # da74e567695

MISC: mkdeb.sh: use zstd compression

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-21 Tim Janik # 0244b6a0384

Merge branch 'clap-1-0-2'

* clap-1-0-2:
  ASE: Makefile.mk: upgrade to clap-1.0.2
  UI: b/aboutdialog.vue: display CLAP version
  ASE: api.hh: export Server.get_clap_version()
  ASE: clapdevice: provide ClapDeviceImpl::clap_version()
  UI: Makefile.mk: fix scss files missing from installation
  GITHUB: workflows/testing.yml: only test builds for specific branches

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-21 Tim Janik # 6b2cc761f36

ASE: Makefile.mk: upgrade to clap-1.0.2

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-21 Tim Janik # 0c6b96219a6

UI: b/aboutdialog.vue: display CLAP version

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-21 Tim Janik # d87a6d21a4a

ASE: api.hh: export Server.get_clap_version()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-21 Tim Janik # eada01a53d0

ASE: clapdevice: provide ClapDeviceImpl::clap_version()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-21 Tim Janik # 9ab5f9d9942

UI: Makefile.mk: fix scss files missing from installation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-21 Tim Janik # 07c7cf66365

GITHUB: workflows/testing.yml: only test builds for specific branches

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-21 Tim Janik # 3310c576b61

Merge branch 'clapdevice'

* clapdevice:
  ASE: clapplugin.cc: fix debug print
  ASE: clapplugin.cc: small cleanup
  ASE: clapplugin: hook up audio & event ports and start processing
  ASE: clapdevice: add access_clap_handle()
  ASE: processor.hh: allow ParamId, IBusId, OBusId == int comparisons
  ASE: clapdevice: remove PluginHandle, use ClapPluginHandle
  ASE: clapplugin: add make_clap_handle, audio_processor_type, clap_device_info
  ASE: defs.hh: add ClapPluginHandle
  ASE: clapplugin: add ClapAudioWrapper audio processor
  ASE: clapplugin: create ClapPluginHandle from ClapPluginDescriptor
  ASE: clapplugin: move ClapPluginDescriptor here
  ASE: clapplugin: move ClapFileHandle here
  ASE: clapplugin: move list_clap_files, clap_event_to_string here
  ASE: clapplugin: add get_port_infos() and handle methods
  ASE: clapdevice.cc: fix hide vs show
  ASE: clapplugin: add host_ext_gui
  ASE: clapplugin.cc: add host_ext_params
  ASE: clapplugin.cc: add host_ext_audio_ports
  ASE: clapplugin: start isolated clap plugin handle implementation
  MISC: Dockerfile-apt: provide libgtk2.0-dev for gtk2wrap
  ASE: device.cc: avoid Device == DeviceImpl assumptions
  ASE: track.cc: add <Serializable*> cast for Device serialization
  UI: b/deviceeditor.vue: properly display device_info.name
  ASE: clapdevice: provide proper device_info()
  ASE: device: fix member name
  ASE: project.cc: always store project.json.zst in *.anklang files
  ASE: clapdevice.cc: fix JUCE early timer use, leave threads_enter/leave to gtk
  ASE: gtk2wrap.cc: fix thread name and run inside GDK_THREADS_ENTER/LEAVE
  ASE: midievent.hh: fix mid channel comment
  ASE: clapdevice.cc: send clap note events or midi1 events
  ASE: clapdevice.cc: add skeletons for CLAP_EXT_PARAMS
  ASE: clapdevice.cc: implement plugin_->on_main_thread()
  ASE: clapdevice.cc: provide clap_host_thread_check extension
  ASE: gtk2wrap: implement simple embedding GtkWindow as ELF module
  ASE: engine: provide AudioEngine::thread_is_engine()
  ASE: clapdevice: create plugin GUI with Gtk2DlWrapEntry functions
  ASE: Makefile.mk: build gtk2wrap.so
  MISC: config-checks.mk: provide GTK2_CFLAGS and GTK2_LIBS
  ASE: clapdevice.cc: add boilerplate for CLAP_EXT_GUI
  ASE: clapdevice.cc: implement CLAP_EXT_TIMER_SUPPORT
  ASE: clapdevice.cc: find MAIN ibus, obus and hook up float buffers
  ASE: clapdevice.cc: move audio_ports_config
  ASE: clapdevice.cc: provide plugin_input_events and plugin_output_events
  ASE: clapdevice.cc: allocate audio_inputs, audio_outputs and processinfo
  ASE: clapdevice.cc: query note ports and audio ports and configs
  ASE: clapdevice.cc: call start_processing(), stop_processing() on CLAP plugin
  ASE: clapdevice: provide AudioWrapper processor access to activated CLAP plugin
  ASE: clapdevice: activate()/deactivate() plugin
  ASE: clapdevice: destroy plugin on ClapDeviceImpl unparenting
  ASE: clapdevice.cc: implement clap_host_log extension
  ASE: clapdevice: add basic CLAP plugin lifetime handling
  ASE: device: track children and assign parent on Device children
  ASE: track.cc: assign parent on Device children
  ASE: project.cc: assign track parent
  ASE: api.hh: add Gadget._set_parent(), Gadget._parent()
  ASE: project.cc: fix device->_audio_processor() access
  ASE: api.hh: rename Project.discard()
  ASE: platform: return `const char*` from ase_version()
  ASE: clapdevice.cc: share a ClapFileHandle between ClapPluginDescriptors
  ASE: clapdevice.cc: canonify features, to egalize [ _+-] etc chars
  ASE: clapdevice.cc: search $CLAP_PATH and clap standard dirs recursively
  ASE: path: add unique_realpaths()
  ASE: path: add rglob()
  ASE: clapdevice: add boilerplate for CLAP plugin create() and init()
  ASE: device.cc: list CLAP devices and call create_clap_device()
  ASE: clapdevice: create ClapWrapper AudioProcessor
  DEVICES: provide static_info()
  ASE: track.cc: pass Engine into create_processor_device()
  ASE: processor: rewrite registration and DeviceP integration
	* Require static_info() for registered AudioProcessor types
	* Provide AudioProcessor::create_processor() and AudioProcessor::registry_create()
	* Hookup DeviceP and AudioProcessorP upon initialization
  UI: b/devicepanel.vue: use append_device() and insert_device()
  ASE: api.hh: rename append_device() and insert_device()
  DEVICES: explicitely pass AudioEngine into AudioProcessor ctor
  ASE: processor: explicitely pass AudioEngine into AudioProcessor ctor
  ASE: processor: provide `DeviceP get_device()` per processor
	Avoid AudioProcessor depending on DeviceImpl.
  ASE: api.hh: move internal AudioProcessor methods into Device
	The Device methods _audio_processor(), _set_event_source() and
	_disconnect_remove() use an underscore to prevent JS binding generation.
  UI: b/devicepanel.vue: issue debug message if create_device() failed
  ASE: clapdevice.cc: list_clap_plugins(): scan CLAP plugins
  ASE: Makefile.mk: link against libdl for dlopen()
  ASE: clapdevice.*: add ClapDeviceImpl skeleton
  ASE: Makefile.mk: provide include files from free-audio/clap-1.0.0
  MISC: config-checks.mk: allow filename specification for $(AND_DOWNLOAD_SHAURL)
  README.md: updates, mention plans for CLAP support

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-21 Tim Janik # 410584fe7c0

ASE: clapplugin.cc: fix debug print

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-21 Tim Janik # 7c2c5ce1fb1

ASE: clapplugin.cc: small cleanup

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-21 Tim Janik # 08148c430d8

ASE: clapplugin: hook up audio & event ports and start processing

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-21 Tim Janik # c5e24ca5507

ASE: clapdevice: add access_clap_handle()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-21 Tim Janik # ef2fb4cadf4

ASE: processor.hh: allow ParamId, IBusId, OBusId == int comparisons

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-20 Tim Janik # 0f481b0fec3

ASE: clapdevice: remove PluginHandle, use ClapPluginHandle

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-20 Tim Janik # 3831e4bbc70

ASE: clapplugin: add make_clap_handle, audio_processor_type, clap_device_info

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-20 Tim Janik # 9fcbe4399bd

ASE: defs.hh: add ClapPluginHandle

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-20 Tim Janik # 22d7e6dc3dd

ASE: clapplugin: add ClapAudioWrapper audio processor

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-20 Tim Janik # 5cf2597ba42

ASE: clapplugin: create ClapPluginHandle from ClapPluginDescriptor

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-20 Tim Janik # 77aab83a9c5

ASE: clapplugin: move ClapPluginDescriptor here

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-20 Tim Janik # 44b490be299

ASE: clapplugin: move ClapFileHandle here

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-20 Tim Janik # 4d1df920d41

ASE: clapplugin: move list_clap_files, clap_event_to_string here

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-20 Tim Janik # 2e689ac9bf4

ASE: clapplugin: add get_port_infos() and handle methods

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-20 Tim Janik # 290e9a53170

ASE: clapdevice.cc: fix hide vs show

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-20 Tim Janik # 6d3533cfa61

ASE: clapplugin: add host_ext_gui

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-20 Tim Janik # d0571a95c04

ASE: clapplugin.cc: add host_ext_params

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-20 Tim Janik # bccd04ad67d

ASE: clapplugin.cc: add host_ext_audio_ports

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-20 Tim Janik # dd2d55f146a

ASE: clapplugin: start isolated clap plugin handle implementation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-19 Tim Janik # 1952a52b755

MISC: Dockerfile-apt: provide libgtk2.0-dev for gtk2wrap

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-19 Tim Janik # 1e86042debb

ASE: device.cc: avoid Device == DeviceImpl assumptions

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-19 Tim Janik # 38eb96f3e85

ASE: track.cc: add <Serializable*> cast for Device serialization

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-19 Tim Janik # caa287e28ab

UI: b/deviceeditor.vue: properly display device_info.name

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-19 Tim Janik # a0efc5976b1

ASE: clapdevice: provide proper device_info()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-19 Tim Janik # 5e8bc5a77e3

ASE: device: fix member name

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-19 Tim Janik # dd7ed418f51

ASE: project.cc: always store project.json.zst in *.anklang files

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-19 Tim Janik # 108cdbf82aa

ASE: clapdevice.cc: fix JUCE early timer use, leave threads_enter/leave to gtk

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-19 Tim Janik # 3995b77e144

ASE: gtk2wrap.cc: fix thread name and run inside GDK_THREADS_ENTER/LEAVE

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-19 Tim Janik # ab6ec3e5006

ASE: midievent.hh: fix mid channel comment

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-19 Tim Janik # ac0bfe09ead

ASE: clapdevice.cc: send clap note events or midi1 events

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-18 Tim Janik # 0202cbee843

ASE: clapdevice.cc: add skeletons for CLAP_EXT_PARAMS

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-18 Tim Janik # cd32053451b

ASE: clapdevice.cc: implement plugin_->on_main_thread()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-18 Tim Janik # d4927aa0b49

ASE: clapdevice.cc: provide clap_host_thread_check extension

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-18 Tim Janik # 7f18181da6a

ASE: gtk2wrap: implement simple embedding GtkWindow as ELF module

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-18 Tim Janik # e49c1094171

ASE: engine: provide AudioEngine::thread_is_engine()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-18 Tim Janik # b46e8d49790

ASE: clapdevice: create plugin GUI with Gtk2DlWrapEntry functions

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-18 Tim Janik # 0fc6499a86e

ASE: Makefile.mk: build gtk2wrap.so

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-18 Tim Janik # fe43fddff69

MISC: config-checks.mk: provide GTK2_CFLAGS and GTK2_LIBS

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-18 Tim Janik # 966fb2e806b

ASE: clapdevice.cc: add boilerplate for CLAP_EXT_GUI

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-18 Tim Janik # 639e9c4eae9

ASE: clapdevice.cc: implement CLAP_EXT_TIMER_SUPPORT

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-16 Tim Janik # bf7eada76eb

ASE: clapdevice.cc: find MAIN ibus, obus and hook up float buffers

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-16 Tim Janik # 3fa873b5f56

ASE: clapdevice.cc: move audio_ports_config

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-16 Tim Janik # a6d12d6862f

ASE: clapdevice.cc: provide plugin_input_events and plugin_output_events

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-16 Tim Janik # 0b654e37c4b

ASE: clapdevice.cc: allocate audio_inputs, audio_outputs and processinfo

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-16 Tim Janik # cd7bc44730c

ASE: clapdevice.cc: query note ports and audio ports and configs

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-16 Tim Janik # adaccde9da8

ASE: clapdevice.cc: call start_processing(), stop_processing() on CLAP plugin

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-16 Tim Janik # 826c90d9daa

ASE: clapdevice: provide AudioWrapper processor access to activated CLAP plugin

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-16 Tim Janik # 3e8b44fb5d8

ASE: clapdevice: activate()/deactivate() plugin

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-16 Tim Janik # d9ae0898851

ASE: clapdevice: destroy plugin on ClapDeviceImpl unparenting

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-16 Tim Janik # 374777fa6ab

ASE: clapdevice.cc: implement clap_host_log extension

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-16 Tim Janik # f19ad1e6e8a

ASE: clapdevice: add basic CLAP plugin lifetime handling

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-16 Tim Janik # 919eb401b22

ASE: device: track children and assign parent on Device children

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-16 Tim Janik # 0c5131354c4

ASE: track.cc: assign parent on Device children

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-16 Tim Janik # 48c10a9ac2b

ASE: project.cc: assign track parent

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-16 Tim Janik # 09cec08a08e

ASE: api.hh: add Gadget._set_parent(), Gadget._parent()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-16 Tim Janik # 27417a9735a

ASE: project.cc: fix device->_audio_processor() access

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-16 Tim Janik # d1dbb63b2dd

ASE: api.hh: rename Project.discard()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-16 Tim Janik # ec75cf991a1

ASE: platform: return `const char*` from ase_version()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-15 Tim Janik # e5189fd1a3e

ASE: clapdevice.cc: share a ClapFileHandle between ClapPluginDescriptors

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-15 Tim Janik # d1c0bd5c787

ASE: clapdevice.cc: canonify features, to egalize [ _+-] etc chars

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-15 Tim Janik # a31ce4ba541

ASE: clapdevice.cc: search $CLAP_PATH and clap standard dirs recursively

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-15 Tim Janik # b20628c2162

ASE: path: add unique_realpaths()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-15 Tim Janik # 8013e5d12bb

ASE: path: add rglob()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-14 Tim Janik # 0dff3976165

ASE: clapdevice: add boilerplate for CLAP plugin create() and init()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-14 Tim Janik # e647edf3f38

ASE: device.cc: list CLAP devices and call create_clap_device()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-14 Tim Janik # 52060191ad3

ASE: clapdevice: create ClapWrapper AudioProcessor

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-14 Tim Janik # 3fc0404ac2b

DEVICES: provide static_info()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-14 Tim Janik # a92980d385d

ASE: track.cc: pass Engine into create_processor_device()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-12 Tim Janik # 8c6518ff2f6

ASE: processor: rewrite registration and DeviceP integration

* Require static_info() for registered AudioProcessor types
* Provide AudioProcessor::create_processor() and AudioProcessor::registry_create()
* Hookup DeviceP and AudioProcessorP upon initialization

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-14 Tim Janik # 39679435d78

UI: b/devicepanel.vue: use append_device() and insert_device()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-14 Tim Janik # cbd2cb83201

ASE: api.hh: rename append_device() and insert_device()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-14 Tim Janik # fed5ce98e31

DEVICES: explicitely pass AudioEngine into AudioProcessor ctor

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-14 Tim Janik # a564db9be83

ASE: processor: explicitely pass AudioEngine into AudioProcessor ctor

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-14 Tim Janik # d5cf6659a18

ASE: processor: provide `DeviceP get_device()` per processor

Avoid AudioProcessor depending on DeviceImpl.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-14 Tim Janik # 184c4be7aab

ASE: api.hh: move internal AudioProcessor methods into Device

The Device methods _audio_processor(), _set_event_source() and
_disconnect_remove() use an underscore to prevent JS binding generation.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-13 Tim Janik # fe6887f8f96

UI: b/devicepanel.vue: issue debug message if create_device() failed

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-12 Tim Janik # f46a3b5badc

ASE: clapdevice.cc: list_clap_plugins(): scan CLAP plugins

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-12 Tim Janik # 55ccea1843b

ASE: Makefile.mk: link against libdl for dlopen()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-12 Tim Janik # 81f4c46b8aa

ASE: clapdevice.*: add ClapDeviceImpl skeleton

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-12 Tim Janik # 0264b1ff6dd

ASE: Makefile.mk: provide include files from free-audio/clap-1.0.0

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-12 Tim Janik # d7080a0e705

MISC: config-checks.mk: allow filename specification for $(AND_DOWNLOAD_SHAURL)

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-11 Tim Janik # d922d5f745b

README.md: updates, mention plans for CLAP support

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-11 Tim Janik # cb33b2b7563

Merge branch 'zmod-vs-contrast'

* zmod-vs-contrast:
  MISC: package.json.in: remove chroma-js
  UI: Makefile.mk: take chroma-js out of browserified bundle
  UI: postcss.js: remove unused chroma-js
  UI: postcss.js: remove unused contrast* functions
  UI: colors.js: separate hex_from_zcam()
  UI: theme.scss: use absolute Jz shifts for shades
  UI: use zmod() with Jz adjustments instead of contrast-lighten, contrast-darken
  UI: postcss.js: write output file directly, abort on errors
  UI: remove unused chromatic-sass2.js
  UI: postcss.js: remove unused chromatic-color-luminance, chromatic-color-set
  UI: postcss.js: test zmod()
  UI: postcss.js: remove darken, darker, lighten, lighter
  UI: *.scss: use zmod instead of lighten, darken
  UI: b/*.vue: use zmod instead of lighten, darken
  UI: b/partthumb.vue: move $b-partthumb-* variables here
  UI: theme.scss: use zmod instead of lighter, darker
  UI: styles.scss: use zmod instead of darker
  UI: b/databubble.vue: use zmod instead of lighter
  UI: postcss.js: remove lcolor()
  UI: theme.scss: use zmod(Jz) instead of lcolor()
  UI: postcss.js: provide Colors.lgrey
  UI: colors.js: provide lgrey() via ZCAM lightness

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-29 Tim Janik # eb45772b999

MISC: package.json.in: remove chroma-js

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-29 Tim Janik # f99f6bf3312

UI: Makefile.mk: take chroma-js out of browserified bundle

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-11 Tim Janik # 730fb7522cd

UI: postcss.js: remove unused chroma-js

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-11 Tim Janik # b65ddaf6afe

UI: postcss.js: remove unused contrast* functions

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-29 Tim Janik # 472532e897f

UI: colors.js: separate hex_from_zcam()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-05 Tim Janik # 9e510f53f31

UI: theme.scss: use absolute Jz shifts for shades

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-28 Tim Janik # 88a7b991bd6

UI: use zmod() with Jz adjustments instead of contrast-lighten, contrast-darken

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-27 Tim Janik # 415b5f56632

UI: postcss.js: write output file directly, abort on errors

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-27 Tim Janik # 1b96451c1c0

UI: remove unused chromatic-sass2.js

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-27 Tim Janik # a73931f4b0f

UI: postcss.js: remove unused chromatic-color-luminance, chromatic-color-set

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-27 Tim Janik # 08db62014fc

UI: postcss.js: test zmod()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-27 Tim Janik # b13eba56461

UI: postcss.js: remove darken, darker, lighten, lighter

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-27 Tim Janik # fadd7822b63

UI: *.scss: use zmod instead of lighten, darken

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-27 Tim Janik # 7fea5faf8fb

UI: b/*.vue: use zmod instead of lighten, darken

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-27 Tim Janik # a2bfe74e6c4

UI: b/partthumb.vue: move $b-partthumb-* variables here

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-27 Tim Janik # 2218304d3ba

UI: theme.scss: use zmod instead of lighter, darker

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-27 Tim Janik # b7b0970176a

UI: styles.scss: use zmod instead of darker

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-27 Tim Janik # 3390f823314

UI: b/databubble.vue: use zmod instead of lighter

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-27 Tim Janik # 2854936314a

UI: postcss.js: remove lcolor()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-27 Tim Janik # f01c6235bd6

UI: theme.scss: use zmod(Jz) instead of lcolor()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-27 Tim Janik # bd25907545c

UI: postcss.js: provide Colors.lgrey

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-27 Tim Janik # 4433f8d2f1b

UI: colors.js: provide lgrey() via ZCAM lightness

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-11 Tim Janik # c7683b792ac

Merge branch 'generic-setget-data'

* generic-setget-data:
  ASE: value: rename Value.purge_r() to Value.filter()
  UI: startup.js: adjust to Server.set_data() and Server.get_data()
  UI: kbd.js: adjust to Server.set_data() and Server.get_data()
  ASE: api.hh: provide Gadget.set_data() and Gadget.get_data()
	* Persist data of Gadgets in a Project without a '_' key prefix.
	* Merge with Server.set_data() and Server.get_data().
	* Simplify set/get data on the Server, persist keys without '_' prefix.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-27 Tim Janik # c3e99c0d691

ASE: value: rename Value.purge_r() to Value.filter()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-05 Tim Janik # 13df3cd9e82

UI: startup.js: adjust to Server.set_data() and Server.get_data()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-05 Tim Janik # ebdf42ea0cc

UI: kbd.js: adjust to Server.set_data() and Server.get_data()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-05 Tim Janik # 41f4d12b5d0

ASE: api.hh: provide Gadget.set_data() and Gadget.get_data()

* Persist data of Gadgets in a Project without a '_' key prefix.
* Merge with Server.set_data() and Server.get_data().
* Simplify set/get data on the Server, persist keys without '_' prefix.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-11 Tim Janik # 8d85c28dcd3

Merge branch 'development-reference'

* development-reference:
  UI: b/menubar.vue: add 'Help/Development Reference' menu item
  DOC: style/Makefile.mk: fix charis-sil/index.css reference
  MISC: package.json.in: upgrade to @fontsource/charis-sil 4.5.5

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-11 Tim Janik # 9d75a5fd01b

UI: b/menubar.vue: add 'Help/Development Reference' menu item

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-11 Tim Janik # 6b9496aea1b

DOC: style/Makefile.mk: fix charis-sil/index.css reference

Signed-off-by: Tim Janik <timj@gnu.org>

2022-06-11 Tim Janik # 083c4986b8e

MISC: package.json.in: upgrade to @fontsource/charis-sil 4.5.5

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-27 Tim Janik # ac5da8c6a05

Merge branch 'npm-updates'

* npm-updates:
  MISC: package.json.in: update sass
  MISC: package.json.in: update jsdoc, lit, markdown-it, mathjax, nodemon
  MISC: package.json.in: update chroma-js, eslint
  MISC: package.json.in: update rollup, postcss, remove cssnano
  MISC: package.json.in: update eslint-parser, fonts, rollup plugins
  MISC: package.json.in: update vue to 3.2.36
  ELECTRON: Makefile.mk: adjust chmod for electron libs
  MISC: package.json.in: update to electron-19
  UI: Makefile.mk: avoid extraneous favicon generations
  MISC: package.json.in: update  icon-gen to 3.0.1

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-25 Tim Janik # 6a870db983c

MISC: package.json.in: update sass

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-25 Tim Janik # f7b22efc74a

MISC: package.json.in: update jsdoc, lit, markdown-it, mathjax, nodemon

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-25 Tim Janik # 33befbf8fcc

MISC: package.json.in: update chroma-js, eslint

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-25 Tim Janik # db93117b71e

MISC: package.json.in: update rollup, postcss, remove cssnano

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-25 Tim Janik # d44d005d952

MISC: package.json.in: update eslint-parser, fonts, rollup plugins

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-25 Tim Janik # c620bc8da8c

MISC: package.json.in: update vue to 3.2.36

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-25 Tim Janik # a47271c1b4c

ELECTRON: Makefile.mk: adjust chmod for electron libs

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-25 Tim Janik # d68eda50180

MISC: package.json.in: update to electron-19

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-25 Tim Janik # 80c468251a0

UI: Makefile.mk: avoid extraneous favicon generations

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-25 Tim Janik # 984ff6a2a5a

MISC: package.json.in: update  icon-gen to 3.0.1

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-26 Tim Janik # cd6c70b7664

Merge branch 'zhsv-zhsl-zmod'

* zhsv-zhsl-zmod:
  UI: b/clipview.vue: use Hues + zmod() to select track colors
  UI: colors.js: zmod(): add Hz/hz to select cusp colors, avoid lossy conversions
  UI: postcss.js: provide zhsl() zHsl() zhsv() zHsv() zmod() CSS functions
  UI: colors.js: add zhsl() zhsv() zHsl() zHsv() zmod() CSS functions
  MISC: package.json.in: update to zcam-js v0.0.9 which ships zcam-js.mjs
  UI: colors.js: convert to and from ZHSL
  UI: b/tracklist.vue: grow clip region
  UI: Makefile.mk: generate ui/zcam-js.mjs
  UI: Makefile.mk: postcss.js depends on colors.js
  UI: colors.js: add sRGB HSV conversions
  UI: colors.js: add ZHSV conversions
  UI: colors.js: new file for color modifications
  MISC: package.json.in: require zcam-js

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-25 Tim Janik # a081f7e25da

UI: b/clipview.vue: use Hues + zmod() to select track colors

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-25 Tim Janik # 1f4e65e724f

UI: colors.js: zmod(): add Hz/hz to select cusp colors, avoid lossy conversions

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-20 Tim Janik # 14126e3dfac

UI: postcss.js: provide zhsl() zHsl() zhsv() zHsv() zmod() CSS functions

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-20 Tim Janik # 3d8f1765a5a

UI: colors.js: add zhsl() zhsv() zHsl() zHsv() zmod() CSS functions

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-18 Tim Janik # de837f60535

MISC: package.json.in: update to zcam-js v0.0.9 which ships zcam-js.mjs

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-18 Tim Janik # 63e9b39c464

UI: colors.js: convert to and from ZHSL

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-18 Tim Janik # 5346315d08b

UI: b/tracklist.vue: grow clip region

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-17 Tim Janik # b8cff2c6422

UI: Makefile.mk: generate ui/zcam-js.mjs

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-20 Tim Janik # 9f0df2517ad

UI: Makefile.mk: postcss.js depends on colors.js

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-17 Tim Janik # 031ef531126

UI: colors.js: add sRGB HSV conversions

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-17 Tim Janik # 82762bb0a26

UI: colors.js: add ZHSV conversions

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-17 Tim Janik # f43d033e441

UI: colors.js: new file for color modifications

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-11 Tim Janik # 3a8a5d85378

MISC: package.json.in: require zcam-js

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-26 Tim Janik # af7e7438b28

Merge branch 'optimize-css'

* optimize-css:
  UI: Makefile.mk: shrink browserified code with terser
  MISC: package.json.in: install terser
  UI: Makefile.mk: support :KEEPIF="__DEV__" attribute in index.html
  UI: index.html: conditionally preload ./csstree-validator.esm.js
  UI: little.js: conditionally load and use csstree-validator.esm.js
  UI: Makefile.mk: use ui/csstree-validator.esm.js, don't browserify it
  UI: index.html: preload ./postcss.js
  UI: little.js: use ui/postcss.js to process CSS in the browser
  UI: Makefile.mk: use ui/postcss.js for CSS processing build steps
  UI: postcss.js: PostCSS CLI and browser driver in the same ESM
  MISC: package.json.in: add rollup-plugin-node-resolve
  UI: Makefile.mk: build with explicit .cjs extension where needed
  MISC: package.json.in: add type:module, use .eslintrc.cjs for linting
  UI: eslintrc.js: silence loss-of-precision warnings

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-22 Tim Janik # a130ddf7afc

UI: Makefile.mk: shrink browserified code with terser

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-22 Tim Janik # 2ad5856fe12

MISC: package.json.in: install terser

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-20 Tim Janik # ec01eb18aa3

UI: Makefile.mk: support :KEEPIF="__DEV__" attribute in index.html

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-20 Tim Janik # da216e89d47

UI: index.html: conditionally preload ./csstree-validator.esm.js

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-20 Tim Janik # a2021e68605

UI: little.js: conditionally load and use csstree-validator.esm.js

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-20 Tim Janik # 93aa4d65595

UI: Makefile.mk: use ui/csstree-validator.esm.js, don't browserify it

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-20 Tim Janik # b4d21eb4fbe

UI: index.html: preload ./postcss.js

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-20 Tim Janik # f1739cbf1a5

UI: little.js: use ui/postcss.js to process CSS in the browser

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-20 Tim Janik # cf395543228

UI: Makefile.mk: use ui/postcss.js for CSS processing build steps

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-20 Tim Janik # 0f28f393357

UI: postcss.js: PostCSS CLI and browser driver in the same ESM

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-20 Tim Janik # 7d55e1e3ee7

MISC: package.json.in: add rollup-plugin-node-resolve

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-18 Tim Janik # 52e5d07938d

UI: Makefile.mk: build with explicit .cjs extension where needed

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-18 Tim Janik # 2a02b8d4fc4

MISC: package.json.in: add type:module, use .eslintrc.cjs for linting

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-18 Tim Janik # b2660cc80b2

UI: eslintrc.js: silence loss-of-precision warnings

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-26 Tim Janik # 7b0d73114cd

Merge branch 'lit'

* lit:
  UI: startup.js: leave create_app() to b/app.js
  UI: b/app.js: move Vue App creation and component registration here
  UI: index.html: extend preloads
  UI: startup.js: properly handle bootup before & after onload
  UI: b/more.js: port b-more from Vue to LitElement
  UI: b/menutitle.js: port b-menutitle from Vue to LitElement
  UI: b/menuseparator.js: port b-menuseparator from Vue to LitElement
	Remove b/menuseparator.vue in favour of b/menuseparator.js.
  UI: b/fed-object.vue: instantiate b-textinput explicitely
  UI: b/textinput.js: port text editing field from Vue to LitElement
	Remove b/fed-text.vue in favour of b/textinput.js.
  UI: little.js: use csstree-validator in __DEV__ mode
  UI: little.js: minor fix to error messages
  UI: little.js: add CSS imports for theme.scss, mixins.scss, shadow.scss
  UI: little.js: provide LitElement stubs and postcss renderer
  UI: Makefile.mk: use rollup to generate ui/lit.js
  MISC: package.json.in: add lit

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # a9cf6f7afdd

UI: startup.js: leave create_app() to b/app.js

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 3be456512b8

UI: b/app.js: move Vue App creation and component registration here

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 911ccbd7ff0

UI: index.html: extend preloads

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 41dac442920

UI: startup.js: properly handle bootup before & after onload

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 8defd10c154

UI: b/more.js: port b-more from Vue to LitElement

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # db9ae6304e9

UI: b/menutitle.js: port b-menutitle from Vue to LitElement

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # cf92d55d279

UI: b/menuseparator.js: port b-menuseparator from Vue to LitElement

Remove b/menuseparator.vue in favour of b/menuseparator.js.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # f583288c2f0

UI: b/fed-object.vue: instantiate b-textinput explicitely

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 5123fb2f0bd

UI: b/textinput.js: port text editing field from Vue to LitElement

Remove b/fed-text.vue in favour of b/textinput.js.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # a4603be4df1

UI: little.js: use csstree-validator in __DEV__ mode

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 5e0af47fa25

UI: little.js: minor fix to error messages

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 74ed2dbd136

UI: little.js: add CSS imports for theme.scss, mixins.scss, shadow.scss

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # abf0254f520

UI: little.js: provide LitElement stubs and postcss renderer

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # c8d8fdb40f1

UI: Makefile.mk: use rollup to generate ui/lit.js

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 50491f4526d

MISC: package.json.in: add lit

Signed-off-by: Tim Janik <timj@gnu.org>

2022-05-26 Tim Janik # 739ebe20e90

Merge branch 'postcss'

* postcss:
  UI: eslintrc.js: allow unused imports
  UI: eslintrc.js: parse es2022
  UI: Makefile.mk: install ui/shadow.scss
  UI: shadow.scss: provide styling for elements inside shadow DOMs
  UI: b/*.vue: add missing calc() functions
  UI: theme.scss: add missing calc() calls
  UI: styles.scss: minor cleanups
  UI: b/piano-roll.vue: directly include fonts/AnklangCursors.scss
  UI: theme.scss: leave cursor includes to individual components
  UI: b/databubble.vue: use hsl() for luminance based colors
  UI: b/*.vue: minor CSS pseudo selector fixups
  UI: b/shell.vue: avoid styles.scss import, this is loaded by index.html now
  UI: b/piano-roll.vue: avoid string interpolation that stops variable expansion
  UI: b/*.vue: use only functions from postcss.config.js
  UI: b/fed-picklist.vue: avoid extra quotes around selector string interpolation
  UI: theme.scss: avoid extra whitespaces in mixin declarations
	This avoids postcss-advanced-variables ignoring some mixins.
  UI: cssaux.scss: remove file with SASS-only functions
  UI: sfc-compile.js: disable SASS preprocessing
  UI: sfc-compile.js: implemented the possibility to generate sfc_css()
  UI: sfc-compile.js: help syntax highlighters by generating html`` css`` txt``
  UI: Makefile.mk: add *.js files to all-components
  UI: Makefile.mk: update plugins and add CSS validation via csstree-validator
  UI: Makefile.mk: check postcss.config.js transformations
  UI: Makefile.mk: convert postcss.config.js to postcss.esm.js for browsers
  UI: Makefile.mk: generate all-styles.css via postcss
  UI: mixins.scss: move here
  UI: Makefile.mk: generate ui/all-cssfiles.js
  UI: Makefile.mk: add postcss and plugins to browserify bundle
  UI: Makefile.mk: minor edit
  UI: postcss.config.js: add config and functions with tests for postcss
  MISC: package.json.in: update packages, add rollup and postcss with plugins
  ASE: mime-types.hh: serve text/x-sass and text/x-scss files
  UI: kbd.js: allow all elements below focus root to have focus

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 80510ba1a3f

UI: eslintrc.js: allow unused imports

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 074cb9257ac

UI: eslintrc.js: parse es2022

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 77c0e173031

UI: Makefile.mk: install ui/shadow.scss

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 05f181d46f8

UI: shadow.scss: provide styling for elements inside shadow DOMs

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # f0cc6b63231

UI: b/*.vue: add missing calc() functions

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 8ae5339d964

UI: theme.scss: add missing calc() calls

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 6a38243a69f

UI: styles.scss: minor cleanups

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # be1505a0fc7

UI: b/piano-roll.vue: directly include fonts/AnklangCursors.scss

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 40e68511ff6

UI: theme.scss: leave cursor includes to individual components

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # deb377a2aa3

UI: b/databubble.vue: use hsl() for luminance based colors

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # e7114e0bca7

UI: b/*.vue: minor CSS pseudo selector fixups

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 00f9712131d

UI: b/shell.vue: avoid styles.scss import, this is loaded by index.html now

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 194a84ad504

UI: b/piano-roll.vue: avoid string interpolation that stops variable expansion

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 36ab55b1a28

UI: b/*.vue: use only functions from postcss.config.js

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # cbc4cdb3dc5

UI: b/fed-picklist.vue: avoid extra quotes around selector string interpolation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 1cd45ecaf38

UI: theme.scss: avoid extra whitespaces in mixin declarations

This avoids postcss-advanced-variables ignoring some mixins.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 59ff528cb58

UI: cssaux.scss: remove file with SASS-only functions

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # e3beded606c

UI: sfc-compile.js: disable SASS preprocessing

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 29628b8f729

UI: sfc-compile.js: implemented the possibility to generate sfc_css()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 9c3a81750a9

UI: sfc-compile.js: help syntax highlighters by generating html`` css`` txt``

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 581be45feb9

UI: Makefile.mk: add *.js files to all-components

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 939dd98e7a2

UI: Makefile.mk: update plugins and add CSS validation via csstree-validator

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # e0ef4226c2a

UI: Makefile.mk: check postcss.config.js transformations

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # d08d365edbb

UI: Makefile.mk: convert postcss.config.js to postcss.esm.js for browsers

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # c9b1c1f9ce5

UI: Makefile.mk: generate all-styles.css via postcss

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 28eafa76e98

UI: mixins.scss: move here

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # b53c115e7b5

UI: Makefile.mk: generate ui/all-cssfiles.js

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 1dc0f68fb26

UI: Makefile.mk: add postcss and plugins to browserify bundle

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # b7755891b03

UI: Makefile.mk: minor edit

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # a9f0b5873d5

UI: postcss.config.js: add config and functions with tests for postcss

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 85e0a42573c

MISC: package.json.in: update packages, add rollup and postcss with plugins

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # c345e490089

ASE: mime-types.hh: serve text/x-sass and text/x-scss files

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-24 Tim Janik # 2b82a9121a8

UI: kbd.js: allow all elements below focus root to have focus

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-20 Tim Janik # 45d9a4c1c9b

Merge branch 'piano-roll-contextmenu'

* piano-roll-contextmenu:
  UI: b/piano-roll.vue, b/piano-ctrl.js: turn Cut, Copy, Paste into menu entries
  UI: eslintrc.js: allow WeakRef uses
  UI: util.js: rename weakid() add weakid_lookup()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-19 Tim Janik # 76bcfcf60ea

UI: b/piano-roll.vue, b/piano-ctrl.js: turn Cut, Copy, Paste into menu entries

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-19 Tim Janik # 7a314156b72

UI: eslintrc.js: allow WeakRef uses

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-19 Tim Janik # a5cb8170c13

UI: util.js: rename weakid() add weakid_lookup()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-19 Tim Janik # 748c56f3487

Merge branch 'shortcut-editor'

* shortcut-editor:
  UI: kbd.js: add shortcut map and shortcut editor
  UI: b/menuitem.vue: add shortcut map and support shortcut editing
  UI: b/trackview.vue: hide shortcut area for MIDI channel entries
  UI: startup.js: use Ase.server.{get|set}_data() for session data
  ASE: api.hh: support Ase.server.{get|set}_data() for config and session data
  UI: kbd.js: move KeyCode, hotkey and focus handling here
  UI: kbd.js: move match_key_event() here
  UI: kbd.js: add hotkey_name_from_event()
  UI: kbd.js: move display_keyname() here
  UI: util.js: add root_ancestor() and escape_html()
  UI: b/shell.vue: add div_handler and html to dialogs, merge with menu layer
  UI: b/contextmenu.vue: provide mapname property for menuitems
  UI: b/piano-roll.vue: stop event handling in pianorollmenu_click()
  UI: b/contextmenu.vue: pass event into clicked() and keyboard_click()
  UI: util.js: pass event into keyboard_click(), provide keyboard_click_event()
  UI: eslintrc.js: allow v-html

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-19 Tim Janik # 49c78a75fa5

UI: kbd.js: add shortcut map and shortcut editor

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-19 Tim Janik # 18b53d56bd1

UI: b/menuitem.vue: add shortcut map and support shortcut editing

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-19 Tim Janik # 13e4d2c2c87

UI: b/trackview.vue: hide shortcut area for MIDI channel entries

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-19 Tim Janik # db8bbc97b35

UI: startup.js: use Ase.server.{get|set}_data() for session data

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-19 Tim Janik # e448ee34b14

ASE: api.hh: support Ase.server.{get|set}_data() for config and session data

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-19 Tim Janik # 995dfae71a8

UI: kbd.js: move KeyCode, hotkey and focus handling here

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-19 Tim Janik # 2511195d912

UI: kbd.js: move match_key_event() here

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-18 Tim Janik # e4c8d30789e

UI: kbd.js: add hotkey_name_from_event()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-18 Tim Janik # cd1522f289d

UI: kbd.js: move display_keyname() here

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-18 Tim Janik # 676dc019edb

UI: util.js: add root_ancestor() and escape_html()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-18 Tim Janik # c66fc6d5870

UI: b/shell.vue: add div_handler and html to dialogs, merge with menu layer

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-18 Tim Janik # a20e4ce7f15

UI: b/contextmenu.vue: provide mapname property for menuitems

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-17 Tim Janik # 7336914c741

UI: b/piano-roll.vue: stop event handling in pianorollmenu_click()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-17 Tim Janik # 7e38a25fc5c

UI: b/contextmenu.vue: pass event into clicked() and keyboard_click()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-17 Tim Janik # 6bde07b8a5a

UI: util.js: pass event into keyboard_click(), provide keyboard_click_event()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-17 Tim Janik # 1c633f1ae91

UI: eslintrc.js: allow v-html

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-19 Tim Janik # c78a8a3ce9a

Merge branch 'initialization-fixes'

* initialization-fixes:
  UI: util.js: add compile_expression()
  UI: b/dialog.vue: cache done_resizing to properly set autofocus
  UI: startup.js: initialize Ase.server via __resolve__()
	This allows arbitrary code to depend on the presence
	of Ase via await Ase.server.
  UI: Makefile.mk: pre-initialize Ase.server as promise via setup_promise_type()
  JSONIPC: jsonipc.js: add Jsonipc.setup_promise_type() helper
  UI: startup.js: call all sfc_template() before Vue startup
	This fixes an empty Vue UI at startup, due to createApp(Shell) being
	called before Shell.template has been created.
  MISC: package.json.in: remove unused undefsafe

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-19 Tim Janik # 391087579ab

UI: util.js: add compile_expression()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-18 Tim Janik # 493a1d510e3

UI: b/dialog.vue: cache done_resizing to properly set autofocus

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-16 Tim Janik # bb9df4988c5

UI: startup.js: initialize Ase.server via __resolve__()

This allows arbitrary code to depend on the presence
of Ase via await Ase.server.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-16 Tim Janik # 3a794d406e6

UI: Makefile.mk: pre-initialize Ase.server as promise via setup_promise_type()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-16 Tim Janik # 27ea09cff87

JSONIPC: jsonipc.js: add Jsonipc.setup_promise_type() helper

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-18 Tim Janik # 26c184f2648

UI: startup.js: call all sfc_template() before Vue startup

This fixes an empty Vue UI at startup, due to createApp(Shell) being
called before Shell.template has been created.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-19 Tim Janik # 4f7fca0e8e8

MISC: package.json.in: remove unused undefsafe

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-12 Tim Janik # e8f20479963

Merge branch 'clip-change-batch'

* clip-change-batch:
  UI: b/piano-ctrl.js: rewrite ops to Clip.change_batch() and skip focus note
  UI: util.js: debounce observable getters to less than 60Hz
  ASE: api.hh, clip: add Clip.change_batch()
  UI: util.js: rename copy_deep()
  UI: util.js: add freeze_deep()
  ASE: object.cc: reduce notification updates to ca 125Hz
  ASE: eventlist.hh: allow retrieving copies of replaced and removed notes
  UI: b/piano-ctrl.js: handle select-all, copy, paste keybindings
  UI: b/piano-ctrl.js: avoid note overlaps during move
	Overlapping notes maybe merged, so sort notes before moevements to avoid
	overlaps and thus loss of moving notes.
  JSONIPC: jsonipc.js: minor renames
  ASE: jsonapi.cc: shorten printout of JSON messages after 1KB
  JSONIPC: jsonipc.js: avoid JSON reviver calls for non-object messages
  JSONIPC: jsonipc: use JSON replacer and reviver to serialize objects
  ASE: main.cc: include JsonIpc messages for --jsipc

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-10 Tim Janik # 8140905b6dc

UI: b/piano-ctrl.js: rewrite ops to Clip.change_batch() and skip focus note

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-10 Tim Janik # 3dd3a91eccd

UI: util.js: debounce observable getters to less than 60Hz

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-10 Tim Janik # 762770e7613

ASE: api.hh, clip: add Clip.change_batch()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-10 Tim Janik # 04a370578ee

UI: util.js: rename copy_deep()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-10 Tim Janik # 82bf375bb19

UI: util.js: add freeze_deep()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-10 Tim Janik # f9fe8643d9e

ASE: object.cc: reduce notification updates to ca 125Hz

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-10 Tim Janik # 08c97689d62

ASE: eventlist.hh: allow retrieving copies of replaced and removed notes

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-10 Tim Janik # 8c4a3d8ee35

UI: b/piano-ctrl.js: handle select-all, copy, paste keybindings

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-10 Tim Janik # c471191b9f5

UI: b/piano-ctrl.js: avoid note overlaps during move

Overlapping notes maybe merged, so sort notes before moevements to avoid
overlaps and thus loss of moving notes.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-10 Tim Janik # 9b50a8b3c36

JSONIPC: jsonipc.js: minor renames

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-09 Tim Janik # ac2ff4f5d0f

ASE: jsonapi.cc: shorten printout of JSON messages after 1KB

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-09 Tim Janik # 62c4d896c34

JSONIPC: jsonipc.js: avoid JSON reviver calls for non-object messages

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-09 Tim Janik # ad5697eca71

JSONIPC: jsonipc: use JSON replacer and reviver to serialize objects

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-09 Tim Janik # 70cf2a02ead

ASE: main.cc: include JsonIpc messages for --jsipc

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-08 Tim Janik # 19ca44c22f0

Merge branch 'undo-redo'

* undo-redo:
  ASE: project: clear undo stack upon track removal
	This avoids invalid pointers across track removal.
  UI: util.js: use 'Raw' prepfix for physical hotkey matching
  UI: b/deviceeditor.vue: use :check for menu deactivation
  UI: b/menubar.vue: fix comment
  UI: b/menubar.vue: add Edit menu with Undo and Redo
  UI: b/contextmenu.vue: add :check="checkuri" callback, check uri on keypress
  UI: script.js: adjust to insert_note()
  UI: b/piano-ctrl.js: adjust change_note(), insert_note(), group undo
  ASE: api.hh, clip: add Clip.insert_note() and implement Clip undo
  ASE: api.hh, project: implement undo mechanism
  ASE: object: add queue_notify() to deliver notifications asynchronously
  ASE: api.hh: zero-init ClipNote and add ClipNote::operator==
	This fixes some bogus ClipNote fields for underspecified JSON messages.
  ASE: clip.hh: fix ClipImpl::CmpNoteTicks to take channel into account
  ASE: clip.hh: fix ClipImpl::CmpNoteIds to only take id into account
  ASE: eventlist.hh: return bool from insert() to indicate replacing
  ASE: defs.hh: provide standard decls for class Emittable
  ASE: cxxaux.hh: add shared_ptr_from<>()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-08 Tim Janik # 51e0411d329

ASE: project: clear undo stack upon track removal

This avoids invalid pointers across track removal.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-08 Tim Janik # fd14e3b069c

UI: util.js: use 'Raw' prepfix for physical hotkey matching

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-08 Tim Janik # 50333ebc771

UI: b/deviceeditor.vue: use :check for menu deactivation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-08 Tim Janik # cae36243195

UI: b/menubar.vue: fix comment

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-08 Tim Janik # ebd2dfa4148

UI: b/menubar.vue: add Edit menu with Undo and Redo

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-08 Tim Janik # c453d7091fb

UI: b/contextmenu.vue: add :check="checkuri" callback, check uri on keypress

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-08 Tim Janik # c3fde4cb2e7

UI: script.js: adjust to insert_note()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-08 Tim Janik # 6617baa10a7

UI: b/piano-ctrl.js: adjust change_note(), insert_note(), group undo

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-08 Tim Janik # 287c56cffcb

ASE: api.hh, clip: add Clip.insert_note() and implement Clip undo

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-08 Tim Janik # 3260aaa64c9

ASE: api.hh, project: implement undo mechanism

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-08 Tim Janik # c8ba48d3d8c

ASE: object: add queue_notify() to deliver notifications asynchronously

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-08 Tim Janik # a9141db6aa4

ASE: api.hh: zero-init ClipNote and add ClipNote::operator==

This fixes some bogus ClipNote fields for underspecified JSON messages.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-08 Tim Janik # 65753f0c6f4

ASE: clip.hh: fix ClipImpl::CmpNoteTicks to take channel into account

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-08 Tim Janik # c8dd896e706

ASE: clip.hh: fix ClipImpl::CmpNoteIds to only take id into account

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-08 Tim Janik # 0ec4532ad8a

ASE: eventlist.hh: return bool from insert() to indicate replacing

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-08 Tim Janik # 372ed0f0f59

ASE: defs.hh: provide standard decls for class Emittable

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-08 Tim Janik # e274e7b5aac

ASE: cxxaux.hh: add shared_ptr_from<>()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-08 Tim Janik # 9b8f6f208bd

Merge branch 'scripting'

* scripting:
  UI: b/piano-ctrl.js: fix focus loss during note deletion
  UI: b/piano-roll.vue: popup modal dialog with script parameters
  UI: host.js: add simple parameter ctors: Bool, Range, Text, Choices & Choice
  UI: host.js: allow script registration with parameters
  UI: b/piano-roll.vue: use black as unpainted canvas background
	This only affects flickering that occours when canvases are redrawn,
	e.g. during window resizing.
  UI: script.js: allow script registration and execution with parameters
  UI: b/fed-text.vue: allow text field shrinking
  UI: b/fed-number.vue: allow number shrnking
  UI: b/choice.vue: allow choice shrinking
  UI: b/fed-object.vue: alter layout to allow full field value shrinking
  UI: b/shell.vue: support property list in modal dialogs
  ASE: server: cache Preference properties and properly capture defaults
  ASE: properties.cc: store initial Value as default
  UI: Makefile.mk: upgrade to use material-icons-220403-1-h964709088.tar.xz
  UI: b/dialog.vue: keep done_resizing==false until children are present
	This avoids dialogs prematurely popping down immediately after
	show==true, due to done_resizing==true while the dialog has
	not created all its children.
  UI: b/app.js: rename App.async_button_dialog()
  DOC: copyright.ini: put ui/ch-scripting.md under MPL-2

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-07 Tim Janik # bd42d23a9c4

UI: b/piano-ctrl.js: fix focus loss during note deletion

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-06 Tim Janik # f6b3a11b9cb

UI: b/piano-roll.vue: popup modal dialog with script parameters

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-06 Tim Janik # 6680583cffb

UI: host.js: add simple parameter ctors: Bool, Range, Text, Choices & Choice

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-06 Tim Janik # 497442bca5a

UI: host.js: allow script registration with parameters

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-06 Tim Janik # 0535d7bfcbc

UI: b/piano-roll.vue: use black as unpainted canvas background

This only affects flickering that occours when canvases are redrawn,
e.g. during window resizing.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-06 Tim Janik # 836f0f8c560

UI: script.js: allow script registration and execution with parameters

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-05 Tim Janik # bcf8bfa4341

UI: b/fed-text.vue: allow text field shrinking

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-05 Tim Janik # e0b1ce13f94

UI: b/fed-number.vue: allow number shrnking

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-05 Tim Janik # 13a95db14fd

UI: b/choice.vue: allow choice shrinking

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-05 Tim Janik # 24d95f7b021

UI: b/fed-object.vue: alter layout to allow full field value shrinking

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-05 Tim Janik # 9e660ac3236

UI: b/shell.vue: support property list in modal dialogs

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-05 Tim Janik # 6617d1f05ea

ASE: server: cache Preference properties and properly capture defaults

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-05 Tim Janik # 6f32447a720

ASE: properties.cc: store initial Value as default

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-03 Tim Janik # 771d9934e87

UI: Makefile.mk: upgrade to use material-icons-220403-1-h964709088.tar.xz

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-03 Tim Janik # c912cc7ba27

UI: b/dialog.vue: keep done_resizing==false until children are present

This avoids dialogs prematurely popping down immediately after
show==true, due to done_resizing==true while the dialog has
not created all its children.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-03 Tim Janik # 270b9ea744d

UI: b/app.js: rename App.async_button_dialog()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # 8ba3db5841a

DOC: copyright.ini: put ui/ch-scripting.md under MPL-2

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # a2494797f77

Merge branch 'scripting-docs'

* scripting-docs:
  DOC: split Anklang manual and development documentation
  DOC: Makefile.mk: add scripting docs
  UI: Makefile.mk: generate scripting docs
  UI: ch-scripting.md: add small scripting intro
  DOC: jsdoc2md.js: support class anchors and explicit #linking
  UI: startup.js: Chrome-100 still has the movementX devicePixelRatio bug

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # 78bde562c19

DOC: split Anklang manual and development documentation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-03-30 Tim Janik # f743dbad694

DOC: Makefile.mk: add scripting docs

Signed-off-by: Tim Janik <timj@gnu.org>

2022-03-30 Tim Janik # f0b3f3f20dc

UI: Makefile.mk: generate scripting docs

Signed-off-by: Tim Janik <timj@gnu.org>

2022-03-30 Tim Janik # 14af07ba2d2

UI: ch-scripting.md: add small scripting intro

Signed-off-by: Tim Janik <timj@gnu.org>

2022-03-30 Tim Janik # 43a9e74b887

DOC: jsdoc2md.js: support class anchors and explicit #linking

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-01 Tim Janik # f5360c32481

UI: startup.js: Chrome-100 still has the movementX devicePixelRatio bug

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # 28f8de8eaed

Merge branch 'scripting-host'

* scripting-host:
  UI: host.js: implement WorkerClip
  UI: script.js: add piano_roll_clip_refhandle, clip_list_all_notes, clip_insert_note
  UI: eslintrc.js: modern Browsers have FinalizationRegistry
  UI: b/piano-roll.vue: require editable clip for contextmenu
  UI: b/piano-ctrl.js: ignore button=2 for dragging
  UI: b/piano-roll.vue: add piano_ctrl.move_event(), change pointer on notehover
  UI: b/piano-ctrl.js: set note_canvas.data-notehover="true" in move_event()
  UI: b/piano-roll.vue: run PianoRoll scripts via contextmenu
  UI: startup.js: load scripts from /{Builtin|User}/{Controller|Scripts}/
  UI: script.js: provide run_script_fun() and load_script()
  UI: host.js: handle funid calls
  UI: eslintrc.js: silence useless vue checks
  UI: b/contextmenu.vue: allow setting showicons, throw on empty clicks
  ASE: api.hh: add Server.url_crawler()
  ASE: main: expose web_socket_server
  ASE: websocket.cc: properly decode URLs
  ASE: crawler: allow setting constraindir, constrainfile upon crawler creation
  ASE: strings: add string_url_encode, string_url_decode
  ASE: main.cc: serve /{Builtin|User}/{Controller|Scripts}/ via websocket
  ASE: websocket: add http_alias, map_url to serve from different filesystem dirs
  ASE: path.cc: join_with(): fix duplicate slashes in some cases
  ASE: platform: rename anklang_runpath(), support adding filename
  ASE: platform: add anklang_home_dir()
  UI: b/contextmenu.vue: fix invalid caching of popupclass
  UI: host.js: provide WorkerHost, the API endpoint for scripts
  UI: eslintrc.js: support `log` and `host` globals
  UI: b/trackview.vue: silence eslint
  UI: startup.js: load ./script.js
  UI: script.js: add run_script() to start user scripts in JS

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # 5b98d7c97c4

UI: host.js: implement WorkerClip

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # 2ab39128829

UI: script.js: add piano_roll_clip_refhandle, clip_list_all_notes, clip_insert_note

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # fe18c791136

UI: eslintrc.js: modern Browsers have FinalizationRegistry

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # aba17596081

UI: b/piano-roll.vue: require editable clip for contextmenu

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # ac23fdf88b9

UI: b/piano-ctrl.js: ignore button=2 for dragging

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # 095918424cf

UI: b/piano-roll.vue: add piano_ctrl.move_event(), change pointer on notehover

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # 431394d9060

UI: b/piano-ctrl.js: set note_canvas.data-notehover="true" in move_event()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # 0acfecd3da8

UI: b/piano-roll.vue: run PianoRoll scripts via contextmenu

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # c4f0e72a8dc

UI: startup.js: load scripts from /{Builtin|User}/{Controller|Scripts}/

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # 2a448f4081a

UI: script.js: provide run_script_fun() and load_script()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # bda1cf96301

UI: host.js: handle funid calls

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # 8d3af1faefe

UI: eslintrc.js: silence useless vue checks

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # 9457efa9fe6

UI: b/contextmenu.vue: allow setting showicons, throw on empty clicks

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # 40d8a8c79bc

ASE: api.hh: add Server.url_crawler()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # 8ff8268bb1f

ASE: main: expose web_socket_server

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # 74006340361

ASE: websocket.cc: properly decode URLs

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # c9802ae3b47

ASE: crawler: allow setting constraindir, constrainfile upon crawler creation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # 01781c99b80

ASE: strings: add string_url_encode, string_url_decode

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-01 Tim Janik # 1d86dcee2f3

ASE: main.cc: serve /{Builtin|User}/{Controller|Scripts}/ via websocket

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-01 Tim Janik # 852605a8020

ASE: websocket: add http_alias, map_url to serve from different filesystem dirs

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-01 Tim Janik # 26e26959332

ASE: path.cc: join_with(): fix duplicate slashes in some cases

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-01 Tim Janik # 23bcbb41837

ASE: platform: rename anklang_runpath(), support adding filename

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-01 Tim Janik # 05d2dbe698d

ASE: platform: add anklang_home_dir()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-03-31 Tim Janik # cac9a31595a

UI: b/contextmenu.vue: fix invalid caching of popupclass

Signed-off-by: Tim Janik <timj@gnu.org>

2022-03-30 Tim Janik # 440b090a708

UI: host.js: provide WorkerHost, the API endpoint for scripts

Signed-off-by: Tim Janik <timj@gnu.org>

2022-03-30 Tim Janik # d9e05a59afd

UI: eslintrc.js: support `log` and `host` globals

Signed-off-by: Tim Janik <timj@gnu.org>

2022-03-30 Tim Janik # 656ffa856e6

UI: b/trackview.vue: silence eslint

Signed-off-by: Tim Janik <timj@gnu.org>

2022-03-30 Tim Janik # cf223118f83

UI: startup.js: load ./script.js

Signed-off-by: Tim Janik <timj@gnu.org>

2022-03-30 Tim Janik # 35575b39b5d

UI: script.js: add run_script() to start user scripts in JS

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # 95f33cde5e3

Merge branch 'piano-roll-selection'

* piano-roll-selection:
  UI: b/piano-ctrl.js: move/resize/delete/quantize groups of notes
  UI: b/piano-ctrl.js: fix focus note assignments
  ASE: clip.hh: allow selected to "override" a previous unselected event
  ASE: clip.cc: take selected state into account in change_note, toggle_note
  UI: b/piano-ctrl.js: remove unused var
  UI: b/fed-object.vue: remove unused var
  UI: b/editable.vue: fix missing 'change' emits
  UI: Makefile.mk: allow .mjs installation
  ASE: mime-types.hh: serve cjs mjs as application/javascript
  MISC: package.json.in: upgrade to chroma-js-2.3.0
  UI: b/piano-ctrl.js: implement rectangle selection
  UI: b/piano-roll.vue: paint selection rectangle
  ASE: api.hh: add 'selected' to unique note identity
	* Add 'selected' to the change_note() argument list.
	* Allow two notes at the same key and tick with different 'selected' bits.
  UI: b/piano-roll.vue: track focus in reactive this.adata.have_focus
  ASE: api.hh: add Clip::toggle_note() to /un-)select notes
  ASE: mime-types.hh: add mime type for .mkv

Signed-off-by: Tim Janik <timj@gnu.org>

2022-03-28 Tim Janik # eec66a8304a

UI: b/piano-ctrl.js: move/resize/delete/quantize groups of notes

Signed-off-by: Tim Janik <timj@gnu.org>

2022-03-28 Tim Janik # e61ad520537

UI: b/piano-ctrl.js: fix focus note assignments

Signed-off-by: Tim Janik <timj@gnu.org>

2022-03-27 Tim Janik # c0538c42040

ASE: clip.hh: allow selected to "override" a previous unselected event

Signed-off-by: Tim Janik <timj@gnu.org>

2022-03-27 Tim Janik # 0b814bddcdf

ASE: clip.cc: take selected state into account in change_note, toggle_note

Signed-off-by: Tim Janik <timj@gnu.org>

2022-02-07 Tim Janik # c0258bb1714

UI: b/piano-ctrl.js: remove unused var

Signed-off-by: Tim Janik <timj@gnu.org>

2022-02-07 Tim Janik # 54686d3b4a9

UI: b/fed-object.vue: remove unused var

Signed-off-by: Tim Janik <timj@gnu.org>

2022-02-07 Tim Janik # 05541dda40a

UI: b/editable.vue: fix missing 'change' emits

Signed-off-by: Tim Janik <timj@gnu.org>

2022-02-07 Tim Janik # 9cfaabd00f8

UI: Makefile.mk: allow .mjs installation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-02-07 Tim Janik # b4c2ebb4028

ASE: mime-types.hh: serve cjs mjs as application/javascript

Signed-off-by: Tim Janik <timj@gnu.org>

2022-01-28 Tim Janik # d23b81dbe90

MISC: package.json.in: upgrade to chroma-js-2.3.0

Signed-off-by: Tim Janik <timj@gnu.org>

2022-01-28 Tim Janik # 40b5a5df937

UI: b/piano-ctrl.js: implement rectangle selection

Signed-off-by: Tim Janik <timj@gnu.org>

2022-01-28 Tim Janik # ca20c8726e6

UI: b/piano-roll.vue: paint selection rectangle

Signed-off-by: Tim Janik <timj@gnu.org>

2022-01-28 Tim Janik # fa13f1f790f

ASE: api.hh: add 'selected' to unique note identity

* Add 'selected' to the change_note() argument list.
* Allow two notes at the same key and tick with different 'selected' bits.

Signed-off-by: Tim Janik <timj@gnu.org>

2022-01-27 Tim Janik # 5f25780eea8

UI: b/piano-roll.vue: track focus in reactive this.adata.have_focus

Signed-off-by: Tim Janik <timj@gnu.org>

2022-01-27 Tim Janik # 0919906c12e

ASE: api.hh: add Clip::toggle_note() to /un-)select notes

Signed-off-by: Tim Janik <timj@gnu.org>

2022-01-27 Tim Janik # 09e26efb611

ASE: mime-types.hh: add mime type for .mkv

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # 9f55144ab16

Merge branch 'dialog-hide-resizing'

* dialog-hide-resizing:
  UI: b/fed-object.vue: while fetching properties, block b_dialog_resizers
  UI: b/dialog.vue: keep dialog invisible while b_dialog_resizers return true
  UI: util.js: use indexOf() for array_remove()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-01-19 Tim Janik # 30970f48ae9

UI: b/fed-object.vue: while fetching properties, block b_dialog_resizers

Signed-off-by: Tim Janik <timj@gnu.org>

2022-01-19 Tim Janik # 905c07d6ed9

UI: b/dialog.vue: keep dialog invisible while b_dialog_resizers return true

Signed-off-by: Tim Janik <timj@gnu.org>

2022-01-19 Tim Janik # a165b467267

UI: util.js: use indexOf() for array_remove()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # 94fb2093c39

Merge branch 'clip-looping'

* clip-looping:
  ASE: clip.cc: keep looping forever
  UI: b/fed-object.vue: use Util.extend_property(), parallelize all prop queries
  UI: util.js: extend_property(): support property augmentation

Signed-off-by: Tim Janik <timj@gnu.org>

2021-12-10 Tim Janik # 07ead7715fc

ASE: clip.cc: keep looping forever

Signed-off-by: Tim Janik <timj@gnu.org>

2021-12-09 Tim Janik # 723dd9b7276

UI: b/fed-object.vue: use Util.extend_property(), parallelize all prop queries

Signed-off-by: Tim Janik <timj@gnu.org>

2021-12-09 Tim Janik # 86a1c0872e8

UI: util.js: extend_property(): support property augmentation

Signed-off-by: Tim Janik <timj@gnu.org>

2022-04-02 Tim Janik # 8d8bc4b5261

Merge branch 'jsonipc-default-args'

* jsonipc-default-args:
  JSONIPC: testjsonipc.cc: add tests for argument default values
  JSONIPC: cxxjip.py: use set_d() to register methods with default arguments
  JSONIPC: jsonipc.hh: support methods with default arguments via set_d()

Signed-off-by: Tim Janik <timj@gnu.org>

2022-01-28 Tim Janik # 5afe47b71ba

JSONIPC: testjsonipc.cc: add tests for argument default values

Signed-off-by: Tim Janik <timj@gnu.org>

2022-01-27 Tim Janik # f9b8959dae0

JSONIPC: cxxjip.py: use set_d() to register methods with default arguments

Signed-off-by: Tim Janik <timj@gnu.org>

2022-01-27 Tim Janik # 28d9eac1e8d

JSONIPC: jsonipc.hh: support methods with default arguments via set_d()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-30 Tim Janik # 9d98f789cf4

Merge branch 'insn-variants'

* insn-variants:
  MISC: mkdeb.sh: use xz compression level -9
  UI: Makefile.mk: consistently use $(CP)
  UI: Makefile.mk: fix missing dependency
	If parallel invocations of CP(1) try to create the same directory
	concurrently, one can fail with EEXIST which breaks the make rule.
  ASE: Makefile.mk: support AnklangSynthEngine-fma installation
  ELECTRON: main.js: start AnklangSynthEngine-fma if present
  ASE: Makefile.mk: add INSN to ase_version_long
  ASE: platform.cc: find installpath from .text symbol instead of hardcoded name
  MISC: Makefile.mk: use $UID not $USER to construct tmp directory name
	Using the numeric $UID avoids special chars in the directory name.
  MISC: Makefile.mk: build SSE and FMA binaries into same release package
  MISC: Makefile.mk: set BUILDDIR for misc/mkdeb.sh
  MISC: mkdeb.sh: support $BUILDDIR in environment
  DEVICES: Makefile.mk: fix missing directory dependency for .nostray
  DEVICES: blepsynth/Makefile.mk: fix missing directory dependency for .nostray
  MISC: config-uname.mk: ensure to define INSN, even if it's 'native'
  MISC: config-uname.mk: optimize for native CPU unless INSN=fma or INSN=sse
  ASE: Makefile.mk: insn-targets: install $INSNDEST/…/AnklangSynthEngine-$INSN
  MISC: Makefile.mk: publish release tag after successful release-upload

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-07 Tim Janik # 3bdd4a8cab4

MISC: mkdeb.sh: use xz compression level -9

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-29 Tim Janik # 649e8e63e1e

UI: Makefile.mk: consistently use $(CP)

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-29 Tim Janik # cefd893ae0a

UI: Makefile.mk: fix missing dependency

If parallel invocations of CP(1) try to create the same directory
concurrently, one can fail with EEXIST which breaks the make rule.

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-28 Tim Janik # 719efa74d96

ASE: Makefile.mk: support AnklangSynthEngine-fma installation

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-28 Tim Janik # 80bb9b0a478

ELECTRON: main.js: start AnklangSynthEngine-fma if present

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-28 Tim Janik # 4daf1d65d0a

ASE: Makefile.mk: add INSN to ase_version_long

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-28 Tim Janik # caea0617038

ASE: platform.cc: find installpath from .text symbol instead of hardcoded name

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-30 Tim Janik # 8be9940d4f2

MISC: Makefile.mk: use $UID not $USER to construct tmp directory name

Using the numeric $UID avoids special chars in the directory name.

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-26 Tim Janik # feb01cb8a0d

MISC: Makefile.mk: build SSE and FMA binaries into same release package

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-26 Tim Janik # c0ef9cf93e4

MISC: Makefile.mk: set BUILDDIR for misc/mkdeb.sh

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-26 Tim Janik # ba1ff5047a6

MISC: mkdeb.sh: support $BUILDDIR in environment

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-26 Tim Janik # 3f32e73f99d

DEVICES: Makefile.mk: fix missing directory dependency for .nostray

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-26 Tim Janik # 1c80e7d346c

DEVICES: blepsynth/Makefile.mk: fix missing directory dependency for .nostray

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-28 Tim Janik # 433263aa5d1

MISC: config-uname.mk: ensure to define INSN, even if it's 'native'

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-26 Tim Janik # 5cc1692045a

MISC: config-uname.mk: optimize for native CPU unless INSN=fma or INSN=sse

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-26 Tim Janik # 22572db59f1

ASE: Makefile.mk: insn-targets: install $INSNDEST/…/AnklangSynthEngine-$INSN

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-22 Tim Janik # 93a2dd9d8bd

MISC: Makefile.mk: publish release tag after successful release-upload

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-22 Tim Janik # bcde2f3e444

Anklang 0.0.1-alpha1

This wraps up a good year of development to reshape the code base into
something sane, modern and extensible. Let's hope we can pick up a fast
pace for releases from now on...

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-22 Tim Janik # 65517488398

Merge branch 'release-rules'

* release-rules:
  MISC: Makefile.mk: upload release assets ChangeLog, deb, AppImage
  MISC: Makefile.mk: force git worktree remove
  MISC: Makefile.mk: show release artefacts after release build
  MISC: Makefile.mk: add 'release-changelog' to 'release-build'
  MISC: Makefile.mk: use make anklang-deb for release-build
  MISC: Makefile.mk: add release-upload, use --news-tag options
  MISC: Makefile.mk: add rule to generate release ChangeLog
  MISC: Makefile.mk: add anklang-deb rule
  MISC: Makefile.mk: move appimage-runtime-zstd next to appimage rule
  MISC: Makefile.mk: build debian package
  MISC: Makefile.mk: add release-build to build release artefacts with defaults
  MISC: Makefile.mk: add release-news to help with NEWS.md updates
  MISC: Makefile.mk: introduce proper AppImage dependency
  MISC: version.sh: add --news-tag1, --news-tag2 to extract tags from NEWS.md
  MISC: version.sh: handle 2-number versions, enforce non-release postfix
  MISC: config-uname.mk: INSTALL_DIR_RULE.impl: install explicit targets only
  MISC: mkdeb.sh: remove unneeded usr/share/doc/<PACKAGE> link
  DOC: Makefile.mk: add missing $(docdir)/anklang installation
  DOC: style/Makefile.mk: INSTALL_DIR_RULE needs dependable install targets
  DOC: Makefile.mk: use preconfigured $(CP)
  ELECTRON: Makefile.mk: minor cleanup
  Makefile.mk: define docdir

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-21 Tim Janik # 459fb97b855

MISC: Makefile.mk: upload release assets ChangeLog, deb, AppImage

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-21 Tim Janik # 220573b312f

MISC: Makefile.mk: force git worktree remove

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-21 Tim Janik # 25b404564f4

MISC: Makefile.mk: show release artefacts after release build

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-21 Tim Janik # 432cb33914a

MISC: Makefile.mk: add 'release-changelog' to 'release-build'

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-21 Tim Janik # c0c89669c3d

MISC: Makefile.mk: use make anklang-deb for release-build

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-21 Tim Janik # b25be361b28

MISC: Makefile.mk: add release-upload, use --news-tag options

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-21 Tim Janik # d790bcd046b

MISC: Makefile.mk: add rule to generate release ChangeLog

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-21 Tim Janik # d894734492b

MISC: Makefile.mk: add anklang-deb rule

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-21 Tim Janik # bb55f26003e

MISC: Makefile.mk: move appimage-runtime-zstd next to appimage rule

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-21 Tim Janik # c5a4af3a836

MISC: Makefile.mk: build debian package

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-21 Tim Janik # 5104f1d3214

MISC: Makefile.mk: add release-build to build release artefacts with defaults

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-21 Tim Janik # b7ac7ee20bc

MISC: Makefile.mk: add release-news to help with NEWS.md updates

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-21 Tim Janik # add9d225add

MISC: Makefile.mk: introduce proper AppImage dependency

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-20 Tim Janik # a102bec35f5

MISC: version.sh: add --news-tag1, --news-tag2 to extract tags from NEWS.md

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-20 Tim Janik # 2a5e3ac7ada

MISC: version.sh: handle 2-number versions, enforce non-release postfix

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-20 Tim Janik # 5b62883cf79

MISC: config-uname.mk: INSTALL_DIR_RULE.impl: install explicit targets only

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-22 Tim Janik # c240ce4e2bd

MISC: mkdeb.sh: remove unneeded usr/share/doc/<PACKAGE> link

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-22 Tim Janik # d04e6789182

DOC: Makefile.mk: add missing $(docdir)/anklang installation

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-20 Tim Janik # 2b47ef08a08

DOC: style/Makefile.mk: INSTALL_DIR_RULE needs dependable install targets

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-20 Tim Janik # 3dcb8b8c2b3

DOC: Makefile.mk: use preconfigured $(CP)

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-22 Tim Janik # d6663eb29f7

ELECTRON: Makefile.mk: minor cleanup

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-22 Tim Janik # ee4b1663c9d

Makefile.mk: define docdir

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-19 Tim Janik # 278109c24dc

Merge branch 'print-driver-flags'

* print-driver-flags:
  ASE: main.cc: --list-drivers: print driver flags if ASE_DEBUG=driver
  ASE: driver: add priority_string()
  UI: eslintrc.js: use OFF consistently

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-19 Tim Janik # 755dc207031

ASE: main.cc: --list-drivers: print driver flags if ASE_DEBUG=driver

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-19 Tim Janik # 07b411848b6

ASE: driver: add priority_string()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-13 Tim Janik # e35d872a5e7

UI: eslintrc.js: use OFF consistently

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-19 Tim Janik # 5b9045d6b7c

Merge branch 'with-latex'

* with-latex:
  DOC: Makefile.mk: build & install anklang-manual.pdf if WITH_LATEX=y is in env
  MISC: Makefile.mk: force link installation
  DOC: Makefile.mk: doc/install: fix missing doc/style/ installation
  NEWS.md: fix wording

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-18 Tim Janik # c43262cc90e

DOC: Makefile.mk: build & install anklang-manual.pdf if WITH_LATEX=y is in env

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-18 Tim Janik # 599d68f8834

MISC: Makefile.mk: force link installation

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-18 Tim Janik # 03e2fae89e9

DOC: Makefile.mk: doc/install: fix missing doc/style/ installation

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-18 Tim Janik # 0e14084eb0f

NEWS.md: fix wording

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-11 Tim Janik # 5674a32c07e

Merge branch 'clip-playback'

* clip-playback:
  UI: util.js: remove unused code
  UI: b/positionview.vue: make numerator/denominator editable
	- use editable fields for numerator and denominator
	- avoid requesting unneeded telemetry fields
  UI: b/devicepanel.vue: use defaultcollapse=false for device menu
  UI: b/treeselector-item.vue: honor defaultcollapse for collapsible entries
  UI: b/treeselector.vue: add 'defaultcollapse'
  UI: b/trackview.vue: remove unused code
  UI: b/tracklist.vue: provide b-cliplist.trackindex attribute
  UI: b/clipview.vue: add component to render clip thumbnails
	- render thumbnail of a clip
	- export tickscale
	- change current piano roll contents upon clicks
  UI: b/cliplist.vue: use b-clipview and show playback position
	- use b-clipview to display clips
	- display current clip playback position via track telemetry
	- avoid Proxy-fication of telemetry
	- cleanup cliplist.vue
  UI: theme.scss: introduce b-clip-play-bg and b-clip-play-fg
  ASE: track: add ClipScout, setup MidiProducer, feed it Clip::Generator
	- create and connect MidiProducer
	- install EngineMidiInput -> MidiProducer connection
	- update_clips(): adjust MidiFeed when clips change
	- queue_cmd: support START/STOP commands on MIDI producer
	- TrackImpl: expose project()
	- queue_cmd(STOP): allow `bool restart` as callback argument
	- add ClipScout to determine clip succession
	- export track playback telemetry fields
  ASE: api.hh: export track playback telemetry fields
  ASE: project: 1776 BPM, use TickSignature, fix start & stop
	- add TickSignature, allow changes to numerator/denominator
	- start and stop all tracks synchronously
	- use TickSignature to store and export tempo
	- conditionally reset transport upon second stop()
	- allow up to 1776 BPM
	- align telemetry fields
  ASE: engine.cc: update transport position directly after rendering
  ASE: transport: 1776 BPM, align fields, add modification API
	- use TickSignature to store and export tempo
	- allow up to 1776 BPM
	- check min/max rate and bpm
	- align telemetry fields
	- guard against negative tick values
	- provide set_tick() and set_beat()
	- remove unused offset in TickSignature
	- support TickSignature assignment
  ASE: clip: add MIDI note Generator
	- trigger update_clips() if the containing track on changes
	- emit notifications after deserialization
	- add ClipImpl::Generator to isolate clip note generation
	- use closed-form calculation to jump across loops
	- use callbacks to generate notes from generate()
	- return number of generated ticks from generate()
  ASE: midilib: introduce MidiProducer and helpers MidiFeed, MidiClip
	- add MidiProducer class to generate MIDI events from clips and pass through
	  MIDI device events. Uses TRANSPORT_PPQN from transport.hh. Notes of a
	  MidiClip are provided as a sequnce of clips in a MidiFeed struct.
	  Expose the current playback positon for Ase::Track.
	- add ClipImplGeneratorS to MidiFeed
	- start clip on bar boundary
	- call ClipImpl::Generator to generate notes
	- use ClipImplGenerator to generate MIDI note events
	- use TrackImpl::ClipScout to guide clip succession
	- pass through incoming MIDI input events
	- preserve play position across feed updates
	- flush NOTE_OFF events on stop
	- add `restart` flag to stop()
	- allow playback continuation
  ASE: midievent: ensure_order(): use non-allocating fixed_sort and inline dtors

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # c84845d9a0b

UI: util.js: remove unused code

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # a77f8c386b9

UI: b/positionview.vue: make numerator/denominator editable

- use editable fields for numerator and denominator
- avoid requesting unneeded telemetry fields

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # eced4e5d430

UI: b/devicepanel.vue: use defaultcollapse=false for device menu

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # d1a7ac6e680

UI: b/treeselector-item.vue: honor defaultcollapse for collapsible entries

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # cc9bbfec450

UI: b/treeselector.vue: add 'defaultcollapse'

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # 587d0f01e59

UI: b/trackview.vue: remove unused code

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # 84ea9de4d42

UI: b/tracklist.vue: provide b-cliplist.trackindex attribute

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # 413ff837e63

UI: b/clipview.vue: add component to render clip thumbnails

- render thumbnail of a clip
- export tickscale
- change current piano roll contents upon clicks

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # d59fe839b0d

UI: b/cliplist.vue: use b-clipview and show playback position

- use b-clipview to display clips
- display current clip playback position via track telemetry
- avoid Proxy-fication of telemetry
- cleanup cliplist.vue

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # c0bd3b55637

UI: theme.scss: introduce b-clip-play-bg and b-clip-play-fg

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-07 Tim Janik # 209ce5de23c

ASE: track: add ClipScout, setup MidiProducer, feed it Clip::Generator

- create and connect MidiProducer
- install EngineMidiInput -> MidiProducer connection
- update_clips(): adjust MidiFeed when clips change
- queue_cmd: support START/STOP commands on MIDI producer
- TrackImpl: expose project()
- queue_cmd(STOP): allow `bool restart` as callback argument
- add ClipScout to determine clip succession
- export track playback telemetry fields

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # 62068d27086

ASE: api.hh: export track playback telemetry fields

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # d0fcf5dcdc5

ASE: project: 1776 BPM, use TickSignature, fix start & stop

- add TickSignature, allow changes to numerator/denominator
- start and stop all tracks synchronously
- use TickSignature to store and export tempo
- conditionally reset transport upon second stop()
- allow up to 1776 BPM
- align telemetry fields

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # 59f4c4d67d1

ASE: engine.cc: update transport position directly after rendering

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # 54a075e4f74

ASE: transport: 1776 BPM, align fields, add modification API

- use TickSignature to store and export tempo
- allow up to 1776 BPM
- check min/max rate and bpm
- align telemetry fields
- guard against negative tick values
- provide set_tick() and set_beat()
- remove unused offset in TickSignature
- support TickSignature assignment

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # 6a26632a449

ASE: clip: add MIDI note Generator

- trigger update_clips() if the containing track on changes
- emit notifications after deserialization
- add ClipImpl::Generator to isolate clip note generation
- use closed-form calculation to jump across loops
- use callbacks to generate notes from generate()
- return number of generated ticks from generate()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # 9021b9f44e8

ASE: midilib: introduce MidiProducer and helpers MidiFeed, MidiClip

- add MidiProducer class to generate MIDI events from clips and pass through
  MIDI device events. Uses TRANSPORT_PPQN from transport.hh. Notes of a
  MidiClip are provided as a sequnce of clips in a MidiFeed struct.
  Expose the current playback positon for Ase::Track.
- add ClipImplGeneratorS to MidiFeed
- start clip on bar boundary
- call ClipImpl::Generator to generate notes
- use ClipImplGenerator to generate MIDI note events
- use TrackImpl::ClipScout to guide clip succession
- pass through incoming MIDI input events
- preserve play position across feed updates
- flush NOTE_OFF events on stop
- add `restart` flag to stop()
- allow playback continuation

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # 2a0dc3dbc57

ASE: midievent: ensure_order(): use non-allocating fixed_sort and inline dtors

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # 652242bf7e0

Merge branch 'driver-hints'

* driver-hints:
  UI: startup.js: Chrome-95 still has the movementX devicePixelRatio bug
  UI: b/treeselector*.vue: use :disabled="null" to enable items (Vue3)
  UI: b/devicepanel.vue: add comment
  UI: util.js: fix indentation
  UI: b/contextmenu.vue: avoid scaling during positioning
  UI: b/fed-object.vue: widen label and value widths
  UI: b/choice.vue: avoid fixing width for small="0"
  UI: b/icon.vue: use top-alignment for all icons
  UI: b/choice.vue: properly break lines after choice spans
  UI: b/contextmenu.vue: copy b-contextmenu-plaeholder classes over to b-contextmenu
  UI: b/preferencesdialog.vue: use hints to assign headset and recorder icons
  UI: util.js: rename observable_from_getters()
  UI: b/shell.vue: use cwd=MUSIC as FS default
  UI: b/filedialog.vue: give cwd property precedence
  UI: b/envue.js: copy static members
  UI: b/envue.js: simplify component initialization, improve docs
  UI: b/envue.js: forward activated(), deactivated(), serverPrefetch()
  UI: util.js: add weakoid() to weakly associate objects with a unique id
  UI: util.js: improvde dom_update() robustness, add dom_change()
  ASE: driver-alsa.cc: adjust priorities based on DriverEntry.hints
  ASE: driver-alsa.cc: add DriverEntry.hints based on mixer configurations
  ASE: driver.hh: allow finer grained priorities
  ASE: server.cc: add DriverEntry.hints to icon specification
  ASE: main.cc: print DriverEntry.hints during --list-drivers
  ASE: driver.hh: add 'hints' to DriverEntry
  ASE: api.hh: optimize ClipNote for storage size and lookups
  ASE: processor, combo: rename pm_connect_event_input()
  ASE: driver-alsa.cc: rename EDEBUG()
  ASE: defs.hh: add DCallbackS for callback sequences that take a double
  ASE: defs.hh: provide U64MAX I63MAX I63MIN U32MAX I31MAX I31MIN M23MAX M52MAX
  ASE: defs.hh: define CallbackS
  ASE: sortnet: fixed_sort(): use sorting networks for containers <= 16 elements
  ASE: regex: support Re::sub() with count argument
  ASE: utils.cc: allow '-_' in Icon specifications
  ASE: internal.hh: add assert_paranoid()
  ASE: cxxaux.hh: add ASE_ASSERT_PARANOID()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # b95e5fcaa9b

UI: startup.js: Chrome-95 still has the movementX devicePixelRatio bug

Signed-off-by: Tim Janik <timj@gnu.org>

2021-10-03 Tim Janik # 0df7f2402cf

UI: b/treeselector*.vue: use :disabled="null" to enable items (Vue3)

Signed-off-by: Tim Janik <timj@gnu.org>

2021-10-03 Tim Janik # f12c0e55cdb

UI: b/devicepanel.vue: add comment

Signed-off-by: Tim Janik <timj@gnu.org>

2021-10-03 Tim Janik # 15948e7eaa9

UI: util.js: fix indentation

Signed-off-by: Tim Janik <timj@gnu.org>

2021-10-03 Tim Janik # ccbc695968c

UI: b/contextmenu.vue: avoid scaling during positioning

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-26 Tim Janik # 2cc0b1620ef

UI: b/fed-object.vue: widen label and value widths

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-26 Tim Janik # df2da252819

UI: b/choice.vue: avoid fixing width for small="0"

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-25 Tim Janik # 8c2f7014b4c

UI: b/icon.vue: use top-alignment for all icons

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-25 Tim Janik # 79a9b2765c4

UI: b/choice.vue: properly break lines after choice spans

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-25 Tim Janik # 58bccd022ba

UI: b/contextmenu.vue: copy b-contextmenu-plaeholder classes over to b-contextmenu

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-21 Tim Janik # 6c5b2507c66

UI: b/preferencesdialog.vue: use hints to assign headset and recorder icons

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-07 Tim Janik # d678d793de5

UI: util.js: rename observable_from_getters()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-05 Tim Janik # 5e661b74409

UI: b/shell.vue: use cwd=MUSIC as FS default

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-05 Tim Janik # 4142788961c

UI: b/filedialog.vue: give cwd property precedence

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-05 Tim Janik # e9a64a6ed7e

UI: b/envue.js: copy static members

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-05 Tim Janik # ac05abcc145

UI: b/envue.js: simplify component initialization, improve docs

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-05 Tim Janik # 300c0cefa8d

UI: b/envue.js: forward activated(), deactivated(), serverPrefetch()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-01 Tim Janik # 49d038307bd

UI: util.js: add weakoid() to weakly associate objects with a unique id

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-05 Tim Janik # b344597147b

UI: util.js: improvde dom_update() robustness, add dom_change()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-21 Tim Janik # 35e5bcb2948

ASE: driver-alsa.cc: adjust priorities based on DriverEntry.hints

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-21 Tim Janik # 49d178d8fd7

ASE: driver-alsa.cc: add DriverEntry.hints based on mixer configurations

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-21 Tim Janik # 83ff5eceacf

ASE: driver.hh: allow finer grained priorities

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-19 Tim Janik # bf6a34fb83f

ASE: server.cc: add DriverEntry.hints to icon specification

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-18 Tim Janik # 784f76eee1e

ASE: main.cc: print DriverEntry.hints during --list-drivers

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-18 Tim Janik # 202a77d9229

ASE: driver.hh: add 'hints' to DriverEntry

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-15 Tim Janik # ab4ebfad50f

ASE: api.hh: optimize ClipNote for storage size and lookups

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-16 Tim Janik # 0fd6498254b

ASE: processor, combo: rename pm_connect_event_input()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-21 Tim Janik # 773a671f17a

ASE: driver-alsa.cc: rename EDEBUG()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-10-29 Tim Janik # 148bfea62a7

ASE: defs.hh: add DCallbackS for callback sequences that take a double

Signed-off-by: Tim Janik <timj@gnu.org>

2021-10-14 Tim Janik # 9c430870715

ASE: defs.hh: provide U64MAX I63MAX I63MIN U32MAX I31MAX I31MIN M23MAX M52MAX

Signed-off-by: Tim Janik <timj@gnu.org>

2021-10-09 Tim Janik # ee9fc72a15e

ASE: defs.hh: define CallbackS

Signed-off-by: Tim Janik <timj@gnu.org>

2021-10-26 Tim Janik # d368b155aa2

ASE: sortnet: fixed_sort(): use sorting networks for containers <= 16 elements

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-18 Tim Janik # e1dd4117f53

ASE: regex: support Re::sub() with count argument

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-18 Tim Janik # ad1ad98e2eb

ASE: utils.cc: allow '-_' in Icon specifications

Signed-off-by: Tim Janik <timj@gnu.org>

2021-10-26 Tim Janik # 2ceeb6d1786

ASE: internal.hh: add assert_paranoid()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-10-26 Tim Janik # a3d0aa88d7e

ASE: cxxaux.hh: add ASE_ASSERT_PARANOID()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # 4107f2cf18c

Merge branch 'eslint-fixes'

* eslint-fixes:
  MISC: dbuild.sh: build docker image *without* caching if '-i' is given
  MISC: package.json.in: upgrade nodemon-2.0.15, needs undefsafe-2.0.5
	For unknown reasons, npm-7.24.1 chokes unless undefsafe@2.0.5 is
	explicitely installed alongside nodemon-2.0.15.
  MISC: package.json.in: upgrade to vue-3.2.21, eslint-plugin-vue-7.20.0
  UI: eslintrc.js: rename eslintrc.js from .eslintrc.js
  UI: .eslintrc.js: switch to plugin:vue/vue3-recommended
  UI: b/treeselector-item.vue: use <component :is="li"/>, mandated by vue3

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # 934b12cc3b8

MISC: dbuild.sh: build docker image *without* caching if '-i' is given

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # 5b84ddde24e

MISC: package.json.in: upgrade nodemon-2.0.15, needs undefsafe-2.0.5

For unknown reasons, npm-7.24.1 chokes unless undefsafe@2.0.5 is
explicitely installed alongside nodemon-2.0.15.

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # 43bdcd6daaa

MISC: package.json.in: upgrade to vue-3.2.21, eslint-plugin-vue-7.20.0

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # 44678b20868

UI: eslintrc.js: rename eslintrc.js from .eslintrc.js

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # f192a2bc1fb

UI: .eslintrc.js: switch to plugin:vue/vue3-recommended

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-10 Tim Janik # 96c4f79e983

UI: b/treeselector-item.vue: use <component :is="li"/>, mandated by vue3

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-09 Tim Janik # eab0f3c85c1

Merge branch 'preload-option'

* preload-option:
  ASE: driver.cc: account for n_channels_ during NULL driver writes
  ASE: main: allow --jsbin without --jsipc
  ASE: websocket, jsonapi: allow fine grained logging via logflags
  ASE: server: add global ServerImpl *SERVER;
  ASE: main: provide --list-drivers
  ASE: main: support --preload <prj>
  Makefile.mk: use ctags-universal to generate $>/TAGS

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-13 Tim Janik # 432a1edde0e

ASE: driver.cc: account for n_channels_ during NULL driver writes

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-07 Tim Janik # 4b4babb4af2

ASE: main: allow --jsbin without --jsipc

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-07 Tim Janik # 8efa68ae09d

ASE: websocket, jsonapi: allow fine grained logging via logflags

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-07 Tim Janik # 6c8b093bc89

ASE: server: add global ServerImpl *SERVER;

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-02 Tim Janik # 1415526ee04

ASE: main: provide --list-drivers

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-22 Tim Janik # 7238c11c440

ASE: main: support --preload <prj>

Signed-off-by: Tim Janik <timj@gnu.org>

2021-10-14 Tim Janik # ecc60b0a712

Makefile.mk: use ctags-universal to generate $>/TAGS

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-09 Tim Janik # 9054d94984c

Merge branch 'update-vue-electron'

* update-vue-electron:
  UI: partlist.vue: silence eslint
  MISC: package.json.in: update Vue, electron, eslint, markdown-it, sass, etc
	Update to vue-3.2.19 electron-15.1.0 markdown-it-12.2.0 mathjax-3.2.0
	eslint-7.32.0 eslint-plugin-html-6.2.0 eslint-plugin-vue-7.18.0 sass-1.42.1
	nodemon-2.0.13.

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-07 Tim Janik # 1cbc495ab22

UI: partlist.vue: silence eslint

Signed-off-by: Tim Janik <timj@gnu.org>

2021-10-03 Tim Janik # 85e463bcd93

MISC: package.json.in: update Vue, electron, eslint, markdown-it, sass, etc

Update to vue-3.2.19 electron-15.1.0 markdown-it-12.2.0 mathjax-3.2.0
eslint-7.32.0 eslint-plugin-html-6.2.0 eslint-plugin-vue-7.18.0 sass-1.42.1
nodemon-2.0.13.

Signed-off-by: Tim Janik <timj@gnu.org>

2021-11-09 Tim Janik # 505dd94447d

Merge branch 'fix-make-run'

* fix-make-run:
  MISC: checkinsertions.sh: simple tool to grep commit range for keywords
  ASE: eventlist.hh: fix comment
  Makefile.mk: run: start Anklang without installation

Signed-off-by: Tim Janik <timj@gnu.org>

2021-10-03 Tim Janik # 92a26d54ec5

MISC: checkinsertions.sh: simple tool to grep commit range for keywords

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-15 Tim Janik # f285f5e9847

ASE: eventlist.hh: fix comment

Signed-off-by: Tim Janik <timj@gnu.org>

2021-10-03 Tim Janik # d5840119ced

Makefile.mk: run: start Anklang without installation

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-07 Tim Janik # 5e4d923c3b1

Merge branch 'simplify-version-sh'

* simplify-version-sh:
  DOC: copyright.ini: apply MPL-2.0 to .gitattributes
  MISC: version.sh: simplify version detection
  ASE: provide long version string as ase_version()
  .gitattributes: allow git-archive substitutions for misc/version.sh
  GITHUB: workflows/testing.yml: omit explicit workflow name

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-07 Tim Janik # 0953fe49055

DOC: copyright.ini: apply MPL-2.0 to .gitattributes

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-07 Tim Janik # ca54b0b66bc

MISC: version.sh: simplify version detection

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-07 Tim Janik # f1226e7abff

ASE: provide long version string as ase_version()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-07 Tim Janik # e6650f911d9

.gitattributes: allow git-archive substitutions for misc/version.sh

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-06 Tim Janik # 6274b36e83b

GITHUB: workflows/testing.yml: omit explicit workflow name

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-06 Tim Janik # a77a6ed85bf

Merge branch 'playback-transport'

* playback-transport:
  UI: b/positionview.vue: adjust to sixteenth telemetry
  ASE: project.cc: adjust Transport.running and adapt current_sixteenth telemetry
  UI: b/partlist.vue: disable unfinished logic
  UI: b/editable.vue: use #000 as input bg and auto-convert "clicks"
  UI: util.js: remove unused v-inlineblur
  UI: b/trackview.vue: use b-editable to edit track labels
  UI: b/contextmenu.vue: prevent spurious enter/leave/etc events during transitions
  UI: b/editable.vue: allow explicit and double click activation
  UI: b/positionview.vue: allow BPM changes via b-editable
  UI: b/positionview.vue: remove unused code
  UI: b/editable.vue: display an editable <span/>
  ASE: jsonapi.cc: require 'Origin: http://localhost' for socket connections
  ASE: websocket: provide header() getter for WebSocketConnection::Info
  ASE: project: implement real BPM setter
  ASE: properties: support Range() property with explicit getter and setter
  ASE: api.hh: Gadget: implement list_properties(), get_value(), set_value()
  UI: b/positionview.vue: add input field
  UI: b/positionview.vue: move frequent updates into text node
  UI: b/trackview.vue: avoid @contextmenu propagation out of INPUT field
  UI: startup.js: allow button3 browser menus in INPUT fields
  UI: b/positionview.vue: display bar.beat.sixteenth.fraction minutes:seconds
  UI: util.js: support Int8 telemtry data
  ASE: project.cc: export current bar/beat/sixteenth, minutes/seconds, etc
  ASE: project: add autoplay timer
  ASE: server.hh: add int8 telemetry_type
  ASE: cxxaux.hh: add divmod() helper
  ASE: loop: add clear_source() helper
  UI: util.js: export extend_property()
  UI: b/positionview.vue: display bpm, numerator, denominator
  ASE: project: add musical_tuning, dirty, bpm, numerator, denominator properties
  ASE: server: provide EnumInfo::impl for MusicalTuning
  ASE: value: add EnumInfo to augment enumerations
  ASE: properties: add ident, support float Range and extend Enum properties
  JSONIPC: jsonipc.hh: add Enum<>::list_values()
  ASE: gadget.cc: implement access_property() in terms of access_properties()
  ASE: clip.cc: notify about note changes
  UI: b/positionview.vue: show current_bpm and current_tick
  ASE: project.cc: provide current_bpm and current_tick as double
  UI: util.js: remove unused telemetry type "u32"
  ASE: server.hh: remove unused telemetry type "u32"
  ASE: api.hh: use 64bit for ticks and duration
  ASE: engine: leave timing defaults to AudioTransport ctor
  ASE: engine: use transport->advance()
  UI: b/*.vue: use Util.PPQN
  UI: util.js: export PPQN as 4838400
  ASE: clip.cc: use TRANSPORT_PPQN
  ASE: transport: provide TickSignature to handle all AudioTransport timing
	Squashed commits to introduce TickSignature:
	  Move initialisation into AudioTransport()
	  Use 64bit for ticks and duration
	  Quantize current_tick_d
	  Provide current bar/beat/sixteenth, minutes/seconds
	  Add next_bar_tick()
	  Add TimeSignature class
	  Add set_tick(), tick_from_beat(), tick_from_time()
	  Add TimeSignature tests
	  Change PPQN to 4838400
	  Add TickSignature for musical time signature and tick conversions
	  Support getters and samplerate in TickSignature
	  Add sample_to_tick()
	  Add TickSignature::sample_from_tick()
	  Provide current_bar_tick, sample_to_tick(), sample_from_tick()
	  Add const to TickSignature methods
	  Add beats_per_bar() and beat_unit()
	  Constrain set_signature() inputs and return changed flag
	  Remove unused numerator and denominator
	  Construct TickSignature with defaults to avoid 0-division

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-03 Tim Janik # f24ac9fe709

UI: b/positionview.vue: adjust to sixteenth telemetry

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-03 Tim Janik # 6cdf13613b4

ASE: project.cc: adjust Transport.running and adapt current_sixteenth telemetry

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-11 Tim Janik # 48629c1ec24

UI: b/partlist.vue: disable unfinished logic

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-11 Tim Janik # 365223fda40

UI: b/editable.vue: use #000 as input bg and auto-convert "clicks"

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-11 Tim Janik # 05a5f71467d

UI: util.js: remove unused v-inlineblur

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-11 Tim Janik # b12866d1df8

UI: b/trackview.vue: use b-editable to edit track labels

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-11 Tim Janik # 11e5943d2d0

UI: b/contextmenu.vue: prevent spurious enter/leave/etc events during transitions

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-11 Tim Janik # e949f33d748

UI: b/editable.vue: allow explicit and double click activation

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-11 Tim Janik # 2ef1fc27792

UI: b/positionview.vue: allow BPM changes via b-editable

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-11 Tim Janik # 99127f8f983

UI: b/positionview.vue: remove unused code

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-11 Tim Janik # c0d74d8e8a2

UI: b/editable.vue: display an editable <span/>

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-10 Tim Janik # 2a1e8422502

ASE: jsonapi.cc: require 'Origin: http://localhost' for socket connections

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-10 Tim Janik # cb622d8c1ea

ASE: websocket: provide header() getter for WebSocketConnection::Info

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-10 Tim Janik # 62fe5608082

ASE: project: implement real BPM setter

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-10 Tim Janik # 9ee14365e38

ASE: properties: support Range() property with explicit getter and setter

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-10 Tim Janik # 8eb5e92b043

ASE: api.hh: Gadget: implement list_properties(), get_value(), set_value()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-05 Tim Janik # 3034332ee0a

UI: b/positionview.vue: add input field

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-05 Tim Janik # caa4577d4bb

UI: b/positionview.vue: move frequent updates into text node

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-05 Tim Janik # 41695e83408

UI: b/trackview.vue: avoid @contextmenu propagation out of INPUT field

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-05 Tim Janik # 98a082a1a42

UI: startup.js: allow button3 browser menus in INPUT fields

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-04 Tim Janik # ea52e05dbc0

UI: b/positionview.vue: display bar.beat.sixteenth.fraction minutes:seconds

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-04 Tim Janik # d1766e19676

UI: util.js: support Int8 telemtry data

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-04 Tim Janik # 14855de3bfc

ASE: project.cc: export current bar/beat/sixteenth, minutes/seconds, etc

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-04 Tim Janik # 526b64f2b28

ASE: project: add autoplay timer

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-04 Tim Janik # d2fb59bff31

ASE: server.hh: add int8 telemetry_type

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-04 Tim Janik # 1a453d1e93d

ASE: cxxaux.hh: add divmod() helper

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-04 Tim Janik # 864d2ee206e

ASE: loop: add clear_source() helper

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-29 Tim Janik # 95b76984bbe

UI: util.js: export extend_property()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-29 Tim Janik # 00def5a6ad4

UI: b/positionview.vue: display bpm, numerator, denominator

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-29 Tim Janik # 6b1aaba3bf9

ASE: project: add musical_tuning, dirty, bpm, numerator, denominator properties

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-29 Tim Janik # 5bbf3a586ce

ASE: server: provide EnumInfo::impl for MusicalTuning

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-29 Tim Janik # 509c8f36f51

ASE: value: add EnumInfo to augment enumerations

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-29 Tim Janik # 923c4ffe5aa

ASE: properties: add ident, support float Range and extend Enum properties

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-29 Tim Janik # 6fd7b9c8a22

JSONIPC: jsonipc.hh: add Enum<>::list_values()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-29 Tim Janik # 43b45aacfda

ASE: gadget.cc: implement access_property() in terms of access_properties()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-29 Tim Janik # 77eff66f39e

ASE: clip.cc: notify about note changes

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-27 Tim Janik # 5f7719cf517

UI: b/positionview.vue: show current_bpm and current_tick

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-27 Tim Janik # e80c4cd0d9a

ASE: project.cc: provide current_bpm and current_tick as double

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-27 Tim Janik # df87c016422

UI: util.js: remove unused telemetry type "u32"

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-27 Tim Janik # e1f00b54ab5

ASE: server.hh: remove unused telemetry type "u32"

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-27 Tim Janik # 479e871d28e

ASE: api.hh: use 64bit for ticks and duration

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-26 Tim Janik # 737155cdee7

ASE: engine: leave timing defaults to AudioTransport ctor

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-26 Tim Janik # fe5e87f3002

ASE: engine: use transport->advance()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-25 Tim Janik # 2c1562deb7e

UI: b/*.vue: use Util.PPQN

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-25 Tim Janik # 7c9c6e6451e

UI: util.js: export PPQN as 4838400

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-25 Tim Janik # 2571f93d30a

ASE: clip.cc: use TRANSPORT_PPQN

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-26 Tim Janik # 14d8df6472c

ASE: transport: provide TickSignature to handle all AudioTransport timing

Squashed commits to introduce TickSignature:
  Move initialisation into AudioTransport()
  Use 64bit for ticks and duration
  Quantize current_tick_d
  Provide current bar/beat/sixteenth, minutes/seconds
  Add next_bar_tick()
  Add TimeSignature class
  Add set_tick(), tick_from_beat(), tick_from_time()
  Add TimeSignature tests
  Change PPQN to 4838400
  Add TickSignature for musical time signature and tick conversions
  Support getters and samplerate in TickSignature
  Add sample_to_tick()
  Add TickSignature::sample_from_tick()
  Provide current_bar_tick, sample_to_tick(), sample_from_tick()
  Add const to TickSignature methods
  Add beats_per_bar() and beat_unit()
  Constrain set_signature() inputs and return changed flag
  Remove unused numerator and denominator
  Construct TickSignature with defaults to avoid 0-division

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-06 Tim Janik # 0f8eb60f06a

Merge branch 'jsdoc'

* jsdoc:
  DOC: jsdoc2md.js: fix export prefix for classes
  DOC: copyright.ini: apply MPL-2 to doc/highlights.theme, ui/jsdocrc.json
  UI: util.js: improve vue_observable_from_getters() docs
  UI: startup.js: use VueApp.config.compilerOptions, recommended since Vue-3.1
  MISC: package.json.in: update Vue and related packages
  UI: Makefile.mk: build ui/envuejs.md and add it to the API reference
  UI: Makefile.mk: build ui/utiljs.md and support triple slash comments
  UI: jsdocrc.json: load ui/slashcomment as jsdoc plugin
  UI: slashcomment.js: add plugin to convert triple slash to jsdoc comments
  DOC: jsdoc2md.js: add anchors to functions
  DOC: jsdoc2md.js: keept empty lines that serve as block seperators
  DOC: jsdoc2md.js: support @overview documentation
  DOC: jsdoc2md.js: generate Constants docs
  DOC: style/faketex.scss: improve TOC number alignment
  DOC: jsdoc2md.js: add --help
  DOC: highlights.theme: turn comments redish and variables/data blueish
  DOC: Makefile.mk: add highlights.theme to .html and .pdf outputs of pandoc
  DOC: highlights.theme: generate from: pandoc --print-highlight-style pygments
  DOC: style/faketex.scss: apply extra spacing to complex definition lists
	The Latex/PDF renderer automatically adds spacing to definition lists that
	include nested lists. This keeps command line option lists compact, while
	spacing out definition lists that describe classes and functions.
	To reproduce this behaviour in HTML renderering, extra spacing needs to
	be applied inside of dl:has(dl, ol, ul).
	Since browsers currently lack support for :has(), the onload.html JS helper
	can be used to match these lists with dl[data-has-nestedlayout="1"] instead.
  DOC: Makefile.mk: include onload.html JS snippet before </body>
  DOC: style/onload.html: set data-has-nestedlayout on dl:has(dl, ol, ul)
	No browser currently supports the :has() pseudo-class, so this adds a JS
	workaround to apply styles to definition lists with complex nested layouts.
  UI: b/ch-vue.md: document template compiler uses
  UI: Makefile.mk: include docs from util.js in vue-docs.md
  DOC: jsdoc2md.js: add simple jsdoc to markdown converter
  MISC: package.json.in: provide jsdoc as build tool
  MISC: package.json.in: upgrade to electron 13.2.2
  UI: startup.js: Chrome-92 still has the movementX devicePixelRatio bug
  MISC: package.json.in: support AnklangSynthEngine $ASEOPT during 'serve'

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-05 Tim Janik # 1ae89f97814

DOC: jsdoc2md.js: fix export prefix for classes

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-05 Tim Janik # 39bdaecea37

DOC: copyright.ini: apply MPL-2 to doc/highlights.theme, ui/jsdocrc.json

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-05 Tim Janik # 80c5d5e714a

UI: util.js: improve vue_observable_from_getters() docs

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-01 Tim Janik # 646c1990e06

UI: startup.js: use VueApp.config.compilerOptions, recommended since Vue-3.1

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-01 Tim Janik # 0ab0a28131b

MISC: package.json.in: update Vue and related packages

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-30 Tim Janik # c57797113a2

UI: Makefile.mk: build ui/envuejs.md and add it to the API reference

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-30 Tim Janik # 37bad98fdc6

UI: Makefile.mk: build ui/utiljs.md and support triple slash comments

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-30 Tim Janik # f71ecf1dea0

UI: jsdocrc.json: load ui/slashcomment as jsdoc plugin

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-30 Tim Janik # 932067ac146

UI: slashcomment.js: add plugin to convert triple slash to jsdoc comments

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-02 Tim Janik # 30b3c840075

DOC: jsdoc2md.js: add anchors to functions

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-02 Tim Janik # c831efb7675

DOC: jsdoc2md.js: keept empty lines that serve as block seperators

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-30 Tim Janik # 1490ff0824f

DOC: jsdoc2md.js: support @overview documentation

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-30 Tim Janik # 86c559e9928

DOC: jsdoc2md.js: generate Constants docs

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-30 Tim Janik # ad01eb0a3f5

DOC: style/faketex.scss: improve TOC number alignment

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-29 Tim Janik # fd0d3e306f0

DOC: jsdoc2md.js: add --help

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-29 Tim Janik # 03b273d2bf6

DOC: highlights.theme: turn comments redish and variables/data blueish

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-29 Tim Janik # 9363d0a9917

DOC: Makefile.mk: add highlights.theme to .html and .pdf outputs of pandoc

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-29 Tim Janik # 55380246a3f

DOC: highlights.theme: generate from: pandoc --print-highlight-style pygments

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-29 Tim Janik # b1074f50f06

DOC: style/faketex.scss: apply extra spacing to complex definition lists

The Latex/PDF renderer automatically adds spacing to definition lists that
include nested lists. This keeps command line option lists compact, while
spacing out definition lists that describe classes and functions.
To reproduce this behaviour in HTML renderering, extra spacing needs to
be applied inside of dl:has(dl, ol, ul).
Since browsers currently lack support for :has(), the onload.html JS helper
can be used to match these lists with dl[data-has-nestedlayout="1"] instead.

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-29 Tim Janik # b08dba23d2d

DOC: Makefile.mk: include onload.html JS snippet before </body>

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-29 Tim Janik # 297883dd2d0

DOC: style/onload.html: set data-has-nestedlayout on dl:has(dl, ol, ul)

No browser currently supports the :has() pseudo-class, so this adds a JS
workaround to apply styles to definition lists with complex nested layouts.

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-28 Tim Janik # 6498bc2a245

UI: b/ch-vue.md: document template compiler uses

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-28 Tim Janik # 7009f7ee0d6

UI: Makefile.mk: include docs from util.js in vue-docs.md

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-28 Tim Janik # 030f900da83

DOC: jsdoc2md.js: add simple jsdoc to markdown converter

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-28 Tim Janik # 1e493b399ef

MISC: package.json.in: provide jsdoc as build tool

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-27 Tim Janik # 7df9dfe73e3

MISC: package.json.in: upgrade to electron 13.2.2

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-27 Tim Janik # 31cf18da763

UI: startup.js: Chrome-92 still has the movementX devicePixelRatio bug

Signed-off-by: Tim Janik <timj@gnu.org>

2021-07-22 Tim Janik # 2216ab10ca3

MISC: package.json.in: support AnklangSynthEngine $ASEOPT during 'serve'

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-06 Tim Janik # 1300284f8ec

Merge branch 'ircbot'

* ircbot:
  GITHUB: workflows/testing.yml: cleanup leftovers
  GITHUB: workflows/notifico.py: remove unused script
  GITHUB: workflows/testing.yml: use ircbot.py for notifications
  GITHUB: workflows/ircbot.py: allow colorized NAME DEPARTMENT STATUS prefixing
  GITHUB: workflows/ircbot.py: add RFC-1459 based simple message IRC bot

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-06 Tim Janik # 23b7f25c575

GITHUB: workflows/testing.yml: cleanup leftovers

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-06 Tim Janik # f5b88ec38da

GITHUB: workflows/notifico.py: remove unused script

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-06 Tim Janik # 936e4a2b43b

GITHUB: workflows/testing.yml: use ircbot.py for notifications

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-06 Tim Janik # 92171153a5b

GITHUB: workflows/ircbot.py: allow colorized NAME DEPARTMENT STATUS prefixing

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-06 Tim Janik # f3e98a77464

GITHUB: workflows/ircbot.py: add RFC-1459 based simple message IRC bot

Signed-off-by: Tim Janik <timj@gnu.org>

2021-09-05 Tim Janik # b99c17940a6

Merge branch 'telemetry'

* telemetry:
  UI: startup.js: handle Jsonipc binary messages with jsonipc_binary_handler_
  UI: util.js: add telemetry_subscribe() / telemetry_unsubscribe()
  UI: b/positionview.vue: fetch and print project telemetry
  UI: b/menubar.vue: provide b-positionview with project
  ASE: server.hh: add telemetry_field()
  ASE: api.hh: add TelemetryField and telemetry() queries
  ASE: transport.hh: add tick_pos
  ASE: processor.hh: add AudioProcessor.transport()
  ASE: combo.cc: use static zeros block instead of 0-filling
  ASE: randomhash: fix fnv1a_consthash64() to not use length as hash value
  ASE: main: add --jsbin
  ASE: websocket, jsonapi: add loglevel
  ASE: engine: allocate AudioTransport from telemetry memory
  ASE: api.hh: add Server.broadcast_telemetry()
  ASE: server: pre-allocate 4MB for audio & transport telemetry memory
  ASE: memory.cc: try locking FastMemory, maybe this should be a flag
  JSONIPC: jsonipc.js: add Jsonipc.handle_binary() to handle blobs
  ASE: defs.hh: declare CustomDataContainer
  ASE: jsonapi: add jsonapi_connection_sender()
  ASE: websocket: add WebSocketConnection::send_binary()
  ASE: utils: add CustomDataContainer::custom_data_destroy()
  ASE: jsonapi: add jsonapi_connection_data()
  ASE: loop.hh: exec_timer(): default to PRIORITY_NORMAL like all other handlers

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-25 Tim Janik # 7759adeb61d

UI: startup.js: handle Jsonipc binary messages with jsonipc_binary_handler_

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-25 Tim Janik # 67fe237b7ee

UI: util.js: add telemetry_subscribe() / telemetry_unsubscribe()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-25 Tim Janik # 78d1aa278a9

UI: b/positionview.vue: fetch and print project telemetry

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-25 Tim Janik # 822206b9665

UI: b/menubar.vue: provide b-positionview with project

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-25 Tim Janik # 3ac718b1b97

ASE: server.hh: add telemetry_field()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-25 Tim Janik # e6b678080f0

ASE: api.hh: add TelemetryField and telemetry() queries

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-25 Tim Janik # 3a8f8c4bfa6

ASE: transport.hh: add tick_pos

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-24 Tim Janik # cce9156aa66

ASE: processor.hh: add AudioProcessor.transport()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-24 Tim Janik # 01361789fb3

ASE: combo.cc: use static zeros block instead of 0-filling

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-24 Tim Janik # 9f6b3a95fa1

ASE: randomhash: fix fnv1a_consthash64() to not use length as hash value

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-24 Tim Janik # b5852a8a4fc

ASE: main: add --jsbin

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-24 Tim Janik # 2c5d16d4a6f

ASE: websocket, jsonapi: add loglevel

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-24 Tim Janik # 4ca8032f156

ASE: engine: allocate AudioTransport from telemetry memory

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-23 Tim Janik # cfb474726ae

ASE: api.hh: add Server.broadcast_telemetry()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-24 Tim Janik # 6d8077e92ba

ASE: server: pre-allocate 4MB for audio & transport telemetry memory

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-24 Tim Janik # eafe511ec17

ASE: memory.cc: try locking FastMemory, maybe this should be a flag

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-23 Tim Janik # 1fe2eaed575

JSONIPC: jsonipc.js: add Jsonipc.handle_binary() to handle blobs

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-23 Tim Janik # 1a044cf8fbb

ASE: defs.hh: declare CustomDataContainer

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-23 Tim Janik # dd13ab8d73a

ASE: jsonapi: add jsonapi_connection_sender()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-23 Tim Janik # 0e94ecb8a83

ASE: websocket: add WebSocketConnection::send_binary()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-23 Tim Janik # d0faaf08566

ASE: utils: add CustomDataContainer::custom_data_destroy()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-23 Tim Janik # 200f7e8ecae

ASE: jsonapi: add jsonapi_connection_data()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-23 Tim Janik # 2ab3249d10a

ASE: loop.hh: exec_timer(): default to PRIORITY_NORMAL like all other handlers

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-16 Tim Janik # e06c1a33ead

Merge branch 'mkcopyright.py'

* mkcopyright.py:
  IMAGES: icons: add MPL-2.0 license to SVG files
  IMAGES: cursors: add MPL-2.0 license to SVG files
  UI: assets: add MPL-2.0 license to SVG files
  DOC: copyright.ini: remove svg files
  MISC: mkcopyright.py: match <cc:license/> in XML-like files
  MISC: mkcopyright.py: omit empty printouts
  DOC: copyright.ini: apply MPL-2.0 to devices/blepsynth/TODO
  GITHUB: workflows/testing.yml: add MPL-2.0 license
  MISC: add MPL-2.0 license
  JSONIPC: Makefile: add MPL-2.0 license
  DOC: style/mathjax-config.js: add MPL-2.0 license
  DOC: style/features.scss: add MPL-2.0 license
  UI: .eslintrc.js: add MPL-2.0 license
  DEVICES: blepsynth/bleposcdata.cc: add MPL-2.0 license
  ASE: mime-types.hh: sort extensions
  ASE: mime-types.hh: add CC0 Public Domain license
  DOC: Makefile.mk: generate doc/copyright
  MISC: Makefile.mk: check-copyright: use doc/copyright.ini
  DOC: copyright.ini: ignore license files
  DOC: copyright.ini: add debian/copyright fields
  DOC: copyright.ini: explicitely list license for some files
  DOC: copyright: remove file, can be generated with mkcopyright.py
  MISC: Makefile.mk: add check-copyright if .git is present
  MISC: config-utils.mk: provide WITHOUTGIT and WITHGIT
  MISC: mkcopyright.py: support [ignore] section
  MISC: mkcopyright.py: read debian/copyright headers from INI
  MISC: mkcopyright.py: add --spdx-licenses, and add all known SPDX licenses
  MISC: mkcopyright.py: ignore utf-8 decoding errors during file input
  MISC: mkcopyright.py: add helper script to check and generate copyright list

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-16 Tim Janik # 53a0a3afcd5

IMAGES: icons: add MPL-2.0 license to SVG files

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-16 Tim Janik # 710056d0a2a

IMAGES: cursors: add MPL-2.0 license to SVG files

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-16 Tim Janik # e2ee93fde26

UI: assets: add MPL-2.0 license to SVG files

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-16 Tim Janik # e173d77aad8

DOC: copyright.ini: remove svg files

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-16 Tim Janik # b45274b05f1

MISC: mkcopyright.py: match <cc:license/> in XML-like files

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-16 Tim Janik # dd3df66c9e7

MISC: mkcopyright.py: omit empty printouts

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-16 Tim Janik # 5b49e4fa230

DOC: copyright.ini: apply MPL-2.0 to devices/blepsynth/TODO

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-16 Tim Janik # 50e7ddc26c9

GITHUB: workflows/testing.yml: add MPL-2.0 license

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-16 Tim Janik # 8e52e5173ea

MISC: add MPL-2.0 license

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-16 Tim Janik # db204b492a9

JSONIPC: Makefile: add MPL-2.0 license

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-16 Tim Janik # b332c7fb30d

DOC: style/mathjax-config.js: add MPL-2.0 license

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-16 Tim Janik # 849e0540bde

DOC: style/features.scss: add MPL-2.0 license

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-16 Tim Janik # 8325b0af99d

UI: .eslintrc.js: add MPL-2.0 license

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-16 Tim Janik # d75065de7af

DEVICES: blepsynth/bleposcdata.cc: add MPL-2.0 license

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-16 Tim Janik # a6bba376301

ASE: mime-types.hh: sort extensions

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-16 Tim Janik # 234aa2b79a2

ASE: mime-types.hh: add CC0 Public Domain license

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-15 Tim Janik # d872fcc1b1b

DOC: Makefile.mk: generate doc/copyright

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-15 Tim Janik # dfccf3dcc14

MISC: Makefile.mk: check-copyright: use doc/copyright.ini

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-15 Tim Janik # 3c9477fdf65

DOC: copyright.ini: ignore license files

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-15 Tim Janik # a75423296b9

DOC: copyright.ini: add debian/copyright fields

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-15 Tim Janik # 4d3e54eddf2

DOC: copyright.ini: explicitely list license for some files

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-15 Tim Janik # 07d25ee61a7

DOC: copyright: remove file, can be generated with mkcopyright.py

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-14 Tim Janik # d04fb36f5b7

MISC: Makefile.mk: add check-copyright if .git is present

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-14 Tim Janik # 9faffdb5661

MISC: config-utils.mk: provide WITHOUTGIT and WITHGIT

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-15 Tim Janik # 458c24aa435

MISC: mkcopyright.py: support [ignore] section

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-15 Tim Janik # 81b804bda75

MISC: mkcopyright.py: read debian/copyright headers from INI

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-15 Tim Janik # 621ece374ae

MISC: mkcopyright.py: add --spdx-licenses, and add all known SPDX licenses

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-14 Tim Janik # d9982a217a6

MISC: mkcopyright.py: ignore utf-8 decoding errors during file input

Signed-off-by: Tim Janik <timj@gnu.org>

2021-08-14 Tim Janik # 4fd6a760954

MISC: mkcopyright.py: add helper script to check and generate copyright list

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-26 Tim Janik # 00c00a3b65a

Merge branch 'start-stop-playback'

* start-stop-playback:
  UI: b/playcontrols.vue: call stop_playback() and start_playback()
  ASE: project: implement start_playback(), stop_playback(), is_playing()
  ASE: processor.hh: remove unused AudioTiming
  ASE: track: maintain a ClipImplS list and use container_copy()
  ASE: utils.hh: add container_copy() to copy another container's elements
  ASE: engine.cc: fix initial bpm to be 0
  ASE: transport.hh: move samplerate, nyquist, etc into AudioTransport
  ASE: utils.hh: add insert_sorted()
  ASE: device.cc: add assertion
  ASE: cxxaux.cc: assertion_failed(): add breakpoint with ASE_DEBUG=break
  ASE: transport.hh: move AUDIO_BLOCK_MAX_RENDER_SIZE here
  ASE: transport: move SpeakerArrangement here
  ASE: Makefile.mk: silence websocketpp warnings with C++ flag -Wno-sign-promo
  MISC: config-uname.mk: support EXTRA_CXXFLAGS and EXTRA_CFLAGS

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-22 Tim Janik # e83da44d295

UI: b/playcontrols.vue: call stop_playback() and start_playback()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-22 Tim Janik # 3ac819016fc

ASE: project: implement start_playback(), stop_playback(), is_playing()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-22 Tim Janik # 0fc514ec956

ASE: processor.hh: remove unused AudioTiming

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-22 Tim Janik # afb77a65dd4

ASE: track: maintain a ClipImplS list and use container_copy()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-22 Tim Janik # 62ad229f156

ASE: utils.hh: add container_copy() to copy another container's elements

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-22 Tim Janik # 36268e2808a

ASE: engine.cc: fix initial bpm to be 0

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-22 Tim Janik # 686683c220a

ASE: transport.hh: move samplerate, nyquist, etc into AudioTransport

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-22 Tim Janik # 98369da3f71

ASE: utils.hh: add insert_sorted()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-22 Tim Janik # a9b8604c407

ASE: device.cc: add assertion

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-22 Tim Janik # 8fc70e7f2a4

ASE: cxxaux.cc: assertion_failed(): add breakpoint with ASE_DEBUG=break

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-22 Tim Janik # 49d22c9be85

ASE: transport.hh: move AUDIO_BLOCK_MAX_RENDER_SIZE here

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-22 Tim Janik # 30b7c28b9a2

ASE: transport: move SpeakerArrangement here

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-21 Tim Janik # fd81ef43b8a

ASE: Makefile.mk: silence websocketpp warnings with C++ flag -Wno-sign-promo

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-21 Tim Janik # 8fd4ef20a3d

MISC: config-uname.mk: support EXTRA_CXXFLAGS and EXTRA_CFLAGS

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-26 Tim Janik # 4a71db44239

Merge branch 'clip'

* clip:
  UI: b/: use PPQN=1920 just like ASE
  ASE: clip.cc: skip internal note fields in serialization
  ASE: track.cc: serialize clips
  ASE: clip: serialize notes
  ASE: clip: implement ClipNote storage
  ASE: defs.hh: declare ClipImpl
  ASE: track: implement list_clips() and clip_index()
  ASE: api.hh: fix missing const ASE: track.hh:
  ASE: eventlist: add EventList to maintain a sorted array of `Event` structures
  ASE: object: dispatch events only as long as the on_event() result is alive
	Once the last reference to the Connection object as returned from on_event()
	is released, the connection is destroyed and no further invocations of the
	Connection's handler will occour.
  ASE: websocket.cc: fix Re::search() invocations
  ASE: regex.cc: document search() and sub()
  ASE: driver.cc: fix signedness
  ASE: object.cc: fix signedness warning
  ASE: cxxaux.hh: ASE_CLASS_DECLS(Klass) add weak_ptr alias definitions
  ASE: defs.hh: define and use EventConnectionW
  UI: b/tracklist.vue: rename b-tracklist from b-track-list
  UI: b/tracklist.vue: rename file
  ASE: api.hh: add ClipNote, extend Clip API stubs

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-18 Tim Janik # d25e9651d4b

UI: b/: use PPQN=1920 just like ASE

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-18 Tim Janik # 797ee0b6f26

ASE: clip.cc: skip internal note fields in serialization

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-18 Tim Janik # 3c9a5f0cb51

ASE: track.cc: serialize clips

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-18 Tim Janik # 83a9feb4d95

ASE: clip: serialize notes

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-17 Tim Janik # b31ecc74f9f

ASE: clip: implement ClipNote storage

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-17 Tim Janik # 6115647b684

ASE: defs.hh: declare ClipImpl

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-17 Tim Janik # 18a18955939

ASE: track: implement list_clips() and clip_index()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-17 Tim Janik # 59bf852c49c

ASE: api.hh: fix missing const
ASE: track.hh:

Signed-off-by: Tim Janik <timj@gnu.org>

2020-05-28 Tim Janik # f6bf2e23011

ASE: eventlist: add EventList to maintain a sorted array of `Event` structures

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-13 Tim Janik # 96ac1d47c6c

ASE: object: dispatch events only as long as the on_event() result is alive

Once the last reference to the Connection object as returned from on_event()
is released, the connection is destroyed and no further invocations of the
Connection's handler will occour.

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-13 Tim Janik # 317640ec853

ASE: websocket.cc: fix Re::search() invocations

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-13 Tim Janik # 679ef325add

ASE: regex.cc: document search() and sub()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-13 Tim Janik # fd1f93d1839

ASE: driver.cc: fix signedness

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-13 Tim Janik # 4d3476b8dee

ASE: object.cc: fix signedness warning

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-13 Tim Janik # 1c5263e6cd2

ASE: cxxaux.hh: ASE_CLASS_DECLS(Klass) add weak_ptr alias definitions

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-13 Tim Janik # 52e7e20a6d3

ASE: defs.hh: define and use EventConnectionW

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-13 Tim Janik # cf73dc937cd

UI: b/tracklist.vue: rename b-tracklist from b-track-list

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-13 Tim Janik # 7b3b23bff09

UI: b/tracklist.vue: rename file

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-12 Tim Janik # d93ebc4e2be

ASE: api.hh: add ClipNote, extend Clip API stubs

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-20 Tim Janik # dfcde28c460

Merge branch 'notifico'

* notifico:
  GITHUB: workflows/notify_irc.py: remove unused notification script
  GITHUB: workflows/testing.yml: allow plain text hook usage
  GITHUB: workflows/testing.yml: issue notifications via notifico.py
  GITHUB: workflows/notifico.py: add script for IRC notifications via notifico
  README.md: use web.libera.chat as chat link
  README.md: extend badges

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-18 Tim Janik # ddfc55dbbc6

GITHUB: workflows/notify_irc.py: remove unused notification script

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-18 Tim Janik # d3f3613a0f8

GITHUB: workflows/testing.yml: allow plain text hook usage

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-18 Tim Janik # 2f99753c484

GITHUB: workflows/testing.yml: issue notifications via notifico.py

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-18 Tim Janik # d2da6e07da7

GITHUB: workflows/notifico.py: add script for IRC notifications via notifico

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-17 Tim Janik # 5cd707b0809

README.md: use web.libera.chat as chat link

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-13 Tim Janik # 33ae34c6bfa

README.md: extend badges

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-12 Tim Janik # 2a237afda57

Merge branch 'modal-dialogs'

* modal-dialogs:
  UI: b/dialog.vue: slightly expand min-width
  UI: b/shell.vue: make message popup buttons homogeneous
  UI: startup.js: prevent Web Browser menus interfering with the UI
  UI: b/shell.vue: add comment about ../styles.scss import
  UI: b/noteboard.vue: fix duplicate styles.scss import
  UI: styles.scss: move grid CSS decls here
	The file theme.scss must only define SCSS variables and mixins, real CSS
	definitions belong into styles.scss which isn't included by every component.
  UI: b/fed-switch.vue: allow numeric input values
  UI: b/*.vue: Vue-3 does not need .native event qualifiers
  UI: util.js: remove unused dom_ondestroy()
  UI: b/fed-object.vue: handle disconnector calls directly
  UI: util.js: remove now unused ModalShield
  UI: b/color-picker.vue: use b-contextmenu for the popup
  UI: b/contextmenu.vue: add popupclass for reparented CSS styling
  UI: b/contextmenu.vue: move into modal menu layer, fix transitions and shield
  UI: b/shell.vue: provide layer for modal menus
  UI: util.js: setup_shield_element: move ESCAPE handling into focus_root
	This fixes ESCAPE handling so it honours the focus_root stacking order.
  UI: util.js: rewrite dom_update() handling, add dom_create()
  UI: b/dialog.vue: adjust fading
  UI: util.js: remove unused dom_hidden() handling
  UI: b/menubar.vue: navigate to 'about:blank' after window.close() in browsers
  UI: b/modaldialog.vue: remove unused component
  UI: styles.scss, theme.scss: remove b-modaldialog-shield styling
  UI: b/shell.vue: use <b-dialog/> for modal message popups
  UI: b/treeselector.vue: remove unused CSS
  UI: b/filedialog.vue: improve chome <INPUT/>-layout-bug workaround
  UI: b/filedialog.vue: use <b-dialog/> as base component
  UI: util.js: fix lower case tag name
  UI: b/preferencesdialog.vue: use <b-dialog/> as base component
  UI: b/aboutdialog.vue: use <b-dialog/> as base component
  UI: b/shell.vue: prepare stacking order for new modal dialogs
  UI: b/shell.vue: turn info panel title into a focusable link
  UI: b/shell.vue: disable text selection for normal UI elements
  UI: b/dialog.vue: introduce new base component for (modal) dialogs
  UI: util.js: add setup_shield_element()
  UI: util.js: disable hotkeys while focus_guard is active
  UI: util.js: rename vm_scope_style()
  UI: theme.scss: tone down modal overlays

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-10 Tim Janik # 4f599899705

UI: b/dialog.vue: slightly expand min-width

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-10 Tim Janik # ef01e15f926

UI: b/shell.vue: make message popup buttons homogeneous

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-10 Tim Janik # 577109c3e40

UI: startup.js: prevent Web Browser menus interfering with the UI

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-10 Tim Janik # 90b3f0b112e

UI: b/shell.vue: add comment about ../styles.scss import

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-10 Tim Janik # 68e2d52665d

UI: b/noteboard.vue: fix duplicate styles.scss import

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-10 Tim Janik # 6366e525220

UI: styles.scss: move grid CSS decls here

The file theme.scss must only define SCSS variables and mixins, real CSS
definitions belong into styles.scss which isn't included by every component.

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-10 Tim Janik # 31a6efa8ba2

UI: b/fed-switch.vue: allow numeric input values

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-10 Tim Janik # ce26e4e0efd

UI: b/*.vue: Vue-3 does not need .native event qualifiers

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-10 Tim Janik # d1c5c6d78d7

UI: util.js: remove unused dom_ondestroy()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-10 Tim Janik # 74b958b5175

UI: b/fed-object.vue: handle disconnector calls directly

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-10 Tim Janik # 0f9e359ab96

UI: util.js: remove now unused ModalShield

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-10 Tim Janik # 3d30497b6b9

UI: b/color-picker.vue: use b-contextmenu for the popup

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-10 Tim Janik # 07adc90f33a

UI: b/contextmenu.vue: add popupclass for reparented CSS styling

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-10 Tim Janik # 8e3b815a177

UI: b/contextmenu.vue: move into modal menu layer, fix transitions and shield

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-10 Tim Janik # b93d98e98bc

UI: b/shell.vue: provide layer for modal menus

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-10 Tim Janik # 49dbdc95b3a

UI: util.js: setup_shield_element: move ESCAPE handling into focus_root

This fixes ESCAPE handling so it honours the focus_root stacking order.

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-09 Tim Janik # de6d5948827

UI: util.js: rewrite dom_update() handling, add dom_create()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-09 Tim Janik # 0185bce7b56

UI: b/dialog.vue: adjust fading

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-09 Tim Janik # 2049c820d36

UI: util.js: remove unused dom_hidden() handling

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-08 Tim Janik # fd31463af00

UI: b/menubar.vue: navigate to 'about:blank' after window.close() in browsers

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-08 Tim Janik # e4b91777817

UI: b/modaldialog.vue: remove unused component

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-08 Tim Janik # b387f8d2ba7

UI: styles.scss, theme.scss: remove b-modaldialog-shield styling

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-08 Tim Janik # f2a77d4480c

UI: b/shell.vue: use <b-dialog/> for modal message popups

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-08 Tim Janik # 358fb9c88fd

UI: b/treeselector.vue: remove unused CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-08 Tim Janik # cb502399523

UI: b/filedialog.vue: improve chome <INPUT/>-layout-bug workaround

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-08 Tim Janik # 60df1decf8e

UI: b/filedialog.vue: use <b-dialog/> as base component

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-08 Tim Janik # 93b8f347b5e

UI: util.js: fix lower case tag name

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-08 Tim Janik # b0dcc97b276

UI: b/preferencesdialog.vue: use <b-dialog/> as base component

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-08 Tim Janik # 5671c36daed

UI: b/aboutdialog.vue: use <b-dialog/> as base component

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-08 Tim Janik # da3bcdea100

UI: b/shell.vue: prepare stacking order for new modal dialogs

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-08 Tim Janik # b72daa0cebc

UI: b/shell.vue: turn info panel title into a focusable link

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-08 Tim Janik # eccfeb26664

UI: b/shell.vue: disable text selection for normal UI elements

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-08 Tim Janik # b70184deecb

UI: b/dialog.vue: introduce new base component for (modal) dialogs

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-08 Tim Janik # e282cf20317

UI: util.js: add setup_shield_element()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-08 Tim Janik # b05669a2237

UI: util.js: disable hotkeys while focus_guard is active

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-08 Tim Janik # b217cbaf17a

UI: util.js: rename vm_scope_style()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-08 Tim Janik # f4d0bb7fc35

UI: theme.scss: tone down modal overlays

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-12 Tim Janik # b4e9ed107ef

Merge branch 'ci-testing'

* ci-testing:
  GITHUB: workflows/testing.yml: merge with IRC notification
  ASE: driver-alsa.cc: gracefully handle absence of the ALSA sequencer device
  ASE: driver-alsa.cc: use ADEBUG() to output ALSA errors
  README.md: add unit test badges
  GITHUB: workflows/testing.yml: make dockerized build and run make check
  GITHUB: workflows/testing.yml: add action for unit testing

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-12 Tim Janik # 7a365508cda

GITHUB: workflows/testing.yml: merge with IRC notification

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-12 Tim Janik # 12eca1774db

ASE: driver-alsa.cc: gracefully handle absence of the ALSA sequencer device

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-12 Tim Janik # 0fb1d05f358

ASE: driver-alsa.cc: use ADEBUG() to output ALSA errors

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-12 Tim Janik # b7dbe859696

README.md: add unit test badges

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-12 Tim Janik # 6b5e1b64d8f

GITHUB: workflows/testing.yml: make dockerized build and run make check

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-12 Tim Janik # bf33e768f95

GITHUB: workflows/testing.yml: add action for unit testing

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-12 Tim Janik # aa8a9fc3138

Merge branch 'note-board'

* note-board:
  UI: b/shell.vue: handle server.usernote messages
  UI: b/noteboard.vue: adjust Error/Warning/Info/Debug colors
  ASE: engine.cc: send user_note()s for Device IO problems
  ASE: api.hh, server: add user_note() and user_reply()
  ASE: engine.cc: trigger wakeups for missing ipc_dispatch() calls
  ASE: driver.hh: move DriverEntry here, out of public API
  UI: b/noteboard.vue: raise noteboard when new notes are added
  UI: b/noteboard.vue: move Note Board logic into its own vue component
  UI: util.js: add envue_object()
  UI: startup.js: Chrome-91 still has the movementX devicePixelRatio bug

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-07 Tim Janik # 186703e9132

UI: b/shell.vue: handle server.usernote messages

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-07 Tim Janik # 9fade6f2158

UI: b/noteboard.vue: adjust Error/Warning/Info/Debug colors

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-07 Tim Janik # 92a9db6b18e

ASE: engine.cc: send user_note()s for Device IO problems

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-07 Tim Janik # 0222dde9385

ASE: api.hh, server: add user_note() and user_reply()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-04 Tim Janik # a028cc4b866

ASE: engine.cc: trigger wakeups for missing ipc_dispatch() calls

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-03 Tim Janik # 07c33f96cf3

ASE: driver.hh: move DriverEntry here, out of public API

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-03 Tim Janik # c8344f8458e

UI: b/noteboard.vue: raise noteboard when new notes are added

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-03 Tim Janik # be3100c4942

UI: b/noteboard.vue: move Note Board logic into its own vue component

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-03 Tim Janik # 3a3e9102145

UI: util.js: add envue_object()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-03 Tim Janik # 0a53599a598

UI: startup.js: Chrome-91 still has the movementX devicePixelRatio bug

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-07 Tim Janik # 42dbe58c065

Merge branch 'dbuild-dockerfile-apt'

* dbuild-dockerfile-apt:
  MISC: dbuild.sh: provide git-common-dir volume for git-worktree
  MISC: Makefile.mk: use just linuxdeploy-x86_64.AppImage --appimage-extract-and-run
  MISC: Makefile.mk: build appimage with appimage-runtime-zstd
  MISC: Dockerfile-apt: add squashfs-tools
  MISC: Makefile.mk: properly disable useless linuxdeploy copyright searches
  MISC: dbuild.sh: utilize cached anklang downloads
  MISC: Dockerfile-apt: provide ccache
  MISC: Dockerfile-apt: cleaner setup for user "dbuild"
  MISC: Dockerfile-apt: allow documentation files during package installations
  MISC: Dockerfile-apt: shorten retry timeouts
  MISC: Dockerfile-apt: remove fixed WORKDIR
  MISC: Dockerfile-apt: rename .cache.dbuild/
  MISC: Dockerfile-apt: base the image on $DIST
  MISC: Dockerfile-apt: rename from Dockerfile-focal
  MISC: dbuild.sh: allow -d <DIST> and rename misc/.dbuild/.cache/
  MISC: dbuild.sh: rename from cbuild.sh

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-07 Tim Janik # da36733c5e2

MISC: dbuild.sh: provide git-common-dir volume for git-worktree

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-07 Tim Janik # 63b278bfae4

MISC: Makefile.mk: use just linuxdeploy-x86_64.AppImage --appimage-extract-and-run

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-07 Tim Janik # 2142ac57782

MISC: Makefile.mk: build appimage with appimage-runtime-zstd

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-07 Tim Janik # 28ac29cb531

MISC: Dockerfile-apt: add squashfs-tools

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-07 Tim Janik # dfa51ed1c58

MISC: Makefile.mk: properly disable useless linuxdeploy copyright searches

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-07 Tim Janik # dd3c88d3d08

MISC: dbuild.sh: utilize cached anklang downloads

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-07 Tim Janik # 3d43340f843

MISC: Dockerfile-apt: provide ccache

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-06 Tim Janik # 20370a560d9

MISC: Dockerfile-apt: cleaner setup for user "dbuild"

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-06 Tim Janik # a02f04c7765

MISC: Dockerfile-apt: allow documentation files during package installations

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-06 Tim Janik # 3491cb7e694

MISC: Dockerfile-apt: shorten retry timeouts

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-06 Tim Janik # 302222909df

MISC: Dockerfile-apt: remove fixed WORKDIR

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-06 Tim Janik # 7b32eefdeb6

MISC: Dockerfile-apt: rename .cache.dbuild/

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-06 Tim Janik # 609284ea071

MISC: Dockerfile-apt: base the image on $DIST

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-06 Tim Janik # 102eb3bde64

MISC: Dockerfile-apt: rename from Dockerfile-focal

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-06 Tim Janik # 80c8b3458c9

MISC: dbuild.sh: allow -d <DIST> and rename misc/.dbuild/.cache/

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-06 Tim Janik # 0288651280f

MISC: dbuild.sh: rename from cbuild.sh

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-07 Tim Janik # 5dcb1a0af69

Merge branch 'quitstartup'

* quitstartup:
  UI: startup.js: exit cleanly on --quitstartup
  ELECTRON: main.js: tidy up exit logic so exitcode!=0 is reliable
  UI: startup.js: exit early on --quitstartup
	During development, this option is helpful for startup time measurements.
  ELECTRON: main.js: add --quitstartup argument

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-07 Tim Janik # af7718b6508

UI: startup.js: exit cleanly on --quitstartup

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-07 Tim Janik # b9a1eee7361

ELECTRON: main.js: tidy up exit logic so exitcode!=0 is reliable

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-06 Tim Janik # d23993032b9

UI: startup.js: exit early on --quitstartup

During development, this option is helpful for startup time measurements.

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-06 Tim Janik # d2b9973e5a4

ELECTRON: main.js: add --quitstartup argument

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-07 Tim Janik # f36724061cd

Merge branch 'build-fixes'

* build-fixes:
  MISC: Makefile.mk: remove prefix assertion for appimage builds
  MISC: anklang.desktop: remove category dup
  MISC: anklang.desktop: allow anklang icon lookups without extension
  UI: Makefile.mk: provide explicit dependency for ui/anklang.png
  UI: b/aboutdialog.vue: use CONFIG.buildid
  UI: Makefile.mk: use $(PACKAGE_VERSIONS)
  Makefile.mk: rename $(version_buildid)

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-05 Tim Janik # b1b2322f814

MISC: Makefile.mk: remove prefix assertion for appimage builds

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-05 Tim Janik # 9f3fa5a5102

MISC: anklang.desktop: remove category dup

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-05 Tim Janik # 88dd9bffd9e

MISC: anklang.desktop: allow anklang icon lookups without extension

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-03 Tim Janik # b88fb41653d

UI: Makefile.mk: provide explicit dependency for ui/anklang.png

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-03 Tim Janik # f9aa6be4ce2

UI: b/aboutdialog.vue: use CONFIG.buildid

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-03 Tim Janik # e4076f788b4

UI: Makefile.mk: use $(PACKAGE_VERSIONS)

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-03 Tim Janik # 924fbf87e33

Makefile.mk: rename $(version_buildid)

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-01 Tim Janik # a0f719692ea

Merge branch 'copyright-file'

* copyright-file:
  DOC: Makefile.mk: install doc/copyright
  DOC: Makefile.mk: use pkgdocdir
  Makefile.mk: define pkgdocdir
  DOC: copyright: describe files where MPL-2.0 applies
  ELECTRON: main.js, preload.js: fix license to MPL-2.0

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-30 Tim Janik # 2a1321b2d35

DOC: Makefile.mk: install doc/copyright

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-30 Tim Janik # 1a4da60c916

DOC: Makefile.mk: use pkgdocdir

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-30 Tim Janik # 117495b1100

Makefile.mk: define pkgdocdir

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-30 Tim Janik # 07884371620

DOC: copyright: describe files where MPL-2.0 applies

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-30 Tim Janik # 3733732cc35

ELECTRON: main.js, preload.js: fix license to MPL-2.0

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-01 Tim Janik # 7098f307a7e

Merge branch 'make-deb'

* make-deb:
  MISC: Makefile.mk: install anklang.desktop anklang.svg mime/.../anklang.xml
  MISC: mkdeb.sh: add comment for /opt installations
  MISC: mkdeb.sh: add script to build anklang_<version>_<arch>.deb
  ELECTRON: Makefile.mk: remove unneeded permissions
  DOC: Makefile.mk: install relative link to man1/anklang.1
  MISC: anklang.desktop: fix path, improve comment and keywords
  MISC: Makefile.mk: install anklang.xml, expand pkgdir in anklang.desktop
  MISC: anklang-mime.xml: map *.anklang to application/x-anklang
  ELECTRON: Makefile.mk: fix installation directory
  ELECTRON: main.js: provide window icon
  ELECTRON: Makefile.mk: install $(bindir)/anklang alias
  Makefile.mk: rename sharedir
  Makefile.mk: rename pkglibdir to pkgdir
  Makefile.mk: rename pkgrootdir to pkgprefix

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-30 Tim Janik # c620697359d

MISC: Makefile.mk: install anklang.desktop anklang.svg mime/.../anklang.xml

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-30 Tim Janik # fbcd5c7a45e

MISC: mkdeb.sh: add comment for /opt installations

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-30 Tim Janik # 6e801ba910e

MISC: mkdeb.sh: add script to build anklang_<version>_<arch>.deb

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-30 Tim Janik # 538645aa8ab

ELECTRON: Makefile.mk: remove unneeded permissions

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-30 Tim Janik # 6dd614343e5

DOC: Makefile.mk: install relative link to man1/anklang.1

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-30 Tim Janik # c014fff177e

MISC: anklang.desktop: fix path, improve comment and keywords

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-30 Tim Janik # 2971b26b9ac

MISC: Makefile.mk: install anklang.xml, expand pkgdir in anklang.desktop

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-30 Tim Janik # 178503db125

MISC: anklang-mime.xml: map *.anklang to application/x-anklang

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-30 Tim Janik # b55cda2d72d

ELECTRON: Makefile.mk: fix installation directory

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-30 Tim Janik # c3735f0b09c

ELECTRON: main.js: provide window icon

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-29 Tim Janik # f4550cb84e8

ELECTRON: Makefile.mk: install $(bindir)/anklang alias

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-29 Tim Janik # da052b1259e

Makefile.mk: rename sharedir

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-29 Tim Janik # 85273093dcc

Makefile.mk: rename pkglibdir to pkgdir

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-29 Tim Janik # 4034a87469f

Makefile.mk: rename pkgrootdir to pkgprefix

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-01 Tim Janik # f8a782e0493

Merge branch 'man-page'

* man-page:
  DOC: Makefile.mk: install symlink for man1/anklang.1
  DOC: Makefile.mk: integrate manual pages into the manual
  DOC: filt-man.py: add pandoc filter for manual pages as flow text
  DOC: Makefile.mk: build and install anklang.1
  DOC: anklang.1.md: add manual page for Anklang
  README.md: add Usage, improve readability
  DOC: Makefile.mk: add NEWS and README to docs, build .html variants

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-29 Tim Janik # 90eac3017a8

DOC: Makefile.mk: install symlink for man1/anklang.1

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-29 Tim Janik # bd9aea43e06

DOC: Makefile.mk: integrate manual pages into the manual

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-29 Tim Janik # 0c66d318fea

DOC: filt-man.py: add pandoc filter for manual pages as flow text

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-29 Tim Janik # 4e9029b0df4

DOC: Makefile.mk: build and install anklang.1

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-29 Tim Janik # 14c88be3e8f

DOC: anklang.1.md: add manual page for Anklang

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-29 Tim Janik # 4ea95f50553

README.md: add Usage, improve readability

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-29 Tim Janik # 5d565505be8

DOC: Makefile.mk: add NEWS and README to docs, build .html variants

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-01 Tim Janik # fb26c0a454b

Merge branch 'appimage-builds'

* appimage-builds:
  MISC: Makefile.mk: fix appimage comments
  UI: Makefile.mk: fix *.png double install
  MISC: Makefile.mk: appimage: restore bin/* links
  MISC: Makefile.mk: add appimage rule
  MISC: Makefile.mk: provide linuxdeploy and appimagetool
  MISC: Makefile.mk: install anklang.desktop
  MISC: anklang.desktop: add desktop file for AppImage builds
  UI: Makefile.mk: keep an anklang.png image from icon builds
  MISC: AppRun: add startup script for AppImage builds

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-28 Tim Janik # e2b88711ed3

MISC: Makefile.mk: fix appimage comments

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-28 Tim Janik # 5e548b318fc

UI: Makefile.mk: fix *.png double install

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-28 Tim Janik # 5df15190206

MISC: Makefile.mk: appimage: restore bin/* links

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-28 Tim Janik # 6db5b22299d

MISC: Makefile.mk: add appimage rule

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-28 Tim Janik # fd96717add6

MISC: Makefile.mk: provide linuxdeploy and appimagetool

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-28 Tim Janik # d961fe76662

MISC: Makefile.mk: install anklang.desktop

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-28 Tim Janik # 4f362bc798c

MISC: anklang.desktop: add desktop file for AppImage builds

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-28 Tim Janik # 44e0fc374cc

UI: Makefile.mk: keep an anklang.png image from icon builds

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-28 Tim Janik # 8e7e1057814

MISC: AppRun: add startup script for AppImage builds

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-01 Tim Janik # 322dffc26c3

Merge branch 'version-sh'

* version-sh:
  MISC: version.sh: silently handle the case where no tags are found
  MISC: version.sh: prefer COMMIT_DATE over NEWS_DATE
  MISC: version.sh: remove short/long/date options

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-01 Tim Janik # be6793fea74

MISC: version.sh: silently handle the case where no tags are found

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-01 Tim Janik # 25a17feef08

MISC: version.sh: prefer COMMIT_DATE over NEWS_DATE

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-01 Tim Janik # 77173b6a4d5

MISC: version.sh: remove short/long/date options

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-01 Tim Janik # 4decf99397a

Merge branch 'ghnotify-irc'

* ghnotify-irc:
  .GITHUB: workflows/ghnotify.yml: notify IRC on git push
  .GITHUB: workflows/notify_irc.py: support abbreviated messages
  .GITHUB: workflows/notify_irc.py: add missing Copyright
  .GITHUB: workflows/notify_irc.py: add rectalogic/notify-irc/notify_irc.py
	Source:
	https://github.com/rectalogic/notify-irc/blob/e58c048739ce0c3da8990b49a3e2b4f8108d6292/notify_irc.py

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-31 Tim Janik # 486e6056038

.GITHUB: workflows/ghnotify.yml: notify IRC on git push

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-01 Tim Janik # d61f97f81e8

.GITHUB: workflows/notify_irc.py: support abbreviated messages

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-01 Tim Janik # 4993eae67a2

.GITHUB: workflows/notify_irc.py: add missing Copyright

Signed-off-by: Tim Janik <timj@gnu.org>

2021-06-01 Andrew Wason # 0117b49e1f4

.GITHUB: workflows/notify_irc.py: add rectalogic/notify-irc/notify_irc.py

Source:
https://github.com/rectalogic/notify-irc/blob/e58c048739ce0c3da8990b49a3e2b4f8108d6292/notify_irc.py

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-29 Tim Janik # 97ccff9e993

Merge branch 'docker-builds'

* docker-builds:
  MISC: Dockerfile-focal: electron also depends on libnss3 libgtk-3-0
  MISC: cbuild.sh: add tool for docker based builds
  MISC: Dockerfile-focal: add Dockerfile for release builds
  MISC: config-external.mk: provide minizip for ase/minizip.c

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-28 Tim Janik # 525457e6ee8

MISC: Dockerfile-focal: electron also depends on libnss3 libgtk-3-0

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-28 Tim Janik # ea371c44f40

MISC: cbuild.sh: add tool for docker based builds

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-28 Tim Janik # e761499a2f0

MISC: Dockerfile-focal: add Dockerfile for release builds

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-28 Tim Janik # 375ef22f709

MISC: config-external.mk: provide minizip for ase/minizip.c

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-29 Tim Janik # 8ae3775af9d

Merge branch 'make-install'

* make-install:
  UI: Makefile.mk: install ui/doc link
  DOC: style/Makefile.mk: install all files and embed CSS source-map
  DOC: Makefile.mk: install doc/anklang-manual.html
  ELECTRON: Makefile.mk: install electron and bin/ alias
  Makefile.mk: uninstall: cleanup main install dir
  MISC: config-checks.mk: add silent $(RMDIR_P)
  UI: Makefile.mk: install ui/
  DOC: style/Makefile.mk: fix installation directory
  MISC: config-uname.mk: uninstall empty directories if possible
  UI: Makefile.mk: avoid scss copies, use includes
  MISC: package.json.in: use .eslint.files for eslint
  UI: Makefile.mk: use dot prefix for .eslint.files build file
  UI: Makefile.mk: remove unused .aseignore line
  MISC: package.json.in: nodemon: remove useless lib/ dir watch
  UI: Makefile.mk: remove unused nodemon.json
  UI: Makefile.mk: remove unused build artefact
  UI: Makefile.mk: cleanup tmp build dirs

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-28 Tim Janik # 4267b5efa0f

UI: Makefile.mk: install ui/doc link

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-28 Tim Janik # 5fe1d7a22f7

DOC: style/Makefile.mk: install all files and embed CSS source-map

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-28 Tim Janik # 4920e64dda3

DOC: Makefile.mk: install doc/anklang-manual.html

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # f374d014806

ELECTRON: Makefile.mk: install electron and bin/ alias

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # a6d2e2e7854

Makefile.mk: uninstall: cleanup main install dir

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # e67cf18b74f

MISC: config-checks.mk: add silent $(RMDIR_P)

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # 61fba1fc1da

UI: Makefile.mk: install ui/

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # 1a3ef72cca5

DOC: style/Makefile.mk: fix installation directory

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # c35c5bb2102

MISC: config-uname.mk: uninstall empty directories if possible

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # 172b6989e23

UI: Makefile.mk: avoid scss copies, use includes

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # c0165126fa4

MISC: package.json.in: use .eslint.files for eslint

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # c8e17751f3d

UI: Makefile.mk: use dot prefix for .eslint.files build file

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # 4cec6b0e2a9

UI: Makefile.mk: remove unused .aseignore line

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # 56bb5aa7762

MISC: package.json.in: nodemon: remove useless lib/ dir watch

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # dec17cef1c2

UI: Makefile.mk: remove unused nodemon.json

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # 7b4de98773d

UI: Makefile.mk: remove unused build artefact

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # c7758ff197c

UI: Makefile.mk: cleanup tmp build dirs

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-28 Tim Janik # 0f37a5bb246

Merge branch 'npm-updates'

* npm-updates:
  UI: .eslintrc.js: whitespace fixups
  UI: b/*.vue: use math.div() instead of '/' for division
  UI: cssaux.scss: add divfactor() helper for 1/asfactor()
  UI: theme.scss: use math.div() instead of '/' for division
  UI: cssaux.scss: use math.div() instead of '/' for division
  DOC: style/f*.scss: use math.div() instead of '/' for division
  MISC: package.json.in: update npm packages

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # e2eb6671845

UI: .eslintrc.js: whitespace fixups

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # 3431a43d88a

UI: b/*.vue: use math.div() instead of '/' for division

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # a5bcc9d48d0

UI: cssaux.scss: add divfactor() helper for 1/asfactor()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # e4725dece77

UI: theme.scss: use math.div() instead of '/' for division

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # 1392f17d06f

UI: cssaux.scss: use math.div() instead of '/' for division

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # 0103200013e

DOC: style/f*.scss: use math.div() instead of '/' for division

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # 498d3fd7689

MISC: package.json.in: update npm packages

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # 31ca2183bb7

Merge branch 'keyword-icons'

* keyword-icons:
  UI: b/preferencesdialog.vue: adjust icon matching
  UI: b/icon.vue: use one function to read out this.ic
  ASE: regex: move Regex API into Re.* and support case insensitive matching
  ASE: server.cc: leave midi/pcm hint for driver entry icons
  ASE: utils.cc: ensure comma in icon keyword list
  DEVICES: blepsynth/blepsynth.cc: adjust to explicit typing for IconString
  ASE: api.hh: use explicit typing for IconString in Choice constructor
  ASE: utils: add MakeIcon constructors for iconString
  ASE: defs.hh: define IconString as String derived
  ASE: unicode.cc: reserve vector space during string conversion
  ASE: strings: add string_is_ascii_alnum()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # 338c96abddb

UI: b/preferencesdialog.vue: adjust icon matching

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # b54c241bfc3

UI: b/icon.vue: use one function to read out this.ic

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-26 Tim Janik # fc7b9d24501

ASE: regex: move Regex API into Re.* and support case insensitive matching

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-26 Tim Janik # 0e7a06e6643

ASE: server.cc: leave midi/pcm hint for driver entry icons

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-26 Tim Janik # 4905957b0cc

ASE: utils.cc: ensure comma in icon keyword list

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-24 Tim Janik # 8431d7b472b

DEVICES: blepsynth/blepsynth.cc: adjust to explicit typing for IconString

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-24 Tim Janik # 6d5a577db90

ASE: api.hh: use explicit typing for IconString in Choice constructor

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-24 Tim Janik # 5fc7844ad86

ASE: utils: add MakeIcon constructors for iconString

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-24 Tim Janik # 00710a1dca0

ASE: defs.hh: define IconString as String derived

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-24 Tim Janik # 11c6c7a12f1

ASE: unicode.cc: reserve vector space during string conversion

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-24 Tim Janik # b72713d777a

ASE: strings: add string_is_ascii_alnum()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-27 Tim Janik # 08216329e53

Merge branch 'ui-tips'

* ui-tips:
  JSONIPC: jsonipc.js: add missing globalThis prefix
  UI: b/pro-input.vue: provide :prop for b-choice
  UI: b/choice.vue: display value in data_tip() (not bubble)
  UI: b/knob.vue: update bubble_tip via attribute
  UI: b/databubble.vue: update bubble on zmoves
  UI: b/preferencesdialog.vue: minor rename
  UI: b/knob.vue: always show value in data bubble, improve tip
  UI: b/pro-input.vue: provide knob with this.prop
  UI: b/databubble.vue: add unforce()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-26 Tim Janik # f07c012a174

JSONIPC: jsonipc.js: add missing globalThis prefix

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-25 Tim Janik # e151784de59

UI: b/pro-input.vue: provide :prop for b-choice

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-25 Tim Janik # 1bf43fc6d09

UI: b/choice.vue: display value in data_tip() (not bubble)

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-25 Tim Janik # c302c734cc3

UI: b/knob.vue: update bubble_tip via attribute

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-25 Tim Janik # b46c8cf20f9

UI: b/databubble.vue: update bubble on zmoves

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-24 Tim Janik # bb24cb5ed2d

UI: b/preferencesdialog.vue: minor rename

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-23 Tim Janik # d48178847f9

UI: b/knob.vue: always show value in data bubble, improve tip

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-23 Tim Janik # e5b9a80451c

UI: b/pro-input.vue: provide knob with this.prop

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-23 Tim Janik # 0bce463bdf9

UI: b/databubble.vue: add unforce()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-20 Tim Janik # e78de2246ea

Merge branch 'auto-zstd'

* auto-zstd:
  ASE: project.cc: use AUTO_ZSTD for storage
  ASE: storage: AUTO_ZSTD: transparently compress to/from zstd

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-16 Tim Janik # f8f01a18b55

ASE: project.cc: use AUTO_ZSTD for storage

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-16 Tim Janik # ecfa8812424

ASE: storage: AUTO_ZSTD: transparently compress to/from zstd

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-20 Tim Janik # e4c697d2b40

Merge branch 'zip-project'

* zip-project:
  ASE: project.cc: allow project file search in dirname or dirname/..
  ASE: project.cc: store projects in ZIP container
  ASE: storage: separate Reader/Writer APIs and avoid temporary files
  ASE: minizip.h: use minizip MZ_VERSION_MADEBY which includes OS type
  ASE: api.hh: add operator! (Error)
  ASE: defs.hh: add Error forward decl
  ASE: compress: use zstd_{un}compress() and add interesting magic checks
  ASE: project.cc: support saving into existing .anklang.project dir

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-16 Tim Janik # 36f8e78699f

ASE: project.cc: allow project file search in dirname or dirname/..

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-16 Tim Janik # c26b309e54d

ASE: project.cc: store projects in ZIP container

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-16 Tim Janik # 4bf643d9834

ASE: storage: separate Reader/Writer APIs and avoid temporary files

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-16 Tim Janik # 605e6afaa6c

ASE: minizip.h: use minizip MZ_VERSION_MADEBY which includes OS type

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-16 Tim Janik # 536292ca435

ASE: api.hh: add operator! (Error)

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-16 Tim Janik # 24c567e1f0e

ASE: defs.hh: add Error forward decl

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-16 Tim Janik # c023e9c59dc

ASE: compress: use zstd_{un}compress() and add interesting magic checks

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-16 Tim Janik # 746fc62eaf4

ASE: project.cc: support saving into existing .anklang.project dir

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-20 Tim Janik # fd807992be9

Merge branch 'support-zstd'

* support-zstd:
  ASE: project.cc: fix comments
  ASE: project.cc: pass on errors during compression
  ASE: project.cc: compress project data
  ASE: Makefile.mk: link against -lzstd
  ASE: compress: compress data with zstd
  ASE: path: add strip_slashes()
  ASE: project.cc: save/load files more robustly, rename .anklang.project

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-16 Tim Janik # 99a73e75f1a

ASE: project.cc: fix comments

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-14 Tim Janik # 6ca6da8fb20

ASE: project.cc: pass on errors during compression

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-14 Tim Janik # ec07a4285c7

ASE: project.cc: compress project data

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-14 Tim Janik # 41d04c81b41

ASE: Makefile.mk: link against -lzstd

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-14 Tim Janik # a7a291fc2cf

ASE: compress: compress data with zstd

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-14 Tim Janik # 2ca6faa454c

ASE: path: add strip_slashes()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-14 Tim Janik # 1a2b7860758

ASE: project.cc: save/load files more robustly, rename .anklang.project

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-20 Tim Janik # ecc6f476306

Merge branch 'simplify-sysconfig'

* simplify-sysconfig:
  ASE: Makefile.mk: generate ase/sysconfig.h with one simple test program
  ASE: Makefile.mk: ase/sysconfig.h: remove unused macros
  ASE: platform.cc: use ase_*_version
  ASE: driver.cc: use ase_*_version
  ASE: ase/buildversion.cc: provide ase_*_version variables
  ASE: platform.hh: declare ase_*_version variables
  MISC: config-checks.mk: depend on vorbisfile >= 1.3.5 to avoid seek bug
  ASE: Makefile.mk: remove unused sysconfig1.h

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-16 Tim Janik # 1b3385845b5

ASE: Makefile.mk: generate ase/sysconfig.h with one simple test program

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-16 Tim Janik # eba96335284

ASE: Makefile.mk: ase/sysconfig.h: remove unused macros

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-16 Tim Janik # a5397ba1a91

ASE: platform.cc: use ase_*_version

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-16 Tim Janik # 7c7d81e7202

ASE: driver.cc: use ase_*_version

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-16 Tim Janik # a01356eead4

ASE: ase/buildversion.cc: provide ase_*_version variables

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-16 Tim Janik # 1108236b038

ASE: platform.hh: declare ase_*_version variables

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-16 Tim Janik # ceec8ad1f7e

MISC: config-checks.mk: depend on vorbisfile >= 1.3.5 to avoid seek bug

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-11 Tim Janik # cf1196627ad

ASE: Makefile.mk: remove unused sysconfig1.h

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-20 Tim Janik # f2d55320ca6

Merge branch 'synth-favicon'

* synth-favicon:
  README.md: for IRC, link to #Anklang on https://libera.chat/
  UI: assets/favicon.svg: update favicon to icon with piano + synth knobs
  UI: theme.scss: disable border flicker for active buttons

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-20 Tim Janik # 074e7b9b53a

README.md: for IRC, link to #Anklang on https://libera.chat/

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-12 Tim Janik # dbdcad2004f

UI: assets/favicon.svg: update favicon to icon with piano + synth knobs

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-13 Tim Janik # f6501be968b

UI: theme.scss: disable border flicker for active buttons

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-17 Tim Janik # b6df97ad4cf

Merge branch 'load-project'

* load-project:
  UI: b/app.js: load only non-empty filenames
  ASE: project: properly assign initial project name
  ASE: path.cc: return ENOENT for empty file names
  ASE: processor.cc: use identifiers as choice values
  ASE: project.cc: store mastertrack as first track field
  ASE: device.cc: store URI as first subdevice field
  ASE: serialize: WritNode: add front() to create record fields at the front
  ASE: value: ValueR.valuep(): allow new record fields at the front
  ASE: gadget.cc: save and load storage properties
  DEVICES: blepsynth/blepsynth.cc: make note toggles GUIONLY
  ASE: processor: add STORAGEONLY and GUIONLY
  ASE: device: serialize subdevices
  UI: b/app.js: call load_project()
  UI: startup.js: create Project early on
  ASE: api.hh: implement load_project()
  JSONIPC: testjsonipc.cc: compile std::pair<> arguments and results
  JSONIPC: jsonipc.hh: support std::pair<> arguments and results
  ASE: track: serialize device chain
  ASE: project: serialize tracks
  ASE: gadget: derive Serializable and serialize name()
  ASE: serialize.hh: ignore loading of constant numeric types
  ASE: serialize.cc: provide Serializable::serialize() for chaining
  ASE: defs.hh: move brief Serializable definition here

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-11 Tim Janik # 36c570d2efd

UI: b/app.js: load only non-empty filenames

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-11 Tim Janik # 3ff363782f2

ASE: project: properly assign initial project name

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-10 Tim Janik # 3ca59b016c5

ASE: path.cc: return ENOENT for empty file names

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-09 Tim Janik # 3a2ce1db89d

ASE: processor.cc: use identifiers as choice values

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-09 Tim Janik # 2a77e240b9d

ASE: project.cc: store mastertrack as first track field

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-09 Tim Janik # 3cf5467db46

ASE: device.cc: store URI as first subdevice field

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-09 Tim Janik # 62007dfcd01

ASE: serialize: WritNode: add front() to create record fields at the front

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-09 Tim Janik # 5c4fb7ded12

ASE: value: ValueR.valuep(): allow new record fields at the front

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-13 Tim Janik # ea964d57a65

ASE: gadget.cc: save and load storage properties

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-08 Tim Janik # 86c3c7babc6

DEVICES: blepsynth/blepsynth.cc: make note toggles GUIONLY

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-08 Tim Janik # 1f80239ff61

ASE: processor: add STORAGEONLY and GUIONLY

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-08 Tim Janik # 1931d66169b

ASE: device: serialize subdevices

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-13 Tim Janik # caa61ba7002

UI: b/app.js: call load_project()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-08 Tim Janik # c980e558e7a

UI: startup.js: create Project early on

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-08 Tim Janik # f9d979ec6c5

ASE: api.hh: implement load_project()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-06 Tim Janik # 50cca0a16d3

JSONIPC: testjsonipc.cc: compile std::pair<> arguments and results

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-06 Tim Janik # fac834d7286

JSONIPC: jsonipc.hh: support std::pair<> arguments and results

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-06 Tim Janik # e7e9564a9f8

ASE: track: serialize device chain

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-06 Tim Janik # e71c8412205

ASE: project: serialize tracks

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-06 Tim Janik # 7037a1d1751

ASE: gadget: derive Serializable and serialize name()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-06 Tim Janik # 412f7fb312c

ASE: serialize.hh: ignore loading of constant numeric types

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-06 Tim Janik # 5477a1a72cd

ASE: serialize.cc: provide Serializable::serialize() for chaining

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-06 Tim Janik # e523c746ef9

ASE: defs.hh: move brief Serializable definition here

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-13 Tim Janik # 025936128f3

Merge branch 'xdg-dirs'

* xdg-dirs:
  ASE: avoid virtual inheritance for Impl types
  UI: Makefile.mk: fix scss deps and delete unused css-imports.js
  UI: .eslintrc.js: allow constant-condition
  ASE: api.hh: merge errno constants into Ase::Error and offset special values
  ASE: path.cc: properly assign ENOTDIR if mkdirs() fails
  ASE: main.cc: enable fatal warnings for --check-integrity-tests
  ASE: api.hh: add Project.save_dir() skeleton
  ASE: api.hh: add Error::NOT_DIRECTORY
  ASE: path: move dir_terminate() here
  ASE: path: add normalize(), fix mkdirs() errno
  UI: b/shell.vue: popdown filedialog as early as possible after selection
  UI: b/menubar.vue: start in ~/Music, don't force '.anklang'
  UI: b/track-list.vue, b/trackview.vue: fix lint
  UI: b/filedialog.vue: use crawler for canonify(), allow non-existing paths
  ASE: path: use std::filesystem and posix filesystem functions
	Avoid GLib functions when we can use std::filesystem.
  ASE: api.hh: ResourceCrawler: provide just assign() and versatile canonify()
  ASE: randomhash.hh: support std::string hashing
  ASE: path.cc: expand_tilde(): preserve non-expandable paths
  UI: b/filedialog.vue: work around <input/> re-layouts, crbug#1116001
  ASE: api.hh: rename dir_crawler() and expand special locations
  ASE: platform: remove unused HOMEDIR
  ASE: crawler.cc: get_dir(): also resolve xdg_dir() paths
  ASE: path: add xdg_dir() to resolve dirs from $XDG_* and user-dirs.dirs
  ASE: inifile: add .ini file parser
  ELECTRON: Makefile.mk: change Electron app name to "anklang/electron"
	The name change is not directly user visible, because index.html sets
	a <title/> tag. It does change the Electron data/cache directory to
	~/.config/anklang/electron/, so electron data now resides under the
	~/.config/anklang/ directory which is used anyway. And it changes the
	X11 WM_CLASS string to "anklang/electron".

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-06 Tim Janik # 8d8dc2e0b6c

ASE: avoid virtual inheritance for Impl types

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-06 Tim Janik # f6707009f42

UI: Makefile.mk: fix scss deps and delete unused css-imports.js

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-06 Tim Janik # db9ebb865e4

UI: .eslintrc.js: allow constant-condition

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-05 Tim Janik # afc38238145

ASE: api.hh: merge errno constants into Ase::Error and offset special values

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-05 Tim Janik # d45932915c1

ASE: path.cc: properly assign ENOTDIR if mkdirs() fails

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-05 Tim Janik # e758f6453a6

ASE: main.cc: enable fatal warnings for --check-integrity-tests

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-05 Tim Janik # d9c3e669d03

ASE: api.hh: add Project.save_dir() skeleton

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-05 Tim Janik # 88157f27cac

ASE: api.hh: add Error::NOT_DIRECTORY

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-05 Tim Janik # 710b8e5ad35

ASE: path: move dir_terminate() here

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-04 Tim Janik # 19805e90477

ASE: path: add normalize(), fix mkdirs() errno

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-04 Tim Janik # c15e717b23d

UI: b/shell.vue: popdown filedialog as early as possible after selection

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-04 Tim Janik # 60ae7b97549

UI: b/menubar.vue: start in ~/Music, don't force '.anklang'

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-04 Tim Janik # b2f923dfca4

UI: b/track-list.vue, b/trackview.vue: fix lint

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-04 Tim Janik # feb3cde4275

UI: b/filedialog.vue: use crawler for canonify(), allow non-existing paths

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-04 Tim Janik # f7dd70e5053

ASE: path: use std::filesystem and posix filesystem functions

Avoid GLib functions when we can use std::filesystem.

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-04 Tim Janik # 4a06850fd63

ASE: api.hh: ResourceCrawler: provide just assign() and versatile canonify()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-04 Tim Janik # 0889c997083

ASE: randomhash.hh: support std::string hashing

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-04 Tim Janik # c6a1fc77225

ASE: path.cc: expand_tilde(): preserve non-expandable paths

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-03 Tim Janik # 84ef3fa5044

UI: b/filedialog.vue: work around <input/> re-layouts, crbug#1116001

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-02 Tim Janik # 4d7beda16fb

ASE: api.hh: rename dir_crawler() and expand special locations

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-02 Tim Janik # 45454ab3cb1

ASE: platform: remove unused HOMEDIR

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-02 Tim Janik # bd3838ed7f7

ASE: crawler.cc: get_dir(): also resolve xdg_dir() paths

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-02 Tim Janik # c35e4fe7feb

ASE: path: add xdg_dir() to resolve dirs from $XDG_* and user-dirs.dirs

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-02 Tim Janik # 97205db2475

ASE: inifile: add .ini file parser

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-02 Tim Janik # 8283a523397

ELECTRON: Makefile.mk: change Electron app name to "anklang/electron"

The name change is not directly user visible, because index.html sets
a <title/> tag. It does change the Electron data/cache directory to
~/.config/anklang/electron/, so electron data now resides under the
~/.config/anklang/ directory which is used anyway. And it changes the
X11 WM_CLASS string to "anklang/electron".

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-01 Tim Janik # 94665ebd3ca

Merge branch 'file-dialog'

* file-dialog:
  UI: b/ch-vue.md: document Envue components
  UI: b/menubar.vue: enable Open, Save, Save-As
  UI: b/app.js: add load_project_checked()
  UI: b/shell.vue: implement Shell.select_file()
  UI: b/filedialog.vue: component to select a file name
  UI: b/folderview.vue: component to browse an Ase.Entry list
  UI: b/modaldialog.vue: emit 'close' event
  UI: theme.scss: move focus outline styling here
  UI: sfc-compile.js: fix quoting in HTML section
  UI: styles.scss: style scrollbars inside .b-modaldialog-shield
  UI: theme.scss: add helper classes for grid col/row
  UI: util.js: use Vue.watchEffect() to monitor reactive data in Vue3
  UI: util.js: ignore hotkeys during compose sequences
  UI: util.js: support LEFT/RIGHT focus cycling
  UI: b/envue.js: support $watch() and observable_from_getters()
  UI: startup.js: Chrome-90 still has the movementX devicePixelRatio bug
  UI: b/preferencesdialog.vue: remove unused code
  UI: b/piano-roll.vue: minor fixes
  UI: b/partlist.vue: minor fix
  UI: b/modaldialog.vue: use v-flex for layout
  UI: b/fed-object.vue: remove unused code
  UI: util.js: export zero_pad and fmt_date
  UI: util.js: allow data-subfocus=1 to constrain focus arrow movements
  UI: util.js: allow dom_update() for Text nodes
  MISC: package.json.in: update npm packages
  ASE: api.hh: add crawler path navigation
  ASE: crawler, api.hh: add ResourceCrawler for files

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-01 Tim Janik # 5acb3f13fc4

UI: b/ch-vue.md: document Envue components

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-01 Tim Janik # 5a3875be78f

UI: b/menubar.vue: enable Open, Save, Save-As

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-01 Tim Janik # 351bb4413b9

UI: b/app.js: add load_project_checked()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-01 Tim Janik # 93f364f3ff7

UI: b/shell.vue: implement Shell.select_file()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-01 Tim Janik # 8229711e3a5

UI: b/filedialog.vue: component to select a file name

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-01 Tim Janik # a2f70464ac7

UI: b/folderview.vue: component to browse an Ase.Entry list

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-01 Tim Janik # 96f86e661e3

UI: b/modaldialog.vue: emit 'close' event

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-01 Tim Janik # 3dae0464e10

UI: theme.scss: move focus outline styling here

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-29 Tim Janik # 599f2291472

UI: sfc-compile.js: fix quoting in HTML section

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-29 Tim Janik # 0368b13a4ca

UI: styles.scss: style scrollbars inside .b-modaldialog-shield

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-29 Tim Janik # e660efeae73

UI: theme.scss: add helper classes for grid col/row

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-29 Tim Janik # baba7adf732

UI: util.js: use Vue.watchEffect() to monitor reactive data in Vue3

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-29 Tim Janik # e00ff6727ad

UI: util.js: ignore hotkeys during compose sequences

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-29 Tim Janik # 43d1e45dd1d

UI: util.js: support LEFT/RIGHT focus cycling

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-29 Tim Janik # af9d44961a0

UI: b/envue.js: support $watch() and observable_from_getters()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-24 Tim Janik # c737eb5ed5e

UI: startup.js: Chrome-90 still has the movementX devicePixelRatio bug

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-24 Tim Janik # 8d75157c058

UI: b/preferencesdialog.vue: remove unused code

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-24 Tim Janik # a2133f66be7

UI: b/piano-roll.vue: minor fixes

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-24 Tim Janik # fade1d853fd

UI: b/partlist.vue: minor fix

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-24 Tim Janik # b5637ff0e04

UI: b/modaldialog.vue: use v-flex for layout

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-24 Tim Janik # 4eb87b0b7e1

UI: b/fed-object.vue: remove unused code

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-24 Tim Janik # 7351874d0f7

UI: util.js: export zero_pad and fmt_date

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-24 Tim Janik # 56aadb3fe0c

UI: util.js: allow data-subfocus=1 to constrain focus arrow movements

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-24 Tim Janik # 7bf41a36b43

UI: util.js: allow dom_update() for Text nodes

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-01 Tim Janik # 808b2045c32

MISC: package.json.in: update npm packages

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-29 Tim Janik # 3e7f0df2170

ASE: api.hh: add crawler path navigation

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-16 Tim Janik # 60a97df3708

ASE: crawler, api.hh: add ResourceCrawler for files

Signed-off-by: Tim Janik <timj@gnu.org>

2021-05-01 Tim Janik # 931b2fb4f09

Merge branch 'storage'

* storage:
  ASE: server.cc: ignore read-only MIDI drivers (like Anklangs MIDI inputs)
  ASE: platform: add DEMODIR and HOMEDIR
  ASE: storage: add Storage to manage resource files in Ase ZIP containers
  ASE: minizip: compile minizip into Ase
  ASE: Makefile.mk: allow *.c files in Ase
  MISC: config-external.mk: provide minizip-ng-2.9.0
  ASE: utils: add uint{16|32|64}_swap_le_be()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-29 Tim Janik # 0c55d291736

ASE: server.cc: ignore read-only MIDI drivers (like Anklangs MIDI inputs)

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-29 Tim Janik # 7adcd8f72a9

ASE: platform: add DEMODIR and HOMEDIR

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-15 Tim Janik # c39e31dd930

ASE: storage: add Storage to manage resource files in Ase ZIP containers

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-15 Tim Janik # 4fad520922f

ASE: minizip: compile minizip into Ase

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-15 Tim Janik # 6c231a87b98

ASE: Makefile.mk: allow *.c files in Ase

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-15 Tim Janik # 008c25ffb93

MISC: config-external.mk: provide minizip-ng-2.9.0

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-14 Tim Janik # 00cae8ff037

ASE: utils: add uint{16|32|64}_swap_le_be()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-14 Tim Janik # 0c3d4224c1b

Merge branch 'midi-input'

* midi-input:
  UI: b/preferencesdialog.vue: adjust PCM and MIDI icons
  ASE: engine.cc: synchronize open MIDI drivers with preferences
  ASE: api.hh: provide up to 4 MIDI driver configs
  ASE: midievent.hh: add capacity() and reserve()
  ASE: driver: ensure devid() matches open (devid)
  UI: b/fed-object.vue: query and display ChoiceS
  UI: b/choice.vue: display Ase.Choice entries
  UI: b/icon.vue: fallback to `ic` unicode display
  ASE: driver.cc: fix info
  ASE: api.hh: remove unused DriverEntry.modem
  DEVICES: blepsynth/blepsynth.cc: adjust ChoiceS construction
  ASE: processor: use Choice, ChoiceS and string_to_identifier()
  ASE: server: provide ChoiceS for midi_driver and pcm_driver
  ASE: api.hh: extend Choice and ChoiceS
  ASE: strings: add string_to_identifier()
  ASE: properties: allow Text properties with choice lists
  ASE: processor: use CString as icon string type
  UI: b/pro-input.vue: center input fields, widen b-choice
  UI: b/pro-group.vue: allow taller inputs
  UI: b/preferencesdialog.vue: augment :choice: properties
  UI: b/fed-object.vue: use b-choice for :choice: properties
  UI: b/choice.vue: support small, indexed and drop-down arrow
  UI: b/toggle.vue: fix comment
  UI: b/choice.vue: cleanups
  UI: b/fed-object.vue: allow property augmentation
  UI: b/fed-object.vue: use object_await_values()
  UI: util.js: add object_await_values and object_zip
  ASE: server.cc: list PCM and MIDI drivers
  UI: startup.js: Chrome-89 still has the movementX devicePixelRatio bug
  ASE: track.cc: setup event source per track
  ASE: midievent.cc: fix comment
  ASE: driver-alsa.cc: reduce debug verbosity
  ASE: device: fix device lists and add event source setter
  ASE: engine: add EngineMidiInput to provide external MIDI events
  ASE: processor.cc: take event buses into account when checking outputs
  ASE: cxxaux.cc: suport assertion backtraces with ASE_DEBUG=backtrace
  ASE: backtrace: determine system() command for backtrace printing
  DEVICES: blepsynth/blepsynth.cc: fix uri and version, add creator

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-14 Tim Janik # b92a9378c53

UI: b/preferencesdialog.vue: adjust PCM and MIDI icons

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-12 Tim Janik # 46d21d4b3c6

ASE: engine.cc: synchronize open MIDI drivers with preferences

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-12 Tim Janik # 93897a6f39e

ASE: api.hh: provide up to 4 MIDI driver configs

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-12 Tim Janik # 017b901d171

ASE: midievent.hh: add capacity() and reserve()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-12 Tim Janik # 71a2720161d

ASE: driver: ensure devid() matches open (devid)

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-11 Tim Janik # 4b298f4f0e2

UI: b/fed-object.vue: query and display ChoiceS

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-11 Tim Janik # 7e1bb6ac130

UI: b/choice.vue: display Ase.Choice entries

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-11 Tim Janik # 55232b0bb7c

UI: b/icon.vue: fallback to `ic` unicode display

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-11 Tim Janik # 37a9a4acb83

ASE: driver.cc: fix info

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-11 Tim Janik # 1136e04691b

ASE: api.hh: remove unused DriverEntry.modem

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-11 Tim Janik # 84baefa8d17

DEVICES: blepsynth/blepsynth.cc: adjust ChoiceS construction

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-11 Tim Janik # 7456859b42f

ASE: processor: use Choice, ChoiceS and string_to_identifier()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-11 Tim Janik # 07262f1608b

ASE: server: provide ChoiceS for midi_driver and pcm_driver

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-11 Tim Janik # bebcd191f1c

ASE: api.hh: extend Choice and ChoiceS

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-11 Tim Janik # b75a601b15e

ASE: strings: add string_to_identifier()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-11 Tim Janik # 9e935c6b124

ASE: properties: allow Text properties with choice lists

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-11 Tim Janik # fb79be0715e

ASE: processor: use CString as icon string type

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-09 Tim Janik # 635328db627

UI: b/pro-input.vue: center input fields, widen b-choice

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-09 Tim Janik # 26523276fc7

UI: b/pro-group.vue: allow taller inputs

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-09 Tim Janik # 2546ce12f80

UI: b/preferencesdialog.vue: augment :choice: properties

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-09 Tim Janik # 472eac4bf70

UI: b/fed-object.vue: use b-choice for :choice: properties

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-09 Tim Janik # fc5b007bd4e

UI: b/choice.vue: support small, indexed and drop-down arrow

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-09 Tim Janik # dfa1b7f13fe

UI: b/toggle.vue: fix comment

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-09 Tim Janik # 8f9c4e244af

UI: b/choice.vue: cleanups

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-08 Tim Janik # 11f6d85a6ae

UI: b/fed-object.vue: allow property augmentation

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-08 Tim Janik # 5d60b010dbd

UI: b/fed-object.vue: use object_await_values()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-08 Tim Janik # 7a3f4c0b0dd

UI: util.js: add object_await_values and object_zip

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-08 Tim Janik # 6f54b3da0e4

ASE: server.cc: list PCM and MIDI drivers

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-08 Tim Janik # b26d2e9fda6

UI: startup.js: Chrome-89 still has the movementX devicePixelRatio bug

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-08 Tim Janik # 516ea062eb9

ASE: track.cc: setup event source per track

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-08 Tim Janik # 7953c909a41

ASE: midievent.cc: fix comment

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-08 Tim Janik # cb412d50739

ASE: driver-alsa.cc: reduce debug verbosity

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-08 Tim Janik # 57378b44a98

ASE: device: fix device lists and add event source setter

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-08 Tim Janik # 5b9d98966f4

ASE: engine: add EngineMidiInput to provide external MIDI events

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-08 Tim Janik # 70a8dfdf179

ASE: processor.cc: take event buses into account when checking outputs

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-08 Tim Janik # c0fa0d3a05b

ASE: cxxaux.cc: suport assertion backtraces with ASE_DEBUG=backtrace

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-08 Tim Janik # 48066918798

ASE: backtrace: determine system() command for backtrace printing

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-07 Tim Janik # 916b1149661

DEVICES: blepsynth/blepsynth.cc: fix uri and version, add creator

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-05 Tim Janik # 6854b48fe51

Merge branch 'blepsynth'

* blepsynth:
  DEVICES: blepsynth/: adjust for Ase API
  DEVICES: blepsynth/Makefile.mk: integrate BlepSynth into Ase build
  DEVICES: blepsynth/: relicense to MPL-2.0
	Code originally by:
	  Stefan Westerfeld <stefan@space.twc.de>
	License statement to use the code under MPL-2:
	  https://mail.gnome.org/archives/beast/2021-February/msg00001.html
  DEVICES: blepsynth: rename namespace to Ase, adjust prefixes and includes
  DEVICES: blepsynth/blepsynth.cc: fix "stereo_out" identifier
  DEVICES: blepsynth/blepsynth.cc: make query_info() const, i.e. MT-Safe
  DEVICES: blepsynth: rename midievent.key to match MIDI spec
  DEVICES: blepsynth/blepsynth.cc: fix missing 'override'
  DEVICES: blepsynth: add filter key tracking
  DEVICES: blepsynth: stop filter envelope at note off
  DEVICES: blepsynth: smooth "Env Cutoff Modulation" to avoid clicks
  DEVICES: blepsynth: add filter envlope and cutoff modulation
  DEVICES: blepsynth: add linear ADSR shape for Envelope
  DEVICES: blepsynth: support osc octave + pitch properties
  DEVICES: blepsynth: display unison voice text as integer
  DEVICES: blepsynth: add smoothing for cutoff frequency, add drive property
  DEVICES: blepsynth: copy remaining relevant files from bleposc branch
  DEVICES: blepsynth/blepsynth.cc: use Logscale for cutoff parameters
  DEVICES: blepsynth: fix choice range to go from 0 .. size() -1
  DEVICES: blepsynth: use nyquist() and inyquist()
  DEVICES: blepsynth/blepsynth.cc: allow 8s Envelope ramps and use log scales
  DEVICES: blepsynth/blepsynth.cc: implement reset() via unsetting voices
  DEVICES: blepsynth/blepsynth.cc: remove unused adjust_param()
  DEVICES: blepsynth/blepsynth.cc: fix add_param() parameters
  DEVICES: blepsynth/blepsynth.cc: remove useless copy-paste lines
  DEVICES: blepsynth/GNUmakefile: support `make` command in this dir
  DEVICES: blepsynth/bleposc.hh: cleanup includes
  DEVICES: blepsynth: blepsynth.cc: handle ALL_NOTES_OFF event message
  DEVICES: blepsynth: blepsynth.cc: re-arrange param groups to improve UI
  DEVICES: blepsynth: blepsynth.cc: process NOTE_ON and NOTE_OFF
  DEVICES: blepsynth: blepsynth.cc: remove unused RenderSetup argument
  DEVICES: blepsynth: fixups due to moving sources into devices/blepsynth
  DEVICES: blepsynth: blepsynth.cc: support different midi channels
  DEVICES: blepsynth: blepsynth.cc: add lowpass filter
  DEVICES: blepsynth: blepsynth.cc: add more oscillator properties
  DEVICES: blepsynth: blepsynth.cc: add osc unison properties
  DEVICES: blepsynth: blepsynth.cc: add "real" blep oscillators
  DEVICES: blepsynth: blepsynth.cc: add ADSR volume envelope
  DEVICES: blepsynth: blepsynth.cc: started to implement BlepSynth processor

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-02 Tim Janik # e288b6cfd1a

DEVICES: blepsynth/: adjust for Ase API

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-02 Tim Janik # cf71c468a5b

DEVICES: blepsynth/Makefile.mk: integrate BlepSynth into Ase build

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-03 Tim Janik # e1159a8f5af

DEVICES: blepsynth/: relicense to MPL-2.0

Code originally by:
  Stefan Westerfeld <stefan@space.twc.de>

License statement to use the code under MPL-2:
  https://mail.gnome.org/archives/beast/2021-February/msg00001.html

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-31 Tim Janik # 4909b41f262

DEVICES: blepsynth: rename namespace to Ase, adjust prefixes and includes

Signed-off-by: Tim Janik <timj@gnu.org>

2020-09-29 Tim Janik # 7f9c5703c5e

DEVICES: blepsynth/blepsynth.cc: fix "stereo_out" identifier

Signed-off-by: Tim Janik <timj@gnu.org>

2020-09-23 Tim Janik # e7a56737ef3

DEVICES: blepsynth/blepsynth.cc: make query_info() const, i.e. MT-Safe

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-31 Tim Janik # 6d10a8dc6aa

DEVICES: blepsynth: rename midievent.key to match MIDI spec

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-25 Tim Janik # 69633a60390

DEVICES: blepsynth/blepsynth.cc: fix missing 'override'

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-18 Stefan Westerfeld # ff66dbaa57b

DEVICES: blepsynth: add filter key tracking

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>

2020-07-18 Stefan Westerfeld # 5dcdae3d505

DEVICES: blepsynth: stop filter envelope at note off

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>

2020-07-18 Stefan Westerfeld # 190f2d57746

DEVICES: blepsynth: smooth "Env Cutoff Modulation" to avoid clicks

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>

2020-07-18 Stefan Westerfeld # 34093af7bee

DEVICES: blepsynth: add filter envlope and cutoff modulation

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>

2020-07-18 Stefan Westerfeld # 43055af4c56

DEVICES: blepsynth: add linear ADSR shape for Envelope

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>

2020-07-18 Stefan Westerfeld # ccddce4bb2d

DEVICES: blepsynth: support osc octave + pitch properties

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>

2020-07-18 Stefan Westerfeld # 82e8ea20316

DEVICES: blepsynth: display unison voice text as integer

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>

2020-07-14 Stefan Westerfeld # 7817c5b23ca

DEVICES: blepsynth: add smoothing for cutoff frequency, add drive property

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>

2020-07-13 Stefan Westerfeld # 79c0277bdc3

DEVICES: blepsynth: copy remaining relevant files from bleposc branch

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>

2020-07-15 Tim Janik # f4a7ecae2fb

DEVICES: blepsynth/blepsynth.cc: use Logscale for cutoff parameters

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-15 Tim Janik # 39d84a7b95b

DEVICES: blepsynth: fix choice range to go from 0 .. size() -1

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-11 Tim Janik # ee5113389c0

DEVICES: blepsynth: use nyquist() and inyquist()

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-11 Tim Janik # f68bf0ff54b

DEVICES: blepsynth/blepsynth.cc: allow 8s Envelope ramps and use log scales

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-11 Tim Janik # 634ce15fd27

DEVICES: blepsynth/blepsynth.cc: implement reset() via unsetting voices

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-09 Tim Janik # 3216c30efd0

DEVICES: blepsynth/blepsynth.cc: remove unused adjust_param()

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-09 Tim Janik # 8820f13337a

DEVICES: blepsynth/blepsynth.cc: fix add_param() parameters

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-09 Tim Janik # 9c521439ed7

DEVICES: blepsynth/blepsynth.cc: remove useless copy-paste lines

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-08 Tim Janik # f765aa45a8b

DEVICES: blepsynth/GNUmakefile: support `make` command in this dir

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-08 Tim Janik # 0fb285f33fc

DEVICES: blepsynth/bleposc.hh: cleanup includes

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-07 Tim Janik # f131d81433a

DEVICES: blepsynth: blepsynth.cc: handle ALL_NOTES_OFF event message

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-07 Tim Janik # bfd7b5e791f

DEVICES: blepsynth: blepsynth.cc: re-arrange param groups to improve UI

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-07 Tim Janik # 037e093b7bd

DEVICES: blepsynth: blepsynth.cc: process NOTE_ON and NOTE_OFF

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-07 Tim Janik # d8139adaae2

DEVICES: blepsynth: blepsynth.cc: remove unused RenderSetup argument

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-08 Tim Janik # aa5be1768b9

DEVICES: blepsynth: fixups due to moving sources into devices/blepsynth

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-04 Stefan Westerfeld # 12b9e2ee128

DEVICES: blepsynth: blepsynth.cc: support different midi channels

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>

2020-07-04 Stefan Westerfeld # 4d480393a77

DEVICES: blepsynth: blepsynth.cc: add lowpass filter

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>

2020-07-04 Stefan Westerfeld # 0065212b1ac

DEVICES: blepsynth: blepsynth.cc: add more oscillator properties

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>

2020-07-04 Stefan Westerfeld # e79de0406d1

DEVICES: blepsynth: blepsynth.cc: add osc unison properties

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>

2020-07-04 Stefan Westerfeld # 38ce46f96ce

DEVICES: blepsynth: blepsynth.cc: add "real" blep oscillators

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>

2020-07-04 Stefan Westerfeld # f60a3d8ac56

DEVICES: blepsynth: blepsynth.cc: add ADSR volume envelope

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>

2020-07-04 Stefan Westerfeld # aa37f6fcb53

DEVICES: blepsynth: blepsynth.cc: started to implement BlepSynth processor

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>

2021-04-05 Tim Janik # 68fd3a04dc4

Merge branch 'math-utilities'

* math-utilities:
  ASE: processor: add note_to_freq()
  ASE: midievent.hh: add MidiNote and note_to_freq()
  ASE: mathutils.hh, mathtables.cc: add Cent and Semitone tables
  ASE: api.hh: provide error_blurb for JS
  ASE: api.hh: add MusicalTuning, musical_tuning_desc, musical_tuning_blurb
  ASE: signalmath.hh: add Logscale to logarithmically map a range onto 0…+1
  ASE: datautils.hh: include ase/signalmath.hh
  ASE: signalmath: add conversions for Voltage, Hertz, Decibell
  ASE: mathutils: add irintf, fast_exp2, fast_log2
  ASE: tests/benchmarks.cc: run benchmarks last
  ASE: testing.cc: sort tests by name

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-02 Tim Janik # b76b10f0ec0

ASE: processor: add note_to_freq()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-02 Tim Janik # 3c1c15b234d

ASE: midievent.hh: add MidiNote and note_to_freq()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-01 Tim Janik # d4c36a5a052

ASE: mathutils.hh, mathtables.cc: add Cent and Semitone tables

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-01 Tim Janik # bd972ab2fff

ASE: api.hh: provide error_blurb for JS

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-01 Tim Janik # 71494330f24

ASE: api.hh: add MusicalTuning, musical_tuning_desc, musical_tuning_blurb

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-01 Tim Janik # e6ccbb157e7

ASE: signalmath.hh: add Logscale to logarithmically map a range onto 0…+1

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-01 Tim Janik # c164b7f59aa

ASE: datautils.hh: include ase/signalmath.hh

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-01 Tim Janik # 173c29cd064

ASE: signalmath: add conversions for Voltage, Hertz, Decibell

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-31 Tim Janik # 1e399e95d61

ASE: mathutils: add irintf, fast_exp2, fast_log2

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-31 Tim Janik # d8458b4e513

ASE: tests/benchmarks.cc: run benchmarks last

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-31 Tim Janik # 8f1e6bdc8a9

ASE: testing.cc: sort tests by name

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-03 Tim Janik # 1b70d80f730

Merge branch 'resampler2'

* resampler2:
  ASE: resampler2.cc: run resampler2_tests
  ASE: resampler2: adjust for Ase API
  ASE: resampler2: rename prefixes and namespace to Ase
  ASE: resampler2.cc: switch to using FastMemArray<float>
  ASE: resampler2: relicense to MPL-2.0
	Code originally by:
	  Stefan Westerfeld <stefan@space.twc.de>
	License statement to use the code under MPL-2:
	  https://mail.gnome.org/archives/beast/2021-February/msg00001.html
  ASE: resampler2: import factor-2 resampler from Stefan Westerfeld
	Import resampler from:
	  https://github.com/tim-janik/beast/blob/master/bse/bseresampler.hh
	  https://github.com/tim-janik/beast/blob/master/bse/bseresampler.cc
	Code originally by:
	  Stefan Westerfeld <stefan@space.twc.de>
	Squashed commits since 2006-09-16:
	Added Resampler2::find_precision_for_bits to the API, and a
	precision enum -> string conversion function.
	The guarantee that the upsampler delay is even was removed from the API.
	The reason is that we can have a shorter stream delay when the upsampler
	delay is odd.
	Removed unnecessary delay. The stream delay for both, upsampling and
	downsampling should be truely minimal now.
	Added coefficient set for linear interpolation. It will probably sound
	bad, but its useful for testing.
	Improved comments on delay compensation.
	Added a virtual function Resampler2::delay(),
	which can be used for compensation of the resampler introduced delay.
	Added factor 2 resampling code (up- and downsampling), which can use SSE
	instructions when available. The implementation was tuned for speed.

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-01 Tim Janik # 29eaee7aab4

ASE: resampler2.cc: run resampler2_tests

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-01 Tim Janik # bd23b3bd9b9

ASE: resampler2: adjust for Ase API

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-03 Tim Janik # c07cabb2481

ASE: resampler2: rename prefixes and namespace to Ase

Signed-off-by: Tim Janik <timj@gnu.org>

2020-02-12 Tim Janik # 0970a3e6283

ASE: resampler2.cc: switch to using FastMemArray<float>

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-03 Tim Janik # 17db2f8abae

ASE: resampler2: relicense to MPL-2.0

Code originally by:
  Stefan Westerfeld <stefan@space.twc.de>

License statement to use the code under MPL-2:
  https://mail.gnome.org/archives/beast/2021-February/msg00001.html

Signed-off-by: Tim Janik <timj@gnu.org>

2006-09-16 Stefan Westerfeld # 0d5a0baad01

ASE: resampler2: import factor-2 resampler from Stefan Westerfeld

Import resampler from:
  https://github.com/tim-janik/beast/blob/master/bse/bseresampler.hh
  https://github.com/tim-janik/beast/blob/master/bse/bseresampler.cc

Code originally by:
  Stefan Westerfeld <stefan@space.twc.de>

Squashed commits since 2006-09-16:

Added Resampler2::find_precision_for_bits to the API, and a
precision enum -> string conversion function.

The guarantee that the upsampler delay is even was removed from the API.
The reason is that we can have a shorter stream delay when the upsampler
delay is odd.

Removed unnecessary delay. The stream delay for both, upsampling and
downsampling should be truely minimal now.

Added coefficient set for linear interpolation. It will probably sound
bad, but its useful for testing.

Improved comments on delay compensation.

Added a virtual function Resampler2::delay(),
which can be used for compensation of the resampler introduced delay.

Added factor 2 resampling code (up- and downsampling), which can use SSE
instructions when available. The implementation was tuned for speed.

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>
Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-03 Tim Janik # 024b52ad09a

Merge branch 'engine-schedule'

* engine-schedule:
  ASE: server.cc: implement default error_blurb for g++
  ASE: atomics.hh: provide AtomicIntrusiveStack<>
  UI: b/pro-input.vue: handle Knob reset
  UI: b/pro-group.vue: minor cleanup
  UI: b/knob.vue: emit 'reset:value' on dblclick
  DEVICES: colorednoise.cc: adjust defaults
  ASE: engine: implement basic AudioProcessor scheduling
  ASE: engine.hh: rename schedule_queue_update()
  ASE: engine.hh: count number of AudioProcessors associated with an engine
  ASE: engine, processor: schedule leafs before combos
  ASE: processor.hh: minor cleanup
  ASE: engine: check pcm before writing
  ASE: main.cc: sort pcm/midi drivers by priority before printing
  ASE: processor: fix AudioPropertyImpl notification handling
  ASE: cxxaux.hh: add typeid_name() for object references
  UI: b/pro-group.vue: fix title alignment
  UI: b/devicepanel.vue: use list_device_types and Track API
  UI: b/deviceeditor.vue: adjust to Ase.Device API
  ASE: processor.cc: fix whitespace
  ASE: engine.cc: dispatch pending notifications
  DEVICES: colorednoise.cc: fix initialize()
  ASE: main.cc: integrate engine into main event loop
  ASE: track: create chain and add access_device()
  ASE: device: add disconnect_remove()
  ASE: combo: adapt scheduling
  ASE: engine: process jobs and add enable_output()
  ASE: processor: add enable_engine_output, improve scheduling methods
  ASE: engine: add remove_output()
  ASE: api.hh, device: implement Device API
  ASE: processor: merge configure into initialize() with SpeakerArrangement hints
  ASE: engine: move SpeakerArrangement here, add job queues and multiple outputs
	Add const_jobs queue and async_jobs queue.
  ASE: defs.hh: declare AudioProcessorInfo struct
  ASE: device: move DeviceImpl here
  ASE: defs.hh: move AudioCombo, AudioProcessor, DeviceImpl, ParamInfo decls here
  ASE: combo: implement AudioChain methods
  ASE: main: expose main_config_.engine
  ASE: processor: allow bus registration in initialize() instead of configure()
  ASE: engine.hh: add API comments
  ASE: defs.hh: add AudioChain, AudioCombo, AudioEngine decls
  ASE: defs.hh: move ProjectImpl, ServerImpl, TrackImpl decls here
  ASE: cxxaux.hh: rename StringVector to StringS
  ASE: defs.hh: move class and struct forward declarations here
  ASE: combo: add AudioCombo, an AudioProcessor container
  ASE: processor: provide DeviceImpl.audio_combo()
  ASE: processor.cc: fix off-by-one in float_buffer
  ASE: tests/benchmarks.cc: not_0x80_strlen_utf8: minor simplification
  ASE: processor: rename DeviceImpl.audio_processor()
  ASE: processor: rename get_device()
  ASE: processor.hh: add prototype variants for AudioCombo, AudioProcessor, etc
  DEVICES: colorednoise.cc: use register_audio_processor<>()
  ASE: processor.hh: rename register_audio_processor<>()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-03 Tim Janik # c1eb9171000

ASE: server.cc: implement default error_blurb for g++

Signed-off-by: Tim Janik <timj@gnu.org>

2021-04-01 Tim Janik # 4831825cde6

ASE: atomics.hh: provide AtomicIntrusiveStack<>

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-30 Tim Janik # 871e69d0a71

UI: b/pro-input.vue: handle Knob reset

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-30 Tim Janik # e5784eaff2d

UI: b/pro-group.vue: minor cleanup

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-30 Tim Janik # 556fc6f9d49

UI: b/knob.vue: emit 'reset:value' on dblclick

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-30 Tim Janik # 5d1b0d98dca

DEVICES: colorednoise.cc: adjust defaults

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-30 Tim Janik # 10880823bbd

ASE: engine: implement basic AudioProcessor scheduling

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-30 Tim Janik # 9543542f72e

ASE: engine.hh: rename schedule_queue_update()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-30 Tim Janik # 67112c2b904

ASE: engine.hh: count number of AudioProcessors associated with an engine

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-30 Tim Janik # d1c965ccc21

ASE: engine, processor: schedule leafs before combos

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-29 Tim Janik # 368b7fb8874

ASE: processor.hh: minor cleanup

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-29 Tim Janik # ef561b0ce53

ASE: engine: check pcm before writing

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-29 Tim Janik # 5329c37d6a8

ASE: main.cc: sort pcm/midi drivers by priority before printing

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-28 Tim Janik # 4b7a8b453c4

ASE: processor: fix AudioPropertyImpl notification handling

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-28 Tim Janik # c6bafcdc589

ASE: cxxaux.hh: add typeid_name() for object references

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-27 Tim Janik # f3ae340e5c6

UI: b/pro-group.vue: fix title alignment

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-27 Tim Janik # dba4e9c7e90

UI: b/devicepanel.vue: use list_device_types and Track API

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-27 Tim Janik # 14a91f757da

UI: b/deviceeditor.vue: adjust to Ase.Device API

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-27 Tim Janik # cac2d09ca71

ASE: processor.cc: fix whitespace

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-27 Tim Janik # 093904a2c76

ASE: engine.cc: dispatch pending notifications

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-25 Tim Janik # ee52f77797c

DEVICES: colorednoise.cc: fix initialize()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-25 Tim Janik # 3351cce812e

ASE: main.cc: integrate engine into main event loop

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-25 Tim Janik # ce005b35174

ASE: track: create chain and add access_device()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-25 Tim Janik # ab33a10f157

ASE: device: add disconnect_remove()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-25 Tim Janik # d5a988f5afd

ASE: combo: adapt scheduling

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-25 Tim Janik # e016f986699

ASE: engine: process jobs and add enable_output()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-25 Tim Janik # 14d9aff1d82

ASE: processor: add enable_engine_output, improve scheduling methods

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-25 Tim Janik # 217bf9b7193

ASE: engine: add remove_output()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-24 Tim Janik # 1fcf1e8532e

ASE: api.hh, device: implement Device API

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-24 Tim Janik # 34de65d3351

ASE: processor: merge configure into initialize() with SpeakerArrangement hints

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-24 Tim Janik # 44993cdb126

ASE: engine: move SpeakerArrangement here, add job queues and multiple outputs

Add const_jobs queue and async_jobs queue.

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-22 Tim Janik # cda82c80674

ASE: defs.hh: declare AudioProcessorInfo struct

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-22 Tim Janik # 8b576eb8728

ASE: device: move DeviceImpl here

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-22 Tim Janik # 491d818d37e

ASE: defs.hh: move AudioCombo, AudioProcessor, DeviceImpl, ParamInfo decls here

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-22 Tim Janik # cb740cfa673

ASE: combo: implement AudioChain methods

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-22 Tim Janik # 956ddb7c897

ASE: main: expose main_config_.engine

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-22 Tim Janik # af125c6478e

ASE: processor: allow bus registration in initialize() instead of configure()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-22 Tim Janik # 63fc4d281d9

ASE: engine.hh: add API comments

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-21 Tim Janik # 5c38e3e3af6

ASE: defs.hh: add AudioChain, AudioCombo, AudioEngine decls

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-21 Tim Janik # 6922e5d0d81

ASE: defs.hh: move ProjectImpl, ServerImpl, TrackImpl decls here

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-21 Tim Janik # a3ae4a85a2f

ASE: cxxaux.hh: rename StringVector to StringS

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-21 Tim Janik # 318c4520f05

ASE: defs.hh: move class and struct forward declarations here

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-21 Tim Janik # 3c144f4d7fd

ASE: combo: add AudioCombo, an AudioProcessor container

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-21 Tim Janik # c385d1d3abd

ASE: processor: provide DeviceImpl.audio_combo()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-21 Tim Janik # c98d8095212

ASE: processor.cc: fix off-by-one in float_buffer

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-19 Tim Janik # e753001b703

ASE: tests/benchmarks.cc: not_0x80_strlen_utf8: minor simplification

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-19 Tim Janik # 4d31fdcbaf5

ASE: processor: rename DeviceImpl.audio_processor()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-19 Tim Janik # 23f388acaaa

ASE: processor: rename get_device()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-19 Tim Janik # 6a9208b271d

ASE: processor.hh: add prototype variants for AudioCombo, AudioProcessor, etc

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-16 Tim Janik # a0ca33ecf63

DEVICES: colorednoise.cc: use register_audio_processor<>()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-16 Tim Janik # 6b5ef3d0435

ASE: processor.hh: rename register_audio_processor<>()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-19 Tim Janik # 37f1503fa40

Merge branch 'create-tracks-ui'

* create-tracks-ui:
  UI: b/trackview.vue: maintain a selected track across deletion
  UI: util.js: add array_index_equals()
  UI: b/app.js: consistently access globals through Data.*
  UI: b/trackview.vue: fix double use of dblclick
  UI: b/trackview.vue: use Data.project to create/remove tracks
  UI: b/partlist.vue: use Track.list_clips()
  UI: b/track-list.vue: use Project.list_tracks()
  UI: b/: use Gadget.name()
  UI: b/shell.vue: pass Project on to containees
  UI: b/app.js: setup Data.current_track and Data.mtrack
  UI: b/trackview.vue: consistently use trackview everywhere
  UI: b/partthumb.vue: consistently use partthumb everywhere

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-17 Tim Janik # cb47806d6e3

UI: b/trackview.vue: maintain a selected track across deletion

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-17 Tim Janik # 450cc3a6da9

UI: util.js: add array_index_equals()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-17 Tim Janik # 9644171681f

UI: b/app.js: consistently access globals through Data.*

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-14 Tim Janik # 9c3ccb44bb5

UI: b/trackview.vue: fix double use of dblclick

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-14 Tim Janik # 50b0755e048

UI: b/trackview.vue: use Data.project to create/remove tracks

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-14 Tim Janik # d960702aa5f

UI: b/partlist.vue: use Track.list_clips()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-13 Tim Janik # ec273d54db1

UI: b/track-list.vue: use Project.list_tracks()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-13 Tim Janik # e3b75712401

UI: b/: use Gadget.name()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-13 Tim Janik # 242a847478b

UI: b/shell.vue: pass Project on to containees

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-13 Tim Janik # 466251e96c9

UI: b/app.js: setup Data.current_track and Data.mtrack

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-13 Tim Janik # ed1ce0dccac

UI: b/trackview.vue: consistently use trackview everywhere

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-13 Tim Janik # 58e284c1329

UI: b/partthumb.vue: consistently use partthumb everywhere

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-19 Tim Janik # 5e024237950

Merge branch 'vue3-component-from-element'

* vue3-component-from-element:
  UI: b/devicepanel.vue: minor rename
  UI: util.js: move vue_mixins.vuechildren here
  UI: util.js: remove unused vue_mixins.hyphen_props
  UI: b/contextmenu.vue: use Util.vue_component() which handles Vue3 well
  UI: util.js: export vue_component()
  UI: b/*.vue: remove unused hyphen_props mixin
  UI: util.js: port directive inlineblur to Vue-3

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-11 Tim Janik # 4c4b6e83ed5

UI: b/devicepanel.vue: minor rename

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-14 Tim Janik # 310255a390a

UI: util.js: move vue_mixins.vuechildren here

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-14 Tim Janik # 754b20aa71f

UI: util.js: remove unused vue_mixins.hyphen_props

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-14 Tim Janik # 6b724d7088f

UI: b/contextmenu.vue: use Util.vue_component() which handles Vue3 well

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-14 Tim Janik # ca7cc8a93b1

UI: util.js: export vue_component()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-14 Tim Janik # 3a8bbd80837

UI: b/*.vue: remove unused hyphen_props mixin

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-14 Tim Janik # 7272e264a04

UI: util.js: port directive inlineblur to Vue-3

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-19 Tim Janik # 11eea6623de

Merge branch 'create-ase-tracks'

* create-ase-tracks:
  ASE: gadget.cc: use fallback_name() instead of empty names
  ASE: track: add stubs for list_clips() and create_monitor()
  ASE: monitor: add stub for signal monitoring
  ASE: track: add index to fallback name
  ASE: cxxaux.hh: add ASE_CLASS_DECLS() and ASE_STRUCT_DECLS()
  ASE: api.hh: forward declare structs and classes plus *P and *S variants
  ASE: gadget: add fallback_name() and store an explicitly assigned name
  ASE: utils: add CustomDataContainer which allows type-safe foreign data members
  ASE: project: ensure Master track, create and remove tracks
  ASE: track: create track with Master flag
  ASE: cxxaux.hh: provide ASE_DEFINE_MAKE_SHARED() helper for private ctors

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-14 Tim Janik # 85a45fb6c81

ASE: gadget.cc: use fallback_name() instead of empty names

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-14 Tim Janik # 184e761ab70

ASE: track: add stubs for list_clips() and create_monitor()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-14 Tim Janik # f67aa589c9a

ASE: monitor: add stub for signal monitoring

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-14 Tim Janik # ef50d8f3484

ASE: track: add index to fallback name

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-14 Tim Janik # 1eeaadf066e

ASE: cxxaux.hh: add ASE_CLASS_DECLS() and ASE_STRUCT_DECLS()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-14 Tim Janik # 2ef4a95a49e

ASE: api.hh: forward declare structs and classes plus *P and *S variants

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-13 Tim Janik # 430d1fed291

ASE: gadget: add fallback_name() and store an explicitly assigned name

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-13 Tim Janik # aa15100880f

ASE: utils: add CustomDataContainer which allows type-safe foreign data members

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-13 Tim Janik # 6195c5c029b

ASE: project: ensure Master track, create and remove tracks

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-13 Tim Janik # d4551399b6e

ASE: track: create track with Master flag

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-13 Tim Janik # 8808bf8f77b

ASE: cxxaux.hh: provide ASE_DEFINE_MAKE_SHARED() helper for private ctors

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-19 Tim Janik # 1df5aaff055

Merge branch 'electron-12'

* electron-12:
  UI: b/aboutdialog.vue: adjust output for window.Electron
  UI: startup.js: use electron_versions() to setup window.Electron
  ELECTRON: main.js: add exit(status) to bridged functions
  ELECTRON: use Ipc invoke/handle to dispatch renderer calls to main
  ELECTRON: main.js: handle window.open with Electron-12 handlers
	Remove 'new-window' handling, used only in Electron <= 11.
  MISC: package.json.in: update vue, eslint, inconsolata, Electron-12
  ELECTRON: main.js: use Eshell.openExternal() to open new windows in OS browser
  ELECTRON: main.js: provide electron_versions() via IPC
  ELECTRON: main.js: disable (unused) enableRemoteModule

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-12 Tim Janik # 1e0f3b58498

UI: b/aboutdialog.vue: adjust output for window.Electron

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-12 Tim Janik # 918ec2134b6

UI: startup.js: use electron_versions() to setup window.Electron

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-17 Tim Janik # c81919f7a76

ELECTRON: main.js: add exit(status) to bridged functions

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-17 Tim Janik # 9ae8d99e88b

ELECTRON: use Ipc invoke/handle to dispatch renderer calls to main

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-15 Tim Janik # 4b05a6a0722

ELECTRON: main.js: handle window.open with Electron-12 handlers

Remove 'new-window' handling, used only in Electron <= 11.

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-11 Tim Janik # 7d86ade9641

MISC: package.json.in: update vue, eslint, inconsolata, Electron-12

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-15 Tim Janik # 4998720441c

ELECTRON: main.js: use Eshell.openExternal() to open new windows in OS browser

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-12 Tim Janik # a7143812e18

ELECTRON: main.js: provide electron_versions() via IPC

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-12 Tim Janik # 45eb2dc7b49

ELECTRON: main.js: disable (unused) enableRemoteModule

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-19 Tim Janik # 1c35cc618fc

Merge branch 'fast-rebuilds'

* fast-rebuilds:
  MISC: package.json.in: avoid running eslint during serve, MAKE does it
  UI: Makefile.mk: defer non-essential build steps during incremental rebuilds
  MISC: colorize.sh: colorize error messages
	We need this for e.g. the 'eslint -f unix' output which does not support
	the --color option.
  UI: startup.js: try fast reconnects with linear backoff
  MISC: package.json.in: minimize delay during live-reload

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-17 Tim Janik # 514c4592e8a

MISC: package.json.in: avoid running eslint during serve, MAKE does it

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-17 Tim Janik # 49b5ec4dd3e

UI: Makefile.mk: defer non-essential build steps during incremental rebuilds

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-17 Tim Janik # 557881fa9bc

MISC: colorize.sh: colorize error messages

We need this for e.g. the 'eslint -f unix' output which does not support
the --color option.

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-17 Tim Janik # 690faa7525b

UI: startup.js: try fast reconnects with linear backoff

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-17 Tim Janik # 6ad22b8e651

MISC: package.json.in: minimize delay during live-reload

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-19 Tim Janik # 9b65490bf25

Merge branch 'bad-invocation-exception'

* bad-invocation-exception:
  UI: startup.js: adapt to Jsonipc.open options API
  ASE: jsonapi.cc: use Jsonipc::bad_invocation to relay remote errors
  JSONIPC: jsonipc.hh: use Jsonipc::bad_invocation for all error codes
	This also removes the unused generic exception hander API.
  JSONIPC: jsonipc.js: simplify Jsonipc.send() reply handling
	This also allows stack-tracing error replies to the original request.
  JSONIPC: jsonipc.js: always use globalThis.* to avoid clashes
	The file "jsonipc.js" can be pasted as a header before generated API
	code. If that defines Error, Promise, etc, lookups in the header fail
	due to hoisting unless globalThis is used.
  JSONIPC: jsonipc.hh: add bad_invocation() to relay exceptions generically
  JSONIPC: Makefile: remove unused -D__JSONIPC_NULL_REFERENCE_THROWS__
  JSONIPC: jsonipc.hh: properly relay null->reference cast errors to caller
	Remove __JSONIPC_NULL_REFERENCE_THROWS__ macro which sometimes caused strange
	const cast compiler errors. Increase robustness (on the C++ side) by relaying
	casting errors to the caller (Javascript), when null/undefined is passed in
	place of a reference argument.
  JSONIPC: jsonipc.hh: fix copy-and-paste error

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-16 Tim Janik # e7e89479c2e

UI: startup.js: adapt to Jsonipc.open options API

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-16 Tim Janik # 945bcef87e9

ASE: jsonapi.cc: use Jsonipc::bad_invocation to relay remote errors

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-16 Tim Janik # 0b060e0afe4

JSONIPC: jsonipc.hh: use Jsonipc::bad_invocation for all error codes

This also removes the unused generic exception hander API.

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-16 Tim Janik # e4d56f1dc5b

JSONIPC: jsonipc.js: simplify Jsonipc.send() reply handling

This also allows stack-tracing error replies to the original request.

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-16 Tim Janik # 81b5100baf2

JSONIPC: jsonipc.js: always use globalThis.* to avoid clashes

The file "jsonipc.js" can be pasted as a header before generated API
code. If that defines Error, Promise, etc, lookups in the header fail
due to hoisting unless globalThis is used.

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-16 Tim Janik # c152e528db0

JSONIPC: jsonipc.hh: add bad_invocation() to relay exceptions generically

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-12 Tim Janik # c917a184672

JSONIPC: Makefile: remove unused -D__JSONIPC_NULL_REFERENCE_THROWS__

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-12 Tim Janik # 97fedc0ec8a

JSONIPC: jsonipc.hh: properly relay null->reference cast errors to caller

Remove __JSONIPC_NULL_REFERENCE_THROWS__ macro which sometimes caused strange
const cast compiler errors. Increase robustness (on the C++ side) by relaying
casting errors to the caller (Javascript), when null/undefined is passed in
place of a reference argument.

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-16 Tim Janik # 763bad21f4a

JSONIPC: jsonipc.hh: fix copy-and-paste error

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-10 Tim Janik # d8c00fda6e6

Merge branch 'devices'

* devices:
  ASE: engine: assign root module and add IPC stubs
  ASE: processor: rename start_group()
  DEVICES: colorednoise.cc: add white noise & pink noise generator module
  ASE: processor: add general purpose audio processor base type
  Makefile.mk: add devices/Makefile.mk
  DEVICES: GNUmakefile: allow 'make' from subdir
  DEVICES: Makefile.mk: add directory for source code of devices
  ASE: utils.hh: provide make_case_table<N>() for all [0…N] cases
  ASE: cxxaux.hh: add rotl<> and rotr<> operations

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-10 Tim Janik # d1a5644951d

ASE: engine: assign root module and add IPC stubs

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-10 Tim Janik # baf957979e5

ASE: processor: rename start_group()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-10 Tim Janik # 55b5a450e3c

DEVICES: colorednoise.cc: add white noise & pink noise generator module

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-09 Tim Janik # 80e177b7788

ASE: processor: add general purpose audio processor base type

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-09 Tim Janik # c308045366a

Makefile.mk: add devices/Makefile.mk

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-27 Tim Janik # efeea263b87

DEVICES: GNUmakefile: allow 'make' from subdir

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-27 Tim Janik # adb2451ecc4

DEVICES: Makefile.mk: add directory for source code of devices

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-09 Tim Janik # 5dacf792a4c

ASE: utils.hh: provide make_case_table<N>() for all [0…N] cases

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-27 Tim Janik # 8f3247a7600

ASE: cxxaux.hh: add rotl<> and rotr<> operations

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-10 Tim Janik # 79053b4c095

Merge branch 'drivers'

* drivers:
  ASE: properties.hh: use CString derived GroupId for group labels
  ASE: api.hh: add DeviceInfo and Device API
  ASE: driver-alsa.cc: fix AUDIO_BLOCK_FLOAT_ZEROS_SIZE
  ASE: datautils: add helpers to fill and convert float blocks
  ASE: utils.hh: add binary_lookup() helpers
  ASE: cxxaux.hh: add helper class for integer IDs up to 32 Bit, possibly enums
  ASE: midievent: provide event definition for MIDI message exchange
  ASE: engine.cc: always hook up PCM driver to event loop
  ASE: main.cc: load and print drivers
  ASE: driver-alsa.cc: add ALSA PCM and SEQMIDI drivers
  ASE: driver.cc: implement proper timing for 'null' PCM driver
  ASE: driver: add PCM and MIDI driver framework

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-27 Tim Janik # 9efa939e92e

ASE: properties.hh: use CString derived GroupId for group labels

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-27 Tim Janik # 07154e83b72

ASE: api.hh: add DeviceInfo and Device API

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-25 Tim Janik # 43c75f1839f

ASE: driver-alsa.cc: fix AUDIO_BLOCK_FLOAT_ZEROS_SIZE

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-25 Tim Janik # 96f58786aba

ASE: datautils: add helpers to fill and convert float blocks

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-25 Tim Janik # 5423d77c1d8

ASE: utils.hh: add binary_lookup() helpers

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-25 Tim Janik # d1c07c2c876

ASE: cxxaux.hh: add helper class for integer IDs up to 32 Bit, possibly enums

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-25 Tim Janik # 614d8f08a0a

ASE: midievent: provide event definition for MIDI message exchange

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-20 Tim Janik # fa61831aaf5

ASE: engine.cc: always hook up PCM driver to event loop

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-17 Tim Janik # 6ef08187c63

ASE: main.cc: load and print drivers

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-18 Tim Janik # d6c9212de49

ASE: driver-alsa.cc: add ALSA PCM and SEQMIDI drivers

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-20 Tim Janik # 2a27bbdb90f

ASE: driver.cc: implement proper timing for 'null' PCM driver

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-17 Tim Janik # e579bedf0c6

ASE: driver: add PCM and MIDI driver framework

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-10 Tim Janik # e2ed279b3b1

Merge branch 'linting'

* linting:
  MISC: Makefile.mk, run-cppcheck.sh: remove old cppcheck code
  JSONIPC: jsonipc.hh: fix shadowing, missing const and explicit ctors
  ASE: tests/benchmarks.cc: fix variable shadowing
  ASE: tests/benchmarks.cc: avoid implicit std::string allocation
  ASE: tests/benchmarks.cc: bench both, utf8len(char*) and utf8len(string&)
  ASE: tests/benchmarks.cc: avoid '\0' in strlen test strings
  ASE: testing.hh: fix const&
  ASE: path.cc: fix signedness
  ASE: memory.hh: minor fix
  ASE: formatter.cc: minor fixes
  ASE: fix licenses
  ASE: Makefile.mk: cleanups, rename check-ase-tests
  MISC: Makefile.mk: add lint-unused rule
  MISC: Makefile.mk: add lint-cppcheck rule
  MISC: Makefile.mk: add lint and lint-clean rules
  MISC: Makefile.mk: add .LINT_CCFLAGS
  MISC: Makefile.mk: exclude external headers from clang-tidy
  MISC: Makefile.mk: clang-tidy: parallelize and generate one log per source file

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-10 Tim Janik # fd3f68d5c05

MISC: Makefile.mk, run-cppcheck.sh: remove old cppcheck code

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-09 Tim Janik # fe5508fc5a2

JSONIPC: jsonipc.hh: fix shadowing, missing const and explicit ctors

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-09 Tim Janik # 5b84ad6f7b4

ASE: tests/benchmarks.cc: fix variable shadowing

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-10 Tim Janik # 0e65d1485ae

ASE: tests/benchmarks.cc: avoid implicit std::string allocation

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-10 Tim Janik # 17191c9d01e

ASE: tests/benchmarks.cc: bench both, utf8len(char*) and utf8len(string&)

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-10 Tim Janik # b62bb14c73c

ASE: tests/benchmarks.cc: avoid '\0' in strlen test strings

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-09 Tim Janik # 7e5ca3f9719

ASE: testing.hh: fix const&

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-09 Tim Janik # 142931f196b

ASE: path.cc: fix signedness

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-09 Tim Janik # ab6cb765005

ASE: memory.hh: minor fix

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-09 Tim Janik # a5e5fb2b187

ASE: formatter.cc: minor fixes

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-10 Tim Janik # c15d045fdae

ASE: fix licenses

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-09 Tim Janik # 407e843ac9f

ASE: Makefile.mk: cleanups, rename check-ase-tests

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-07 Tim Janik # 0876ac724bc

MISC: Makefile.mk: add lint-unused rule

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-07 Tim Janik # 12e3a437dc0

MISC: Makefile.mk: add lint-cppcheck rule

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-07 Tim Janik # 8bc3840cd8e

MISC: Makefile.mk: add lint and lint-clean rules

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-06 Tim Janik # bb65f867de8

MISC: Makefile.mk: add .LINT_CCFLAGS

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-05 Tim Janik # 411675f72e7

MISC: Makefile.mk: exclude external headers from clang-tidy

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-05 Tim Janik # 8d04733e602

MISC: Makefile.mk: clang-tidy: parallelize and generate one log per source file

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-10 Tim Janik # a4bcb673743

Merge branch 'error-enum' plus cleanups

* error-enum:
  ASE: api.hh, server.cc: add ase_error_*() helpers and Error enum
  Makefile.mk, config-uname.mk: use MODE=devel for debugging and optimizations
  UI: b/icon.vue: add unicode link
  ASE: utils: add ase_gettext() dummy to implement _()
  ASE: internal.hh: provide CLAMP()
  ASE: cxxaux.hh: remove outdated ASE_DECLARE_VLA()
  ASE: cxxaux.hh: always use namespaced std::map and std::vector
  ASE: loop: merge prepare-phase timeout_usecs into LoopState and fix vectors
  ASE: memory.hh: use std::vector
  ASE: strings: use std::vector
  ASE: testing.hh: use std::vector

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-17 Tim Janik # d3b0c8e57dc

ASE: api.hh, server.cc: add ase_error_*() helpers and Error enum

Signed-off-by: Tim Janik <timj@gnu.org>

2021-03-10 Tim Janik # 7ad57bba6de

Makefile.mk, config-uname.mk: use MODE=devel for debugging and optimizations

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-23 Tim Janik # 963ab190643

UI: b/icon.vue: add unicode link

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-17 Tim Janik # f773f1edf45

ASE: utils: add ase_gettext() dummy to implement _()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-18 Tim Janik # a85361805ef

ASE: internal.hh: provide CLAMP()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-19 Tim Janik # bf76472afb4

ASE: cxxaux.hh: remove outdated ASE_DECLARE_VLA()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-19 Tim Janik # dee590d6f31

ASE: cxxaux.hh: always use namespaced std::map and std::vector

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-18 Tim Janik # 04ca6c19454

ASE: loop: merge prepare-phase timeout_usecs into LoopState and fix vectors

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-19 Tim Janik # 67e0113b99b

ASE: memory.hh: use std::vector

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-19 Tim Janik # 5da02f44a09

ASE: strings: use std::vector

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-19 Tim Janik # 8419440e2da

ASE: testing.hh: use std::vector

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-16 Tim Janik # f6e550a6f31

Merge branch 'engine-thread'

* engine-thread:
  ASE: utils: move JobQueue here
  ASE: main.cc: start AudioEngine thread and run tests from main loop
  ASE: engine: add thread handling for AudioEngine
  MISC: package.json.in: exit nodemon if its subprocess make fails
  MISC: package.json.in: exiting AnklangSynthEngine during 'serve' is an error
  UI: Makefile.mk: adjust comment
  ASE: server.cc: quit the main loop on Server.shutdown()
  ASE: cxxaux.hh: add VoidF type alias
  ASE: platform.hh: add AsyncBlockingQueue - pop() blocks until pairing push()
  ASE: Makefile.mk: integrate test functions
  ASE: tests/Makefile.mk: list test sources and objects
  ASE: tests/benchmarks.cc: add UTF-8 and FastMemory benchmarks
  ASE: internal.hh: add TEST_BENCHMARK()
  ASE: memory: add an allocator for fast huge pages and CString
  ASE: internal.hh: rename TEST_INTEGRITY()
  ASE: server: make Server singelton persistent
  ASE: cxxaux.hh: add Persistent<> to fix static initialization order fiasco

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-12 Tim Janik # 1a5e608c819

ASE: utils: move JobQueue here

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-16 Tim Janik # 9c8f1429f9c

ASE: main.cc: start AudioEngine thread and run tests from main loop

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-16 Tim Janik # a1f086ab90d

ASE: engine: add thread handling for AudioEngine

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-16 Tim Janik # ec9d449423a

MISC: package.json.in: exit nodemon if its subprocess make fails

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-16 Tim Janik # 8b7b893f213

MISC: package.json.in: exiting AnklangSynthEngine during 'serve' is an error

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-16 Tim Janik # 30c85d327ea

UI: Makefile.mk: adjust comment

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-15 Tim Janik # 36dfd80f434

ASE: server.cc: quit the main loop on Server.shutdown()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-15 Tim Janik # 431ff198181

ASE: cxxaux.hh: add VoidF type alias

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-15 Tim Janik # ef300eef440

ASE: platform.hh: add AsyncBlockingQueue - pop() blocks until pairing push()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-15 Tim Janik # 75b6e5ada98

ASE: Makefile.mk: integrate test functions

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-15 Tim Janik # ed7b60f2084

ASE: tests/Makefile.mk: list test sources and objects

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-15 Tim Janik # 0ff154e6899

ASE: tests/benchmarks.cc: add UTF-8 and FastMemory benchmarks

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-15 Tim Janik # cea5aa74ae2

ASE: internal.hh: add TEST_BENCHMARK()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-15 Tim Janik # 05fd2039c5f

ASE: memory: add an allocator for fast huge pages and CString

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-15 Tim Janik # 38266db402d

ASE: internal.hh: rename TEST_INTEGRITY()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-15 Tim Janik # ae0aac8b086

ASE: server: make Server singelton persistent

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-15 Tim Janik # 08d2fde1766

ASE: cxxaux.hh: add Persistent<> to fix static initialization order fiasco

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-14 Tim Janik # 181f93e308b

Merge branch 'readme+version'

* readme+version:
  README.md: add README with intro, badges, roadmap, license and links
  Makefile.mk, misc/version.sh: provide version_* variables up front

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-14 Tim Janik # e653f58d7ed

README.md: add README with intro, badges, roadmap, license and links

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-14 Tim Janik # 1b064228ca8

Makefile.mk, misc/version.sh: provide version_* variables up front

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-14 Tim Janik # 4d171aa832b

Merge branch 'license'

* license:
  MISC: LGPL-2.1.txt: add LGPL-2.1 license
  MISC: MPL-2.0.txt: add MPL-2 license

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-14 Tim Janik # be79646cd37

MISC: LGPL-2.1.txt: add LGPL-2.1 license

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-14 Tim Janik # dc1869aa741

MISC: MPL-2.0.txt: add MPL-2 license

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-12 Tim Janik # 73117e8861f

Merge branch 'doc'

* doc:
  DOC: GNUmakefile: allow subdir make
  UI: Makefile.mk: build ui/vue-docs.md for the manual
  DOC: Makefile.mk: generate anklang-manual.html
  DOC: pandoc-pdf.tex: allow PDF generation
  DOC: filt-docs2.py: all Pandoc filter to increase heading level
  DOC: ch-appendix.md: add interpolation background and notes on modifier keys
  DOC: ch-development.md: describe important development aspects
  DOC: ch-intro.md: introduce Anklang manual

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-22 Tim Janik # dff76d119db

DOC: GNUmakefile: allow subdir make

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # 0a9743a4462

UI: Makefile.mk: build ui/vue-docs.md for the manual

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-22 Tim Janik # 9bf111182e3

DOC: Makefile.mk: generate anklang-manual.html

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # 0dc9a6b42a9

DOC: pandoc-pdf.tex: allow PDF generation

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # 5d5390d9f5b

DOC: filt-docs2.py: all Pandoc filter to increase heading level

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # 223978f7a20

DOC: ch-appendix.md: add interpolation background and notes on modifier keys

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # 550efddba15

DOC: ch-development.md: describe important development aspects

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # b6e1c0214bd

DOC: ch-intro.md: introduce Anklang manual

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # 973ea7b5b2c

Merge branch 'doc-style'

* doc-style:
  DOC: style/Makefile.mk: build faketex.css, fonts and MathJax
  DOC: style/mathjax-config.js: configure MathJax touse SVG and fit faketex.scss
  DOC: style/faketex.scss, style/features.scss: mimic TeX looks with CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # bce7ad92ac5

DOC: style/Makefile.mk: build faketex.css, fonts and MathJax

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # 8b1dcee44c4

DOC: style/mathjax-config.js: configure MathJax touse SVG and fit faketex.scss

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # 44e9ee78239

DOC: style/faketex.scss, style/features.scss: mimic TeX looks with CSS

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # 0e8010c6c2d

Merge branch 'ui'

* ui:
  UI: Makefile.mk: generate ui/favicon.ico
  MISC: package.json.in: add icon-gen
  UI: assets/favicon.svg: add favicon for Anklang
  UI: startup.js: add UI startup logic
  UI: util.js: add UI utilities
  UI: .eslintrc.js: add eslint config for Vue3
  UI: sfc-compile.js: split single file components and process styles with scss
  UI: theme.scss, styles.scss: provide main CSS theme
  UI: index.html: provide main UI entry
  UI: assets/eknob.svg: add SVG for knob.vue
  UI: cssaux.scss: add CSS utilities
  UI: chromatic-sass2.js: add chroma-js to dart-sass binding
  UI: assets/spinners.svg: add image for spin button styling
  UI: Makefile.mk: build HTML UI
  UI: b/: add building blocks for the UI

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # 1483fe20379

UI: Makefile.mk: generate ui/favicon.ico

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # eb965aefa1f

MISC: package.json.in: add icon-gen

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # f1b6b6a66bc

UI: assets/favicon.svg: add favicon for Anklang

Signed-off-by: Tim Janik <timj@gnu.org>

2020-12-09 Tim Janik # 2a1a98a1bf8

UI: startup.js: add UI startup logic

Signed-off-by: Tim Janik <timj@gnu.org>

2020-12-09 Tim Janik # 30e2c3a8cab

UI: util.js: add UI utilities

Signed-off-by: Tim Janik <timj@gnu.org>

2020-12-14 Tim Janik # a4d9d90b190

UI: .eslintrc.js: add eslint config for Vue3

Signed-off-by: Tim Janik <timj@gnu.org>

2020-12-09 Tim Janik # 8dcfd7612b3

UI: sfc-compile.js: split single file components and process styles with scss

Signed-off-by: Tim Janik <timj@gnu.org>

2020-12-09 Tim Janik # 288387e1ca5

UI: theme.scss, styles.scss: provide main CSS theme

Signed-off-by: Tim Janik <timj@gnu.org>

2020-12-09 Tim Janik # 4e2db308b11

UI: index.html: provide main UI entry

Signed-off-by: Tim Janik <timj@gnu.org>

2020-12-09 Tim Janik # e8803ee2d8b

UI: assets/eknob.svg: add SVG for knob.vue

Signed-off-by: Tim Janik <timj@gnu.org>

2020-12-09 Tim Janik # 6c4b88fd448

UI: cssaux.scss: add CSS utilities

Signed-off-by: Tim Janik <timj@gnu.org>

2020-12-09 Tim Janik # 822b206c5d8

UI: chromatic-sass2.js: add chroma-js to dart-sass binding

Signed-off-by: Tim Janik <timj@gnu.org>

2020-12-14 Tim Janik # 01aab092378

UI: assets/spinners.svg: add image for spin button styling

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # f2ec2cbb942

UI: Makefile.mk: build HTML UI

Signed-off-by: Tim Janik <timj@gnu.org>

2020-12-09 Tim Janik # a1af68ca066

UI: b/: add building blocks for the UI

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # 532b2e2fab5

Merge branch 'electron'

* electron:
  ELECTRON: main.js: create Anklang UI window and start AnklangSynthEngine
  ELECTRON: preload.js: provide minimal IPC for sandboxed electron apps
  ELECTRON: Makefile.mk: build electron/anklang

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # a41a3628845

ELECTRON: main.js: create Anklang UI window and start AnklangSynthEngine

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # 33e14417fac

ELECTRON: preload.js: provide minimal IPC for sandboxed electron apps

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # 98fa2d5caa4

ELECTRON: Makefile.mk: build electron/anklang

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # 10686f14d72

Merge branch 'package-json'

* package-json:
  Makefile.mk: add PACKAGE_CONFIG to package.json and install npm packages
  MISC: package.json.in: list electron, vue, and other packages for a html ui

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # b38097a4e85

Makefile.mk: add PACKAGE_CONFIG to package.json and install npm packages

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # d0292c266ab

MISC: package.json.in: list electron, vue, and other packages for a html ui

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # deffc84ecdb

Merge branch 'anklang-icons'

* anklang-icons:
  IMAGES: anklangicons.sh: script to package icons and cursors
  IMAGES: icons/: add on, off, folder and menu-more drawings
  IMAGES: cursors/: add Eraser and Pen drawings
  IMAGES: README.md: create subdir for images, icons, cursors

Signed-off-by: Tim Janik <timj@gnu.org>

2020-11-23 Tim Janik # 8d44d8a4c3c

IMAGES: anklangicons.sh: script to package icons and cursors

Signed-off-by: Tim Janik <timj@gnu.org>

2020-11-23 Tim Janik # ef249d77848

IMAGES: icons/: add on, off, folder and menu-more drawings

Signed-off-by: Tim Janik <timj@gnu.org>

2020-11-23 Tim Janik # aaeeb579e2c

IMAGES: cursors/: add Eraser and Pen drawings

Signed-off-by: Tim Janik <timj@gnu.org>

2020-11-23 Tim Janik # 847effa0678

IMAGES: README.md: create subdir for images, icons, cursors

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # b1538642e64

Merge branch 'ase'

* ase:
  ASE: GNUmakefile: allow 'make' from subdir
  ASE: Makefile.mk: build AnklangSynthEngine
  ASE: add Anklang sound engine sources

Squashed ChangeLog of recent developments:
* main.cc: support embed-<fd> with authenticated websocket
* jsonapi: support websocket subprotocol as authentication
* websocket: support subprotocols and an unlisten callback
* platform: add user_id(), user_name(), user_real_name()
* server: store Preferences in anklangrc.json
* serialize: implement SKIP_ZERO, SKIP_EMPTYSTRING purging from Value
* server: emit change notification from Preferences properties
* properties: Bag: allow common notification hook
* api.hh: add Emittable::js_trigger() to send Events to Javascript
* jsonapi: add/kill and notify JsTrigger invocations
* jsonapi: add JsTrigger bindings
* value.hh: add JsTrigger skeleton
* utils: add Aux::contains(), Aux::erase_first(), Aux::erase_all()
* properties: notify via Emittable.emit_event()
* object: implement on_event() and emit_event() for Emittable
* api.hh: introduce Emittable
* value: add constructors, repr() and Event
* cxxaux.cc: raise SIGQUIT on fatal-warnings
* main.cc: check for ASE_FEATURE=fatal-warnings
* serialize: warn if transient object wrappers are used during serialization
* jsonapi.cc: use Jsonipc::Scope::PURGE_TEMPORARIES for IPC call stacks
* value: add INSTANCE, where InstanceP is a SharedBaseP
* api.hh: derive Property, Object from SharedBase
* cxxaux: add VirtualBase
* serialize: handle Value, ValueS, ValueR serialization
* value: allow ==, != and initializer list for Value, ValueS, ValueR
* serialize: add json_stringify() json_parse() and tests
* serialize.cc: save/load JSON root value directly
* serialize: serialize std::vector<T>
* serialize: add DataConverter<Serializable> and simplify
* serialize: serialize Jsonipc-bound types to/from Json
* jsonapi.hh: allow ValueP serialization
* value.cc: always construct a missing Value in place of nullptr
* api.hh: allow session data storage on the server
* value: turn ValueS and ValueR into pointer arrays
* properties.cc: add Value records and sequences
* internal.hh: provide __DEV__
* main.cc: debug websocket traffic with ASE_DEBUG=jsipc
* server: provide Preferences Properties
* properties: add Properties interfaces and implementations
* gadget: Base class for objects with properties
* jsonapi.cc: colorize error replies
* jsonapi.cc: print REQUEST/REPLY
* main: add --jsipc
* project: handle synth project functionality
* add Project, Track and Clip
* server: provide global API entry points
* api.hh: define the external AnklangSynthEngine API
* main: support --js-api
* jsonapi: add Value bindings
* jsonapi: dispatch Jsonipc calls via WebSocket
* jsonapi: add Jsonipc bindings and WebSocket integration
* value: add Value records, sequences and repr()
* value: add Value for handling generic value in the API
* internal.hh: add JSONIPC_INHERIT() helper
* platform: add helpers for runpath, i18n, executable_path and CPU
* platform: add helpers for ANSI colors, threads, timestamps, semaphores
* main: close all sockets on SIGUSR2
* loop: add event loop and handling for FD polling and unix signals
* mime-types.hh: add mime types for WebSocket Content-Type header fields
* websocket: add websocket handling and simple http server
* main: the main AnklangSynthEngine logic, config and main loop
* blob: add simple wrapper for file I/O
* utils: add utilities for stdout/stderr, debugging, jump tables
* strings: utilities for string handling and conversions
* path: utilities for file path and search path handling
* internal.hh: add shorthand macros
* cxxaux: provide basic C++17 types and helpers

Signed-off-by: Tim Janik <timj@gnu.org>

2020-12-30 Tim Janik # c7235acc27f

ASE: GNUmakefile: allow 'make' from subdir

Signed-off-by: Tim Janik <timj@gnu.org>

2020-12-17 Tim Janik # 916e0b538db

ASE: Makefile.mk: build AnklangSynthEngine

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-10 Tim Janik # 5a0a75db935

ASE: add Anklang sound engine sources

Squashed ChangeLog of recent developments:
* main.cc: support embed-<fd> with authenticated websocket
* jsonapi: support websocket subprotocol as authentication
* websocket: support subprotocols and an unlisten callback
* platform: add user_id(), user_name(), user_real_name()
* server: store Preferences in anklangrc.json
* serialize: implement SKIP_ZERO, SKIP_EMPTYSTRING purging from Value
* server: emit change notification from Preferences properties
* properties: Bag: allow common notification hook
* api.hh: add Emittable::js_trigger() to send Events to Javascript
* jsonapi: add/kill and notify JsTrigger invocations
* jsonapi: add JsTrigger bindings
* value.hh: add JsTrigger skeleton
* utils: add Aux::contains(), Aux::erase_first(), Aux::erase_all()
* properties: notify via Emittable.emit_event()
* object: implement on_event() and emit_event() for Emittable
* api.hh: introduce Emittable
* value: add constructors, repr() and Event
* cxxaux.cc: raise SIGQUIT on fatal-warnings
* main.cc: check for ASE_FEATURE=fatal-warnings
* serialize: warn if transient object wrappers are used during serialization
* jsonapi.cc: use Jsonipc::Scope::PURGE_TEMPORARIES for IPC call stacks
* value: add INSTANCE, where InstanceP is a SharedBaseP
* api.hh: derive Property, Object from SharedBase
* cxxaux: add VirtualBase
* serialize: handle Value, ValueS, ValueR serialization
* value: allow ==, != and initializer list for Value, ValueS, ValueR
* serialize: add json_stringify() json_parse() and tests
* serialize.cc: save/load JSON root value directly
* serialize: serialize std::vector<T>
* serialize: add DataConverter<Serializable> and simplify
* serialize: serialize Jsonipc-bound types to/from Json
* jsonapi.hh: allow ValueP serialization
* value.cc: always construct a missing Value in place of nullptr
* api.hh: allow session data storage on the server
* value: turn ValueS and ValueR into pointer arrays
* properties.cc: add Value records and sequences
* internal.hh: provide __DEV__
* main.cc: debug websocket traffic with ASE_DEBUG=jsipc
* server: provide Preferences Properties
* properties: add Properties interfaces and implementations
* gadget: Base class for objects with properties
* jsonapi.cc: colorize error replies
* jsonapi.cc: print REQUEST/REPLY
* main: add --jsipc
* project: handle synth project functionality
* add Project, Track and Clip
* server: provide global API entry points
* api.hh: define the external AnklangSynthEngine API
* main: support --js-api
* jsonapi: add Value bindings
* jsonapi: dispatch Jsonipc calls via WebSocket
* jsonapi: add Jsonipc bindings and WebSocket integration
* value: add Value records, sequences and repr()
* value: add Value for handling generic value in the API
* internal.hh: add JSONIPC_INHERIT() helper
* platform: add helpers for runpath, i18n, executable_path and CPU
* platform: add helpers for ANSI colors, threads, timestamps, semaphores
* main: close all sockets on SIGUSR2
* loop: add event loop and handling for FD polling and unix signals
* mime-types.hh: add mime types for WebSocket Content-Type header fields
* websocket: add websocket handling and simple http server
* main: the main AnklangSynthEngine logic, config and main loop
* blob: add simple wrapper for file I/O
* utils: add utilities for stdout/stderr, debugging, jump tables
* strings: utilities for string handling and conversions
* path: utilities for file path and search path handling
* internal.hh: add shorthand macros
* cxxaux: provide basic C++17 types and helpers

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # 726001d942a

Merge branch 'misc'

* misc:
  MISC: Makefile.mk, clang-tidy.ignore: generate clang-tidy and cppcheck reports
  MISC: subdirs.mk: add helper to build with make from subdirs
  MISC: run-cppcheck.sh: add wrapper script to run 'cppcheck'
  MISC: blame-lines: use git to blame file lines on git author

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # a94e581cf65

MISC: Makefile.mk, clang-tidy.ignore: generate clang-tidy and cppcheck reports

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # deef65de0dc

MISC: subdirs.mk: add helper to build with make from subdirs

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # 9c3f357495d

MISC: run-cppcheck.sh: add wrapper script to run 'cppcheck'

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-11 Tim Janik # 612d3ffe3e8

MISC: blame-lines: use git to blame file lines on git author

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-10 Tim Janik # 9240c04bf21

Merge branch 'jsonipc'

* jsonipc:
  JSONIPC: Makefile: make test targets .INTERMEDIATE
  JSONIPC: jsonipc.hh: allow fallback for Serializable<T>::serialize_from_json()
  JSONIPC: jsonipc.js: simplify Jsonipc.receive() interface
	Get rid of the old observe/unobserve implementation.
  JSONIPC: jsonipc.hh: add jsonobject_to_string() convenience routine
  JSONIPC: Makefile: use -D__JSONIPC_NULL_REFERENCE_THROWS__ for testing
  JSONIPC: jsonipc.hh: use const dummy if ! __JSONIPC_NULL_REFERENCE_THROWS__
  JSONIPC: cxxjip.py: ignore incomplete classes
  JSONIPC: jsonipc.hh: sort classes on printout by inheritance depth
  JSONIPC: cxxjip.py: exclude inheritance from unknown bases
  JSONIPC: jsonipc.hh: keep locals in InstanceMap unless Scope::PURGE_TEMPORARIES
  JSONIPC: jsonipc.hh: add jsonvalue_to_string()
  JSONIPC: jsonipc.hh: rename wrapper_from_json()
  JSONIPC: jsonipc.hh: add virtual wrapper_to_json()
  JSONIPC: jsonipc.hh: simplify InstanceMap.lookup_wrapper()
  JSONIPC: jsonipc.hh: simplify InstanceMap::lookup_wrapper() callers
  JSONIPC: jsonipc.hh: remove unused get_objectid()
  JSONIPC: jsonipc.hh: remove indirection
  JSONIPC: jsonipc.hh: fix static method call
  JSONIPC: testjsonipc.cc: test shared_from_this() uses
  JSONIPC: jsonipc.hh: use Class.shared_from_this() instead of eternal()
  JSONIPC: Makefile: compile as C++17
  JSONIPC: jsonipc.hh: small simplification
  JSONIPC: jsonipc.hh: fix Serializable<> shared_ptr
  JSONIPC: testjsonipc.cc: test Serializable<> to shared_ptr
  JSONIPC: jsonipc.hh: remove leaky copy ctor handling
  JSONIPC: jsonipc.hh: remove "__typename__" extension on Serializable<>
  JSONIPC: jsonipc.hh: allow shared_ptr to Serializable
  JSONIPC: jsonipc.js: `null` objects cannot be indexed
  JSONIPC: cxxjip.py: filter out classes from includes
  JSONIPC: cxxjip.py: filter out classes with underscore
  JSONIPC: cxxjip.py: abort if castxml failed
  JSONIPC: cxxjip.py: parse c++17 code
  JSONIPC: jsonipc.js: allow onclose handler on open()
  JSONIPC: guard access to JS 'Object.' since C++ might introduce 'class Object'
  JSONIPC: cxxjip.py: fix class with bases and no methods
  JSONIPC: jsonipc.hh: generate ENUMS before other JS bindings
  JSONIPC: cxxjip.py: use castxml to generate Jsonipc binding code from C++
  JSONIPC: jsonipc.hh: freeze JS objects representing enums
  JSONIPC: jsonipc.js: rename file and 'export Jsonipc'
  JSONIPC: testjsonipc.cc: fixup Enum initialization
  JSONIPC: jsonipc.hh: simplify class printing and ensure inheritance order
  JSONIPC: jsonipc.hh: introduce ClassPrinter::Op
  JSONIPC: jsonipc.hh: ceate ClassPrinter with C++ type
  JSONIPC: jsonipc.hh: shared_ptr are needed to auto-detect up-cast objects
  JSONIPC: Makefile: fix include path for rapidjson
  JSONIPC: jsonipc.hh: avoid rethrowing exceptions
	GDB does not follow rethrown exceptions, so avoid it where possible.
  JSONIPC: jsonipc.hh: add IpcDispatcher.set_exception_handler()
  JSONIPC: jsonipc.hh: just stringify enums by substituting ':+' with '.'
	This effectively yields the Javascript identifier for an enum value as
	enum string *and* is predictable from typename and value name in other
	languages.
  JSONIPC: jsonipc.hh: always register JS classes with canonified name
	Treat JS class name argument to Class<> constructor as JS class name alias.
  JSONIPC: require an active Scope and support InstanceMap per-Scope
  JSONIPC: Makefile: add 'make check'
  JSONIPC: jsonipc.hh: always use `static inline` except where ODR applies
	Generally, use `static inline` to avoid useless linker emission of unused free
	standing functions. Except for functions that define `static` variables, these
	need to be emitted for global linkage (via `extern inline` aka `inline`), so
	the linker can apply the One-Definition-Rule to produce a single global symbol.
  JSONIPC: jsonipc.hh: avoid linker emission of static class variables
  JSONIPC: jsonipc.hh: add __typename__ to Serializable
  JSONIPC: jsonipc.hh: fix g++-8 missing-prototype warning by inlining
  JSONIPC: jsonipc.hh: freeze JS classes after initialization
	The current implementation makes no efforts to match or unify Jsonipc class
	instances, so several JS object references often refer to one remote instance.
	As such, adding/mutating data on Jsonipc class instances is unlikely useful
	and can easily appear to be lost.
	To avoid accidental attempts, the classes are now frozen after construction.
  JSONIPC: head.js: allow 'arraybuffer' message handling via onbinary
  JSONIPC: jsonipc.hh: use getter/setter method to avoid 'async get' properties
  JSONIPC: jsonipc.hh: add restrictions to IsWrappableClass<> to satisfy g++-7.4
  JSONIPC: head.js: add marshalling code for Javascript
	* perform object conversions recursively
	* add observe/unobserve to $jsonipc for notifications
	* wrap/unwrap call argument objects
	* auto-unwrap object ids in $jsonipc.send()
  JSONIPC: Makefile: build testjsonipc
  JSONIPC: testjsonipc: add simple jsonipc test program
  JSONIPC: jsonipc.hh: add binding to use C++ struct APIs via JSON messages
	Introduce Jsonipc, a header-only binding to use C++ struct APIs via JSON messages
	* generate data JS classes for Serializable
	* deprecate Class.copy() and Class.copyable()
	* introduce Serializable<>
	* introduce TypeInfo base class
	* use RTTI to wrap objects with their most derived Class<>
	* allow passing an allocator to CallbackInfo
	* add Scope to keep track of temporary objects
	* specialize Convert<> for std::vector derived types
	* register and use enum value strings
	* rearrange the ClassPrinter to deal with enum class exports.
	* move 'this' into JSON params
	* rename n_args() and ntharg() of CallbackInfo
	* find baseclass methods and upcast recursively
	* add .set(name,getter,setter) for properties
	* fix inheritance registration
	* pass RTTI classnames to Javascript
	* use '{"$id":<int>}' as object format
	* pass JsonAllocator& into all to_json() calls
	* throw method name on duplicate registration
	* implement enums via std::underlying_type<>
	* hide '$id' from enumeration and make it read-only
	* add setter support via member object pointer
	* add Class.copy() and Class.copyable() for copy ctors
	* add Class.eternal() for static class instances
	* implement object wrapping for shared_ptr
	* add getter support via member object pointer
	* generate Javascript module ouput
	* add IpcDispatcher.add_method()
	* simplify templates with REQUIRES<>
	* add header file for IPC via JSON messages

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-07 Tim Janik # 03eb963eef7

JSONIPC: Makefile: make test targets .INTERMEDIATE

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-04 Tim Janik # 4dfa9fde5e3

JSONIPC: jsonipc.hh: allow fallback for Serializable<T>::serialize_from_json()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-01 Tim Janik # ea68aa2ec2d

JSONIPC: jsonipc.js: simplify Jsonipc.receive() interface

Get rid of the old observe/unobserve implementation.

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-01 Tim Janik # f6b3e5eb533

JSONIPC: jsonipc.hh: add jsonobject_to_string() convenience routine

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-30 Tim Janik # e3412d5f1aa

JSONIPC: Makefile: use -D__JSONIPC_NULL_REFERENCE_THROWS__ for testing

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-30 Tim Janik # a6fa3594ed0

JSONIPC: jsonipc.hh: use const dummy if ! __JSONIPC_NULL_REFERENCE_THROWS__

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-30 Tim Janik # a4e7214b8b5

JSONIPC: cxxjip.py: ignore incomplete classes

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-26 Tim Janik # 802a13ab935

JSONIPC: jsonipc.hh: sort classes on printout by inheritance depth

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-26 Tim Janik # a98a9048de4

JSONIPC: cxxjip.py: exclude inheritance from unknown bases

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-25 Tim Janik # b2d0f690440

JSONIPC: jsonipc.hh: keep locals in InstanceMap unless Scope::PURGE_TEMPORARIES

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-25 Tim Janik # 1e4967283bc

JSONIPC: jsonipc.hh: add jsonvalue_to_string()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-24 Tim Janik # d69b7cd9aa0

JSONIPC: jsonipc.hh: rename wrapper_from_json()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-24 Tim Janik # 9b29bdcd12e

JSONIPC: jsonipc.hh: add virtual wrapper_to_json()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-24 Tim Janik # 660c861657b

JSONIPC: jsonipc.hh: simplify InstanceMap.lookup_wrapper()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-24 Tim Janik # cb72117226e

JSONIPC: jsonipc.hh: simplify InstanceMap::lookup_wrapper() callers

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-24 Tim Janik # ef8bc284e9e

JSONIPC: jsonipc.hh: remove unused get_objectid()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-24 Tim Janik # 6e00b7e1344

JSONIPC: jsonipc.hh: remove indirection

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-24 Tim Janik # da88cd08399

JSONIPC: jsonipc.hh: fix static method call

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-24 Tim Janik # 8bee46ec979

JSONIPC: testjsonipc.cc: test shared_from_this() uses

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-24 Tim Janik # e8aa255ee67

JSONIPC: jsonipc.hh: use Class.shared_from_this() instead of eternal()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-24 Tim Janik # 90c83898a23

JSONIPC: Makefile: compile as C++17

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-24 Tim Janik # 84ab503fb93

JSONIPC: jsonipc.hh: small simplification

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-24 Tim Janik # 65e4063eca6

JSONIPC: jsonipc.hh: fix Serializable<> shared_ptr

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-24 Tim Janik # f3c4aeb03ab

JSONIPC: testjsonipc.cc: test Serializable<> to shared_ptr

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-24 Tim Janik # be50981f82f

JSONIPC: jsonipc.hh: remove leaky copy ctor handling

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-24 Tim Janik # ceb81c86181

JSONIPC: jsonipc.hh: remove "__typename__" extension on Serializable<>

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-18 Tim Janik # 13d220e1bf4

JSONIPC: jsonipc.hh: allow shared_ptr to Serializable

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-16 Tim Janik # 956f4dbdcc1

JSONIPC: jsonipc.js: `null` objects cannot be indexed

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-16 Tim Janik # 20d5437bb08

JSONIPC: cxxjip.py: filter out classes from includes

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-16 Tim Janik # d42c39fc019

JSONIPC: cxxjip.py: filter out classes with underscore

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-16 Tim Janik # 60e52e7f758

JSONIPC: cxxjip.py: abort if castxml failed

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-16 Tim Janik # e726a10d556

JSONIPC: cxxjip.py: parse c++17 code

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-15 Tim Janik # b6a31571fa3

JSONIPC: jsonipc.js: allow onclose handler on open()

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-04 Tim Janik # c11e28ab298

JSONIPC: guard access to JS 'Object.' since C++ might introduce 'class Object'

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-04 Tim Janik # 011e2c97811

JSONIPC: cxxjip.py: fix class with bases and no methods

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-04 Tim Janik # 23bec75c93c

JSONIPC: jsonipc.hh: generate ENUMS before other JS bindings

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-04 Tim Janik # 5ddcfd3f2e1

JSONIPC: cxxjip.py: use castxml to generate Jsonipc binding code from C++

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-04 Tim Janik # d83c63767a7

JSONIPC: jsonipc.hh: freeze JS objects representing enums

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-04 Tim Janik # ac83b4d0deb

JSONIPC: jsonipc.js: rename file and 'export Jsonipc'

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-03 Tim Janik # 5527fc329c6

JSONIPC: testjsonipc.cc: fixup Enum initialization

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-03 Tim Janik # d8c4ec009e8

JSONIPC: jsonipc.hh: simplify class printing and ensure inheritance order

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-02 Tim Janik # 528251c47df

JSONIPC: jsonipc.hh: introduce ClassPrinter::Op

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-02 Tim Janik # b9c8f5fd3ac

JSONIPC: jsonipc.hh: ceate ClassPrinter with C++ type

Signed-off-by: Tim Janik <timj@gnu.org>

2021-01-02 Tim Janik # ba578e1e254

JSONIPC: jsonipc.hh: shared_ptr are needed to auto-detect up-cast objects

Signed-off-by: Tim Janik <timj@gnu.org>

2020-11-21 Tim Janik # f4f1794c508

JSONIPC: Makefile: fix include path for rapidjson

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-14 Tim Janik # cc767f28b89

JSONIPC: jsonipc.hh: avoid rethrowing exceptions

GDB does not follow rethrown exceptions, so avoid it where possible.

Signed-off-by: Tim Janik <timj@gnu.org>

2020-07-06 Tim Janik # cb38f12c30b

JSONIPC: jsonipc.hh: add IpcDispatcher.set_exception_handler()

Signed-off-by: Tim Janik <timj@gnu.org>

2020-06-23 Tim Janik # 2bb9e5d5074

JSONIPC: jsonipc.hh: just stringify enums by substituting ':+' with '.'

This effectively yields the Javascript identifier for an enum value as
enum string *and* is predictable from typename and value name in other
languages.

Signed-off-by: Tim Janik <timj@gnu.org>

2020-05-29 Tim Janik # 663fb59c6d1

JSONIPC: jsonipc.hh: always register JS classes with canonified name

Treat JS class name argument to Class<> constructor as JS class name alias.

Signed-off-by: Tim Janik <timj@gnu.org>

2019-11-12 Tim Janik # fb85f5577f5

JSONIPC: require an active Scope and support InstanceMap per-Scope

Signed-off-by: Tim Janik <timj@gnu.org>

2019-11-12 Tim Janik # 80c3babed10

JSONIPC: Makefile: add 'make check'

Signed-off-by: Tim Janik <timj@gnu.org>

2019-10-16 Tim Janik # 59b0ea7ebca

JSONIPC: jsonipc.hh: always use `static inline` except where ODR applies

Generally, use `static inline` to avoid useless linker emission of unused free
standing functions. Except for functions that define `static` variables, these
need to be emitted for global linkage (via `extern inline` aka `inline`), so
the linker can apply the One-Definition-Rule to produce a single global symbol.

Signed-off-by: Tim Janik <timj@gnu.org>

2019-10-16 Tim Janik # bd7700c9837

JSONIPC: jsonipc.hh: avoid linker emission of static class variables

Signed-off-by: Tim Janik <timj@gnu.org>

2019-09-13 Tim Janik # 111b452d7b9

JSONIPC: jsonipc.hh: add __typename__ to Serializable

Signed-off-by: Tim Janik <timj@gnu.org>

2019-09-13 Tim Janik # 4eb01608fe2

JSONIPC: jsonipc.hh: fix g++-8 missing-prototype warning by inlining

Signed-off-by: Tim Janik <timj@gnu.org>

2019-08-31 Tim Janik # 3fb1a3b7356

JSONIPC: jsonipc.hh: freeze JS classes after initialization

The current implementation makes no efforts to match or unify Jsonipc class
instances, so several JS object references often refer to one remote instance.
As such, adding/mutating data on Jsonipc class instances is unlikely useful
and can easily appear to be lost.
To avoid accidental attempts, the classes are now frozen after construction.

Signed-off-by: Tim Janik <timj@gnu.org>

2019-08-18 Tim Janik # 17972aa32de

JSONIPC: head.js: allow 'arraybuffer' message handling via onbinary

Signed-off-by: Tim Janik <timj@gnu.org>

2019-08-11 Tim Janik # 4d8efccff82

JSONIPC: jsonipc.hh: use getter/setter method to avoid 'async get' properties

Signed-off-by: Tim Janik <timj@gnu.org>

2019-08-03 Tim Janik # 93ce0afdce8

JSONIPC: jsonipc.hh: add restrictions to IsWrappableClass<> to satisfy g++-7.4

Signed-off-by: Tim Janik <timj@gnu.org>

2019-07-31 Tim Janik # 56be3d0cda2

JSONIPC: head.js: add marshalling code for Javascript

* perform object conversions recursively
* add observe/unobserve to $jsonipc for notifications
* wrap/unwrap call argument objects
* auto-unwrap object ids in $jsonipc.send()

Signed-off-by: Tim Janik <timj@gnu.org>

2019-07-26 Tim Janik # 0b12f774523

JSONIPC: Makefile: build testjsonipc

Signed-off-by: Tim Janik <timj@gnu.org>

2019-07-26 Tim Janik # 35c84ecc386

JSONIPC: testjsonipc: add simple jsonipc test program

Signed-off-by: Tim Janik <timj@gnu.org>

2019-07-26 Tim Janik # 58d4a7953e8

JSONIPC: jsonipc.hh: add binding to use C++ struct APIs via JSON messages

Introduce Jsonipc, a header-only binding to use C++ struct APIs via JSON messages

* generate data JS classes for Serializable
* deprecate Class.copy() and Class.copyable()
* introduce Serializable<>
* introduce TypeInfo base class
* use RTTI to wrap objects with their most derived Class<>
* allow passing an allocator to CallbackInfo
* add Scope to keep track of temporary objects
* specialize Convert<> for std::vector derived types
* register and use enum value strings
* rearrange the ClassPrinter to deal with enum class exports.
* move 'this' into JSON params
* rename n_args() and ntharg() of CallbackInfo
* find baseclass methods and upcast recursively
* add .set(name,getter,setter) for properties
* fix inheritance registration
* pass RTTI classnames to Javascript
* use '{"$id":<int>}' as object format
* pass JsonAllocator& into all to_json() calls
* throw method name on duplicate registration
* implement enums via std::underlying_type<>
* hide '$id' from enumeration and make it read-only
* add setter support via member object pointer
* add Class.copy() and Class.copyable() for copy ctors
* add Class.eternal() for static class instances
* implement object wrapping for shared_ptr
* add getter support via member object pointer
* generate Javascript module ouput
* add IpcDispatcher.add_method()
* simplify templates with REQUIRES<>
* add header file for IPC via JSON messages

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-10 Tim Janik # 797cf8a05ea

Merge branch 'externals'

* externals:
  MISC: config-external.mk: provide websocketpp-0.8.2.tar.gz
	Download and provide websocketpp-0.8.2.tar.gz from
	https://github.com/zaphoyd/websocketpp/archive/0.8.2.tar.gz
  MISC: config-external.mk: provide rapidjson from git as of 13.10.2020
	Download and provide rapidjson-v1.1.0.tar.gz plus recent updates from
	https://github.com/Tencent/rapidjson/.
	These Tencent/rapidjson.git updates clean up the code for different compilers
	in various places, fix several parsing bugs, add some minor performance
	improvements and API. Unfortunately there is no upstream release yet.

Signed-off-by: Tim Janik <timj@gnu.org>

2020-12-26 Tim Janik # 3e6a652517b

MISC: config-external.mk: provide websocketpp-0.8.2.tar.gz

Download and provide websocketpp-0.8.2.tar.gz from
https://github.com/zaphoyd/websocketpp/archive/0.8.2.tar.gz

Signed-off-by: Tim Janik <timj@gnu.org>

2020-11-21 Tim Janik # 67894f17797

MISC: config-external.mk: provide rapidjson from git as of 13.10.2020

Download and provide rapidjson-v1.1.0.tar.gz plus recent updates from
https://github.com/Tencent/rapidjson/.
These Tencent/rapidjson.git updates clean up the code for different compilers
in various places, fix several parsing bugs, add some minor performance
improvements and API. Unfortunately there is no upstream release yet.

Signed-off-by: Tim Janik <timj@gnu.org>

2021-02-10 Tim Janik # 298dd1a5af2

Merge branch 'build-setup'

* build-setup:
  NEWS.md: start NEWS file
  .gitignore: add ignores
  Makefile.mk: add toplevel build rules
  GNUmakefile: make Makefile.mk the toplevel makefile
  MISC: config-utils.mk: add Makefile utilities for rule writing and printouts
  MISC: config-uname.mk: determine system requirements and CXX build setup
  MISC: config-checks.mk: check for third-party dependencies
  version.sh: extract version from git tag, archive ref or NEWS file

Signed-off-by: Tim Janik <timj@gnu.org>

2020-11-16 Tim Janik # cc6ecc202bd

NEWS.md: start NEWS file

Signed-off-by: Tim Janik <timj@gnu.org>

2020-11-16 Tim Janik # 6ec2ca2050a

.gitignore: add ignores

Signed-off-by: Tim Janik <timj@gnu.org>

2020-11-16 Tim Janik # cf69e1b461d

Makefile.mk: add toplevel build rules

Signed-off-by: Tim Janik <timj@gnu.org>

2020-11-16 Tim Janik # 032e3077e51

GNUmakefile: make Makefile.mk the toplevel makefile

Signed-off-by: Tim Janik <timj@gnu.org>

2020-11-16 Tim Janik # 9b81e2f1fbc

MISC: config-utils.mk: add Makefile utilities for rule writing and printouts

Signed-off-by: Tim Janik <timj@gnu.org>

2020-11-16 Tim Janik # 2cde8ea41e1

MISC: config-uname.mk: determine system requirements and CXX build setup

Signed-off-by: Tim Janik <timj@gnu.org>

2020-11-16 Tim Janik # 30730914f67

MISC: config-checks.mk: check for third-party dependencies

Signed-off-by: Tim Janik <timj@gnu.org>

2020-11-16 Tim Janik # 2c6389c08a6

version.sh: extract version from git tag, archive ref or NEWS file

Signed-off-by: Tim Janik <timj@gnu.org>

2020-11-16 Tim Janik # 96e7881fac0

Spark