Changelog for
wireplumber-0.4.9+7.d173eea-113.3.x86_64.rpm :
* Fri Mar 25 2022 obs-service-tar-scmAATTinvalid- Update to version 0.4.9+7.d173eea:
* main: don\'t use struct spa_json
* spa-json: add _new_from_stringn() API
* wplua: move under modules/module-lua-scripting
* main: use WpSpaJson when loading components
* spa-json: allow parsing unquoted keys when getting object properties
* src: setlocale in main() for tools and the daemon
* properties: Add get count API
* release 0.4.9
* tests: use GNU_SOURCE for compiling tests as well
* tests: spa-json: add a test to verify that we can parse the spa-json format
* spa-json: allocate enough space for parsing strings without looping
* spa-json: Parse unquoted string literals
* Add Telegram Desktop to the list of programs to enable bluetooth autoswitching.
* ci: add Alpine target to test Musl builds
* alsa: fixup node.nick
* policy-endpoint-device: Fix endpoints not connected with devices
* scripts: bluez: set icon name for bluez devices
* scripts: restore-stream: handle target.object
* policy-node: handle nodes-follow-default in handleLinkable
* policy-node: support target.object key
* wp: fix behavior of transitions before advanced for first time
* alsa: also try the profile description if the pcm name is empty, for node.nick
* alsa: use the pcm name to populate the node.nick
* si-audio-adapter: relax format parsing
* conf: add property to disable dummy AVRCP player in bluetooth.conf
* scripts: policy-node: don\'t use fallback for dont-reconnect w/ target
* policy-node: don\'t move already linked dont-reconnect nodes
* scripts: policy-node: handle device linkable removal
* policy-device-profile: Don\'t restore if active profile is persistent and default
* object: abort queued transitions if current transition failed.
* config: add more chromium based browsers to media-role.applications
* policy-node/create-item: fix handling of linkables pending activation
* config: rename default-routes.lua to policy-device-routes.lua
* policy-device-profile: add option to set persistent profiles
* config: port device-activation module to policy-device.profile.lua
* gitlab-ci: update ci-templates, fedora version and coverity version
* spa-json: fix format and remove unneded WP_API
* policy-bluetooth: fix string.find crash with nil string
* spa-json: fix va_list APIs for different architectures
* lib: remove some listeners
* restore-stream: do not crash if config.properties is nil
* release 0.4.8
* meson: require pipewire 0.3.45 for pw_context_conf_section_for_each()
* docs: add WpSpaJson C API Documentation files
* policy-node: find best linkable if default node passthrough is not compatible
* main: use pw_context_conf_section_for_each()
* restore-stream: export the route-settings metadata again
* lua-scripting: expose WpImplMetadata on the API
* restore-stream: add rules matching to allow overriding things per stream
* config: move restore-stream.lua configuration in its own file
* restore-stream: use the new Json API and remove route-settings-api module
* policy-endpint: add support for stream audio nodes without media.role
* scripts: policy-bluetooth: don\'t switch if already have input route
* scripts: policy-bluetooth: save only necessary state on disk
* scripts: policy-bluetooth: monitor whether streams are running
* scripts: policy-bluetooth: save profiles by name, not index
* scripts: policy-bluetooth: fix headset profile saving
* scripts: policy-bluetooth: fix state_table usage
* scripts: policy-bluetooth: ignore monitor streams properly
* spa-json: add null character when finishing building json
* default-nodes: add option to auto-switch to echo-cancel nodes
* policy-node: schedule rescan if device params changed
* conf: added ability to disable MIDI functionality entirely
* m-lua-scripting: add Json.Raw constructor
* wpctl: ensure that the result of strtol() is < G_MAXUINT32
* spa-json: fix coverity scan issues
* default-nodes: use WpSpaJson API
* m-lua-scripting: add WpSpaJson API
* spa-json: add new WpSpaJson API
* wpctl: add clear-default option to clear default configured node names
* m-default-nodes-api: add API to get and set default configured node name
* default-nodes: reevaluate when device params changed
* bluez5: fix initial profile selection
* spa-pod: add missing API sentinel
* lib: assert non-NULL input for wp_spa_pod_equal
* tests: don\'t leak fd in test
* conf: update module-rt usage in bluetooth.conf
* docs: actually mention correct numbers in the priority.session note
* docs: add a note about good priority values for nodes
* conf: update module-rt usage
* scripts: policy-bluetooth: Support saving of user selected headset profile
* scripts: Add a bluetooth policy script
* scripts: intended-roles: Use both device and stream
* Revert \"default-nodes: increase priority if node has available routes\"
* default-nodes: handle nodes without Routes
* default-nodes: increase priority if node has available routes
* release 0.4.7
* scripts: fallback to empty config table if args were not passed from the config files
* device-activation: show device name in logs
* default-nodes: add more logs
* added support for disabling nodes and devices through conf
* default-nodes: check if default node has available route
* scripts: monitors: log warning if spa devices were not created successfully
* default-nodes: check if the ports exist in rescan_om
* policy-endpoint-client.lua: fix record with endpoints
* config: update the endpoints config
* spa-pod: fix different architecture errors for boolean values
* policy-node: find best linkable if default one cannot be linked
* policy-node: schedule a rescan without timeout if defined target is not found
* policy-node: fix typo when finding best target
* release 0.4.6
* m-default-nodes-api: don\'t return stream node if default node name matches
* create-item: downgrade warning to message
* bump pipewire dep to 0.3.43
* m-device-activation: reset iterator when finding best and default profiles
* si-audio-adapter: Reference WpTransition before passing it as callback data
* policy-node: always use the default linkable if default nodes module is loaded
* module-default-nodes-api: sync with core before emitting changed signal
* m-default-nodes: don\'t reevaluate nodes if they are not ready
* m-default-nodes: set effective node metadata to NULL if node is not found
* policy-node.lua: Fix nil value indexing
* config: add commented-out \"session.suspend-timeout-seconds\" option in alsa config
* suspend-node: use a 5sec timeout by default, to be inline with the docs
* docs: update documented versions of dependencies
* docs: update the \"running\" instructions
* docs: split up and enrich configuration docs
* json: improve json parsing
* config: add property for audio.allowed-rates
* config: enable RT on the data thread for bluetooth nodes
* docs: remove protected annotations from functions to show them in the docs
* policy: use a scheduleRescan function to avoid unneeded rescans
* create-item: don\'t register item if failed to activate
* si-std-link: handle node destroy events while linking is in progress
* registry: ensure in-progress activations are aborted when a global is removed
* pipewire-obj-mixin: guard against proxy being destroyed while syncing to core
* core: add wp_core_sync_closure()
* object-manager: doc: add note about the installed signal
* log: guard against NULL messages
* meson.build: add devenv
* m-device-activation: reevaluate current profile if params changed
* m-default-profile: only store the default profile if the save flag is present
* m-mixer-api: unset iterator value before breaking or returning from loop
* pipewire-object-mixin: enable feature info when event info is fully processed
* metadata: unset iterator value before breaking or returning from loop
* pipewire-object-mixin: use 64-bit type for `change_mask`
* meson: set minimum pipewire version to 0.3.41
* si-standard-link: return transition error once even if multiple links failed
* proxy: abort activation if error or destroyed
* object: add new _abort_activation API
* docs: update daemon configuration to match new config files
* default-routes.lua: reevaluate current profile only for its own routes
* scripts: also look in $XDG_CONFIG_HOME/scripts
* m-device-activation: set best profile if default is not available
* policy-node.lua: Fix si_link activation failure handling
* default-routes: make the default volume configurable
* access-config: add restricted access permissions
* policy-node: don\'t crash if device.id is not set on a target
* policy-node: improve default device selection logic
* wp: fixup tmp_global exposition with removed objects
* wp: add an assert to guard against id race conditions arising
* si-standard-link: always return transition error if activation fails
* si-audio-adapter: always return task error if set ports format fails
* si-audio-adapter: clean up unneeded code when setting ports format
* alsa: handle the release-requested signal
* Revert \"policy-node: Remove direction check\"
* lib: don\'t read hidden files from the config directory
* policy-node: wait for nodes when we become unlinked
* log: support strings as level selectors in WIREPLUMBER_DEBUG
* lib: correct documentation for wp_iterator_fold/foreach
* lib: fix some incorrect docs for signals
* Fix some typos
* m-reserve-device: replace the hash table key on new insert
* ci: use FDO_CI_CONCURRENT if available to control the job count
* policy-node: Remove direction check
* libcamera: use the new manager object for monitoring
* release 0.4.5
* policy-node: don\'t clear peer_id when removing a link that was not for that peer
* policy-node: improve debug messages in findUndefinedTarget()
* policy-node: fix small issues in last patch (last comment in !253)
* policy-node: improve target device selection logic
* wp: invalidate WpGlobal id when removed from registry
* policy-node: check target exists before checking if an item is linked to it
* policy-node: grab si.id once in createLink() and reuse it
* policy-node: add check to not relink more than 5 times if link with peer fails
* policy-node: lookup the proper peer link when handling linkable
* systemd: document the service files for split mode
* policy-node: make sure \'taget.node\' property has a valid Id before waiting
* default-routes.lua: add missing break in best route selection logic
* scripts: escape semicolon when serializing and parsing array
* ci: add a shellcheck job
* wp-uninstalled: fix a few shellcheck complaints
* policy-{node,endpoint-device}: do not hold reference to si_link in closure
* policy-endpoint-client.lua: refactor based on policy-node.lua
* policy-endpoint-device.lua: refactor based on policy-node.lua
* m-si-audio-endpoint: use an internal audio adapter session item
* m-si-audio-adapter: add no-format configuration property
* m-si-audio-endpoint: do not use virtual media class for null sink nodes
* m-si-audio-adapter: remove unused audio utilities
* file-monitor-api: allow watching files too, not just directories
* policy-node: enforce the direction of the target when linking by node name
* wp-factory: enumerate pw_factory objects
* si-audio-adapter: make sure formats is valid before iterating
* policy-node: don\'t rescan in the timeout callback if the si was already destroyed
* policy-node: don\'t hold a reference to the session item in the timeout callback
* si-standard-link: fix crash after returning a link error
* release 0.4.4
* meson: add support for compiling module-logind with elogind
* policy-node: when node.target is specified, wait a bit for the target to be available
* policy-node: avoid searching for existing links if there is no reason
* policy-node: improve debug messages
* wplua: handle re-entrancy in _wplua_closure_marshal
* restore-stream.lua: do not remove target.node manually
* wp-uninstalled.sh: print the build directory to avoid confusion
* Makefile: run valgrind with better arguments & environment
* Makefile: use the build dir found by wp-uninstalled to run wireplumber from
* meson: replace deprecated dep.get_pkgconfig_variable() with dep.get_variable()
* meson: bump requirement to 0.56 to use meson.project_{source,build}_root()
* wp-uninstalled: error with usage information if no command is given
* wp-uninstalled: exit with status code 1, not -1
* wp-uninstalled: try to find the build directory
* wp-uninstalled: build this script with the meson dirs filled in
* wp-uninstalled: rename SCRIPT_DIR to SOURCEDIR
* meson: give the wireplumber binary a variable name
* wp: implement topics in SPA log interface
* object-manager: downgrade proxy activation failure message
* si-audio-adapter: skip reconfiguring if the same mode & format are requested
* si-standard-link: fix aux channels links
* si-standard-link: do not crash if an output port has no input port to link to
* si-standard-link: refactor linking logic to correctly link unpositioned nodes
* wp: support loading optional modules
* lua/api: fix impl_module_new arg parse
* si-audio-adapter: parse the rate optionally
* policy-node: accept TRUE as a valid boolean property value
* si-audio-adapter: ensure the node is suspended before changing PortConfig
* policy-node: implement encoded audio passthrough
* spa-pod: accept NULL object/struct/pod in a property field
* lua/api: add bindings for client:send_error()
* lua/pod: add bindings for fixate() and filter()
* spa-pod: add _filter() method
* client: add _send_error() method
* si-audio-adapter: find the device format early and store format-specific flags
* spa-pod: add _fixate() method
* default-routes: switch to the route when availability changed
* policy-node: add support for passive links
* modules: fix default audio format segfault
* systemd: alias to pipewire-session-manager.service
* ci: attempt an update of the ubuntu 20.04 image to fix SSL certificate issues
* release 0.4.3
* policy-node: do not try to link monitors in no-dsp mode, as they do not exist
* policy-node: cleanup target.node metadata when the default sink changes
* policy-endpoint-client: decrease log message verbosity
* policy: refactor/improve policy-node & session items to fix linking to monitors
* Revert \"wp: fix spa_log_methods version\"
* scripts: add libcamera monitor
* implement route-settings metadata and notification volume
* restore-stream: don\'t include the final : in the key name
* restore-stream: stop when we find the first suitable key
* m-default-nodes: safeguard timeout callback with g_cclosure_new_object
* m-default-nodes: lift restrictions on media.class for audio nodes
* lib: node: add gobject properties for state & {n,max}-{input,output}-ports
* metadata: fix properties
* default-routes: save and restore iec958Codecs
* wp: fix spa_log_methods version
* wp: fix pw_log_set usage
* default-access: grant full permissions to flatpak \"Manager\" apps
* m-si-audio-adapter: add \'disable.dsp\' configuration property
* m-si-standard-link: refactor and add support for no DSP mode
* si-adapter: call format task if port param-info is triggered in non DSP mode
* si-adapter: use F32P default format if mode is NULL
* config: bluez: update to match current bluez5 spa module
* object-manager: guard self in the idle callback using g_cclosure_new_object
* main: fail to start with a warning if media-session is also running
* modules: implement logind module and integrate with bluez monitor
* m-portal-permissionstore: try to reconnect on idle if DBus connection is closed
* scripts: handle dbus service restarts if reserve device is enabled
* m-device-reservation: try to reconnect on idle if DBus connection is closed
* si-audio-adapter: use INPUT direction to configure virtual sources
* systemd: add GIO_USE_VFS=local environment variable
* main: print the type of signal that stopped us
* spa-pod: add support for custom Id properties
* si-audio-endpoint: don\'t build DSP format in _set_ports_format
* si-audio-adapter: don\'t build DSP format in _set_ports_format
* alsa-monitor: add check for nill monitor
* metadata: use pw_impl_metadata for WpImplMetadata
* lib/wp/device: demote missing SPA warning to message
* v4l: add basic check for nil monitor
* bluez: add basic check for nil monitor
* lua/api: fix object constructors to fail gracefully
* meson: Build tests conditionally
* policy-node: schedule pending rescan if old link is not active
* policy-node: don\'t try to link to the same link-group
* policy-node: re-evaluate all nodes when changed
* 50-alsa-config.lua: Add missing commas
* release 0.4.2
* docs: lua proxies: add since markers for new methods
* docs: impl-module: add since markers and improve the Lua doc appearence
* remove wpipc
* tests: file-monitor: also remove the \'foo\' file at the end of the test
* tests: state: remove the \"escaped\" state file at the end of the test
* tests: use .local/state instead of .local/.state for the state dir
* systemd: remove AssertPathExists from the templated units
* meson: install configuration in $prefix/share
* wp: make wp_get_xdg_state_dir() private
* wp: make the config file lookup methods more generic
* doc: Add WpImplModule docs for the C and Lua API
* m-lua-scripting: Add WpImplModule bindings
* build: fix volatile compatible-pointer-types warnings
* properties: adjust documentation for the recent WpPropertiesItem changes
* wp: Add a WpImplModule for loading modules in WirePlumber context
* build: Allow to specify which system lua to use
* src: scripts: add alsa-mini.lua monitor
* m-lua-scripting: add GLib access Lua API
* modules: add new API module to monitor files
* dump_table: Sort keys before printing
* Fix not-equals verb having the wrong number of arguments in Lua API
* wp: refactor and rename wp_iter_conf_files() to use WpIterator
* wp: polish documentation and add annotations for the config-related functions
* lib: s/G_GNUC_DEPRECATED/G_DEPRECATED/
* lib: explicitly ignore the return value of g_strlcpy() to silence coverity
* tests: skip test if specific spa lib is not installed
* tests: common: add API to check if spa lib is installed
* lib: deprecate the functions to fetch the config directory
* lib: add functions to search in configuration/data directories
* lib: always return the full path from wp_get_config/data_dir
* lib: add a function to return the XDG_CONFIG_DIR
* main: assemble the full config file name and pass that to pipewire
* doc: fix documentation for passing a config file
* modules: fix g_file_test for regular files
* properties: use a boxed WpPropertiesItem type when iterating
* meson.build: adds summary() about Lua implementation used
* state: store our WpState files in $XDG_STATE_HOME/wireplumber
* lib: add a function to get the xdg state dir
* meson.build: let meson handle the prefix + bindir concatination
* meson: adds summary() to auto features
* docs: document the lua ObjectManager / Interest / Constraint APIs
* lua: add not-equals to the possible constraint verbs
* session-item: fix reference leak when getting properties
* tests: create wpipc tests sockets also in /tmp with a random name
* tests: run with PIPEWIRE_RUNTIME_DIR=/tmp
* object-manager: remove old global when exposing new global with same id
* global-proxy: add extra checks to make sure binding is successful
* m-lua-scripting: unref value pod after adding it to control
* lua: add Port.get_direction() + documentation for it
* docs: mention the new matrix room in the community resources
* docs: complete lua Node api docs and fix some ref links
* lua: fail if an optional Interest is not none, nil, Interest or table
* lua: complete the WpNode bindings
* wplua: expose functions to convert enums to strings for lua and vice versa
* state: escape invalid key file characters
* tests: endpoint: fix coverity \'side effect in assertion\' error
* tests: set PIPEWIRE_RUNTIME_DIR and stop using XDG_RUNTIME_DIR
* release 0.4.1
* ci: enable testing of wpipc
* tests: examples: print error if buffer is not valid in wpipc-client
* tests: wpipc: check if new connection to new receiver is valid after losing connection
* wpipc: sender: disconnect and clear all pending tasks if connection was lost
* wpipc: receiver: also emit sender disconnected when failed to read
* wpipc: protocol: make sure buffer is initialized to 0 before building reply/request
* wpipc: change epoll thread func type name to be more consistent
* tests: wpipc: use GCond instead of while loop to wait for events
* tests: wpipc: fix typo in sender-receiver unit test
* ci: add ubuntu 20.04 builds and test some more option combinations
* docs: relax doxygen version requirement
* meson: bump lua dependency to 5.4 and update the subproject
* wplua: remove handling of LUA_ERRGCMM, which is removed in lua 5.4
* m-reserve-device: use a weak ref instead of raw pointer for transition
* tests: transition: make sure transition is still valid after advancing
* tests: fix coverity scan side effect in assertion issues
* wp: log warning if PIPEWIRE_DEBUG env variable could not be set
* m-default-nodes: properly parse args
* m-lua-scripting: check return values of lua_getstack and lua_getinfo
* m-mixer-api: only add \'mute\' if correctly parsed
* m-lua-scripting: make sure pod is successfully parsed
* m-lua-scripting: make sure lua type is valid
* m-lua-scripting: fix conversion from SPA_TYPE_Bytes to LUA_TNUMBER
* m-si-standard-link: make link_all a parameter
* access-portal: fix granting access to camera device nodes
* lib: Use #define instead of \'static const\' for constants
* scripts: Add an intended-roles policy script
* tests: add pipewire env variables when running tests, tidy up common_env
* tests/metadata: also fix failing metadata unit test
* si-audio-adapter/endpoint: do not sync() in loops, use ports-changed instead
* s/metadatas/metadata/g
* metadata: filter for the \"default\" metadata object in all places where we use it
* wp-uninstalled.sh: don\'t shift after -b, there\'s a generic shift below
* meson: avoid source_root(), as it fails when wireplumber is a subproject
* lib: fix some issues found by coverity
* README: add coverity badge
* coverity: use gzip instead of lzma to compress the coverity data
* coverity: use a regexp that nukes all the glib enumerator deprecation macros
* ci: disable more things from the pipewire build
* ci: add support for coverity, based on pipewire\'s gitlab-ci.yml
* meson: bump glib requirement to 2.62 as we are already using 2.62 API
* meson: add glib version required/allowed checks
* release 0.4.0
* create-item: handle all kinds of Audio/Video & Stream nodes
* si-standard-link: treat endpoints as devices when linking stream<->endpoint
* config: document the duck.level policy property
* scripts: change debug level for some messages
* lua: improve the object:activate() callback to report errors
* wplua: add a wplua_checkclosure() helper function
* Revert \"tests: enable G_SLICE=debug-blocks in all tests\"
* meson: add \'--keep-debuginfo=yes\' to the valgrind command line
* pipewire-object: change params-changed signal to take a string param name
* tests: enable G_SLICE=debug-blocks in all tests
* meson: use environment() objects to define env for tests
* meson: add a test setup to run tests under valgrind
* daemon/wpexec: standardize exit codes based on sysexits.h
* daemon: replace the exit_message with direct message printouts
* wpexec: force the log level to be at least 1 and use fprintf() for local errors
* daemon: exit with 0 both in case of a signal and in case of disconnection
* tests: si-standard-link: remove unneeded core syncs
* tests: common: make sure no events are pending before destroying core
* lib: add struct paddings to be able to maintain ABI compatibility
* docs: set breathe_default_members to get struct members to show up in the docs
* docs: remove :project: annotations for breathe
* pw-object-mixin: ignore set param on already destroyed objects
* proxy: destroy pw_proxy if bind_error is called
* restore-stream: implement storing/restoring of target.node metadata
* lua: implement metadata:set()
* lua: fix refcounting of metadata iterator
* wplua: fix memleak when converting GVariant to Lua
* m-default-nodes-api: free default nodes when disabling plugin
* m-default-nodes: free default nodes when disabling plugin
* global-proxy: fix leak when getting global properties
* spa-pod: check if pod is valid before _parser_can_collect
* lua: remove hack around WpObjectInterest since we can _ref() it now
* object-interest: remove unused _copy() method
* default-routes: use a constraint to check if device.name is present
* default-routes: fix storing dev_info
* scripts: initial restore-stream implementation
* object-manager: small doc fix
* object-manager: support declaring interest on all properties of globals
* object-interest: enrich _matches_full() to be able to check all constraints
* si-adapter: handle autoconnect property
* si-adapter: handle dont-remix streams
* tests: store temporary WpState files in the build directory
* state: remove support for groups and propagate save errors
* state: don\'t stat() before creating the dir or removing the state file
* policy: don\'t crash if some node properties are not set
* pipewire-object: fix memory leaks when getting properties
* m-default-profiles: finalize parent when plugin is destroyed
* si-adapter: take ownership of format argument
* endpoint: free media_class when disposing WpImplEndpoint
* pipewire-object: take ownership of param argument
* monitors: sanitize device names like media-session does
* object: advance pending transitions if activation fails
* modules: remove the old m-default-routes
* m-device-activation: don\'t set device routes
* default-routes: re-implement the default-routes module in lua
* docs: Write gtk-doc comments for constant variables
* docs: include wp.h in gir sources
* docs: Add brief descriptions to all functions
* policy: destroy node if defined target was not found and reconnect is false
* global-proxy: make sure registry is valid before requesting destroy
* lua: don\'t crash if an iterator is NULL
* lua: allow the Log api to debug boxed objects (useful for pods)
* lua: fix PipewireObject api: s/set_params/set_param/ and cleanup
* lua: add WpState bindings
* object: use weakref when advancing current transition
* object: use destroy notify to keep self alive while advancing transitions
* docs: make progress on lua api documentation
* policy-{node,endpoint-client}: do not crash if media.class is nil
* meson: add reference to bugfix
* config: disable role-based endpoints in the default configuration
* tests: si-audio-adapter: test is.device property
* m-si-standard-link: fix number of links check
* tests: si-standard-link: fix racy test
* meson: force the gir target to depend on wp-gtkdoc.h
* docs: tidy up most documents and try to update the information in them
* docs: use the default sidebar color to make the version easier to read
* docs: show version number on the sidebar
* release 0.3.96
* Makefile: use wp-uninstalled.sh to implement the run target
* gitignore: remove obsolete entry
* editorconfig: remove obsolete entry and add python script rules
* LICENSE: update copyright years
* docs: convert NEWS to rst and add it in the generated docs
* docs: update installing-wireplumber page
* ci: bump distribution tag date to the actual branch merge day
* gir: fix generate_gir()
* docs: convert lua api docs to pure rst
* docs: fix gobject-introspection data generation
* ci: update fdo template, fedora image and dependencies for docs
* docs: improve the home page and toc; use README.rst as a base; add badges
* docs: fix C API documentation to work nicely with doxygen & sphinx
* docs: meson: rebuild docs when Doxyfile.in changes
* docs: setup sphinx to use the graphviz extension
* docs: improve the visual appearence of the generated html and cleanup
* docs: reorganize .rst files and add tables of contents for the APIs
* meson: refactor docs + gi build system
* docs: build gobject introspection from xml files generated by Doxygen
* ci: replace hotdoc with Doxygen, Sphinx and Breathe tools
* docs: Add Lua API documentation
* docs: api: Replace hotdoc specific commands with Doxygen specific commands
* docs: Replace hotdoc with Doxygen & Sphinx to generate documentation
* pipewire-object-mixin: fix memleak in GList
* policy-endpoint-device: wait until previous links are activated
* m-si-standard-link: remove unused manage.lifetime configuration property
* tests: enable si-standard-link test and port it to new API
* wplua: ref closure before invalidating it
* wpctl: fix iterator cleanup
* endpoint: remove wp_endpoint_create_link()
* scripts: remove static-sessions
* wp: remove WpSession and WpEndpointLink
* policy: don\'t link endpoints on startup
* m-default-nodes: check if node is valid before returning bound id
* policy: reevaluate all linkables if one linkable was removed
* m-default-routes: log error message when failed to get current routes
* m-default-profile: log error message when failed to get current profile
* m-mixer-api: make sure the enum param iterator is valid
* pipewire-object-mixin: make sure enum params task is only triggered once
* modules: steal the format_task before returning it
* systemd: Add conflicts with pipewire-media-session
* proxy: don\'t accept NULL pw_proxy in set_pw_proxy API
* m-device-activation: use sync API to enum available profiles
* m-default-routes: use sync API to enum available routes
* m-default-profile: use sync API to enum available profiles
* global-proxy: delay object creation until bound feature is requested
* alsa-monitor: activate BOUND feature in JACK device
* tests: proxy: add a test for enum_params errors
* proxy: relax proxy error warning messages
* pw-object-mixin: watch for proxy errors during enum_params
* proxy: add a \"bind\" watch, to watch for proxy errors while binding/exporting
* proxy: add error signal
* policy: fix removing of item links when linkable is removed
* tests: spa-pod: fix int64 constant to work on all architectures
* global-proxy: destroy the global when proxy is destroyed
* global-proxy: inherit from WpProxy when declaring class
* spa-pod: respect the SPA size for long and int APIs
* si-standard-link: configure the format in WpSiAdapters before linking
* modules: implement WpSiAdapter in si-audio-adapter and si-audio-endpoint
* si-interfaces: add WpSiAdapter interface to set and get session item fortmat
* session-item: add _get_property API
* si-audio-adapter: remove unneeded \'preferred.n.channels\' property
* si-standard-link: make sure create_links creates at least 1 link
* modules: remove role and priority properties from si-audio-adapter and si-node
* si-interfaces: rename WpSiPortInfo to WpSiLinkable
* scripts: cleaned and improved policy scripts
* create-item.lua: always enable monitor ports by default
* modules: remove \'monitor\' port context from si-audio-adapter and si-node
* release 0.3.95
* meson: depend on pipewire 0.3.26
* config: bluez: update to match media-session\'s bluez-monitor.conf
* lua: rename Plugin() to Plugin.find()
* session-item: remove undefined API
* wp: remove WpSessionBin
* wp: rename debug.{h,c} to log.{h,c}
* config: disable ipc module by default and move it to the main instance
* wpipc: place sockets in the same runtime directory as pipewire
* m-ipc: cleanup server using g_clear_pointer() for consistency and safety
* wpipc: remove socket files after shutdown of the server
* meson: generate and install pkg-config file for wpipc
* meson: find threads_dep early and also use it in the wpipc-client
* wpipc: use proper api & so versions
* meson: replace join_paths() with operator /
* meson: remove audiofade pipewire branch check
* meson: make wpipc optional and disabled by default
* policy-node: accept node names or paths in a stream\'s node.target property
* policy-endpoint-client-links.lua: consider \'suspend.playback\' metadata
* modules: add ipc module
* lib: add wpipc library
* config: unify config and config-split
* systemd: add templated systemd unit files
* policy-endpoint: implement volume ducking
* m-mixer-api: track monitorVolumes and allow modifying them
* access: add a more generic \"default\" access policy script
* config: add an example of split-instance configuration
* Add a wp-uninstalled.sh script for easily running programs uninstalled
* lua: remove the ability to specify spa_libs in the lua config
* daemon: init export core in the daemon and share it with modules
* lua: change the \"wireplumber.interactive\" property to \"wireplumber.daemon\"
* daemon: Use a pipewire-style config file to load initial configuration
* core: use log.level from the pw_context
* log: factor out the log level configuration into wp_log_level_set()
* audio-endpoint: configure adapter for null sink with monitor.channel-volumes
* impl-node: implement WpPipewireObject
* device: debug and enhance spa device event handling
* config: policy: improve the endpoints & roles example config
* policy-endpoint-client: remove handling of move & follow and endpoint priorities
* meson: bump version to 0.3.70
* m-mixer-api: allow calling the action signals even when the plugin is not enabled
* m-default-nodes-api: remove reduntant call to g_clear_object
* wplua: store closures only with a weak reference
* examples: add example script to get the default sink\'s volume
* scripts: add policy for links between clients and endpoints
* lua: add WpObject get_active/supported_features() bindings
* lua: add g_get_real/monotonic_time() bindings
* si-audio-endpoint: give better descriptions to endpoints and their null sinks
* static-endpoints: avoid capturing session item reference in the activate closure
* policy: export endpoints, do not export endpoint links
* wpctl: handle endpoints nicely and enable volume controls on them
* tools: split wireplumber script execution mode to a separate wpexec tool
* tools: move under the \'src\' directory
* src: scripts: rename policy-endpoint.lua to policy-endpoint-client.lua
* m-audio-endpoint: remove target property
* static-endpoints.lua: don\'t export endpoints, only activate them
* m-mixer-api: add configurable support for the cubic volume scale
* wpctl: use mixer & default-nodes API modules
* m-mixer-api: also add channel-independent volume for ease of use
* wpctl: remove obsolete default node/endpoint key macros
* m-mixer-api: fix getting volume info from nodes that don\'t have volumeBase & step
* lua: add a Debug.dump_table() utility function
* m-default-nodes-api: load all information before declaring the plugin as \"enabled\"
* lua: add a Core.require_api() utility function
* modules: add module-mixer-api
* src: config: do not create endpoints by default
* src: scripts: add policy-endpoint.lua script
* policy-node.lua: do not handle items with media role if endpoints exist
* policy-node.lua: clean up findTarget function
* src: scripts: add static-endpoints.lua script
* modules: remove unneeded si-audio-convert module
* src: config: rename session-item support to default-policy
* create-item.lua: only create items for client and device nodes
* policy-item.lua: only handle si-audio-adapter and si-nodes links
* src: scripts: remove unneeded policy-endpoint.lua
* m-lua-scripting: add object manager get_n_objects API
* si-audio-endpoint: deactivate node when disabling active feature
* m-si-audio-endpoint: fix port configuration and target linking
* m-si-audio-endpoint: make target property optional
* tests: si-standard-link: sync core before finishing
* si-standard-link: call parent class finalize once finalized
* m-si-standard-link: properly set in item port context when configuring
* policy-node.lua: fix param name typo when finding target
* policy-node: properly remove links between apps and capture devices
* endpoint: remove useless pw_proxy_destroyed handlers
* registry: fix issues with dangling WpGlobal objects causing assertion failures
* modules: use dots instead of dashes for session item properties
* wpctl: status: print nodes, ports, links grouped more nicely
* registry: fix odd assertion failures that occured from time to time
* policy-node.lua: support config.move and config.follow
* m-si-audio-adapter: abort activation if node feature ports is no longer enabled
* m-si-standard-link: make sure in/out items are valid before activating
* wpctl: fix setting default nodes
* m-default-nodes: restore configured values on the metadata at startup
* policy-node: use default-nodes-api plugin
* modules: add new module-default-nodes-api
* m-default-nodes: move common code to a new header
* m-default-nodes: add properties to control storage method and interval
* modules: rename default-metadata to default-nodes and enable it always in the config
* m-default-metadata: remove default endpoints, follow upstream logic
* policy-node.lua: fix type mismatch when comparing session item Ids
* lua: s/Feature.Object.ALL/Features.ALL/
* bluez config: update based on the latest media-session config
* m-default-metadata: add support for default audio nodes
* wpctl: list nodes and allow setting default nodes
* modules: remove endpoint impl on si-node, si-audio-convert and si-audio-adapter
* tests: si-standard-link: use new si-audio-endpoint
* modules: add si-audio-endpoint session item
* src: scripts: add policy-node.lua to link port info session items
* src: config: rename endpoint-support to session-item-support
* modules: remove si-monitor module
* src: scripts: add create-item.lua and remove create-endpoint.lua
* m-si-standard-link: set out-item-id and in-item-id properties
* session-item: add id property
* m-si-audio-adapter: ensure ports are available before enabling active
* m-lua-scripting: add get_associated_proxy session item Lua API
* si-interfaces: make WpSiLink work with WpSiPortInfo instead of WpSiEndpoint
* si-interfaces: rename WpSiEndpointAcquisition to WpSiAcquisition
* m-si-standard-link: use a weak reference for in and out endpoints
* m-si-standard-link: fix in-endpoint check when configuring
* wplua: sort properties after transfering them from lua
* properties: add wp_properties_sort()
* monitor-alsa: add api.alsa.card.
* properties on nodes
* bluez5: autoconnect bluetooth stream nodes
* object: deactivate only the features that were previously active
* bluez5: use api.bluez5.connection-info
* m-si-convert: rename to si-audio-convert
* m-si-adapter: rename to si-audio-adapter
* tests: session-item: add registration test
* object-interest: add support for session item properties
* session-item: add _register and _remove API
* session-item: refactor and inherit from WpObject
* session-bin: remove unused wp_session_bin_new API
* lib: make WpImplEndpoint and WpImplEndpointLink public
* m-si-adapter: rename algorithms to audio-utils
* m-si-monitor-endpoint: rename to si-monitor
* m-si-simple-node-endpoint: rename to si-node
* lib: remove WpEndpointStream API
* wp_init: set PIPEWIRE_DEBUG
* spa-device: do not assert if the activation transition fails
* m-default-routes: return if default routes for a device are not found
* m-default-routes: relax some warning logs to debug
* m-lua-script: add object_deactivate API
* m-lua-script: add closure for object_activate API
* object: add wp_object_activate_closure API
* ci: use \'disabled\' instead of \'false\' when configuring pipewire
* m-lua-scripting: add WpSessionBin add API
* lib: remove WpConfiguration
* lib: documentation fixes
* lua/api: add Link() constructor
* module-default-routes: store/restore route properties
* module-device-activation: apply default route on each new device
* modules: add module-default-routes for storing/restoring routes
* lua/api: default Constraint type always to pw-global
* object-interest: remove type checks
* lua/api: simplify & improve session_item_configure
* lua/api: make the type optional when declaring Interest as a function argument
* lua/api: improve getting optional Interest arguments
* Sat Oct 16 2021 Marcus Rueckert
- disable elogind
* Tue Mar 02 2021 alarrosaAATTsuse.com- Update to version 0.3.60+git.20210301.6c2bfea:
* scripts: policy-endpoints: add move and follow options
* m-lua-scripting: add get_n_streams endpoint API
* m-lua-scripting: add lookup session API
* examples: add bt-profile-switch example
* lua/pod: don\'t crash on parsing objects with unknown keys, just ignore them
* Fri Feb 26 2021 alarrosaAATTsuse.com- Update to version 0.3.60+git.20210225.9f50117:
* lib: remove module.{c,h}
* meson: fix glib version requirement checks
* systemd: use the older version of the systemd pkgconfig variables
* systemd: remove RuntimeDirectory from the system service
* daemon: add systemd unit files
* m-lua-scripting/pod: retrieve Ids in Array & Choice as strings, if possible
* m-lua-scripting/pod: s/id_type/object_id/ as commented on !125
* m-lua-scripting: add support for choices when creating object pods
* m-lua-scripting: refactor array and choice pod constructors to accept Id names
* m-lua-scripting: allow constructing pod Ids with the Id name
* m-lua-scripting: set id_type field when parsing pod objects
* m-lua-scripting: set pod_type and value_type fieds when parsing non-primitive pods
* m-lua-scripting: start indices from 1 when parsing pods
* test-endpoint: fix failure with pipewire master
* config: split flatpak access configuration
* scripts/access: update access scripts to call update_permissions() cleanly
* lua/api: fix client update_permissions()
* examples: interactive.lua: add a shebang and update running instructions
* lua: enable loading scripts with a shebang
* lua/api: log using a debug category unique for the calling script file
* lua/api: ensure the function name in the debug output is non-null
* monitor-alsa: fix node description on strange embedded devices
* suspend-node: honor \"session.suspend-timeout-seconds\"
* monitors: sanitize node descriptions too
* wplua: table_to_properties: use luaL_tolstring to do string conversions
* config: bluez-monitor: add hfp_hf in the supported roles comment
* m-lua-scripting: add WpPipewireObject api
* config: move loading of all audio support modules in 90-enable-audio-all
* config: split configuration for endpoints support in config.lua.d
* monitors: drop the monitor- prefix from the filenames and s/bluez5/bluez/
* config: make the monitor properties & rules available in global tables
* config: load reserve-device only if alsa.reserve is true
* monitor-bluez: fix source priority assignment
* monitors: sanitize node names to match media-session\'s behavior
* wplua: gvariant_to_lua: convert dictionary keys to integers if possible
* monitor-alsa: sync logic, properties and configuration with media-session
* wplua: improve GVariant array conversion
* wplua: improve gvariant <-> lua conversion functions
* wplua: remove VARDICT handling in gvariant->lua conversion
* config: mimick media-session\'s v4l2-monitor.conf
* monitor-v4l2: copy properties and rules logic from media-session
* config: immitate media-session\'s bluez-monitor.conf
* monitor-bluez: copy all properties and the rules functionality from media-session
* lua/config: load split config files in alphanumeric order
* tests/lua: test monitor configuration rules code
* lua/api: add wp_object_interest_matches() binding
* object-interest: allow matching against WpProperties objects
* scripts: add portal access script
* scripts: add flatpak access lua script
* wplua: handle more GVariant cases
* m-lua-scripting: add WpClient LUA api
* Revert \"meson: relax meson version dependency when building with system lua\"
* meson: relax meson version dependency when building with system lua
* lua/pod: optimize push_primitive_values()
* tests/wplua: set WIREPLUMBER_CONFIG_DIR to an invalid directory
* lua/pod: simplify spa_pod_object_new()
* lua/pod: optimize lookups in primitive_lua_type and fix some mistakes
* lua/pod: lookup the object type and values table only once when constructing objects
* lua/pod: convert Id object fields to strings, if possible
* rename all foo_iterate APIs to foo_new_iterator
* m-lua-scripting/pod: push pod constructors using luaL_newlib instead of manually
* modules: remove m-node-suspension
* m-lua-scripting/api: fix om:lookup() to return nil when no object was found
* scripts: add suspend-node.lua to replace m-node-suspension
* wplua: fix enum <-> lua conversion
* create-endpoint.lua: fix some issues
* create-endpoint.lua: fix indentation
* node: change send_command() to take a string
* tests: wplua: add pod.lua script to validate pod API
* tests: wplua: add a script tester to validate lua scripts
* m-lua-scripting: add WpSpaPod api
* wplua: fix vtables lookup in boxed __index function
* examples: add an example interactive lua script
* m-lua-scripting/api: add wp_object_manager_iterate_filtered()
* proxy: add a method to query the interface type
* daemon: add a mode to execute lua scripts from the command line
* m-lua-scripting/api: add WpCore bindings
* m-lua-scripting/api: fix access to core in session_item_new()
* meson: bump version
* meson: remove C++ support, there\'s no C++ code anymore
* monitor-alsa: simplify reserve-device connection logic
* monitor-alsa: receive script configuration from config.lua
* scripts: add static-sessions.lua
* m-lua-scripting/api: add WpImplSession bindings
* m-lua-scripting: pass component arguments to scripts
* wplua: pass SANDBOX_CONFIG as a script argument
* wplua: allow exchanging arguments and results with scripts
* m-lua-scripting: use wplua_table_to_asv() instead of custom function
* wplua: add GVariant dictionary conversion functions
* wptoml: remove, it\'s not used anymore
* daemon: refactor
* m-lua-scripting: fixes
* wp: add wp_get_data_dir()
* src: move scripts to their own directory, install in $prefix/share/
* object-interest: add a NOT_EQUALS verb
* m-lua-scripting: allow queuing-in scripts without the plugin being activated
* m-lua-scripting: refactor as a WpComponentLoader
* wplua: allow loading relative paths from wplua_load_path()
* wplua: add g_autoptr support to lua_State
* wplua: add flags to modify the sandbox behavior
* wp: export functions to get the module & config dirs
* lib: introduce WpComponentLoader and remove WpModule
* plugin: inherit from WpObject
* modules: remove modules that are obsoleted by the lua scripts
* modules: actually delete module-dbus-reservation.c
* monitor-alsa: add device reservation logic
* spa-device: add an \"object-removed\" signal
* lua: add wp_plugin_find binding
* modules: delete the old dbus-reservation module
* modules: implement a new reserve-device module
* plugin: add a method to find plugins easily
* conf: create-endpoint.lua: make sure endpoints always have a valid name
* conf: create-endpoint.lua: use node id as key in session_items table
* meson: add \'system-lua\' project option to toggle the bundled lua
* conf: disable legacy endpoint creation module and replace it with lua script
* m-lua-scripting: add session item lua API
* session-item: add export API with closure
* session-item: add activate API with closure
* docs: update daemon/running.md
* m-lua-scripting: fix reference count in object manager\'s lookup API
* object-interest: add _ref and _unref APIs
* config: enable lua scripts, disable legacy modules
* lua: fix some nasty memory leaks
* meson: require pipewire 0.3.20
* spa-device: handle DeviceEvent and configure node props
* m-lua-scripting: do stop the lua engine on deactivate()
* main: drop WpConfiguration reference early
* plugin: debug activation & deactivation
* wplua: object: unset GValues used when calling action signals
* config: add lua-based device monitors
* m-lua-scripting: add bindings required for device monitors
* impl-node: derive from WpProxy
* spa-device: derive from WpProxy and manage child objects internally
* m-default-metadata: handle default nodes
* config: rename desktop profile to desktop-ep
* spa-pod: add the ability to specify Id properties as strings
* spa-type: refactor
* m-lua-scripting: handle default endpoints from the metadata
* m-config-policy: handle default endpoints from the metadata
* modules: replace session-settings with default-metadata
* wpctl: implement set-default using the metadata API
* meson: fix lua dependency on Arch Linux
* metadata: refactor API to quickly find a specific value
* state: use GKeyFile API to keep state in disk
* wp: remove initialization of wireplumber types
* session: remove default-endpoint-changed signal
* spa-type: fix param profile\'s last Id
* config: implement the functionality of config-policy in Lua
* m-lua-scripting: expose session, endpoint, endpoint-link APIs
* wplua: expose table to/from properties conversion functions
* object, pw-obj-mixin: fix warnings
* config: disable audio sink \"streams\"; they fail on latest pipewire
* Fix compiler warnings that appear with the warning flags enabled
* meson: enable compiler flags for warnings, if supported
* modules: implement module-lua-scripting
* wplua: use only the basename of the files for debug/error messages
* wplua: use the error handler also when loading chunks
* wplua: implement __tostring for GObject
* wplua: use the registry to store vtables & closures
* wplua: remove TypeClass, push constructors as ClassName_new
* wplua: allow checking for a specific GType with isobject/isboxed
* configuration: convert file paths from relative to absolute if necessary
* configuration: implement grouping files in subdirectories
* wplua: add proper GError domain & error codes
* wplua: implement sandboxing of scripts
* wplua: convert WpProperties to table and vice versa
* wplua: new simple engine to integrate GObject with Lua
* meson: add dependency on lua 5.3
* tools: port wpctl to the new APIs
* tests: endpoint: re-enable the params unit test
* lib: delete WpProps
* pw-object-mixin: refactor, implement param caching and features for impl objects
* iterator: add version field in the methods struct
* meson: bump project & API versions
* spa-pod: make the wrap functions public, remove private.h and sort out the rest
* private: further cleanup of private.h, sort out header includes
* session-item: move wp_session_item_set_parent() to the public header
* defs: add a new WP_PRIVATE_API function annotation
* iterator: make private stuff public, cleanup private.h further
* lib: move WpImplEndpoint
* header parts to private/impl-endpoint.h
* m-metadata: add callback for wp_object_activate()
* src: port daemon to the new APIs
* modules: port modules and their tests to the new proxy APIs
* object-manager: recursively store requested features on children
* impl-endpoint{,-stream}: disable FEATURE_PROPS temporarily
* tests: fix library unit tests
* lib: refactor WpProxy
* lib: add new proxy-interfaces: interfaces for the refactored WpProxy class
* lib/private: move the registry & global APIs to a separate header
* lib: add new WpObject base class
* Wed Dec 30 2020 Bjørn Lie - Disable testrun for 32bit arches, upstream do not care for them, so we can not expect fixed tests any time soon.
* Fri Dec 18 2020 bjorn.lieAATTgmail.com- Update to version 0.3.0+37:
* m-endpoint-creation: remove undefined API
* m-endpoint-creation: remove unnused variable in Bluez5 endpoint creation
* m-device-activation: use profile from default-profile module if loaded
* modules: add module to store device profiles each time they change
* lib: add new WpState API to save and load data from files
* m-monitor: add use-acp flag
* modules: refactor dbus reservation
* plugin: add name property
* wpctl: add set-profile option
* transition: stop and return error if cancelled by the GCancellable
* Tue Oct 20 2020 dimstarAATTopensuse.org- Update to version 0.3.0+27:
* device: set parent type to GObject in WpSpaDevice structure
* Mon Oct 12 2020 dimstarAATTopensuse.org- Update to version 0.3.0+26:
* m-endpoint-creation: add bluez5 endpoint creation for bluetooth devices
* m-config-endpoint: refactor and rename to endpoint-creation
* modules: add bluez5 endpoint session item
* modules: add fake stream session item
* m-si-adapter: use the adapter\'s name as stream name
* m-si-adapter: set the configured flag when configuration was successful
* m-config-policy: set the stream name to the media role propery by default
* Fri Sep 11 2020 dimstarAATTopensuse.org- Update to version 0.3.0+19:
* Implement PW_TYPE_INTERFACE_Metadata
* metadata: fix more coding style issues
* metadata: improve implementation
* metadata: remove WP_METADATA_FEATURES_STANDARD and fix copyright years
* module-metadata: s/settings/plugin/
* modules: rename metadata module to just \'module-metadata\'
* tests: fix permissions check failure with latest pipewire
* tests: implement a WpMetadata unit test- Drop use-system-cpptoml.patch: fixed upstream.
* Mon Jul 20 2020 Antonio Larrosa - Initial version of wireplumber 0.3.0