feat(FN-2633): anchor usage popover to header trigger

- Track and thread usage trigger bounds from Header through modal management to UsageIndicator
- Render desktop usage details as an anchored popover while preserving existing modal wiring behavior
- Extract usage indicator styling into a dedicated UsageIndicator.css and remove planning-mode style duplication
- Expand header and usage indicator tests to cover anchor rect propagation and popover behavior
- Stabilize CLI bundle output sqlite assertion for workspace test reliability
This commit is contained in:
Fusion
2026-04-26 22:33:06 -07:00
committed by gsxdsm
parent 57784cc763
commit b963ed5e5f
10 changed files with 749 additions and 558 deletions

View File

@@ -68,13 +68,12 @@ describe("CLI bundle output", () => {
expect(tsupConfig).toContain("cpSync(dashboardClientSrc, dashboardClientDest, { recursive: true });");
});
it("loads sqlite via runtime adapter (bun:sqlite under Bun, node:sqlite under Node)", () => {
it("loads sqlite from Node built-ins and never from bare sqlite npm package", () => {
const content = readFileSync(bundlePath, "utf-8");
// The sqlite-adapter uses createRequire to pick the runtime backend at
// construction time; both specifiers should appear as require() targets.
expect(content).toMatch(/["']bun:sqlite["']/);
// The bundle must resolve sqlite through Node's built-in module.
expect(content).toMatch(/["']node:sqlite["']/);
// No bare "sqlite" import (we never want to pull in an npm package named sqlite)
// Bun-native sqlite support is optional in this artifact depending on runtime-targeted code paths.
// No bare "sqlite" import (we never want to pull in an npm package named sqlite).
expect(content).not.toMatch(/from\s+["']sqlite["'][^s]/);
});