diff --git a/KelvinDashboardGUI/DapCommandController.cpp b/KelvinDashboardGUI/DapCommandController.cpp
index e475a6b357a693c5841cfc0475c2b6213a0047c5..e989edf3624214094fb7862b2e373e699213ed9a 100755
--- a/KelvinDashboardGUI/DapCommandController.cpp
+++ b/KelvinDashboardGUI/DapCommandController.cpp
@@ -52,12 +52,18 @@ void DapCommandController::getNodeLogs()
     connect(reply, SIGNAL(finished()), this, SLOT(processGetNodeLogs()));
 }
 
-void DapCommandController::setListenerHistory()
+void DapCommandController::getHistory()
 {
     DapRpcServiceReply *reply = m_DAPRpcSocket->invokeRemoteMethod("RPCServer.getHistory");
     connect(reply, SIGNAL(finished()), this, SLOT(processGetHistory()));
 }
 
+void DapCommandController::setNewHistory(const QVariant& aData)
+{
+    qDebug() << "new story" << aData;
+    emit sendHistory(aData);
+}
+
 void DapCommandController::processChangedLog()
 {
 //    QStringList tempLogModel;
@@ -181,9 +187,10 @@ void DapCommandController::processExecuteCommand()
 
 void DapCommandController::processGetHistory()
 {
-    qInfo() << "processGetHistory()";
+    qDebug() << "processGetHistory()";
     DapRpcServiceReply *reply = static_cast<DapRpcServiceReply *>(sender());
-    emit sendHistory(reply->response().result().toVariant());
+    QVariant result = reply->response().result().toArray().toVariantList();
+    emit sendHistory(result);
 }
 
 /// Show or hide GUI client by clicking on the tray icon.
diff --git a/KelvinDashboardGUI/DapCommandController.h b/KelvinDashboardGUI/DapCommandController.h
index 75c4546766a1e14f3537a2eeefc3e2c1faf5dba3..05758ec7a5793bfa0a1b964bdaa3193f4bbb4282 100755
--- a/KelvinDashboardGUI/DapCommandController.h
+++ b/KelvinDashboardGUI/DapCommandController.h
@@ -110,7 +110,9 @@ public slots:
     /// Get node logs.
     void getNodeLogs();
 
-    void setListenerHistory();
+    void getHistory();
+
+    void setNewHistory(const QVariant& aData);
 };
 
 #endif // COMMANDCONTROLLER_H
diff --git a/KelvinDashboardGUI/DapScreenHistoryFilterModel.cpp b/KelvinDashboardGUI/DapScreenHistoryFilterModel.cpp
index ed91771e3ae5e8340757923288bd1cf8e5e08eab..26675588cd82c02e735b002db8dacfec19433f5a 100644
--- a/KelvinDashboardGUI/DapScreenHistoryFilterModel.cpp
+++ b/KelvinDashboardGUI/DapScreenHistoryFilterModel.cpp
@@ -25,7 +25,7 @@ void DapScreenHistoryFilterModel::setFilterDate(const QDateTime& aDateLeft, cons
     m_dateRight = aDateRight;
 }
 
-void DapScreenHistoryFilterModel::setFilterStatus(const DapScreenHistoryModel::DapTransactionStatus aStatus)
+void DapScreenHistoryFilterModel::setFilterStatus(const DapTransactionStatus aStatus)
 {
     if(m_status == aStatus) return;
     m_status = aStatus;
diff --git a/KelvinDashboardGUI/DapScreenHistoryFilterModel.h b/KelvinDashboardGUI/DapScreenHistoryFilterModel.h
index 44f63308f0b805bb5b4dc6f749b0a9d61e8de647..606cc0c45211bae23b63dcfcc5cc0209242805fe 100644
--- a/KelvinDashboardGUI/DapScreenHistoryFilterModel.h
+++ b/KelvinDashboardGUI/DapScreenHistoryFilterModel.h
@@ -26,7 +26,7 @@ public:
 public slots:
     void setFilterWallet(const QString& aWalletNumber);
     void setFilterDate(const QDateTime& aDateLeft, const QDateTime& aDateRight);
-    void setFilterStatus(const DapScreenHistoryModel::DapTransactionStatus aStatus);
+    void setFilterStatus(const DapTransactionStatus aStatus);
 };
 
 #endif // DAPSCREENHISTORYFILTERMODEL_H
diff --git a/KelvinDashboardGUI/DapScreenHistoryModel.cpp b/KelvinDashboardGUI/DapScreenHistoryModel.cpp
index e376050858f1a022f5701a1279aa55cc9d4f932b..2fd022bb7bf7a8298df91db5990df6f81ca9f93e 100644
--- a/KelvinDashboardGUI/DapScreenHistoryModel.cpp
+++ b/KelvinDashboardGUI/DapScreenHistoryModel.cpp
@@ -26,6 +26,7 @@ QHash<int, QByteArray> DapScreenHistoryModel::roleNames() const
 
 void DapScreenHistoryModel::receiveNewData(const QVariant& aData)
 {
+    if(!aData.isValid()) return;
     beginResetModel();
     QList<QVariant> dataList = aData.toList();
     m_elementList.clear();
@@ -43,7 +44,7 @@ void DapScreenHistoryModel::receiveNewData(const QVariant& aData)
 
         QStringList dataItem = dataList.at(i).toStringList();
         DapTransactionItem item;
-        item.Date = QDateTime::fromString(dataItem.at(0), "ddd MMM dd h:mm:ss YYYY");
+        item.Date = QDateTime::fromString(dataItem.at(0), Qt::RFC2822Date);
         item.Status = static_cast<DapTransactionStatus>(dataItem.at(1).toInt());
         item.Cryptocurrency = dataItem.at(2);
         item.TokenName = dataItem.at(3);
@@ -75,7 +76,7 @@ QVariant DapScreenHistoryModel::data(const QModelIndex &index, int role) const
         }
         case DisplayNameTokenRole:      return m_elementList.at(index.row()).TokenName;
         case DisplayNumberWalletRole:   return m_elementList.at(index.row()).WalletNumber;
-        case DisplayStatusRole:         return m_elementList.at(index.row()).Status;
+        case DisplayStatusRole:         return DapTransactionStatusConvertor::getLongStatus(m_elementList.at(index.row()).Status);
         case DisplayCryptocurrency:     return m_elementList.at(index.row()).Cryptocurrency;
         case DisplayCurrency:           return m_elementList.at(index.row()).Currency;
         default:                        return QVariant();
diff --git a/KelvinDashboardGUI/DapScreenHistoryModel.h b/KelvinDashboardGUI/DapScreenHistoryModel.h
index db75a9a238a502783c69ba9602d85c0a02cfc01d..5bf8797f9b96e7bc926702256d37cc4706f5c1f3 100644
--- a/KelvinDashboardGUI/DapScreenHistoryModel.h
+++ b/KelvinDashboardGUI/DapScreenHistoryModel.h
@@ -5,6 +5,7 @@
 #include <QImage>
 #include <QAbstractListModel>
 #include <QDateTime>
+#include "DapHistoryType.h"
 
 #define MASK_FOR_MODEL QString("MMMM, dd")
 
@@ -13,23 +14,23 @@ class DapScreenHistoryModel : public QAbstractListModel
     Q_OBJECT
 
 public:
-    enum DapTransactionStatus {
-        Pending,
-        Sent,
-        Received,
-        Error
-    };
-    Q_ENUM(DapTransactionStatus)
-
-    struct DapTransactionItem {
-        QDateTime Date;
-        QImage  TokenPic;
-        DapTransactionStatus Status;
-        QString TokenName;
-        QString WalletNumber;
-        QString Cryptocurrency;
-        QString Currency;
-    };
+//    enum DapTransactionStatus {
+//        Pending,
+//        Sent,
+//        Received,
+//        Error
+//    };
+//    Q_ENUM(DapTransactionStatus)
+
+//    struct DapTransactionItem {
+//        QDateTime Date;
+//        QImage  TokenPic;
+//        DapTransactionStatus Status;
+//        QString TokenName;
+//        QString WalletNumber;
+//        QString Cryptocurrency;
+//        QString Currency;
+//    };
 
     enum {
         DisplayDateRole = Qt::UserRole,
diff --git a/KelvinDashboardGUI/DapServiceController.cpp b/KelvinDashboardGUI/DapServiceController.cpp
index bc97ed80e8a602add2a22e5c7ce9979fd270795e..de0442e0864b8602f52572651658e71248d5adbc 100755
--- a/KelvinDashboardGUI/DapServiceController.cpp
+++ b/KelvinDashboardGUI/DapServiceController.cpp
@@ -57,6 +57,8 @@ void DapServiceController::init(DapServiceClient *apDapServiceClient)
     connect(&DapChainNodeNetworkModel::getInstance(), SIGNAL(requestNodeStatus(bool)), this, SLOT(setNodeStatus(bool)));
 
     connect(m_pDapCommandController, SIGNAL(sendHistory(QVariant)), this, SLOT(processGetHistory(QVariant)));
+
+    connect(m_pDapCommandController, &DapCommandController::sendHistory, &DapScreenHistoryModel::getInstance(), &DapScreenHistoryModel::receiveNewData);
 }
 
 QString DapServiceController::getBrand() const
@@ -178,6 +180,11 @@ void DapServiceController::getWalletInfo(const QString &asWalletName)
     m_pDapCommandController->getWalletInfo(asWalletName);
 }
 
+void DapServiceController::getHistory()
+{
+    m_pDapCommandController->getHistory();
+}
+
 void DapServiceController::getNodeNetwork()
 {
     qInfo() << QString("requestNodeNetwork");
diff --git a/KelvinDashboardGUI/DapServiceController.h b/KelvinDashboardGUI/DapServiceController.h
index 83cbef79fdd44cd960639a74b0d26b42a587cab3..4ca69571e27416f8cb27a24fb9011766e9d67aa9 100755
--- a/KelvinDashboardGUI/DapServiceController.h
+++ b/KelvinDashboardGUI/DapServiceController.h
@@ -82,6 +82,8 @@ public:
 
     void getWalletInfo(const QString& asWalletName);
 
+    void getHistory();
+
 signals:
     /// The signal is emitted when the Brand company property changes.
     void brandChanged(const QString &brand);
diff --git a/KelvinDashboardGUI/main.cpp b/KelvinDashboardGUI/main.cpp
index b9143429363d915cfff2f90007c29669adbf690d..bb90a7cb9530b38eae7d9bccc75e42bd28110826 100755
--- a/KelvinDashboardGUI/main.cpp
+++ b/KelvinDashboardGUI/main.cpp
@@ -53,6 +53,7 @@ int main(int argc, char *argv[])
     dapServiceClient.init();
     controller.getNodeLogs(0, 100);
     controller.getWallets();
+    controller.getHistory();
 
     DapScreenHistoryFilterModel::getInstance()
             .setSourceModel(&DapScreenHistoryModel::getInstance());
diff --git a/KelvinDashboardService/DapChainDashboardService.cpp b/KelvinDashboardService/DapChainDashboardService.cpp
index 59fbf897af40c20c938e2d92cfff904b23af3012..6f01f3b2e9e5a45d23fbdc4495e1c067a3455fb7 100755
--- a/KelvinDashboardService/DapChainDashboardService.cpp
+++ b/KelvinDashboardService/DapChainDashboardService.cpp
@@ -10,6 +10,12 @@ DapChainDashboardService::DapChainDashboardService() : DapRpcService(nullptr)
     connect(this, &DapChainDashboardService::onNewClientConnected, [=] {
         qDebug() << "New client";
     });
+
+    m_pDapChainNodeHandler = new DapChainNodeNetworkHandler(this);
+
+    m_pDapChainHistoryHandler = new DapChainHistoryHandler {this};
+    QObject::connect(m_pDapChainHistoryHandler, &DapChainHistoryHandler::requsetWallets, this, &DapChainDashboardService::doRequestWallets);
+    QObject::connect(m_pDapChainHistoryHandler, &DapChainHistoryHandler::changeHistory, this, &DapChainDashboardService::doSendNewHistory);
 }
 
 bool DapChainDashboardService::start()
@@ -63,8 +69,9 @@ QMap<QString, QVariant> DapChainDashboardService::getWallets()
 
 QStringList DapChainDashboardService::getWalletInfo(const QString &asWalletName)
 {
-    qInfo() << QString("getWalletInfo(%1)").arg(asWalletName);
-    return m_pDapChainWalletHandler->getWalletInfo(asWalletName);
+//    qInfo() << QString("getWalletInfo(%1)").arg(asWalletName);
+//    return m_pDapChainWalletHandler->getWalletInfo(asWalletName);
+    return QStringList();
 }
 
 QVariant DapChainDashboardService::getNodeNetwork() const
@@ -77,6 +84,24 @@ void DapChainDashboardService::setNodeStatus(const bool aIsOnline)
     m_pDapChainNodeHandler->setNodeStatus(aIsOnline);
 }
 
+QVariant DapChainDashboardService::getHistory() const
+{
+    return m_pDapChainHistoryHandler->getHistory();
+}
+
+void DapChainDashboardService::doRequestWallets()
+{
+    m_pDapChainHistoryHandler->onRequestNewHistory(m_pDapChainWalletHandler->getWallets());
+}
+
+void DapChainDashboardService::doSendNewHistory(const QVariant& aData)
+{
+    if(!aData.isValid()) return;
+    QVariantList params = QVariantList() << aData;
+    DapRpcMessage request = DapRpcMessage::createRequest("RPCClient.setNewHistory", QJsonArray::fromVariantList(params));
+    m_pServer->notifyConnectedClients(request);
+}
+
 QString DapChainDashboardService::sendToken(const QString &asWalletName, const QString &asReceiverAddr, const QString &asToken, const QString &asAmount)
 {
     qInfo() << QString("sendToken(%1;%2;%3;%4)").arg(asWalletName).arg(asReceiverAddr).arg(asToken).arg(asAmount);
diff --git a/KelvinDashboardService/DapChainDashboardService.h b/KelvinDashboardService/DapChainDashboardService.h
index b5717ee9abace9593fda952e9b49d7543a3b4ca7..22ce4d49653dc2a093c103058e6ee8a26a2f97eb 100755
--- a/KelvinDashboardService/DapChainDashboardService.h
+++ b/KelvinDashboardService/DapChainDashboardService.h
@@ -26,6 +26,7 @@
 #include "DapChainLogHandler.h"
 #include "DapChainWalletHandler.h"
 #include "DapChainNodeNetworkHandler.h"
+#include "DapChainHistoryHandler.h"
 
 #include <QLocalServer>
 typedef class DapRpcLocalServer DapUiService;
@@ -46,6 +47,8 @@ class DapChainDashboardService : public DapRpcService
 
     DapChainNodeNetworkHandler     * m_pDapChainNodeHandler {nullptr};
 
+    DapChainHistoryHandler* m_pDapChainHistoryHandler {nullptr};
+
 public:
     /// Standard сonstructor.
     explicit DapChainDashboardService();
@@ -86,6 +89,12 @@ public slots:
     QVariant getNodeNetwork() const;
 
     void setNodeStatus(const bool aIsOnline);
+
+    QVariant getHistory() const;
+
+private slots:
+    void doRequestWallets();
+    void doSendNewHistory(const QVariant& aData);
 };
 
 #endif // DAPCHAINDASHBOARDSERVICE_H
diff --git a/KelvinDashboardService/DapChainHistoryHandler.cpp b/KelvinDashboardService/DapChainHistoryHandler.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6645da84bb6e1ec90ebb2936477d330e233fd84e
--- /dev/null
+++ b/KelvinDashboardService/DapChainHistoryHandler.cpp
@@ -0,0 +1,55 @@
+#include "DapChainHistoryHandler.h"
+
+DapChainHistoryHandler::DapChainHistoryHandler(QObject *parent) :
+    QObject(parent)
+{
+    m_timoutRequestHistory = new QTimer(this);
+    QObject::connect(m_timoutRequestHistory, &QTimer::timeout, this, &DapChainHistoryHandler::requsetWallets, Qt::QueuedConnection);
+    m_timoutRequestHistory->start(3000);
+}
+
+QVariant DapChainHistoryHandler::getHistory() const
+{
+//    qDebug() << "get story" << m_history;
+
+    return m_history;
+}
+
+void DapChainHistoryHandler::onRequestNewHistory(const QMap<QString, QVariant>& aWallets)
+{
+    if(m_wallets != aWallets.values())
+        m_wallets = aWallets.values();
+
+    if(m_wallets.isEmpty()) return;
+
+    QList<QVariant> data;
+    for(int i = 0; i < m_wallets.count(); i++)
+    {
+        QProcess process;
+        process.start(QString(CLI_PATH) + " tx_history -net private -chain gdb -addr " + m_wallets.at(i).toString());
+        process.waitForFinished(-1);
+
+        QByteArray result = process.readAll();
+
+        if(!result.isEmpty())
+        {
+            QRegExp reg("(\\w{3}\\s\\w{3}\\s\\d+\\s\\d{1,2}:\\d{2}:\\d{2}\\s\\d{4}).+"
+                        "\\s(\\w+)\\s(\\d+)\\s(\\w+)\\s\\w+\\s+(\\w+)");
+
+            int pos = 0;
+            while ((pos = reg.indexIn(result, pos)) != -1)
+            {
+                QStringList dataItem = QStringList() << reg.cap(1) << QString::number(DapTransactionStatusConvertor::getStatusByShort(reg.cap(2))) << reg.cap(3) << reg.cap(4) << reg.cap(5) << m_wallets.at(i).toString();
+                data.append(dataItem);
+                pos += reg.matchedLength();
+            }
+        }
+    }
+
+
+    if(m_history != data)
+    {
+        m_history = data;
+        emit changeHistory(m_history);
+    }
+}
diff --git a/KelvinDashboardService/DapChainHistoryHandler.h b/KelvinDashboardService/DapChainHistoryHandler.h
new file mode 100644
index 0000000000000000000000000000000000000000..0f81af029ae890263708ea30baea384b8fed23e7
--- /dev/null
+++ b/KelvinDashboardService/DapChainHistoryHandler.h
@@ -0,0 +1,35 @@
+#ifndef DAPCHAINHISTORYHANDLER_H
+#define DAPCHAINHISTORYHANDLER_H
+
+#include <QObject>
+#include <QVariantList>
+#include <QTimer>
+#include <QProcess>
+#include <QDebug>
+#include <QList>
+
+#include "DapHistoryType.h"
+
+class DapChainHistoryHandler : public QObject
+{
+    Q_OBJECT
+
+private:
+    QList<QVariant> m_wallets;
+    QVariant m_history;
+    QTimer* m_timoutRequestHistory;
+
+public:
+    explicit DapChainHistoryHandler(QObject *parent = nullptr);
+
+    QVariant getHistory() const;
+
+public slots:
+    void onRequestNewHistory(const QMap<QString, QVariant>& aWallets);
+
+signals:
+    void requsetWallets();
+    void changeHistory(QVariant);
+};
+
+#endif // DAPCHAINHISTORYHANDLER_H
diff --git a/KelvinDashboardService/KelvinDashboardService.pro b/KelvinDashboardService/KelvinDashboardService.pro
index 69994d7c9e4ad047153916d909ef5b0d5b510b9f..bce4996d1cb0c4318565821c810a200806d86666 100755
--- a/KelvinDashboardService/KelvinDashboardService.pro
+++ b/KelvinDashboardService/KelvinDashboardService.pro
@@ -41,21 +41,23 @@ DEFINES += QT_DEPRECATED_WARNINGS
 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
 
 SOURCES += \
-    DapChainNodeNetworkHandler.cpp \
-        main.cpp \
-    DapChainDashboardService.cpp \
-    DapChainNode.cpp \
-    DapChainNodeCache.cpp \
-    DapChainWalletHandler.cpp \
-    DapChainLogHandler.cpp
+    $$PWD/DapChainHistoryHandler.cpp \
+    $$PWD/DapChainNodeNetworkHandler.cpp \
+    $$PWD/main.cpp \
+    $$PWD/DapChainDashboardService.cpp \
+    $$PWD/DapChainNode.cpp \
+    $$PWD/DapChainNodeCache.cpp \
+    $$PWD/DapChainWalletHandler.cpp \
+    $$PWD/DapChainLogHandler.cpp
 
 HEADERS += \
-    DapChainDashboardService.h \
-    DapChainNode.h \
-    DapChainNodeCache.h \
-    DapChainNodeNetworkHandler.h \
-    DapChainWalletHandler.h \
-    DapChainLogHandler.h
+    $$PWD/DapChainDashboardService.h \
+    $$PWD/DapChainHistoryHandler.h \
+    $$PWD/DapChainNode.h \
+    $$PWD/DapChainNodeCache.h \
+    $$PWD/DapChainNodeNetworkHandler.h \
+    $$PWD/DapChainWalletHandler.h \
+    $$PWD/DapChainLogHandler.h
 
 include (../libdap/libdap.pri)
 include (../libdap-crypto/libdap-crypto.pri)
@@ -74,4 +76,4 @@ unix: !mac : !android {
 }
 
 RESOURCES += \
-    KelvinDashboardService.qrc
+    $$PWD/KelvinDashboardService.qrc
diff --git a/libKelvinDashboardCommon/DapHistoryType.cpp b/libKelvinDashboardCommon/DapHistoryType.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d143f860e076faef257b3ebae6aa079b6b52798f
--- /dev/null
+++ b/libKelvinDashboardCommon/DapHistoryType.cpp
@@ -0,0 +1,41 @@
+#include "DapHistoryType.h"
+
+const QMap<DapTransactionStatus, QStringList> DapTransactionStatusConvertor::m_statusMap =
+{
+    {stSent, QStringList() << "send" << "Sent"},
+    {stReceived, QStringList() << "recv" << "Received"},
+};
+
+QString DapTransactionStatusConvertor::getShortStatus(const DapTransactionStatus aStatus)
+{
+    if(!m_statusMap.contains(aStatus)) return QString();
+    return m_statusMap[aStatus].at(0);
+}
+
+QString DapTransactionStatusConvertor::getLongStatus(const DapTransactionStatus aStatus)
+{
+    if(!m_statusMap.contains(aStatus)) return QString();
+    return m_statusMap[aStatus].at(1);
+}
+
+DapTransactionStatus DapTransactionStatusConvertor::getStatusByShort(const QString& aShortStatus)
+{
+    for(auto item = m_statusMap.constBegin(); item != m_statusMap.constEnd(); item++)
+    {
+        if(item.value().at(0) == aShortStatus)
+            return item.key();
+    }
+
+    return stUnknow;
+}
+
+DapTransactionStatus DapTransactionStatusConvertor::getStatusByLong(const QString& aLongStatus)
+{
+    for(auto item = m_statusMap.constBegin(); item != m_statusMap.constEnd(); item++)
+    {
+        if(item.value().at(1) == aLongStatus)
+            return item.key();
+    }
+
+    return stUnknow;
+}
diff --git a/libKelvinDashboardCommon/DapHistoryType.h b/libKelvinDashboardCommon/DapHistoryType.h
new file mode 100644
index 0000000000000000000000000000000000000000..29dc980c7b9e2936ca5e9d70bccf1f4ce71cebb4
--- /dev/null
+++ b/libKelvinDashboardCommon/DapHistoryType.h
@@ -0,0 +1,40 @@
+#ifndef DAPHISTORYTYPE_H
+#define DAPHISTORYTYPE_H
+
+#include <QDateTime>
+#include <QImage>
+#include <QMap>
+#include <QStringList>
+
+enum DapTransactionStatus {
+    stUnknow,
+    stPending,
+    stSent,
+    stReceived,
+    stError
+};
+
+struct DapTransactionItem {
+    QDateTime Date;
+    QImage  TokenPic;
+    DapTransactionStatus Status;
+    QString TokenName;
+    QString WalletNumber;
+    QString Cryptocurrency;
+    QString Currency;
+};
+
+class DapTransactionStatusConvertor
+{
+
+private:
+    static const QMap<DapTransactionStatus, QStringList> m_statusMap;
+
+public:
+    static QString getShortStatus(const DapTransactionStatus aStatus);
+    static QString getLongStatus(const DapTransactionStatus aStatus);
+    static DapTransactionStatus getStatusByShort(const QString& aShortStatus);
+    static DapTransactionStatus getStatusByLong(const QString& aLongStatus);
+};
+
+#endif // DAPHISTORYTYPE_H
diff --git a/libKelvinDashboardCommon/libKelvinDashboardCommon.pri b/libKelvinDashboardCommon/libKelvinDashboardCommon.pri
index 6f2fbbbe156c9bdd4ad6e9c832f1e94c15edecb6..6e8beb83da91f703e58e56382528782fa57733e6 100755
--- a/libKelvinDashboardCommon/libKelvinDashboardCommon.pri
+++ b/libKelvinDashboardCommon/libKelvinDashboardCommon.pri
@@ -10,9 +10,11 @@
 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
 
 QT += quick quickwidgets
+CONFIG += c++11
 
 SOURCES +=\
     $$PWD/DapHalper.cpp \
+    $$PWD/DapHistoryType.cpp \
     $$PWD/DapSettings.cpp \
     $$PWD/DapSettingsCipher.cpp \
     $$PWD/DapLogMessage.cpp \
@@ -21,6 +23,7 @@ SOURCES +=\
 
 HEADERS +=\
     $$PWD/DapHalper.h \
+    $$PWD/DapHistoryType.h \
     $$PWD/DapSettings.h \
     $$PWD/DapSettingsCipher.h \
     $$PWD/DapLogMessage.h \