# 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/ short-lived branches - bread-ecosystem release policy integration - fix/ 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._