{"id":23037006,"url":"https://github.com/goki/grid","last_synced_at":"2025-08-29T06:23:13.566Z","repository":{"id":57579914,"uuid":"332312713","full_name":"goki/grid","owner":"goki","description":"GoGi SVG vector drawing program","archived":false,"fork":false,"pushed_at":"2024-01-09T06:12:03.000Z","size":1949,"stargazers_count":3,"open_issues_count":10,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-05-20T20:21:59.825Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/goki.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":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-23T21:35:46.000Z","updated_at":"2024-03-08T19:09:08.000Z","dependencies_parsed_at":"2023-10-15T04:16:46.900Z","dependency_job_id":"1d2308a6-d9c7-48bc-81c2-6b6785c70615","html_url":"https://github.com/goki/grid","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/goki/grid","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goki%2Fgrid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goki%2Fgrid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goki%2Fgrid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goki%2Fgrid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/goki","download_url":"https://codeload.github.com/goki/grid/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goki%2Fgrid/sbom","scorecard":{"id":434248,"data":{"date":"2025-08-11","repo":{"name":"github.com/goki/grid","commit":"53ae76796d5a29700474237fce6d2ff0547fe93b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","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":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","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":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"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":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"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":"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":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"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":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"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:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE: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":"Vulnerabilities","score":0,"reason":"10 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2023-1990 / GHSA-j3p8-6mrq-6g7h","Warn: Project is vulnerable to: GO-2023-1989 / GHSA-x92r-3vfx-4cv3","Warn: Project is vulnerable to: GO-2024-2937 / GHSA-9phm-fm57-rhg8","Warn: Project is vulnerable to: GO-2023-1988 / GHSA-2wrh-6pvc-2jm9","Warn: Project is vulnerable to: GO-2023-2102 / GHSA-4374-p667-p6c8","Warn: Project is vulnerable to: GHSA-qppj-fm5r-hxr3","Warn: Project is vulnerable to: GO-2024-2687 / GHSA-4v7x-pqxf-cx7m","Warn: Project is vulnerable to: GO-2024-3333","Warn: Project is vulnerable to: GO-2025-3503 / GHSA-qxp5-gwg8-xv66","Warn: Project is vulnerable to: GO-2025-3595 / GHSA-vvgc-356p-c3xw"],"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-19T04:11:48.317Z","repository_id":57579914,"created_at":"2025-08-19T04:11:48.317Z","updated_at":"2025-08-19T04:11:48.317Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272641226,"owners_count":24968801,"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-08-29T02:00:10.610Z","response_time":87,"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":[],"created_at":"2024-12-15T17:28:23.021Z","updated_at":"2025-08-29T06:23:13.546Z","avatar_url":"https://github.com/goki.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"![alt tag](logo/grid-icon.png)\n\nGrid is a GoGi-based SVG vector drawing program, with design based on Inkscape.\n\nIf an acronym is required, how about: \"Go-rendered interactive drawing\" program.\n\n# Behavior\n\n* multiple select actions keep doing down even inside groups, so it is easy to operate inside groups but group is the \"default\"\n\n* Alt on control knobs -\u003e rotate instead of clicking again to get rotation knobs -- this is compatible with above and better :)\n\n# Install\n\nThe simple Go install command should work, for modules mode: \n\n```bash\n$ go get goki.dev/grid/cmd/grid\n```\n\nSee [Goki Install](https://github.com/goki/gi/wiki/Install) for more information and prereqs for different platforms -- if you encounter any difficulties, ensure that Goki works first.\n\nExporting PNG and PDF depends on https://inkscape.org -- on the Mac you need to make a link to `/usr/local/bin` and likewise for Linux:\n\n```bash\n$ sudo ln -s /Applications/Inkscape.app/Contents/MacOS/inkscape /usr/local/bin/\n```\n\n# Design\n\nSimilar to inkscape in overall layout, and read / write inkscape compatible SVG files.\n\n* Main horiz toolbar(s) across top -- top one is static, bottom one is dynamic based on selection / tool mode.\n\n* Left vert toolbar with drawing tools\n\n* Left panel with drawing structure.  This is just like GiEditor tree -- provides direct access as needed.  In particular this provides layer-level organization -- always have a layer group by default, and can drag items into different layers, and also have view and freeze flags on layers.  usu only show layer level, and selection there determines which layer things are added to!\n\n* Main middle panel with drawing.  Grid underlay is a separate image that is drawn first, updated with any changes.\n\n* Right tab panel with all the controls, just like gide in terms of tab \u0026 Inkscape overall. tabs are easier to find vs. inkscape.\n\n* code in main grid package provides all the editors for right tabs.\n\n# Status\n\nBasic functionality now in place:\n\n* create: rect, ellipse, line, text, import image\n\n* full basic paint settings (gradients, markers, etc), and text properties, editing\n\n* dynamic guide alignment, Align panel\n\n* basic node editor -- can move the main points, not the extra control points\n\n* full undo / redo for everything.\n\n* Preferences \n\n# TODO:\n\n* double-click on text brings up text bar and text panel\n\n* add more layer logic -- if layers, everything should be in a layer?\n\n* import svg -- same as marker\n\n* add group / ungroup to context menu (conditional on selection n etc)\n\n* implement the full transform panel\n\n* render gradient icons\n\n* show selected path node in diff color..  red?  node sel map\n\n* rest of line props -- easy\n\n* dropper = grab style from containsnode, apply to selection -- don't affect selection!\n\n* svg.Node ToPath -- convert any node to a path\n* node editor -- big job but needed for making basic bezier curves..\n\n* esc aborts new el drag\n\n* add distribute to Align\n\n* svg.Text align Center, etc affects different tspans within overall text block\n* Text edit panel -- finish toolbar\n\n* cut / paste not updating tree reliably.  more tree update debugging fun!\n\n* use grid itself to render all new icons!\n\n* figure out mask clipping eventually.\n\n\n# LINKS\n\nInkscape special flags\n\nhttps://wiki.inkscape.org/wiki/index.php/Inkscape_SVG_vs._plain_SVG\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoki%2Fgrid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoki%2Fgrid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoki%2Fgrid/lists"}