diff --git a/public_html/deployment/classes/actionlog.class.php b/public_html/deployment/classes/actionlog.class.php
index 7eb14abe6d24613637edac6ba1a66d7437e87a8f..c75eac73f4663dc46f1d485e2adbd9ebc88b043a 100644
--- a/public_html/deployment/classes/actionlog.class.php
+++ b/public_html/deployment/classes/actionlog.class.php
@@ -23,7 +23,20 @@ class Actionlog {
           `action` TEXT,
           `message` TEXT
         )';
-
+    /*
+    private $_sCreateFUTURE = '
+        CREATE TABLE "logs" (
+          `id` INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL  UNIQUE ,
+          `time` DATETIME,
+          `time-start` DATETIME,
+          `loglevel` TEXT,
+          `ip` TEXT,
+          `user` TEXT,
+          `project` TEXT,
+          `action` TEXT,
+          `message` TEXT
+        )';
+        */
     /**
      * constructor - sets internal environment variables and checks existence 
      * of the database
@@ -72,6 +85,11 @@ class Actionlog {
         // echo "<pre>$sSql</pre>";
         $db = new PDO("sqlite:" . $this->_dbfile);
         $result = $db->query($sSql);
+        /*
+        if(!$result){
+            echo "PDO ERROR " . print_r($db->errorInfo(), 1) ."<br>";
+        }
+         */
         $db = NULL;
         return $result;
     }
@@ -81,8 +99,9 @@ class Actionlog {
      * @param string $sMessage   message
      * @param string $sAction    project action; i.e. build, deploy, ...
      * @param string $sLoglevel  loglevel
+     * @return type
      */
-    public function add($sMessage, $sAction = "", $sLoglevel = "info") {
+    public function add($sMessage, $sAction = "", $sLoglevel = "info", $sTimeStart = false) {
         if (array_search($sLoglevel, $this->_aLoglevels) === false) {
             die(__class__ . ": loglevel $sLoglevel is invalid");
         }
@@ -97,8 +116,24 @@ class Actionlog {
             '" . $sMessage . "'
           );
         ";
+        /*
+        $sqlFUTURE = "INSERT INTO `logs` (`time`, ".($sTimeStart ? "`time-start`, " : "" )." `loglevel`, `ip`, `user`, `project` ,`action`, `message`)
+          VALUES(
+            '" . date("Y-m-d H:i:s") . "',
+            ".($sTimeStart ? "'" . $sTimeStart . "', " : "" ) ."
+            '" . $sLoglevel . "',
+            '" . $this->_sIP . "',
+            '" . $this->_sUser . "',
+            '" . $this->_sProject . "',
+            '" . $sAction . "',
+            '" . $sMessage . "'
+          );
+        ";
+         * 
+         */
         // echo $sql . "<br>";
-        $this->_makeQuery($sql);
+        $oResult=$this->_makeQuery($sql);
+        return $oResult;
     }
 
     /**
@@ -200,7 +235,7 @@ class Actionlog {
             );
             
             // --- list of all projects in log
-            $sSql='SELECT DISTINCT(project) from `logs`';
+            $sSql='SELECT DISTINCT(project) from `logs` order by project asc';
             $aForms["filter"]["form"]['selectproject'] = array(
                     'type' => 'select',
                     'name' => 'selectproject',
@@ -281,9 +316,14 @@ class Actionlog {
         $sReturn = '<div id="divActionlogs">'.$oForm->renderHtml("filter").'
                 <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").'";
+                    var sMsgNolog="'.t("class-actionlog-nolog").'";
                 </script>';
 
         if ($bIsFullsearch){
@@ -325,5 +365,5 @@ class Actionlog {
         }
         return $sReturn;
     }
-
+    
 }
diff --git a/public_html/deployment/classes/html.tpl.php b/public_html/deployment/classes/html.tpl.php
index c2fbb31f77c8e5c3280f1472444a09b1d4137542..60ce8573bf946e0e9050fb0e3378aee62025a968 100644
--- a/public_html/deployment/classes/html.tpl.php
+++ b/public_html/deployment/classes/html.tpl.php
@@ -11,10 +11,12 @@
         not html5 valid:
         <meta http-equiv="cleartype" content="on">
         <link href="/deployment/bootstrap3/css/bootstrap-theme.min.css" rel="stylesheet" type="text/css"/>
+        <link rel="stylesheet" type="text/css" href="/vendor/twitter-bootstrap/4.1.1/css/bootstrap.min.css"/>
+        <script src="/vendor/twitter-bootstrap/4.1.1/js/bootstrap.min.js"></script>
         -->
         <link rel="stylesheet" type="text/css" href="/vendor/bootstrap3/css/bootstrap.min.css"/>
         <link rel="stylesheet" type="text/css" href="/vendor/font-awesome-4.7.0/css/font-awesome.min.css">
-        <script src="/vendor/jquery/jquery-3.2.0.min.js"></script> 
+        <script src="/vendor/jquery/3.3.1/jquery.min.js"></script> 
 
         <title>IML Deployment</title>
         <link rel="stylesheet" type="text/css" href="/deployment/main.css" media="screen">
diff --git a/public_html/deployment/classes/projectlist.class.php b/public_html/deployment/classes/projectlist.class.php
index 8c267914e88d12ae6d869b7c5fea9f55d3363ae1..e18d23cb3dc74ca8d938d9c97642ea30a6c8f59e 100644
--- a/public_html/deployment/classes/projectlist.class.php
+++ b/public_html/deployment/classes/projectlist.class.php
@@ -20,6 +20,8 @@ class projectlist extends base{
     // ----------------------------------------------------------------------
     // CONFIG
     // ----------------------------------------------------------------------    
+    var $_sInprogress='';
+    var $_sHasqueue='';
     // ----------------------------------------------------------------------
     // constructor
     // ----------------------------------------------------------------------
@@ -29,6 +31,9 @@ class projectlist extends base{
      */
     public function __construct() {
         $this->oUser=new user();
+        
+        $this->_sInprogress='<div class="progressinprogress"><i class="fa fa-refresh" title="'.t("progress-inprogress").'"></i> '.t("progress-inprogress").'</div>';
+        $this->_sHasqueue='<div class="progresshasqueue"><i class="glyphicon glyphicon-time" title="'.t("progress-hasqueue").'"></i> '.t("progress-hasqueue").'</div>';
         // define 
     }
 
@@ -62,8 +67,12 @@ class projectlist extends base{
 
         $sPrjFilter = '';
         $sPhaseFilter = '';
-        $sPrjFilter.='<option value="' . $sTrClass . '">' . t("all") . '</option>';
+        $sPrjFilter.='<option value="">' . t("all") . '</option>';
         $sPhaseFilter.='<option value="' . $sColClass . '">' . t("all") . '</option>';
+        
+        $iInprogress=0;
+        $iHasqueue=0;
+        
         // foreach (array_keys($this->_aPhases) as $sPhase) {
         foreach (array_keys($oPrj1->getPhases()) as $sPhase) {
             $sPhaseFilter.='<option value="' . $sPhase . '" >' . $sPhase . '</option>';
@@ -74,6 +83,7 @@ class projectlist extends base{
 
             $sOutPhases = '';
             $sOutPhases2 = '';
+            $sProgress='';
 
             // loop over phases ...
             foreach (array_keys($oPrj->getPhases()) as $sPhase) {
@@ -90,11 +100,14 @@ class projectlist extends base{
                 .($aProgress['hasQueue'] ? ' progresshasqueue' : '')
                 ;
 
-            $sProgress=''
-                .($aProgress['inprogress'] ? '<div class="progressinprogress"><i class="fa fa-refresh" title="'.t("progress-inprogress").'"></i> '.t("progress-inprogress").'</div>' : '')
-                .($aProgress['hasQueue'] ? '<div class="progresshasqueue"><i class="glyphicon glyphicon-time" title="'.t("progress-hasqueue").'"></i> '.t("progress-hasqueue").'</div>' : '')
-                ;
-
+            if($aProgress['inprogress']){
+                $iInprogress++;
+                $sProgress.=$this->_sInprogress;
+            }
+            if($aProgress['hasQueue']){
+                $iHasqueue++;
+                $sProgress.=$this->_sHasqueue;
+            }
             $sOut2 .= '<div class="' . $sClasses . ' prjbox"><div class="title">'
                     .$oHtml->getLink(array(
                         'href'=>'#',
@@ -175,26 +188,59 @@ class projectlist extends base{
                     * filter table by chosen select values for project and phase
                     */
                     function filterOverviewTable(){
+                    
+                        // --- reset
+                        $(\'.' . $sTrClass . '\').removeClass("trproject-textfilter"); 
+                        $(\'.' . $sTrClass . '\').removeClass("trproject-progressfilter"); 
+                        $(\'.' . $sTrClass . '\').removeClass("trproject-projectfilter"); 
+                        $(\'.' . $sTrClass . '\').removeClass("trprojectfiltered"); 
+                        $(\'button.prjprogress\').removeClass(\'selected\');
+
+                        // --- get free filter
+                        var sSearch=$("#efilter").val();
+                        localStorage.setItem("efilter", sSearch);
+                        var RegexFreetext = new RegExp(sSearch, "i");
+
+                        // --- get project filter
                         var sPrj=$("#prjfilter").val();
-                        // var sPhase=$("#phasefilter").val();
-                        // localStorage.setItem("selectedPhase", sPhase);
-                        // $(\'.' . $sColClass . '\').hide(); $(\'.\' + sPhase).show();
                         localStorage.setItem("selectedPrj", sPrj);
-                        $(\'.' . $sTrClass . '\').hide().removeClass("trprojectfiltered"); 
-                        $(\'.\' + sPrj).show();
-                        if (sPrj!="' . $sTrClass . '"){
-                            $(\'.\' + sPrj).addClass("trprojectfiltered");
-                        }
+
+                        // --- get progress filter
+                        var sProgress=$("#progressfilter").val();
+                        localStorage.setItem("progress", sProgress);
+                        $(\'#btnProgress\'+sProgress).addClass(\'selected\').blur();
+
+                        // --- loop over project rows   
+
+                        $(".trproject").each(function() {
+                            if ( !RegexFreetext.exec(this.innerHTML)) {
+                                $(this).addClass("trproject-textfilter");
+                            }
+                            
+                            if (sPrj){
+                                if ($(this).hasClass(sPrj)){
+                                    $(this).addClass("trprojectfiltered");
+                                } else {
+                                    $(this).addClass("trproject-projectfilter");
+                                }
+                            }
+                            if (sProgress && !$(this).hasClass("progress" + sProgress)){
+                                $(this).addClass("trproject-progressfilter");
+                            }
+                            
+                        });
+
                         showResetbtn();
                     }
                     
                     /**
+                    * onclick event of [filter] button in table row of a project
                     * toggle: show a single project/ all projects
                     */
                     function setProjectFilter(sPrj){
                         var sCurrentPrj=$(\'#prjfilter\').val();
-                        if (sCurrentPrj != \'' .$sTrClass. '\'){
-                            $(\'#prjfilter\').val(\'' .$sTrClass. '\'); 
+                        if (sCurrentPrj != \'\'){
+                            $(\'#prjfilter\').val(\'\'); 
                         } else {
                             $(\'#prjfilter\').val(sPrj); 
                         }
@@ -206,19 +252,8 @@ class projectlist extends base{
                     * filter table and tiles by filtertext
                     */
                     function filterTableByTyping(){
-                        var sVisible="";
-                        var sSearch=$("#efilter").val();
-                        localStorage.setItem("efilter", sSearch);
-                        var Regex = new RegExp(sSearch, "i");
-                        $(".trproject").each(function() {
-                            sVisible="none";
-                            if ( Regex.exec(this.innerHTML)) {
-                                sVisible="";
-                            }
-                            $(this).css("display", sVisible);
-                        });
-                        showResetbtn();
-                        return false;
+                        filterOverviewTable();
+                        return false; 
                     }
                     
                     /**
@@ -246,12 +281,8 @@ class projectlist extends base{
                     * filter table by progress status
                     */
                     function setprogress(){
-                        var sProgress=$("#progressfilter").val();
-                        $(\'.progress\').hide(); 
-                        $(\'.progress\'+sProgress).show();
-                        localStorage.setItem("progress", sProgress);
-                        showResetbtn();
-                        return false;
+                        filterOverviewTable();
+                        return false; 
                     }
                     
                     /**
@@ -272,6 +303,12 @@ class projectlist extends base{
                         } else {
                             $("#phasefilter").val($("#phasefilter option:first").val());
                         }
+                        
+                        if (localStorage.getItem("progress") && localStorage.getItem("progress")!=\'null\'){
+                            $("#progressfilter").val(localStorage.getItem("progress"));
+                        } else {
+                            $("#progressfilter").val($("#progressfilter option:first").val());
+                        }
                         // window.setTimeout("filterOverviewTable();", 10);
                         filterOverviewTable();
                         
@@ -294,12 +331,14 @@ class projectlist extends base{
                     * Button zum Filter reset anzeigen/ verbergen
                     */
                     function showResetbtn(){                        
-                        var sVisible=($("#efilter").val())?"visible":"hidden";
-                        if ($("#prjfilter").val()!="' . $sTrClass . '")sVisible="visible";
+                        var sVisible=$("#efilter").val()?"visible":"hidden";
+                        if ($("#prjfilter").val()>"")sVisible="visible";
                         // if ($("#phasefilter").val()!="' . $sColClass . '")sVisible="visible";
                         if ($("#rolefilter").val())sVisible="visible";
                         if ($("#progressfilter").val())sVisible="visible";
                         $("#btnresetfilter").css("visibility", sVisible);
+                        
+                        $("#btnresetefilter").css("visibility", $("#efilter").val()?"visible":"hidden");
                         return false;
                     }
                     
@@ -307,7 +346,7 @@ class projectlist extends base{
                     * Aktion des Filter reset: Filter zurücksetzen
                     */
                     function resetFilter(){
-                        $(\'#prjfilter\').val(\'' .$sTrClass. '\');
+                        $(\'#prjfilter\').val(\'\');
                         // $("#phasefilter").val("");
                         filterOverviewTable();
                         $("#efilter").val("");                        
@@ -324,24 +363,50 @@ class projectlist extends base{
                 
                     <form class="form-inline">
 
+                        <!--
                         <a href="#" class="view viewextended" onclick="setview(\'simple\');"><i class="glyphicon glyphicon-th-large"></i> ' . t("overview-simpleview") . '</a>
                         <a href="#" class="view viewsimple" onclick="setview(\'extended\');" ><i class="glyphicon glyphicon-th-list"></i> ' . t("overview-extview") . '</a>
                         |
-
+                        -->
                         
+
                         <label for="efilter">
                             <i class="glyphicon glyphicon-filter"></i>
                             ' . t("overview-textsearch") . ':
                         </label>
                         <input type="text" id="efilter" name="efilter" 
                             class="form-control"
-                            style="width: 150px;"
+                            style="width: 200px;"
                             onchange="filterTableByTyping();"
                             onKeypress="filterTableByTyping(); "
                             onKeyup="filterTableByTyping(); "
                             title="' . t("overview-textsearch-hint") . '"
                             >
+                        <button class="btn btn-default" onclick="$(\'#efilter\').val(\''.$this->oUser->getUsername().'\'); filterTableByTyping(); return false;">
+                            '.$this->oUser->getUsername().'
+                        </button>
+                        <button id="btnresetefilter" class="btn btn-default" onclick="$(\'#efilter\').val(\'\'); filterTableByTyping(); return false;">
+                            x
+                        </button>
                         
+
+                        &nbsp;&nbsp;&nbsp;
+                        <span style="display: none;">
+                            <label for="progressfilter">
+                            ' . t("overview-filterprogress") . ':
+                            </label>
+                            <select id="progressfilter" class="form-control" onchange="setprogress(); return false;">
+                                <option value="">' . t("all") . '</option>
+                                <option value="inprogress">' . t("progress-inprogress") . '</option>
+                                <option value="hasqueue">' . t("progress-hasqueue") . '</option>
+                            </select>
+                        </span>
+                        
+                        <button id="btnProgress"           class="btn btn-default prjprogress" onclick="$(\'#progressfilter\').val(\'\'); return setprogress();" >'.t("overview-projectcount").'<br><span>'.count($oPrj1->getProjects()).'</span></button>
+                        <button id="btnProgressinprogress" class="btn btn-default prjprogress" onclick="$(\'#progressfilter\').val(\'inprogress\'); return setprogress();" >'.$this->_sInprogress.'<span>'.$iInprogress.'</span></button>
+                        <button id="btnProgresshasqueue"   class="btn btn-default prjprogress" onclick="$(\'#progressfilter\').val(\'hasqueue\'); return setprogress();" >'.$this->_sHasqueue .'<span>'.$iHasqueue.'</span></button>
+                        
+                        <span style="display: none;">
                         <span class="view viewextended">
                             &nbsp;&nbsp;&nbsp;
                             <label for="prjfilter">
@@ -360,7 +425,12 @@ class projectlist extends base{
                             </span>
 
                         </span>
+                        </span>
+                        
+
                         &nbsp;&nbsp;&nbsp;
+                        <input type="hidden" id="rolefilter" value="" />
+                        <!--
                         <label for="rolefilter">
                         ' . t("overview-filterrole") . ':
                         </label>
@@ -369,15 +439,8 @@ class projectlist extends base{
                             <option value="developer">' . t("developer") . '</option>
                             <option value="pl">' . t("projectmanager") . '</option>
                         </select>
+                        -->
 
-                        <label for="rolefilter">
-                        ' . t("overview-filterprogress") . ':
-                        </label>
-                        <select id="progressfilter" class="form-control" onchange="setprogress(); return false;">
-                            <option value="">' . t("all") . '</option>
-                            <option value="inprogress">' . t("progress-inprogress") . '</option>
-                            <option value="hasqueue">' . t("progress-hasqueue") . '</option>
-                        </select>
 
                         <a href="#" class="btn btn-danger" id="btnresetfilter" 
                             title="' . t("overview-filterreset-hint") . '"
@@ -385,6 +448,7 @@ class projectlist extends base{
                     </form>
                     <div style="clear: both; margin-bottom: 1em"></div>
                 </div>
+                <br>
 
 
                 <div class="view viewsimple">