diff --git a/frontend/resources/vue/views/LogsListView.vue b/frontend/resources/vue/views/LogsListView.vue index f71400a..4fbc476 100644 --- a/frontend/resources/vue/views/LogsListView.vue +++ b/frontend/resources/vue/views/LogsListView.vue @@ -81,13 +81,21 @@ const totalCount = ref(0) const { t } = useI18n() const filteredLogs = computed(() => { - if (!searchText.value) { - return logs.value + let result = logs.value + + if (searchText.value) { + const searchLower = searchText.value.toLowerCase() + result = logs.value.filter(log => + log.actionTitle.toLowerCase().includes(searchLower) + ) } - const searchLower = searchText.value.toLowerCase() - return logs.value.filter(log => - log.actionTitle.toLowerCase().includes(searchLower) - ) + + // Sort by timestamp with most recent first + return [...result].sort((a, b) => { + const dateA = a.datetimeStarted ? new Date(a.datetimeStarted).getTime() : 0 + const dateB = b.datetimeStarted ? new Date(b.datetimeStarted).getTime() : 0 + return dateB - dateA // Descending order (most recent first) + }) }) async function fetchLogs() { diff --git a/service/internal/executor/executor.go b/service/internal/executor/executor.go index e539c6c..a1901d3 100644 --- a/service/internal/executor/executor.go +++ b/service/internal/executor/executor.go @@ -237,11 +237,14 @@ func isLogEntryAllowedByACL(cfg *config.Config, user *acl.AuthenticatedUser, ent // filterLogsByACL builds a filtered list of logs in reverse-chronological order // that are visible to the user based on ACL rules. func (e *Executor) filterLogsByACL(cfg *config.Config, user *acl.AuthenticatedUser) []*InternalLogEntry { - filtered := make([]*InternalLogEntry, 0) - e.logmutex.RLock() - for i := len(e.logsTrackingIdsByDate) - 1; i >= 0; i-- { - entry := e.logs[e.logsTrackingIdsByDate[i]] + defer e.logmutex.RUnlock() + + filtered := make([]*InternalLogEntry, 0, len(e.logsTrackingIdsByDate)) + + for _, trackingId := range e.logsTrackingIdsByDate { + entry := e.logs[trackingId] + if !isValidLogEntryForACL(entry) { continue } @@ -249,7 +252,6 @@ func (e *Executor) filterLogsByACL(cfg *config.Config, user *acl.AuthenticatedUs filtered = append(filtered, entry) } } - e.logmutex.RUnlock() return filtered }