SASK

SASK PROXY

Premium Core V3.0

Preferences

UI Theme

インターフェースのテーマを変更

Privacy Cloak

タブの見た目や履歴を偽装

// --- INITIALIZE --- async function init(){ // 1. Service Workerの登録を追加 if ('serviceWorker' in navigator) { try { await navigator.serviceWorker.register('/uv/uv.sw.js', { scope: __uv$config.prefix }); console.log('Ultraviolet Service Worker registered!'); } catch (err) { console.error('SW registration failed:', err); alert('Ultravioletの設定(Service Worker)の読み込みに失敗しました。'); } } if(!state.tabs.length) createTab(); // Events (既存のまま) $('#newTabBtn').onclick = () => createTab(); $('#goBtn').onclick = () => navigate($('#urlInput').value); $('#urlInput').onkeydown = e => e.key === 'Enter' && navigate(e.target.value); $('#homeGo').onclick = () => navigate($('#homeSearch').value); $('#homeSearch').onkeydown = e => e.key === 'Enter' && navigate(e.target.value); $('#openSettingsBtn').onclick = () => $('#settingsModal').classList.remove('hidden'); $('#closeSettingsBtn').onclick = () => $('#settingsModal').classList.add('hidden'); $('#reloadBtn').onclick = () => { const t = state.tabs.find(x=>x.id===state.activeTabId); if(t?.url) navigate(t.url); }; $('#themeSelect').onchange = e => { document.body.className = 'theme-' + e.target.value; state.settings.theme = e.target.value; save(); }; $('#routeProfile').onchange = e => { state.settings.route = e.target.value; save(); }; $('#bookmarkBtn').onclick = () => { const tab = state.tabs.find(t => t.id === state.activeTabId); if(tab && tab.url){ state.bookmarks.push({title: tab.title, url: tab.url}); save(); renderBookmarks(); notify("Added to Bookmarks"); } }; $('#aiBtn').onclick = () => toggleAi(); // UI Init (既存のまま) document.body.className = 'theme-' + state.settings.theme; $('#themeSelect').value = state.settings.theme; $('#routeProfile').value = state.settings.route; renderTabs(); renderShortcuts(); renderBookmarks(); $('#memoArea').value = localStorage.getItem('sask_memo') || ''; $('#memoArea').oninput = e => localStorage.setItem('sask_memo', e.target.value); } # Ultravioletのライブラリから実行ファイルをコピーするコマンド例 cp node_modules/@titaniumnetwork-dev/ultraviolet/dist/uv.bundle.js public/uv/ cp node_modules/@titaniumnetwork-dev/ultraviolet/dist/uv.handler.js public/uv/ cp node_modules/@titaniumnetwork-dev/ultraviolet/dist/uv.sw.js public/uv/ /* public/uv/uv.config.js */ self.__uv$config = { prefix: '/service/', bare: '/bare/', encodeUrl: Ultraviolet.codec.xor.encode, decodeUrl: Ultraviolet.codec.xor.decode, handler: '/uv/uv.handler.js', bundle: '/uv/uv.bundle.js', config: '/uv/uv.config.js', sw: '/uv/uv.sw.js', };