{"id":20713680,"url":"https://github.com/mcstreetguy/fusion-debugger","last_synced_at":"2025-10-08T02:57:00.817Z","repository":{"id":45573574,"uuid":"197741296","full_name":"MCStreetguy/fusion-debugger","owner":"MCStreetguy","description":"A debugger plugin for Neos.Fusion.","archived":false,"fork":false,"pushed_at":"2024-03-03T01:22:39.000Z","size":307,"stargazers_count":7,"open_issues_count":4,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-23T08:09:40.761Z","etag":null,"topics":["cli-tool","command-line-tool","debugger","debugger-visualizer","debugging-tool","flowframework","fusion","fusion-debugger","fusion-files","linter","neos","neos-fusion","neoscms","prototype","prototype-hierachie"],"latest_commit_sha":null,"homepage":"https://packagist.org/packages/mcstreetguy/fusion-debugger","language":"PHP","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/MCStreetguy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-07-19T09:09:52.000Z","updated_at":"2024-11-29T14:52:05.000Z","dependencies_parsed_at":"2025-04-23T08:09:43.136Z","dependency_job_id":"97cf9564-1489-4d20-9490-4f8a5416f3eb","html_url":"https://github.com/MCStreetguy/fusion-debugger","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/MCStreetguy/fusion-debugger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MCStreetguy%2Ffusion-debugger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MCStreetguy%2Ffusion-debugger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MCStreetguy%2Ffusion-debugger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MCStreetguy%2Ffusion-debugger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MCStreetguy","download_url":"https://codeload.github.com/MCStreetguy/fusion-debugger/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MCStreetguy%2Ffusion-debugger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278881830,"owners_count":26062176,"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-10-08T02:00:06.501Z","response_time":56,"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":["cli-tool","command-line-tool","debugger","debugger-visualizer","debugging-tool","flowframework","fusion","fusion-debugger","fusion-files","linter","neos","neos-fusion","neoscms","prototype","prototype-hierachie"],"created_at":"2024-11-17T02:26:41.411Z","updated_at":"2025-10-08T02:57:00.772Z","avatar_url":"https://github.com/MCStreetguy.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MCStreetguy.FusionDebugger\n\nA small plugin for the awesome Neos CMS, to improve debugging of Fusion DSL code.\n\n-------\n\n- [Overview](#overview)\n- [Installation](#installation)\n  - [Usage outside of Neos](#usage-outside-of-neos)\n  - [Troubleshooting](#troubleshooting)\n    - [`Invalid controller class name \"\". Make sure your controller is in a folder named \"Command\" and it's name ends in \"CommandController\"`](#invalid-controller-class-name--make-sure-your-controller-is-in-a-folder-named-command-and-its-name-ends-in-commandcontroller)\n- [Reference](#reference)\n  - [Commands](#commands)\n    - [`fusion:debugprototype`](#fusiondebugprototype)\n    - [`fusion:showobjecttree`](#fusionshowobjecttree)\n    - [`fusion:lint`](#fusionlint)\n    - [`fusion:listprototypes`](#fusionlistprototypes)\n  - [Configuration](#configuration)\n    - [`fusionFilePathPatterns`](#fusionfilepathpatterns)\n- [Versioning](#versioning)\n- [Authors](#authors)\n- [License](#license)\n\n## Overview\n\n**What is this plugin capable of?**\n\n- Debugging fully merged Fusion prototype definitions\n- Visualizing (parts of) the combined Fusion object tree\n- Linting Fusion files for syntax errors\n\n**Why do I need it?**\n\nDid you ever came across some really strange rending issue while you created a page in Neos?\nAnd did you ever told yourself: \"Why the actual hell is this happening? It's supposed to do something different.\"  \nWell then you probably know about the reasons behind this plugin, it's _improved debugging_.\n\nIt's currently not possible in common Neos installations to have a closer look behind the scenes of Fusion rendering.\nIt parses some code, does some magic and then hopefully your expected result will appear.\nBut what happens actually in between?  \nTo get rid of that uncertainty this Plugin allows you to visualize what you normally won't see: the merged Fusion prototype configuration and the combined object tree.\n\n## Installation\n\nInstall the plugin by requiring it through composer:\n\n``` bash\ncomposer require --dev mcstreetguy/fusion-debugger\n```\n\nIf composer refuses to install the plugin, try requiring a specific version of it.\nThe major version of this project will always work with the corresponding Neos release.\nWe support all Neos versions ranging from 3.0 upwards officially, although every version below 7.0 is considered legacy at this point and won't receive updates or new features anymore.\n\n``` bash\ncomposer require --dev mcstreetguy/fusion-debugger:^8.0   # for Neos v8.x\ncomposer require --dev mcstreetguy/fusion-debugger:^7.0   # for Neos v7.x\ncomposer require --dev mcstreetguy/fusion-debugger:^5.0   # for Neos v5.x (legacy)\ncomposer require --dev mcstreetguy/fusion-debugger:^4.0   # for Neos v4.x (legacy)\ncomposer require --dev mcstreetguy/fusion-debugger:^3.0   # for Neos v3.x (legacy)\n```\n\nThe plugin provides a seperate backport version, which omits typehinting to be compatible with older PHP and Neos 2.3:\n\n``` bash\ncomposer require --dev mcstreetguy/fusion-debugger:dev-backport\n```\n\n### Usage outside of Neos\n\nAs the plugin only relies on `neos/flow` and `neos/fusion` as dependencies, you can actually use it outside of Neos projects as long as both required components are available.\nTesting this is currently an ongoing process, but any feedback on compatibility outside Neos is greatly appreciated.\nIf you come across any issues not covered in the [troubleshooting section below](#troubleshooting), please [report them](https://github.com/MCStreetguy/fusion-debugger/issues).\n\n### Troubleshooting\n\n#### `Invalid controller class name \"\". Make sure your controller is in a folder named \"Command\" and it's name ends in \"CommandController\"`\n\nThis error happens only straight after installing the plugin as this corrupts the internal code caches of Flow in some way.  \nWe couldn't locate the origin of this problem yet but hope to resolve it asap!\nUntil then we recommend force-clearing the application caches after requiring the plugin through composer, as the automatic graceful clear during the installation is what probably causes this problem to arise.\n\n``` bash\n/path/to/flow flow:cache:flush --force\n```\n\nIn some edge cases it might happen that the entire Flow CLI stops working upon installation.\nIn that case you are required to manually empty the corresponding `Data/Temporary` directory, that will get Flow running again.\nIf you are uncertain which directories to remove, you may also delete the entire directory at once, causing Flow to regenerate it fully.\n\n## Reference\n\n### Commands\n\nThe plugin provides several commands to the Flow CLI. These are listed below for reference.\nPlease see the respective help pages for more detailled information.\n\n#### `fusion:debugprototype`\n  \n\u003e `mcstreetguy.fusiondebugger:fusion:debugprototype [--no-color] [--no-flatten] \u003cprototype\u003e`\n\nReads the definition of the requested prototype from the `__prototypes` key in the parsed object tree and resolves the contained prototype chain very carefully so that the result contains all properties, either inherited or explictely defined.\nFor better readability, this command also includes something similar to syntax highlighting as several parts of the built tree are colored (such as eel expressions, further prototype names or just plain strings). Furthermore it flattens the resulting data by removing empty properties and combining the internal properties for e.g. plain values (as these are stored with three properties but could be displayed directly without an array structure).\nThese additional behaviour can be suppressed by specifying the options `--no-color` or `--no-flatten` if it corrupts the resulting data or your terminal does not support ANSI colors.\n\n#### `fusion:showobjecttree`\n\n\u003e `mcstreetguy.fusiondebugger:fusion:showobjecttree [--path \u003cpath\u003e]`\n\nBuilds the object tree from all Fusion files and displays it in an ASCII tree structure (excluding the `__prototypes` key as we got the above command for that).\nYou can optionally provide a dot-separated path that will be loaded instead of the whole tree. (e.g. `./flow fusion:showobjecttree --path root.page`)\n\n#### `fusion:lint`\n\n\u003e `mcstreetguy.fusiondebugger:fusion:lint [--package-key \u003cpackageKey\u003e] [--verbose] [--quiet]`\n\nChecks all Fusion files individually for syntax errors and lists the incorrect files with their associated package and file path.\nThis command was intended to programmatically check the correctness of the Fusion source code and is in fact still an experiment but listed for the sake of completeness.\n\n#### `fusion:listprototypes`\n\n\u003e `mcstreetguy.fusiondebugger:fusion:listprototypes [--no-format]`\n\nLists all known Fusion prototype names.  \nIf the `--no-format` option is specified, the list will lack any bullets and return unsorted.\n\n### Configuration\n\nThe plugin comes with minimal configuration options available. These are listed below for reference.\n\n#### `fusionFilePathPatterns`\n\nAn array of file path patterns used to search for Fusion files that will be loaded.  \nThe default path `resource://@package/Private/Fusion/` is already present for ease of use.\nIf your setup involves Fusion files at other locations as the default one provide these here.\n\nThe following placeholders can be used inside the pattern and will be exchanged with real values upon evaluation:\n\n| **Placeholder** | **Description** |\n|----------------:|:----------------|\n| `@package` | The current package key from where the fusion gets loaded. |\n\n## Versioning\n\nWe use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/MCStreetguy/fusion-debugger/tags).  \n\n## Authors\n\n* **Maximilian Schmidt** - _Owner_ - [MCStreetguy](https://github.com/MCStreetguy/)\n\nSee also the list of [contributors](https://github.com/MCStreetguy/fusion-debugger/contributors) who participated in this project.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcstreetguy%2Ffusion-debugger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmcstreetguy%2Ffusion-debugger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcstreetguy%2Ffusion-debugger/lists"}