Commit Graph

39 Commits

Author SHA1 Message Date
taylanbakircioglu 01c69fc8cd fix: dark mode compatibility for Change Detection and Login pages
- Anomalies card: dark-aware gradient background
- Compare Runs summary cards: dark-aware background colors
- Login page: dark mode CSS for inputs, background, and card shadow
- Login version: use dynamic APP_VERSION instead of hardcoded 1.0.0
- Config: clean up comment in dns_search_domains field

Made-with: Cursor
2026-04-02 15:16:24 +03:00
taylanbakircioglu 99f44f854c feat: DNS search domain normalization to deduplicate graph nodes
Kubernetes DNS search domain expansion creates multiple NXDOMAIN queries
for the same external domain (e.g. auth.docker.io.cluster.local,
auth.docker.io.svc.cluster.local). Without normalization, each variant
becomes a separate Neo4j node, inflating Public connections on the Map.

Backend (graph-writer):
- Rewrite _normalize_dns_name with TLD-safe 4-step algorithm
- Strip .svc.cluster.local, .<ns>.svc.cluster.local, .cluster.local
- Support custom search domains via DNS_SEARCH_DOMAINS env var
- Apply normalization in process_dns_query and process_sni_event
- Fix NXDOMAIN vertex overriding NOERROR resolved IP data
- Add KNOWN_TLDS/MULTI_LEVEL_TLDS for .com.tr/.co.uk safety checks

Frontend (NetworkExplorer):
- Add "Hide Search Domain Artifacts" toggle on DNS Queries tab
- Detect NXDOMAIN entries ending with .cluster.local
- Show artifact count, toggle hidden by default

Raw ClickHouse data and API responses are NOT modified — only the
dependency graph (Neo4j) is deduplicated. Full debugging data preserved.

Tests: 31 cases covering normalization, edge cases, and integration.
Made-with: Cursor
2026-04-02 14:34:00 +03:00
taylanbakircioglu 55c3dfcd41 fix: escape emptyDir braces in f-string to prevent SyntaxError
The config-generated emptyDir volume added inside an f-string
used literal {} which Python interprets as an empty expression.
Escaped to {{}} so it renders as {} in the generated script.

Made-with: Cursor
2026-04-02 10:36:25 +03:00
taylanbakircioglu 159656a969 feat: auto-detect container runtime socket in production manifests
Apply init container auto-detection to kubernetes-manifests DaemonSet
and ConfigMap. Update OPENSHIFT_GADGET_FIX.md and README with
detect-runtime troubleshooting guidance.

Made-with: Cursor
2026-04-01 18:32:07 +03:00
taylanbakircioglu 6a362c61cc feat: auto-detect container runtime socket in cluster setup scripts
Apply the same init container auto-detection to the setup script
generator (clusters.py). Both emptyDir and PVC DaemonSet variants
now detect K3s/RKE2/MicroK8s/standard containerd socket paths
automatically at pod startup.

Made-with: Cursor
2026-04-01 18:29:49 +03:00
taylanbakircioglu ca67e27cac feat: auto-detect container runtime socket path for multi-platform support
Add init container to Inspektor Gadget DaemonSet that detects the correct
containerd socket path at pod startup. Supports K3s, RKE2, MicroK8s, and
standard Kubernetes without manual configuration. Also adds hostPID,
hostNetwork, and dnsPolicy for proper eBPF tracing.

Made-with: Cursor
2026-04-01 18:25:10 +03:00
taylanbakircioglu 582e3eba68 feat: per-service dependency breakdown in summary API
Restructure /dependencies/summary response to provide per-service
downstream/callers breakdowns instead of a single aggregated view.

Backend:
- Unified loop in format_dependency_summary handles single and multi-service
  identically, fixing replica data loss bug for single-service queries
- Each matched_service now carries its own downstream/callers DependencySummaryGroup
- New top-level summary object with globally deduplicated aggregate counts
  (split downstream_critical_count and callers_critical_count)
- hop_count added to _compact_service (only when > 1 to avoid depth=1 noise)
- _dedup_entries now preserves entry with lowest hop_count on collision
- multi_service flag now correctly checks collapsed workload count

Frontend:
- Updated TypeScript interfaces (DependencySummary, MatchedService with groups)
- IntegrationHub Preview: per-service Collapse for multi-service, summary stats
- DependencyCategoryGroup: conditional hop_count column for multi-depth queries
- Snippet builders updated to parse matched_services and summary structure

API & Docs:
- OpenAPI spec: new DependencySummary schema, depth parameter descriptions
- README, feature-list, DATA_ARCHITECTURE docs updated
- Fixed pre-existing doc bug (default traversal depth 3 -> 1)

Made-with: Cursor
2026-03-30 01:08:39 +03:00
taylanbakircioglu 4b4542741b docs: fix showcase GIF to show full screenshots without cropping
Made-with: Cursor
2026-03-29 23:59:16 +03:00
taylanbakircioglu c70f766674 docs: regenerate showcase GIF with updated screenshots
Made-with: Cursor
2026-03-29 23:49:28 +03:00
taylanbakircioglu fc84452b8f docs: update screenshots for Analysis, Blast Radius, and Integration Hub
- Add 6 new Integration Hub screenshots (type selection, configure, preview, code snippets)
- Replace Blast Radius screenshots with updated Integration and Test tabs
- Add 2 new Analysis wizard screenshots (scope selection, noise filter)
- Remove outdated analysis-event-types-1.png
- Update README references and add Integration screenshot section

Made-with: Cursor
2026-03-29 23:39:25 +03:00
taylanbakircioglu 1e1eb56185 feat: display app version in sidebar footer
Made-with: Cursor
2026-03-29 23:12:35 +03:00
taylanbakircioglu d653ac19dc fix: add API reverse proxy to nginx config for Docker Compose deployments
Made-with: Cursor
2026-03-29 22:59:13 +03:00
taylanbakircioglu 84988333cb fix: use platform-aware architecture detection in Dockerfiles for multi-arch builds
Made-with: Cursor
2026-03-29 22:21:09 +03:00
taylanbakircioglu 9a109ee282 ci: add multi-arch (amd64 + arm64) support to Docker image builds
Made-with: Cursor
2026-03-29 22:10:39 +03:00
taylanbakircioglu d1df2c31c5 chore: sanitize internal references in code examples and documentation
Made-with: Cursor
2026-03-29 21:41:41 +03:00
taylanbakircioglu 67fc39aeab fix: normalize kind field to prevent null vs empty string inconsistency
Made-with: Cursor
2026-03-29 20:41:49 +03:00
taylanbakircioglu 03fafabf7e fix: restore Cypher precision for exact annotation keys and optimize glob loop
Made-with: Cursor
2026-03-29 20:38:16 +03:00
taylanbakircioglu 7c43e4c1b1 feat: annotation wildcard matching and openshift noise filter
Made-with: Cursor
2026-03-29 20:32:59 +03:00
taylanbakircioglu 5bab0e69a4 fix(ux): move platform selector inside Pipeline tab to eliminate redundancy
Made-with: Cursor
2026-03-29 20:22:07 +03:00
taylanbakircioglu bcbef2b896 refactor: rename AI Integration Hub to Integration Hub with UX improvements
Made-with: Cursor
2026-03-29 19:56:13 +03:00
taylanbakircioglu dd7039afd0 fix: add query-layer defense-in-depth for kind resolution and annotation filtering
Made-with: Cursor
2026-03-29 19:02:23 +03:00
taylanbakircioglu d38be6788a docs: update AI Integration Hub documentation to reflect current wizard
Made-with: Cursor
2026-03-27 22:08:43 +03:00
taylanbakircioglu c64fda8a8a feat: AI Hub UX improvements and theme consistency
Made-with: Cursor
2026-03-27 22:04:09 +03:00
taylanbakircioglu f7d72e0c2f fix: improve AI Hub summary output quality (dedup, kind, annotations)
Made-with: Cursor
2026-03-27 20:23:32 +03:00
taylanbakircioglu 3717445302 fix: exempt DNS events from aggressive destination filter
Made-with: Cursor
2026-03-26 10:18:54 +03:00
taylanbakircioglu be698d0b0c feat: add aggressive/conservative strategy for exclusion filter
Made-with: Cursor
2026-03-26 09:29:45 +03:00
taylanbakircioglu 7247f7a0f7 feat: add system pod exclusion filter for analyses
Made-with: Cursor
2026-03-25 19:01:15 +03:00
taylanbakircioglu f57f9cc84f fix: filter noise nodes (0.0.0.0, reverse DNS) from map and pod dropdown
Made-with: Cursor
2026-03-25 18:24:46 +03:00
taylanbakircioglu 3a16c166ad fix: resolve annotation Show more and copy issues in pod detail drawer
Made-with: Cursor
2026-03-25 17:44:27 +03:00
taylanbakircioglu 834ea93dec refactor: reorganize project structure, fix PostgreSQL schema ordering, remove broken override
Made-with: Cursor
2026-03-25 15:50:47 +03:00
taylanbakircioglu 4508a756bb docs: translate all documentation to English, update API docs with AI Integration Hub and annotation features
Made-with: Cursor
2026-03-25 14:27:37 +03:00
taylanbakircioglu abc240bbc4 fix: add FLOWFISH_API_KEY variable placeholder to all snippets
Made-with: Cursor
2026-03-25 13:39:26 +03:00
taylanbakircioglu e0f3582190 fix: add FLOWFISH_URL defaults and --fail flag to pipeline snippets
Made-with: Cursor
2026-03-25 13:31:13 +03:00
taylanbakircioglu 3f35f00b36 feat: add scheduled analysis, rolling window retention & cluster safety
Made-with: Cursor
2026-03-25 12:26:25 +03:00
taylanbakircioglu 42f2dc2a50 feat: improve UI quality, data filtering, and wizard UX
Made-with: Cursor
2026-03-24 17:40:21 +03:00
taylanbakircioglu 3caa9d9b71 feat: improve AI Integration Hub with multi-service aggregation and UX fixes
Made-with: Cursor
2026-03-24 16:38:35 +03:00
taylanbakircioglu 16d249e7a3 feat: fix annotation ingestion via gRPC and enrich annotation display across UI
Made-with: Cursor
2026-03-24 15:04:21 +03:00
taylanbakircioglu fdc2ec4b7d feat: add pod annotations support, dependency stream API, and AI Integration Hub
Made-with: Cursor
2026-03-24 13:25:38 +03:00
taylanbakircioglu d7ca50b387 feat: Flowfish - eBPF-powered multi-cluster Kubernetes observability platform
Multi-cluster dependency mapping, real-time network monitoring,
impact analysis, and CI/CD integration capabilities.

Made-with: Cursor
2026-03-29 21:43:20 +03:00