Title: UI is poor (arguments checked one-by-one, cryptic error messages when arguments have problems) · Issue #707 · pcb2gcode/pcb2gcode · GitHub
Open Graph Title: UI is poor (arguments checked one-by-one, cryptic error messages when arguments have problems) · Issue #707 · pcb2gcode/pcb2gcode
X Title: UI is poor (arguments checked one-by-one, cryptic error messages when arguments have problems) · Issue #707 · pcb2gcode/pcb2gcode
Description: Description of bug: The UI is poor: a) Stops parsing at first argument error it finds. Leading the user to play whac-a-mole, fixing each argument problem one-by-one rerunning the command each time. It should parse all arguments and pull ...
Open Graph Description: Description of bug: The UI is poor: a) Stops parsing at first argument error it finds. Leading the user to play whac-a-mole, fixing each argument problem one-by-one rerunning the command each time....
X Description: Description of bug: The UI is poor: a) Stops parsing at first argument error it finds. Leading the user to play whac-a-mole, fixing each argument problem one-by-one rerunning the command each time....
Opengraph URL: https://github.com/pcb2gcode/pcb2gcode/issues/707
X: @github
Domain: patch-diff.githubusercontent.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"UI is poor (arguments checked one-by-one, cryptic error messages when arguments have problems)","articleBody":"## Description of bug:\nThe UI is poor:\n\na) Stops parsing at first argument error it finds. Leading the user to play whac-a-mole, fixing each argument problem one-by-one rerunning the command each time. It should parse all arguments and pull out all issues (as much as possible, I'm aware some arguments going to be conditional on what has been entered for others), and should tell the user about all the problems found all at once.\n\nb) Errors don't tell a user how to amend the situation.\ne.g. \"Error: Tool changing height not specified.\"\nWould be far better as:\n\"Tool changing height not specified. Specify --zchange=\u003cinteger\u003e to set the tool change height, e.g. --zchange=25\"\n\n\n\n## What did you try (include command-line arguments):\n1. First step\n`pcb2gcode --front=AVmic3-F_Cu.gbr --drill=AVmic3.drl \\\n --isolation-width=0.3 --mill-diameters=0.3 --cut-infeed=-0.1 \\\n --mill-feed=100 --mill-speed=15000 --safety=3 \\\n --drill-feed=50 --drill-speed=10000 --drill-diameters=0.8 \\\n --output-dir=./front_gcode --basename=AVmic3_front\n`\n\n\n2. Second step\n`\npcb2gcode --metric --metricoutput \\\n --front=AVmic3-F_Cu.gbr --drill=AVmic3.drl \\\n --mill-diameters=0.3 --zwork=-0.1 --zsafe=20 \\\n --mill-feed=100 --mill-speed=15000 \\\n --drill-feed=50 --drill-speed=10000 --zdrill=-2 \\\n --drill-side=front \\\n --output-dir=./front_gcode --basename=AVmic3_front\n`\n\n3. Third step\n`\npcb2gcode --metric --metricoutput \\\n --front=AVmic3-F_Cu.gbr --drill=AVmic3.drl \\\n --mill-diameters=0.3 --zwork=-0.1 --zsafe=20 \\\n --mill-feed=100 --mill-speed=15000 \\\n --drill-feed=50 --drill-speed=10000 --zdrill=-2 \\\n --drill-side=front --zchange=25 \\\n --output-dir=./front_gcode --basename=AVmic3_front\n`\n\n4. Fourth step:\n`\npcb2gcode --metric --metricoutput \\\n --front=AVmic3-F_Cu.gbr --drill=AVmic3.drl \\\n --mill-diameters=0.3 --zwork=-0.1 --zsafe=20 \\\n --mill-feed=100 --mill-speed=15000 \\\n --drill-feed=50 --drill-speed=10000 --zdrill=-2 \\\n --drill-side=front --zchange=25 \\\n --basename=AVmic3_front\n`\n\n\n\n## What happened:\n\nSpecified this:\n`pcb2gcode --front=AVmic3-F_Cu.gbr --drill=AVmic3.drl \\\n --isolation-width=0.3 --mill-diameters=0.3 --cut-infeed=-0.1 \\\n --mill-feed=100 --mill-speed=15000 --safety=3 \\\n --drill-feed=50 --drill-speed=10000 --drill-diameters=0.8 \\\n --output-dir=./front_gcode --basename=AVmic3_front\n`\n\nGot this:\n`\nError: You've supplied an invalid parameter.\nDetails: unrecognised option '--safety=3'\n`\n\nCross-checked it against the --help. Realised the correct argument was --zsafe. \n\nTried this:\n`\npcb2gcode --metric --metricoutput \\\n --front=AVmic3-F_Cu.gbr --drill=AVmic3.drl \\\n --mill-diameters=0.3 --zwork=-0.1 --zsafe=20 \\\n --mill-feed=100 --mill-speed=15000 \\\n --drill-feed=50 --drill-speed=10000 --zdrill=-2 \\\n --drill-side=front \\\n --output-dir=./front_gcode --basename=AVmic3_front\n`\n\nGot this:\n`\nError: Tool changing height not specified.\n`\n\nHad to consult --help again to find the command for tool changing height.\n\nFinally tried this:\n`\npcb2gcode --metric --metricoutput \\\n --front=AVmic3-F_Cu.gbr --drill=AVmic3.drl \\\n --mill-diameters=0.3 --zwork=-0.1 --zsafe=20 \\\n --mill-feed=100 --mill-speed=15000 \\\n --drill-feed=50 --drill-speed=10000 --zdrill=-2 \\\n --drill-side=front --zchange=25 \\\n --output-dir=./front_gcode --basename=AVmic3_front\n`\n\nand it appeared to work, but then no files got dropped anywhere on the filesystem.\n\nRemoving the --output-dir finally gave me some files output in the current directory.\n\n`\npcb2gcode --metric --metricoutput \\\n --front=AVmic3-F_Cu.gbr --drill=AVmic3.drl \\\n --mill-diameters=0.3 --zwork=-0.1 --zsafe=20 \\\n --mill-feed=100 --mill-speed=15000 \\\n --drill-feed=50 --drill-speed=10000 --zdrill=-2 \\\n --drill-side=front --zchange=25 \\\n --basename=AVmic3_front\n`\n\n\n## What did you expect to happen:\n\nAll arguments, insofar as possible, are checked for errors and all errors found are shown to the user at the same time all in one go. The user can then fix the command in one attempt.\n\nError messages shown to users should include suggestions for how to rectify the situation where possible.\n\n\n## pcb2gcode version 2.5.0\n\n(This is a UI issue, not a file output issue.)\n","author":{"url":"https://github.com/michaeljtbrooks","@type":"Person","name":"michaeljtbrooks"},"datePublished":"2025-05-04T22:49:42.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2},"url":"https://github.com/707/pcb2gcode/issues/707"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:4382d9bd-f95f-e64a-a941-6ef6cd5e2c73 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | CF00:31D3B:304F50:3DA799:698E86F0 |
| html-safe-nonce | 6656fbfcbe96efa3bdf67e3896ed129418d98d5b12906b41a34b880740caab29 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDRjAwOjMxRDNCOjMwNEY1MDozREE3OTk6Njk4RTg2RjAiLCJ2aXNpdG9yX2lkIjoiNTIwNjk5MDM5NjA1MjExMzEzNiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | c46a54c6155d1cce9e3153f4db5e5095aeec8fa1246ee07ba0379d5989d817e2 |
| hovercard-subject-tag | issue:3038291289 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/pcb2gcode/pcb2gcode/707/issue_layout |
| twitter:image | https://opengraph.githubassets.com/2d6d8d1376b6798da19edad2ee7cb22555019fb9512487d2071b097d4dfa7be8/pcb2gcode/pcb2gcode/issues/707 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/2d6d8d1376b6798da19edad2ee7cb22555019fb9512487d2071b097d4dfa7be8/pcb2gcode/pcb2gcode/issues/707 |
| og:image:alt | Description of bug: The UI is poor: a) Stops parsing at first argument error it finds. Leading the user to play whac-a-mole, fixing each argument problem one-by-one rerunning the command each time.... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | michaeljtbrooks |
| hostname | github.com |
| expected-hostname | github.com |
| None | cb2828a801ee6b7be618f3ac76fbf55def35bbc30f053a9c41bf90210b8b72ba |
| turbo-cache-control | no-preview |
| go-import | github.com/pcb2gcode/pcb2gcode git https://github.com/pcb2gcode/pcb2gcode.git |
| octolytics-dimension-user_id | 11042572 |
| octolytics-dimension-user_login | pcb2gcode |
| octolytics-dimension-repository_id | 30911983 |
| octolytics-dimension-repository_nwo | pcb2gcode/pcb2gcode |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 30911983 |
| octolytics-dimension-repository_network_root_nwo | pcb2gcode/pcb2gcode |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | f7a12861f7011eecb14bcc4388a767d829a52dfc |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width