-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
483 lines (482 loc) · 24.9 KB
/
Copy pathindex.html
File metadata and controls
483 lines (482 loc) · 24.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1" name="viewport"/>
<meta content="eMuleBB RC1 is published: install eMule broadband edition with a PowerShell suite bootstrapper or standalone ZIP, with GitHub-built package provenance." name="description"/>
<meta content="index,follow" name="robots"/>
<meta content="eMuleBB" name="author"/>
<meta content="eMuleBB home | eMule broadband edition" property="og:title"/>
<meta content="eMuleBB is its own broadband-focused eMule product and the home for Windows P2P builds, controller tooling, release proof, and exploratory eD2K/Kad engineering." property="og:description"/>
<meta content="website" property="og:type"/>
<meta content="https://emulebb.github.io/" property="og:url"/>
<meta content="eMule broadband edition" property="og:site_name"/>
<meta content="summary" name="twitter:card"/>
<link href="https://emulebb.github.io/" rel="canonical"/>
<link href="https://emulebb.github.io/sitemap.xml" rel="sitemap" type="application/xml"/><link href="https://emulebb.github.io/" hreflang="en" rel="alternate"/><link href="https://emulebb.github.io/ar-ae/" hreflang="ar-AE" rel="alternate"/><link href="https://emulebb.github.io/eu/" hreflang="eu" rel="alternate"/><link href="https://emulebb.github.io/bg/" hreflang="bg" rel="alternate"/><link href="https://emulebb.github.io/ca/" hreflang="ca" rel="alternate"/><link href="https://emulebb.github.io/cs/" hreflang="cs" rel="alternate"/><link href="https://emulebb.github.io/da/" hreflang="da" rel="alternate"/><link href="https://emulebb.github.io/el/" hreflang="el" rel="alternate"/><link href="https://emulebb.github.io/es/" hreflang="es" rel="alternate"/><link href="https://emulebb.github.io/ast/" hreflang="ast" rel="alternate"/><link href="https://emulebb.github.io/et/" hreflang="et" rel="alternate"/><link href="https://emulebb.github.io/fa/" hreflang="fa" rel="alternate"/><link href="https://emulebb.github.io/fi/" hreflang="fi" rel="alternate"/><link href="https://emulebb.github.io/br/" hreflang="br" rel="alternate"/><link href="https://emulebb.github.io/pt-br/" hreflang="pt-BR" rel="alternate"/><link href="https://emulebb.github.io/pt-pt/" hreflang="pt-PT" rel="alternate"/><link href="https://emulebb.github.io/gl/" hreflang="gl" rel="alternate"/><link href="https://emulebb.github.io/he/" hreflang="he" rel="alternate"/><link href="https://emulebb.github.io/hu/" hreflang="hu" rel="alternate"/><link href="https://emulebb.github.io/it/" hreflang="it" rel="alternate"/><link href="https://emulebb.github.io/ja/" hreflang="ja" rel="alternate"/><link href="https://emulebb.github.io/ko/" hreflang="ko" rel="alternate"/><link href="https://emulebb.github.io/lt/" hreflang="lt" rel="alternate"/><link href="https://emulebb.github.io/lv/" hreflang="lv" rel="alternate"/><link href="https://emulebb.github.io/mt/" hreflang="mt" rel="alternate"/><link href="https://emulebb.github.io/nb/" hreflang="nb" rel="alternate"/><link href="https://emulebb.github.io/ru/" hreflang="ru" rel="alternate"/><link href="https://emulebb.github.io/de/" hreflang="de" rel="alternate"/><link href="https://emulebb.github.io/fr/" hreflang="fr" rel="alternate"/><link href="https://emulebb.github.io/pl/" hreflang="pl" rel="alternate"/><link href="https://emulebb.github.io/nl/" hreflang="nl" rel="alternate"/><link href="https://emulebb.github.io/nn/" hreflang="nn" rel="alternate"/><link href="https://emulebb.github.io/ro/" hreflang="ro" rel="alternate"/><link href="https://emulebb.github.io/sl/" hreflang="sl" rel="alternate"/><link href="https://emulebb.github.io/sq/" hreflang="sq" rel="alternate"/><link href="https://emulebb.github.io/sv/" hreflang="sv" rel="alternate"/><link href="https://emulebb.github.io/tr/" hreflang="tr" rel="alternate"/><link href="https://emulebb.github.io/uk/" hreflang="uk" rel="alternate"/><link href="https://emulebb.github.io/ug-cn/" hreflang="ug-CN" rel="alternate"/><link href="https://emulebb.github.io/ca-valencia/" hreflang="ca-ES-valencia" rel="alternate"/><link href="https://emulebb.github.io/ca-valencia-racv/" hreflang="ca-ES-valencia-x-racv" rel="alternate"/><link href="https://emulebb.github.io/vi/" hreflang="vi" rel="alternate"/><link href="https://emulebb.github.io/zh-cn/" hreflang="zh-CN" rel="alternate"/><link href="https://emulebb.github.io/zh-tw/" hreflang="zh-TW" rel="alternate"/><link href="https://emulebb.github.io/" hreflang="x-default" rel="alternate"/>
<link href="assets/brand/emulebb-favicon.ico" rel="icon" type="image/x-icon"/>
<title>eMuleBB home | eMule broadband edition</title>
<link href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.classless.min.css" rel="stylesheet"/>
<link href="styles.css" rel="stylesheet"/>
<style>
.install-command {
width: min(100%, 980px);
display: grid;
gap: 12px;
margin-top: 18px;
padding: 16px;
border: 1px solid rgba(21, 24, 29, 0.16);
border-radius: 8px;
background: #ffffff;
box-shadow: 0 10px 26px rgba(28, 32, 36, 0.08);
}
.install-command-header {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 12px;
align-items: center;
}
.install-command-code {
min-width: 0;
max-width: 100%;
margin: 0;
overflow-x: auto;
border: 1px solid rgba(14, 111, 118, 0.22);
border-radius: 8px;
background: #eef3f5;
}
.install-command-code code {
display: block;
width: 100%;
padding: 12px;
border: 0;
background: transparent;
white-space: nowrap;
}
</style>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-8G02C2WFEB"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-8G02C2WFEB');
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "eMule broadband edition",
"alternateName": "eMuleBB",
"applicationCategory": "FileSharingApplication",
"operatingSystem": "Windows",
"url": "https://emulebb.github.io/",
"codeRepository": "https://github.com/emulebb/emulebb",
"description": "eMuleBB is the home of eMule broadband edition, an independent broadband-focused eMule product with upload control, automated testing, SBOM-backed packages, REST automation, eD2K/Kad compatibility, and out-of-the-box aMuTorrent, Prowlarr, Radarr, and Sonarr integration paths. The first public release candidate 0.7.3-rc.1 is published on GitHub Releases."
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "eMule broadband edition",
"alternateName": ["eMuleBB", "emulebb"],
"url": "https://emulebb.github.io/"
}
</script>
</head>
<body>
<header class="site-header">
<a aria-label="eMule broadband edition home" class="brand" href="#top">
<img alt="eMuleBB broadband edition" class="brand-logo" decoding="async" height="160" src="assets/brand/emulebb-broadband-edition-logo.png" width="151"/>
</a>
<button aria-controls="primary-nav" aria-expanded="false" aria-label="Open primary navigation" class="menu-toggle" type="button">
<span class="menu-toggle-label">Menu</span>
</button>
<nav aria-label="Primary navigation" id="primary-nav">
<a href="#why">Why</a>
<a href="#features">Features</a>
<a class="nav-download" href="#install">Download</a>
<a href="#docs">Guide</a>
<a href="#team">Team</a>
<a href="#repos">Repos</a>
<a href="https://emulebb.github.io/faq/">FAQ</a>
</nav>
</header>
<main id="top">
<section class="hero">
<div class="hero-copy">
<p class="eyebrow">The eMuleBB home for broadband P2P</p>
<h1>eMuleBB is the broadband eMule product built by P2P people.</h1>
<p class="lead">RC1 is published: a serious Windows eMule line for fast upload links, large shared libraries, always-on sessions, REST controller workflows, Arr integration, and GitHub-built package evidence.</p>
<div aria-label="Project links" class="actions">
<a class="button primary" href="#install">Download RC1</a>
<a class="button secondary" href="https://github.com/emulebb/emulebb">Source</a>
</div>
<div aria-label="Download releases" class="release-links">
<span>Download releases</span>
<a href="https://github.com/emulebb/emulebb/releases/tag/emulebb-v0.7.3-rc.1">eMuleBB RC1</a>
<a href="https://github.com/emulebb/emulebb/releases/download/emulebb-v0.7.3-rc.1/emulebb-0.7.3-rc.1-x64.zip">x64 ZIP</a>
<a href="https://github.com/emulebb/amutorrent/releases/tag/amutorrent-v3.8.5-emulebb-v0.7.3-rc.1">aMuTorrent RC1</a>
</div>
</div>
<aside aria-label="eMuleBB product summary" class="hero-panel">
<p class="panel-kicker">Product posture</p>
<h2>eMuleBB is the product. The ecosystem is the proof lab.</h2>
<p>The desktop app stays stock-compatible where the network matters. The RC1 suite adds local controller workflows around it without turning eMuleBB into a generic torrent shell.</p>
<ul class="signal-list">
<li>0.7.3-rc.1 published</li>
<li>One-line suite bootstrap</li>
<li>Manual standalone ZIP</li>
<li>GitHub Actions builds</li>
<li>Manifest hash verification</li>
<li>SPDX SBOMs</li>
<li>aMuTorrent controller</li>
<li>Prowlarr Torznab</li>
<li>Radarr/Sonarr qBit adapter</li>
<li>Stock eD2K/Kad compatibility</li>
<li>Rendered HTML product docs</li>
<li>RC1 on GitHub Releases</li>
</ul>
</aside>
</section>
<section class="testing-callout install-callout" id="install">
<div>
<p class="eyebrow">Download</p>
<h2>Install RC1 with one PowerShell line, or download the ZIP manually.</h2>
<p>Use the full-suite bootstrapper for eMuleBB plus controller integration, or use the standalone ZIP when you only want the desktop app.</p>
<div aria-label="Full x64 suite" class="install-command">
<div class="install-command-header">
<strong>Full x64 suite</strong>
<button class="copy-command" data-copy-error="Select and copy" data-copy-label="Copy" data-copy-success="Copied" data-copy-text="irm https://github.com/emulebb/emulebb/releases/download/emulebb-v0.7.3-rc.1/Bootstrap-eMuleBBSuite.ps1 | iex" type="button">Copy</button>
</div>
<pre class="install-command-code"><code>irm https://github.com/emulebb/emulebb/releases/download/emulebb-v0.7.3-rc.1/Bootstrap-eMuleBBSuite.ps1 | iex</code></pre>
</div>
<p class="install-standalone">Standalone app: download the RC1 ZIP, extract it, and run <code>emulebb.exe</code>.</p>
</div>
<div class="testing-actions">
<a href="https://github.com/emulebb/emulebb/releases/tag/emulebb-v0.7.3-rc.1">Open RC1 release</a>
<a href="https://emulebb.github.io/emulebb-tooling/reference/GUIDE-SETUP/">Setup details</a>
</div>
</section>
<section class="intro">
<p>This is the home of <strong>eMuleBB</strong>: <strong>eMule broadband edition</strong>, an independent product for people who still value eMule's distributed sharing model and want it operated like modern software. RC1 packages are published on GitHub Releases with a full-suite bootstrapper, standalone ZIPs, manifests, hashes, SBOMs, and matching aMuTorrent controller assets.</p>
</section>
<section class="section motivation" id="why">
<div class="section-heading">
<p class="eyebrow">Why</p>
<h2>P2P software earns trust by surviving real sessions</h2>
<p>eMuleBB is a product effort and an engineering practice: preserve a complex native Windows client with real network behavior, then surround it with modern builds, tests, documentation, automation, and release proof.</p>
</div>
<div aria-label="eMuleBB motivation" class="motivation-grid">
<article>
<span>Product reason</span>
<h3>eMuleBB is its own product</h3>
<p>The goal is not a cosmetic mod, a protocol fork, or a generic downloader shell. It is a broadband-focused eMule line for long sessions, rare files, deliberate seeding, and power users who still want the native desktop workflow.</p>
</article>
<article>
<span>Engineering reason</span>
<h3>Make P2P behavior inspectable</h3>
<p>Upload slots, timeouts, buffers, large libraries, WebServer exposure, REST control, and package evidence are made explicit so each change can be reviewed, tested, documented, and adjusted.</p>
</article>
<article>
<span>Ecosystem reason</span>
<h3>Build the tools around the client</h3>
<p>The same workspace discipline covers the app, controller tooling, Windows builds, deterministic eD2K services, and exploratory headless eD2K/Kad work without pretending every lab project is a stable end-user product.</p>
</article>
</div>
</section>
<section class="section" id="features">
<div class="section-heading">
<p class="eyebrow">Features</p>
<h2>What eMuleBB adds around the classic client</h2>
<p>The RC1 work is focused on operator-visible behavior: predictable upload policy, safer binding, fixed performance limits, large-library operation, local automation, and package evidence.</p>
</div>
<div aria-label="eMule broadband feature groups" class="feature-table">
<article>
<span>Sharing and upload</span>
<h3>Broadband upload control</h3>
<p>Bounded slot targets, weak-slot recycling, ratio readouts, and seeding controls keep fast upload links useful without changing the eD2K upload protocol.</p>
</article>
<article>
<span>Network control</span>
<h3>Binding, NAT, and exposure policy</h3>
<p>Interface-aware binding, UPnP/NAT mapping validation, HTTPS, allowed-IP rules, and separate WebServer bind settings keep remote surfaces explicit and testable. Binding is not a VPN kill switch.</p>
</article>
<article>
<span>Performance and scale</span>
<h3>Modern defaults for large sessions</h3>
<p>Higher socket buffers, queue/source limits, file buffering, timeout defaults, recursive share sync, startup cache work, and long-path guidance target current Windows systems and large libraries.</p>
</article>
<article>
<span>Classic network</span>
<h3>eD2K and Kad stay first</h3>
<p>Server, global, and Kad search remain the native foundation, with Kad identity tracking, bad-node handling, cleanup, and timing work kept inside compatibility boundaries.</p>
</article>
<article>
<span>Automation</span>
<h3>REST and controller workflows</h3>
<p>Authenticated JSON endpoints cover transfers, searches, shared files, servers, Kad, logs, categories, uploads, statistics, preferences, and controlled shutdown from trusted local tools.</p>
</article>
<article>
<span>Testing and release discipline</span>
<h3>Evidence before labels</h3>
<p><code>0.7.3-rc.1</code> is published with GitHub Actions packaging, manifests, SHA-256 evidence, SPDX SBOMs, diagnostics assets, and bootstrapper hash evidence.</p>
</article>
</div>
</section>
<section class="section docs" id="docs">
<div class="section-heading">
<p class="eyebrow">Documentation</p>
<h2>Guides, API, and release notes</h2>
<p>Start with setup, then use the product and integration guides for the operating model, controller workflows, and release evidence.</p>
</div>
<div class="guide-grid guide-compact">
<article>
<span>01</span>
<h3>Start with the product guide</h3>
<p>Run eMuleBB as eMule first: trusted servers, deliberate Kad bootstrap, predictable incoming/temp paths, and visible shared folders.</p>
</article>
<article>
<span>02</span>
<h3>Use local automation</h3>
<p>Enable REST only for trusted controllers, then use aMuTorrent, Prowlarr, Radarr, and Sonarr through the documented adapter paths.</p>
</article>
<article>
<span>03</span>
<h3>Read the evidence</h3>
<p>Setup, API, release, SBOM, and package details live in the rendered docs so public claims stay tied to source-controlled evidence.</p>
</article>
</div>
<div class="automation-copy docs-automation">
<p>The broadband release track exposes a resource-oriented <code>/api/v1</code> JSON API from the existing WebServer listener. It authenticates with <code>X-API-Key</code>, serves JSON envelopes, and keeps native eMule state changes marshaled through the app.</p>
<ul aria-label="REST API areas" class="api-list">
<li>Transfers</li>
<li>Searches</li>
<li>Servers</li>
<li>Kad</li>
<li>Shared files</li>
<li>Uploads</li>
<li>Categories</li>
<li>Logs</li>
<li>Statistics</li>
<li>Preferences</li>
</ul>
</div>
<div class="doc-list">
<a href="https://emulebb.github.io/emulebb-tooling/reference/GUIDE-SETUP/">
<strong>Setup guide</strong>
<span>Install model, first-run profile behavior, and practical startup notes.</span>
</a>
<a href="https://emulebb.github.io/emulebb-tooling/reference/GUIDE-EMULEBB/">
<strong>eMuleBB product guide</strong>
<span>Setup, tuning, automation, release-aware use, testing, and SBOM evidence.</span>
</a>
<a href="https://emulebb.github.io/emulebb-tooling/reference/GUIDE-STACK-INTEGRATIONS/">
<strong>Use aMuTorrent with eMuleBB</strong>
<span>Task-first setup for eMuleBB, aMuTorrent, Prowlarr, Radarr, and Sonarr.</span>
</a>
<a href="https://emulebb.github.io/emulebb-tooling/reference/GUIDE-CONTROLLERS-REST/">
<strong>Controllers and REST guide</strong>
<span>Trusted local controller usage and automation boundaries.</span>
</a>
<a href="https://emulebb.github.io/emulebb-tooling/reference/GUIDE-DOWNLOADS-SEARCH/">
<strong>Downloads and search guide</strong>
<span>Search modes, result trust, categories, and power-user file workflows.</span>
</a>
<a href="https://emulebb.github.io/emulebb-tooling/reference/GUIDE-P2P-OVERLORD-EMULE-AGENT/">
<strong>p2p-overlord eMule agent</strong>
<span>Headless Rust Kad/eD2K agent boundary, source docs, and eMuleBB contract notes.</span>
</a>
<a href="https://emulebb.github.io/emulebb-tooling/active/RELEASE-0.7.3/">
<strong>0.7.3 release dashboard</strong>
<span>Current RC gates, automated test evidence, SBOM/package proof, and readiness rules.</span>
</a>
</div>
</section>
<section class="section team" id="team">
<div class="section-heading">
<p class="eyebrow">Project lore</p>
<h2>The mule team behind the P2P workshop</h2>
</div>
<div aria-label="The mule team behind the P2P workshop" class="team-grid">
<article>
<img alt="Cartoon mule carrying an upload arrow and a clipboard." class="team-image" decoding="async" height="160" loading="lazy" src="assets/team/upload-mule.png" width="160"/>
<span>01</span>
<h3>Upload Mule Wrangler</h3>
<p>Keeps broadband upload slots from kicking the stable door down, then nudges the slow ones back into line with a very official clipboard.</p>
</article>
<article>
<img alt="Cartoon mule carrying connected Kad nodes across a trail." class="team-image" decoding="async" height="160" loading="lazy" src="assets/team/kad-trail-mule.png" width="160"/>
<span>02</span>
<h3>Kad Trail Mule</h3>
<p>Carries bootstrap nodes, routing tables, and stubborn eD2K/Kad folklore across rough network terrain without dropping the protocol map.</p>
</article>
<article>
<img alt="Cartoon mule hauling release packages and checks." class="team-image" decoding="async" height="160" loading="lazy" src="assets/team/release-pack-mule.png" width="160"/>
<span>03</span>
<h3>Release Pack Mule</h3>
<p>Hauls packages, hashes, SBOMs, logs, live checks, and just enough attitude through the gate before anything gets called ready.</p>
</article>
</div>
</section>
<section class="section release" id="release">
<div class="section-heading">
<p class="eyebrow">Security and provenance</p>
<h2>RC1 is built and packaged on GitHub</h2>
</div>
<div aria-label="eMuleBB release proof" class="release-grid">
<article>
<span></span>
<strong>Published RC1</strong>
<p><code>emulebb-v0.7.3-rc.1</code> is a GitHub prerelease with x64 and ARM64 ZIPs, diagnostics packages, manifests, SBOMs, and the suite bootstrapper.</p>
</article>
<article>
<span></span>
<strong>Hash-checked setup</strong>
<p>The bootstrapper downloads release assets and verifies package hashes from the published manifests before installing.</p>
</article>
<article>
<span></span>
<strong>Suite assets</strong>
<p>The matching aMuTorrent RC1 package is published separately, and the full x64 bootstrap flow resolves it automatically for controller setup.</p>
</article>
<article>
<span></span>
<strong>SPDX SBOM</strong>
<p>Release packages carry package-local <code>SBOM.spdx.json</code> plus sidecar <code>*.sbom.spdx.json</code> files, with manifest hashes that tie software contents to the exact package evidence.</p>
</article>
<article>
<span></span>
<strong>GitHub provenance</strong>
<p>RC1 assets are published from GitHub release automation with manifests, SHA-256 evidence, SBOMs, and a bootstrapper hash asset for verification.</p>
</article>
<article>
<span></span>
<strong>Controller proof</strong>
<p>aMuTorrent, Prowlarr, Radarr, Sonarr, Torznab, and qBittorrent-compatible lanes are documented as local integration paths around the native <code>/api/v1</code> contract.</p>
</article>
</div>
</section>
<section class="section repos" id="repos">
<div class="section-heading">
<p class="eyebrow">eMuleBB ecosystem</p>
<h2>Primary repositories</h2>
</div>
<div class="repo-list">
<a href="https://github.com/emulebb/emulebb">
<strong>emulebb</strong>
<span>flagship desktop app and product source</span>
</a>
<a href="https://github.com/emulebb/amutorrent">
<strong>amutorrent</strong>
<span>fork used for eMuleBB management and controller workflows</span>
</a>
<a href="https://github.com/emulebb/emulebb-build">
<strong>emulebb-build</strong>
<span>build, validation, and release orchestration</span>
</a>
<a href="https://github.com/emulebb/emulebb-build-tests">
<strong>emulebb-build-tests</strong>
<span>native, Python, UI, REST, and live E2E tests</span>
</a>
<a href="https://github.com/emulebb/emulebb-tooling">
<strong>emulebb-tooling</strong>
<span>roadmap, backlog, policy, audits, and reference docs</span>
</a>
<a href="https://github.com/emulebb/p2p-overlord-agents">
<strong>p2p-overlord-agents</strong>
<span>exploratory agents for the p2p-overlord P2P suite</span>
</a>
<a href="https://github.com/emulebb/p2p-overlord-be">
<strong>p2p-overlord-be</strong>
<span>exploratory headless Rust eD2K/Kad client backend work</span>
</a>
<a href="https://github.com/emulebb/p2p-overlord-tooling">
<strong>p2p-overlord-tooling</strong>
<span>scenario manifests, parity runners, reports, and quality guards</span>
</a>
<a href="https://github.com/emulebb/amule">
<strong>aMule Windows builds</strong>
<span>Windows build and validation track for aMule users</span>
</a>
</div>
</section>
</main>
<footer>
<span>eMule broadband edition</span>
<div aria-label="Footer links" class="footer-links">
<a href="languages/">Languages</a>
<a href="https://github.com/emulebb">GitHub</a>
<a href="https://discord.gg/uWQa9g37">Discord</a>
</div>
</footer>
<script>
(function () {
var button = document.querySelector(".menu-toggle");
var nav = document.getElementById("primary-nav");
if (!button || !nav) {
return;
}
function setOpen(open) {
nav.classList.toggle("is-open", open);
button.setAttribute("aria-expanded", String(open));
button.setAttribute("aria-label", open ? "Close primary navigation" : "Open primary navigation");
}
setOpen(false);
button.addEventListener("click", function () {
setOpen(button.getAttribute("aria-expanded") !== "true");
});
nav.addEventListener("click", function (event) {
if (event.target && event.target.closest("a")) {
setOpen(false);
}
});
})();
(function () {
var buttons = document.querySelectorAll(".copy-command");
if (!buttons.length) {
return;
}
function fallbackCopy(text) {
var textarea = document.createElement("textarea");
textarea.value = text;
textarea.setAttribute("readonly", "");
textarea.style.position = "fixed";
textarea.style.left = "-9999px";
document.body.appendChild(textarea);
textarea.select();
try {
return document.execCommand("copy");
} finally {
document.body.removeChild(textarea);
}
}
buttons.forEach(function (button) {
var label = button.getAttribute("data-copy-label") || button.textContent;
var success = button.getAttribute("data-copy-success") || label;
var error = button.getAttribute("data-copy-error") || label;
button.addEventListener("click", function () {
var text = button.getAttribute("data-copy-text") || "";
var copied = navigator.clipboard && window.isSecureContext
? navigator.clipboard.writeText(text).then(function () { return true; }, function () { return fallbackCopy(text); })
: Promise.resolve(fallbackCopy(text));
copied.then(function (ok) {
if (!ok) {
throw new Error("copy failed");
}
button.textContent = success;
window.setTimeout(function () {
button.textContent = label;
}, 1600);
}).catch(function () {
button.textContent = error;
window.setTimeout(function () {
button.textContent = label;
}, 2200);
});
});
});
})();
</script>
</body>
</html>