{"id":16216205,"url":"https://github.com/windvis/ember-breadcrumb-trail","last_synced_at":"2025-09-01T03:09:11.575Z","repository":{"id":43350696,"uuid":"365469646","full_name":"Windvis/ember-breadcrumb-trail","owner":"Windvis","description":"Minimalistic but very flexible breadcrumb management solution for Ember applications.","archived":false,"fork":false,"pushed_at":"2025-07-21T12:22:53.000Z","size":873,"stargazers_count":14,"open_issues_count":4,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-25T08:39:42.965Z","etag":null,"topics":["breadcrumbs","ember-addon","emberjs"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Windvis.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-05-08T09:11:59.000Z","updated_at":"2025-07-21T12:22:20.000Z","dependencies_parsed_at":"2024-06-19T02:42:01.815Z","dependency_job_id":"c42305e5-3a31-4a8b-b187-0c3c436981f2","html_url":"https://github.com/Windvis/ember-breadcrumb-trail","commit_stats":{"total_commits":24,"total_committers":3,"mean_commits":8.0,"dds":0.08333333333333337,"last_synced_commit":"0ed5c02598f3f9355563b97a9d6cdfd1f9fb63de"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/Windvis/ember-breadcrumb-trail","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Windvis%2Fember-breadcrumb-trail","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Windvis%2Fember-breadcrumb-trail/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Windvis%2Fember-breadcrumb-trail/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Windvis%2Fember-breadcrumb-trail/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Windvis","download_url":"https://codeload.github.com/Windvis/ember-breadcrumb-trail/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Windvis%2Fember-breadcrumb-trail/sbom","scorecard":{"id":151623,"data":{"date":"2025-08-11","repo":{"name":"github.com/Windvis/ember-breadcrumb-trail","commit":"e26ac7f7f0220853d43eea770f4db6a7289dd39b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.7,"checks":[{"name":"Code-Review","score":1,"reason":"Found 2/15 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":8,"reason":"8 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 8","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/plan-release.yml:39","Info: jobLevel 'issues' permission set to 'read': .github/workflows/plan-release.yml:40","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/publish.yml:42","Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/plan-release.yml:1","Warn: no topLevel permission defined: .github/workflows/publish.yml:1","Warn: no topLevel permission defined: .github/workflows/push-dist.yml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/Windvis/ember-breadcrumb-trail/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/Windvis/ember-breadcrumb-trail/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/Windvis/ember-breadcrumb-trail/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/Windvis/ember-breadcrumb-trail/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/Windvis/ember-breadcrumb-trail/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:58: update your workflow using https://app.stepsecurity.io/secureworkflow/Windvis/ember-breadcrumb-trail/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/plan-release.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/Windvis/ember-breadcrumb-trail/plan-release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/plan-release.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/Windvis/ember-breadcrumb-trail/plan-release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/plan-release.yml:55: update your workflow using https://app.stepsecurity.io/secureworkflow/Windvis/ember-breadcrumb-trail/plan-release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/plan-release.yml:58: update your workflow using https://app.stepsecurity.io/secureworkflow/Windvis/ember-breadcrumb-trail/plan-release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/plan-release.yml:79: update your workflow using https://app.stepsecurity.io/secureworkflow/Windvis/ember-breadcrumb-trail/plan-release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/Windvis/ember-breadcrumb-trail/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/Windvis/ember-breadcrumb-trail/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/Windvis/ember-breadcrumb-trail/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/Windvis/ember-breadcrumb-trail/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/push-dist.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/Windvis/ember-breadcrumb-trail/push-dist.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/push-dist.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/Windvis/ember-breadcrumb-trail/push-dist.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/push-dist.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/Windvis/ember-breadcrumb-trail/push-dist.yml/main?enable=pin","Info:   0 out of  10 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   8 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: MIT License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/publish.yml:36"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 21 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"18 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-xffm-g5w8-qvg7","Warn: Project is vulnerable to: GHSA-h5c3-5r3r-rr8q","Warn: Project is vulnerable to: GHSA-rmvr-2pp2-xj38","Warn: Project is vulnerable to: GHSA-xx4v-prfh-6cgc","Warn: Project is vulnerable to: GHSA-whgm-jr23-g3j9","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-pfrx-2q88-qq97","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55","Warn: Project is vulnerable to: GHSA-76c9-3jph-rj3q","Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-16T10:51:45.625Z","repository_id":43350696,"created_at":"2025-08-16T10:51:45.625Z","updated_at":"2025-08-16T10:51:45.625Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273068857,"owners_count":25039911,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-01T02:00:09.058Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["breadcrumbs","ember-addon","emberjs"],"created_at":"2024-10-10T11:18:45.310Z","updated_at":"2025-09-01T03:09:11.565Z","avatar_url":"https://github.com/Windvis.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"ember-breadcrumb-trail\n==============================================================================\n[![CI](https://github.com/Windvis/ember-breadcrumb-trail/workflows/CI/badge.svg)](https://github.com/Windvis/ember-breadcrumb-trail/actions?query=workflow%3ACI)\n[![Code Style: Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n`ember-breadcrumb-trail` is a minimalistic but very flexible breadcrumb management solution. It provides only 2 helpers but they give you complete control over the HTML structure, the components you use to render that structure and the needed data to make it all work. Bring your own _everything_!\n\nThis addon is heavily inspired by [ember-page-title](https://github.com/ember-cli/ember-page-title) and the already existing [breadcrumb addons](https://emberobserver.com/?query=crumb).\n\n\nCompatibility\n------------------------------------------------------------------------------\n\n* Ember.js v5.12 or above (lower versions might work, but aren't tested)\n* Ember CLI v5.12 or above\n* Works with Embroider (safe and optimized) \n* Publishes Glint types\n\n\nInstallation\n------------------------------------------------------------------------------\n\n```\nember install ember-breadcrumb-trail\n```\n\n\nUsage\n------------------------------------------------------------------------------\n\n### `{{breadcrumb}}` helper\nThis helper allows you to add breadcrumbs and is the equivalent of the `page-title` helper but for breadcrumbs.\n\n#### Positional argument(s)\nPositional arguments are used as the title for the breadcrumb. Multiple positional arguments will be combined into a single title. \n\n```hbs\n{{breadcrumb \"Home\"}}\n{{! \"Home\" }}\n\n{{breadcrumb \"Hottest JS framework 🔥: \" this.hottestFramework}}\n{{! \"Hottest JS framework 🔥: Ember\" }}\n```\n\u003e The title can be accessed with the `title` property of the breadcrumb object.\n\n#### Named arguments\nAny data that you need to render your breadcrumbs can be passed in as named arguments. This can be used to pass route information so that the breadcrumb can be linked to it.\n\n\u003e The named arguments will be available under the `data` property of the breadcrumb object.\n\n\n### `{{breadcrumbs}}` helper\nThis helper simply returns the registered breadcrumbs and can be used wherever you want to display them. The breadcrumb data can easily be looped over with `{{#each}}` and combined with other helpers if extra data manipulation is needed.\n\n#### Returns\nArray of registered breadcrumbs (objects)\n\n### Examples\n\n#### a11y\nThis simple example implements an [a11y friendly breadcrumb structure](https://www.w3.org/TR/wai-aria-practices/#breadcrumb) using Ember's `\u003cLinkTo\u003e` component and the [`{{has-next}}`](https://github.com/DockYard/ember-composable-helpers#has-next) helper from ember-composable-helpers to determine if a breadcrumb is the last breadcrumb in the list.\n\n```hbs\n\u003cnav aria-label=\"Breadcrumb\"\u003e\n  \u003col\u003e\n    {{#each (breadcrumbs) as |breadcrumb|}}\n      \u003cli\u003e\n        \u003cLinkTo\n          @route={{breadcrumb.data.route}}\n          aria-current={{if (not (has-next breadcrumb (breadcrumbs))) \"page\"}}\n        \u003e\n          {{breadcrumb.title}}\n        \u003c/LinkTo\u003e\n      \u003c/li\u003e\n    {{/each}}\n  \u003c/ol\u003e\n\u003c/nav\u003e\n\n{{! index.hbs }}\n{{breadcrumb \"Home\" route=\"index\"}}\n\n{{! about.hbs }}\n{{breadcrumb \"About\" route=\"about\"}}\n```\n\n#### [ember-link](https://github.com/buschtoens/ember-link)\nA similar example where ember-link is used instead of `\u003cLinkTo\u003e`.\n\n```hbs\n\u003cnav aria-label=\"Breadcrumb\"\u003e\n  \u003col\u003e\n    {{#each (breadcrumbs) as |breadcrumb|}}\n      \u003cli\u003e\n        \u003ca\n          href={{breadcrumb.data.link.href}}\n          aria-current={{if (not (has-next breadcrumb (breadcrumbs))) \"page\"}}\n          {{on \"click\" breadcrumb.data.link.transitionTo}}\n        \u003e\n          {{breadcrumb.title}}\n        \u003c/a\u003e\n      \u003c/li\u003e\n    {{/each}}\n  \u003c/ol\u003e\n\u003c/nav\u003e\n\n{{! blog.hbs }}\n{{breadcrumb \"Blog\" link=(link \"blog\")}}\n\n{{! blog/post.hbs }}\n{{breadcrumb this.post.title link=(link \"blog.post\" this.post.id)}}\n```\n\n## TypeScript and Glint\n### Loose-mode usage\nIf your project uses loose-mode templates, you can merge in the template registry interface provided by ember-breadcrumb-trail:\n\n```ts\n// \u003cyour-app\u003e/types/glint.d.ts\nimport '@glint/environment-ember-loose';\nimport '@glint/environment-ember-template-imports';\n\nimport type EmberBreadcrumbTrailRegistry from 'ember-breadcrumb-trail/template-registry';\n\ndeclare module '@glint/environment-ember-loose/registry' {\n  export default interface Registry extends EmberBreadcrumbTrailRegistry {\n    /* your local loose-mode entries here */\n  }\n}\n```\n\n### Strict-mode usage\nTo use the helpers in strict-mode templates, you can use the shorter import path:\n\n```gts\nimport { breadcrumb, breadcrumbs } from 'ember-breadcrumb-trail';\n```\n\n\nContributing\n------------------------------------------------------------------------------\n\nSee the [Contributing](CONTRIBUTING.md) guide for details.\n\n\nLicense\n------------------------------------------------------------------------------\n\nThis project is licensed under the [MIT License](LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwindvis%2Fember-breadcrumb-trail","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwindvis%2Fember-breadcrumb-trail","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwindvis%2Fember-breadcrumb-trail/lists"}