breadbar/graphify-out/GRAPH_REPORT.md
Breadway d16ec3f6b4
Some checks failed
check / check (push) Failing after 48s
Changed Text Sizing
updated text sizing to better match the bar size, and increase
readability.
2026-08-18 09:54:35 +08:00

234 lines
No EOL
12 KiB
Markdown

# Graph Report - breadbar (2026-08-16)
## Corpus Check
- 25 files · ~24,569 words
- Verdict: corpus is large enough that graph structure adds value.
## Summary
- 566 nodes · 1077 edges · 46 communities (29 shown, 17 thin omitted)
- Extraction: 88% EXTRACTED · 0% INFERRED · 0% AMBIGUOUS · INFERRED: 2 edges (avg confidence: 0.8)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `e4c12e9b`
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
- Run `graphify update .` after code changes (no API cost).
## Community Hubs (Navigation)
- App
- notifications/mod.rs
- Icon System
- tray.rs
- stats.rs
- GTK4 app entry point and widget tree
- history.rs
- screenshot.rs
- wifi.rs
- client.rs
- bluetooth.rs
- spawn
- popup.rs
- control.rs
- Control panel popover
- dev release workflow
- AGENTS.md — Repo hygiene
- workspaces.rs
- rc release workflow
- bakery package manager integration
- clock.rs
- media.rs
- Stable artifact preparation
- stable release workflow
- feature/<name> short-lived branches
- bread-ecosystem release policy integration
- fix/<name> short-lived branches
- Dev version auto-computation from latest tag
- GTK4 development environment
- Rust 1.77+ (LazyLock)
- bread-theme palette loading
- User CSS override (~/.config/breadbar/style.css)
- Notification popups (top-right stack)
- org.freedesktop.Notifications D-Bus service
- Layer-shell popup window and card stack
- SIGHUP theme reload
- Volume/brightness OSD
- /srv/breadway-dl/dev/ distribution
- /srv/breadway-dl/beta/ distribution
- /srv/breadway-dl/breadbar/ distribution
- CLAUDE.md — Repo hygiene
- build.sh
- theme.rs
- PanelSet
## God Nodes (most connected - your core abstractions)
1. `App` - 50 edges
2. `poll()` - 16 edges
3. `WorkspaceTrail` - 14 edges
4. `AppInput` - 14 edges
5. `NotifServer` - 13 edges
6. `NotifEvent` - 12 edges
7. `Lucide Icon Library` - 12 edges
8. `Watcher` - 11 edges
9. `run()` - 11 edges
10. `test_server()` - 10 edges
## Surprising Connections (you probably didn't know these)
- `Control panel popover` --USES--> `Settings` [LIKELY]
README.md → assets/Bluetooth Settings.svg
- `CPU/RAM/power/battery (right section)` --USES--> `AC Power` [CERTAIN]
README.md → assets/AC Power.svg
- `CPU/RAM/power/battery (right section)` --USES--> `Battery Low` [CERTAIN]
README.md → assets/Battery 1 Bar.svg
- `CPU/RAM/power/battery (right section)` --USES--> `Battery Medium` [CERTAIN]
README.md → assets/Battery 2 Bars.svg
- `CPU/RAM/power/battery (right section)` --USES--> `Battery Full` [CERTAIN]
README.md → assets/Battery 3 Bars.svg
## Import Cycles
- None detected.
## Hyperedges (group relationships)
- **Multi-track release system** — forgejo_workflows_dev_release_yml_dev_release_workflow, forgejo_workflows_rc_release_yml_rc_release_workflow, forgejo_workflows_release_yml_release_workflow, CONTRIBUTING.md:dev-track, CONTRIBUTING.md:beta-track, CONTRIBUTING.md:stable-track [INFERRED]
- **Component-module correspondence** — README.md:status-bar, README.md:control-panel, README.md:notification-daemon, README.md:main.rs, README.md:bar-workspaces, README.md:bar-stats, README.md:bar-media, README.md:bar-control, README.md:bar-tray, README.md:notifications-mod [INFERRED]
- **Dependency polling and caching pattern** — README.md:bar-stats, README.md:bar-media, README.md:bar-wifi, README.md:bar-control [INFERRED]
- **D-Bus service protocol adoption** — README.md:notification-daemon, README.md:notification-spec, README.md:bar-tray, README.md:dbus [INFERRED]
- **External tool integration pattern** — README.md:bar-stats, README.md:bar-media, README.md:bar-wifi, README.md:bar-control, README.md:iw, README.md:wpctl, README.md:pactl, README.md:brightnessctl, README.md:playerctl, README.md:breadcrumbs [INFERRED]
- **Theme customization layers** — README.md:theme.rs, README.md:bread-theme-integration, README.md:pywal-integration, README.md:css-override, README.md:sighup-reload [INFERRED]
- **WiFi Signal Strength Variants** — assets_wifi_weak_svg_wifi_low_icon, assets_wifi_medium_svg_wifi_high_icon, assets_wifi_strong_svg_wifi_icon, assets_wifi_connecting_svg_wifi_sync_icon, assets_wifi_disconnect_svg_wifi_off_icon [INFERRED]
- **System Control Icons** — assets_shutdown_svg_power_icon, assets_sleep_svg_moon_icon, assets_restart_svg_rotate_ccw_icon [INFERRED]
- **Status Bar Widget Icons** — assets_previous_svg_skip_back_icon, assets_volume_svg_volume_2_icon, assets_ram_usage_svg_memory_stick_icon [INFERRED]
- **Lucide Icon Integration Pattern** — https_lucide_icon_library, breadbar:icon-system, assets_previous_svg_skip_back_icon, assets_ram_usage_svg_memory_stick_icon, assets_restart_svg_rotate_ccw_icon, assets_shutdown_svg_power_icon, assets_sleep_svg_moon_icon, assets_volume_svg_volume_2_icon, assets_wifi_connecting_svg_wifi_sync_icon, assets_wifi_disconnect_svg_wifi_off_icon, assets_wifi_medium_svg_wifi_high_icon, assets_wifi_strong_svg_wifi_icon, assets_wifi_weak_svg_wifi_low_icon [INFERRED]
- **SVG Vector Graphics Elements** — assets_previous_svg_triangle_shape, assets_previous_svg_vertical_line, assets_ram_usage_svg_memory_modules, assets_ram_usage_svg_memory_chassis, assets_restart_svg_circular_arrow, assets_restart_svg_corner_arrow, assets_shutdown_svg_power_button, assets_shutdown_svg_power_symbol, assets_sleep_svg_crescent_shape, assets_volume_svg_speaker_cone, assets_volume_svg_sound_waves, assets_wifi_connecting_svg_wifi_arcs, assets_wifi_connecting_svg_sync_arrows, assets_wifi_disconnect_svg_wifi_arcs_disabled, assets_wifi_disconnect_svg_cancel_slash, assets_wifi_medium_svg_signal_dot, assets_wifi_medium_svg_two_signal_arcs, assets_wifi_strong_svg_signal_dot_full, assets_wifi_strong_svg_three_signal_arcs, assets_wifi_weak_svg_signal_dot_low, assets_wifi_weak_svg_one_signal_arc [INFERRED]
## Communities (46 total, 17 thin omitted)
### Community 0 - "App"
Cohesion: 0.07
Nodes (66): Cell, ComponentParts, Controller, FnOnce, Init, Input, Instant, LayerShell (+58 more)
### Community 1 - "notifications/mod.rs"
Cohesion: 0.09
Nodes (36): AtomicU32, OwnedValue, Action, BarService, compute_expire(), Expire, get_capabilities_includes_actions_and_inline_reply(), inline_reply_placeholder() (+28 more)
### Community 2 - "Icon System"
Cohesion: 0.08
Nodes (35): Skip Back Icon, Triangle Polygon, Vertical Separator Line, Memory Chassis Rectangle, Memory Module Elements, Memory Stick Icon, Circular Arrow Path, Corner Arrow (+27 more)
### Community 3 - "tray.rs"
Cohesion: 0.14
Nodes (23): Arc, Header, Proxy, SignalEmitter, make_tray_image(), parse_service(), pixels_to_image(), read_icon() (+15 more)
### Community 4 - "stats.rs"
Cohesion: 0.16
Nodes (26): bat_path(), bt_connected_icon(), bt_rfkill_on(), CpuSnapshot, poll(), read_ac(), read_battery(), read_bt() (+18 more)
### Community 5 - "GTK4 app entry point and widget tree"
Cohesion: 0.04
Nodes (46): GTK4 >= 4.12 (runtime required), Hyprland compositor, Minute-tick clock, Control panel data: volume, brightness, sinks, playerctl polling and media widget, Polling loop: CPU, RAM, power, battery, BT, WiFi, StatusNotifierWatcher D-Bus and SNI rendering, WiFi popover and breadcrumbs integration (+38 more)
### Community 6 - "history.rs"
Cohesion: 0.12
Nodes (38): Path, build_window(), collapse_ws(), Entry, format_time(), from_persisted(), history_path(), load_into() (+30 more)
### Community 7 - "screenshot.rs"
Cohesion: 0.22
Nodes (17): ApplicationWindow, capture_standalone_window(), Cli, dispatch(), finish(), Handles, open_panel_on_root_map(), Box (+9 more)
### Community 8 - "wifi.rs"
Cohesion: 0.25
Nodes (17): HashSet, CrumbsStatus, fetch_profile_list(), fetch_scan(), fetch_status(), ComponentSender, Option, String (+9 more)
### Community 9 - "client.rs"
Cohesion: 0.20
Nodes (14): emit_click(), fetch_and_send(), ComponentSender, spawn(), apply_style(), build_node(), bundled_icon(), icon_texture() (+6 more)
### Community 10 - "bluetooth.rs"
Cohesion: 0.27
Nodes (12): BtDevice, BtPopoverData, fetch_devices(), powered(), ComponentSender, Option, String, Vec (+4 more)
### Community 11 - "spawn"
Cohesion: 0.32
Nodes (12): brightness_watcher(), create_window(), OsdEvent, query_volume(), Option, Receiver, Sender, Window (+4 more)
### Community 12 - "popup.rs"
Cohesion: 0.29
Nodes (20): Cards, apply_body_text(), build_window(), CardSpec, create_window(), dismiss(), emit_action(), emit_closed() (+12 more)
### Community 13 - "control.rs"
Cohesion: 0.26
Nodes (8): AudioSink, ControlPanelData, fetch_sinks(), ComponentSender, String, Vec, spawn_load(), spawn_set_sink()
### Community 14 - "Control panel popover"
Cohesion: 0.18
Nodes (11): Audio output selector (PulseAudio sinks), Brightness slider (brightnessctl), Control panel popover, Live CPU%, GPU%, network throughput display, Power buttons: lock, suspend, reboot, poweroff, SNI system tray, Volume slider (wpctl, up to 150%), Settings (+3 more)
### Community 15 - "dev release workflow"
Cohesion: 0.25
Nodes (8): Artifact preparation and signing, bakery.toml integration, cargo build --release --locked, dev release workflow, Dev index.json regeneration, main branch push trigger, self-hosted runner on hestia, Dev version auto-computation
### Community 16 - "AGENTS.md — Repo hygiene"
Cohesion: 0.33
Nodes (5): AGENTS.md — Repo hygiene, Architecture, CI, Don't, Remotes
### Community 17 - "workspaces.rs"
Cohesion: 0.15
Nodes (27): Fixed, Overlay, RefCell, apply_geom(), button_geom(), ease(), ease_overshoot(), Geom (+19 more)
### Community 18 - "rc release workflow"
Cohesion: 0.33
Nodes (6): Beta index.json regeneration, RC artifact preparation, RC build on tag, RC tag guard (contains -rc.), rc release workflow, vX.Y.Z-rc.N tag push trigger
### Community 19 - "bakery package manager integration"
Cohesion: 0.60
Nodes (5): bakery package manager integration, beta track (vX.Y.Z-rc.N tags), dev track (every push to main), Tag-based release cycle, stable track (vX.Y.Z tags)
### Community 20 - "clock.rs"
Cohesion: 0.36
Nodes (8): DateTime, current(), date(), now(), ComponentSender, String, spawn_ticker(), time()
### Community 21 - "media.rs"
Cohesion: 0.43
Nodes (5): fetch(), MediaState, ComponentSender, String, spawn_poller()
### Community 22 - "Stable artifact preparation"
Cohesion: 0.50
Nodes (4): GitHub Release artifact upload, Stable artifact preparation, Stable release build, Stable index.json regeneration
### Community 23 - "stable release workflow"
Cohesion: 0.67
Nodes (3): NOT -rc tag guard, stable release workflow, vX.Y.Z tag push trigger
### Community 42 - "CLAUDE.md — Repo hygiene"
Cohesion: 0.40
Nodes (4): CI, CLAUDE.md — Repo hygiene, Don't, Remotes
### Community 44 - "theme.rs"
Cohesion: 0.23
Nodes (11): Native, Palette, bind_auto(), bind_output(), fg_color(), fg_color_for(), load_css(), load_css_for() (+3 more)
### Community 45 - "PanelSet"
Cohesion: 0.29
Nodes (7): make_dismiss(), make_panel(), PanelSet, IsA, Self, Widget, Window
## Knowledge Gaps
- **98 isolated node(s):** `build.sh script`, `CpuSnapshot`, `Remotes`, `CI`, `Architecture` (+93 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **17 thin communities (<3 nodes) omitted from report** run `graphify query` to explore isolated nodes.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `App` connect `App` to `tray.rs`, `stats.rs`, `wifi.rs`, `client.rs`, `bluetooth.rs`, `control.rs`, `PanelSet`, `workspaces.rs`, `clock.rs`, `media.rs`?**
_High betweenness centrality (0.189) - this node is a cross-community bridge._
- **Why does `WorkspaceTrail` connect `workspaces.rs` to `App`?**
_High betweenness centrality (0.052) - this node is a cross-community bridge._
- **Why does `AppInput` connect `App` to `tray.rs`, `stats.rs`, `wifi.rs`, `bluetooth.rs`, `control.rs`, `media.rs`?**
_High betweenness centrality (0.037) - this node is a cross-community bridge._
- **What connects `build.sh script`, `CpuSnapshot`, `Remotes` to the rest of the system?**
_98 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `App` be split into smaller, more focused modules?**
_Cohesion score 0.06630211893369788 - nodes in this community are weakly interconnected._
- **Should `notifications/mod.rs` be split into smaller, more focused modules?**
_Cohesion score 0.08843537414965986 - nodes in this community are weakly interconnected._
- **Should `Icon System` be split into smaller, more focused modules?**
_Cohesion score 0.07563025210084033 - nodes in this community are weakly interconnected._