GLOBAL: Keyboard search * New: Allow Ctrl+Shift click in a list to select (or deselect) all elements in the selected range. Elements outside the range are unaffected. - Behaviour as in Windows 10 Explorer: unselected->unselected => range first to last all deselected unselected-> selected => range first to last all deselected selected-> selected => range first to last all selected selected->unselected => range first to last all selected * New: Allow Ctrl+Shift click in a dataset to select (or deselect) all elements in the selected range. Elements outside the range are unaffected. * New: When typing in a list or tree to find a matching element, allow space (and in trees also *, + and -) to be added to the search string by holding Alt or Meta down. * New: In lists, tables and property tree sheets, allow adding Enter to the keyboard search string by pressing Alt+Enter * New: In lists, tables and property tree sheets, allow repeating the current keyboard search by holding Alt and pressing Home, Down, Up or End to get the first/next/previous/last match * Change: In lists, keyboard string searches previously always started from the top of the list. Now start from the current target element (dotted outline). - To restart a search from the top, press Alt+Home - When typing the first character of a new string search (and only then), if no match is found then wrap around and search from the start too, similar to old behaviour. * Change: Make searching in tree column of property sheets use same rules as in lists - Start from target element (dotted outline), not selected element GLOBAL: Licensing * New: Operating system support for identifying a session. Current licensing policy is that on a shared computer, e.g. Terminal Services / Remote Desktop Services, one license entitles running MetaEdit+ instances in only one session on that server. - This also applies to Fast User Switching: if a user is logged in and running MetaEdit+, a normal license will not allow another user to run MetaEdit+ on that computer until the first user closes his MetaEdit+ instances. - Extra sessions can be purchased for a license, for those customers with a bona fide need for multiple users running MetaEdit+ on the same Remote Desktop Services server. * Change: Use whichever comes first, test version time limit or rental key time limit. - Keys will prevent startup after their limit, and warn on startup within 14 days of it. Don't want a warning to show a different time from when we will actually stop, so if test version time limit would stop us near enough the key time limit that a warning will be shown on startup, use key time limit (allows test version time limit to be exceeded by max 14 days) - A test version started with a permanent key will still expire at the test version time limit. Earlier, a test version with a rental key would expire at the rental key time limit, even if that was after the test version had expired. This erroneously allowed rental users to use even an ancient test version without warning or expiration. GLOBAL: Modeling rights * New: Added a list where projects can be marked as read-only, except for a list of users allowed to model in that project. - Users who do not have rights will be denied locks to model elements in that project GLOBAL: UI * New: Many windows and dialogs support cursor left and right within rows of buttons, e.g. OK and Cancel in dialogs * New: Added Move All command to window menu (opened by Ctrl+right-click within window area): prompts with area enclosing all open windows, showing it as a dashed outline which follows the mouse. Move the area to where you want the windows to be, and click to accept. - Windows will not be forced to be fully (or even partially) on a screen, but can be moved back to where they were by another Move All. * Fix: Keyboard navigation in degenerate Tables (zero rows/columns) could give an error in rare circumstances. - Page Up with zero columns resulted in a primitiveFailed * Correction: In a multi-select dialog, could not press OK if there were no selections - Cancel offered the desired effect, except in Options | Repository | Metamodellers where an empty selection was useful * Correction: In a Windows menu with a submenu, clicking elsewhere in the parent menu while the submenu is open closed both menus and did nothing - 1) hover on item with submenu until submenu appears - 2) move to another item in the parent menu and mouse down on it before submenu disappears - Also, in 2) moving in parent to hover over a new item with submenu closes all menus without opening submenu - With this correction, the parent menu stays open. - If clicking and mouse up occurs before the submenu disappears naturally after its timeout, the click will have no effect and must be repeated: still, better than both menus disappearing * Correction: Two rapid clicks on toolbar buttons, checkboxes, spin buttons and radio buttons were being interpreted as a single click, since normal buttons were made to ignore the second click of a double click. * Correction: Selecting the bottom, partially-visible row in a Table did not make it fully visible GLOBAL: OS filesystem * New: When an error occurs getting file size, and if nobody in the caller chain handles it, do a simple repeat 10 times with increasing delay, total about 1s. If there is still no success, show the error dialog, and if the error allows Proceed and that is chosen, repeat the retries, either succeeding or showing the error dialog etc. * Change: When automatically creating filenames based on model or metamodel data, illegal characters were filtered differently depending on the platform. Change to filter the same way on all platforms, so saving files on Linux results in the same names as on Windows. This is particularly important when multiple platforms share the same VCS repository. - Filter each character individually to either itself or _. Since we can't allow errors to occur when a platform encoding cannot support a character, map unsupported characters to _ too, leaving it up to users to make sure their encoding on all their platforms allows (or disallows) in the same way for all characters they use." - Filtered characters are: \/:*?"<>|% - % is not strictly illegal, but is not protectable on DOS by double quotes, so disallow for convenience of batch scripting. In contrast $ on Unix is allowed, as it can be protected in shell scripts by single quotes. * Fix: Error "This platform does not support a file name syntax for accessing remote files" when reading SVG files from a UNC path * Fix: ERROR_NETNAME_DELETED in rare cases when (re)opening files in multi-user version. - Was released to some customers as RetryFileOpen patch to 5.5, 17 Nov 2017 16:42 * Correction: Need to clear out the file system attributes cache on startup, to avoid using attributes cached from the development environment rather than reading from the current environment. LINUX * New: Allow errors thrown by X to be handled in the image. Without this, X errors are handled by the VM by logging them to stdout over several lines. When loaded, this package silently handles X errors; when unloaded, it returns handling to the VM. * New: Allow setting the modification time of files on Unix(-like) systems, e.g. when saving generators to .rep files * New: Work with Linux kernel > 4.10.* - Replaces patch IGC821.mep and IGC83.mep * Fix: Avoid some errors on Linux where current view's window is nil when building XIC for text widget - Replaces LinuxInputManager.mep * Fix: #commit and #close/#primClose just report errors without retry. Made UnixFileAccessor retry with similar code to primGetSize - Seen on Linux client 55B34 in Ubuntu 14.04.1: Host is down error in #close after file copy, then Bad file descriptor error in #commit during copy * Fix: Added EBADF and EHOSTDOWN to test for restartableError: - Bad file descriptor is EBADF is io error 9, for which we added handling in abBadFileDescriptor.mep - Host is down is EHOSTDOWN is io error 112 * Fix: On Ubuntu 14.04 with SMB v2.0 and 2.1 (e.g. to server on Windows 7), errors are occasionally raised by closing and committing files. Host is down (io error 112, EHOSTDOWN) in #close after file copy, Bad file descriptor (io error 9, EBADF) in #commit during copy * Fix: On Ubuntu 14.04 with SMB v2.0 and 2.1, EIO errors are raised for SMB2 status code 259 STATUS_PENDING: - io error 5 'Input/output error' http://www-01.ibm.com/support/docview.wss?uid=ssg1S1004648 * Correction: Display of some images in symbols failed on X11, if the image palette depth did not match the screen palette depth, but the bits per pixel and palette matched otherwise - stdout (normally sent to /dev/null by metaedit script in 5.1) showed X11 Error:, Major: 72 (X_PutImage), Minor: 0, Error: BadMatch (invalid parameter attributes) - fixed by full rendering rather than shortcutting. LINUX: UI * New: Draw Mac-look Radio Buttons with Cairo if Cairo is on and we are not on a Mac - without this, buttons are passable on Windows but ugly on Linux * Correction: Radio Button clipping did not take earlier clipping into account, and button also extended outside bottom of clip bounds * Cosmetic: Improve positioning of Radio Button - Only tested on Windows and Linux Changes & Versions * New: In the Compare window showing differences between pairs of graph snapshot texts with highlight colouring for the background areas including the changes, show the same area colouring scaled down into the space to the right of the scrollbar, making it easy to scroll to the next change. * New: If Compare would show no changes, show a simple dialog with 'No changes found.' instead. * Correction: Mouse wheel had no effect over text in Compare window - Workaround: use mouse wheel over scroll bar * Optimization: If Changes Tool is not open, flush previous transaction's changes tree info when starting a new transaction - Quite a large persistent object, e.g. 50kB in demo with 5 projects open, and may eventually (in a session with thousands of transactions) eat all memory without triggering cache reclaim, as estimated size defaults to only 100 bytes for a new object. Repository * Fix: not enough elements available error when garbage collecting a repository with corrupted objects, whose data is beyond the end of the .aob file. Assuming the repository has been corrected sufficiently to be functional, by removing all paths to these objects, we can skip them, logging their details to the Repository Transcript. * Optimization: Looking up elements in various repository files could avoid re-positioning the file pointer on success * Correction: When reading a user from the repository, we overwrite its name and password based on the values in the manager.ab info file. If the user had subsequently been deleted (but was still referenced in the repository, e.g. by versioning information), this overwrote the deleted user's name with that of a subsequently created user with the same userID. Now, only overwrite if this persistent user is still currently a user. * Cosmetic: Missing line break before expiry string in repository transcript after Abandon * Cosmetic: Added missing periods at the end of sentences in warning for not being able to obtain lock to fill in a new property in an existing NonProperty instance Browsers * New: When filtering a list in a browser, the filter can contain multiple subconditions: - First the tree is built with all its nodes - OR conditions first, separated with |. Only nodes matching will be included, along with any necessary supernodes recursively. - AND-NOT conditions next, prefixed with ^. Any node matching will be excluded, along with all of its subnodes recursively. - E.g. *Design|*Top Design^*Connections in the Graph Browser for the VECU project will include all "VECU Design" and "VECU Top Design" graphs, and their parent "VECU Manage" graph. It will exclude all "VECU Connections" graphs, and their subgraphs (duplicate mentions of the "VECU Design" graphs). - Because of overlaps in which types match which strings, this example can be reduced to *Design^*Connections, or even *n^*s - Note that where the tree is built from data that is not a strict tree, the same element can appear as multiple nodes in the tree. Each such node is treated separately here: excluding or including on the basis of being a subnode or supernode only affects that particular node in the tree, and nodes for the same element may be included or excluded differently elsewhere in the tree. * New: Object Browser can choose what to show from Graphs: Objects (default, and also the previous behaviour), Relationships, Roles, Ports used (i.e. with roles attached), All Except Ports, All - Note this only chooses what else to show underneath a Graph, in addition to any objects in properties of the Graph itself - "Graphs: Ports used" shows the objects that have ports, and the ports under each object. This allows opening the context of a port from Info on its object. - Note that "Graphs: All" simply shows ports on the same level as other graph elements: having objects' properties etc. below it as well as the ports seemed too confusing * New: Object Browser has a Dedup checkbox, to deduplicate the list of graphs, i.e. to hide graphs from the root if they appear as subgraphs. - The checkbox is on by default, giving the previous behaviour, but can be turned off to show all graphs at the top level too * New: Object Browser has an 'Expand All' button, like other Browsers * New: The 'Expand All' button in Browsers can be pressed with Shift down to select a specific number of hierarchy levels to be shown * New: Modeling Rights... menu item in Projects lists, to set which projects are read-only by default for users, and for each such project, which users are exceptions and still have write access to models. - Minimal user-interface for choosing which projects are read-only, and for each, which users still get write access to models * New: When trying to delete a Graph or Graph representation, explicitly check the users' modeling rights for that project first, and give an appropriate failure explanation dialog for that case * New: In the Default project menu in Browsers, italicize projects where this user does not have modeling rights. - It is still acceptable to choose them, as the default project is also used in metamodeling. * New: Added Copy to instance Graph menu in all browsers - just puts the Graph itself in the copy buffer, e.g. for pasting into a property that can have a Graph as contents * New: Added Copy to Object Browser tree menu * Fix: #uiRepSet error in Object Browser when opening Info on an object/role/relationship shown as an explosion under a graph * Optimization: Browsers slow with 1000 tree branches open when going back to that browser, even in common case where there have been no changes GOPRR * New: Allow multi-select in the lists of Component Selection Tools. - Most menu actions can only accept a single element, and will take the element you selected first. - In the Component Selection Tool for one element (showing two lists), only Copy uses a multiple selection - In the Component Selection Tool for multiple elements (showing three lists), Copy, Add, Add & OK, and the Already selected list's Remove use a multiple selection * New: Special handling for modeling rights for port instances. When creating a port instance in the Symbol Editor, the user is metamodeling not modeling, and the port instance is always saved in the port type's project, and in the list of instances of that port type in that project. We want to allow these changes and their locks even if the user does not have modeling rights in that project. * New: Check modeling rights when a user tries to create a Graph representation in a project where he does not have modeling rights, and show an appropriate failure dialog for that case. - Otherwise users can create extra diagrams in read-only projects, but not delete them. * Correction: When a user cannot obtain a lock to create a new Graph or Port instance, the explanation dialog only mentioned the case where another user has the lock. Now check and explain differently for the case that this user does not have modeling rights in that project. * Correction: Text formatting was lost when making a copy of elements to some depth, e.g. during Paste Special, Replace with copy, or Graph duplication. * Optimization: When calculating the sorted list of all instances of a graph type, filter the list of all graphs by type before sorting. * Cosmetic: Graph Browser's Duplicate / Replace Graph... showed in undo list as "Undo N P Replacer: ", corrected to "Undo Replace Tool: " * Cosmetic: Missing comma and space in dialog when cannot create a new graph in a project, because the project is not open Metamodeling Tools * Fix: Key not found Error in Property Tool after tabbing out of Data Type combo box pull-down menu, if the new Data Type selection meant that the next field in the Property Tool got hidden, e.g. changing from String (next field = Widget) to Collection (next field = Contents). Help * New: Added resizing splitter to Help window * Cosmetic: Increase the opening size of the Help window slightly, to better accommodate Help | About version details Import/Export * New: When exporting models to a binary patch, make the resulting .MEC file add a check during import, that the project chosen by the user for new instances is one for which the user has modeling rights. - If not, importing will show a dialog then an error, with the dialog telling the user to Terminate then Abandon. - Note that patches made with earlier 5.5 builds will not contain this check, and patches made with this 5.5 build will not run this check if imported into the original 5.5 build. * New: When importing an MXM file, if the user does not have modeling rights in the current default project, abort and explain in a dialog. * Fix: Serious error dialog shown when importing MEC file (or MET file with static ports), if an earlier MEC/MET import from the same source repository had been committed, and since then a second MEC/MET from the same source repository had been imported then abandoned in this session, and this third import shared objects with the old * Fix: Error #at:ifAbsentPut: importing MEC file (or MET file with static ports), if an earlier MEC/MET import from the same source repository had been committed, and since then a second MEC/MET from the same source repository but including objects from a new source project had been imported then abandoned in this session, and this third import also contained objects from the new source project. * Fix: MXM export failed on Tables that had manual widths set with Format | Widths...: "Export failed: Wrong type for aspect: gxlWidths. Expected: OrderedCollection. Received: Array" - Workaround: Format | Autowidth * Correction: Duplicate objects after importing MEC file (or MET file with static ports), if an earlier MEC/MET import from the same source repository had been committed, and since then a second MEC/MET from the same source repository and source project had been imported then committed, and this third MEC/MET import was in a new session and shared objects with the second. * Correction: If a binding's relationship or role has an explosion, copy-pasting the objects of that binding pastes the explosion of the original relationship or role, not the copy which actually ends up pasted in the subgraph (recall we always shallow copy relationships and roles when pasting). This results in two problems: - A: the relationship or role that actually gets pasted thus has no explosion - B: Graph Info will show an explosion for the original relationship or role. - Note that this only affected normal paste, not Paste Special with copying. It affects pasting to the original graph (problem A) and to a different graph (A & B): - Now corrected so that the explosion is made for the pasted element. API * New: API command-line string function setVar:value: - Stores the value into the named internal variable, which persists for this MetaEdit+ session - Returns the new value - Allows text formatting in the value when called in MERL's internal...execute/read * New: API command-line string function getVar: - Returns the value of the named variable - Includes text formatting in the value when called in MERL's internal...read * New: In API instPropsLocking call, when creating an instance of a Port type, we should pre-check the lock for the list of ports in that type's project. * New: When doing backupToDB:dir:, cleanup the resulting backup's area files (transaction files, temporary files, .cif files containing current locks) - When backing up a live database, its areas\areaName\areaName.cif files store the current-held locks, and when this backup copy is started, clients see those locks as still being held. - Also cleaning up the transaction *.t* and various temporary files makes a neater backup, whose diff between versions in version control systems is lighter (without needing to exclude those files in the VCS settings) * Correction: API string functions dbDir and dbName gave an error when not logged in; changed to answer an empty string instead Dialogs * Correction: Graph Info resize splitters positioned too high, over bottom of previous list. Invisible on Windows, but on Linux show as horizontal gray bars near bottom of lists. * Correction: When dragging and dropping in a collection property in a property dialog, allow Mac Cmd as well as Ctrl to mean copy. Graphic Editors * Fix: Rare primitive failed when trying to process a window resize event after window has closed * Optimization: Do not use Cairo for drawing handles - Significantly speeds up handle drawing for multiple selections Symbol Editor * New: Allow the Alt-based keyboard string search extensions in the Diagram Editor property sheet tree * Correction: Changing to the Layout tab in a Template Format dialog acted as if a change had been made, turning on the OK/Apply/Cancel buttons * Cosmetic: Moved Group, Order and Format menu items to Format menu, with Format first there and Order items directly included rather than in a submenu * Cosmetic: Symbol Editor status bar grid+zoom sections should not scale Diagram Editor * New: Dragging one role's target point handle drags the target point handles of all selected roles connecting to that object. This is most useful for Sequence Diagrams. - Replaces TargetPointHandles.mep patch * New: Allow keyboard string searching in the Diagram Editor property sheet tree column * New: Allow drag and drop of objects from a Diagram Editor sidebar tree view onto a Diagram Editor pane, creating a new representation of that object (and adding it to the graph if not already present, e.g. when dragging to a different Diagram Editor's pane). * New: Added Align menu to Diagram Editor menu bar. - Align to Target X / Y are similar to Align to Center / Middle, but align based on the default connectable's target point rather than the geometric center of the symbol - There must be a selection of 2 or more objects or non-straight relationships to be able to align. * New: Added Alt+Enter as a shortcut for Format... * New: Added Edit | Filter Selection..., to filter the selection down to just elements of selected types or metatypes - Useful particularly after selecting an area, e.g. in a Sequence Diagram to select just the relationships or roles to realign them * New: When creating a relationship and hovering over a connectable with a port, the status bar shows the port type as well as its name * Change: Moved Align to Grid from Format menu to new Align menu * Fix: Element not Found error when editing with an inline editor in the property sheet, and user clicks down on another row, drags and releases outside the selectable rows, and clicks in the Diagram pane to change the main element selection. - Editing mode was being left on, also allowing a subsequent click on a non-inline-editable row (e.g. Text row) to edit inline. * Fix: #realBox error in binding creation when roleDrawing is set in metaedit.ini to #manhattan and clicking to set position of second role's breakpoint * Fix: #- error after Pasting object in diagram and pressing Esc before moving pasted object - Workaround: after Terminate, pressing Delete still gave error #-. Ctrl+Z solved this * Fix: Print Scale Dialog gave a Division by zero error if a Diagram had no content * Correction: Reconnect was not checking whether the user had the lock on the diagram * Correction: Mac Cmd+double click on a graph np property in property dataset now opens the graph for editing, as well as existing Ctrl+double click * Correction: If the sidebar's horizontal resize splitter was dragged to the bottom, it did not remain there on subsequent window resizes. * Correction: The sidebar's horizontal resize splitter ratio was not maintained on subsequent window resizes. * Correction: When dragging onto the diagram from a list, grid the position (if snap is on) and limit it to be on the drawing area. * Correction: When creating a binding in a Diagram Editor and prompted with a list dialog to select a choice of binding, if the selection turned out to be illegal because of a constraint, leaving only one option that was then automatically chosen, the resulting binding's role symbols would be from the originally selected constraint-breaking binding rather than the final selection. * Correction: Allow Mac Cmd as well as Ctrl-click when selecting in the Diagram Editor property sheet * Optimization: Speeded up Diagrams with many connected generator-based dynamic ports. - Calculating each port connectable required running the generator. Although the results were cached, each port connectable was only calculated as needed. The generator may produce N ports; even if we only wanted the 4th port, we had to run the whole generator to find the position of this port. Thus for each port we ran the whole generation of N ports, so for all ports in total we generated N*N ports (i.e. each port N times). Instead of simple caching, pre-warm the cache when we are asked for the first connectable, by asking the symbol for all connectables, and caching them by port. The generator is thus run once, generating all N ports - changing an O(N^2) algorithm into O(N). - Was published internally as patch prewarmPortCache.mep * Cosmetic: Moved Format... to top of Format menu Matrix Editor * Cosmetic: Increase Column Widths Tool maximum size and slider width to suit Full HD screens (1920) Table Editor * New: Allow string searching in Tables by typing. - The search is in the current column and starts from the current row. The column is selected by clicking in a cell: the column selection is only visibly shown in Select By Cell mode. - A space or newline can be included in the string by typing it with Alt held down - To find the next match, press Alt+Down. Similarly for previous / first / last: Alt + Up / Home / End - Pressing Space selects the matching cell and clears the search string - You can also clear the search string by pressing Ctrl+W * New: In Table Editor cells, display newline characters as grey paragraph marks (pilcrow) and display the rest of the text in the same cell, rather than only displaying the text before the first newline. - This does not affect string searching: pressing Alt+Enter to add a newline to the search string still matches the newline - only its display has changed. Conversion * New: When adding _vcs* generators, also add the _os* generators now needed, and the __ and __Unique subgenerators. If _translators is missing, or is unchanged from a known version (present since 4.5), bring that up to date too. - Users with their own edits to _translators will have to merge manually, at least for the translators needed for VCS generators: - %iniKey, %iniValue were added in 5.5 - %wildSp has been present since 4.5 - All other generators require manual upgrade (if desired) * Fix: Primitive failed converting repositories from MetaEdit+ 3.0 and 4.0 - Workaround: convert first with 4.5, 5.0 or 5.1, and then with 5.5. MERL * New: When reading .rep files, automatically recognize the line end convention (CR+LF, LF, CR) from the first line of the file. * Fix: Do not allow Breakpoints to break if we are running in batch mode (e.g. called from a command-line or API command) * Correction: If there was text formatting on the code for a shorthand variable reference like $E that was output, the formatting was applied not only to that output, but also to the value of that variable for the rest of the generation. * Optimization: Filtering DO and FOREACH with UNIQUE was slow beyond a few hundred elements. Improved with caching and hashing, changing 8.4 seconds to 0.03 seconds for 527 lines of about 80 characters, all lines similar but different. Graph Generators * New: Metrics collects per-type counts - Added into demo55multitest on svn 25.9.2017 * New: Changes and additions to support Linux VCS: - _os* generators to output correct Windows or Linux commands for basic file system functions - New _vcs_git_cred - Added Bash script for _vcsCheckIn_svn, to replace TortoiseSVN GUI "All" - Add all new or changed files to SVN - Remove from SVN all files that are no longer present - _vcsSync_git: Add --all to git log when looking for DBVER (reorder options too) - In multi-user version, after another user has versioned and we have started a new transaction, and git remote update has added that new version to our origin/master, HEAD in local Git is still behind DB version. git log by default only searches back from HEAD, so will claim 'Current DBVER not found: solve manually'. - Adding --all makes git log search origin/master too - This is also useful in the single user version, if the user has committed and pushed a new version on another PC, and then on a PC which already has a sync history, copied the new DB rather than doing Sync. - _vcsSync_svn: No need to update DB in Sync in multi-user version: 55r1H * New: Use UTF-8 encoding for HTML files, and declare it with backwards-compatible meta tag - _Export graph hierarchy to HTML, _Export graph to HTML, _graphs in HTML - Need UTF-8, as customer dbs may contain foreign characters not representable in computer default locale, leading to "This character is not supported by this class of string" * New: _vcsInitClone can take up to two optional parameters, to allow easier command-line use - 1) The name of the repository in VCS - NB: _vcsPaths updated to accept this @dbNameOverride parameter - 2) The MetaEdit+ subdirectory to copy the repository from VCS to - E.g. mep55.exe textForMERL: "_vcsInitClone('demo')" - would get the current demo repository from Bitbucket, assuming .vcsPaths already has gitBaseURL: - gitBaseURL=https://myUser@bitbucket.org/ourBBAccount - No need to add dbName=demo to .vcsPaths and remove it afterwards. For a lot of use cases, .vcsPaths would thus never need changing for a given user, and that single line is enough to specify this user’s Git account and the organization/team’s Git server and path. If this PC wants to override the local git directory X:\git, or the organization uses SVN rather than git, those can be permanently in .vcsPaths too. - As the clone operation is run asynchronously, you cannot login to the resulting repository in the same command line (even after using currentDir: to rebuild the list of repositories to include the new one). * Change: Deleted unused _graphs with icons in HTML * Correction: Need Graph hierarchy tree to have both scrollbars when necessary: div.toc overflow: auto - _styles and scripts for HTML hierarchy * Correction: Objects in Graph properties were being reported twice in HTML and RTF - Appeared on Graph properties page in HTML, as only first occurrence gets hidden - Were being added to extraObjects from _Dictionary in HTML's _propsDeeplyInHTML before being added to mainObjects in _Object properties in HTML, so not filtered out of extraObjects - Moved full creation of mainObjects to start of _Dictionary in HTML - Similarly for _Dictionary in RTF, _Object properties in RTF * Correction: updated RTF generators in remaining places missing %rtf or %file * Correction: updated HTML generators in remaining places missing %xml or %file * Correction: Also escape type in RTF and HTML generators Launcher * New: When doing Backup or Restore on a repository, cleanup the resulting copy's area files (transaction files, temporary files, .cif files containing current locks) * Fix: Incomplete error log if error occurs during reconstruct: ===EXCEPTION DURING DUMP: 'Message not understood: #console' * Correction: For a Time-Limited verison, Help | About should show expiry date and days left even before logging in * Correction: Logic of which Reconstruction action radio buttons to allow was incorrect: - Full Database Recovery should only be allowed for system administrators. - In databases that give errors on initial query, should only allow Full Database Recovery * Cosmetic: Reconstruct window info text was laid out poorly for long database names and paths * Cosmetic: Corrected tab order of elements in Reconstructor * Cosmetic: Options Tool | User page heading shows 'Current user: ' prefix before user's name for clarity