Allow well-formed bread.command events on the emit bus

Docs already said any module or app could publish bread.command.<app>.<verb>,
but command is reserved so both unsourced bread-emit and sourced App emit
rejected the whole namespace. Keep command unclaimable as an app id; accept
bread.command.<known-app>.<verb> (and let an app command another known app).
Also ship bread-emit and bread-module-host, and give udev enumerate the same
classification fields as a live add so boot-time devices are not all unknown.
This commit is contained in:
Breadway 2026-08-15 21:41:40 +08:00
parent a6973360bd
commit d3517d1433
52 changed files with 26405 additions and 6811 deletions

View file

@ -0,0 +1 @@
{"nodes": [{"id": "$graphify-root$_packaging_readme_md", "label": "README.md", "file_type": "document", "source_file": "packaging/README.md", "source_location": "L1"}, {"id": "$graphify-root$_packaging_readme_systemd_user_service", "label": "systemd user service", "file_type": "document", "source_file": "packaging/README.md", "source_location": "L17"}], "edges": [{"source": "$graphify-root$_packaging_readme_md", "target": "$graphify-root$_packaging_readme_systemd_user_service", "relation": "contains", "confidence": "EXTRACTED", "source_file": "packaging/README.md", "source_location": "L17", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
{"nodes": [{"id": "$graphify-root$_examples_modules_readme_md", "label": "README.md", "file_type": "document", "source_file": "examples/modules/README.md", "source_location": "L1"}, {"id": "$graphify-root$_examples_modules_readme_example_bread_modules", "label": "Example bread modules", "file_type": "document", "source_file": "examples/modules/README.md", "source_location": "L1"}, {"id": "$graphify-root$_examples_modules_readme_installing", "label": "Installing", "file_type": "document", "source_file": "examples/modules/README.md", "source_location": "L7"}, {"id": "$graphify-root$_examples_modules_readme_modules", "label": "Modules", "file_type": "document", "source_file": "examples/modules/README.md", "source_location": "L33"}], "edges": [{"source": "$graphify-root$_examples_modules_readme_md", "target": "$graphify-root$_examples_modules_readme_example_bread_modules", "relation": "contains", "confidence": "EXTRACTED", "source_file": "examples/modules/README.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_examples_modules_readme_md", "target": "$graphify-root$_examples_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "examples/modules/README.md", "source_location": "L4", "weight": 1.0, "target_file": "$graphify-root$/Examples.md"}, {"source": "$graphify-root$_examples_modules_readme_example_bread_modules", "target": "$graphify-root$_examples_modules_readme_installing", "relation": "contains", "confidence": "EXTRACTED", "source_file": "examples/modules/README.md", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_examples_modules_readme_md", "target": "$graphify-root$_examples_modules_permissions_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "examples/modules/README.md", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_examples_modules_readme_md", "target": "$graphify-root$_documentation_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "examples/modules/README.md", "source_location": "L19", "weight": 1.0, "target_file": "$graphify-root$/Documentation.md"}, {"source": "$graphify-root$_examples_modules_readme_example_bread_modules", "target": "$graphify-root$_examples_modules_readme_modules", "relation": "contains", "confidence": "EXTRACTED", "source_file": "examples/modules/README.md", "source_location": "L33", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}

View file

@ -0,0 +1 @@
{"nodes": [{"id": "$graphify-root$_examples_md", "label": "Examples.md", "file_type": "document", "source_file": "Examples.md", "source_location": "L1"}, {"id": "$graphify-root$_examples_bread_examples", "label": "Bread Examples", "file_type": "document", "source_file": "Examples.md", "source_location": "L1"}, {"id": "$graphify-root$_examples_example_1_porting_keyboard_and_display_watcher_sh_system_script", "label": "Example 1: Porting keyboard_and_display_watcher.sh (system script)", "file_type": "document", "source_file": "Examples.md", "source_location": "L7"}, {"id": "$graphify-root$_examples_example_2_porting_autostart_lua", "label": "Example 2: Porting autostart.lua", "file_type": "document", "source_file": "Examples.md", "source_location": "L93"}, {"id": "$graphify-root$_examples_example_3_porting_display_monitors_lua", "label": "Example 3: Porting display/monitors.lua", "file_type": "document", "source_file": "Examples.md", "source_location": "L130"}, {"id": "$graphify-root$_examples_example_4_multi_step_automation_workflows", "label": "Example 4: Multi-step automation workflows", "file_type": "document", "source_file": "Examples.md", "source_location": "L182"}, {"id": "$graphify-root$_examples_example_5_a_live_widget_in_breadbar", "label": "Example 5: A live widget in breadbar", "file_type": "document", "source_file": "Examples.md", "source_location": "L241"}, {"id": "$graphify-root$_examples_tips_for_porting_your_own_scripts", "label": "Tips for porting your own scripts", "file_type": "document", "source_file": "Examples.md", "source_location": "L313"}], "edges": [{"source": "$graphify-root$_examples_md", "target": "$graphify-root$_examples_bread_examples", "relation": "contains", "confidence": "EXTRACTED", "source_file": "Examples.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_examples_bread_examples", "target": "$graphify-root$_examples_example_1_porting_keyboard_and_display_watcher_sh_system_script", "relation": "contains", "confidence": "EXTRACTED", "source_file": "Examples.md", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_examples_bread_examples", "target": "$graphify-root$_examples_example_2_porting_autostart_lua", "relation": "contains", "confidence": "EXTRACTED", "source_file": "Examples.md", "source_location": "L93", "weight": 1.0}, {"source": "$graphify-root$_examples_bread_examples", "target": "$graphify-root$_examples_example_3_porting_display_monitors_lua", "relation": "contains", "confidence": "EXTRACTED", "source_file": "Examples.md", "source_location": "L130", "weight": 1.0}, {"source": "$graphify-root$_examples_bread_examples", "target": "$graphify-root$_examples_example_4_multi_step_automation_workflows", "relation": "contains", "confidence": "EXTRACTED", "source_file": "Examples.md", "source_location": "L182", "weight": 1.0}, {"source": "$graphify-root$_examples_md", "target": "$graphify-root$_documentation_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "Examples.md", "source_location": "L235", "weight": 1.0, "target_file": "$graphify-root$/Documentation.md"}, {"source": "$graphify-root$_examples_bread_examples", "target": "$graphify-root$_examples_example_5_a_live_widget_in_breadbar", "relation": "contains", "confidence": "EXTRACTED", "source_file": "Examples.md", "source_location": "L241", "weight": 1.0}, {"source": "$graphify-root$_examples_bread_examples", "target": "$graphify-root$_examples_tips_for_porting_your_own_scripts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "Examples.md", "source_location": "L313", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
{"nodes": [{"id": "$graphify-root$_examples_modules_dock_workflow_lua", "label": "dock-workflow.lua", "file_type": "code", "source_file": "examples/modules/dock-workflow.lua", "source_location": "L1"}, {"id": "$graphify-root$_examples_modules_dock_workflow_m_on_load", "label": "M.on_load()", "file_type": "code", "source_file": "examples/modules/dock-workflow.lua", "source_location": "L44", "_callable": true}], "edges": [{"source": "$graphify-root$_examples_modules_dock_workflow_lua", "target": "$graphify-root$_examples_modules_dock_workflow_m_on_load", "relation": "contains", "confidence": "EXTRACTED", "source_file": "examples/modules/dock-workflow.lua", "source_location": "L44", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_examples_modules_dock_workflow_m_on_load", "callee": "bread.on", "is_member_call": false, "source_file": "examples/modules/dock-workflow.lua", "source_location": "L45", "receiver": null}, {"caller_nid": "$graphify-root$_examples_modules_dock_workflow_m_on_load", "callee": "bread.workflow.start", "is_member_call": false, "source_file": "examples/modules/dock-workflow.lua", "source_location": "L49", "receiver": null}]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
{"nodes": [{"id": "$graphify-root$_breadd_src_core_mod_rs", "label": "mod.rs", "file_type": "code", "source_file": "breadd/src/core/mod.rs", "source_location": "L1"}], "edges": [], "raw_calls": []}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
{"nodes": [{"id": "$graphify-root$_deprecations_md", "label": "DEPRECATIONS.md", "file_type": "document", "source_file": "DEPRECATIONS.md", "source_location": "L1"}, {"id": "$graphify-root$_deprecations_deprecations", "label": "Deprecations", "file_type": "document", "source_file": "DEPRECATIONS.md", "source_location": "L1"}, {"id": "$graphify-root$_deprecations_hyprland_legacy_flat_event_names_since_v1_5", "label": "Hyprland legacy flat event names (since v1.5)", "file_type": "document", "source_file": "DEPRECATIONS.md", "source_location": "L8"}], "edges": [{"source": "$graphify-root$_deprecations_md", "target": "$graphify-root$_deprecations_deprecations", "relation": "contains", "confidence": "EXTRACTED", "source_file": "DEPRECATIONS.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_deprecations_md", "target": "$graphify-root$_documentation_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "DEPRECATIONS.md", "source_location": "L4", "weight": 1.0, "target_file": "$graphify-root$/Documentation.md"}, {"source": "$graphify-root$_deprecations_deprecations", "target": "$graphify-root$_deprecations_hyprland_legacy_flat_event_names_since_v1_5", "relation": "contains", "confidence": "EXTRACTED", "source_file": "DEPRECATIONS.md", "source_location": "L8", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
{"nodes": [{"id": "$graphify-root$_scripts_install_sh", "label": "install.sh", "file_type": "code", "source_file": "scripts/install.sh", "source_location": "L1", "metadata": {"language": "bash", "kind": "file"}}, {"id": "$graphify-root$_scripts_install_sh__entry", "label": "install.sh script", "file_type": "code", "source_file": "scripts/install.sh", "source_location": "L1", "metadata": {"language": "bash", "kind": "bash_entrypoint"}}], "edges": [{"source": "$graphify-root$_scripts_install_sh", "target": "$graphify-root$_scripts_install_sh__entry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/install.sh", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"language": "bash", "callee": "set", "caller_nid": "$graphify-root$_scripts_install_sh__entry", "source_file": "scripts/install.sh", "source_location": "L2"}, {"language": "bash", "callee": "echo", "caller_nid": "$graphify-root$_scripts_install_sh__entry", "source_file": "scripts/install.sh", "source_location": "L11"}, {"language": "bash", "callee": "cargo", "caller_nid": "$graphify-root$_scripts_install_sh__entry", "source_file": "scripts/install.sh", "source_location": "L12"}, {"language": "bash", "callee": "mkdir", "caller_nid": "$graphify-root$_scripts_install_sh__entry", "source_file": "scripts/install.sh", "source_location": "L17"}, {"language": "bash", "callee": "ln", "caller_nid": "$graphify-root$_scripts_install_sh__entry", "source_file": "scripts/install.sh", "source_location": "L18"}, {"language": "bash", "callee": "cat", "caller_nid": "$graphify-root$_scripts_install_sh__entry", "source_file": "scripts/install.sh", "source_location": "L39"}, {"language": "bash", "callee": "sed", "caller_nid": "$graphify-root$_scripts_install_sh__entry", "source_file": "scripts/install.sh", "source_location": "L79"}, {"language": "bash", "callee": "systemctl", "caller_nid": "$graphify-root$_scripts_install_sh__entry", "source_file": "scripts/install.sh", "source_location": "L84"}, {"language": "bash", "callee": "break", "caller_nid": "$graphify-root$_scripts_install_sh__entry", "source_file": "scripts/install.sh", "source_location": "L103"}, {"language": "bash", "callee": "sleep", "caller_nid": "$graphify-root$_scripts_install_sh__entry", "source_file": "scripts/install.sh", "source_location": "L105"}], "bash_sources": []}

View file

@ -0,0 +1 @@
{"nodes": [{"id": "$graphify-root$_contributing_md", "label": "CONTRIBUTING.md", "file_type": "document", "source_file": "CONTRIBUTING.md", "source_location": "L1"}, {"id": "$graphify-root$_contributing_contributing", "label": "Contributing", "file_type": "document", "source_file": "CONTRIBUTING.md", "source_location": "L1"}, {"id": "$graphify-root$_contributing_branches", "label": "Branches", "file_type": "document", "source_file": "CONTRIBUTING.md", "source_location": "L8"}, {"id": "$graphify-root$_contributing_the_release_cycle", "label": "The release cycle", "file_type": "document", "source_file": "CONTRIBUTING.md", "source_location": "L26"}, {"id": "$graphify-root$_contributing_tracks_from_a_user_s_perspective", "label": "Tracks, from a user's perspective", "file_type": "document", "source_file": "CONTRIBUTING.md", "source_location": "L43"}, {"id": "$graphify-root$_contributing_local_development", "label": "Local development", "file_type": "document", "source_file": "CONTRIBUTING.md", "source_location": "L63"}, {"id": "$graphify-root$_contributing_keeping_the_api_docs_honest", "label": "Keeping the API docs honest", "file_type": "document", "source_file": "CONTRIBUTING.md", "source_location": "L70"}, {"id": "$graphify-root$_contributing_ci", "label": "CI", "file_type": "document", "source_file": "CONTRIBUTING.md", "source_location": "L94"}, {"id": "$graphify-root$_contributing_questions", "label": "Questions", "file_type": "document", "source_file": "CONTRIBUTING.md", "source_location": "L106"}], "edges": [{"source": "$graphify-root$_contributing_md", "target": "$graphify-root$_contributing_contributing", "relation": "contains", "confidence": "EXTRACTED", "source_file": "CONTRIBUTING.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_contributing_contributing", "target": "$graphify-root$_contributing_branches", "relation": "contains", "confidence": "EXTRACTED", "source_file": "CONTRIBUTING.md", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_contributing_contributing", "target": "$graphify-root$_contributing_the_release_cycle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "CONTRIBUTING.md", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_contributing_contributing", "target": "$graphify-root$_contributing_tracks_from_a_user_s_perspective", "relation": "contains", "confidence": "EXTRACTED", "source_file": "CONTRIBUTING.md", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_contributing_contributing", "target": "$graphify-root$_contributing_local_development", "relation": "contains", "confidence": "EXTRACTED", "source_file": "CONTRIBUTING.md", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_contributing_local_development", "target": "$graphify-root$_contributing_keeping_the_api_docs_honest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "CONTRIBUTING.md", "source_location": "L70", "weight": 1.0}, {"source": "$graphify-root$_contributing_contributing", "target": "$graphify-root$_contributing_ci", "relation": "contains", "confidence": "EXTRACTED", "source_file": "CONTRIBUTING.md", "source_location": "L94", "weight": 1.0}, {"source": "$graphify-root$_contributing_contributing", "target": "$graphify-root$_contributing_questions", "relation": "contains", "confidence": "EXTRACTED", "source_file": "CONTRIBUTING.md", "source_location": "L106", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
{"nodes": [{"id": "$graphify-root$_examples_modules_cpu_temp_widget_init_lua", "label": "init.lua", "file_type": "code", "source_file": "examples/modules/cpu-temp-widget/init.lua", "source_location": "L1"}, {"id": "$graphify-root$_examples_modules_cpu_temp_widget_init_read_temp_c", "label": "read_temp_c()", "file_type": "code", "source_file": "examples/modules/cpu-temp-widget/init.lua", "source_location": "L32", "_callable": true}, {"id": "$graphify-root$_examples_modules_cpu_temp_widget_init_widget_root", "label": "widget_root()", "file_type": "code", "source_file": "examples/modules/cpu-temp-widget/init.lua", "source_location": "L40", "_callable": true}, {"id": "$graphify-root$_examples_modules_cpu_temp_widget_init_m_on_load", "label": "M.on_load()", "file_type": "code", "source_file": "examples/modules/cpu-temp-widget/init.lua", "source_location": "L60", "_callable": true}], "edges": [{"source": "$graphify-root$_examples_modules_cpu_temp_widget_init_lua", "target": "$graphify-root$_examples_modules_cpu_temp_widget_init_read_temp_c", "relation": "contains", "confidence": "EXTRACTED", "source_file": "examples/modules/cpu-temp-widget/init.lua", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_examples_modules_cpu_temp_widget_init_lua", "target": "$graphify-root$_examples_modules_cpu_temp_widget_init_widget_root", "relation": "contains", "confidence": "EXTRACTED", "source_file": "examples/modules/cpu-temp-widget/init.lua", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_examples_modules_cpu_temp_widget_init_lua", "target": "$graphify-root$_examples_modules_cpu_temp_widget_init_m_on_load", "relation": "contains", "confidence": "EXTRACTED", "source_file": "examples/modules/cpu-temp-widget/init.lua", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_examples_modules_cpu_temp_widget_init_m_on_load", "target": "$graphify-root$_examples_modules_cpu_temp_widget_init_widget_root", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "examples/modules/cpu-temp-widget/init.lua", "source_location": "L65", "weight": 1.0}, {"source": "$graphify-root$_examples_modules_cpu_temp_widget_init_m_on_load", "target": "$graphify-root$_examples_modules_cpu_temp_widget_init_read_temp_c", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "examples/modules/cpu-temp-widget/init.lua", "source_location": "L65", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_examples_modules_cpu_temp_widget_init_read_temp_c", "callee": "bread.fs.read", "is_member_call": false, "source_file": "examples/modules/cpu-temp-widget/init.lua", "source_location": "L33", "receiver": null}, {"caller_nid": "$graphify-root$_examples_modules_cpu_temp_widget_init_read_temp_c", "callee": "tonumber", "is_member_call": false, "source_file": "examples/modules/cpu-temp-widget/init.lua", "source_location": "L37", "receiver": null}, {"caller_nid": "$graphify-root$_examples_modules_cpu_temp_widget_init_widget_root", "callee": "string.format", "is_member_call": false, "source_file": "examples/modules/cpu-temp-widget/init.lua", "source_location": "L41", "receiver": null}, {"caller_nid": "$graphify-root$_examples_modules_cpu_temp_widget_init_widget_root", "callee": "math.min", "is_member_call": false, "source_file": "examples/modules/cpu-temp-widget/init.lua", "source_location": "L53", "receiver": null}, {"caller_nid": "$graphify-root$_examples_modules_cpu_temp_widget_init_m_on_load", "callee": "bread.widget.register", "is_member_call": false, "source_file": "examples/modules/cpu-temp-widget/init.lua", "source_location": "L61", "receiver": null}, {"caller_nid": "$graphify-root$_examples_modules_cpu_temp_widget_init_m_on_load", "callee": "bread.every", "is_member_call": false, "source_file": "examples/modules/cpu-temp-widget/init.lua", "source_location": "L68", "receiver": null}, {"caller_nid": "$graphify-root$_examples_modules_cpu_temp_widget_init_m_on_load", "callee": "bread.widget.update", "is_member_call": false, "source_file": "examples/modules/cpu-temp-widget/init.lua", "source_location": "L69", "receiver": null}]}

File diff suppressed because one or more lines are too long