I haven’t found a solution for the bug you found with the math not always finding a good starting point but I have been working on that a lot. I’ve learned a lot about how the math works (not to say that I understand everything), and I have some kind of hacky solutions which I think could work, but I’m still searching to see if I can find something more elegant.
Modified to
Replace Idle button with Apply Tension in Extended state #711 which brings the Apply tension to the main menu while leaving existing Setup menu alone. No extra real estate is used as it replaces the Idle message (which is not current until Maslow is ready to operate). The Apply Tension message is then replaced with Idle message. firmware.bin (1.9 MB) index.html.gz (130.8 KB)
I like the idea of moving those buttons to the front page. I was thinking about using this space here for the two most likely to be used calibration buttons for each state:
Like in the “unknown” state that would be “Retract” and “Extend” and then from the “Extended” state that would be “Apply Tension” and “Locate Anchor Points”
This would mean relocating Trace Boundary function.
How about using the Idle button
How about when Unknown have button with Retract which changes to Extend when status is Retracted then becomes Apply Tension when status is Extended then defaults back to Idle, Home or whatever message is appropriate on Ready to Cut. I think Release Tension and Locate Anchor Points should still be hidden behind Setup as if accidently selected could be annoying.
This would mean relocating Trace Boundary function.
How about using the Idle button
How about when Unknown have button with Retract which changes to Extend when status is Retracted then becomes Apply Tension when status is Extended then defaults back to Idle, Home or whatever message is appropriate. I think Release Tension and Locate Anchor Points should still be hidden behind Setup as if accidently selected could be annoying.
yes, when the state is unknown, play/pause, stop (even alert/idle) do not mean
anything.
yes, when the state is unknown, play/pause, stop (even alert/idle) do not
mean anything.
I meant to say, until the status is ready-to-cut alll of the gcode related
buttons (including load file) cannot be used and the space could be used for the
setup functions.
I meant to say, until the status is ready-to-cut alll of the gcode related
buttons (including load file) cannot be used and the space could be used for
the setup functions.
I then tell the AI to make this available to the UI and change the logic in the
UI to use this same data structure.
My idea is that once this is done, the next step will be to change the UI to use
this data structure to create a row of buttons that show the state changes
allowed from the current state.
Could I get some people to please test this? it should make ZERO visible or behavioral changes (other than some log messages) but rearranges state management and UI code significantly (+424 lines/-333 lines). It passes my sniff test and extensive analysis by the AI, but additional eyes is always a good thing.
There is now an array stateDefinitions that lists every state, it’s name/background color for the UI, the button label for the UI and what states you can change to. The UI now uses this information to label and color the buttons. This means that if we decide that it is now allowable to go from one state to a different state, all we need to do is change this array and the buttons in the UI will change accordingly
The next step in this path is going to be to
make the jog arrows only bright/active when ‘ready to cut’ (with a hover/tooltip message explaining this when in other states)
make the play/pause, stop and idle/alarm buttons only show up when ‘ready-to-cut’, in other states there will instead be the buttons that are available (using the allowed state transitions from the new data structure)
make the ‘relax tension’ button always show up above the idle/alarm button (yes, retract all always works, but it only makes sense to use it after relaxing and disconnecting the belts, so I won’t have it displayed during ‘ready-to-cut’)
I think that maybe we should have a cohesive design philosophy and come up with a list of what our goal are.
I think that ever growing complexity is the thing that kills open source projects because people get frustrated and just want something simple that works
I think that maybe we should have a cohesive design philosophy and come up with a list of what our goal are.
I think that ever growing complexity is the thing that kills open source projects because people get frustrated and just want something simple that works
bad UI with every feature at the same level can be a barrier to new people
getting started, but I see more projects die because the founder doesn’t accept
features and so potential contributers go away and then the founder gets burnt
out.
IMHO, the normal workflow should be trival, but the abnormal workflow should be
possible (with the recognition that what starts as an abnormal workflow may
become more common in the future)
right now, we have people trying to jog/cut when the machine isn’t able to yet,
so modifying the UI to make it more clear that the parts that can’t be used yet
can’t be used, and what needs to be done to use it would complicate the UI to
some extent, but would also provide more help to people new to the machine if we
can do this right.
greying things out with more info in the tooltips can do this, removing buttons
that can’t function right now can also do this
the trace outline feature is a button that disappears when it can’t be used.
I didn’t change any settings related to that, but maybe because we are one
folder deeper it has a hard time finding the right files?
I’m thinking it was something that was setup in the UI repo that wasn’t set in
the firmware repo
I asked it to show me screenshots after a UI change and it said there was no way
to do that, but when the UI was a separate repo, showing screenshots to confirm
the change was common.