{"id":19675806,"url":"https://github.com/progerxp/noxxxep","last_synced_at":"2025-07-14T08:03:39.329Z","repository":{"id":146023836,"uuid":"581854408","full_name":"ProgerXP/noXXXep","owner":"ProgerXP","description":"The Insideous Bug Tracker","archived":false,"fork":false,"pushed_at":"2023-04-21T19:45:27.000Z","size":26,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-10T04:25:24.815Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://herowo.game/noXXXep/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ProgerXP.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2022-12-24T15:43:47.000Z","updated_at":"2024-03-16T20:52:03.000Z","dependencies_parsed_at":"2023-04-22T01:48:20.780Z","dependency_job_id":null,"html_url":"https://github.com/ProgerXP/noXXXep","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProgerXP%2FnoXXXep","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProgerXP%2FnoXXXep/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProgerXP%2FnoXXXep/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProgerXP%2FnoXXXep/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ProgerXP","download_url":"https://codeload.github.com/ProgerXP/noXXXep/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240985469,"owners_count":19889097,"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","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":[],"created_at":"2024-11-11T17:25:57.547Z","updated_at":"2025-02-27T05:41:35.723Z","avatar_url":"https://github.com/ProgerXP.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# noXXXep - The Insideous Bug Tracker\n\nMaintaining development tasks must be similar to maintaining documentation - as part of the source code.\n\n* Keep tasks up to date with code and subject to version control system.\n* Bind tasks into context of code. Why write a description if the nearby snippet is worth a thousand words?\n* Use `grep`, find \u0026 replace, log, diff, blame - all the tools that we love.\n\n**noXXXep** itself:\n\n* Supports task priority, tags, groups (blockers), inter-links and custom options (`key=value` and simplified JSON).\n* Works with any programming or human language and document type (even binary).\n* Requires zero configuration and dependencies sans vanilla PHP 7+.\n* Works without JavaScript, if you so desire.\n\nSee **noXXXep** used in HeroWO.js - a JavaScript re-implementation of *Heroes of Might and Magic III*.\n\nhttps://herowo.game/noXXXep/\n\n## The Syntax\n\nEverything begins with a `XXX` that is not part of any *word* (`\\b`).\n\nAfter it, optional priority follows (by default: `=` normal, `+` `++` high/est, `-` `--` low/est).\n\nAfter priority go optional `,`-separated tags (any `\\w`ord symbols).\n\nExtended syntax starts with `:` following priority (or tags, if specified):\n\n1. Optional `,`-separated groups (`\\w`).\n2. Optional globally unique task identifier (`\\w`), after a space.\n3. Optional `key=value` options (`\\w`), after a space.\n4. Final `:` ending the task declaration. This can be replaced or preceded by `...` to indicate presence of a JSON block.\n\nExamples:\n\n```\ncase '-statistics':\n  throw new Exception('-statistics is not implemented')   // XXX\n```\n\n```\n$sounds = [\n  'schoolOfMagic' =\u003e 'LOOPMAGI',    // XXX=check,fix\n  'alchemistLab' =\u003e 'XXX+AUDIO',\n];\n```\n\n```\nvar config = {\n  // XXX-: LOG: Split this into separate options for fine-grained log control.\n  log: false,\n}\n\n...\n\n// XXX=:LOG: Do emit this line even in production (but need to fix LOG first).\nif (config.log) { console.log(seed) }\n```\n\n## (Optional) Configuration\n\nWhen `noXXXep.php` is opened in a web browser, it scans files in its own directory, refreshing list of tasks as needed and then presents results to the user. Thus you can drop `noXXXep.php` into your project's root and browse it right away.\n\n`noXXXep.php` can be also `include`'d into a PHP script as a library exposing the `noXXXep` class with configuration and useful methods. It won't do anything unless you ask it, perhaps by calling `takeOver()` on a `new noXXXep()` instance (this is what happens when requested in a browser).\n\nAlternatively, you can configure it without including into your script by creating `noXXXep-config.php` in the current working directory or its parent (this is handy if you have `git clone`'d or `git submodule add`'ed **noXXXep** into your project's directory). `$this` inside that script points to the `noXXXep` instance that is going to serve the request.\n\nSample configuration (see all available properties at the beginning of `noXXXep.php`):\n\n```\n\u003c?php\n/* noXXXep/noXXXep-config.php */\n$this-\u003etitle = 'My Hideous Bug Tracker';\n$this-\u003ereadOnly = true;     // use in untrusted environment\n$this-\u003erootPath = '../app/';\n$this-\u003efileRE = '/\\.(php|md)$/ui';\n```\n\n**noXXXep** comes with embedded JavaScript and CSS styles. Put your additions to `noXXXep.css` and `noXXXep.js` in the current working directory, or according to your `$mediaPath` prefix.\n\n```\n/* noXXXep/noXXXep.css */\n.Xt__SomeTag \u003e *,\n.Xfilters [name=\"tag[]\"] [value=\"SomeTag\"] {\n  background: teal;\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprogerxp%2Fnoxxxep","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprogerxp%2Fnoxxxep","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprogerxp%2Fnoxxxep/lists"}