pf_app
A price target on its own was a no-op on price. The panel greys the plug out when a price is named and does not send it, so the server read it as its 'volume' default and scaled qty by the dollar change too, putting price straight back where it started. The price branch also read only a qty target, so a qty change or % sized the dollars on the old qty; took the fixed qty off a qty target but not the fixed dollars off the value; and let a dollar figure outrank the price outright. Now the named price holds and the other named measure decides the rest -- qty holds, or lands as named, or falls out of the dollars -- on the basis the panel measures against. All three at once is refused. The panel's boxes foot: at most two are inputs and the third is derived. Typing a third drops one -- the plug decides when dollars came last, else the older of the other two -- and the request is built from the same resolver, so what is posted is what is shown. The plug control is now "Moves": it lights whatever the edit moves, both if both do, and takes a click only while it is the one deciding. Known rough edge: with all three typed and dollars last, the choice is really which earlier number to keep, and "Volume" there moves price too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| lib | ||
| public | ||
| routes | ||
| setup_sql | ||
| ui | ||
| .env.example | ||
| .gitignore | ||
| CLAUDE.md | ||
| install.sh | ||
| package-lock.json | ||
| package.json | ||
| PERSPECTIVE.md | ||
| pf_perspective_options.md | ||
| pf_spec.md | ||
| pf.sh | ||
| server.js | ||