diff --git a/core/installer/welcome/dodo-app-tmpl/app_status.html b/core/installer/welcome/dodo-app-tmpl/app_status.html
index 179ad10..efe74a1 100644
--- a/core/installer/welcome/dodo-app-tmpl/app_status.html
+++ b/core/installer/welcome/dodo-app-tmpl/app_status.html
@@ -2,9 +2,10 @@
 dodo app: {{ .Name }}
 {{ end }}
 {{- define "content" -}}
+<a href="/">Home</a><br/><br/>
 {{ .GitCloneCommand }}
 <hr class="divider">
 {{- range .Commits -}}
-{{ .Hash }} {{ .Message }}<br/>
+{{if eq .Status "OK" }}<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="black" d="M21 7L9 19l-5.5-5.5l1.41-1.41L9 16.17L19.59 5.59z"/></svg>{{ else }}<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 48 48"><path fill="black" fill-rule="evenodd" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="4" d="M6 11L11 6L24 19L37 6L42 11L29 24L42 37L37 42L24 29L11 42L6 37L19 24L6 11Z" clip-rule="evenodd"/></svg>{{ end }} {{ .Hash }} {{ .Message }}<br/>
 {{- end -}}
 {{- end -}}
diff --git a/core/installer/welcome/dodo_app.go b/core/installer/welcome/dodo_app.go
index b11e3a7..7153f20 100644
--- a/core/installer/welcome/dodo_app.go
+++ b/core/installer/welcome/dodo_app.go
@@ -459,7 +459,11 @@
 	Repository struct {
 		Name string `json:"name"`
 	} `json:"repository"`
-	After string `json:"after"`
+	After   string `json:"after"`
+	Commits []struct {
+		Id      string `json:"id"`
+		Message string `json:"message"`
+	} `json:"commits"`
 }
 
 func (s *DodoAppServer) handleAPIUpdate(w http.ResponseWriter, r *http.Request) {
@@ -491,13 +495,26 @@
 		if err != nil {
 			return
 		}
-		if err := s.updateDodoApp(instanceAppStatus, req.Repository.Name, s.appConfigs[req.Repository.Name].Namespace, networks); err != nil {
-			if err := s.st.CreateCommit(req.Repository.Name, req.After, err.Error()); err != nil {
-				fmt.Printf("Error: %s\n", err.Error())
-				return
+		found := false
+		commitMsg := ""
+		for _, c := range req.Commits {
+			if c.Id == req.After {
+				found = true
+				commitMsg = c.Message
+				break
 			}
 		}
-		if err := s.st.CreateCommit(req.Repository.Name, req.After, "OK"); err != nil {
+		if !found {
+			fmt.Printf("Error: could not find commit message")
+			return
+		}
+		if err := s.updateDodoApp(instanceAppStatus, req.Repository.Name, s.appConfigs[req.Repository.Name].Namespace, networks); err != nil {
+			if err := s.st.CreateCommit(req.Repository.Name, req.After, commitMsg, err.Error()); err != nil {
+				fmt.Printf("Error: %s\n", err.Error())
+			}
+			return
+		}
+		if err := s.st.CreateCommit(req.Repository.Name, req.After, commitMsg, "OK"); err != nil {
 			fmt.Printf("Error: %s\n", err.Error())
 		}
 		for addr, _ := range s.workers[req.Repository.Name] {
diff --git a/core/installer/welcome/store.go b/core/installer/welcome/store.go
index 8ea0860..031cdff 100644
--- a/core/installer/welcome/store.go
+++ b/core/installer/welcome/store.go
@@ -19,6 +19,7 @@
 
 type Commit struct {
 	Hash    string
+	Status  string
 	Message string
 }
 
@@ -30,7 +31,7 @@
 	GetUserApps(username string) ([]string, error)
 	CreateApp(name, username string) error
 	GetAppOwner(name string) (string, error)
-	CreateCommit(name, hash, message string) error
+	CreateCommit(name, hash, message, status string) error
 	GetCommitHistory(name string) ([]Commit, error)
 }
 
@@ -61,7 +62,8 @@
 		CREATE TABLE IF NOT EXISTS commits (
 			app_name TEXT,
             hash TEXT,
-            message TEXT
+            message TEXT,
+            status TEXT
 		);
 	`)
 	return err
@@ -172,14 +174,14 @@
 	return ret, nil
 }
 
-func (s *storeImpl) CreateCommit(name, hash, message string) error {
-	query := `INSERT INTO commits (app_name, hash, message) VALUES (?, ?, ?)`
-	_, err := s.db.Exec(query, name, hash, message)
+func (s *storeImpl) CreateCommit(name, hash, message, status string) error {
+	query := `INSERT INTO commits (app_name, hash, message, status) VALUES (?, ?, ?, ?)`
+	_, err := s.db.Exec(query, name, hash, message, status)
 	return err
 }
 
 func (s *storeImpl) GetCommitHistory(name string) ([]Commit, error) {
-	query := `SELECT hash, message FROM commits WHERE app_name = ?`
+	query := `SELECT hash, message, status FROM commits WHERE app_name = ?`
 	rows, err := s.db.Query(query, name)
 	if err != nil {
 		return nil, err
@@ -191,7 +193,7 @@
 			return nil, err
 		}
 		var c Commit
-		if err := rows.Scan(&c.Hash, &c.Message); err != nil {
+		if err := rows.Scan(&c.Hash, &c.Message, &c.Status); err != nil {
 			return nil, err
 		}
 		ret = append(ret, c)
