Files
bambuddy/backend
maziggy 23a6633f42 fix(queue): say when an unscheduled item runs instead of calling it ASAP (issue #3018)
The print dialog offers ASAP, Queue and Schedule. ASAP and Queue differ only
    in where the item is inserted, and neither is stored on the item -- scheduleType
    is a frontend-only concept, and grep finds no "asap" anywhere in the backend. So
    the queue's time column had nothing to read but scheduled_time, and labelled
    every unscheduled item "ASAP": the name of the one mode the user may well have
    chosen against.

    Someone who picked Queue then watched their row appear as ASAP and start
    immediately, and concluded Bambuddy had overridden them. Two reporters wrote
    that same sentence thirteen months apart, and #2557 was closed as A2L-specific
    after the first of them -- kilrah replied there with an X1C before filing this.

    The column answers when an item runs, so it now says that. The key is renamed
    whenFree rather than just retranslated: left called asap, the next translator
    puts ASAP back.

    The dispatch is unchanged, because it was right. A print scheduled for later
    does not reserve the printer until then; an unscheduled item behind it uses the
    idle printer rather than leaving an X1C dark until 6 AM. Two of the new tests
    pin that, so it does not get "fixed" later on the strength of a report like this
    one.

    What genuinely could not answer the question was the queue's own log. Its
    per-printer line called every entry in busy_printers "not available" -- but that
    set holds both printers that cannot take work and printers the pass has just
    claimed for some, which are opposite facts. It also read printer state at
    logging time rather than at the decision, so #3018's bundle carries

        Queue: printer 1 not available — connected=True, state=IDLE, ...
        Launching 1 upload(s) (pool 0/4 in flight)
        Starting queue item 18

    a printer reported unavailable, evidence that it was available, and a dispatch
    to it, in three consecutive lines. It is the first line anyone greps for "why
    did my item not go out".

    Each of the nine sites that removes a printer from a pass now records why, and
    the summary reports a claim as a reservation and everything else as an
    obstruction with its reason. The live fields stay, since a bundle reader wants
    them next, but are labelled as read now rather than offered as the cause.
    print_scheduler.py:1210 already documented that these two meanings differ -- the
    dispatching_printers snapshot exists for it. This carries that distinction into
    the log.
2026-09-20 13:27:43 +02:00
..