Skip to content

Commit a082190

Browse files
committed
v0.2.1: migrate omnibox to Xprivo; embedded player token + Music/Books
- launcher: force-migrate the omnibox default search to Xprivo ONCE per profile (older builds left existing profiles on DuckDuckGo), then respect user choice - new tab: pass the connect token to the modal player so gated Live TV plays; split torrent favorites into Music / Books / Movies & Shows
1 parent 0b51494 commit a082190

26 files changed

Lines changed: 46 additions & 40 deletions

File tree

apps/desktop/extensions/ai-sidebar/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"manifest_version": 3,
33
"name": "TronBrowser",
4-
"version": "0.2.0",
4+
"version": "0.2.1",
55
"description": "TronBrowser — privacy-first, AI-native. Branded new tab, private search, CoinPay login, and a bring-your-own-keys AI sidebar.",
66
"icons": {
77
"16": "icons/icon-16.png",

apps/desktop/extensions/ai-sidebar/newtab.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -235,9 +235,11 @@ async function renderMotd() {
235235
}
236236

237237
// --- bittorrented favorites (Live TV + Podcasts) when connected ---
238+
let btrTokenCache = '';
238239
async function renderBtr() {
239240
const sec = el('btr-sec');
240241
const token = await btrToken();
242+
btrTokenCache = token || '';
241243
if (!token) { sec.hidden = true; return; }
242244
let data;
243245
try {
@@ -269,13 +271,17 @@ async function renderBtr() {
269271
return tile(ep?.player, p.url, p.image, '🎙', p.title, ep ? `▶ ${ep.title}` : 'no recent episodes');
270272
})) +
271273
group('Radio', radio.slice(0, 12).map((s) => tile(null, s.url, s.logo, '📻', s.name))) +
272-
group('Movies', movies.slice(0, 12).map((m) => tile(null, m.url, m.poster, '🎬', m.title)));
274+
group('Music', movies.filter((m) => m.contentType === 'music').slice(0, 12).map((m) => tile(null, m.url, m.poster, '🎵', m.title))) +
275+
group('Books', movies.filter((m) => m.contentType === 'book').slice(0, 12).map((m) => tile(null, m.url, m.poster, '📖', m.title))) +
276+
group('Movies & Shows', movies.filter((m) => !['music', 'book'].includes(m.contentType)).slice(0, 12).map((m) => tile(null, m.url, m.poster, '🎬', m.title)));
273277
}
274278

275-
// Open a bittorrented /api/player URL in a themed modal iframe.
279+
// Open a bittorrented /api/player URL in a themed modal iframe. Append the
280+
// connect token so gated streams (Live TV) authenticate inside the iframe.
276281
function openPlayer(url) {
277282
const sep = url.includes('?') ? '&' : '?';
278-
el('player-frame').src = `${url}${sep}theme=dark&bg=${encodeURIComponent('#05070d')}&accent=${encodeURIComponent('#34e7ff')}`;
283+
const tk = btrTokenCache ? `&token=${encodeURIComponent(btrTokenCache)}` : '';
284+
el('player-frame').src = `${url}${sep}theme=dark&bg=${encodeURIComponent('#05070d')}&accent=${encodeURIComponent('#34e7ff')}${tk}`;
279285
el('player-modal').hidden = false;
280286
}
281287
function closePlayer() { el('player-modal').hidden = true; el('player-frame').src = 'about:blank'; }

apps/desktop/launcher/tronbrowser

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -107,10 +107,10 @@ if flag not in exp:
107107
PY
108108
fi
109109

110-
# Default the omnibox to Xprivo (Ungoogled ships no default search engine, so
111-
# keyword input becomes http://<keyword>). DuckDuckGo is available as an
112-
# alternative. Only seeds on first run; change it in chrome://settings/search.
113-
if command -v python3 >/dev/null 2>&1; then
110+
# Default the omnibox to Xprivo. Force this ONCE per profile (older builds
111+
# defaulted to DuckDuckGo, and seeding-only-when-empty left existing profiles on
112+
# DDG) via a marker file, then respect the user's chrome://settings/search choice.
113+
if command -v python3 >/dev/null 2>&1 && [ ! -f "$DATA/.tron-search-xprivo" ]; then
114114
TB_PREFS="$DATA/Default/Preferences" python3 - <<'PY' 2>/dev/null || true
115115
import json, os
116116
p = os.environ["TB_PREFS"]
@@ -119,16 +119,16 @@ try:
119119
d = json.load(open(p)) if os.path.exists(p) else {}
120120
except Exception:
121121
d = {}
122-
if not d.get("default_search_provider_data", {}).get("template_url_data"):
123-
d.setdefault("default_search_provider_data", {})["template_url_data"] = {
124-
"short_name": "Xprivo",
125-
"keyword": "xprivo.com",
126-
"url": "https://www.xprivo.com/search/?q={searchTerms}",
127-
"favicon_url": "https://www.xprivo.com/favicon.ico",
128-
"safe_for_autoreplace": False,
129-
}
130-
json.dump(d, open(p, "w"))
122+
d.setdefault("default_search_provider_data", {})["template_url_data"] = {
123+
"short_name": "Xprivo",
124+
"keyword": "xprivo.com",
125+
"url": "https://www.xprivo.com/search/?q={searchTerms}",
126+
"favicon_url": "https://www.xprivo.com/favicon.ico",
127+
"safe_for_autoreplace": False,
128+
}
129+
json.dump(d, open(p, "w"))
131130
PY
131+
mkdir -p "$DATA"; : > "$DATA/.tron-search-xprivo"
132132
fi
133133

134134
# Auto-detection only ever selects Ungoogled Chromium / flatpak ungoogled / the

apps/desktop/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@tronbrowser/desktop",
3-
"version": "0.2.0",
3+
"version": "0.2.1",
44
"private": true,
55
"description": "Desktop shell for the TronBrowser Chromium fork",
66
"type": "module",

apps/docs/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@tronbrowser/docs",
3-
"version": "0.2.0",
3+
"version": "0.2.1",
44
"private": true,
55
"description": "Documentation site",
66
"type": "module",

apps/mobile/app.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"slug": "tronbrowserdev",
55
"owner": "profullstack",
66
"scheme": "tronbrowser",
7-
"version": "0.2.0",
7+
"version": "0.2.1",
88
"orientation": "portrait",
99
"userInterfaceStyle": "dark",
1010
"platforms": [

apps/mobile/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@tronbrowser/mobile",
3-
"version": "0.2.0",
3+
"version": "0.2.1",
44
"private": true,
55
"description": "TronBrowser mobile (Expo / React Native) — Phase 2",
66
"type": "module",

apps/web/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@tronbrowser/web",
3-
"version": "0.2.0",
3+
"version": "0.2.1",
44
"private": true,
55
"description": "TronBrowser marketing site + web dashboard",
66
"type": "module",

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "tronbrowser",
3-
"version": "0.2.0",
3+
"version": "0.2.1",
44
"private": true,
55
"description": "TronBrowser.dev — open-source, privacy-first, AI-native browser",
66
"packageManager": "pnpm@9.12.0",

packages/agent-runtime/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@tronbrowser/agent-runtime",
3-
"version": "0.2.0",
3+
"version": "0.2.1",
44
"private": true,
55
"description": "Agent runtime: planner, executor, validator, memory, tools",
66
"type": "module",

0 commit comments

Comments
 (0)