docs: describe the shipped bakery product and single-trunk releases
All checks were successful
check / check (push) Successful in 1m12s

README still called the GTK picker and mirroring pipeline stubs. Both
are built: breadcastd discovers Cast and DLNA devices and owns the
session; breadcast is the GTK picker. Install is bakery; this is not
on the BOS ISO.

CONTRIBUTING now follows the ecosystem single-trunk main + RC-tag
model. Leftover dev/beta CI workflows are documented, not rewritten.
bread-theme and bread-utils already pin bread-ecosystem v0.7.1.
This commit is contained in:
Breadway 2026-08-15 21:38:38 +08:00
parent bbff5f951c
commit d1dd98a889
11 changed files with 128 additions and 105 deletions

View file

@ -1,23 +1,18 @@
# Contributing # Contributing
`breadcast` — cast your screen to any Chromecast/Google TV, for Hyprland `breadcast` — cast your screen to a Chromecast/Google TV or DLNA renderer
(daemon + GTK4 popup). (daemon + GTK4 popup).
Part of the bread ecosystem; this repo follows the same branch/release A bakery product in the bread ecosystem — **not** shipped on the BOS ISO
workflow as every other ecosystem product. and not part of the default desktop. This repo follows the same
branch/release workflow as every other ecosystem product.
## Branches ## Branches
- **`main`** — release branch, always tag-ready. Nothing is committed to it There is one long-lived branch: **`main`**. All day-to-day work lands here.
directly; it only moves forward via a `beta` merge (see below). Every push to `main` is supposed to publish a **dev-track** build (see
- **`dev`** — integration branch. All day-to-day work lands here first. Tracks below) — a real install you can test before cutting anything more
Every push to `dev` automatically builds and publishes a **dev-track** formal.
build (see Tracks below) — use this to test your change in a real install
before it goes any further.
- **`beta`** — a frozen stabilization branch, cut from `dev` periodically.
Every push to `beta` automatically builds and publishes a **beta-track**
build. While a freeze is active, only fixes for issues found *in that
freeze* should land on `beta`.
New work — features and bug fixes alike — goes on a short-lived branch: New work — features and bug fixes alike — goes on a short-lived branch:
@ -26,28 +21,29 @@ feature/<short-name>
fix/<issue-number-or-short-name> fix/<issue-number-or-short-name>
``` ```
Branch off `dev`, open a PR/push back into `dev` when ready. If you're fixing Branch off `main`, open a PR/push back into `main` when ready. Short-lived
something reported against an active `beta` freeze, branch off `beta` branches get deleted on merge — they never accumulate the kind of drift a
instead, merge the fix there to unblock testers, and also forward the same second long-lived branch does.
fix into `dev` so it doesn't quietly reappear next cycle.
## The release cycle ## The release cycle
1. Work accumulates on `dev` via `feature/x` / `fix/x` branches. Each push There's no separate `beta` or release branch — "stable" and "beta" are both
auto-publishes a dev build — install it with `bakery track set dev` and just **tags** on `main`, not branches that need to be kept in sync:
`bakery update --all`, then report or fix anything broken with another
push to `dev`. 1. Work accumulates on `main` via `feature/x` / `fix/x` branches. Each push
2. Once `dev` has gone roughly **a week** without new issues, `beta` is cut is meant to auto-publish a dev build — install it with
fresh from `dev`'s current tip. This freezes it as the stabilization `bakery track set dev` and `bakery update --all`, then fix anything
target — `dev` keeps moving independently starting the next cycle. broken with another push.
3. `beta` is open for anyone to test: `bakery track set beta` and 2. When you want to stabilize before a real release, tag a release
`bakery update --all`. **File issues against anything you find on this candidate: `git tag vX.Y.Z-rc.1 && git push origin vX.Y.Z-rc.1` (push to
repo's Forgejo issue tracker.** Fixes land via `fix/<issue>` branches both remotes). That tag alone should trigger a beta-track build —
merged into `beta`. "freezing" is just pausing pushes to `main` while you test it, not a
4. Once `beta` has gone roughly **a month** without new issues, it's merged branch operation. Cut `-rc.2`, `-rc.3`, etc. for further fixes.
into `main` and tagged `vX.Y.Z` — that tag is what actually triggers the 3. Once an RC has gone without issues, tag the real release:
stable release build. `beta` is then reset from `dev` to start the next `git tag vX.Y.Z && git push origin vX.Y.Z` — that's what triggers the
cycle. signed stable release build.
Do **not** use leftover `dev` / `beta` branches as integration trunks.
## Tracks, from a user's perspective ## Tracks, from a user's perspective
@ -59,14 +55,15 @@ bakery update --all # pull the latest build on your current track
| Track | What it is | Published from | | Track | What it is | Published from |
|--------|-----------|-----------------| |--------|-----------|-----------------|
| `stable` | The last tagged release | `main`, on a `vX.Y.Z` tag push | | `stable` | The last tagged release | a `vX.Y.Z` tag |
| `beta` | Current stabilization freeze | `beta`, on every push | | `beta` | Latest release candidate | a `vX.Y.Z-rc.N` tag |
| `dev` | Bleeding edge | `dev`, on every push | | `dev` | Bleeding edge | `main`, on every push |
Dev/beta versions are auto-computed (`X.Y.Z-dev.<timestamp>+<sha>` / Dev versions are auto-computed (`X.Y.Z-dev.<timestamp>+<sha>`) from the
`-beta.…`) from the latest published stable tag, so they always sort as latest published stable tag, so they always sort as newer than what you
newer than what you have installed — no manual version bumping needed when have installed — no manual version bumping needed. Beta versions are just
pushing to `dev` or `beta`. the RC tag itself (already valid semver, already sorts below the real
release it's a candidate for).
## Local development ## Local development
@ -77,14 +74,22 @@ cargo test --release --workspace
## CI ## CI
- `dev-release.yml` — triggered on push to `dev`. Intended single-trunk wiring (see
- `beta-release.yml` — triggered on push to `beta`. [bread-ecosystem's docs/release-channels.md](https://git.breadway.dev/Breadway/bread-ecosystem/src/branch/main/docs/release-channels.md)):
- `release.yml` — triggered on a `v*` tag push, cuts the actual stable release.
All CI runs on a self-hosted runner; nothing runs automatically on plain - push to `main` → dev-track build
commits or PRs beyond the track builds above. See - `vX.Y.Z-rc.N` tag → beta-track build
[bread-ecosystem's docs/release-channels.md](https://git.breadway.dev/Breadway/bread-ecosystem/src/branch/main/docs/release-channels.md) - `vX.Y.Z` tag → signed stable release
for the full policy, including how a new product gets wired onto these tracks.
`release.yml` already fires on a `v*` tag push. `dev-release.yml` and
`beta-release.yml` are leftover from the old three-branch model and still
trigger on the `dev` / `beta` branch names — they have not been rewritten.
Follow the cycle above; do not treat those branches as current, and do not
rewrite the leftover workflows unless you are deliberately migrating CI.
`check.yml` runs clippy + test on `feature/**` and `fix/**` branches.
All CI runs on a self-hosted runner.
## Questions ## Questions

125
README.md
View file

@ -1,75 +1,88 @@
# breadcast # breadcast
Cast your screen to any Chromecast/Google TV, for Hyprland. It consists of Cast your screen to a Chromecast, Google TV, or DLNA renderer on the LAN.
two binaries: Two binaries:
- **`breadcastd`** — a background daemon that discovers Cast devices on the - **`breadcastd`** — background daemon. Discovers Cast (mDNS) and DLNA/UPnP
LAN and (once built — see Status) owns the screen-capture/encode/serve (SSDP) devices, owns the portal screen-capture / encode pipeline, and
pipeline and the live Cast V2 session. runs the live session: Cast Streaming (vendored openscreen) or
- **`breadcast`** — a GTK4 Layer Shell popup for picking a device and DLNA/AVTransport. One active session at a time.
starting/stopping a cast. - **`breadcast`** — GTK4 Layer Shell popup. Thin IPC client of
`breadcastd`: pick a device, start or stop a cast. Closing the popup
does not interrupt an active session.
## Status This is a **bakery product**. It is **not** shipped on the BOS ISO and is
**not** part of the default desktop — install it yourself if you want it.
This is early: device discovery (mDNS) and the Cast V2 sender (real device ## Install
control — connect, launch the receiver, load media) are built and validated
against real Chromecast/Google TV hardware. The actual screen-mirroring ```sh
pipeline (portal-based screen capture → GPU-accelerated encode → HLS → bakery install breadcast
local HTTP server) and the GTK4 device-picker UI are not built yet. ```
`breadcastd` today only does discovery and optional breadd event
publishing; `breadcast` is a stub binary. See `CLAUDE.md`'s Status section That puts `breadcast` and `breadcastd` on `$PATH` (usually `~/.local/bin`),
for more detail. installs `contrib/breadcastd.service` as a systemd user unit, enables it,
and starts the daemon. `bakery doctor breadcast` checks the system
packages listed in `bakery.toml` first.
## Requirements ## Requirements
- Rust toolchain (edition 2021) - A Wayland compositor with Layer Shell and `xdg-desktop-portal`
- GTK 4.12+ and `gtk4-layer-shell` (once the UI lands) ScreenCast (Hyprland is the primary target)
- GStreamer + `gst-plugin-pipewire`, `gst-plugins-bad` (VA-API `va` plugin), - GTK 4.12+ and `gtk4-layer-shell`
`gst-plugin-hlssink3` (once the capture pipeline lands) - GStreamer plus `gst-plugin-pipewire`, `gst-plugins-bad`,
- Hyprland (or any Wayland compositor with Layer Shell and the `gst-plugin-va` (`vah264enc`), and `gst-plugin-hlssink3`
`xdg-desktop-portal` ScreenCast interface) - `jsoncpp` and `openssl` (runtime deps of the vendored Cast Streaming
code)
## Build From source you also need a Rust toolchain (edition 2021).
## Build from source
```sh ```sh
git clone https://git.breadway.dev/breadway/breadcast git clone https://git.breadway.dev/Breadway/breadcast
cd breadcast cd breadcast
cargo build --release cargo build --release
``` ```
The compiled binaries are at `target/release/breadcast` and Binaries land at `target/release/breadcast` and `target/release/breadcastd`.
`target/release/breadcastd`.
## Try device discovery today
```sh
cargo run -p breadcast-core --example discover
```
Prints Chromecast/Google TV devices as they appear/disappear on the LAN.
## Install
Copy the binaries to somewhere on your `$PATH`, e.g.:
```sh ```sh
cp target/release/breadcast target/release/breadcastd ~/.local/bin/ cp target/release/breadcast target/release/breadcastd ~/.local/bin/
```
### systemd user service
A unit file is provided in `contrib/`:
```sh
cp contrib/breadcastd.service ~/.config/systemd/user/ cp contrib/breadcastd.service ~/.config/systemd/user/
systemctl --user daemon-reload systemctl --user daemon-reload
systemctl --user enable --now breadcastd systemctl --user enable --now breadcastd
``` ```
## Usage
Start the daemon (or let the systemd unit handle it):
```sh
breadcastd
```
Open the device picker:
```sh
breadcast
```
Running `breadcast` again while it is open closes it (toggle). Click a
device to start mirroring — the portal picker asks which screen to share.
**Stop mirroring** ends the session. Status is Idle or Casting.
Discovery examples (optional, for debugging the LAN):
```sh
cargo run -p breadcast-core --example discover
cargo run -p breadcast-core --example dlna_discover
```
### Hyprland keybind ### Hyprland keybind
For stock Hyprland, add the contents of `contrib/hyprland.conf` to your On stock Hyprland, add the contents of `contrib/hyprland.conf` to your
`hyprland.conf`: `hyprland.conf` if you want Super+C and the frosted-glass blur:
``` ```
layerrule = blur, breadcast layerrule = blur, breadcast
@ -78,20 +91,16 @@ layerrule = ignorezero, breadcast
bind = $mainMod, C, exec, breadcast bind = $mainMod, C, exec, breadcast
``` ```
On BOS, Hyprland config is Lua+JSON-driven instead — see BOS does not ship this app or a default keybind for it. Add one yourself
`contrib/binds.json` for the equivalent keybind entry to merge into your if you install breadcast on a BOS machine.
`binds.json` by hand (there's no per-app self-registration mechanism yet).
There is currently no BOS-native equivalent for the `layerrule` blur lines.
## bread event integration ## bread event integration
`breadcastd` optionally publishes into the shared bread automation fabric `breadcastd` works the same with or without `breadd`. When `breadd` is
(`bread.cast.*`) when `breadd` is running, and works identically without running, it publishes `bread.cast.*` and honors `bread.command.cast.*`.
it. See `EVENTS.md` for the full, honest-about-scope contract — most of the See [EVENTS.md](EVENTS.md) for the bus contract. `bread` is not a bakery
eventually-planned events (mirroring start/stop) aren't implemented yet, dependency.
since the mirroring pipeline itself isn't built yet.
## Theming ## Theming
`breadcast` will inherit its colour palette from `bread-theme`, matching `breadcast` inherits its colour palette from `bread-theme`.
the rest of the ecosystem, once its GTK4 UI is built.

View file

@ -22,6 +22,8 @@ system_deps = [
"openssl", "openssl",
] ]
optional_system_deps = ["hyprland", "xdg-desktop-portal-hyprland"] optional_system_deps = ["hyprland", "xdg-desktop-portal-hyprland"]
# breadd is optional: breadcastd publishes bread.cast.* when it is running
# and works the same without it. See EVENTS.md. Not a bakery bread dep.
bread_deps = [] bread_deps = []
[[service]] [[service]]

View file

@ -0,0 +1 @@
{"nodes": [{"id": "$graphify-root$_readme_md", "label": "README.md", "file_type": "document", "source_file": "README.md", "source_location": "L1"}, {"id": "$graphify-root$_readme_breadcast", "label": "breadcast", "file_type": "document", "source_file": "README.md", "source_location": "L1"}, {"id": "$graphify-root$_readme_install", "label": "Install", "file_type": "document", "source_file": "README.md", "source_location": "L17"}, {"id": "$graphify-root$_readme_requirements", "label": "Requirements", "file_type": "document", "source_file": "README.md", "source_location": "L28"}, {"id": "$graphify-root$_readme_build_from_source", "label": "Build from source", "file_type": "document", "source_file": "README.md", "source_location": "L40"}, {"id": "$graphify-root$_readme_usage", "label": "Usage", "file_type": "document", "source_file": "README.md", "source_location": "L57"}, {"id": "$graphify-root$_readme_hyprland_keybind", "label": "Hyprland keybind", "file_type": "document", "source_file": "README.md", "source_location": "L82"}, {"id": "$graphify-root$_readme_bread_event_integration", "label": "bread event integration", "file_type": "document", "source_file": "README.md", "source_location": "L97"}, {"id": "$graphify-root$_readme_theming", "label": "Theming", "file_type": "document", "source_file": "README.md", "source_location": "L104"}], "edges": [{"source": "$graphify-root$_readme_md", "target": "$graphify-root$_readme_breadcast", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_readme_breadcast", "target": "$graphify-root$_readme_install", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_readme_breadcast", "target": "$graphify-root$_readme_requirements", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_readme_breadcast", "target": "$graphify-root$_readme_build_from_source", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_readme_breadcast", "target": "$graphify-root$_readme_usage", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_readme_usage", "target": "$graphify-root$_readme_hyprland_keybind", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L82", "weight": 1.0}, {"source": "$graphify-root$_readme_breadcast", "target": "$graphify-root$_readme_bread_event_integration", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_readme_md", "target": "$graphify-root$_events_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L101", "weight": 1.0, "target_file": "$graphify-root$/EVENTS.md"}, {"source": "$graphify-root$_readme_breadcast", "target": "$graphify-root$_readme_theming", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L104", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}

View file

@ -0,0 +1 @@
{"nodes": [{"id": "$graphify-root$_events_md", "label": "EVENTS.md", "file_type": "document", "source_file": "EVENTS.md", "source_location": "L1"}, {"id": "$graphify-root$_events_breadcast_bread_event_integration", "label": "breadcast \u2014 bread event integration", "file_type": "document", "source_file": "EVENTS.md", "source_location": "L1"}, {"id": "$graphify-root$_events_events_published_bread_cast", "label": "Events published (`bread.cast.*`)", "file_type": "document", "source_file": "EVENTS.md", "source_location": "L15"}, {"id": "$graphify-root$_events_commands_honored_bread_command_cast", "label": "Commands honored (`bread.command.cast.*`)", "file_type": "document", "source_file": "EVENTS.md", "source_location": "L24"}, {"id": "$graphify-root$_events_fail_safe_behavior", "label": "Fail-safe behavior", "file_type": "document", "source_file": "EVENTS.md", "source_location": "L36"}], "edges": [{"source": "$graphify-root$_events_md", "target": "$graphify-root$_events_breadcast_bread_event_integration", "relation": "contains", "confidence": "EXTRACTED", "source_file": "EVENTS.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_events_breadcast_bread_event_integration", "target": "$graphify-root$_events_events_published_bread_cast", "relation": "contains", "confidence": "EXTRACTED", "source_file": "EVENTS.md", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_events_breadcast_bread_event_integration", "target": "$graphify-root$_events_commands_honored_bread_command_cast", "relation": "contains", "confidence": "EXTRACTED", "source_file": "EVENTS.md", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_events_breadcast_bread_event_integration", "target": "$graphify-root$_events_fail_safe_behavior", "relation": "contains", "confidence": "EXTRACTED", "source_file": "EVENTS.md", "source_location": "L36", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}

View file

@ -0,0 +1 @@
{"nodes": [{"id": "$graphify-root$_vendor_rust_cast_0_21_0_readme_md", "label": "README.md", "file_type": "document", "source_file": "vendor/rust_cast-0.21.0/README.md", "source_location": "L1"}, {"id": "$graphify-root$_vendor_rust_cast_0_21_0_readme_usage", "label": "Usage", "file_type": "document", "source_file": "vendor/rust_cast-0.21.0/README.md", "source_location": "L4"}, {"id": "$graphify-root$_vendor_rust_cast_0_21_0_readme_build", "label": "Build", "file_type": "document", "source_file": "vendor/rust_cast-0.21.0/README.md", "source_location": "L8"}, {"id": "$graphify-root$_vendor_rust_cast_0_21_0_readme_run_example", "label": "Run example", "file_type": "document", "source_file": "vendor/rust_cast-0.21.0/README.md", "source_location": "L19"}, {"id": "$graphify-root$_vendor_rust_cast_0_21_0_readme_generic_features", "label": "Generic features", "file_type": "document", "source_file": "vendor/rust_cast-0.21.0/README.md", "source_location": "L21"}, {"id": "$graphify-root$_vendor_rust_cast_0_21_0_readme_media_features", "label": "Media features", "file_type": "document", "source_file": "vendor/rust_cast-0.21.0/README.md", "source_location": "L49"}, {"id": "$graphify-root$_vendor_rust_cast_0_21_0_readme_dns_txt_record_description", "label": "DNS TXT Record description", "file_type": "document", "source_file": "vendor/rust_cast-0.21.0/README.md", "source_location": "L81"}, {"id": "$graphify-root$_vendor_rust_cast_0_21_0_readme_model_names", "label": "Model names", "file_type": "document", "source_file": "vendor/rust_cast-0.21.0/README.md", "source_location": "L93"}, {"id": "$graphify-root$_vendor_rust_cast_0_21_0_readme_useful_links_and_sources_of_inspiration", "label": "Useful links and sources of inspiration", "file_type": "document", "source_file": "vendor/rust_cast-0.21.0/README.md", "source_location": "L98"}], "edges": [{"source": "$graphify-root$_vendor_rust_cast_0_21_0_readme_md", "target": "$graphify-root$_vendor_rust_cast_0_21_0_readme_usage", "relation": "contains", "confidence": "EXTRACTED", "source_file": "vendor/rust_cast-0.21.0/README.md", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_vendor_rust_cast_0_21_0_readme_md", "target": "$graphify-root$_vendor_rust_cast_0_21_0_readme_build", "relation": "contains", "confidence": "EXTRACTED", "source_file": "vendor/rust_cast-0.21.0/README.md", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_vendor_rust_cast_0_21_0_readme_md", "target": "$graphify-root$_vendor_rust_cast_0_21_0_readme_run_example", "relation": "contains", "confidence": "EXTRACTED", "source_file": "vendor/rust_cast-0.21.0/README.md", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_vendor_rust_cast_0_21_0_readme_run_example", "target": "$graphify-root$_vendor_rust_cast_0_21_0_readme_generic_features", "relation": "contains", "confidence": "EXTRACTED", "source_file": "vendor/rust_cast-0.21.0/README.md", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_vendor_rust_cast_0_21_0_readme_run_example", "target": "$graphify-root$_vendor_rust_cast_0_21_0_readme_media_features", "relation": "contains", "confidence": "EXTRACTED", "source_file": "vendor/rust_cast-0.21.0/README.md", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_vendor_rust_cast_0_21_0_readme_md", "target": "$graphify-root$_vendor_rust_cast_0_21_0_readme_dns_txt_record_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "vendor/rust_cast-0.21.0/README.md", "source_location": "L81", "weight": 1.0}, {"source": "$graphify-root$_vendor_rust_cast_0_21_0_readme_md", "target": "$graphify-root$_vendor_rust_cast_0_21_0_readme_model_names", "relation": "contains", "confidence": "EXTRACTED", "source_file": "vendor/rust_cast-0.21.0/README.md", "source_location": "L93", "weight": 1.0}, {"source": "$graphify-root$_vendor_rust_cast_0_21_0_readme_md", "target": "$graphify-root$_vendor_rust_cast_0_21_0_readme_useful_links_and_sources_of_inspiration", "relation": "contains", "confidence": "EXTRACTED", "source_file": "vendor/rust_cast-0.21.0/README.md", "source_location": "L98", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}

View file

@ -0,0 +1 @@
{"nodes": [{"id": "$graphify-root$_ci_build_sh", "label": "build.sh", "file_type": "code", "source_file": "ci/build.sh", "source_location": "L1", "metadata": {"language": "bash", "kind": "file"}}, {"id": "$graphify-root$_ci_build_sh__entry", "label": "build.sh script", "file_type": "code", "source_file": "ci/build.sh", "source_location": "L1", "metadata": {"language": "bash", "kind": "bash_entrypoint"}}], "edges": [{"source": "$graphify-root$_ci_build_sh", "target": "$graphify-root$_ci_build_sh__entry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "ci/build.sh", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"language": "bash", "callee": "set", "caller_nid": "$graphify-root$_ci_build_sh__entry", "source_file": "ci/build.sh", "source_location": "L9"}, {"language": "bash", "callee": "rm", "caller_nid": "$graphify-root$_ci_build_sh__entry", "source_file": "ci/build.sh", "source_location": "L16"}, {"language": "bash", "callee": "git", "caller_nid": "$graphify-root$_ci_build_sh__entry", "source_file": "ci/build.sh", "source_location": "L17"}], "bash_sources": []}

View file

@ -0,0 +1 @@
{"nodes": [{"id": "$graphify-root$_vendor_rust_cast_0_21_0_patches_md", "label": "PATCHES.md", "file_type": "document", "source_file": "vendor/rust_cast-0.21.0/PATCHES.md", "source_location": "L1"}, {"id": "$graphify-root$_vendor_rust_cast_0_21_0_patches_vendoring_notes", "label": "Vendoring notes", "file_type": "document", "source_file": "vendor/rust_cast-0.21.0/PATCHES.md", "source_location": "L1"}, {"id": "$graphify-root$_vendor_rust_cast_0_21_0_patches_why", "label": "Why", "file_type": "document", "source_file": "vendor/rust_cast-0.21.0/PATCHES.md", "source_location": "L8"}, {"id": "$graphify-root$_vendor_rust_cast_0_21_0_patches_the_patch", "label": "The patch", "file_type": "document", "source_file": "vendor/rust_cast-0.21.0/PATCHES.md", "source_location": "L23"}, {"id": "$graphify-root$_vendor_rust_cast_0_21_0_patches_rolling_the_pin", "label": "Rolling the pin", "file_type": "document", "source_file": "vendor/rust_cast-0.21.0/PATCHES.md", "source_location": "L31"}], "edges": [{"source": "$graphify-root$_vendor_rust_cast_0_21_0_patches_md", "target": "$graphify-root$_vendor_rust_cast_0_21_0_patches_vendoring_notes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "vendor/rust_cast-0.21.0/PATCHES.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_vendor_rust_cast_0_21_0_patches_vendoring_notes", "target": "$graphify-root$_vendor_rust_cast_0_21_0_patches_why", "relation": "contains", "confidence": "EXTRACTED", "source_file": "vendor/rust_cast-0.21.0/PATCHES.md", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_vendor_rust_cast_0_21_0_patches_vendoring_notes", "target": "$graphify-root$_vendor_rust_cast_0_21_0_patches_the_patch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "vendor/rust_cast-0.21.0/PATCHES.md", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_vendor_rust_cast_0_21_0_patches_vendoring_notes", "target": "$graphify-root$_vendor_rust_cast_0_21_0_patches_rolling_the_pin", "relation": "contains", "confidence": "EXTRACTED", "source_file": "vendor/rust_cast-0.21.0/PATCHES.md", "source_location": "L31", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}

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": "L10"}, {"id": "$graphify-root$_contributing_the_release_cycle", "label": "The release cycle", "file_type": "document", "source_file": "CONTRIBUTING.md", "source_location": "L28"}, {"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": "L48"}, {"id": "$graphify-root$_contributing_local_development", "label": "Local development", "file_type": "document", "source_file": "CONTRIBUTING.md", "source_location": "L68"}, {"id": "$graphify-root$_contributing_ci", "label": "CI", "file_type": "document", "source_file": "CONTRIBUTING.md", "source_location": "L75"}, {"id": "$graphify-root$_contributing_questions", "label": "Questions", "file_type": "document", "source_file": "CONTRIBUTING.md", "source_location": "L94"}], "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": "L10", "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": "L28", "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": "L48", "weight": 1.0}, {"source": "$graphify-root$_contributing_contributing", "target": "$graphify-root$_contributing_local_development", "relation": "contains", "confidence": "EXTRACTED", "source_file": "CONTRIBUTING.md", "source_location": "L68", "weight": 1.0}, {"source": "$graphify-root$_contributing_contributing", "target": "$graphify-root$_contributing_ci", "relation": "contains", "confidence": "EXTRACTED", "source_file": "CONTRIBUTING.md", "source_location": "L75", "weight": 1.0}, {"source": "$graphify-root$_contributing_contributing", "target": "$graphify-root$_contributing_questions", "relation": "contains", "confidence": "EXTRACTED", "source_file": "CONTRIBUTING.md", "source_location": "L94", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}

View file

@ -0,0 +1 @@
{"nodes": [{"id": "$graphify-root$_breadcast_caststream_sys_vendor_openscreen_patches_md", "label": "PATCHES.md", "file_type": "document", "source_file": "breadcast-caststream-sys/vendor/openscreen/PATCHES.md", "source_location": "L1"}, {"id": "$graphify-root$_breadcast_caststream_sys_vendor_openscreen_patches_vendoring_notes", "label": "Vendoring notes", "file_type": "document", "source_file": "breadcast-caststream-sys/vendor/openscreen/PATCHES.md", "source_location": "L1"}, {"id": "$graphify-root$_breadcast_caststream_sys_vendor_openscreen_patches_rolling_the_pin", "label": "Rolling the pin", "file_type": "document", "source_file": "breadcast-caststream-sys/vendor/openscreen/PATCHES.md", "source_location": "L16"}, {"id": "$graphify-root$_breadcast_caststream_sys_vendor_openscreen_patches_what_s_excluded_and_why", "label": "What's excluded and why", "file_type": "document", "source_file": "breadcast-caststream-sys/vendor/openscreen/PATCHES.md", "source_location": "L27"}, {"id": "$graphify-root$_breadcast_caststream_sys_vendor_openscreen_patches_local_patches_not_upstream", "label": "Local patches (not upstream)", "file_type": "document", "source_file": "breadcast-caststream-sys/vendor/openscreen/PATCHES.md", "source_location": "L45"}], "edges": [{"source": "$graphify-root$_breadcast_caststream_sys_vendor_openscreen_patches_md", "target": "$graphify-root$_breadcast_caststream_sys_vendor_openscreen_patches_vendoring_notes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "breadcast-caststream-sys/vendor/openscreen/PATCHES.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_breadcast_caststream_sys_vendor_openscreen_patches_vendoring_notes", "target": "$graphify-root$_breadcast_caststream_sys_vendor_openscreen_patches_rolling_the_pin", "relation": "contains", "confidence": "EXTRACTED", "source_file": "breadcast-caststream-sys/vendor/openscreen/PATCHES.md", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_breadcast_caststream_sys_vendor_openscreen_patches_vendoring_notes", "target": "$graphify-root$_breadcast_caststream_sys_vendor_openscreen_patches_what_s_excluded_and_why", "relation": "contains", "confidence": "EXTRACTED", "source_file": "breadcast-caststream-sys/vendor/openscreen/PATCHES.md", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_breadcast_caststream_sys_vendor_openscreen_patches_vendoring_notes", "target": "$graphify-root$_breadcast_caststream_sys_vendor_openscreen_patches_local_patches_not_upstream", "relation": "contains", "confidence": "EXTRACTED", "source_file": "breadcast-caststream-sys/vendor/openscreen/PATCHES.md", "source_location": "L45", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}

File diff suppressed because one or more lines are too long