package app import ( "fmt" "strings" "time" ) func appMarksClear(target string) error { target = strings.ToLower(strings.TrimSpace(target)) if target != "vpn" && target != "direct" { return fmt.Errorf("invalid target") } appMarksMu.Lock() defer appMarksMu.Unlock() st := loadAppMarksState() changed := pruneExpiredAppMarksLocked(&st, time.Now().UTC()) kept := st.Items[:0] for _, it := range st.Items { if strings.ToLower(strings.TrimSpace(it.Target)) == target { _ = nftDeleteAppMarkRule(target, it.ID) changed = true continue } kept = append(kept, it) } st.Items = kept if changed { return saveAppMarksState(st) } return nil }