0.17.4 / 2026-03-0X
    Bug fixes again.
    
    Bug fixes:
        remake session management works on fedora, it was broken because some OSC ports were wrongly considered as non local
        ray_control completion install was broken
        fix GUI freeze (infinite loop) if a port background is black in the theme


0.17.3 / 2026-02-21
    Little bug fixes release.

    Bug fixes:
        CV ports were considered as regular Audio ports until a patchbay refresh
        Some connection were missing in the graph after a pipewire quantum (buffer size) change
        ray_control bash completion moved to a more correct place (at install)

0.17.2 / 2025-12-29
    Mainly one bug fix, sometimes the patch could crash if a JACK port disappears when listing JACK ports. It has more chances to happen at session switch.

0.17.1 / 2025-11-09
    Important Bug Fixes release. The update is highly recommended because some connections may have been lost during session save with v0.17.0.

    Bug fixes:
        client jack_naming wrongly considered as True when not specified in xml file (very strong)
        broadcast broken, impossibility for clients to talk together, breaking automations between non-timeline-xt and non-mixer-xt (and maybe others)
        unkwown behavior if client_id is not specified in template
        possible crash when a port is renamed by its client
        add group without saved position could not update the scene size


0.17.0 / 2025-11-02
    Mainly a patchbay features release. There are important structural changes in the code, here are mentionned only the most important new features.

    Qt6 is now the default framework (instead of Qt5).

    New dependencies:
        python3-qtpy
        python3 JACK-Client

    RaySession itself:
        New protocol: Internal. Used by ray-jackpatch, ray-alsapatch and ray-sooperlooper.
            Avoid some UDP ports, some JACK clients, use less RAM.
            (in config: daemon/internal_mode can be FORCE_INTERNAL, FORCE_NSM or FOLLOW_PROTOCOL)
        Patchbay daemon now runs in the daemon process
            (in config: daemon/internal_patchbay can be 'true' or 'false')
        ray_control: auto-completion for bash
        Tool bar: tool bar is now responsive design, it can have many lines if too much widgets are shown
    
    Patchbay:
        Views: you can now use as much views as you want, switching them with Alt+Num
        Hide: Boxes are now hideable (a widget in the tool bar allows to set hidden boxes visible)
        Arrange: two scripts can be now arrange the graph, "follow the signal chain" or "two rows facing each other"
        Custom Names: Clients and ports are now renamable in the canvas,
            it can optionnally set this name as JACK metadata and auto-export custom names to JACK pretty names.
        Undo/Redo: all box move, wrap/unwrap, hide/restore, arrange, change view events can be undone/redone
        + Many many optimizations to prevent lagging when patchbay is consequent.


0.14.4 / 2024-11-11
    Bug fix release.

    Bug Fixes:
        Support pyliblo3 as well as pyliblo (Done by AdamWill)
        ray_control open_session_off fixed (very important for some scripts)
        execute chmod +w on session files after their copy from template (needed for NixOs)
        save_via_windows script is now POSIX compliant (Done by Dennis Braun)

    Improvments:
        add --osc-port argument to sooperloooper_nsm executable (Done by Jean-Emmanuel)


0.14.3 / 2023-12-02
    Bug fix release.

    Bug Fixes:
        Daemon crashed at session open with no clients (making Network Sessions not working well)
        Desktops Memory option was totally broken
        Daemon crashed if $LANG environment variable was not defined (thanks to Gaël de Chalendar)
    
    Templates:
        add Mixbus9 and Mixbus32C 8 and 9 templates (thanks to Erich Eickmeyer)
        remove Jack Mixer old LASH template (Ray-Hack) (Jack Mixer uses NSM for a long time now)
        rename Calf JACK Host template with a folder without spaces (adapt to debian policy)


0.14.2 / 2023-10-22
    Minor bug fix release, probably the last of the year.

    BugFix:
        Top left Favorites button was not working, template were listed, but nothing happened when clicking on it
        fix a possible ray-alsapatch crash
        some widgets were not locked in client properties dialog when it is launched for a template preview

    Change:
        client full rename now restarts the client or make it reload its project if it is already started

    Templates:
        add Ardour8 template


0.14.1 / 2023-09-23
    Important Bug Fix Release

    Major Fixes:
        Some client project files were not renamed at session duplicate (and certainly when creating a session from user template)
        ray-jackpatch and ray-alsapatch various problems that involve loss of connections
        "Optional-gui states" option was not working at all
        typo: replace 'identifiant' with 'identifier' in english version

    Minor fixes in patchbay (all theses bugs did already existed in 0.13.1)
        'navigation on borders' option state was not restored at startup
        Drag with middle click wrongly activate 'navigation on borders'
        Shift + Mouse wheel for horizontal scrolling was not working

0.14.0 / 2023-09-18
    This release is probably the last major release before 1.0.0 (others 0.14.X may exist).

    Packagers should set python3-pyalsa (>=1.2.4) as a dependency, else ALSA MIDI ports wont be displayed in the patchbay, and ALSA Connections client will not work.

    Long time users (before 0.9.0) may note that ray-proxy and related methods will be removed in 1.0.0, because RayHack pseudo-protocol does the same thing better, and I don't want to maintain this code part anymore.

    RaySession itself:
        New Features:
            RaySession has now a preferences dialog with tooltips.
            List factory templates also list templates for Ardour (and Mixbus) templates, it allows user to start directly Ardour with an ardour user session template.
            Start a template choosing its unique identifier (this identifier is also used by client to set its JACK group names), useful if you use many instances of the same client.
            Change client identifier, prefix mode or jack_naming method when the client is stopped, connections are updated.
            Start NSM client in a terminal, with a customizable global terminal command.

        Changes:
            "Gui states" option is now disabled by default, because it can be very confusing for NSM apps devs.
            Add new client status (lose) when the client is closed but its terminal is still running.
            Use xml.etree everywhere instead of qtpy.QtXml to read/write xml files, now attributes order is always the same at each save.
            Take systray icon from system if it exists

        Fixes:
            fix SESSION_NAME not replaced in advanced trashed client properties

    JACK Connections (ray-jackpatch):
        Has been fully rewritten to not use Qt anymore, so, it should be lighter. 
        At startup, it now disconnects ports if theses ports were present and not connected at last save

    ALSA Connections (ray-alsapatch):
        This NSM client has been added, it makes exactly the same thing than ray-jackpatch, but for ALSA MIDI ports.
        
    HoustonPatchbay:
        Add the possibility to show ALSA MIDI ports (not enabled by default).
        Port types view is now restored at startup if the ports type filter widget is visible.
        make Mixbus groups behave as Ardour ones
        Fix box layout (large or high) not restored with python >=3.10
        fix various crashes


0.13.1 / 2023-01-20
    This release fixes the following bugs:

    RaySession itself:

        window was highlighted on right click on systray icon
        fix multiple same group positions possible in json files (at load)
        add Ardour7 template / remove Ardour 4 template (probably no one use it anymore)
        save environment variables for clients

    HoustonPatchbay :

        add Patchichi export function in options dialog (this is the only one new feature)
        Port is now CV if it is mentioned only in the port metadatas
        fix CV ports not really readable in "dark boards" theme
        allow custom metadata icons for any box type
        fix theme not renamed after duplicate with new name
        fix inconsistent portgroup name if portgroup name endswith with AUX with at least digits at end of the port name.

    Patchbay manual has been splitted from the RaySession manual, because of the existence of Patchance and Patchichi.

0.13.0 / 2022-09-18
    Patchbay has been extracted in a new submodule named HoustonPatchbay. This module is now used by Patchance and could be used by any other python Qt program.

    New Features (all coming for HoustonPatchbay):

        Editable themes (+ 6 new themes) in a .conf file format
        boxes can have two different layouts
        Move the view when mouse cursor is near the border while selecting, moving or connecting boxes (optional)
        Adapt port/portgroup connect context menu style to patchbay theme
        Start connection from double click on port/portgroup for easier touchpad use
        Add JACK Tranport widget to the tool bar
        Add port type filter to the tool bar
        Customizable tool bar, right click and select which widgets you want

    Bug Fixes

        fix box making leapfrog when moved from another box with "prevent overlap" option
        fix some python3.10 crashes

    
0.12.0 / 2021-12-17
    Features:
        Add "Startup" dialog which let you open a recent session. This way, just lanch RaySession and press Enter to load the last session.
        
        Add optional systray icon, activated only when a session is loaded, but user can also decide to use it always or never. 
        
        "Open Session" dialog largely improved, user can now see clients, notes and snapshots in the session to load. We can also see session folder size and date, and if session contains scripts. It is also now possible to rename, duplicate or save as template a not loaded session, or to load in the current session a client from another session.
        add "long jack naming" checkbox in "add executable" dialog.
        
        Add "utility scripts" to menubar:
            convert an ardour session to a Ray session (containing this ardour session)
            Convert the current session to the NSM file format
            Convert Ray-Hack clients to NSM, for Jack-Mixer and Hydrogen
        Add "recent sessions" to menubar and to systray icon.
        
        Add "prevent overlap" default option, with this, when a box is moved on front of other ones, theses other boxes are moved elsewhere (near).
        double click on patchbay box to show/hide optional-gui, if this box is recognized as a client box
        Add 'Find a box' (Ctrl+F) filter bar, to highlight boxes matching with a given pattern
        Add 'Find patchbay boxes' in client menu, it highlights boxes of the client (if recognized with their name)
        Add box wrap button if box is fat.
        Limit patchbay port width, truncking port name in the middle, the max width can be changed in canvas options dialog
        Ports in portgroups can now be larger if their name requires that
        Specific decorations for pipewire Monitor clients
        
        ray_control: trashed_client remove_keep_files option added.
        
        Add :monitor: NSM capability, a client can now be aware of other clients events.
    
    Behavior changes:
        Patchbay is now shown by default.
        "Keep Focus while opening clients" option is now de-activated by default, its shortcut has been changed to Ctrl+H.
        In patchbay, if zoom is lower than 40%, a mouse click and drag anywhere in a box moves this box.
        Session file is now automatically saved in case of consequent changes: session renamed, client prefix changed, client definitely removed.
        Sessions in a session directory are not listed anymore, mostly for faster listing. 
    
    Bug Fixes:
        Display true client names if "use graceful names" canvas option is unchecked
        Remove the vertical white line on the left, in fullscreen patchbay
        No more possibility to see boxes with no ports
        Fix connections moving with a delay in case of fast box move.
        Fix too long or empty Midi-Bridge port names with pipewire option jack.filter_name=true
        fix crashes with recent versions of python or python-qt
        consider '/' as box title divisor only if it seems to be a client of session, and this way prevent some pipewire titles to be wrongly splitted
        fix crashes because of recursives error while moving a patchbay box.
        
        fix crash with Ray-Net (Network Session) save client template action
        sooperlooper_nsm now follows given jack_client_name (with option, to prevent connections loses)
        
    New Templates:
        seq192


0.11.1 / 2021-08-27
    Bug Fixes:
        fix GUI crash when showing snapshots without config for info dialog
        fix missing icons and applications infos in "Add Application" dialog under Fedora
        fix patchbay context menu displayed at wrong place under Wayland
        grey background for all QGroupBox, because some qt styles doesn't separate them from the rest of window (grrr...), and it becomes not understandable).
        patchbay: ardour "physical_audio_input_monitor_enable" becomes "physical monitor" with graceful names enable, same for midi

    Improvements:
        Manual : style review and patchbay section added
        Patchbay boxes allow 3 or 4 lines title, because PipeWire uses sometimes veryyyy long group names for hardware boxes

0.11.0 / 2021-08-05
    The most important new feature in this release is the apparition of the JACK patchbay. You also can press Ctrl+J to show/hide the patchbay.

    The patchbay has been forked from Carla, with some improvements.
    For the moment, there are only 3 advantages to have the patchbay directly in RaySession's GUI

        Boxes positions are memorized and replaced per session
        Boxes have icons of the corresponding NSM client
        of course: only one window for two things you generally need in a session

    Note that :

        The session frame is now "responsive design" to be reduced in width and allow more space to the patchbay.
        messages were moved from the right to the bottom left (under the session frame)

    The list below concerns the improvements of patchbay:

        Most important probably: portgroups and stereo detection. Ports are automatically grouped into a portgroup if they seems to form a stereo pair. This allows faster connections, and also a more readable canvas, with less and less useless text. This improve has been proposed for PR to Carla. Portgroups can be also set by JACK metadatas, and without limitation of number of ports.
        wrap/unwrap boxes: you can hide all ports of a box, very useful for big groups as Ardour or Hydrogen boxes. Hide what you don't need let's you see better what you need !
        hardware boxes have specific decorations
        Port order follows JACK metadata "port-order"
        Boxes have their application icon if possible. Box header is a little higher, but it allows box to be consequently shorter in width in case group name is long.
        connect menu by right click: by right click on a port, you can directly connect the port to any connectable port of the canvas. Connect a port doesn't close the context menu, so you can connect to many ports quickly. It also works for portgroups.
        Clipboard: cut/copy connections of a port to another port, in port context menu. Also works for portgroups.
        filter ports: by right click in the background, you can display only Audio ports, or only MIDI ports, or all ports of course.
        when you click and drag to connect 2 ports, you also can connect with right click (while keeping left mouse button down), this way you can connect quickly one port to many others.
        with click and drag on a port, you can also move to a port with same mode (input/output), it will cut and copy connections from the first port to the second one. To prevent wrong movements, it works only if the second port has no connections
        Beziers connections lines have been reviewed to be more visible when the ports are close in abscissa and distant in ordinate
        canvas option window is a tool dialog where options take effect on place
        graceful names (default option): port names are shortened with custom rules, it doesn't uses JACK aliases. Allow boxes to be less large.
        elastic canvas (default option): the scene is automatically resized to the contents, so the view is directly optimized when group is added or moved
        option to group or not hardware A2J ports
        Box moves are animated when they are moved to their session position, when the port type filter change, or when they are joined/splitted
        Double-click anywhere in patchbay to toggle fullscreen patchbay

    Regressions:

        No option to use straight lines instead of bezier lines, I find it very ugly and unusable
        No option to animate box apparition
        No theme support, only color scheme

        

0.10.1 / 2021-02-04
    Manual:
        Add a complete online and offline manual accessible from the help tab of the menu bar. It opens RaySession's manual in your web browser.
        Note that english is not my mother language, corrections are welcome.

    Bug Fixes:
        Client label is now grayed out when client is added stopped
        Jack config memory script won't prevent anymore to load the session if ALSA device is set to 'none'
        French translation fixes (thanks to Olivier Humbert)

    New Template:
        Rakarack-plus


0.10.0 / 2020-11-10
    New Features:
        Add option "Remember optional GUI states" which recalls the optional GUIs visibility state
        Add Application dialog largely improved with access to all possible informations about the templates
        Session Notes dialog where you can edit...session notes
        'duplicate', 'save session as template' and 'rename session' moved to a menu at top left of the session frame  
        provide log files in ~/.config/RaySession/logs/
        improve open session dialog behavior between filter bar and treelist
        add "Make Reappear all hidden dialogs" action
        add RayNet client protocol, which is used only for Network Sessions
        change icon for optional GUI visible/hidden (shamelessly pricked idea at Agordejo)
        ray_control : add_client_template not started option added
        clients now remember their template origin
        "save as template" button becomes "Update the Template" in save as template (session/client) dialog if template exists
        Jack config script now saves all pulse2jack configurations, even the more complex ones

    API change:
        raysession's --session argument has been replaced with --start-session because --session was taken by Qt, -s still works fine
    
    Bug Fixes:
        Now translated in french for french speaking users out of France
        Add all default Qt translations
        raysession should connect to a running daemon without GUI, even after a GUI crash (GUI crash should not happen of course ;) )
        ray_control start now start with the good session root if it is not the default one (~/Ray Sessions)
        remove Hydrogen NSM template because RayHack template is safer for now
        Sequencer64 template has a -m option to work fine with JACK connections
    
    New Templates:
        Xtuner
        Mamba
    
0.9.2 / 2020-08-01
Bug Fix:
    Strong: Fix empty client templates list if there was no user client template

0.9.1 / 2020-07-21
Bug Fix:
    Remove a binary file added by error to source code

0.9.0 / 2020-07-16
New Features:
    CLI: Control allmost all GUI actions and more with the CLI ray_control.
    Session scripts: allow user to edit shell scripts at session load, save and close.
    JACK config session script: script that saves and recalls the JACK configuration for the session.
        Add this from session templates in "New Session" window.
    RayHack: New client protocol which is an alternative to ray-proxy.
        This allows to launch directly the process and to edit its properties even if process is stopped.
        I know this feature will be considered as heretic by someones, this is not strong, I know it doesn't changes things too much.
    Factory client templates are installed in /etc/xdg/raysession to allow packagers to add some templates.
    Get client label, icon and description from their .desktop file.
    
Subfolder combobox removed in New Session Dialog
Daemon option "Save from client" has been removed. Please affect a global keyboard shortcut (Meta+Ctrl+S) to ray_control save instead.


0.8.3 / 2019-11-25
This release fixes the link for src/bin/ray_control from absolute to relative path.
Sorry for the inconvenience.

0.8.2 / 2019-11-20
this new version is here to fix a big bug with snapshots.
If user name and user email were not mentioned to git, snapshot always failed with some versions of git.

Fix snapshot/git bug
Fix network session not working
Provide fallback icons for allmost all system icons
add little script 'ray_control', this way you can use 'ray_control save' to save your running session (and affect this to a global keyboard shortcut (eg, Meta+Ctrl+S)).

0.8.1 / 2019-10-23
Just a bug fix release. In v0.8.0 , first session creation failed (first session of the directory (e.g. ~/Ray Sessions/first session).
Ray Session has also been renamed to RaySession everywhere it was.

0.8.0 / 2019-10-15 Autumn Release.
This release contains many new features. Mainly the snapshot manager.

Snapshot manager (requires git): Take a snapshot at each session save. User can go back to a previous snapshot with the "rewind" button at the right of "executable" button. See "snapshots explain" file in code root for more info.
Proxy: Improve integration of non savable clients. Possibility to display a special save icon and prevent accidental close on RaySession in this case. Try to close gracefully client window is possible (requires wmctrl).
Favorites: User can quickly add a favorite template with "Favorites" button or with a right click below clients.
Add Application dialog: Now shows an "User" icon at right of each user template, click on it to remove this template. Click on favorite icon to add the template to favorites. Double click on template to launch it.
Open Session dialog: Now shows all session in a tree-view (if some sessions are under a sub-folder). Double-click on session to open it.
New Session Dialog: If some sessions are in a sub-folder, shows a sub-folder combo box for the new session.
Add Executable Dialog: Click on "Show More Options" to change Prefix or client_id. Useful to integrate in the session files made outside (for advanced users).
Client Properties Dialog: global re-design, edit line added to edit extensions ignored for snapshots.
add a donations Dialog
NSM Compatibility review: Possibility to launch a client externally with the environment variable NSM_URL, Absolute PATH are not allowed anymore when adding an executable. Integration of server-control NSM OSC messages which try to reproduce exact NSM behavior.
Bug Fix: fix prevent desktop session disconnection (on KDE and maybe other ones desktops).


0.7.2 / 2019-07-15
New Application Templates for OPNplug* and amsynth.
fix unsaved stop signal in ray-proxy
faster pid check for desktops memory
Thanks to jpcima for the OPNplug template pull request.

0.7.1 / 2019-01-16
Bug Fixes:
    Fix bug with drag and drop client items. Clients order wasn't saved.
    Fix untranslated proxy window.
    Fix non removed stopped clients at session close.
    Fix search of switchable clients if client executable or arguments have been recently modified
    Now send hide_optional_gui to client only once "open" has been sent. This can now makes some window flashes but it did make crash some softwares as Patroneo and Fluajho.
New Templates:
    Add Patroneo and Fluajho templates to Factory

0.7.0 / 2019-01-07
New features:

New Option (activated by default): provide bookmark (shortcut) of the session folder for gtk2, gtk3, qt4, qt5, fltk and kde5 file pickers.
New Option: Desktops Memory (requires wmctrl). If activated, clients windows will be moved to the given desktop when session is ready, or when a client is ready. It may not works depending on your D.E.
Edit executable and arguments in client properties window. Arguments are supposed to be not supported by NSM. Sometimes it works and it can be useful.
option -s to load session at startup
ray-proxy: new option "wait window for reply" (requires wmctrl)
sooperlooper_nsm: option to pause and trig with jack_transport events (play/pause)
new factory templates for ADLplug, Petri-Foo, Shuriken, Sequencer64 and SooperLooper +Transport
