Skip to content

Promote develop to main: everything the re-staged exe should carry - #862

Merged
sridharkalaibala merged 9 commits into
mainfrom
develop
Sep 17, 2026
Merged

sridharkalaibala merged 9 commits into
mainfrom
develop

Conversation

@sridharkalaibala

Copy link
Copy Markdown
Contributor

Nine commits, and the exe is built from main, so this should land before it is re-staged rather than after.

What it carries

A table call that arrived by sync makes a sound (#859). A call that reached the till through the sync agent rather than a direct request was silent, so the one kind of call that happens when the handset cannot reach the till directly was the one nobody heard.

An installed-app check (#858, #860, #861). npm run check:installed inspects an installed app and walks all five links of the audio chain, because breaking any one of them is silence with no error anywhere:

  OK    the announcement is composed
  MISS  the bells are struck notes, not a beep
  OK    the bridge carries it to a page
  ----  the app is not running, so the page and the CSP were not checked

It resolves the bundle the running app actually serves rather than the source file beside it, which is exactly the thing that lied tonight: the installer contained core/kitchen-call.js, correct and current, next to a dashboard bundle that did not contain it. Read-only, with a test enforcing that, because it gets pointed at a till mid-service.

The file mode was fixed twice, from two directions (#860 and #861), which is what a shebang without chmod +x gets you.

Why now

main already has the audio, the Active KOT note fix and the publish fix, so a re-stage would work. But it would ship without the sync-call sound, and whoever runs npm run check:installed from a main checkout would not have it.

After this

Re-stage with npm run build or npm run publish, both correct now. Then on the kitchen machine: npm run check:installed, Core Settings, both switches on, press Test the sound.

Do not squash. A squashed release PR conflicts with the next one.

A shop had a correct build installed and heard nothing. The repository
was green throughout and was right to be: every source file was correct.
What was wrong was the installer, which carried a page bundle built
before the code that page was supposed to contain.

No test here can see that. frontend/public/ is gitignored build output,
so the one link that broke is the one link invisible from the source
tree. This looks at an installed app instead and walks the whole chain:

  the main process can compose and synthesise
  the bridge carries it to a page
  a page is listening                          <- the one that broke
  the browser may play a data: sound
  somebody turned it on

Breaking any one of them is silence with no error anywhere, which is why
it reports all five rather than stopping at the first.

It reads the served bundle rather than the source file beside it. The
installer contained frontend/static/script/js/core/kitchen-call.js,
correct and current, sitting next to a dashboard bundle that did not
contain it - so looking for the source file would have reported
everything fine.

Read only, because it is pointed at a till in a working restaurant,
often mid-service. A diagnostic that writes is one somebody is right to
refuse to run, and then it never gets run.

    npm run check:installed

Run against the machine here it correctly reports the currently
installed build as not ready.
…itchen-does

A kitchen is not the place to find out the sound does not work
"Call waiter" on the ordering page writes into the cloud database. The
lane that brings it down was built tonight (Gateway "A call reaches the
till", #853), and what arrived landed in the request dock silently: the
dock polls, so the call showed within seconds, but the sound a
counter-made call raises comes from the API's insert path, which a synced
row never takes.

A pulled call now rings the arrival bell once, the same treatment a
synced-in order gets, and sends nothing to the kitchen printer. It does
not ring until answered: that alarm needs the call's id so that "seen"
can stop it, and the agent's line carries a count. What that next step
needs is written beside the code.
scripts/check-installed-app.js declares a shebang and was committed
100644. cron or a deploy that calls it by path gets 'permission denied'.
tests/executable-scripts.test.js has refused the suite over it since it
landed; this is the mode bit, nothing else.
Make the checker executable, as its shebang promises
A table call that arrived by sync makes a sound
@sridharkalaibala
sridharkalaibala merged commit 7eef81e into main Sep 17, 2026
21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant