package monitor import ( "sync" "time" ) const maxRecentFiles = 10 // RecentTracker maintains a ring buffer of recently synced files. type RecentTracker struct { mu sync.Mutex files []RecentFile } // NewRecentTracker creates a new recent files tracker. func NewRecentTracker() *RecentTracker { return &RecentTracker{ files: make([]RecentFile, 0, maxRecentFiles), } } // Add records a newly synced file. func (rt *RecentTracker) Add(name, folder string) { rt.mu.Lock() defer rt.mu.Unlock() rf := RecentFile{ Name: name, Folder: folder, Timestamp: time.Now(), } // Prepend (most recent first) rt.files = append([]RecentFile{rf}, rt.files...) if len(rt.files) > maxRecentFiles { rt.files = rt.files[:maxRecentFiles] } } // Files returns a snapshot of recent files (most recent first). func (rt *RecentTracker) Files() []RecentFile { rt.mu.Lock() defer rt.mu.Unlock() out := make([]RecentFile, len(rt.files)) copy(out, rt.files) return out }