The Browser view (Top Domains / URLs / Titles) is permanently empty for me in Dia.
The extension itself works fine, which is what made this annoying to track down.
Events land in aw-watcher-web-chrome_<host> and keep coming:
{"timestamp": "2026-08-05T21:32:58Z", "duration": 20.1,
"data": {"url": "http://localhost:5600/#/activity/...", "title": "ActivityWatch", "tabCount": 16}}
I'm pretty sure the problem is in browserSummaryQuery, which intersects those against window events whose app matches the chrome entry in src/queries.ts:
browser_appnames.chrome = ['com.google.Chrome', 'com.google.ChromeDev', 'org.chromium.Chromium']
browser_appname_regex.chrome = '(?i)^(google[-_ ]?chrome|chrome|chromium)'
aw-watcher-window reports Dia as app: "Dia" (bundle id company.thebrowser.dia). But neither the exact list nor the regex matches that so filter_period_intersect doesn't return nothing and all three columns render "No data".
Seems the same as #749 and #1094.
What I've confirmed fixes it:
- chrome: ['com.google.Chrome', 'com.google.ChromeDev', 'org.chromium.Chromium'],
+ chrome: ['com.google.Chrome', 'com.google.ChromeDev', 'org.chromium.Chromium', 'company.thebrowser.dia'],
- chrome: '(?i)^(google[-_ ]?chrome|chrome|chromium)',
+ chrome: '(?i)^(google[-_ ]?chrome|chrome|chromium|dia)',
I've been running that patched into the bundled webui inside the .app rather than a real build and it works.
Now the part I'm less sure about. My first instinct was that Dia should get its own key, the way arc does, since it is a separate browser. but I don't think that can work, and I think it's also why #1094 keeps collecting "still broken" replies despite arc having been added to queries.ts.
browsersWithBuckets() binds a browser key to a bucket by substring match on the bucket id:
const bucketId = _.find(browserbuckets, bucket_id => _.includes(bucket_id, browserName));
The extension can't tell it's running inside a fork, so Dia announces itself as chrome and its data goes to aw-watcher-web-chrome.
But no bucket id ever contains "arc" or "dia", those keys get filtered out before their regexes are ever applied, and arc: [] with '(?i)^arc(\.exe)?$' just sits there doing nothing. @wzxu noticed the same thing on #1094 ("Looks like Arc should already be defined in that file, but it's not working for me either"), doesn't look like it went anywhere.
Anyway, while the bucket name decides which key applies, forks gotta be listed under the browser whose bucket they actually write to. Adding dia to the chrome patterns works today. arc probably belongs there too.
The other option could be have the extension declare which browser it is and binding on that, but that's a much bigger change and probably its own issue.
My local info:
macOS 15 (Darwin 25.5.0, Apple Silicon), ActivityWatch v0.14.0b3, Dia running the Chrome build of the extension.
The Browser view (Top Domains / URLs / Titles) is permanently empty for me in Dia.
The extension itself works fine, which is what made this annoying to track down.
Events land in
aw-watcher-web-chrome_<host>and keep coming:{"timestamp": "2026-08-05T21:32:58Z", "duration": 20.1, "data": {"url": "http://localhost:5600/#/activity/...", "title": "ActivityWatch", "tabCount": 16}}I'm pretty sure the problem is in
browserSummaryQuery, which intersects those against window events whoseappmatches the chrome entry insrc/queries.ts:aw-watcher-window reports Dia as
app: "Dia"(bundle idcompany.thebrowser.dia). But neither the exact list nor the regex matches that sofilter_period_intersectdoesn't return nothing and all three columns render "No data".Seems the same as #749 and #1094.
What I've confirmed fixes it:
I've been running that patched into the bundled webui inside the .app rather than a real build and it works.
Now the part I'm less sure about. My first instinct was that Dia should get its own key, the way
arcdoes, since it is a separate browser. but I don't think that can work, and I think it's also why #1094 keeps collecting "still broken" replies despitearchaving been added toqueries.ts.browsersWithBuckets()binds a browser key to a bucket by substring match on the bucket id:The extension can't tell it's running inside a fork, so Dia announces itself as chrome and its data goes to
aw-watcher-web-chrome.But no bucket id ever contains "arc" or "dia", those keys get filtered out before their regexes are ever applied, and
arc: []with'(?i)^arc(\.exe)?$'just sits there doing nothing. @wzxu noticed the same thing on #1094 ("Looks like Arc should already be defined in that file, but it's not working for me either"), doesn't look like it went anywhere.Anyway, while the bucket name decides which key applies, forks gotta be listed under the browser whose bucket they actually write to. Adding
diato the chrome patterns works today.arcprobably belongs there too.The other option could be have the extension declare which browser it is and binding on that, but that's a much bigger change and probably its own issue.
My local info:
macOS 15 (Darwin 25.5.0, Apple Silicon), ActivityWatch v0.14.0b3, Dia running the Chrome build of the extension.