Some checks failed
check / check (push) Failing after 48s
updated text sizing to better match the bar size, and increase readability.
234 lines
No EOL
12 KiB
Markdown
234 lines
No EOL
12 KiB
Markdown
# Graph Report - breadbar (2026-08-16)
|
|
|
|
## Corpus Check
|
|
- 25 files · ~24,485 words
|
|
- Verdict: corpus is large enough that graph structure adds value.
|
|
|
|
## Summary
|
|
- 566 nodes · 1079 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: `241dfd17`
|
|
- 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 (65): Cell, ComponentParts, Controller, FnOnce, Init, Input, LayerShell, Monitor (+57 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 (28): Fixed, Instant, Overlay, RefCell, apply_geom(), button_geom(), ease(), ease_overshoot() (+20 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.06771929824561404 - 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._ |