feat: add Deepbrid, daily scheduling, and notification center
Add encrypted Deepbrid API accounts with account validation, provider routing, fallback, usage tracking, safe error handling, and verified 1Fichier downloads. Restore persistent recurring daily starts with local-calendar deduplication and legacy schedule compatibility. Add durable Discord package, run, remaining-volume, stall, and recovery notifications with privacy-safe telemetry and disk-failure recovery.
This commit is contained in:
@@ -93,6 +93,26 @@ describe("visual fixtures", () => {
|
||||
expect(createVisualFixture("dense")).toEqual(dense);
|
||||
});
|
||||
|
||||
it("keeps the complete notification center state deterministic without exposing its webhook", () => {
|
||||
const settings = createVisualFixture("dense").snapshot.settings;
|
||||
|
||||
expect(settings).toEqual(expect.objectContaining({
|
||||
notifyUrlConfigured: true,
|
||||
notifyMention: "@visual",
|
||||
notifyOnPackageCompleted: true,
|
||||
notifyOnPackageFailed: true,
|
||||
notifyPackageSuccessMode: "digest",
|
||||
notifyOnRunFinished: true,
|
||||
notifyOnRemainingBelow: true,
|
||||
notifyRemainingThresholdGb: 75,
|
||||
notifyOnDownloadStall: true,
|
||||
notifyStallAfterSeconds: 120,
|
||||
notifyStallCooldownMinutes: 15,
|
||||
notifyOnDownloadRecovery: true
|
||||
}));
|
||||
expect(settings).not.toHaveProperty("notifyUrl");
|
||||
});
|
||||
|
||||
it("freezes runtime and recurring chart timers across visual frames", async () => {
|
||||
const dense = createVisualFixture("dense");
|
||||
const originalDateNow = Date.now;
|
||||
@@ -172,6 +192,13 @@ describe("visual fixtures", () => {
|
||||
expect(hostLimits[0]?.keyId).toBe(debridLinkKeys[0].accountId);
|
||||
});
|
||||
|
||||
it("includes the configured synthetic Deepbrid account", () => {
|
||||
const dense = createVisualFixture("dense");
|
||||
expect(dense.snapshot.accounts).toEqual(expect.arrayContaining([
|
||||
expect.objectContaining({ accountId: "svc-deepbrid", kind: "deepbrid-api", provider: "deepbrid" })
|
||||
]));
|
||||
});
|
||||
|
||||
it("stores every mutable bridge state inside the visual fixture", async () => {
|
||||
const dense = createVisualFixture("dense");
|
||||
const api = createVisualElectronApi(dense);
|
||||
|
||||
Reference in New Issue
Block a user