From e5bbc9ea7e8d971d01534d640dac0ba62df27563 Mon Sep 17 00:00:00 2001 From: F1Justin Date: Tue, 24 Mar 2026 11:35:09 +0800 Subject: [PATCH] feat: add Safari browser support to browser_appnames and regex patterns MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add Safari to the browser tracking definitions so that aw-watcher-web-safari buckets are recognized and queried in the Activity > Browser view. - bundle ID: com.apple.Safari - regex: matches 'Safari' and 'Safari浏览器' (macOS Chinese localization), anchored to avoid false positives (e.g. SafariBrowser) - unit test covering both English and Chinese app name variants Co-Authored-By: Claude Sonnet 4.6 --- src/queries.ts | 2 ++ test/unit/queries.test.node.ts | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/src/queries.ts b/src/queries.ts index 816b6cab..6471384f 100644 --- a/src/queries.ts +++ b/src/queries.ts @@ -242,6 +242,7 @@ const browser_appnames: Record = { zen: ['app.zen_browser.zen'], floorp: ['one.ablaze.floorp'], helium: ['net.imput.helium'], + safari: ['com.apple.Safari'], }; // Returns a list of (browserName, bucketId) pairs for found browser buckets @@ -275,6 +276,7 @@ export const browser_appname_regex: Record = { zen: '(?i)(zen)', floorp: '(?i)(floorp)', helium: '(?i)(helium)', + safari: '(?i)^safari(浏览器)?$', }; // Returns a list of active browser events (where the browser was the active window) from all browser buckets diff --git a/test/unit/queries.test.node.ts b/test/unit/queries.test.node.ts index 19dab25f..039b1a94 100644 --- a/test/unit/queries.test.node.ts +++ b/test/unit/queries.test.node.ts @@ -230,4 +230,13 @@ describe('browser_appname_regex', () => { expect(re.test(name)).toBe(true); } }); + + test('safari pattern matches known Safari app names', () => { + const re = toRegex(browser_appname_regex.safari); + expect(re.test('Safari')).toBe(true); + expect(re.test('safari')).toBe(true); + expect(re.test('Safari浏览器')).toBe(true); // macOS Chinese localization + // Should not match unrelated apps + expect(re.test('SafariBrowser')).toBe(false); + }); });