mirror of
https://github.com/Such-Software/adaptive-multi-protocol-browser.git
synced 2026-10-26 01:38:32 +01:00
Make AMPB Firefox-first
This commit is contained in:
@@ -23,7 +23,7 @@ class ConfigError(ValueError):
|
||||
@dataclass(frozen=True)
|
||||
class AppConfig:
|
||||
state_dir: str = ".ampb"
|
||||
default_engine: str = "system"
|
||||
default_engine: str = "hardened-firefox"
|
||||
isolate_by_transport: bool = True
|
||||
transport_modes: dict[str, str] | None = None
|
||||
|
||||
@@ -68,7 +68,7 @@ def _parse_config(data: dict[str, Any], path: Path) -> AppConfig:
|
||||
transports = _table(data, "transports", path)
|
||||
|
||||
state_dir = _string(browser, "state_dir", ".ampb", path)
|
||||
default_engine = _string(browser, "default_engine", "system", path)
|
||||
default_engine = _string(browser, "default_engine", "hardened-firefox", path)
|
||||
isolate_by_transport = _bool(profiles, "isolate_by_transport", True, path)
|
||||
transport_modes = _transport_modes(transports, path)
|
||||
|
||||
|
||||
+15
-1
@@ -4,7 +4,7 @@ from pathlib import Path
|
||||
|
||||
from .adapters import ADAPTERS
|
||||
from .candidates import CANDIDATE_TRANSPORTS
|
||||
from .metadata import ROUTE_RULES, TRANSPORT_DEFINITIONS
|
||||
from .metadata import BROWSER_BACKENDS, ROUTE_RULES, TRANSPORT_DEFINITIONS
|
||||
from .platforms import PLATFORM_CAPABILITIES
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ def generate_docs(root: Path, *, check: bool = False) -> list[Path]:
|
||||
GENERATED_DIR / "adapters.md": _adapters_doc(),
|
||||
GENERATED_DIR / "candidate-transports.md": _candidate_transports_doc(),
|
||||
GENERATED_DIR / "platform-capabilities.md": _platform_capabilities_doc(),
|
||||
GENERATED_DIR / "browser-strategy.md": _browser_strategy_doc(),
|
||||
}
|
||||
changed: list[Path] = []
|
||||
for rel_path, content in docs.items():
|
||||
@@ -104,3 +105,16 @@ def _candidate_transports_doc() -> str:
|
||||
f"[source]({candidate.source}) | {candidate.note} |"
|
||||
)
|
||||
return _header("Generated Candidate Transports") + "\n".join(rows) + "\n"
|
||||
|
||||
|
||||
def _browser_strategy_doc() -> str:
|
||||
rows = [
|
||||
"| Backend | Role | Status | Platforms | Launch Mode | Privacy Posture | Note |",
|
||||
"| --- | --- | --- | --- | --- | --- | --- |",
|
||||
]
|
||||
for backend in BROWSER_BACKENDS:
|
||||
rows.append(
|
||||
f"| `{backend.name}` | {backend.role} | `{backend.status}` | {backend.platforms} | "
|
||||
f"{backend.launch_mode} | {backend.privacy_posture} | {backend.note} |"
|
||||
)
|
||||
return _header("Generated Browser Strategy") + "\n".join(rows) + "\n"
|
||||
|
||||
@@ -20,6 +20,17 @@ class TransportDefinition:
|
||||
note: str
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class BrowserBackend:
|
||||
name: str
|
||||
role: str
|
||||
status: str
|
||||
platforms: str
|
||||
launch_mode: str
|
||||
privacy_posture: str
|
||||
note: str
|
||||
|
||||
|
||||
ROUTE_RULES = (
|
||||
RouteRule("*.onion", "tor", "tor", "route through Tor SOCKS"),
|
||||
RouteRule("*.i2p", "i2p", "i2p", "route through I2P HTTP proxy"),
|
||||
@@ -66,3 +77,51 @@ TRANSPORT_DEFINITIONS = (
|
||||
"Adapter planned for resilient/private routing; physical/link-layer setup may require operator config.",
|
||||
),
|
||||
)
|
||||
|
||||
BROWSER_BACKENDS = (
|
||||
BrowserBackend(
|
||||
"hardened-firefox",
|
||||
"primary web runtime",
|
||||
"planned",
|
||||
"desktop, android",
|
||||
"managed profile, policy, and native transport launcher",
|
||||
"strong baseline; track Firefox ESR and Tor Browser hardening choices",
|
||||
"Default AMPB web runtime before a full browser fork.",
|
||||
),
|
||||
BrowserBackend(
|
||||
"tor-browser-compatible",
|
||||
"tor-hardened target",
|
||||
"planned",
|
||||
"desktop, android",
|
||||
"adopt, launch, or fork after transport contracts are stable",
|
||||
"highest Tor web target; do not claim equivalence until Tor Browser patches are tracked",
|
||||
"Path toward real Tor Browser-grade behavior for .onion browsing.",
|
||||
),
|
||||
BrowserBackend(
|
||||
"webkit-ios-shell",
|
||||
"ios runtime",
|
||||
"planned",
|
||||
"ios",
|
||||
"native shell with embedded transports and isolated web views",
|
||||
"platform constrained; avoid clearnet fallback and isolate transport state",
|
||||
"Required for App Store-style iOS builds outside special browser-engine entitlements.",
|
||||
),
|
||||
BrowserBackend(
|
||||
"gemini-native-viewer",
|
||||
"alternate-web viewer",
|
||||
"planned",
|
||||
"desktop, android, ios",
|
||||
"built-in fetch and render path",
|
||||
"no web engine or shared browser storage required",
|
||||
"Used for Gemini and similar lightweight document transports.",
|
||||
),
|
||||
BrowserBackend(
|
||||
"chromium-cef",
|
||||
"prototype fallback",
|
||||
"fallback",
|
||||
"desktop",
|
||||
"profile launcher only when Firefox path is blocked",
|
||||
"not a Tor Browser privacy baseline",
|
||||
"Allowed for experiments, but not the main privacy-browser strategy.",
|
||||
),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user