Several concurrent workstreams committed together as a checkpoint: - Ariadne mobile resolver — BchFetcher/Bns/MainActivity resolution logic, AndroidManifest + build.ps1 - Theseus password manager — settings.html/chrome.html/settings-preload.js UI + main.js wiring + package.json resource; Argus password-vault.js, record-picker.js (+ tests) and resolver-web.d.ts - Hephaestus — new BCH-wallet OIDC auth-proxy + Forgejo docker-compose and restic/S3 scripts (secrets referenced via env only; Hephaestus/.env is gitignored) - Argus public-gateway.mjs updates - Docs — root README, Email README/RUNBOOK, VPS access runbooks (Checkers/Deviant), site/hermes, WebsiteDev registry + faster-blocks, Failures/ AAAA-mangle writeup, Decentralized Storage map, coordination notes - .gitignore — exclude /.keys/ and Hephaestus/.env
34 lines
2.2 KiB
JavaScript
34 lines
2.2 KiB
JavaScript
const { contextBridge, ipcRenderer } = require("electron");
|
|
contextBridge.exposeInMainWorld("cfg", {
|
|
get: () => ipcRenderer.invoke("settings-get"),
|
|
set: (key, value) => ipcRenderer.invoke("settings-set", key, value),
|
|
engines: () => ipcRenderer.invoke("search-engines"),
|
|
addEngine: (eng) => ipcRenderer.invoke("add-engine", eng),
|
|
removeEngine: (id) => ipcRenderer.invoke("remove-engine", id),
|
|
setEngineEnabled: (id, on) => ipcRenderer.invoke("set-engine-enabled", id, on),
|
|
setEngineOrder: (ids) => ipcRenderer.invoke("set-engine-order", ids),
|
|
removeFromList: (id) => ipcRenderer.invoke("remove-from-list", id),
|
|
// Storage: wipe browsing data on demand. Pass any subset of
|
|
// { cookies, cache, storage, history }.
|
|
clearBrowsingData: (opts) => ipcRenderer.invoke("clear-browsing-data", opts),
|
|
// Password vault. All calls return { ok, ... } | { ok: false, err }.
|
|
// Renderers never see the seed / vault key / master password past setup/
|
|
// unlock; get() returns plaintext only in explicit response to a user click.
|
|
pwStatus: () => ipcRenderer.invoke("password-status"),
|
|
pwSetup: (masterPassword, seedSource) => ipcRenderer.invoke("password-setup", { masterPassword, seedSource }),
|
|
pwUnlock: (masterPassword) => ipcRenderer.invoke("password-unlock", masterPassword),
|
|
pwLock: () => ipcRenderer.invoke("password-lock"),
|
|
pwList: () => ipcRenderer.invoke("password-list"),
|
|
pwGet: (id) => ipcRenderer.invoke("password-get", id),
|
|
pwAdd: (entry) => ipcRenderer.invoke("password-add", entry),
|
|
pwUpdate: (id, patch) => ipcRenderer.invoke("password-update", id, patch),
|
|
pwRemove: (id) => ipcRenderer.invoke("password-remove", id),
|
|
pwGenerate: (spec) => ipcRenderer.invoke("password-generate", spec),
|
|
// Main asks settings to jump to a specific sidebar section (e.g. from the
|
|
// engine picker's "Search settings…" click). Emits the section id string.
|
|
onFocusSection: (cb) => ipcRenderer.on("focus-section", (_e, section) => cb(section)),
|
|
// Collision-mode: BCNR/ICANN policy + per-name/per-TLD overrides
|
|
collisionState: () => ipcRenderer.invoke("collision-state"),
|
|
setCollisionPolicy: (p) => ipcRenderer.invoke("collision-set-policy", p),
|
|
resetCollisions: () => ipcRenderer.invoke("collision-reset"),
|
|
});
|