wiki:ReleaseNotes

Version 79 (modified by jri, 7 years ago) (diff)

4.1.3 release notes, pt. 5

Release Notes


2013-12-10: DeepaMehta 4.1.3 upcoming

to be continued

CHANGELOG

New features:

  • ### Box Renderer (#577).
  • ### View Customization Framework (#505).
  • The Apache Felix Gogo is included. That means you can e.g. start and stop DeepaMehta plugins, and even install new ones without restarting DeepaMehta.

GUI improvements:

  • Topicmap Panel:
    • ### New look & feel (Box Renderer) (#577).
    • Right-clicking the canvas brings up a Create menu with the same topic types as listed in the toolbar's Create menu. The created topic is positioned where the right-click is performed (#529).
    • In the topicmap the associations are displayd along with their values (as entered in the detail panel when an association is selected) (#34).
    • As a shortcut double clicking a topic or association enters edit mode (#526).
    • Clicking on canvas removes current topic/association selection (#523).
    • In various situations a proper cursor shape is shown: While something is moved a grabbing hand cursor is shown. While an association is drawn a crosshair cursor is shown (#552).
    • Topicmap uses full window height. There is no dead space at the bottom anymore (#543).
  • Detail Panel:
    • Redundant topics are suppressed in the detail panel's related topics listing. A topic is regarded redundant if 1) it is already represented in the detail panel's upper area (the "model-driven box structure"), and 2) there is a "Composition Definition" in the underlying model (#315).
    • The "what's related" topic listing in the detail panel is grouped by Topic Type (instead Association Type). Thus the group headings are more user friendly (#315).
    • In the detail panel's related topics listing for each topic the respective association type is shown beneath the topic (#315).
    • The direct child topics of the selected topic (which are not appearing anymore in the page panel's related topics listing) can be revealed via the page panel's upper area (which shows the nested boxes): when hovered the corresponding box it is highlighted and a pointer cursor appears. On click the underlying topic is revealed in the map (#315).
    • In the detail panel's "related topic" lists: when the topic is contained in the current topicmap its icon is surrounded by a thin red line (instead of dimming it). When such an icon is clicked the respective association is revealed (in case it was hidden) and the topicmap is translated to bring the topic into the viewport (in case it was outside the viewport) (#579).
    • The "what's related" topic listing in the detail panel is sorted case-insensitively (#521).
    • Long words (like file names) are line-breaked. No horizontal scrollbar appears in the detail panel (#537, #575).
    • Long topic labels in the detail panel's "related topic" lists are not truncated anymore. Formerly there was a limit of 50 characters (#315).
  • Menus:
    • Long menus (exceeding the screen) have a scrollbar. The former upper/lower "scrolling areas" are gone. You can use the mouse wheel or whatever gesture for scrolling (#534).
    • Menu items can be selected via 1-click gesture (mousedown-select-mouseup) or 2-click gesture (click-to-open, click-to-select) (#534).
    • All menus can be controlled via keyboard (#534).
  • Toolbar:
    • In the toolbar, beside the Create menu, there is a "Create Note instantly" button. It can be triggered via Alt-n. The button creates a Note topic instantly (#529).
    • When clicking the logged in username (upper/right corner) and the respective User Account topic is already contained in the topicmap but outside the viewport, the topicmap is translated to bring the revealed User Account into view (#570).

General improvements:

  • Aggregated composites can be edited via Detail Panel (#337, #30).

Plugin Development Framework:

  • The Webclient (actually the RESTClient) automatically processes directives sent by a plugin service. So a plugin resource method can return directives now. They are processed at client-side automatically (#556).
  • The DeepaMehta Core thoroughly uses Lists instead of Sets. One advantage is better performance (#559).
  • When calling a CompositeValue manipulator method (set(), setRef(), remove()) the passed set of Directives is extended by a UPDATE_TOPIC resp. UPDATE_ASSOCIATION directive (#576).
  • Core API Type interface: setDataTypeUri() has a directives parameter (#576).
  • Core API Type interface: setLabelConfig() has a directives parameter (#576).
  • Core API: there is a new model class: de.deepamehta.core.model.TopicReferenceModel: A reference to a topic, either by ID, or by URI (#574).
  • DeepaMehtaObject? API has a method to fetch child topics selectively (#522).
  • Extended server-side Topicmaps API (#544).
  • The JAX-RS Exception Mapper maps errors as well (not just RuntimeExceptions?) (#484).
  • Client-Side Plugin Framework: plugins can add icons and disabled items to the topic/association/canvas context menus (#529).
  • GUI Toolkit: disabled items can be added to menus (#529).
  • DM's GUITookit now supports context menus (#532).
  • New client-side event: pre_submit_form (#547).
  • New client-side event: association_doubleclicked (#530).
  • Webclient Renderer Framework: The page_model objects passed to a detail panel renderer (simple renderer or multi renderer) have an additional property: parent -- the parent page model (#567).
  • 2 new init events enable interwoven plugin initialization: init_2 and init_3 (#518).
  • 3rd-party plugins must no longer declare a deepamehta-core dependency.

Bug fixes:

  • When updating an aggregated composite no error occurs (#574).
  • The Caching plugin no longer prevents updating topics/associations which are not selected (and thus appearing in the page panel) (#547).
  • Changed Person data is saved properly also if its Address can't be resolved (via Google Geocoder) (#565).
  • Topicmaps keep URI when translated (#311).
  • A serialized topicmap contains the association values (#531).
  • The main toolbar's menus reveal all their items without scrolling (#534).
  • On a Mac where ctrl-click emulates the right mouse button: when invoking an association's context menu via ctrl-click the respective topic cluster does not stick to the mouse pointer (#517).
  • The canvas context menus do scroll when invoked near screen bottom (#534).
  • Sync view on file upload: Once an upload is complete the new file appears in the page panel immediately (#563).
  • Sync view on topic retype (#508).
  • Sync view on type change (#576).
    • When changing the "Include in Label" setting in a type form while the respective association definition is visible on the canvas, the association label on the canvas is updated (#564).
    • When changing a type's data type in a type form while the former data type and the association are visible on the canvas, the association disappears.
  • No accidental browser window scrollbars appear (#543).
  • File content renderer works when embedded in parent topic (#566).
  • Various client-side topicmap management oddities are fixed, e.g. after deleting a topicmap the selector does not show 2 "untitled" topicmaps (#520).

Further changes:

  • The overall Webclient style is flat. There are no gradients in buttons, menu items, dialog titles etc. (#532).
  • The "success" alertbox after a file upload is gone (#563).
  • The markup generated by dm4c.render.topic_list() contains no <table> anymore (#575).
  • The RESTClient no longer depends on the Webclient (#557).
  • The GUIToolkit menus and context menus rely on the jQuery UI Menu widget (#532).
  • Updates (#507):
    • jQuery 1.7.2 -> 2.0.3
    • jQuery UI 1.8.21 -> 1.10.3

2013-09-07: DeepaMehta 4.1.2

DeepaMehta 4.1.2 fixes just one geo-map related bug that was introduced in the previous release.

You can update an existing DeepaMehta 4.1.x installation while keeping your content or you can perform a DeepaMehta 4.1.2 clean installation. See the README for installation and update instructions.

CHANGELOG

Bug fix:

  • Editing a topic displayed in a geomap throws no error (#503). The error was introduced in DeepaMehta 4.1.1 in conjunction with caching/conditional requests.

2013-09-01: DeepaMehta 4.1.1

While DeepaMehta 4.1.1 has not much to offer for the end user it brings crucial bug fixes and various enhancements in the Plugin Development Framework. Main features of this release comprise Timestamps (not yet user perceivable) and a new Time API, better performance through exploitation of the browser cache, and Edit Conflict Detection for supporting collaborative work. Furthermore, plugin developers can attach arbitrary metadata to topics and associations. Numeric metadata is trie-indexed which make it suitable for time- and and geo-based range queries.

You can update an existing DeepaMehta 4.1 installation while keeping your content or you can perform a DeepaMehta 4.1.1 clean installation. See the README for installation and update instructions.

CHANGELOG

New features:

  • Timestamps (#386). Each topic/association have creation and modification timestamps. Timestamps are delivered along with topics/associations retrieved via the REST API. The new Time API allows programmatic timestamp access and topic/association retrieval based on time ranges. Timestamps are also the basis for validating the browser cache and for Edit Conflict Detection. The entire time aspect is realized as a separate module (dm4-time).
  • Exploiting the browser cache (#478). Consequent usage of intrinsic HTTP features (Last-Modified and Cache-Control response headers and If-Modified-Since request header) results in lesser network traffic and better perceived performance. The caching aspect is realized as a separate module (dm4-caching).
  • Edit Conflict Detection (#479). The server rejects a PUT request when the resource has changed meanwhile. The check is based on the resource's modification timestamp. This fights the "lost update" problem when working collaboratively. Edit conflict detection is realized at HTTP level, that is a conditional PUT request (involving an If-Unmodified-Since request header). Conflict resolution is not yet realized.

Plugin Development Framework:

  • The new Property API allows plugins to attach Node Properties to topics and associations. Node properties are metadata like timestamps, ACL information, or geo coordinates. Topics/associations can be retrieved based on property value or value range (#472). Node properties can be indexed. Numeric properties are trie-indexed which allows for performant range queries (#490). Property keys are namespaced (#491).
  • HTTP response generation:
    • A plugin can produce specific HTTP (error) responses by throwing a WebApplicationException from its resource methods or event handlers (#484, #481).
    • Exceptions thrown from resource methods or event handlers must no longer be wrapped in a WebApplicationException if a 500 response is intended (#484).
  • The entity parameter (represented in the message body) of a REST resource method can use an arbitrary class as long as the representation is JSON and the class has a public JSON constructor. Implementing a custom JAX-RS provider class (a message body reader) is no longer required (#277).
  • 3 new Core Events:
    • SERVICE_REQUEST_FILTER allows plugins to manipulate or interrupt REST service requests (#480).
    • RESOURCE_REQUEST_FILTER allows plugins to manipulate or interrupt static resource requests (#480).
    • SERVICE_RESPONSE_FILTER allows plugins to manipulate REST service responses, e.g. by setting certain response headers (#477).
  • Webclient:
    • (Client-side) plugins can send REST service requests asynchronously (#476).
    • New Webclient event (client-side): pre_send_request allows plugins to investigate and manipulate a request before it is send to the server (#486).
    • The default topicmap view model is renderer agnostic. It is reusable by custom topicmap renderer implementations (#443).
  • Access Control API: there are methods for retrieving topics/associations based on creator or owner (#458).
  • Core Service: there are methods for retrieving all topics/associations from the DB. These are useful for migrations which transform the entire database (#495).
  • Core API and standard plugin APIs: the clientState parameter is no longer required in get/retrieve/delete service methods (#496).

Bug fixes:

  • Login/Logout:
    • Logout works for private DM installations as well. (A private installation is one with read_requires_login=true.) Missing HTTP Logout is worked around by bringing up a bogus browser login dialog (#423).
    • Login works for open DM installations as well. (An open installation is one with write_requires_login=false.) (#475).
    • When the user enters wrong credentials in DM's login dialog the browser's login dialog does not appear. The user stays in DM's login dialog (#471).
    • When the user enters neither a username nor a password in the login dialog and presses OK no error occurs (#473).
  • The type loader doesn't throw a bogus "Endless recursion" exception when repeatedly tried to load a type with an invalid URI (#487).
  • Exceptions thrown from request filters (formerly servlet filters) appear in the log file (if file logging is activated) (#474).
  • Webclient model update:
    • When processing the directives of an update request the dm4c.selected_object is properly updated (#488).
    • Construction of the object model passed to a topic/association update request no longer manipulates the dm4c.selected_object in place. This allows a plugin to investigate the selected object's metadata (e.g. timestamps, access control information) before the request is send (#486).
  • Requests issued by the Webclient have no superfluous "?" character at the end as it might confuse the browser's or network proxy's cache heuristic (#483).
  • Web application plugins (derived from WebActivatorPlugin) are detected as DeepaMehta plugins. The ALL_PLUGINS_ACTIVE event is fired properly (#498).

Further changes:

  • The dependency on Felix's proprietary "Extended HTTP Service" is dropped. Thus we are ready to replace Felix HTTP Service with OPS4J Pax Web soon (#448). OPS4J Pax Web is the far more modern and flexible OSGi HTTP Service implementation which enables e.g. server push and WebSockets as well as binding the web server socket to a specific network interface (#39).
  • Core Service REST API: the URLs for topic/association update (PUT) requests are REST-conform (#482).
  • The REST service no longer enriches topic/association responses with user-related permission information. Instead permissions are explicitly requested through the Access Control service (#489). This makes topic/association responses eligible for the browser cache (#478).
  • The DeepaMehta Karaf Distribution comes with the same default configuration as the DeepaMehta Standard Distribution (#447).
  • COPYRIGHT.txt is updated (#434).

2013-03-11: DeepaMehta 4.1

DeepaMehta 4.1 is the most important DM4 release so far as it comes with a Data sustainability guarantee. For the first time, data you enter in DM4 is guaranteed to be transferred to all future DM4 releases automatically. So, you can start real DM4-based projects with real data now.

Besides that, there are fixes of crucial bugs and some improvements in usability and functionality. Furthermore the DM Core is further optimized and the plugin development framework is improved. Update operations perform faster. Plugin developers benefit from a DB-attached CompositeValue object which simplifies complex update operations.

GUI improvements:

  • In the type builder: easy navigation to a type's View Configuration (#364).
  • Clicking the user name link in the upper/right corner reveals the User Account topic of the current user. This is useful for changing the password (#415).
  • The "Edit" command is also available in the topic's and association's context menu (#416).

Further improvements:

  • File browser access control: the "Upload File" and "Create Folder" commands are available only for authorized users (#409).
  • Encoded passwords are not visible in the webclient (#375).
  • More complex searches for composite topics: you can e.g. search a person by its entire name. And you can search Persons or Institutions by combined Address terms (#420).
  • Updating composite values perform faster (#339).
  • More familiar wording of DM Core concepts: "Parent/Child" replaces "Whole/Part". This benefits both, API and GUI (#67).
  • For developers: the Neo4j Shell can be launched while DeepaMehta is running [3601ae4a].

Access Control bug fixes:

  • The admin user can change hers password (#369).
  • A User Account is editable only by a) the respective user, and b) by the creator of the User Account (#375).
  • The View Configurations of the standard types, e.g. Person, can be edited via GUI. They have access control information and Workspace assignments (#377).
  • Association types get Workspace assignments (analogous to topic types) (#376).

Further bug fixes:

  • View Configuration default values are reflected in the GUI. In particular the "Viewable", "Editable", and "Rows" settings are no longer changed by accident (#208).
  • Multiple-value fields (cardinality "Many") can be involved in labeling rules (#250).
  • Search topics and Webpage topics show no "Edit" button (#259, #248).
  • After a multi-facet update topics do not appear twice in the webclient (#339).
  • Deleting all Email Addresses or Phone Numbers from a Person or Institution does not throw an error (#414).
  • A Person or an Institution can still be updated if Address child instances (Street, Postal Code, City, Country) are missing (#407).

Plugin Development Framework:

  • The core class CompositeValue is attached to the DB. So, for complex update operations of composite values the plugin developer must not care about model updates vs. DB-updates. The underlying model and the DB are always in-sync automatically. CompositeValue is now on a par with all the other Core objects (#339).
  • Composite values are loaded lazily (#411).
  • The core classes CompositeValue and CompositeValueModel provide convenience accessors which take a "defaultValue" argument (#418).

Updating from previous DeepaMehta versions is not supported.

See the README for installation instructions.


2013-01-30: DeepaMehta 4.0.14

Main focus of DeepaMehta 4.0.14 is better Performance for large data amounts. Read about the problem background in this posting.

DeepaMehta 4.0.14 comes with a completely rewritten storage layer.

Main aspects of the new storage layer:

  • High-speed traversal: Traversal is significantly speed up by the means of a Lucene index for association metadata. In particular, highly connected nodes (so called "supernodes") have no negative impact on traversal speed (#389).
  • Compact architecture: The concept of a DM-independant MehtaGraph API is abolished. A storage implementation is coded directly to the DeepaMehta Model API. The additional bridging layer is dropped. There is no dependency on the external Neo4j MehtaGraph library anymore (#389).
  • Modular storage layer: a service provider interface (de.deepamehta.core.storage.spi.DeepaMehtaStorage) allows 3rd-party developers to implement alternate storage layers for DeepaMehta, based on DBs other than Neo4j. A Storage layer implementation is deployed as an OSGi service (#391).
  • 1st-class associations: Association user data is indexed as well (just like topic user data) (#389).

Additional performance measures:

  • For DB read operations no transactions are created (#406).
  • Delivering core events involves no runtime reflection (#352).

Further improvements:

  • The AssociationDefinition API is simplified and redundancy is removed from the serialization format (#393).
  • Neo4j is updated from 1.8 to 1.8.1

Bug fixes:

  • This exception should no longer occur (#392): java.lang.IllegalArgumentException: Reference error: ID 1234 refers to a MehtaEdge when the caller expects a MehtaNode
  • Association's Instantiation associations can be queried by type (#338).

Updating from previous DeepaMehta versions is not supported.

See the README for installation instructions.


2012-12-24: DeepaMehta 4.0.13

One main aspect of this release is to revoke the Performance loss introduced in DeepaMehta 4.0.12 in conjunction with Access Control. DeepaMehta 4.0.13 uses a different storage approach for access control information and thus returns to the old performance. Further highlights include: Geomaps are a new topicmap type for displaying geo-related topics on an OpenStreetMap. A graphical Association Type Editor allows the user to create custom association types. Furthermore, a whole bunch of GUI changes improves usability e.g. through Cluster Moves and more informed Topic Revelation.

Of interest for administrators of a client-server installation is the new Apache Karaf-based DeepaMehta distribution. This makes it easy to run DeepaMehta as a daemon process and to access it via a remote shell. Starting from version 4.0.13 DeepaMehta comes in 2 flavors: the known "Standard Distribution" which focuses on small download size and easy setup for single users and the Karaf Distribution for client-server setups.

Furthermore, DeepaMehta 4.0.13 is ready for server-side HTML generation based on Thymeleaf templates. So, along with single-page AJAX applications, the DeepaMehta plugin/application developer can choose between 2 architectural styles. To start with server-side HTML generation install the external DeepaMehta 4 Web Activator plugin. Please note: while being functional, this plugin is in an very early state.

Several improvements in the DeepaMehta framework further simplify the life of plugin developers, in particular when listening to events and providing/consuming services. Last but not least several 3rd-party components have been updated, most notably Neo4j 1.2 -> 1.8.

Updating from previous DeepaMehta versions is not supported.

See the README for installation instructions.

A list of the DeepaMehta 4.0.13 main changes follows. For each item detailed information for users and developers is found in the linked tickets and commit messages.

New Features:

  • The Geomaps plugin is included (#379). Find usage info here: https://github.com/jri/dm4-geomaps
  • Apache Karaf-based distribution for easy client-server setup and maintenance (#349).
  • Association Type editor: Allows the user to create custom association types. The color is configurable on a per-type basis. Simple and complex association types are supported (analogous to topic types) (#48).
  • Association instance editor: Let the user enter data for an association instance according to the association's type definition (analogous to topic types) (#335).
  • For developers: Server-side HTML generation with Thymeleaf templates (#365).

GUI Improvements:

  • Topic revelation via Page Panel:
    • More informative page panel: Topics which are already visible on the canvas are displayed with an disabled icon. This provides a useful hint when revealing topics (#308).
    • Differentiated gestures for revealing topics via the page panel: a) Clicking the topic's icon reveals it, b) Clicking the topic's label reveals and focuses it (#387).
    • Page panel: Associations are grouped by type, using the association type names as group headers (#256).
  • Optimized Canvas:
    • Cluster move: Moving an association moves the visually connected subnetwork (#327).
    • Canvas auto-panning ensures that auto-positioned topics are always visible within in the current viewport (#303).
    • Topic labels on canvas: a) Line breaks are preserved, b) Long labels are truncated (#300).
  • Working with associations:
    • Keyboard shortcut: Create associations via shift-drag (#304).
    • Once an association is created the Edit mode is entered automatically (#314).
    • When an association is retyped the association form is updated immediately. The user must no longer leave and re-enter the form (#347).
  • Fulltext seach: Wildcards, phrase search, and escaping is supported (#302).

Further Improvements:

  • Performance: A different storage aproach for the Access Control information brings back the performance known from DM 4.0.11 and before (#344).
  • Better support for virtual host environments: The new config property dm4.host.url allows the admin to specify the installation's public URL [a9ffcf77].
  • Data model: Meta Types are applicable as child types in association definitions (#363).
  • 3rd-party components are updated, most notably Neo4j 1.2 -> 1.8 (#350).
  • Internal: Refactored object fetch/store code (#340).

Bug Fixes:

  • Handle transitive plugin service dependencies (#351).
  • Join users to workspaces: Interactively created associations between a Username and a Workspace are editable (#331).
  • Delete search topics (#317).
  • Don't select toolbar accidentally (#301).
  • Don't create circular associations [36791f41].
  • Edit an association type's View Configuration interactively (#342).
  • Edit a meta type's View Configuration via REST API (#378).
  • Redeploy the Core while active HTTP sessions exist (#299).

Plugin Development Framework:

  • Simplified service providing/consumption:
    • A plugin consumes services by annotation. The consumedServiceInterfaces config property is no longer required (#367).
    • A plugin's provided service is automatically picked up by the Core. The providedServiceInterface config property is no longer required (#368).
  • Further server-side improvements:
    • The concept of "internal plugin events" is replaced by method overriding. Thus, importing certain Listener interfaces is no longer required (#366).
    • Flexible REST resources registration: A plugin which provides no Root Resource can still provide JAX-RS Provider classes [2b464811].
    • More efficient aggregation update logic and idempotent operations (#319).
    • 3 new core events: PreUpdateAssociation, PostUpdateAssociation, IntroduceAssociationType [654d9c7b][3645932c].
    • The "association" part of a RelatedTopic is serialized (#266).
  • Client-side improvements:
    • Client-side load mechanism for auxiliary scripts: Scripts located in script/helper/ are loaded synchronously before the plugin is loaded. This allows e.g. renderers to share a common base class (#372).
    • New client-side event option_topics allows filtering the selection lists. Applies to both, combo boxes and checkbox lists (#345).
    • Webclient API: The Topic's and Association's composite property contains true Topic objects (instead of plain JavaScript objects) and thus provides access to the client-side Topic API [3105fee2].

2012-09-18: DeepaMehta 4.0.12

This release is all about publishing and collaboration. For the first time there are Access Control and Security features. This enables a whole range of new use cases for DeepaMehta. Topicmap Publishing: everybody can access published topicmaps in a read-only fashion while the topicmaps are still fully interactive. Team Collaboration: per-object Access Control Lists (ACL) and 5 differentiated user roles allow fine-grained control about who has access to what (not yet configurable via GUI). File Sharing: authorized users can upload files to a structured repository and enable common access.

For plugin developers there are fundamental improvements as well. More Convention Over Configuration simplifies plugin development significantly and provides a much more dynamic feeling. As another highlight, Hot Deployment finally works as expected and makes the edit-compile-run cycle a true breeze.

Usage and configuration hints about the new use cases are summarized in a mailing list posting. The remainder is a detailed list of all changes in DeepaMehta 4.0.12. Usage and configuration hints for each change are found in the linked tickets and commit messages.

New Features:

  • Access Control Foundation (#262).
    • Each topic, association, and type is attached with a Access Control List. There are 2 operations: WRITE, CREATE. There are 5 user roles: CREATOR, OWNER, MEMBER, USER, EVERYONE.
    • Scenario 1: Publishing fully interactive read-only topicmaps (#269).
    • Scenario 2: Fully closed workgroup installations [a661efb0].
  • Backend Security (#293).
  • Shared File Repository (#291).

Improvements:

  • The detail panel lists the topics associated with the selected association (#306).
  • Modelers can utilize a Checkbox Renderer for multiple selection (#270) [6c4d87ad].
  • Launching and reloading the Webclient is speeded up (#286).

Bug Fixes:

  • For plugin developers: Hot Deployment works as expected. When a plugin is re-compiled the OSGi runtime shuts it (and only it!) down and redeploys it automatically. All dependencies to other plugins are handled by the framework (#272, #274).
  • Pressing the Return key inside a (multi-line) text area, e.g. the CKEditor's source view, does not trigger the OK button (#206, #288).
  • The default Topic Renderer works with hidden many composite child topics (#283).

Plugin Development Framework:

  • More Convention Over Configuration:
    • A plugin's REST resources and (JAX-RS) Provider classes are registered automatically. Plugins must no longer provide (JAX-RS) Application classes nor do manual configuration (#272) [a39e39c1].
    • All (JAX-RS) Provider classes are available to all plugins automatically [44d49e12].
    • A plugin's client-side main file is picked up automatically (#276) [b30004d6].
    • A plugin's custom renderers are picked up automatically (#284) [19aca819].
    • A plugin's CSS stylesheets are picked up automatically (#285) [2bee421c].
    • Plugin developers must no longer care about firing PRE_SEND (formerly POST_FETCH) events (#297, #268).
    • A plugin's client-side part is no longer required to contain a main file (plugin.js). This is perfect for plugins whose only purpose is to provide custom renderers [3a4a0cbe].
  • Plugin infrastructure:
    • A plugin can publish a directory of the server's file system to the web (#292) [dea0910b].
    • A plugin can register a (Servlet API) filter (#293) [520c95c0].
    • A plugin's client-side part is namespaced per URI for friendly co-existence (#275) [082a4651][faf8d006].
    • Custom renderer implementations (page renderers, simple renderers, multi renderers) are namespaced per URI for friendly co-existence (#282) [9bb0c6a7][4aab34b1].
    • A plugin can register listeners for 4 new Core Events: PRE_CREATE_ASSOCIATION, POST_CREATE_ASSOCIATION, PRE_SEND_ASSOCIATION [98fb628d], INITIALIZE_PLUGIN [435f4285].
    • A plugin can operate on the logged in user's HTTP session (#293) [faa7485e].
  • Renderer Framework:
    • New renderer type: Multi Renderer. A plugin can provide custom renderers for multi-value topics (in conjunction with cardinality "Many") (#270) [6c4d87ad][7fe0a806].
    • Topicmap renderers have a server-side part as well (#294).
  • Core consolidation and optimization:
    • The core service is now able to process update requests where aggreagted composite child topics are involved (#30, #267).
    • For handling core events plugins implement listener interfaces instead of overriding methods. A plugin's listeners are registered automatically. The core delivers events to the registered listeners instead of iterating over all plugins. This is the more efficient approach (#261) [b59fff18].
    • The application layer is separated from the network layer. This avoids high-rate firing of unnecessary core events (#268).
    • Core is modularized and its API is cleaned up (#281).
  • Miscellaneous:
    • The Proxy plugin is dropped. Its features are transfered to the Files plugin (#292).
    • The Facets plugin is included to the DeepaMehta Standard Distribution (required by the Access Control and Workspaces plugins).
    • The Javadoc Maven plugin is configured to generate cross-referenced API Docs with inlined class hierarchy diagrams [5d6b13bc].
    • A lot of API changes and extensions in various plugins, e.g. the Facets API supports multi-value facets.
    • Updated jQuery 1.7 -> 1.7.2 and jQuery UI 1.8.16 -> 1.8.21

Updating from previous DeepaMehta versions is not supported.
See the README for installation instructions.


2012-05-19: DeepaMehta 4.0.11

This release provides substantial improvements for users and a serious bunch of under-the-hood improvements for developers. For regular users the highlight feature is Implicit Saving: the user must no longer care about saving; DM automatically ensures nothing is lost. The highlight feature for power users who create custom data models is the Type Editor with support for Cardinality "Many" at last. Last but not least 3 external plugins have been updated in order to be compatible with this release.

Improvements:

  • Implicit Saving. The user must no longer care about saving. DM ensures nothing is lost, e.g. when the user selects another topic while being in edit mode. The "Save" and "Cancel" buttons are replaced by an "OK" button. The "OK" button just allows the user to say "I'm done with editing". There is no need to press it. (#243).
  • The detail panel's type editor is now fully functional. Select a type and press "Edit". You can change the Association type (Composition or Aggregation) and Cardinality (#77).
  • Consolidated data model: the "many" cardinality is now operational. For "many" the detail panel's form generator automatically provide the user with "Add another ..." and "Remove" buttons. Thus, its easy to add e.g. another phone number or email address to a Person topic (#76).
  • Nested detail panel rendering: The detail panel visualizes the composite structure as nested boxes, filled with a distinct color for each nesting-level. This is useful in particular with cardinality "many" (#104).

Bug Fixes:

  • Links in the detail panel's Associations list are truncated (#247).
  • Invalid association definitions doesn't prevent the Webclient from starting (#253).

Plugin development framework:

  • Webclient: revised FieldRenderer? and PageRenderer? APIs make the plugin code more clean [ebcbb429][7e5cdfd0][d0a960cc][d3f656e2].
  • Core: An ObjectFactory? supports the development of system-near plugins, like e.g. the Type Editor [c57ca5fb][c0034f0c][2b77e475].
  • The core service accepts update requests in 2 formats: the canonic format and a simplified format. The former contains full topic models and is required for cardinality "many" associations. The latter contains just the topic values and is sufficient for cardinality "one" associations. Within one request both formats can be mixed (#237).
  • The updateTopicType() core service call returns a set of directives. Thus, a client is provieded with detailed hints about how to keep the GUI in-sync [377ed738].
  • New directive DELETE_TOPIC_TYPE [37c66c51].

Compatibility with 3 updated plugins (optional install):

Updating from DeepaMehta 4.0.7 or later is supported.
See the README for installation and update instructions.


2012-03-24: DeepaMehta 4.0.10

This minor release just contains 2 bug fixes.

Due to other work like building the new www.deepamehta.de website this release took a comparatively long time. Now we're back on the development track.

Bug fixes:

  • The Back button works cross-topicmap again (#231).
  • Building from scratch with a pristine maven repo works again (#234).

Updating from DeepaMehta 4.0.7 or later is supported.
See the README for installation and update instructions.


2012-02-03: DeepaMehta 4.0.9

This is a pure bug fix release that fixes the new CKEditor (introduced in yesterday's release).

Bug fix:

  • CKEditor works in non-english environments (#191).

Thanks Matthias Melcher for reporting!

Updating from DeepaMehta 4.0.7 or later is supported.
See the README for installation and update instructions.


2012-02-02: DeepaMehta 4.0.8

This release features an alternative WYSIWYG editor. CKEditor provides a much better look & feel than TinyMCE. Furthermore it loads faster, that is it appears more instantly when pressing the Edit button. http://ckeditor.com/

GUI improvement:

  • CKEditor replaces TinyMCE (#189).

Plugin development framework:

  • Client-side "post_destroy_form" hook replaces "post_submit_form" and has slightly changed semantics [a9939b89].

Updating from DeepaMehta 4.0.7 is supported.
See the README for installation and update instructions.


2012-01-19: DeepaMehta 4.0.7

The main feature of this release is the compatibility with the "DM4 Kiezatlas 2.0" plugin and the attendant plugin development framework extensions. Furthermore there are some general GUI improvements and bug fixes.

Compatibility with 1 new plugin (optional install):

Compatibility with 2 updated plugins (optional install):

GUI improvements:

  • Auto-positioned topics appear near selection. This results in less mouse drags and less canvas clutter (#174).
  • New icon for "search result" that replaces the bucket: a pile of balls [69aa3fd4].

Bug fixes:

  • The topicmap state (translation) is persistent after auto scroll (#170).
  • Deleted associations resulting from combobox value changes are removed from the canvas (#176).

Plugin development framework:

  • Webclient performance improvement through new hook mechanism: hook code is explicitly registered at the webclient (instead of placed in dedicated methods) (#173).
  • Customizable GUI:
    • Decouple canvas from page panel: the topic selected on the canvas and the topic displayed on the page panel can be a different one [ce27623b][ac819a9a].
    • Customizable page panel rendering in case of nothing is selected (new hook default_page_rendering). Splash screen by default. [40cb0f8f].
    • The default page renderer and form generator are customizable (new hook pre_render_page) [69866e36][bb7cc70b][af4f2ff9].
  • More flexible update requests: plugins can attach application-specific data to update requests and provide the corresponding server-side processing logic [b54822fc].
  • More convenient client-side API for accessing (nested) topic values [616e35d6].
  • Cleaner exception logs from REST resource methods [ebd02479].

2011-11-27: DeepaMehta 4.0.6

This release has mostly improvements for plugin developers. It is compatible with 2 new external plugins (see below). There are some GUI improvements though.

The DeepaMehta 4.0.6 installation is described in the README. You must perform a clean install. You can't use content from a previous DeepaMehta installation.

New feature for plugin developers:

  • Map type extension architecture: plugins can provide additional map types, e.g. a geo map or a time map (#52). Each map type can have a distinguished data model, rendering facility, and interaction style.

Improvements for plugin developers:

  • Clients can benefit from an extended composite value format (#146).
  • Server-side plugins can extend a topic before it is send to the client (new postFetchTopicHook) [874271b8].
  • Client-side plugins can access the model of the selected topicmap (#147).
  • Client-side plugins can set/get the split panel's slider position (#148).

GUI improvements:

  • Topicmaps remember their translation (#154).
  • Design: the toolbar is more plain and saves screen space.
  • Design: the entire GUI uses an uniform font.

GUI fix:

  • Menus opened within dialog boxes are not constrained to the dialog box dimension (#165).

Compatible with 2 new plugins (optional install):

Updated 3rd party components:

  • jQuery 1.7 (updated from 1.4.2)
  • jQuery UI 1.8.16 (updated from 1.8.2)

2011-10-20: DeepaMehta 4.0.5

There are crucial Windows and Apache related bug fixes and 3 hot features.

New features:

Fixes:

Improvements for developers and power users:

  • Plugins can interfere with browser history and permalink construction (#106) [448e95cd].
  • Extended webclient view configuration: also complex child types can be non-viewable/non-editable.
  • Extended REST API: create association types. See REST API.

2011-09-27: DeepaMehta 4.0.4

Main features of this release are file management, GUI customization, and daemon support.

New features:

  • Icon picker: change the topic type icons (#49). See usage info.
  • Custom icons: attach your own icons to topic types (#49). See usage info.
  • User-defined topic labeling rules (#41). See usage info.
  • File management*): View/play your text/image/audio/video/PDF files right in DeepaMehta (#78). See usage info.
  • File browser*): browse your disk (#90). See usage info.
  • Configurable proxy service*): access local and remote resources (#90). Interesting for client-server installation. See usage info.
  • Running DeepaMehta server as a daemon (#46). Interesting for client-server installation. See Ubuntu daemon setup.

Improvements:

  • User-defined child type order (for content panel rendering) (#77). See usage info.
  • First support for larger topic amounts (thousands of topics) (#98).
  • Search results are alphabetically sorted (#69).
  • Design: smaller icon rendering in content panel and menus.

*)These features doesn't work on the Windows platform. There is a known bug (#91). It will be fixed in the upcoming 4.0.5 release.


2011-08-22: DeepaMehta 4.0.3

After a long series of backend changes the focus of this release is to bring the frontend on a par. This release brings 2 new featues and a lot of GUI improvements and fixes.

New features:

  • Webbrowsing (early state): render webpages directly in DM! Right in the content panel or in a separate window/tab. URL topics provide 2 commands: "Open URL" and "Open URL in new window". (#21, #73)
  • Type Search: query all topics of a given type (#68)

Improvements:

  • More intuitive Create menu (#11)
  • Focus first input field when creating a new topic (#12)
  • Trigger Save by hitting Return (#13)
  • Create topics via keyboard (#14)
  • Type Resource is now called Web Resource. URL field first. (#20)
  • The webclient has a "favicon" (#44)
  • Creating a bunch of topic types without caring about unique URIs (#58)
  • The webclient's URL is simply http://localhost:8080/ (#66)
  • Topic type menus are sorted (#68)
  • About box with version/license info and credits (#36, #70)
  • Minor design and layout improvements

Fixes:

  • Closing menus when clicking elsewhere (#29)
  • Proper dragging when creating an association (#31)
  • Searching requires a given search term (#57)
  • Toolbar menus reflect renamed topicmaps and workspaces (#59)
  • Suppress pointless browser window scrollbars (#60)
  • Long menus do scroll instead the entire browser window (#71)
  • Fix canvas drawing and event handling oddities (#72)

Improvements for Developers:

  • No webclient 404/503 errors when build from source (#17) [4391f3ef]
  • Multi-context commands: A plugin can attach its commands to both at the same time, the context menu and the page panel (#21) [baad6eb7]
  • Revised file upload support [b593ce31]
  • URL topics can be queried by their URL (#55) [a58824f2]
  • Plugin authors can specify a custom URI namespace where the plugin's web resources are mapped to (#66) [3aa32aba]
  • A request to a / web resource is mapped to /index.html (#66) [3aa32aba]
  • REST API: "getRelatedTopics" request provides 3 more filter parameters [45e6dc93]
  • Page Renderer classes can CSS style the content panel [326556d8]
  • Access the webclient's toolbar via a dedicated toolbar object [80754bd8]
  • JavaScript? GUIToolkit API simplified and more object-like [aa9f8453][be5c4133]

2011-08-02: DeepaMehta 4.0.2

This release fixes a bug (https://trac.deepamehta.de/ticket/28): There was an encoding issue with the binary distribution in a client/server setup. This is now fixed. No problems with umlauts anymore.

Download: https://github.com/downloads/jri/deepamehta/deepamehta-4.0.2.zip

For installation and update instructions see the README: https://github.com/jri/deepamehta#readme


2011-07-28: DeepaMehta 4.0.1

This release fixes a bug: when editing an association (e.g. retyping) the role types are not compromised (ticket #18).
Thanks Malte for reporting!

You can update a 4.0 installation while keeping your content.
However, a 4.0.1 clean install is recommended (see comments on ticket #18).

See the README for installation and update instructions:
https://github.com/jri/deepamehta#readme

Download:
https://github.com/downloads/jri/deepamehta/deepamehta-4.0.1.zip

Build/Update? from Source:
https://trac.deepamehta.de/wiki/BuildFromSource

Furthermore, these 3rd party components are updated in 4.0.1:

  • Jersey 1.5 -> 1.8
  • Jettison 1.2 -> 1.3
  • Neo4j Mehtagraph 0.7 -> 0.8

2011-07-24: DeepaMehta 4.0

Related to the 1st release candidate (4 days ago) there is just one Firefox-related bug fix.
Thanks Matthias for reporting!

Download:
https://github.com/downloads/jri/deepamehta/deepamehta-4.0.zip

Build from Source:
https://trac.deepamehta.de/wiki/BuildFromSource

Further information in the README:
https://github.com/jri/deepamehta#readme


2011-07-20: DeepaMehta 4.0 RC1

This is the first release with the all-new property-less data model as recently described:
https://groups.google.com/group/deepamehta3/browse_thread/thread/a77704d35e7af539>

The version planned as "DeepaMehta 3 v0.5" now become "DeepaMehta 4.0".
From now on DeepaMehta's version numbers follow the classic major.minor.bugfix schema.

Improvements for users:

  • new type editor. All values are represented as reusable semantics-attached topics.
  • new topic type "Resource" to collect web resources
  • new icons
  • bug fix in topicmap handling (when you have multiple topicmaps open)
  • cleaner display, less clutter

The cleaner display is because not all the plugins (workspaces, time, access control, ...) are adapted to the new data model so far. So, for the moment there is not so much meta data displayed (timestamps, workspaces assignments, creator, modifier, ...).

Improvement for developers:

  • New core service API. All the domain objects (Topic, Association, ...) are attached to the database. So, the developer must not care about DB-updates.
  • Domain models (type definitions) provided by a plugin can be build upon the domain models provided by other plugins. The dependencies are handled by the framework.

Download the release:
https://github.com/downloads/jri/deepamehta/deepamehta-4.0.RC1.zip Start as usual via the provided startscripts.

Build from Source:
https://github.com/jri/deepamehta/wiki/Build-From-Source

For further information see the README:
https://github.com/jri/deepamehta#readme

Troubleshooting:
If the browser shows 404 while this exception appears in the terminal ...
com.sun.jersey.api.container.ContainerException: No WebApplication provider is present
... then refresh the HTTP Jetty Bundle by typing "refresh 1" in the terminal (checkout the proper bundle ID before by using the "lb" command).

Thanks go to Jürgen and Danny who helped to organize this release!