Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ config :desktop, :menu_adapter, DesktopWebview.Menu.Adapter
|------|---------|
| `lib/desktop_webview/` | Elixir transport, launcher, backend, menu adapter |
| `native/macos/` | Swift + AppKit + WKWebView host (primary) |
| `native/windows/` | WebView2 host (scaffold until implemented) |
| `native/windows/` | WebView2 host |
| `native/linux/` | WebKitGTK host (scaffold until implemented) |
| `docs/` | Protocol, packaging, **porting**, integration, per-platform status |
| `test/` | Unit + Elixir E2E (drives the native binary) |
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ spawns the BEAM release; in development an existing BEAM can launch the host wit
| Platform | Engine | Status |
|----------|--------|--------|
| macOS | WKWebView | Primary — see [docs/status/macos.md](docs/status/macos.md) |
| Windows | WebView2 | Planned — [docs/status/windows.md](docs/status/windows.md) |
| Windows | WebView2 | Done — [docs/status/windows.md](docs/status/windows.md) |
| Linux | WebKitGTK | Usable — [docs/status/linux.md](docs/status/linux.md) |

## Quick start (development)
Expand Down
2 changes: 2 additions & 0 deletions docs/status/windows.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ Release asset: `DesktopWebView-windows-x64.exe` (GitHub Releases; not Hex `priv/
| Permission policy hybrid | done | E2E simulate + policy |
| Microphone in webview | done | Permission RPC + WebView2 kinds |
| Camera in webview | done | Permission RPC + WebView2 kinds |
| Native dialogs | done | IFileOpenDialog + Win32 prompt |
| Host-driven BEAM restart | done | `restart_beam` ini + process wait |
| Test RPC channel | done | E2E |
| Release artifact download | todo | Elixir fetch/cache still pending |
| Ad-hoc / CI signing | todo | Authenticode via desktop_deployment later |
9 changes: 9 additions & 0 deletions native/windows/src/config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,15 @@ void HostConfig::apply_ini() {
while (args >> tok) beam_args.push_back(tok);
}
if (auto v = ini.get("beam", "working_dir")) beam_working_dir = *v;
if (auto v = ini.get("lifetime", "restart_beam")) {
restart_beam = !(*v == "false" || *v == "0");
}
if (auto v = ini.get("lifetime", "restart_max_attempts")) {
restart_max_attempts = std::stoi(*v);
}
if (auto v = ini.get("lifetime", "restart_backoff_ms")) {
restart_backoff_ms = static_cast<uint32_t>(std::stoul(*v));
}
for (auto& [k, v] : ini.section("env")) {
extra_env[k] = v;
}
Expand Down
4 changes: 4 additions & 0 deletions native/windows/src/config.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ struct HostConfig {
std::vector<std::string> beam_args{"start"};
std::optional<std::string> beam_working_dir;
bool beam_enabled = true;
// Host-driven BEAM restart (packaged host-first; replaces heart).
bool restart_beam = true;
int restart_max_attempts = 0;
uint32_t restart_backoff_ms = 500;
std::map<std::string, std::string> extra_env;
std::vector<std::string> forwarded_argv;

Expand Down
Loading
Loading