diff --git a/public_html/deployment/classes/actionlog.class.php b/public_html/deployment/classes/actionlog.class.php
index f25221d6f332a8fd50f5af1ec4dde6f3d6832d7e..76528803fa182e25584271ea54c4d45ba24d96ab 100644
--- a/public_html/deployment/classes/actionlog.class.php
+++ b/public_html/deployment/classes/actionlog.class.php
@@ -347,10 +347,10 @@ class Actionlog
                 <div style="clear: both; margin-bottom: 1em;"></div>
                 <div id="tableLogactions"></div>
                     <!--
+                    -->
                     <script src="/vendor/vis/4.21.0/vis.min.js"></script>
                     <link href="/vendor/vis/4.21.0/vis.min.css" rel="stylesheet" type="text/css" />
                     <div id="divTimeline"></div>
-                    -->
                 </div>
                 <script>
                     var sMsgNolog="' . t("class-actionlog-nolog") . '";
diff --git a/public_html/deployment/js/functions.js b/public_html/deployment/js/functions.js
index e6161ebb083f42fd683bc1f99e9e3fdfaa8ea0ed..49ede774f6cba946fa474d8378993c9fda23f751 100644
--- a/public_html/deployment/js/functions.js
+++ b/public_html/deployment/js/functions.js
@@ -278,7 +278,7 @@ function updateActionlog() {
  * @returns {undefined}
  */
 function drawTimeline(aData) {
-    var sDataset = '';
+    var aDataset = [];
 
     var container = document.getElementById('divTimeline');
     if (!container) {
@@ -292,10 +292,15 @@ function drawTimeline(aData) {
             // var aTableitems=["id", "time", "loglevel", "ip", "user", "project", "action", "message"];
             sLabel = aData[i]["project"] + '<br>' + aData[i]["action"];
             sTitle = aData[i]["time"] + '<br>' + aData[i]["loglevel"] + '<br><br>Projekt: ' + aData[i]["project"] + '<br>User: ' + aData[i]["user"] + ' (' + aData[i]["ip"] + ')<br>' + aData[i]["message"];
-            sDataset += (sDataset ? ', ' : '')
-                + '{"id": ' + i + ', "content": "' + sLabel + '", "start": "' + aData[i]["time"].replace(/\ /, "T") + '", "title": "' + sTitle + '", "group": "' + aData[i]["project"] + '", "className": "loglevel-' + aData[i]["loglevel"] + '"  }';
+            aDataset.push({
+                "id": i, 
+                "content": sLabel,
+                "start": aData[i]["time"].replace(/\ /, "T"),
+                "title": sTitle, 
+                "group": aData[i]["project"], 
+                "className": "loglevel-" + aData[i]["loglevel"]
+            });
         }
-        aDataset = JSON.parse('[' + sDataset + ']');
 
         var items = new vis.DataSet(aDataset);
 
@@ -455,7 +460,7 @@ function filterTable() {
 /**
  * for project settings - generate api key
  * @param {integer}  length  length of the key to generate
- * @return {string}
+ * @returns {string}
  */
 function generateSecret(length) {
 
@@ -474,7 +479,8 @@ function generateSecret(length) {
  * initialize a shellcmd plugin
  * @param  {string}    sPlugin    name of the shellcmd plugin
  * @param  {function}  oRenderer  rendering function for incoming data
- * @param  {integer}   iTtl       ttl in minutes
+ * @param  {integer}   iTtl       ttl in seconds
+ * @returns {boolean}
  */
 function shellcmd_plugin_init(sPlugin, oRenderer, iTtl){
     var sDomid="divPluginshellcmd"+sPlugin;
@@ -487,6 +493,9 @@ function shellcmd_plugin_init(sPlugin, oRenderer, iTtl){
             "ttl":       iTtl,
         }
     );
-    // oUbdLoad.render('waiting for first data...');
+    // oUbd.render('waiting for first data...');
     oUbd.update();
+    return true;
 }
+
+// ----------------------------------------------------------------------
diff --git a/public_html/deployment/main.css b/public_html/deployment/main.css
index a96203829c54b855d0141adcd9bd300d703cbc5a..ce1d69d519acd17541b9903ffb9e62aa1f3d39ff 100644
--- a/public_html/deployment/main.css
+++ b/public_html/deployment/main.css
@@ -654,6 +654,7 @@ input[type="checkbox"]:checked+label {
 
 .visualprocess .process .details span {border-right: 3px solid #fff;}
 
+
 /* ----- replacemets with templates ----- */
 span.replace {
     background: #fc8;
@@ -661,13 +662,16 @@ span.replace {
 }
 
 /* ----- log table ----- */
+div.vis-item{
+    border: 0px ;
+}
 .loglevel-info {}
 
-.loglevel-warning {
+div.loglevel-warning ,.loglevel-warning {
     background: #fea;
 }
 
-.loglevel-error {
+div.loglevel-error, .loglevel-error{
     background: #fcc;
 }
 
@@ -681,6 +685,15 @@ div.logs {
     text-align: left;
 }
 
+/* ----- log view : timeline ----- */
+
+div.loglevel-info{
+    background: #ddd;
+}
+div.loglevel-success{
+    background: #8ea;
+}
+
 /* ----- valuestore browser ----- */
 
 #tbldata{