* Release checklist document: Updated the text to better match the new release process.
* HTML manual: CSS fix for newer LaTeX2HTML versions. The text width in the HTML appears to now be fixed to a maximum width matching the text dimensions in the PDF. This looks bad together with the wider images and code snippets.
* System tests: Added two tests to catch bug #12 ([https://sourceforge.net/p/nmr-relax/tickets/12/). This is bug #12, the failure to catch the '#' character when setting the molecule name]. The tests are Structure.test_bug_12_hash_in_mol_name_via_arg and Structure.test_bug_12_hash_in_mol_name_via_file. These cover the two ways a '#' character can enter a molecule name - via the file name or via the set_mol_name argument. Both the structure.read_pdb and structure.read_xyz user functions are checked.* Test suite: 2 new system tests to catch the failure of reading newer Bruker DC files. The system tests are Bruker.test_bug_13_T1_read_fail and Bruker.test_bug_13_T2_read_fail and these catch bug #13 ([https://sourceforge.net/p/nmr-relax/tickets/13/)bug #13].
* User function definitions: Clarifications for the bruker.read text.
* User manual: Clean up of the bibliography entry titles. Species names are properly italicised with genus names capitalised, nuclear isotopes are superscripted, R1rho, R2, etc. are properly subscripted, the Perrin articles are translated into English, symbols are now symbols, and unnecessary capitalisation has been removed from the bibtex.
<section begin=bugfixes/>
* relax GUI: wxPython-Phoenix 4.x fix to allow relax to start again. In the later wxPython versions, relax would not be able to start either the GUI or any of the test suite due to a new error "wx._core.PyNoAppError: The wx.App object must be created first!". This was not present in wxPython-Phoenix 3. The Relax_icons class (a wx.IconBundle derived class) is no longer instantiated on import.
* Structure loading: Fix for bug #12, the acceptance of the invalid '#' character in molecule names. See [https://sourceforge.net/p/nmr-relax/tickets/12/bug #12, the acceptance of the invalid '#' character in molecule names]. A simple check has not been added to the load_pdb() and load_xyz() functions of the internal structural object in lib.structure.internal.object. This ensures that the '#' character can never be set as the molecule name, independently if it was taken from a file name or set via the set_mol_name arguments of the structure.read_pdb or structure.read_xyz user functions.* Bruker DC: Complete redesign of the backend to support reading newer (or older) file versions. This fixes bug #13 ([https://sourceforge.net/p/nmr-relax/tickets/13/)bug #13, the failure of reading newer Bruker DC files]. The backend has been resigned so that the relax library produces a complex Python object representation of the Bruker DC results file. This object now stores all of the data present within the Bruker DC file. The design is more flexible as precise column ordering no longer matters.* Fix for bug #14, the freezing of user functions in the GUI. See [https://sourceforge.net/p/nmr-relax/tickets/14/bug #14, the freezing of user functions in the GUI]. The user functions freeze if an error occurs that is not a RelaxError, with the mouse pointer stuck on the busy cursor. These non-RelaxErrors are now caught and manually dealt with by the GUI interpreter. Like all GUI freezing bugs, this was introduced with the huge GUI speed up prior in relax 4.1.0. These also only to appear to be a freeze, but it is actually the failure to update and show the relax controller combined with not turning off the busy mouse cursor.
* GUI bug fix: Avoidance of the numpy depreciation of '== None'. This deprecation causes the GUI to fail with recent numpy versions.
* Relaxation dispersion: Protection of all of the MODEL_PARAMS_* variables from modification. These are now only used with copy.deepcopy(). This removes a number of bugs in which the lists, which should be read-only, are permanently modified by the addition of 'r1'. The system tests add 'r1' and then the unit tests subsequently fail. This would also be an issue if an experiment without the 'r1' parameter is analysed after one with that parameter, without restarting relax.