Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
2c7e32c
feat(finops-hub-local): two-DB ftklocal foundation (T-5000.1 + T-5000.2)
Jun 17, 2026
a01cebe
Merge T-5000.1+T-5000.2: ftklocal two-DB foundation into features/ftk…
Jun 17, 2026
f6108e8
fix(finops-hub-local): make kql defaults to Hub; split KQL_DB/PARITY_DB
Jun 17, 2026
5bbf5c3
Merge T-5000.2 fix: make kql defaults to Hub (KQL_DB/PARITY_DB split)
Jun 17, 2026
0fa2a96
docs(finops-hub-local): export-config + manual staging contract (T-50…
Jun 17, 2026
98ebb14
Merge T-5000.4: export-config + staging contract into features/ftklocal
Jun 17, 2026
a4f6106
feat(finops-hub-local): local settings.json + config-container decisi…
Jun 17, 2026
01e5e42
Merge T-5000.10: settings.json + config-container decision into featu…
Jun 17, 2026
1f90c55
feat(finops-hub-local): add localized ADX dashboard artifact (T-5000.5)
Jun 17, 2026
f554584
merge(T-5000.5): integrate localized ADX dashboard into features/ftkl…
Jun 17, 2026
a5342c3
merge(features/ftklocal): sync .8 worktree to resolve notes/ references
Jun 17, 2026
bb422ad
feat(finops-hub-local): proactive backfill chunking + fail-fast doubl…
Jun 17, 2026
abf9d0d
merge(features/ftklocal): sync .3 worktree (brings in .5 dashboard)
Jun 17, 2026
8be8346
chore(finops-hub-local): genericize EXPORT_DIR example path (avoid /U…
Jun 17, 2026
e3b13ee
feat(agent-skills): add finops-hub-local skill + fix ftk.ps1 catalog …
Jun 17, 2026
e264089
fix(finops-hub-local): guard git fallback in ftk.ps1 Get-FtkRepo
Jun 17, 2026
2d8a2ff
merge(T-5000.8): integrate finops-hub-local agent skill + ftk.ps1 cat…
Jun 17, 2026
1614eb1
Merge branch 'features/ftklocal' into features/ftklocal-t5000.3
Jun 17, 2026
20fd3d3
refactor(finops-hub-local): gate chunked backfill on row count alone …
Jun 18, 2026
a9471b6
merge(T-5000.3): integrate ingest reliability (row-gated chunking, do…
Jun 18, 2026
f574559
docs(finops-hub-local): README + adapter/parity notes; drop stale cro…
Jun 18, 2026
e474163
merge(T-5000.7): integrate finops-hub-local docs + ftk.ps1 cross-db s…
Jun 18, 2026
7a615f7
docs(finops-hub-local): measured performance + limits (T-5000.6)
Jun 18, 2026
2fe9be7
merge(T-5000.6): integrate measured performance + limits doc
Jun 18, 2026
5ec214c
docs(finops-hub-local): correct ADX dashboard connectivity (UAT-measu…
Jun 18, 2026
801981e
docs(finops-hub-local): Windows-primary + macOS install/deploy guides…
Jun 18, 2026
69912ba
style(finops-hub-local): apply Prettier formatting to docs
Jun 18, 2026
91899bd
chore(finops-hub-local): pin .md to LF in .gitattributes
Jun 18, 2026
c4a3908
docs(finops-hub-local): add 'build by hand' runbook
Jun 18, 2026
41abdd4
refactor(finops-hub-local): load each schema bundle in one call
Jun 18, 2026
ed1f4ca
fix(finops-hub-local): correct the by-hand ingest steps (update polic…
Jun 18, 2026
a961d73
docs(finops-hub-local): align README by-hand summary with the update-…
Jun 18, 2026
421b9a7
fix(finops-hub-local): add .build.config to keep runtime data out of …
Jun 18, 2026
5278e2f
Revert "refactor(finops-hub-local): load each schema bundle in one call"
Jun 18, 2026
e016dc3
fix(finops-hub-local): fix single-element-array unwrap in ingest back…
Jun 18, 2026
4ef6457
docs(hubs): add Run hubs locally guide; remove finops-hub-local template
Jun 18, 2026
bce7f65
docs: clarify local hub prerequisites
MSBrett Jun 18, 2026
96bd183
docs: improve local hub ingestion guidance
MSBrett Jun 19, 2026
7aee803
docs: broaden local hub positioning
MSBrett Jun 19, 2026
7e951a8
docs: remove unused local ingest helper
MSBrett Jun 19, 2026
a32f12b
docs: update mslearn dates
MSBrett Jun 19, 2026
3fc373f
docs: add ftklocal agent skill
MSBrett Jun 19, 2026
195869d
feat(finops-hub): build-generated local open-data loader, Initialize-…
MSBrett Jun 21, 2026
66b66be
Merge remote-tracking branch 'origin/dev' into features/ftklocal
MSBrett Jun 21, 2026
b3c40a2
feat(hubs): add ftk-local-dashboard canvas extension
Jun 25, 2026
a133f66
feat(dashboard): add KPI interpretive annotations (T-5001.1)
Jun 25, 2026
13b389c
feat(dashboard): add triage framing to Overview tab (T-5001.4)
Jun 25, 2026
435bc00
fix(dashboard): correct Overspend tab target and null guards in triag…
Jun 25, 2026
7f627ca
feat(dashboard): elevate source line to diagnostic rail (T-5001.2)
Jun 25, 2026
807c02c
feat(dashboard): add open KQL escape hatch per chart (T-5001.5)
Jun 25, 2026
4ebc90e
fix(dashboard): wire Run button to chart re-render and add HTTP error…
Jun 25, 2026
4e23bce
feat(dashboard): introduce visual hierarchy between primary and refer…
Jun 25, 2026
db3531f
fix(dashboard): fix KPI ordering, grid span, and border stacking (T-5…
Jun 25, 2026
64dddf7
fix(dashboard): fix reference KPI shadow cascade and remove dead font…
Jun 25, 2026
2fa1846
fix(dashboard): reset row count on error state and fix orphaned separ…
Jun 25, 2026
db01317
feat(dashboard): add /api/kql endpoint, refactor error handling (T-50…
Jun 25, 2026
bce4ee4
fix(dashboard): fix tainted format string in logError (CodeQL js/tain…
Jun 25, 2026
b60441d
feat(dashboard): add CUS, MACC, top-txns, AI-by-app from INDEX.md cat…
Jun 25, 2026
c5a23e1
feat(canvas): add interactive click-to-filter to dashboard
Jun 25, 2026
c215872
chore: add PRODUCT.md and ignore impeccable cache
Jun 25, 2026
b1b6654
feat(dashboard): impeccable polish β€” P1-P3 design fixes
Jun 25, 2026
6f1366c
feat(dashboard): harden β€” abort races, error boundary, a11y, null guards
Jun 25, 2026
ef634f4
feat(dashboard): P1+P2 UX polish β€” KPI tooltips, triage callouts, ari…
Jun 25, 2026
bfd2d81
fix(docs): mount kustodata volume in docker run so databases survive …
Jun 29, 2026
c12b8a5
harden(powershell): validate params, thread TimeoutSec, wrap release …
Jul 7, 2026
4ddb10c
fix(dashboard): correct KQL metric semantics and finish cross-tab lay…
Jul 7, 2026
6f9a5fb
Merge remote-tracking branch 'origin/dev' into features/ftklocal
MSBrett Jul 8, 2026
549a6d0
chore: update ms.date in docs-mslearn files
MSBrett Jul 8, 2026
a91c072
test: fix Pester 6 Discovery-phase and mock-assertion bugs
MSBrett Jul 8, 2026
98aa69c
feat(ftk-local-dashboard): make Kusto emulator port/database configur…
MSBrett Jul 21, 2026
9104089
feat(ftklocal-dashboard): add experimental Monaco KQL and ADX Web UI …
MSBrett Jul 21, 2026
0e6177b
fix(ftklocal-dashboard): correct ADX iframe status copy per iframe em…
MSBrett Jul 21, 2026
c0cbdc4
fix(ftklocal-dashboard): give tool tabs real vertical space, cut clutter
MSBrett Jul 21, 2026
8397775
fix(ftk-local-dashboard): remove ADX tab, fix KQL query editor
MSBrett Jul 21, 2026
7041399
fix(ftk-local-dashboard): survive host restarts without losing state
MSBrett Jul 22, 2026
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
36 changes: 36 additions & 0 deletions .github/extensions/ftk-local-dashboard/PRODUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Product

## Register

product

## Users

FinOps practitioners, cloud engineers, and consultants who need to analyze Azure cost data locally β€” without deploying Azure resources. They run this inside GitHub Copilot as a canvas panel while they work: exploring the data model, validating large datasets, or doing FinOps analysis in disconnected / on-premises environments. They are data-fluent, comfortable with KQL and Azure concepts, and expect density and precision over decoration. They are in a task when they open this β€” they want numbers fast.

## Product Purpose

A local FinOps hub dashboard that connects to a Kusto emulator running in Docker. Provides the same six analysis views as a deployed FinOps hub (cost overview, allocation, rate optimization, usage & unit economics, anomalies & forecast, AI tokenomics) β€” but entirely on-device. Success means a practitioner can load cost data, switch views, and spot the insight they need in one sitting without touching Azure.

## Brand Personality

Precise. Grounded. Efficient. The interface should feel like a well-calibrated instrument, not a product pitch. Numbers are the hero; the chrome disappears.

## Anti-references

- Consumer personal finance dashboards (Mint, Copilot Money) β€” too soft, too colorful
- SaaS marketing dashboards (hero metric templates, gradient text, glassmorphism cards)
- Over-designed BI tools with heavy chrome, deep sidebars, and modal-heavy workflows
- Any interface that prioritizes looking impressive over being immediately useful

## Design Principles

1. **Numbers first** β€” KPIs and data are the primary visual element. Supporting chrome (headers, tabs, labels) recedes.
2. **GitHub-native** β€” Use GitHub design tokens (`--background-color-default`, `--text-color-default`, etc.) so the panel feels like an extension of Copilot, not a foreign app.
3. **Density is a virtue** β€” FinOps data is inherently multi-dimensional. Don't sacrifice information density for whitespace.
4. **State is explicit** β€” Loading, error, empty, and no-data states are real states, not afterthoughts. Every panel handles all of them.
5. **Zero ceremony** β€” No animated intros, no onboarding tours. Open panel β†’ see data.

## Accessibility & Inclusion

WCAG AA minimum. SVG charts include `<title>` elements for screen-reader context. Interactive controls (tabs, segmented control, refresh) have ARIA roles and labels. Reduced motion is respected via `@media (prefers-reduced-motion)`.
Loading
Loading