KTools 4.0

Warehouse Prep & Box Inventory Station

๐Ÿ“– Warehouse Operations & Owner's Manual
KTools 4.0 Worker Admin New in 4.0
Comprehensive Standard Operating Procedures (SOPs), floor prepper workflows, admin procedures, and system integration guide.
โ†— Open Standalone (HTML)
๐Ÿ“„
Showing all 31 topics
๐Ÿงฐ My Shift

Verified locally 2026-10-07. On the prepper station select My Shift (index.php?view=my_shift). Layout updated locally 2026-10-07: My Shift is immediately after Add Record in the prepper navigation. Navigation order updated locally 2026-10-07: Add Record, My Shift, Prep List, Search, View, Edit, Case Pack, Misfits, Damage Out, Tasks, Pick List, Supply, Days Off, Labels, Reports, Message, Manual, Scanner Test, then Legends when enabled. Links retain their existing destinations and active-page highlighting. Its summary tiles, section headers, task links, Refresh action and recent-work table now follow the shared station theme, muted guidance and card styling. On phones the summary tiles use two columns and task cards stack. Work totals, identity, approvals and game behavior are unchanged. A remembered, active prepper name is required. The page shows that prepper's saved units, records and different SKUs for the warehouse-local day, latest 20 submissions, all-date pending mission reports and reported pallet counts, open Productivity SKUs/Supply Runs, last 10 reports and existing game level/XP/coins. Refresh reloads the snapshot. Tasks remain available when Legends is off; retained progress is labeled. Dates on submissions are UTC. Totals use original record creation time and exclude deleted records; units are quantities, not scan attempts. Unknown names create no profile. Viewing never submits work or grants rewards. Use View tasks to report missing SKUs/restocked supplies through existing approval/PIN rules, or Open Warehouse Legends for game actions. If unavailable, refresh and ask a supervisor to check database updates.

๐Ÿ“ท Scanner Troubleshooting

Verified locally 2026-10-07. Select Scanner Test (index.php?view=scanner_test), then Start camera test and allow browser camera access. Use the shared Camera selector to try each lens. Hold a clear supported UPC/EAN, Code 128 or Code 39 label steady in good light. Stop camera records session duration, successful reads and first-read delay; switching lenses also records the prior session. Latest 20 test results remain only on this page. Repeated reads of a held label may count again after 1.2 seconds; these are decoder successes, not distinct items. For hardware scanners, click Hardware scanner test and scan. Enter/Tab are captured without submitting; missing suffix appears after a pause. Clear test empties the input. Camera closes when the page is hidden or left. Camera images/barcode values are never saved; existing Device Usage stores only technical timing/counts. The last selected camera remains the station preference. No inventory or game action occurs. Use HTTPS, clean the lens, close other camera apps, check site permissions, and ask an administrator to review Device Usage if scanning fails. Physical-device testing remains pending.

๐Ÿฉบ System Health

Verified locally 2026-10-07. Admin Tools โ†’ System Health (admin/system-health.php) requires admin_tools.health.view, granted to admins by seed 0074; grant others through Role Manager. Each tool additionally requires its own view permission. Refresh checks reads database connectivity, unapplied updates, release file comparison, Iron Bot heartbeat, printer heartbeat/failed jobs and device problems. Healthy, Needs attention, Information and Unknown states include next steps and permitted review links. A missing heartbeat does not prove broken hardware or guarantee a model answer. Device counts describe cumulative occurrences in groups last seen today in the account time zone, not exact newly occurring events; external catalog thumbnails are information. Failed checks show Unknown and leave the other cards available. This page never retries saves, prints jobs, applies migrations or repairs files.

Redesigned page (2026-10-07): Admin Tools โ†’ System Health (permission admin_tools.health.view) now opens with an overall status, then What needs attention: one tile per tool you can view (release files, database updates, Iron Bot, print stations and jobs, device problems, save failures) with the next step and a link. Below are quick metrics, monitored subsystems and server environment details (PHP and database versions, memory and upload limits). Everything is read-only; nothing is repaired automatically.

๐Ÿ“Š Read-only Operational Reports

Verified locally 2026-10-07. Admin Tools โ†’ Operational Reports (admin/operational-reports.php): choose a permitted report and View report. The page and Iron Bot report access require reports.operations.view (seed 0075, inherited by roles already viewing a supported source) plus the selected source permission. Units by prepper today requires reports.custom.view; its account-local start is inclusive and next midnight exclusive, using saved record creation time and excluding deletions. Printers without a recent heartbeat requires labels.station.run and uses the shared 30-second threshold for active printers only. Mission approvals requires legends.command.view; kiosk approvals legends.rewards.view; supply requests supply.requests.view. Approval reports are current all-date status, not historical status on a chosen day, and reported pallets are not approved rewards. Iron Bot can use these fixed SELECT reports from any page for explicit questions such as How many units by prepper today?, Which printers are offline?, or Which mission reports await approval? It supplies scope, capture time and a verification path; permission is checked again before bridge dispatch. No arbitrary SQL, updates, form filling, approval, printing or rewards. Only technical names/quantities/status are shared; secret fields and private notes are excluded. Open the verification report to review full groups; bot context is bounded to 100 groups. Extension v1.0.9 adds View verified operational report links; upload its source and prebuilt ZIP with the site, then users download/unzip/reload it from Browser Extensions to see this link. Existing extensions still receive server facts; no Windows worker update is needed. For a different time range use Scan Activity. Missing permission/data must be explained, not guessed.

Scanner Tasks & alerts

Operational Tasks and prepper alerts implemented locally 2026-10-06: scanner/prepper navigation โ†’ Tasks (index.php?view=scanner_missions) lists open Productivity SKUs and independent Supply Runs even with Warehouse Legends OFF or an excluded player. Existing Supply page is still supply requests. A known active remembered prepper is required. Each section shows up to 50 open items, descriptions/needed quantities, optional notes, report controls and recent review status. Canโ€™t find it / I restocked it creates an admin-reviewed report using the existing one-pending-report guard and reviewer bell preferences. If game rewards are eligible, unlock the Legends PIN before reporting; game-OFF/excluded operational reports need no game PIN and are permanently ineligible for rewards, even if Legends is switched on later. Approval while game OFF or currently excluded also grants no game rewards; there is no later automatic backfill. Confirm/Deny retain existing mission-review permissions. Submission never awards anything. No inventory restock adjustment is performed by a supply claim. New schema0101 adds reward eligibility; next schema0102, next seed0071. GET/POST scanner-missions-api.php exposes only task/recent-own-report data, uses no-store, remembered-name identity and POST custom-header/same-origin checks. Operational reviewer notices remain enabled with game OFF; other game notifications still respect the switch. Scanner pages poll open tasks every 60 seconds while visible, independently of game quiet mode. A readable task alert offers View tasks and Dismiss for 12 hours; each item ID is dismissed per prepper on this device in local storage. It reappears after expiry if still open, and new item IDs alert separately. Dismissal never closes the task and Tasks always lists it. Storage-blocked devices display a failure instead of claiming dismissal. Dialogs hide alerts; they resume on a later poll. No sound, background push, SMS or email is added; offline/hidden devices receive updates on the next successful poll. Updated app/knowledge/game/01-warehouse-legends.md and manuals in parity; isolated game-off/no-retroactive-reward and player regression/syntax/knowledge checks pass locally. Physical scanner/hosted acceptance pending.

Where to look & Supply Run pictures (2026-10-07): each Productivity SKU card on Tasks shows a ๐Ÿ“ Where to look box: when the SKU was last prepped, by whom and whether that box is still staged or already sent, plus the last location typed for it (for example Silver Shelf or HAZMAT AREA). "No prep history" means it has never been prepped here. Supply Run cards show a picture when a supervisor has set one (Warehouse Legends โ†’ Content Studio โ†’ Supply Run catalog โ†’ Picture URL, an https:// link); otherwise the ๐Ÿ“ฆ icon.

Productivity automatic claims and grouped alerts corrected locally 2026-10-06: visible Productivity targets were missing from record scoring; an eligible positive-quantity matching SKU record now automatically claims the first open target and grants its configured bonus as points/XP/boss damage, without approval or coins/Titan units. Existing scoring game-ON, exclusion, hold/release and verified saved-record gates apply; barcode lookup alone is not a completed record and does not claim. A target locks during scoring, so another record/player cannot claim it again. Corrections to quantity zero or another SKU and deletions reverse the associated score/progress and retire the claim; restoring eligible original work restores that original claim without reopening it to a second finder. The immutable target/bonus context is retained; no historical backfill is added. Game OFF pauses automatic game claims but the Tasks list remains visible. Tasks and Game Hub Productivity cards no longer present approval submission controls; Supply Run reports still require approval. Existing historic missing-SKU reports can still be reviewed separately. Scanner alert now groups ALL open Productivity SKUs (removed the 50-SKU read cap) with codes, descriptions and bonus values in one themed alert, plus available Supply Runs. The alert has a bounded scrollable body on small screens. Dismiss these alerts for 12 hours stores dismissal for each current item on this device; newly assigned target IDs can alert immediately, and the full list remains on Tasks. Curated app/knowledge/game/01-warehouse-legends.md and both manuals updated in parity. Automatic claim/replay/correction/deletion and engine/player regression checks pass locally; hosted scanner acceptance pending.

Productivity missing-item reporting restored locally 2026-10-06: Tasks and Legends โ†’ Missions โ†’ Productivity SKUs retain automatic claiming/configured bonus for eligible saved matching prep work, and also provide Review notes (up to 300 characters) plus Canโ€™t find it / Submit for review. Missing-item reports never claim the scan bonus on submission; they enter the existing supervisor review queue and send reviewer notices. Confirming a valid missing report follows the separate configured Seek & Nope reward and missing status; it is not a scan claim. Pending report duplicate guards remain. Supply Run completion still requires supervisor approval. Tasks missing reports work while game OFF with reward-ineligible snapshots and no later reward backfill. All-active grouped alerts and 12-hour device dismissal remain. This corrects the earlier removal of missing-item controls; both workflows are supported. Updated curated app/knowledge/game/01-warehouse-legends.md and online/offline manuals in parity; scanner/game JavaScript and PHP/knowledge checks plus auto-claim/review regression checks pass locally. Hosted device acceptance pending.

Tasks station styling aligned with prepper pages locally 2026-10-06: Tasks uses the standard tinted uppercase card header, themed section headers, readable SKU/product text, explicit Review notes labels and rounded fields. Refresh tasks and report actions now use the existing themed prepper primary button; 12-hour dismissal uses the secondary button. Buttons have at least 44px touch height, wrap/stack on phones, and show disabled state for pending/dismissed items. Keyboard field focus is visible. All new styling uses shared theme variables and existing button classes; no hardcoded theme colors. Automatic claims, review submission, game-off access and grouped alerts are unchanged. Updated app/knowledge/game/01-warehouse-legends.md with online/offline manual parity. PHP/JavaScript syntax and knowledge checks pass; physical-phone/all-theme visual acceptance pending.

Productivity alert thumbnails and compact descriptions added locally 2026-10-06: grouped scanner Productivity SKU alerts show a 44px item thumbnail next to the SKU code, a description shortened to at most 90 characters and two visible lines, and the bonus. Full descriptions remain on Tasks, with the full title also available on hover in the alert. Images use the existing Prep List thumbnail host and a valid ten-character ASIN from the SKU identifiers; absent ASIN or failed image uses a package placeholder. Images load lazily, use fixed bounds and cannot supply arbitrary URLs or markup. All active SKU entries, 12-hour dismissal and automatic claims remain unchanged. Curated app/knowledge/game/01-warehouse-legends.md and both manuals updated. Local PHP/JavaScript and knowledge checks pass; hosted thumbnail/device acceptance pending.

Legends Achievements & Badges

Achievements & Badges collection implemented locally 2026-10-05: open prepper navigation โ†’ Legends โ†’ Achievements & Badges. Browse configured badges, achievements and career level tracks with visible descriptions, badge rarity/award requirements, achievement targets, progress, earned status and award time. Search by name/description/code; Show filters All, Earned, Not earned, Badges or Achievements & tracks. Compare with selects an active, non-excluded teammate for side-by-side collection progress; Just me clears comparison. Badges show repeat award counts and latest date. Disabled definitions remain visible if already earned/progressed, labeled Retired; disabled unearned definitions are hidden. Personal daily goals are outside this lifetime collection. Teammate comparison is read-only, requires the remembered active non-excluded player and Game ON, and exposes only display name and whitelisted collection/progress fields. It does not expose PINs, private notes, inventory, hidden words, scoring internals or admin records. GET legends-api.php?action=collection&player= provides this read model; viewing does not require PIN unlock or award anything. Existing Satchel badge summary remains. Definitions are managed by administrators in Content Studio; if empty, enable badge/achievement definitions and verify actual scoring progress. Existing five-item maximum navigation wrapping applies. Curated app/knowledge/game/01-warehouse-legends.md and online/offline manual parity updated. Local read-model, privacy, player regression and syntax checks pass; live browser/mobile acceptance remains pending.

Prepper Hub command center expanded locally 2026-10-05: open prepper navigation โ†’ Legends โ†’ Hub. Your command center shows career level/XP and XP remaining, coins, round points, personal boss damage this round (unheld ledger only), Clean Run days, rank/title and momentum. Readable cards summarize season tier/XP/end date; up to three nearest incomplete enabled achievement/track targets and four earned badges; satchel item counts and equipped ability; Kiosk unlock/spending state; open supply runs/Productivity SKU counts and up to three pending reports from the existing ten-report recent history; Word Find revealed-letter/solved counts and mystery clue/solved state. Buttons open the existing detail tab directly, without spending or granting rewards. Boss/Titan floor progress, daily quest preview, role, daily/weekly boxes, calendar claims, live boosts and quiet-mode controls remain on Hub. Distinct badge count differs from repeated award count in the header. Progress is loaded on normal hub refresh; this is not a new live polling stream. No hidden words, locked clues, private teammate records or scoring internals are added. Existing game visibility, PIN requirements for actions and reward approval rules remain unchanged. No schema changes. Updated app/knowledge/game/01-warehouse-legends.md and both manuals; local rendering/escaping/empty-state/season-cap checks, PHP/JS syntax, knowledge parity and player regression checks pass; hosted/mobile visual acceptance pending.

Achievement AI draft target correction implemented locally 2026-10-05: achievements require one positive whole-number lifetime target; milestone ladders belong to Level tracks. The AI Generator previously described achievements as comma-list ladders, conflicting with validation. Its type guidance and example now explicitly require targets as one number, e.g. "1000". Existing pending drafts are not silently changed, converted or published. Content Studio โ†’ Drafts โ†’ achievement โ†’ Edit target shows the name and current targets; enter the intended single lifetime target โ†’ Save target โ†’ Preview โ†’ approve separately (off or switch on). Existing studio approval permission and CSRF are required; saving locks/rechecks the pending achievement, validates the entire payload and records a change log. Cancel/Close/Escape does not save. Already reviewed or non-achievement drafts cannot be edited here. If another field remains invalid, saving displays the error and the draft remains unchanged. Users wanting a ladder must request a Level track instead. No invented milestone thresholds and no automatic rewards or approval. Shared app/knowledge/game/01-warehouse-legends.md and manual parity updated; validation, edit/review boundaries and syntax checks pass locally. Hosted acceptance pending.

Hub card order updated locally 2026-10-05: Legends โ†’ Hub starts with Boss and Todayโ€™s Titan, followed by Mystery Boxes, Todayโ€™s quests and Your role today, then This device quiet-mode controls and any live boosts. The expanded player command-center summary and progress cards follow below. Mobile retains the existing stacked card layout. This changes display order only; reward actions, PIN requirements and progress values are unchanged. Updated curated app/knowledge/game/01-warehouse-legends.md and online/offline manuals in parity; JavaScript syntax and knowledge checks pass. Hosted visual acceptance pending.

Operations Dashboard Legends snapshot implemented locally 2026-10-05: Admin โ†’ Operations Dashboard includes Warehouse Legends after the operational pipeline tiles. Shows Game on/off (off retains historical progress), current unexpired boss HP and defeat progress/end time, todayโ€™s Titan units/target, eligible preppers earning today, authorized pending mission/reward-review counts and top five active included preppers by current-round points (damage shown alongside), falling back to career XP when no round is active. Snapshot updates on dashboard load or Refresh; it does not run scoring, advance rounds or poll automatically. dashboard.view and legends.command.view are required; named player rows additionally require legends.players.view, mission counts legends.missions.review and reward-claim counts legends.kiosk.fulfil. Excluded/inactive players and held earnings are omitted from rankings/activity; no PINs, hidden puzzles, inventory or private review notes are displayed. Empty/expired round states are explicit. A Legends query failure shows an unavailable notice while preserving the operational dashboard. Links open Command Center for detailed actions. Existing dashboard theme components provide responsive cards and table layout; no new schema/permissions. Curated app/knowledge/game/01-warehouse-legends.md and both manuals updated. Local permission, game-off, ranking, held-record and expired-round checks plus syntax/knowledge checks pass; hosted visual acceptance pending.

Collapsible prepper Legends navigation implemented locally 2026-10-06: Legends โ†’ use Hide navigation above the tabs to collapse the tab grid while scrolling; Show navigation opens it again. The compact control displays the current tab and remains in the sticky header. This device remembers the collapsed choice across refreshes using local storage; blocked storage still allows toggling for the current page. Collapsing does not change the selected page, player stats, PIN controls or game actions. Hidden tabs leave keyboard focus order; the native button supports keyboard activation and exposes aria-expanded/aria-controls. Without JavaScript the normal navigation remains visible. Existing at-most-five-column wrapping remains when expanded. Updated app/knowledge/game/01-warehouse-legends.md and both manuals in parity; PHP/JavaScript syntax and knowledge checks pass. Mobile visual acceptance remains pending.

Legends correction recovery

Correction recovery update, verified locally 2026-10-05: schema0098 preserves signed coin and item balances. Record edits/deletions now retain the full revoked amount even when the reward was spent, used or gifted. Negative balances mean outstanding corrected rewards, not spendable coins/items; future matching grants automatically repay them, and restored valid entitlements cancel the deficit once. Game Hub shows Corrected reward balance, and Command Center โ†’ Player Progress shows signed coins and Items & Abilities quantities. Gift recipients and already delivered real-world rewards are not retroactively confiscated; recovery is charged to the originating player. Old recovery flags created before schema0098 remain review-only because previously discarded amounts cannot always be reconstructed safely. New balance-backed item notices auto-close once all outstanding balances are repaid; unauthorized actions still cannot spend or gift missing stock. Word Find now replays saved letter inputs after zero-quantity, SKU-change and deleted-record corrections, rebuilding the current word/revealed positions/solved count and adjusting solve points, boss damage and source rewards without random rerolls or duplicate reversals. Legacy key-use history resolves from its recorded source; irrecoverably missing source history stops the event for retry/review instead of guessing. Pallet Pirate now rechecks the original warehouse day/round: losing all qualifying scored units removes daily XP, counter-damage and raid progress; another surviving qualifying record keeps it, and restoring work restores the original amounts once even if settings/assignment later changed. Existing game-enabled/admin permissions and queue retry rules apply. Check Audit Ledger โ†’ Points Ledger/Integrity Flags if a correction fails; retry a failed event only after resolving the underlying problem. Browser walkthrough completed with game ON in a disposable database: all 12 Hub tabs, PIN unlock, one-time daily box, scanner trophy chip/HUD, collapse/focus retention and 390px station/Hub layout pass. This does not enable the production game or replace the ownerโ€™s operational launch decision.

Command Center Player Progress

Player Progress (locally verified 2026-10-05): open Warehouse Legends โ†’ Command Center โ†’ Player Progress (admin/legends.php#progress). Requires legends.command.view and legends.players.view; the tab and detail API both enforce access. Search by name, rank or status, then View progress. All registered preppers are included, even inactive/excluded or without a game profile. AI Test Prepper is synthetic and does not appear. Profile & Stats shows identity/status, rank, level, XP to next level, coin balance, Clean Run, saved momentum, PIN set/lock status, current-round points/damage, warehouse-day points/XP/scored units, lifetime net ledger totals, undeleted warehouse records/units, current season XP/tier when available, Word Find solved count and Pallet Pirate designation. Stored momentum is historical and may have expired. Today is grounded in the ledger warehouse-day metadata; lifetime sums exclude held entries and retain signed reversals. Warehouse totals use undeleted inventory records and differ from scored units. Seasons follow the existing Game Hub date boundaries. Tracks & Goals, Quests, Badges, Items & Abilities, Roles, Kiosk Claims, Mission Reports and Ledger History show saved rows in separate sections. Progress includes historical period keys and internal metric counters where no named definition exists; definitions with no saved player progress are not listed. Histories paginate 50 rows with Previous/Next; Refresh profile reloads the current section, and roster Refresh reloads the page. Timestamps are UTC. PIN secrets, puzzle answers and private ledger multiplier context are never exposed. This is read-only: no impersonation, awards, resets, PIN changes or profile creation. Use existing Players/Audit tools for permitted changes. Isolated query/held-total/pagination/exclusion/no-write/permission tests and PHP/JavaScript syntax pass; browser/theme acceptance remains pending. No schema or scoring behavior changes.

Completion audit 2026-10-05: the current folder passes 202 engine, 33 daily, 19 notification and 65 player checks (319 total). Special-role coverage verifies Mind Reader, Quality Guardian and Misfit Medic. Game Hub, trophy navigation chip and configured station HUD are implemented; game-enabled owner/browser walkthrough is still required. Full automatic reward undo is not complete: spent coins and consumed/transferred items produce supervisor recovery flags, Word Find edit/delete reconstruction remains missing, and Pallet Pirate retains its earned daily grant after warehouse correction. Existing reconciliation covers many other rewards, but passing tests do not close these remaining paths. No gameplay or enablement changes were made during this audit.

Warehouse Legends live previews

Warehouse Legends live previews (local implementation, 2026-10-05): use the eye icon beside settings or editor fields, or in content-table actions. The preview shows current saved content or unsaved form values, icons, descriptions, colors, selections and field guidance. For an editable single field, adjust the value inside the preview to update both the preview and the unsaved form immediately. Close with X or Escape; use the original Save button to apply changes. View-only fields remain read-only. Supply Run previews summarize quantity, catalog entry and XP; Power Hour previews show a 100-unit multiplier example before other rules/limits; Pallet Pirate previews summarize designation and daily XP/team counter-damage. These are local illustrations, not an execution of the scoring engine or a promise of awards. Actual results require enabled rules, eligibility and live game state. Existing page/view/manage permissions still apply; no preview API or game writes. File imports and secret accepted mystery answers are excluded. AI generation and live player/ledger simulation are outside preview coverage. JavaScript/PHP syntax checks pass; live browser and all-theme acceptance remain pending.

Pallet Pirate assignment

Verified locally 2026-10-05: open Warehouse Legends โ†’ Side Missions โ†’ Mission Settings (admin/legends-missions.php#settings). Viewing requires legends.missions.view; saving requires legends.missions.manage. Choose a prepper in Pallet Pirate, set Pallet Pirate XP and damage, then Save side mission settings. None disables the designation. The assignment stays until an admin changes it; Daily Roles and Game Hub display it. With the game enabled and an active round, the selected active, non-excluded prepper earns XP and one pirate_raids progress on their first scored scan each warehouse day. Damage records team counter-attack damage, not damage dealt to the boss. Repeated scans and job retries do not grant another bonus for the same prepper, round and day. Changing the assignment can grant the new holder their own daily bonus. Amounts are saved when earned; later settings edits do not rewrite them. A subsequent correction removes the daily grant if all qualifying work for that day/round is lost; restoration re-earns the original amounts once. If missing, check designation, game/round status, exclusion and whether the scan scored or was held. Isolated scoring/replay tests pass; live browser acceptance remains pending. This change does not enable the game.

Side Missions: Prep List and Supply Run Catalog

Productivity SKU Prep List picker, locally verified 2026-10-05: open Warehouse Legends โ†’ Side Missions โ†’ Productivity SKUs (admin/legends-missions.php#victims). With legends.missions.manage, choose Load Prep List, search FNSKU/merchant SKU/ASIN/item/list name, select an item, set Bonus points (1โ€“1000), then Assign selected SKU. Only positive remaining quantities are offered; the server rechecks the selection against the shared Prep List snapshot and blocks missing/tampered selections and duplicate open targets. At most 100 search results appear at a time; refine search for more. The source list is shown on the assigned target. Loading uses the existing GRTC Prep List connection/cache; an unavailable list requires Operations โ†’ Prep List troubleshooting. Existing linked SKUs use the canonical local identity; new identities resolve through the existing SKU resolver. Assignment does not remove Prep List quantity or award points; the existing verified-record scoring flow remains responsible for claims. View requires legends.missions.view; manual code entry is replaced by the picker.

Supply Run Catalog, locally verified 2026-10-05: open Warehouse Legends โ†’ Side Missions โ†’ Supply Run Catalog (admin/legends-missions.php#supply_catalog). With legends.missions.manage, Add, Edit, switch On/Off, or Delete unused entries using Code, Name, Description, Icon and Sort order. This catalog is independent of Operations โ†’ Supply Catalog. In Supply Runs, Post a supply run chooses an enabled entry from the game catalog, quantity (1โ€“999) and XP reward (0โ€“10,000). Disabled entries cannot create new runs; existing runs and reports keep their catalog references. Referenced entries cannot be deleted: switch them off instead. Schema0097 copies only Operations supplies already referenced by game runs into independent entries, preserving IDs/names/history; later Operations edits do not propagate. Legacy Import/Reset preserves the new game catalog. Game Hub โ†’ Missions and Reports to Review now read this catalog; PIN/claim/reviewer reward permissions remain unchanged. The game stays OFF pending owner launch approval.

Productivity Prep List cards updated 2026-10-05: Warehouse Legends โ†’ Side Missions โ†’ Productivity SKUs โ†’ Load Prep List now shows product thumbnails, list name/icon, quantity remaining, priority, hazmat, bagging, FNSKU/SKU/ASIN, UPC quantities, warehouse location, inventory and text notes when provided by the shared Prep List. Missing images show No image. Search also matches bag names and UPCs. Select item highlights the choice; set Bonus points and Assign selected SKU. Cards stack on narrow screens and use the admin theme. Permissions, the first-100 search limit and server revalidation remain unchanged. Syntax and mission workflow checks pass; live browser/theme acceptance is pending.

Wrapped pallet reports & approval

Wrapped-pallet quantity approval workflow, verified locally 2026-10-05: Game Hub โ†’ Missions โ†’ Wrapped Pallets โ†’ Number of pallets wrapped (whole number 1โ€“999) โ†’ optional Notes โ†’ Report wrapped pallets. Each report belongs to its prepper and requests approval for that entire count. No pallet ID is required. Game ON, an unlocked Legends PIN and a non-excluded player are required. Admin bell alerts identify the prepper and count; authorized reviewers use Command Center โ†’ Approvals or Side Missions โ†’ Reports to Review (legends.missions.review) to Confirm or Deny the whole report. Counts and total reward snapshots appear in the review queue, Your reports and Player Progress. Confirm pays per-pallet XP and boss damage configured in Mission Settings multiplied by the reported count: at 1,000 XP/25 damage, 2 pallets pay 2,000 XP/50 damage and 4 pay 4,000 XP/100 damage. Submission grants nothing. Denial pays nothing. Damage applies only to the original still-active, unexpired round; late approval grants XP only. Retry keys prevent duplicate submission/rewards, and changed count or notes with the same key are rejected. Separate reports may have equal counts; admins verify the work and reject duplicate claims. Notes allow 300 characters. Game OFF/exclusion block confirmation. Schema0100 adds pallet_count defaulting older single-pallet reports to 1 without changing their stored reward totals. Next schema0101, seed0071. Curated knowledge updated in app/knowledge/game/01-warehouse-legends.md with manual/offline parity; quantity scaling, invalid counts, retries, denial and late-round checks pass locally. Hosted deployment remains unverified.

Report review modals updated and verified locally 2026-10-05: Command Center โ†’ Approvals and Side Missions โ†’ Reports to Review โ†’ Confirm or Deny opens a themed dialog naming the prepper, report kind, reported quantity/item, reward totals and notes. Confirm requests approval and configured rewards; Deny states no reward is paid. Cancel, Close or Escape leaves the report untouched. The decision is posted explicitly as confirm=1 or confirm=0 with the existing CSRF and legends.missions.review permission checks; the former native popup accidentally displayed the decision value and omitted it from the payload. After a successful review a result dialog states Report confirmed or Report denied; Done reloads the queue. Failures show a message without claiming success and allow retry. Existing report locking prevents duplicate rewards. No permission or scoring-rule change. Updated curated game knowledge and both manuals in parity. PHP/JavaScript and knowledge checks pass; hosted browser/theme acceptance remains pending.

Prepper toast placement and Game Hub navigation updated 2026-10-05, verified in local source: station Legends event toasts start 48 pixels (about one typical toast height) below the top safe-area inset on desktop and phones. The toast layer is above navigation so the top bar cannot hide it. This moves the tray up 48 pixels from the earlier placement while retaining camera safe-area clearance. Notifications remain click-through and retain configured count, duration, quiet-mode and modal suppression. Game Hub top navigation wraps into a grid with at most five items per row; phones 600px and narrower use three columns, very narrow screens 340px and narrower use two. Long tab labels wrap, removing sideways tab scrolling. Open the prepper station and trigger a game event or use the authorized test bar to inspect placement; open Legends and choose any tab to verify wrapped navigation. No permission, reward or setting-value change. Shared curated game knowledge and online/offline manuals updated in parity. Physical-phone and all-theme visual acceptance remain pending.

Legends AI Generator

AI Generator locally implemented 2026-10-05: open Warehouse Legends โ†’ Content Studio โ†’ AI Generator tab (admin/legends-studio.php#ai). Requires legends.studio.use, legends.studio.ai and help.live.view. Choose one to four content types, request one to eight drafts, enter a brief (5 characters minimum, 3,000 bytes maximum), then Generate drafts. Uses the existing configured Live Help/Iron Bot bridge; when disconnected, configure the connection before generating. My recent requests displays only your latest 15 requests; waiting/generating requests refresh every eight seconds, or choose Refresh requests. Your typed form is retained during background refresh. Failed jobs show an LH reference; check connection/Error Logs and submit again. Parser errors, missing draft blocks and invalid field checks are displayed. Expand each draft to inspect its fields and choose Review in Content Studio. Approval is separate under Content Studio โ†’ Drafts and requires legends.studio.approve; approval adds content switched off unless the reviewer chooses switch on. Generation does not publish, change players or enable the game. Kiosk drafts are in-game only, with no gift-card value. Repeated submission of the same form token in the same session does not queue twice. Callback and draft writes are transactional and retry-safe. No new migrations. PHP/JavaScript syntax, isolated help/draft workflow and private request-history checks pass; live Iron Bot/browser acceptance remains outstanding.

AI Generator tab update, locally verified 2026-10-05: open Warehouse Legends โ†’ Content Studio โ†’ AI Generator tab (admin/legends-studio.php#ai). It uses the shared admin cards, themed rounded fields, content-choice cards and action buttons; content choices stack on mobile. The tab requires legends.studio.use, legends.studio.ai and help.live.view. Generate drafts submits to the protected admin/legends-ai.php controller and returns to the AI tab, including on validation errors with the entered brief/count/types retained. Old direct page links redirect to this tab. Private request history refreshes while the tab is visible; hidden-tab polling pauses. Use the Drafts tab to review/approve; approval remains separate. Existing generation limits and workflow are unchanged. PHP/JavaScript syntax, isolated workflow and integrated panel render checks pass; live browser/bridge acceptance remains pending.

AI Generator coverage and eye previews updated 2026-10-05: Warehouse Legends โ†’ Content Studio โ†’ AI Generator supports all 19 draftable content types, including Supply Run Catalog entries (independent of Operations supplies). Scoring rules remain deliberately excluded; settings, live missions/assignments, player records and real gift cards remain manual. Existing limits remain one to four selected types and one to eight drafts. Preview request shows the selected types, count and brief before Generate drafts; field eyes show entered values and allow permitted unsaved edits. My recent requests โ†’ expand a draft โ†’ Preview draft shows its complete payload, name/icon/description and status/validation context. Content Studio โ†’ Drafts โ†’ Preview shows waiting and recently approved payloads, including every field, before separate approval actions. Preview cannot validate by executing the game, publish content, grant rewards or bypass permissions. Existing studio/AI/help view and draft approval permissions apply. PHP/JavaScript syntax and existing isolated AI workflow checks pass; live bridge/browser acceptance remains pending.

AI Test Prepper sandbox (implemented locally 2026-10-05): Content Studio โ†’ AI Generator identifies AI Test Prepper as the dedicated synthetic test name. It has no preppers/wl_players record or live prepper ID and therefore cannot enter scoring, team totals, leaderboards, role pools, stock records or reward ledgers. No account or PIN is created. Bridge instructions ask the AI to explain sample input, prerequisites, expected outcome and a boundary/non-eligible case per draft using this name, without claiming live tests passed. My recent requests โ†’ expand draft โ†’ Preview draft, or Content Studio โ†’ Drafts โ†’ Preview, shows AI Test Prepper and an adjustable Sample progress / level / effect base. Pure local calculations cover progress threshold counts and specified XP/quest coins, metric item rules, simple item/ability effects, rank/tier thresholds and event multipliers before caps. Other content gets a visual/configuration preview; schedules, cooldowns, eligibility, prior awards and the full live engine are not simulated. Results are illustrative and no rewards are granted. The sandbox never calls an action API, stores results or changes the draft; approval remains separate. Existing view/AI/help/approval permissions remain unchanged. Node boundary/no-mutation tests and isolated Live Help checks pass; live browser/bridge acceptance remains pending.

AI Generator bridge repair, verified locally 2026-10-05: Content Studio โ†’ AI Generator requires legends.studio.ai and help.live.view, an enabled Live Help connection and a real restricted OpenClaw agent on the Windows bridge PC. The canned support fallback cannot generate drafts. Set OPENCLAW_PATH to the installed openclaw.mjs file in the bridge process environment, then stop and restart the bridge from scripts/stop-bridge.ps1 and scripts/start-bridge.bat in the matching application folder. Submit the selected content types, count and brief with Generate drafts. Draft jobs preserve their schema instructions and brief within the prompt limit and extract only assistant text from CLI JSON; invalid output, missing AI backend and timeouts produce Failed with an LH reference, rather than a successful support answer. Complete requires at least one saved review draft; fewer than requested or validation warnings still require review. Older completed requests with no drafts display Failed. After repairing the connection, submit the original brief again; Request #19 is not automatically replayed. Drafts remain unpublished until separate approval. Check Admin Tools โ†’ Error Logs โ†’ Live Help bridge errors for backend/response failures. Local protocol and callback tests pass; real Iron Bot generation remains unverified until the installed AI executable is configured on the bot PC.

Live bridge routing verified 2026-10-05: scripts use only https://krisdkent.net/ktools/; bridge API is /ktools/api/live-help-bridge.php and knowledge uses action=knowledge with scope=game, system or all and q. Retired URL overrides and fallback hosts cannot receive the shared bearer. No bridge scheduled tasks were found on this PC. Local filesystem ktools4 paths and existing conversation session keys remain valid identifiers. Restart the Windows bridge after installing repaired scripts. Live hosting configuration has not been inspected or patched by this task.

Iron Bot executable configuration updated 2026-10-05: the bridge defaults to C:\Users\mail\AppData\Roaming\npm\node_modules\openclaw\openclaw.mjs through C:\Program Files\nodejs\node.exe. It invokes agent --agent ktools-help --session-key --message --json --timeout 120 with an argument array and no shell. Other agent IDs are rejected. OPENCLAW_PATH may override the executable location on the bot PC. Install these scripts on Iron Botโ€™s PC and restart scripts/start-bridge.bat after stopping the existing worker. Then use Content Studio โ†’ AI Generator โ†’ Generate drafts and confirm review drafts appear. Existing AI/Live Help permissions and separate approval still apply. The supplied executable does not exist on this workspace PC, so real generation is not verified here. Missing executable requests fail with setup guidance. Keys and claim tokens are neither logged nor included in diagnostics; CLI stderr is drained without retaining or logging it. Live hosting config was not patched.

Draft-format repair verified locally 2026-10-05: Iron Bot Request #21 returned single-quoted dictionaries, which are not JSON; descriptions alone do not make a review draft. AI Generator instructions now require double-quoted strict JSON with type and fields objects and provide a complete quest example. Updated Windows bridge scripts make one format-repair attempt for invalid draft blocks: initial OpenClaw timeout 120 seconds, repair timeout 60 seconds, both target only ktools-help. No further retries occur; persistent invalid output fails without publication. Install scripts/live-help-bridge-daemon.mjs together with scripts/live-help-job.mjs on Iron Botโ€™s PC and restart its worker. Upload app/domain/Legends/AiDrafts.php and app/templates/legends-ai-requests.php to the matching live website release. Content Studio โ†’ AI Generator โ†’ My recent requests โ†’ View AI response exposes the original escaped response only to the authorized request viewer when errors exist. JSON syntax errors and missing type/fields structure now have distinct messages. Resubmit the original three-daily-quests brief with Generate drafts after deploying the fix; old Request #21 is not automatically replayed. Existing studio/AI/help permissions and separate approval apply. Format repair keeps prompts bounded, never evaluates malformed dictionaries, and does not log response content, keys or claim tokens. Local malformed-response, successful one-repair, two-invalid-response, launch-failure and three-valid-review-draft tests pass. Real Iron Bot/live-hosting deployment remains unverified.

Drafts tab refresh fixed, verified locally 2026-10-05: Content Studio โ†’ AI Generator saves generated rows immediately as review drafts; the Drafts tab now reloads its queue whenever opened instead of keeping the page-load snapshot. Review in Content Studio opens the Drafts tab even when only the URL fragment changes. Drafts waiting โ†’ Refresh drafts reloads waiting and recently approved entries without leaving the page. The protected read-only GET admin/legends-studio.php?drafts=1 uses the same legends.studio.view permission as Content Studio; approval buttons still require legends.studio.approve. Refresh uses no browser cache, times out after 15 seconds and retains the existing list with an error if connectivity or sign-in fails. Lists retain the existing 200-row limit per status. No generation, replay, approval or publication occurs during refresh. If saved drafts still do not appear, reload the page, verify the website has the matching updated shell/script/panel files, and check the draft status and deployment database. No migration. PHP/JavaScript syntax and the isolated three-draft callback tests pass; live browser/deployment acceptance remains pending.

Round clue & answer generator

Round Scheduler clue-and-answer generator added, verified locally 2026-10-05: Warehouse Legends โ†’ Rounds & Bosses โ†’ Rounds โ†’ Plan a round (or Edit a planned round) โ†’ Generate clue pack fills Mystery title, Accepted answers and five progressive clues. The local warehouse library offers pallet, scanner, label printer, prep table and shipping scale mysteries, based on the old scheduler workflow. Regenerate to choose another pack; existing entered mystery fields require confirmation before replacement. The selected week, boss, HP and season remain unchanged. Review/edit all clues and answers, then Save round separately. Generation does not create, start, publish or modify a round, reveal existing hashed answers, award rewards or contact Iron Bot/external word services. It works without AI connectivity. Existing legends.rounds.manage permission and POST CSRF checks protect the round_clues endpoint. Saved answers retain existing normalization and hashing; when editing, empty answers retain current hashes until explicit new answers are saved. Clues retain normal points-per-clue unlock rules and the five-clue limit. If generation fails, a message appears beside the button and manual entry remains available. Five-packs/five-clues/non-repeated-consecutive-answer and syntax checks pass; live browser/hosting acceptance remains pending. No migration or scoring changes.

Round clue library expanded, verified locally 2026-10-05: Generate clue pack now selects from 35 warehouse mysteries with five clues each, including packing materials, tools, safety equipment, transport equipment and storage locations. The generator tracks packs already offered in the signed-in admin session and selects randomly among unused packs; all 35 are offered before a new cycle begins. The new cycle avoids repeating the immediately previous answer. Session expiry/sign-out resets this suggestion history; it is not a permanent record of previously scheduled rounds. Regeneration and existing overwrite confirmation still change only unsaved mystery title, answers and clues; Save round applies them separately. Existing rounds.manage and CSRF protection remain. Nothing is published or awarded by generation, and no AI/network connection is required. The scheduler displays the library size and session-repeat behavior. Regression verifies 35 unique packs before repetition, five clue lines per pack, cycle reset and no immediate repeat. PHP/JavaScript syntax pass. No schema change; live deployment/browser acceptance pending. This supersedes the earlier five-pack library description.

Legends Icon Library picker

Warehouse Legends Icon Library picker added, verified locally 2026-10-05: editable icon/emoji fields throughout the shared content editors, Icon Library glyph editor and Pirate icon setting now offer Choose icon. Open it and search the library by name, code, tags or emoji; select a tile to fill the field, then save the normal form separately. Manual emoji entry remains available. The picker reloads the current library when opened, so imported entries become available without restarting. Content Studio โ†’ Icon Library adds/edits named emoji entries; Import / Export supports the icons content type through the existing JSON workflow. Use the existing import dry-run to validate first, then import successfully to make entries available; AI-generated icon drafts require separate approval. This library stores emoji glyphs, not uploaded image files or arbitrary HTML. The read-only icon_choices API requires a signed-in user with a Warehouse Legends page view permission; it exposes only icon_code, glyph, label and tags. Managing/importing the library and saving content retain their existing permissions and CSRF checks. Disabled/read-only fields cannot be changed with the picker. Selection fires live preview updates without publishing content or awarding rewards. Long glyphs exceeding a field limit are unavailable for that field. Empty results, no library entries and connection/sign-in failures show guidance; typing still works. PHP/JavaScript syntax checks pass; live browser/theme acceptance remains pending. No schema changes.

AI icon encoding repair verified locally 2026-10-05: Request #29 glyph strings matched UTF-8 bytes misdecoded as Windows CP437, not new image icons. Recognizable lossless CP437 corruption in icon/glyph fields is normalized to the original Unicode emoji during draft ingestion, existing draft previews and content validation on approval/save. Other text is not rewritten. Unrecoverable recognized icon corruption or replacement characters block approval with an encoding message. No draft is automatically approved or published. Content Studio โ†’ Drafts โ†’ Preview now shows a large actual glyph above the name so reviewers can inspect it before approval. After deploying the updated Content/AiDrafts/Ops/IconGlyph files and preview JavaScript/CSS, refresh the Drafts tab; the eight affected Request #29 glyphs can be previewed without regenerating them. Approval saves the same normalized glyph shown in preview. Existing permissions and separate approval apply. AI protocol asks for JSON Unicode escapes, for example shopping cart as backslash-uD83D backslash-uDED2, to avoid non-ASCII console transport corruption. Iron Botโ€™s worker must preserve UTF-8 stdout and callback JSON; a PowerShell wrapper must not decode UTF-8 output using OEM CP437. The supplied Node worker reads stdout as UTF-8 without a shell. Eight real supplied glyph patterns, already-correct emoji, Unicode escape decoding and unrecoverable corruption rejection pass local tests. No schema or live database repair; already-published corrupted library entries must be edited/saved separately. Real hosted/PC transport acceptance remains pending.

Legends Core Settings selections

Core Settings prepper checklist display fixed, verified locally 2026-10-05: Warehouse Legends โ†’ Rules & Scoring โ†’ Core Settings โ†’ Who sees the test bar retains checked names after Save core settings and reload. The saved comma-separated prepper IDs are compared as text against numeric option keys. This also fixes other prepper multiselect settings in the shared admin shell. Existing saved selections remain intact; reload the updated page to see them, and do not resave an apparently empty older page. To change recipients, check/uncheck names and save; unchecking all saves an empty list. Viewing/editing still requires the existing settings view/manage permissions, and the test bar only appears while its separate switch is on. Selected inactive preppers remain listed with the inactive label. No schema, game scoring or visibility-rule changes. Actual template regression verifies multiple numeric IDs remain checked, other names remain unchecked, and an empty list checks none. Live hosting deployment remains unverified.

Prepper Labels

Open the prepper navigation โ†’ Labels (index.php?view=labels). Quantity, Divider every N labels, Printer and Your name use the same rounded, themed fields as other prepper stations; narrow screens stack the quantity/divider fields. Enter or scan SKU / FNSKU, choose 1โ€“500 labels, optional divider interval and printer, then Preview Label โ†’ Send to Print Queue. Your name is optional. A configured printer and running Print Station are required to print; offline printers leave jobs waiting. Printer status appears below the selector. Queue status uses theme colors and text labels. This styling update does not change label output or printing limits. Local source and PHP validation: 2026-10-05; browser verification across all 16 themes remains outstanding.

Access requests

The sign-in page includes a Return to prepper station button that opens the public station. Access request fields are stacked vertically, with each label above its input. Account request bell alerts (2026-10-05): each new pending request alerts active admin-role reviewers holding users.view, users.update and notifications.account_request.receive. Click the alert to open Users & permissions โ†’ Review request. Settings โ†’ Notification preferences โ†’ Account access requests controls this alert; individual Deny on its receiver permission also suppresses delivery. Managers cannot receive these approval alerts. The migration adds one alert per already-pending account to eligible reviewers; rerunning the backfill does not duplicate existing alerts, including read alerts. No email is sent. Refresh the admin page after a request; check notification preferences and receiver/page/update permissions if no alert appears. Approval review update, verified locally 2026-10-05: Review request opens one editable approval form with Username, Email, Default order type, Default home page, Role and individual permissions. Edit these before selecting Approve and activate account; profile changes, role, permission overrides and activation save in one transaction. Validation failures retain entered details for correction and keep the account pending. Active status is set only by approval. The requested password is retained; password resets are available after approval with users.password.reset. Permission section tabs, locally verified 2026-10-05: Users & permissions โ†’ Review request and Edit user โ†’ Individual permissions group the permission catalog into tabs by site section, with a count on each tab. Select a tab to review Inherit role, Allow or Deny choices. Switching tabs preserves all choices; Approve and activate account or Save individual permissions saves selections from every tab, including hidden sections. Keyboard users can move between tabs with Left/Right arrows, Home and End. Tabs wrap on smaller screens. Without JavaScript, the full permission list remains available. Existing approval and permission requirements still apply. Account removal styling, updated 2026-10-05: Users & permissions displays Remove as a compact outlined danger button aligned with Edit. Selecting Remove still opens the username-confirmation dialog and requires users.delete. Access requests (2026-10-05): on admin/login.php choose Request access, enter desired username (2-80 characters), email, Confirm email and desired password (12-72 characters), then Submit access request. Pending accounts cannot sign in. Passwords are hashed. Limit: five valid submissions per client per 15 minutes. In Admin Tools โ†’ Users & permissions (users.view), pending accounts show Pending. An administrator with users.update chooses Review request, selects a role and Inherit role / Allow / Deny for each permission, then Approve and activate account. Approval saves role and permissions together. Other roles cannot approve; ordinary edits cannot activate pending accounts. Remove discards a request with users.delete and username confirmation. Email confirmation checks matching input only; no email is sent. If submission fails, check username availability, matching email and password length; wait 15 minutes after repeated attempts.

๐ŸŒ KTools 4.0 Architecture & System Overview Version 4.0

KTools 4.0 is the warehouse inventory, prep verification, packaging tracking, and operational control platform for GRTC. It unifies physical floor scanning stations with executive management pipelines in real time.

๐Ÿ’ก
Core Architecture: Built with zero-downtime database migrations (MigrationRunner::autoApply), strict domain models, and high-performance AJAX endpoints tailored for physical hardware barcode scanners.
  • Floor Preppers: High-speed FNSKU scanning, case pack templates, bag sizes, master carton tracking, and instant conflict detection.
  • Management & Admin: 2D staging, problem resolution, active Amazon orders, shipments, attendance approvals, and supply replenishment.
  • External Automations: Bi-directional sync with the live GRTC REST API, Slack webhooks for critical floor alerts, and audit trails.
๐Ÿ”„ Warehouse Inventory Data Flow Lifecycle

Every piece of inventory prepped on the floor follows a strictly auditable pipeline from physical receipt to final carrier dispatch:

1. FNSKU Scan / Lookup โ†’ 2. Case Pack or Individual โ†’ 3. Box Inventory Saved โ†’ 4. Review on Send to 2D โ†’ 5. Staged on 2D Draft โ†’ 6. Sent Item Confirmed โ†’ 7. Order / Shipment Dispatched
  • Items with physical damage or missing components are routed to Damage Out.
  • Uncataloged, orphan, or mismatched cartons are routed to Misfits for investigation.
  • Boxes requiring admin review before 2D entry are flagged as Problem Items.
๐Ÿ“ฒ Progressive Web App (PWA) & Scanner Gun Setup Hardware

KTools 4.0 is fully PWA-certified with an offline-ready service worker (service-worker.js) and standalone window mode.

  • Installing on Zebra / Android Scanner Guns: Tap the ๐Ÿ“ฒ Install App button in the workstation header or Chrome menu > Install App. The app opens in dedicated full-screen mode without address bars.
  • Installing on iPad / iPhone: Tap the Safari Share button โŽ‹ > Add to Home Screen โŠž.
  • Hardware Scanner Focus: Input fields use auto-select on click/tap, keeping the virtual keyboard hidden on mobile scan guns while hardware lasers pump barcode strings directly into focus.
๐Ÿ“ถ Connection Lost & "Not saved" Warnings Worker

Added 2026-10-07 (verified locally in headless Chrome; physical-station acceptance pending upload). Every prepper station page (Add Record, Misfits, Damage Out, Pick List, Supply, Days Off, Message, Edit) watches its connection so nothing looks saved when it wasn't.

  • Orange bar, "No connection, saving is paused": the station lost its connection. Stop scanning new items. The bar checks again every 5 seconds and can't be dismissed while the connection is down.
  • Red bar, "Not saved": you pressed Save (or Confirm & Submit) while offline. Nothing was sent, no success sound plays, and your entries stay on screen. Press Save again once the bar turns green.
  • Red bar, "Save not confirmed" or "server had a problem": a background save (Misfits batch, Damage Out, Pick List) failed partway or the server returned an error. It may or may not have saved, so check Search before saving again to avoid a double entry.
  • Green bar, "Connection is back": saving works again. If it says your last save did NOT go through, press Save again. Dismiss it with โœ•.
  • Full red "โŒ Not saved" page: the connection dropped in the middle of a save. Tap Back to the form (entries are usually still there), check Search, then save again.
  • Saves are never retried automatically, because repeating a save could create duplicate records. Pages may still open offline from the app cache, but no save goes through until the connection is back.

Files: assets/save-guard.js (bar and save blocking) and service-worker.js (the Not saved page; admin pages are not affected). No permissions, settings or schema.

Each offline period and blocked save is also reported to Admin Tools โ†’ Device Usage once the station reconnects (2026-10-07).

๐Ÿ“ฆ Prep Form โ€” Scan-to-Save Core Workflow Worker

The primary workstation used by preppers at tables to record prepped units into warehouse inventory:

  • FNSKU Hardware Input: Hardware scanner lasers or manual FNSKU/UPC entry instantly query local records and the GRTC API.
  • Camera Scanner: Mobile stations without hardware guns can tap the camera button (๐Ÿ“ธ) to scan barcodes with Quagga.js.
  • Duplicate Active Box Warning: If the same FNSKU is already in the active Box Inventory queue, KTools alerts the prepper with a warning banner, direct edit link, and duplicate override confirmation.
  • Order Type Routing: Choose between FBA: Amazon, FBA: Hazmat, AWD, WFS, eBay, and Pre-Prep.
โ˜‘๏ธ Case Pack Mode vs. Individual Mode Packing
  • Case Pack Mode: Loads saved packaging templates for the SKU (units per box, box weight, length, width, height). The prepper enters the number of boxes, and total quantity is calculated automatically.
  • Individual Mode: Used when packing loose, irregular, or non-template quantities. Preppers enter total units and box count independently.
  • Template Creation: When saving an uncataloged case pack configuration, preppers can save it as a new reusable template for all future preppers.
๐Ÿ“ฆ Prep Listed Supplies & Master Carton Matching Supplies

KTools 4.0 tracks physical warehouse supply consumption directly from prep form entries:

  • Selected Packaging Supply: Dropdown lists active prep-listed materials (bubble bags, poly bags, tape rolls, custom mailers).
  • Master Carton Auto-Matching: Box dimensions (L ร— W ร— H) entered on the prep form are automatically compared against master case specifications in the supply catalog. Matching master cartons are logged automatically based on the box count.
๐Ÿ“ฆ Back in Box Carton Reuse Carton Reuse

When items arrive in a manufacturer carton and are placed back into that exact same carton after prep:

  • Check the "Back in Box" checkbox on the prep form.
  • This prevents KTools from deducting a new master carton from the supply catalog, maintaining 100% accurate physical supply inventory.
โš ๏ธ Hazmat Flags, Expiration Dates & Gated Items Compliance
  • Hazmat Mismatch Detection: Submitting an FBA: Hazmat box when local SKU Info does not reflect hazmat automatically adds the item to the SKU Hazmat Review queue and logs an audit notification.
  • Mandatory Expiration Tracking: Food, supplements, and perishables require an expiration date. Once flagged, subsequent prep submissions require a valid future date before saving.
  • Gated Product Warnings: Gated items display an alert banner with pulse highlights to prompt preppers to verify brand authorization.
๐Ÿ›๏ธ Bagger Bag Sizes & GRTC Auto-Sync Bag Sizes

For items prepped using automated bagging equipment:

  • Preppers select the physical bag dimension (e.g. 6x9, 8x10, 10x13, 14x20).
  • Saved bag sizes are committed to SKU metadata and automatically synchronized to the GRTC backend via GrtcBagSizeSync.
๐Ÿ”Š Confirmation Modal & Audio Feedback Audio & Confirm
  • Pre-Submit Confirmation: Displays a high-contrast modal summarizing SKU, units per box, total units, box count, and prepper name before committing to the database.
  • Synthesized Web Audio: KTools features a zero-asset Web Audio API tone synthesizer (ScannerAudio):
    • Crisp double-beep on valid barcode scan (1760Hz & 2349Hz).
    • Warning chime on hazmat or duplicate detection.
    • Affirmative triad chime on successful save.
    • Low buzz on invalid or uncataloged barcodes.
โš ๏ธ Misfits Workstation & Rapid Batch Scanner New in 4.0

Tracks uncataloged, mismatched, or found inventory that does not match active warehouse purchase orders:

  • Mode 1: Single Item Entry: Barcode scan with instant catalog lookup, candidate listings grid, category selector, stepper quantity, shelf/bay location, and camera photo capture fallback.
  • Mode 2: โšก Rapid Batch Scanner: High-speed continuous barcode scanning with live session counters, duplicate item warnings, and batch summary log.
  • Warehouse Misfits Directory: Real-time filterable directory showing open units, locations, and resolution statuses.

Photo size (2026-10-07): a photo taken when adding a misfit is resized to about 1600 px (around 300 KB instead of 2โ€“4 MB) and turned upright automatically. Lists show a small thumbnail; tapping it opens the full photo. Older photos are shrunk the first time their thumbnail is shown.

Misfit scan bell alerts implemented and verified locally 2026-10-05: after saving a new open item at Misfits, adding a positive quantity to an existing item with quick scan, or committing Rapid Batch, active authorized administrators receive a Categorized Misfits notification for each saved item. Merely looking up a barcode, reducing quantity, resolving an item or rolling back a transaction does not send a scan alert. Alerts identify the prepper, quantity added, item/UPC, category, location and misfit ID; open the bell entry to visit Operations โ†’ Categorized Misfits. Recipients need both misfits.view and notifications.categorized_misfit.receive, and Settings โ†’ Notification preferences โ†’ Categorized Misfits must remain enabled. Seed0069 grants the new receive permission to admins and roles already viewing Misfits and carries existing per-user view grants/denials without overwriting receive overrides. The existing notification type and saved opt-outs are preserved. Existing external API alerts retain their documented misfits.view routing and hourly deduplication. Station scan alerts are per successful save, without a time-based suppression window; repeated successful additions are separate alerts. Notification failures are logged without rejecting a saved scan. No historical scan backfill or Slack/email delivery is added. If no bell alert appears after deploying, open an admin page to apply seed0069, check Role Manager/User permission overrides, notification preferences and active account status, then save one test misfit and inspect the bell; check PHP Error Logs for notification errors. Isolated recipient, preference, new-save, quick-add, batch and rollback checks pass; hosted/browser acceptance remains pending.

No-result misfit shortcut implemented locally 2026-10-06: Prepper Search and Prep List show Report as misfit when a nonempty search returns no matching results. Click it to open misfits.php in Single Item Entry with the searched SKU/barcode prefilled in UPC / Barcode Scan. The original casing and leading zeros are preserved, URL-encoded and HTML-escaped; the transferred value is limited to 250 characters. Empty searches do not show the shortcut. Search may also match titles or have restrictive filters: check filters and correct the prefilled code before reporting. This shortcut does not prove an item is absent from the catalog, perform a lookup, save a record or submit a report. Review the code, use Enter for the existing lookup if needed, complete the usual description, quantity, location/category and photo requirements, then save using the existing misfit workflow and access rules. No schema or permission changes. Local PHP/JavaScript and knowledge checks pass; hosted/mobile acceptance remains pending.

๐Ÿ—‘๏ธ Damage Out Workstation New in 4.0

Records inventory damaged during transit, handling, or prepping:

  • Barcode Auto-Lookup: Automatically resolves product titles, thumbnails, and identifiers from scanned barcodes.
  • Damage Classifications: Log specific reason codes (Crushed Box, Torn Packaging, Broken Seal, Liquid Leak, Defective Unit, Expired).
  • Dispositions: Assign warehouse disposition (Vendor Return, Destroy / Discard, Liquidate, Recycled, Salvage).
  • Photo Evidence: Upload or snap photo verification directly from phone or workstation camera.

Photo size (2026-10-07): damage photos are resized to about 1600 px when saved and turned upright; the queue and Today lists show small thumbnails, and tapping one opens the full photo.

๐Ÿ›’ Pick List Workstation Worker

Guides floor pickers to pull inventory from warehouse shelves for prepping tables:

  • Location Sorting: Groups picking items by bay, shelf, or bin number to minimize walking distances.
  • Item Checkboxes: Pickers check off items as they place them on prep carts.
  • Printable Pick Sheet: Print clean paper pick sheets for bulk pulling.

Show 50 more (2026-10-07): the grid shows the first 50 matching items; tap Show 50 more under the list for the next 50 (the button says how many are not shown). Search, Disposition, Category and Pick Status still search every item, and changing any of them starts again at 50. Picking or putting back an item keeps your place. Item photos load as small thumbnails; tapping one still opens the full photo.

๐Ÿ“ฆ Supply Requests Workstation Worker

Enables floor workers to request restocking of boxes, tape, poly bags, and packaging gear:

  • Hardware Scanner Field: Scan supply UPC barcodes directly to auto-select catalog items.
  • Quantity Stepper: Tap โˆ’ and + buttons for rapid quantity changes.
  • Duplicate Request Guard: Warns preppers if an active request already exists for the same item to prevent double-ordering.
  • Full-Width Directory: Real-time directory table stacked underneath showing open, ordered, and received requests with priority badges.
๐Ÿ“… Days Off & Call In (Attendance) Worker

Self-service attendance reporting for preppers directly from the workstation:

  • Planned Day Off: Request scheduled future time off with start/end date and reason notes.
  • Call In: Automatically locked to today's date with read-only timestamping to prevent falsification.
  • Conflict Warnings: Informs the worker if team members have already requested the same date while still allowing submission.
  • History & Cancellation: Workers can review their submissions and withdraw pending requests before admin review.
๐Ÿ“ Live Prep List (GRTC Sync) Live Sync
  • Real-time Proxy: Fetches pending orders and quantities directly from GRTC without exposing external credentials to workers.
  • Priority Sorting: High-priority orders float to the top with colored urgency badges.
  • Bundle Breakdowns: Multi-pack and bundled listings display nested component parts, quantities, and UPCs.
  • Single-Item Printing: Tap ๐Ÿ–จ๏ธ on any item card to print a standalone prep sheet without printing the entire list.

No-result misfit shortcut implemented locally 2026-10-06: Prepper Search and Prep List show Report as misfit when a nonempty search returns no matching results. Click it to open misfits.php in Single Item Entry with the searched SKU/barcode prefilled in UPC / Barcode Scan. The original casing and leading zeros are preserved, URL-encoded and HTML-escaped; the transferred value is limited to 250 characters. Empty searches do not show the shortcut. Search may also match titles or have restrictive filters: check filters and correct the prefilled code before reporting. This shortcut does not prove an item is absent from the catalog, perform a lookup, save a record or submit a report. Review the code, use Enter for the existing lookup if needed, complete the usual description, quantity, location/category and photo requirements, then save using the existing misfit workflow and access rules. No schema or permission changes. Local PHP/JavaScript and knowledge checks pass; hosted/mobile acceptance remains pending.

Live Help

Live Help uses restricted Iron Bot agent ktools-help for read-only support. Open Help โ†’ Live Help and ask a question. Optional page name/path, SKU and error reference accompany your account and general help snippets; no record lookup or automatic admin actions occur. Each account sees only its own saved conversations. Waiting means the Windows bridge has not claimed the question; answering means it has. Failed questions may be sent again. Start a new conversation after 100 messages; limit 30 questions per hour. Do not include passwords, keys or personal information. The bridge must be running; server-only settings and a shared key enable it. The OpenClaw gateway stays private. History is preserved through legacy reset/import. Setup: docs/LIVE_HELP.md. Connection status also appears next to Send question. Check connection again retries loading. Requests time out after 15 seconds and retain your typed question. If website configuration is off or missing its bridge key, sending stays disabled and the status explains the missing setting. Configuring Iron Bot on its PC does not enable the website. Page context has help tips: hover over or focus the question-mark buttons or fields. Page name is the screen heading (for example On 2D Draft); page path is its admin filename (admin/on-2d-draft.php). A full URL is accepted but reduced to an existing admin filename without query values. SKU and ADM error reference are optional identifiers only: they do not fetch item records or logs. General questions can leave the default Live Help context unchanged. Live Help includes verified order-creation instructions: Orders โ†’ Active Orders โ†’ New Order; enter Order Name, choose Order Type, optional Notes, then Create Order. The New Order button requires orders.create. Send To 2D can assign completed rows to the new order. Answers are requested as plain text for the chat display. Live Help now uses shared system and game knowledge in app/knowledge plus the full online manual topic catalog. Each question receives relevant current excerpts so replies can explain prerequisites, detailed steps and troubleshooting. In-progress game features are labeled separately from verified behavior. This is static guidance, not live record access; undocumented questions require clarification. Every agent must update shared knowledge and both manuals when features or game rules change. Failed questions display an LH reference; accounts with Error Logs permission can use View error details. Error Logs has a Live Help bridge errors source covering authentication/configuration rejection, unclaimed questions, answer timeouts and reported bridge failures. Earlier failed questions appear as historical failures with the original cause unavailable. Keys, claim tokens and question text are not logged. The bot receives your question, account name/role, recent conversation history and general help snippets along with these clues.

Ask Iron Bot from the bottom dock (2026-10-07): on admin pages, the ๐Ÿค– button in the bottom dock (next to Team Chat) opens Iron Bot without leaving the page. It needs help.live.view and uses the same Live Help conversations and Windows worker as Admin โ†’ Live Help, so answers wait while the worker is offline (the dot on the button shows online, thinking or a new reply). The panel shows which page you are on; Optional clues lets you add a SKU or an error reference. Opening Iron Bot closes Team Chat and vice versa. It is read-only like Live Help: it explains, it never changes data.

๐Ÿ“ฌ Mailbox: GRTC Email & Worker MessagesAdmin

Admin โ†’ Mailbox โ†’ GRTC Email uses the same mailbox account as the old system. Folders show unread counts. Search sender, subject and message text, filter unread mail and page through results. Choose a message to read it below or beside the list; fullscreen and the reader layout controls help on smaller screens. Opening a message marks it read when you have email-management permission.

Select messages to mark read/unread, star/unstar, move to a folder or move to Trash. New folder creates a subfolder under the selected parent. Permanent Trash deletion is not offered. Incoming attachments download from the reader. Email previews block remote images and active content.

Compose, Reply, Reply all and Forward open a centered message dialog. Enter comma-separated To/CC addresses, a subject and message; review and confirm before Send email. Trailer Pickup fills the same Estes recipient, CC, quote and signature as the old template after you enter PRO number and sender name. Text forwarding does not attach original files. A retry of the same submitted message uses its send token to avoid a second delivery in the current session; if delivery succeeded but the Sent copy failed, do not resend.

Mailbox โ†’ Worker Messages lists messages from preppers with search, unread filtering, paging, full-message preview, read/unread controls and selected-message removal. My messages is the default. All administrators requires a separate permission. Removed messages retain a recovery snapshot under Data Audit & Restore. Global search includes worker messages addressed to your own account.

The email page requires PHP IMAP on the hosting server and SMTP access. Connection settings live in protected app/config/mail.php (copied from the old mail_config.php); the old installation is a read-only configuration fallback if that file is absent. Credentials are never displayed in the browser or stored in database backups. Email view, sending, management and viewing other administratorsโ€™ worker messages have separate permissions. Reading and changing email acts on the shared mailbox used by both versions.

๐Ÿ› ๏ธ Data Optimization & Data Audit / RestoreAdmin

Admin Tools โ†’ Data Optimization retains the original separate Orphan Row Finder and Possible Test Data scans. Select a table or scan all operational tables; set a maximum of 10โ€“500 results. Test terms are comma separated; product title fields are excluded. Review matching fields, row data and deletion mode before cleanup. Results have independent pagination.

Data Relationship Flow displays the current database schema, including tables outside cleanup scope. Click tables to expand columns, search for a table, zoom, drag to pan or use fullscreen. Focus a cleanup row to inspect its relationship values and matching related records. Arrows point toward parents.

Separate Damage Out and Misfit image galleries support previews, refresh, individual cleanup, select all eligible and bulk cleanup. Damage-out images linked to active records are protected. Images from deleted items must pass the selected grace period; misfit cleanup lists only unreferenced files. Removed images go to protected recovery storage.

Data Audit & Restore has table count tiles, Audit Trail and Restore Data tabs. Recoverable Data Audit shows actor, date, action and before/after values, including existing deleted rows without maintenance history. Attendance Workflow Audit shows the latest 80 request events. Restore Data groups records by table with independent pagination. Original IDs are preserved; attendance status is recovered from its deletion audit when available.

Cleanup requires a reason and confirmation, records a recoverable snapshot and blocks stale rows and referenced hard deletions. Restore dependencies first. Hard-deleted records without a snapshot require Backup & Restore. Separate permissions control viewing, cleanup and restoration. These pages act only on the current KTools 4 installation. Scans show at most 500 results; restore lists show up to 500 per table, and audit shows the newest 200 matches.

๐Ÿ  Admin Dashboard & Real-Time Queues Admin

The central command cockpit for warehouse operations managers:

  • Queue Meters: Live KPI counters for Active Boxes, Send to 2D, On 2D Draft, Problem Items, Active Orders, and Shipments.
  • Prep Notes Flag: When preppers log shortages or overages, the details indicator turns solid blue (๐Ÿ“) for immediate visual triaging.
  • Inline Box Inspection: Expand any row to inspect dimensions, weight, prepper name, packaging supplies, and audit timestamps.
Send To 2D product previews

Send To 2D and On 2D Draft product previews corrected locally 2026-10-06: hover or keyboard-focus the SKU to see its image and item name. Valid Amazon ASINs use SKU thumbnails; Walmart/non-ASIN items use their saved Walmart UPC or UPC thumbnail. Saved item descriptions provide a fallback name. Untitled records request a read-only, strict-match GRTC product preview on hover, including equivalent UPC padding, within four seconds; existing linked GRTC IDs remain protected. GET admin/send-to-2d-action.php?action=product_preview&id=<box> requires the corresponding page view permission and a current undeleted box on that page. GRTC switch/authentication remain enforced. Preview does not save metadata, alter quantities/status or award scores. Missing catalog matches, unavailable thumbnail files and connection failures may still show an unavailable image/name. Existing scan, edit and Complete actions are unchanged. Verification: PHP/JS and knowledge checks; hosted hover/mobile acceptance pending.

API note highlighting revised locally 2026-10-06: Send To 2D and On 2D Draft color the SKU text link red when any saved item note has an API source (api, api2 or API-prefixed workflow sources). The note icon uses its original plain styling. Internal-only notes retain the normal SKU link color; mixed API/internal notes use red. Deleting the last API note restores normal color after refresh. Existing note hover previews, note dialog, SKU copy and product preview controls remain. Accessible labels identify API notes, and red uses the theme rose variable. No permission, note content or scoring changes. Source/JavaScript and knowledge checks pass; hosted visual acceptance pending.

Send To 2D / On 2D Draft expanded item description restored locally 2026-10-06: choose Details beside a box to see Item followed by the saved product title (including FNSKUs), with saved record description as fallback. A separate Record description appears only if it differs from the product title. Missing both values displays Item name unavailable explicitly. Previously the details template rendered only inventory record item_description and omitted the product title already supplied by the repository. SKU, location, order/pack information, image hover, copy and action permissions are unchanged. Values remain HTML escaped. No lookup, scoring or database changes. JavaScript/PHP and knowledge checks pass; hosted visual acceptance pending.

Walmart UPC lookup

Walmart UPC lookup padding correction, verified locally against GRTC 2026-10-06: scanner and admin SKU lookups now retry equivalent leading-zero UPC/EAN/GTIN forms when the original 8โ€“14 digit code returns a successful empty GRTC search. Original code is searched first; retries share its existing timeout budget, preserve the GRTC on/off switch and authentication, and stop on transport failure. Exact identifier matching and linked GRTC SKU protection remain. Error logging does not disable lookup. Barcode lookup alone does not save prep work or grant rewards. Example: 0858050008374 resolves to the catalog UPC 858050008374, Blokees Transformers Classic Figure 07 Arcee. After deploying, retry the SKU lookup to refresh existing placeholders; this change does not bulk repair historical records. If still untitled, check GRTC switch, transport/authentication errors and the catalog identifier; an empty catalog search differs from a failed request. Hosted acceptance remains pending.

Walmart-only items found by UPC (2026-10-08): GRTC's search does not search Walmart UPCs, so an item that exists in GRTC only as a Walmart listing (for example 0687748833994, "2oz. Bottle Plastic Weld") used to show "Item name unavailable" on Send To 2D / On 2D Draft and did not link on the prepper scan page. KTools now keeps a small private index of every GRTC Walmart UPC and uses it when a numeric code finds nothing, then loads that item by its GRTC id. Leading zeros do not matter (UPC-A, EAN-13 and GTIN-14 spellings match). The index refreshes itself when a code is missing and it is more than 15 minutes old; that one lookup takes about 5 seconds longer. An item added to GRTC moments ago is found on the next lookup after a refresh. Nothing to set up.

Iron Bot browser extension

Iron Bot browser extension implemented locally 2026-10-06: Admin Tools โ†’ Browser Extensions โ†’ Iron Bot โ€” KTools Page Help โ†’ Download ZIP. Requires admin_tools.extensions.view to download. Unzip and use Chrome/Edge Extensions โ†’ Developer mode โ†’ Load unpacked โ†’ select iron-bot-help, then pin its toolbar icon. Sign in to KTools admin with help.live.view and click the icon on a supported krisdkent.net/ktools/ or localhost/127.0.0.1 /ktools/ or /ktools4/ page. The movable help window uses the current signed-in account and existing configured Windows ktools-help worker, with no bridge credentials in the extension. Drag its header, focus the header/use arrow keys, resize its corner, minimize, close or click the toolbar icon to reopen. Reopen after page navigation. Position alone is stored in extension local storage; chats are saved privately in existing Live Help history. New chat starts a conversation; existing 30 questions/conversations per hour, 100-message history and queued/answering timeout limits remain. Polling is every five seconds while the window/page is visible. Review page context lists up to 40 visible eligible field labels and types sent with the page heading/path. Current field values, select options, tables, page HTML, images and cookies are not collected for the prompt. Password/PIN/key/contact/account-permission/payment fields are excluded; do not type secrets into questions. Context labels and AI output remain untrusted. Optional strict ironbot-field JSON blocks become Highlight field and Use suggestion controls; malformed, oversized, unknown or stale field references cannot become executable actions. Highlight briefly outlines and scrolls to the field. Use suggestion requires an explicit click, only accepts supported editable visible fields, validates select choices and native field limits, and dispatches normal input/change events without clicking Save/Submit. Some site fields may react immediately to those events; review suggestions before applying and review the form before saving. No automatic record lookup, awards, file changes or form submission. GET admin/iron-bot-extension.php returns authenticated session/connection/private chat state; POST start/send requires session, help.live.view, enabled Live Help and CSRF, using existing ownership and retry guards. Supported Chrome/Edge desktop only; extension activation uses activeTab/scripting/storage with no persistent all-site access. No external websites, browser settings pages or cross-origin iframe contents. SITE toolbar badge means unsupported location; sign-in/permission errors require KTools admin session/Live Help permission; waiting means the configured Windows worker must answer. Field actions depend on an actual AI response using the optional protocol; generic fallback help may only return text. Source/package/catalog, field restrictions, sanitization, private chat/retry, ordinary help/draft regression and syntax checks pass locally. Hosted Chrome/Edge drag/highlight/fill acceptance with the real Iron Bot worker remains pending. Distribution includes prebuilt iron-bot-help-v1.0.0.zip for hosts without PHP ZipArchive.

Iron Bot extension session/error correction 1.0.1, verified 2026-10-06: the live admin/iron-bot-extension.php endpoint was checked in the existing signed-in Chrome session and returned authenticated ok=true, enabled=true and Windows bridge connected. Thus the observed generic Sign in message did not establish that the account was signed out. Version 1.0.0 incorrectly treated every non-JSON response as a sign-in failure. Version 1.0.1 explicitly includes existing session cookies only in same-origin KTools requests (never reads or stores cookies), requests JSON, and reports real authentication rejection separately from missing endpoint (404), blocked request (403), server errors, non-JSON output, invalid JSON shape, network failures and timeouts. Raw response bodies/tokens are not displayed. Reconnect rechecks session/connection without clearing the typed question or chat. Update through Admin Tools โ†’ Browser Extensions โ†’ Iron Bot โ†’ Download ZIP; replace the existing extracted extension files, Reload Iron Bot at chrome://extensions or edge://extensions, refresh the KTools page and reopen Iron Bot. Local ZIP is iron-bot-help-v1.0.1.zip; deploy the updated source/dist and catalog guide for the hosted download page. No new browser permissions, authentication relaxation, bridge settings, scoring or database changes. Browser verification confirms the live website session and bridge status; updated installed extension behavior still requires reloading the new files on the user device. Source, package, response-classification, private-chat/ordinary-help regression and syntax checks pass. If a non-JSON/blocked response persists after updating, use the specific HTTP status to check server output/hosting security rather than rotating keys or signing out blindly.

Iron Bot extension HTTP 406 transport correction 1.0.2 implemented locally 2026-10-06: user-device extension requests returned non-JSON HTTP 406 while the same endpoint recognized the signed-in Chrome session during direct page navigation. This suggests request-origin/header handling or hosting security filtering, not a missing sign-in; the exact hosting rule has not been inspected. Version 1.0.2 injects a packaged page-transport.js into the MAIN page world using the existing activeTab/scripting permission. Content UI remains isolated. The fixed same-site admin/iron-bot-extension.php endpoint is requested from the page context with ordinary same-origin credentials, no custom Accept header, normal FormData for POST and existing no-store/timeouts. Bounded correlated DOM events support only authenticated GET state/history or POST start/send; caller-supplied URLs, scripts, methods and unrelated fields/actions are rejected/ignored. No external endpoint, cookies API, bridge credentials, additional browser permissions, automatic field changes or server security exceptions are added. Existing session, CSRF, ownership, limits and help.live.view checks remain. Reconnect remains available. Download iron-bot-help-v1.0.2.zip from Admin Tools โ†’ Browser Extensions after deploying updated source/dist, or use the local ZIP; replace the extracted files including the new page-transport.js, Reload Iron Bot at Chrome/Edge Extensions, refresh the KTools page and reopen it. Merely closing/reopening the old window does not replace injected scripts. If HTTP 406 persists, ask the host to inspect the matching security-rule log for admin/iron-bot-extension.php; do not disable security filtering globally or rotate bridge keys. Local tests verify page-origin credentials/normal headers, fixed endpoint, FormData key allowlist, correlation, repeat injection, malformed/unsupported action and host rejection, HTTP 406 diagnostics, existing field protections/private chat and ZIP parity. PHP/JavaScript/shared knowledge checks pass. Real installed v1.0.2 request acceptance remains pending device reload; this update supersedes v1.0.1 transport handling.

Iron Bot extension 1.0.3, verified locally 2026-10-06: ordinary Live Help was confirmed ready in the signed-in Chrome browser. Empty extension conversations suggest chat startup succeeds and sending the question is rejected; the exact hosting security rule remains unverified. The extension now sends bounded field labels/tokens/types as ordinary nested form fields instead of a JSON form field. The endpoint normalizes these fields and retains legacy extension compatibility. Current values, options, records and credentials remain excluded; session, CSRF, permissions and ownership checks remain enforced. Errors identify Checking connection, Starting chat, Sending question or Loading answer. Deploy admin/iron-bot-extension.php and app/lib/IronBotPageHelp.php together, plus updated extension source/dist for the download page. Download iron-bot-help-v1.0.3.zip, replace extracted files, Reload the extension, refresh KTools and reopen Iron Bot. If HTTP 406 persists, report the displayed step and request timestamp to the host for the matching admin/iron-bot-extension.php security-rule log. Do not disable security filtering globally. Local context, transport, private-chat and syntax checks cover this change; live installed-extension acceptance and hosting-rule confirmation remain pending.

Iron Bot page context v1.0.4, verified locally 2026-10-06: Review page context and new questions include up to 100 visible field/control descriptions, prioritizing open-dialog and table controls. Buttons/links, table column headers, headings and repeated row action positions help distinguish a row Edit button from the main search input. Current field values, full records, link URLs, hidden controls and credentials are excluded. Action/guide suggestions offer Highlight control only; they cannot click buttons, follow links, submit, save or receive suggested values. Editable fields retain explicit Use suggestion and existing validation. Open the desired dialog before asking about its fields; refresh context or ask again after pagination or layout changes. Existing session, CSRF, help.live.view, private history and normal nested-form transport remain. Deploy app/lib/IronBotPageHelp.php plus extension source/dist; the endpoint from v1.0.3 remains compatible. Download v1.0.4 through Admin Tools โ†’ Browser Extensions, replace extracted files, Reload extension and refresh KTools. Local protocol/context, transport, private-chat and syntax checks pass; real-worker control recommendations and hosted visual acceptance remain pending.

Iron Bot read-only page assistant v1.0.5, verified locally 2026-10-06, supersedes earlier value-filling guidance. User requested explanations without any value changes or submissions. Use Review page context before Send question to inspect shared visible records, column labels, displayed totals/pagination, selected filters/search terms, headings, open-dialog controls and up to 100 highlight targets. Up to 60 rendered table rows and 18,000 summary characters are included with capture timestamp; hidden/off-page data and full database counts are unavailable. For named prepper counts Iron Bot must distinguish supplied visible rows from authoritative filtered totals; it suggests user-operated filters/reports for complete counts. Context is refreshed per new question, not continuously; retry preserves the original snapshot/request for duplicate protection. Private account/device/log/mail/chat/configuration pages omit record summaries; sensitive columns, credentials, email addresses, full notes and form-edit values are omitted. No screenshots, cookies or arbitrary HTML are collected. Shared context is sent to the configured Iron Bot worker and retained with private Live Help conversation data. Page content remains untrusted evidence. Highlight field/control remains, but Use suggestion and all field-value setters/input-change dispatch have been removed. The bot cannot click, navigate, change values, save or submit forms; the user operates the website. Existing permission/session/CSRF and fixed-endpoint transport remain. Deploy admin/iron-bot-extension.php, app/lib/IronBotPageHelp.php, catalog guide and v1.0.5 source/dist; Download ZIP through Admin Tools โ†’ Browser Extensions, replace files, Reload extension, refresh KTools and start a new question. Local context sanitization/bounds, transport, read-only behavior and private-chat regression checks pass. Hosted acceptance and real-worker answer quality remain pending; unsupported custom widgets or truncated context may require the user to describe/open the relevant section.

Iron Bot question grounding v1.0.6, verified locally 2026-10-06: a live response claimed the user question was missing despite receiving page context. Local source already forwards question; the exact deployed-worker cause is unverified. New endpoint includes user_question in page_help; the claim hook reconstructs it from stored message body and appends the current question to assistant instructions. Updated scripts/live-help-job.mjs reserves prompt space and repeats the question at the end, preventing long snapshots from obscuring the task. Ordinary help and strict draft validation remain. Large-context regression confirms the final question survives within the prompt bound. Windows process output now uses streaming UTF-8 decoding to preserve split multibyte characters; extension display repairs known garbled punctuation sequences without rewriting stored answers. This does not establish the cause of existing encoding corruption. Deploy admin/iron-bot-extension.php and app/lib/LiveHelp.php on the site; deploy scripts/live-help-job.mjs and scripts/live-help-bridge-daemon.mjs on Iron Bot PC and restart the existing worker. Replace extension files with v1.0.6, Reload and refresh KTools. No keys or claim tokens are needed or exposed. Ask a new question. Time-window scan questions still require matching visible records or authoritative report totals: the bot must state incomplete/page-only scope and guide users to a report, never invent a full count. Read-only restrictions remain; no field changes or submissions. PHP/JS, large-context protocol, chat/privacy, transport and knowledge/manual parity checks pass locally. Installed-worker/deployment acceptance remains pending.

Iron Bot read-only scan activity v1.0.7, verified locally 2026-10-06: signed-in admins with help.live.view and reports.custom.view may ask counts such as How many items were scanned today between 5 and 6 PM?, How many records did Jessie scan yesterday?, or How many records did Jessie scan all time? Specify today, yesterday, an YYYY-MM-DD date, or all time. AM/PM windows support a shared ending meridiem (5 and 6 PM); unclear ranges, unknown/multiple prepper names or unsupported relative periods request clarification. Exact configured order-type codes/labels and current Send To 2D/On 2D Draft/Sent/Problem/Cancelled status requests can filter counts. Custom/overnight ranges and full filter selection are available through the extension toolbar Scan Activity link or View matching records below a verified count. The GET-only admin/iron-bot-scan-activity.php page requires reports.custom.view independently and offers From inclusive, To exclusive, Prepper, current Status and Order type, View activity and Previous/Next. Totals include all matching pages; rows are newest first, 50 per page. Time zone is the signed-in admin setting; dates convert to UTC with DST handling. Counts measure undeleted inventory_events by original created_at; records and sum(total_quantity) units are distinct, not raw scan attempts or later edit timestamps. All statuses apply unless explicitly filtered. The report shows the definition and capture time; later data changes can change the verification report. Server totals, normalized filters and an internal verification path enter private question context, but raw matching rows are not supplied to Iron Bot. The bot must use verified facts ahead of visible-page counts and explain denied/ambiguous lookups. No arbitrary SQL, AI-selected endpoints, value changes, clicks, submissions, approvals or business-record writes are exposed. Fixed parameterized SELECTs execute within database-enforced read-only transactions, rolled back afterward; no inventory write methods or schema changes are added. Lookup and history facts recheck permissions; permission revocation before worker claim removes facts. Existing Live Help still stores chats and processes its queue as before. Local isolated tests confirm permission denial, pagination/full totals, named prepper/order/status filters, start/end boundaries, deleted exclusions, DST, ambiguous requests, unchanged inventory and rejected writes. Prompt tests prioritize verified totals before large context; ordinary chat/draft and syntax checks remain green. Deploy app/lib/IronBotScanActivity.php, IronBotPageHelp.php, LiveHelp.php, admin/iron-bot-extension.php and iron-bot-scan-activity.php plus v1.0.7 source/dist; update scripts/live-help-job.mjs on Iron Bot PC and restart its existing worker. Reload extension and refresh KTools after replacing files. Hosted UI and real-worker answer verification remain pending; this is saved inventory activity, not a new raw-device scan log.

Iron Bot cross-page read-only data v1.0.8, verified locally 2026-10-06: the assistant now has 59 allowlisted data areas (58 database sources plus the cached prep list), covering active/sent orders and shipments, inventory queues/history/report sources, misfits, supplies/requests/usage, prep timing, case-pack and box configurations, product/item-label sources, printing, technical device metadata, account/attendance counts, account role names and Warehouse Legends command/player/round/role/mission/approval/kiosk/draft status and content libraries. Each area requires its existing view permission; Live Help use also requires help.live.view. Open the extension Page Data link, select Data area, optional From/To, current Status and text Search, then View data. GET admin/iron-bot-page-data.php verifies counts and raw numeric-column totals across all matching records, groups by status/enabled/active/excluded where available, and offers 50-row pages with an Open source page link. Each permitted dataset in a question shows its own View matching link retaining exact server filters. Questions get at most 20 safe sample rows per area; context-size limits can reduce samples further while preserving totals. Source dates use each indicated date_field and admin time zone; range start inclusive/end exclusive. Browser filters are not automatically applied to database queries. Explicitly named supported sources can be queried from another page; otherwise the current page selects the sources. Date questions support today, yesterday and YYYY-MM-DD/time windows; complex ranges, names or unsupported filters require the user to select Page Data filters, rather than guessing. Search quotes can specify a name/code; text search escapes wildcards and uses bound parameters. Pending supply requests maps to stored requested status. Read-only Scan Activity remains the dedicated prepper/unit/order-type/time lookup. Cached prep lists include skuname/FNSKU/ASIN/SKU and to-prep counts, label cache capture time, and never refresh/write GRTC caches. Game content sources honor their registry kind scopes; item/ability and progress types are not mixed. Numeric sums are raw fields, not computed eligibility, projections or newly granted awards. Accounts and attendance expose counts only. Credentials, owner/device hashes, private contact data, raw messages/notes/logs, settings/configuration, backups, arbitrary SQL and secret game answers are excluded; sensitive support pages retain manual/visible-control assistance. User permission revocation is checked when displaying saved facts and before worker claim; denied facts/samples are removed. The bot cannot click, navigate, fill, submit, approve or alter business records. Fixed allowlisted SELECTs run inside database-enforced read-only transactions; no migration/schema or new write action is added. Existing private Live Help chat/queue storage continues normally. Metadata/schema verification and isolated disposable-database checks cover all source schemas, active/sent scopes, complete pagination totals, safe search/injection handling, secret/identity omissions, item/ability scopes, cached prep lists, permission revocation, UTF-8 context bounds, unchanged records and database-rejected writes. Prompt compilation prioritizes verified facts once, preserves the actual question and ordinary draft/help protocols. Deploy app/lib/IronBotPageData.php and updated PageHelp/LiveHelp/extension endpoint, new admin/iron-bot-page-data.php plus v1.0.8 source/dist and manual/knowledge files; update scripts/live-help-job.mjs on Iron Bot PC and restart its worker. Download v1.0.8 from Admin Tools โ†’ Browser Extensions, replace files, Reload extension and refresh KTools. Remaining coverage: hosted UI/worker acceptance; private/system pages intentionally have no raw-record lookup, and saved report output/custom widgets or derived game calculations require source-page/manual guidance.

Verified locally 2026-10-07: Iron Bot Page Data keeps its selected dataset isolated from shared navigation variables, so Open source page and pagination retain the selected area without PHP warnings. Its filters, summary tiles, table and buttons now use admin theme variables and responsive layouts. Open Page Data, select an authorized Data area and click View data; use Open source page to visit that area. Existing view permissions and GET-only, database-enforced read-only queries remain unchanged. Hosted visual verification is pending upload.

Floor Siren quick operation

Floor Siren Quick Operation implemented locally 2026-10-06: on any admin page with the toolbar, open Quick Operations โ†’ Floor Siren. Requires toolbar.view plus the existing legends.command.power_hour permission; unauthorized users do not see the operation and cannot use its endpoint. The centered themed modal shows the current announcement and its ending time in the admin time zone, or an explicit inactive state. Enter Message (1โ€“200 characters), choose Heads-up, Celebration or Urgent and Show for 5 minutes, 15 minutes, 1 hour or 8 hours, then Broadcast. Broadcasting replaces the current siren and uses the same shared settings and Change History as Warehouse Legends โ†’ Command Center โ†’ Power Hour & Siren. Clear current siren removes the current announcement without requiring a new message; Close/Escape does not save. Successful broadcast/clear refreshes modal status. POST admin/quick-op.php?op=floor_siren requires CSRF and the same permission. Connected eligible Legends displays show the siren on their next normal refresh while Game ON; expired announcements do not show. The modal warns if the game is off. Offline/hidden clients and device quiet-mode behavior remain governed by existing Legends display rules. No new sounds, push notifications, awards, schema or permission keys are added. If no banner appears, check Game ON, expiration, device Legends visibility/quiet mode and connectivity. Seven isolated checks verify visibility, empty/current states, escaping, broadcast, invalid inputs, clear and permission denial; PHP/JavaScript and shared knowledge checks pass. Hosted/mobile visual acceptance pending.

Read receipts (2026-10-07): when a prepper taps the siren on a station to open the full message, that counts as read. With permission legends.siren.reads.view (admin, manager), the Floor Siren Quick Operation and Warehouse Legends โ†’ Command Center โ†’ Floor Siren card show Read by (names and times) and Working but not read yet (active, non-excluded preppers who saved prep work in the last 12 hours). A new broadcast starts a fresh list. Unread sirens keep flashing on stations until opened.

Quick Links & Quick Operations

Quick Links and Quick Operations menu layering updated locally 2026-10-06: in the admin top toolbar, choose Select Quick Link or Select Quick Operation. Both searchable dropdowns display above the sticky admin navigation instead of having their first entries hidden behind it. On narrower screens the wrapping toolbar stays in normal document flow while retaining its own positioned layer; menu lists still scroll internally. Existing toolbar.view permission, destination permissions, keyboard controls and operation dialogs are unchanged. If the menu still overlaps incorrectly after deployment, refresh the page to load the updated admin stylesheet. Local source and PHP/knowledge validation completed; hosted/mobile visual acceptance remains pending.

Menu layering fixed again (2026-10-08): the Quick Links and Quick Operations dropdowns open over the white top bar at every screen width; previously everything below the first entry was hidden behind it. If a menu still looks cut off after an upload, hard-refresh the page (Ctrl+F5).

Quick Operations โ†’ Print Labels scanner Enter protection verified locally 2026-10-07: Enter in SKU / FNSKU is ignored for form submission, including the suffix sent by a hardware barcode scanner. Barcode text, live preview and product lookup continue normally. Review name, quantity, divider and destination, then explicitly use Open Print Window or Queue to Printer. Other fields and button keyboard activation retain existing behavior. Existing quick_ops.print_labels permission, CSRF, queue and printing limits are unchanged. Hosted scanner acceptance pending upload.

Profile photos & Team Chat

Profile photo and Team Chat avatar display updated locally 2026-10-06: admin Account Settings โ†’ Profile picture โ†’ Upload a photo โ†’ choose JPG/PNG/GIF/WebP โ†’ Save profile picture. Existing 10 MB and 25-megapixel upload/server limits and settings.avatar.update permission apply. Photos use fixed square frames with object-fit cover, centered circular cropping and no stretching, including existing portrait/landscape uploads; the source file is unchanged and there is no adjustable crop editor. Keep the subject near the center. Profile preview remains visible on mobile. Team Chat shows the saved avatar beside the senderโ€™s username on each message and in the selected teammate header; preset icons or initials are used when no photo exists, with initials/preset fallback on image-load failure. chat.view still controls visible contacts and conversations; chat.send/chat.read and existing CSRF/private two-party scopes are unchanged. Avatar metadata includes only a validated local image path and fallback text, not arbitrary URLs, file contents or new user permissions. Changes appear on the next normal chat refresh; no schema changes. PHP/JS syntax and knowledge parity verified locally; live hosting/browser acceptance pending.

Team Chat teammate picker corrected locally 2026-10-06: open Team Chat โ†’ Choose a teammate. The visible custom picker shows a circular saved photo, preset or initials beside each username, role and unread count, including the selected teammate in the selection bar. The previous native select could not render photo thumbnails. Filter teammates by name/role still works; filtering does not discard the current conversation. Select a teammate to load their messages. Use Tab/Enter to activate choices, Arrow Down on the picker to focus choices, Up/Down to move, Escape to close and restore focus; clicking outside closes the list. Preset/initial fallbacks and validated local image paths remain shared with message/header avatars. Existing chat permissions, private conversation scope and polling limits are unchanged. PHP/JS/knowledge checks pass locally; live/browser acceptance pending.

Account menu profile icon updated locally 2026-10-06: click the signed-in username in the admin top navigation. Your account and Signed in at remain on the left, with the current saved photo/preset/initials in a larger 56-pixel circular frame on the right. The square centered crop prevents stretched portrait images and remains visible on mobile. Existing sign-in time/time-zone, account links and permissions are unchanged. PHP and knowledge parity checks pass; hosted visual acceptance pending.

Avatar layout regression corrected locally 2026-10-07: Account Settings โ†’ Profile picture shows a fixed 64-pixel square frame cropped to a circle; the top username menu shows a larger 56-pixel circular photo to the right of Your account and Signed in at, including mobile. Uploaded portrait/landscape photos remain centered without stretching. No re-upload is required. Messenger styling and behavior remain unchanged. Existing settings.avatar.update permission, upload limits and account links are unchanged. Refresh after uploading the site; stylesheet versions update automatically. Hosted visual acceptance remains pending.

Verified locally 2026-10-07: Settings โ†’ Appearance & navigation โ†’ Favorites displays 10 available pages at a time. Previous and Next show the remaining pages without reloading or losing unsaved selections. Up/down arrows reorder across page boundaries and keep the moved entry visible. Save appearance & navigation saves selections and ordering from every page, including hidden rows; navigation alone does not save. Existing settings.view and settings.appearance.update permissions apply. Without JavaScript the complete list remains available. Styling follows admin theme variables and wraps on mobile; hosted visual acceptance pending.

Favorites pagination compatibility fix, locally verified 2026-10-07: the Settings script creates missing Previous/Next controls when an older uploaded page lacks the pager markup, and explicitly hides off-page rows even when an older stylesheet is cached. Upload admin/assets/settings.js with admin/settings.php and admin/assets/cockpit.css, then refresh Settings. Ten entries per page, preserved selections, cross-page reordering and all-page saving are unchanged. Local syntax/behavior checks do not confirm which files the hosted site currently serves.

Settings rendering repair verified locally 2026-10-07: restore AccountSettings::notificationEnabled, which reads saved user notification preferences and defaults unset preferences to enabled. The missing method interrupted the Notifications section before the Settings script could load, preventing favorites pagination and section tabs from initializing. Page-specific settings data is now isolated from shared-header variables. No migration, saved preference changes or new permissions are introduced. Upload app/lib/AccountSettings.php and admin/settings.php with the existing updated assets, then reload Settings; verify 10 favorites per page and Previous/Next, Account and Notifications tabs. Hosted acceptance remains pending upload.

๐Ÿ”” Notifications Engine & Bell Alerts Admin

Real-time polling notifications system alerting managers to floor events:

  • Triggers on new Problem Items, Attendance Call-Ins, Supply Requests, Misfits, and Edit Requests.
  • Clicking a notification navigates directly to the affected record and marks the notification as read.
๐Ÿ“ค Send to 2D Working Queue & Filter Stacking Admin

The primary daily operations queue for staging boxes into Amazon 2D barcodes:

  • Stacked Filters: Filter by keyword, order type, and prepper simultaneously with dynamic breakdown badges.
  • Item Notes Travel: Notes attached to an FNSKU follow the SKU across all administrative workflows.
  • One-Click Send: Commits boxes into the 2D draft queue with server-side lockouts.
๐Ÿ“‹ On 2D Draft Queue & Lockouts Admin

Boxes in transit to Amazon 2D barcode generation are protected from accidental floor modifications. Preppers must use the Request Edit modal if physical box corrections are required.

Move a box to another order (2026-10-08): on On 2D Draft, open a box's Edit window. Under SKU / Order Type, the Order dropdown shows the box's current order (marked "current") and every active (open) order; orders of a different order type are labelled "different order type". Pick another order and Save Changes to move the box; leaving the current order selected changes nothing. The target order is checked to be still open before anything is saved, and the move is recorded in the box's edit history. Needs permission on_2d_draft.move_order (admin, manager) in addition to on_2d_draft.edit; without it the field is not shown.

๐Ÿ“œ Sent Items History & Order Tracking Admin

Permanent searchable archive of all fulfilled prep boxes, including historical SKU names, carrier shipments, and pallet assignments.

โš ๏ธ Problem Items Management & Resolution Admin
  • Isolates prep entries with barcode discrepancies, missing dimensions, or packaging exceptions.
  • Problem Resolution: Managers resolve issues by correcting quantities, re-assigning FNSKUs, or returning boxes to staging.
๐Ÿ“ฆ Active Orders & Shipments Lifecycle Admin

Tracks multi-pallet Amazon FBA and WFS shipments from creation to final carrier bill of lading (BOL) closeout.

๐Ÿšš Ship Walmart (boxes, pallets & temp labels) New

Ship Walmart (2026-10-11): packs the Walmart (WFS) rows of an order on On 2D Draft into boxes and pallets, prints a temp label for every box, and gives the numbers Walmart's Shipping step asks for. Admin: Orders โ†’ Ship Walmart (under Active Shipments). Preppers: the ๐Ÿšš Ship Walmart chip, only for preppers picked in Ship Walmart โ†’ Settings.

  • Start: Orders tab โ†’ ๏ผ‹ Start build on a Walmart order (or the ๐Ÿ“ฆ Ship Walmart link on On 2D Draft / Active Orders). Rows with no order must be moved to an order on On 2D Draft first.
  • Case packs: each case has a checkbox. Checking it creates a closed single-SKU box with the next number (S1, S2โ€ฆ) on the active pallet, weighed with the draft row's box weight. If the draft has no case weight, type it once; it is saved on that draft row.
  • Loose units: enter a quantity โ†’ Add to box. One SKU in the open box makes an S box, two or more make an M box. Enter the box weight โ†’ Close box & add to pallet. A box cannot be closed without a weight. Mixed boxes are labelled M1 (wfs-sku, wfs-sku).
  • Boxes table: label, WFS SKU, GTIN and quantity per box, weight, pallet, ๐Ÿ–จ print, โ†ฉ Reopen (loose boxes), ๐Ÿ—‘ delete. Numbers are never reused: a deleted or unchecked box keeps its number as void.
  • Pallets: pallet weight = box weights + empty pallet weight (default 40 lb in Settings, editable per pallet). Enter height and stackable per pallet; ๏ผ‹ Add pallet makes the new pallet active.
  • Walmart numbers: the summary strip shows Items / Units, Single SKU cases, Mixed SKU cases, Pallets and Total weight; ๐Ÿ“‹ Copy for Walmart gives one pallet row per pallet. Item details check uses the same columns as Walmart's Item details pop-up.
  • Finish: locks the build and keeps it in Box History. It does not change the On 2D Draft rows. Units left, missing pallet heights or no boxes block finishing; an admin with Finish permission can override with a reason. An open box with items always blocks.
  • Box History: search by order #, Walmart plan ID, WFS SKU, GTIN, item name, box label (S3, M2) or the scanned temp-label barcode (WM<build>-<label>). Boxes and box contents also appear in the top-bar search.
  • Permissions: ship_walmart.view, .pack, .finish, .reopen_finished, .box.delete, .labels.print, .history.view, .settings (admin and manager by default). Station access is the Settings allowlist; preppers can finish only when Settings allows it and never with an override.

Troubleshooting: "No case weight on the draft" โ†’ type the case weight. "Only N loose units left" โ†’ the rest are case packs or already boxed. "Ship Walmart is not turned on for you" (station) โ†’ add the prepper in Settings. A row removed from the draft after packing shows a warning; its boxes are kept.

๐Ÿ“ˆ Worker Productivity Dashboard & UPH Analytics UPH

Calculates units per hour (UPH) for each prepper based on verified prep timestamps:

  • Time Windows: View performance by Day, Week, Month, or Year to Date.
  • Color-Coded UPH: Green (60+ UPH), Amber (35โ€“59 UPH), Red (<35 UPH).
  • Output Trends: Multi-prepper trend lines highlight peak shift output and bottleneck periods.
โฑ๏ธ Prep Time Data & Bagger Tracking Prep Time

Granular logs of active prep sessions, bagger runs, and carton pack-out times for labor cost accounting.

๐Ÿ“Š Supply Usage Analytics & Restock Forecasting Supplies

Aggregates packaging supply consumption to predict restock reorder points before warehouse runs out of poly bags or boxes.

๐Ÿ“… Monthly & Annual Reports (Sent Reports) Pace Tracking

Compares cumulative monthly prep output against annual warehouse benchmarks (50,000 units/mo goal pace, 1M stretch goal) with comprehensive analytics:

  • Top 15 SKUs (Last 12 Months): Horizontal volume ranking with interactive hover cards that follow the cursor in real time, displaying the live Amazon catalog image thumbnail, ASIN, SKU title, total units sent, order count, and active months. Automatically flips position when near viewport edges to prevent clipping.
  • Year-over-Year & Month Notes: Historical trend lines with clickable milestone badges and supervisor month annotations.
  • Cumulative YTD Pace: Flat average vs. conservative weighted projection modes forecasting end-of-year output.
  • Daily Burn Rate: Real-time daily tracking against shift unit targets with color-coded threshold status.
  • Shipment Times & Turnaround Analysis: Interactive doughnut chart visualizing shipment duration distribution across 4 turnaround tiers (Express 1โ€“2 days, Standard 3โ€“5 days, Multi-Week 6โ€“10 days, Extended 11+ days) with center average turnaround readout. Features dedicated KPI stat tiles and interactive cards for the Top 5 Fastest and Top 5 Slowest shipments (showing business days open, calendar days, units sent, and estimated labor hours), plus a full drilldown table.

Sent Reports order-type charts added locally 2026-10-06: Admin โ†’ Reports โ†’ Sent Reports (reports.sent.view). Below Yearly totals / Top 15 SKUs, four matching half-width tiles display pie charts with legends for units sent by order type over rolling Last 30 days, Last 90 days, Last 6 months and Last year. A full-width horizontal All-time units sent by order type chart follows, sorted by units descending. Current viewer time zone applies, ranges end at the report generation time and subtitles show boundaries; six months/year are calendar lookbacks, not the monthly pager window. Paging older monthly data does not shift these rolling charts. Each sent inventory event contributes total_quantity once, dated by its latest sent status-log timestamp (updated_at fallback), with deleted/unsent/future records excluded from these new charts. All configured order types remain in legends even at zero; unknown codes use their code as label. Pie tooltips show units/percentage; period cards also offer Show units by order type tables and zero-period messages. Existing categorical palette, theme redraw, responsive two-column-to-single-column grid and no-schema permission rules apply. All-time chart shows every type, not a top-N cutoff. Tests verify each rolling range/cutoff, exclusions, totals, zero categories and empty results. PHP/JS/knowledge checks pass; hosted visual acceptance pending.

๐Ÿ“Š Prepper Reports & Real-Time Warehouse Leaderboard New in 4.0

Prepper Reports (reports.php / ?view=reports) provides floor preppers and shift leads with live inventory volume visibility, weekly standings, speed metrics, and cumulative pace tracking:

  • Prepper Filtering & Personal KPIs: Select any prepper or auto-detect from station cookie (๐Ÿ‘ค My Stats) to view personal output (Today, This Week, This Month), units/hour (UPH) speed rate derived from verified prep times, and current weekly leaderboard medal rank.
  • Warehouse Volume Summary: Real-time operational KPI tiles detailing Team Output Today, Team Output This Week, Staged Queue volume (waiting for 2D barcode), and boxes currently drafted on active 2D shipments.
  • Weekly Leaderboard: Live ranking of all warehouse preppers since Monday with podium awards (๐Ÿ‘‘ #1, ๐Ÿฅˆ #2, ๐Ÿฅ‰ #3), box counts, SKU diversity, and animated progress bars measuring volume percentage relative to the shift leader.
  • Top SKUs Prepped: High-volume item rankings with live Amazon ASIN thumbnails, FNSKU identifiers, units prepped, and box breakdown.
  • Visual Trend Analytics (Chart.js):
    • Daily Output This Week: Dual-series bar charts comparing full warehouse volume vs. individual prepper contributions across Monday through Sunday.
    • YTD Goal Curve: Smooth cumulative volume progression curve plotted directly against annual benchmark paces (50,000 units/mo [600k/yr] and 1,000,000 unit stretch pace) with real-time pace delta readout.
  • Warehouse Live Activity: Real-time streaming audit of the latest 12 prepped cartons saved across the warehouse floor with order type badges (FBA / MFN), pack styles, prepper tags, and relative elapsed timestamps.
๐Ÿ”’ Role-Based Access Control (RBAC) & Security Admin

Managed via AdminAuth with permissions matrix across roles (Super Admin, Ops Manager, Floor Lead, Read-Only):

  • Granular capabilities for deleting records, running backups, approving attendance, and executing API calls.
  • Session security with automatic timeout and versioned credential hashing (Bcrypt).
โšก External REST API & Developer Sandbox API

Comprehensive OpenAPI specification and interactive in-browser API sandbox (api-sandbox.php):

  • REST endpoints for querying SKU inventory, pulling misfits, syncing bag sizes, and dispatching external notifications.
  • Scoped API bearer tokens with rate limiting and automated IP audit logs.
๐ŸŽจ 16 Color Themes & Workstation Personalization New in 4.0

KTools 4.0 features a modern CSS design token engine supporting 16 hand-crafted palettes tailored for warehouse lighting conditions:

  • Theme Library: Light (high contrast), Dark (OLED black), Bailey (signature violet/purple), Ocean Blue, Midnight, Nord (arctic blue-grey), Slate, Cyber (neon amber), Mint, Forest (deep pine), Lavender, Rose, Crimson, Sunset, Copper, and Mocha.
  • Pre-Paint Theme Activation: Stored locally in localStorage.getItem('kt4_scanner_theme') and injected before first paint on the <html data-theme="..."> element to eliminate flash of unstyled content (FOUC).
  • Sync Across Modules: Selected theme automatically applies across public stations (Prepper Scanner, Misfits, Damage Out, Manual, Supply Requests, Days Off) and the Admin Cockpit.
๐Ÿ’ฌ Slack Channel Rules & Automated Webhook Notifications Webhooks

Real-time Slack integrations alert floor supervisors and inventory managers when operational intervention is required:

  • #warehouse-supplies: Dispatches alerts whenever an Urgent supply request is submitted or inventory drops below the 48-hour safety buffer.
  • #prep-hazmat-alerts: Instant notification when a prepper flags a Hazmat discrepancy (e.g. system shows individual poly-bag but item carries an aerosol or battery warning).
  • #warehouse-exceptions: Receives damage-out reports with photo evidence, unhandled misfit items, and missing master carton quantities.
  • Configuration: Webhook URLs and channel routing can be managed in Admin > Settings > Integrations.
๐Ÿ“‹ Error Logs & System Diagnostics Diagnostics

KTools 4.0 provides detailed real-time telemetry for maintaining warehouse hardware and network connectivity:

  • Scanner Input Capture: Logs unreadable barcode scan attempts to identify damaged symbologies or misconfigured Zebra/Honeywell HID hardware.
  • Database Query Audit: Unhandled SQL exceptions and migration transaction errors are logged to app/logs/database.log with full call stacks.
  • Diagnostic Inspector: Accessible to administrators via Admin > Tools > Logs with filtering by log severity (INFO, WARN, ERROR, CRITICAL).

Error Logs default date window updated locally 2026-10-07: Admin Tools โ†’ Error Logs opens with Today in the signed-in account time zone. Select All recent dates (last 2 MB) and Filter Logs to review older entries; explicit range=all links retain that selection. Clear returns to Today. Existing error_logs.view permission, log-tail/entry limits and grouped stack traces remain unchanged. Print Station AdminTime dependency checked: current app/lib/AdminAuth.php explicitly requires AdminTime.php before user authentication. If an older server copy reports Class AdminTime not found, upload current app/lib/AdminAuth.php together with app/lib/AdminTime.php, then refresh Print Station and check new error timestamps. No authentication or printing behavior changes were needed; hosted acceptance pending upload.

๐Ÿ’พ Database Backup, Snapshots & Disaster Recovery Safety

Ensuring zero data loss during peak warehouse operating shifts:

  • Automated Nightly Dumps: Scheduled mysqldump runs every midnight, archiving gzipped snapshots of the ktools4 database with a rolling 30-day retention.
  • On-Demand Snapshots: Supervisors can generate a timestamped backup before large bulk inventory imports or schema upgrades via Admin > Tools > Database.
  • One-Command Rollback: The migration runner supports strict atomic rollbacks via php bin/migrate.php down to safeguard table integrity.
๐Ÿ“ฆ Upload Check, Release Checks & Version History Safety

Added 2026-10-07. Admin Tools โ†’ Upload Check (permission admin_tools.upload_check.view, admin) answers "did everything actually get uploaded?".

  1. On the PC you upload from, open a terminal in the ktools folder and run php bin/check.php. It checks PHP and JavaScript syntax, runs the standard tests (about 2 minutes; --quick takes seconds) and writes app/build-manifest.json.
  2. Run php bin/check.php --changed to list the files changed since the last upload (files marked D were deleted: delete them on the server too).
  3. Upload those files plus app/build-manifest.json, then open Admin Tools โ†’ Upload Check. Complete means every release file is on the server unchanged. Missing files were not uploaded; Different files are older or were edited on the server. Not in this release lists old code files the release no longer includes.
  4. When it says Complete, run php bin/check.php --mark-uploaded so the next --changed list starts from here.

Version history: the code is in Git (history kept in C:/xampp/git/ktools.git, outside the website). Every change is a commit that can be viewed or undone on its own. Secrets, uploaded photos and runtime files are not in Git.

Database version status (2026-10-07) also reads migration tracking without applying changes: readiness requires matching release files and zero unapplied database updates. Applied-file checksum differences are informational and ignore FTP line-ending changes. Review before accepting drift; Unknown is not confirmation of readiness. Existing file status Complete describes file matching only.

๐Ÿ“ฑ Device Usage Admin

KTools notes which kind of device each person uses so supervisors can plan scanners, phones and cameras:

  • What is recorded: device type (phone, tablet, desktop), system and browser with versions, model when the browser shares it, screen size, touch, number of cameras (camera names only if the camera was already allowed), barcode support, language, time zone and the last IP address. No location.
  • When: preppers once their name is set on the device; admins when signed in. Each person can have several devices. A browser or system update keeps the same entry and refreshes its version.
  • Counting: every scan lookup (SKU, misfit, damage out, supply, label, case pack, edit, search) and every save adds 1 to that device. Nothing about scanning or saving changes.
  • Troubleshooting details: HTTPS, camera permission state, blocked storage or cookies, memory, CPU, graphics, network type and speed, WebView or Enterprise Browser, page load time, the last IP address and which modern browser features work.
  • Problem log: script errors, failed requests, files that did not load, camera start failures (with the reason) and successes (resolution, torch), and hardware-scanner timing (whether it ends with Enter). Scanned codes and typed text are never recorded.
  • Where to see it: Admin > Admin Tools > Device Usage (permission devices.view): Preppers, Admins and Problems tabs, warnings per device, problem log and device details under each device.

Connection drops (2026-10-07): stations now report Connection lost (offline under 1 minute, 1โ€“5 minutes or over 5 minutes) and Save did not go through (Save pressed offline, connection dropped mid-save, or a server error). They are sent once the station is back online, counted per device and page, and included in the Problems tab and the dashboard Devices tile. One device or spot showing them often points to weak Wi-Fi there; every device at once points to the internet connection or the server.

Camera barcode decoding diagnostics implemented locally 2026-10-06: Admin Tools โ†’ Device Usage โ†’ device Problem log / Device details, or Problems โ†’ Also show information entries. Existing Quagga-based camera scanners now emit Barcode decoded (first successful decoded frame, no code value), Camera scan session (duration, processed-frame callback count, decoded-frame count, configured reader names, worker count and close/page-leave reason), and No barcode decoded after 15 seconds of visible running camera without decoding or when such a session closes. A short cancellation is Info, not a device fault; an unsuccessful long session is a troubleshooting warning, not proof the device is broken or that a barcode was presented. Zero processed frames suggests scanner processing/start/worker issues; processed frames without decoding directs checks toward focus/light/resolution/reader compatibility. Decoder success does not prove the page accepted the detection or its inventory lookup succeeded; compare request/script errors at that time. Diagnostics retain existing batching/rate limits, deduplication, devices.view permissions and device ownership; no new schema. No barcode values, camera images, decoder frame data or typed text are stored. These hooks apply to Quagga camera scanners; hardware scanners retain timing/suffix diagnostics. Device rows must have reported before events can be attached. Updated app/knowledge/system/15-device-usage.md, docs/DEVICES.md and online/offline manual parity with handoff entries. Simulated decoder/session/timeout/cancel/privacy and PHP/JS/knowledge checks pass locally; real camera/device acceptance pending.

Iron Bot device research implemented locally 2026-10-06: Admin Tools โ†’ Device Usage โ†’ Preppers or Admins โ†’ Ask Iron Bot on a device. Review the structured technical snapshot, optionally describe the issue (maximum 1,000 characters; no secrets), then Send for research. Viewing requires devices.view; submission also requires help.live.view and connected Live Help. The existing ktools-help worker receives a read-only device_research job with browser/OS/model, capabilities, warnings, up to 40 action totals and 40 recent diagnostic groups; oversized reports omit detailed capabilities and reduce events to 20. IP addresses, owner identities, camera labels and raw errors are excluded; numeric scanner counters are extracted without barcode values or images. Iron Bot is instructed to research official public sources using generic model/version/symptom queries, cite links and distinguish verified findings from uncertainty. Web research depends on tools configured on the Iron Bot PC; unavailable research must be labeled. No automatic fixes, commands, settings changes or installations are authorized. Recommendations tab retains the request, historical snapshot, status and answer in the database (schema 0104), latest 200 shown; Refresh status checks queued/processing requests. Requests share Live Help limits (30 questions per hour) and timeouts. For failed requests check Live Help connection and Error Logs, then submit a new request. Retry uses one stable request ID; successful callback stores the answer transactionally. Existing ordinary help and game drafts keep their separate instructions. Local automated validation is complete; live deployment, worker web tools and real-device acceptance remain unverified.

Device research modal styling updated locally 2026-10-06: Admin Tools โ†’ Device Usage โ†’ Ask Iron Bot opens centered in the viewport using explicit fixed positioning and auto margins, overriding admin reset styles. It uses the shared admin dialog header, close control, body spacing, theme colors, rounded diagnostic panel and separated action row; mobile viewport bounds keep content scrollable. Request/recommendation behavior and permissions are unchanged. PHP and JavaScript syntax checks pass; live browser acceptance pending. Knowledge coverage: app/knowledge/system/15-device-usage.md and matching online/offline Device Usage articles.

Camera controls implemented locally 2026-10-07: open a station camera scanner and use Camera to select another lens if the preview is blurry; choose a back/rear camera where its label identifies one. Camera names become available only after permission is granted. Automatic rear camera restores browser selection. The choice is remembered in this browser on this device, without changing another device. Capture requests 1280 ร— 720 using ideal constraints; the browser may deliver a different size, shown below Camera. A missing saved camera or unsupported constraints retry the default rear camera with original-size behavior; permission denial is not retried. Supported continuous autofocus is requested on the active camera track; cameras without that capability retain their own focus behavior. No focus improvement is guaranteed. Close/reopen scanners normally; label readers, field acceptance and saving remain unchanged. No camera images or barcode values are stored by these controls. Device Usage records camera size and supported focus modes; supported modes do not prove the current focus setting. For trouble, clean the lens, improve light, move farther from the label and compare the same label in the phone Camera app. Try each rear camera and compare Device Usage scan-session timing. No new permissions or schema. Physical-phone acceptance remains pending site upload and testing.

Verified locally 2026-10-07: Admin Tools โ†’ Device Usage โ†’ Recommendations (devices.php?who=research) starts with every recommendation collapsed on each page load. Headers retain request, device, status and time information. Click Expand or activate the header with Enter/Space to read a recommendation; Collapse hides it again. Expand all and Collapse all still work for the current page. Prior session expansion state is no longer restored; direct recommendation links scroll to its collapsed header. Stored requests, answers and permissions remain unchanged. Hosted visual acceptance pending upload.

Local asset restoration verified 2026-10-07: missing Misfits/Pick List photos were recovered into the current misfit_images folder from previous local site copies. Existing files were preserved; restored files were validated as images and checked against their source hashes. Upload the misfit_images folder with the site, then reopen Misfits/Pick List to verify photos load. This does not change database records or restore unavailable external GRTC thumbnails. Historical Device Usage image-load entries remain as history; live verification requires upload. Missing image files can generate repeated file-load errors even when the device itself works.

Image diagnostics and placeholder handling updated locally 2026-10-07: Misfits clears an uploaded-photo preview by removing its src attribute, avoiding an accidental image request for the current index.php page. Prep List/Pick List image fallbacks disable their own error handler before switching to the local icon, preventing repeated fallback failures. Device Usage keeps failed external GRTC upcthumbs/skuthumbs requests as Catalog thumbnail unavailable information, separate from problem counts; the error alone cannot distinguish missing remote images from network/blocking issues. Empty preview sources are ignored. Missing local uploaded photos, scripts and styles remain File did not load problems. Historical entries remain unchanged. Upload updated views/misfits.php, views/prep-list.php, views/pick-list.php, assets/device-profile.js and app/lib/DeviceUsage.php; refresh station pages, clear/reselect a Misfits photo, and check new Device Usage entries. Scanning, saved records and permissions are unchanged. Physical-device/hosted acceptance pending.

โš”๏ธ Warehouse Legends: Gamification & Leveling Engine RPG

Warehouse Legends 3 admin management is available under Warehouse Legends: Command Center, Players, Rounds & Bosses, Daily Roles, Career & Progress, Items & Loot, Kiosk & Rewards, Rules & Scoring, Audit Ledger, Content Studio and Game Manual. In addition, the top navigation bar includes a live Warehouse Legends Snapshot icon (๐Ÿ†) next to the Device Status icon, displaying real-time game status, active season, preppers scoring today, pending queue counts, active boss HP damage meter, daily Titan unit target progress, and recent round results with MVPs.

Open Rules & Scoring โ†’ Core Settings to review the game switch. Keep it OFF while the scoring engine and prepper Game Hub/HUD are being completed. The Game Manual shows settings and definitions; mockups do not prove gameplay is live.

Daily engine code has been tested locally for Titan targets, team streaks, random roles, counter-attacks and shipment penalties. Inventory saves, edits, deletions and problem transitions now use a retry-safe scoring queue. Audit Ledger โ†’ Points Ledger shows queued/held/failed work. After fixing the underlying error, an administrator with legends.audit.reverse can click Retry on a failed event; the original work snapshot and rules are preserved and Change History records the retry. Game OFF leaves retried work queued. Daily scan coin caps use the original dayโ€™s net ledger total. Older releases preserve todayโ€™s coin display. Unrecoverable spent or transferred rewards from deleted records appear as reward_recovery Integrity Flags for supervisor review. Prep minutes are optional: blank or 0 saves normally, and productivity speed includes only positive timed sessions. The legacy API retains untimed history for compatibility. Prep-time reports now retain separate saved sessions for repeated SKUs; schema0094 and a fresh legacy import are needed to recover previously omitted history. Scalar quest, track and metric-reward totals now reconcile record edits/deletions in their original period, including removal and later re-earning of rewards. Career level, badge-count and thousands-of-units counters now recalculate from surviving ledger totals, including downward corrections and re-earned rewards. Attendance now distinguishes acknowledged days off from automatically closed requests; call-ins with no work break streaks. Explicit Freeze use is built in the domain; its Game Hub button is still pending. Late work edits/deletions and held releases now recalculate closed Clean Run days and original-period clean-day quest rewards; ordered streak totals rebuild without double counting. Attendance acknowledgement/removal now queues automatic recalculation of affected closed days. Titan crew/Breaker coins and win metrics now reconcile target invalidation, restoration and contributor ranking. Corrected Titan outcomes also rebuild later cached team-streak displays, preserving inactive days and resetting after worked losses. Titan automatic badges and unspent loot now reconcile win invalidation/restoration using recorded outcomes, without chance rerolls. Weekly Titan boxes now reconcile whole-week wins and three surviving work days, preserving the original loot outcome. Historical season rewards now use the matching season date range, preserving newer-season badges during old corrections. Inventory event badges now preserve other qualifying records, while edited/deleted-record loot reconciles per source. First-daily eligibility now moves to the earliest surviving scored record after edits/deletions, without duplicate items. Hidden targets now fill and replace from fresh cached Prep List entries with remaining quantity, without repeating a SKU in the round or making GRTC calls; stale or exhausted caches leave a smaller pool. Corrected Hidden SKU work now retires invalid claims and restores only the original finder when the original SKU returns; deleted or zero-quantity work cannot keep the discovery reward. Boss victory rewards now reconcile corrected work against the original defeat roster and award period, restoring original outcomes without chance rerolls. Corrected boss damage now updates closed round win/loss status and reconciles the following started roundโ€™s loss penalty; restored victories reuse original outcomes. Mystery guessing is built in the domain with opening-time checks, hashed answer validation, retry-safe rewards and escalating wrong-answer costs; consumable clue-power items now have retry-safe domain use, consuming one item and adding clue power without XP or damage. Mind Reader now contributes separate clue power on positive work. Actual saved-work tests verify clue contributions disappear on zero edits/deletions, retain original strength on restoration and remain zero after repeated deletion. Quality Guardianโ€™s drawn partner now has a one-use Momentum correction shield; Clean Run and ability-pause consequences still apply. Actual correction-queue tests confirm first-use Momentum protection, retained Clean Run/pause consequences, one audit row and normal reset on the second correction. Categorized Misfits Send to Prep now queues Misfit Medic damage once for an unambiguously matched worker; marks/imported history do not count as resolutions. Actual partial/full Send to Prep saves now pass reward queue tests, including no repeat for an already removed row. Attribution prefers the login accountโ€™s linked prepper identity and falls back to one exact normalized name. API prep batches now collect reward audit IDs and queue only after commit; rollbacks cannot award game damage. The full API dispatcher batch create/stage/commit/replay flow now passes game-reward checks while preserving success/idempotent replay responses. Satchel equip/unequip is now built in the domain: one owned enabled ability at a time, no stock consumption, and stale retries preserve newer choices. Gifting now transfers only duplicates, keeps one sender copy, rejects self/excluded recipients and records retry-safe transfer history. Daily Mystery and Weekly Ability box claims now use enabled weighted drops, fixed warehouse periods and recorded outcomes so retries cannot reroll or grant twice. XP and boss-damage consumables now apply configured effects and consume one copy transactionally, with retry-safe results. Word Find now reveals matching FNSKU letters, pays the planned word-length bonus and records replay-safe replacement; saved FNSKU snapshots preserve original letters and Skeleton Key consumes once to reveal one position. Correction reconstruction and player UI remain pending. Calendar claims now require positive surviving scored work today, use the configured day-of-month reward and pay only once. Calendar edits/deletions now revoke the original reward when qualifying work is removed and restore it once when work returns. Spent rewards require supervisor review through recovery flags. Item-specific correction verification, authenticated Rewards UI and multi-step tracks remain pending. Kiosk purchases now verify unlock level, coins and stock, deliver configured in-game items once, and reserve gift-card budget in FIFO order with the monthly player limit. Supervisor Deliver/Refund actions on Kiosk & Rewards โ†’ Claim Queue recheck waiting reservations; refunds restore coins once. Month rollover and reduced budgets reallocate unfulfilled cards. Electronic cards must be sent manually. Player Kiosk forms, cosmetics and notifications remain pending. Legends notification choices are now registered in Settings โ†’ Notification preferences. New gift-card claims notify authorized supervisors; active accounts linked to a prepper receive that prepperโ€™s card status, Kiosk unlock, badge and gift notices when enabled. Reward rollback and replay do not leave duplicate success notices. Personal Game Hub links and the remaining supervisor event producers are pending. Tier-box odds and remaining effects are still pending. Hosted HTTP acceptance, undo handling, other action hooks, shield browser/player identity checks and authenticated Game Hub/Satchel forms are pending. Historical rounds without defeat snapshots, other shared awards, player celebrations, Season Pass interactions and recovery debts remain in progress. Full game acceptance checks and the prepper screens are still in progress. Targets use warehouse dates; days with no work preserve the team streak, held work is excluded, and retrying daily work does not repeat penalties or rewards.

Warehouse Legends AI draft bridge hooks locally verified 2026-10-05: explicitly tagged legends_ai jobs receive kind=legends_draft and the wl-draft fenced JSON protocol with requested content schemas. Ordinary Live Help remains read-only guidance and does not create drafts. The existing LegendsAiDrafts::request domain requires help.live.view and legends.studio.ai, accepts at most four content types and eight requested drafts, and uses the configured Live Help bridge; existing queue/rate limits apply. Claim rechecks AI permission. Successful callbacks validate/sanitize blocks and save review-only wl_content_drafts together with the answer in one transaction; storage failures roll back for retry, and repeated callbacks do not duplicate drafts. Inactive accounts or revoked AI permission cannot save drafts. AI cannot set enabled; Kiosk drafts are forced to in_game with zero gift-card value. Review saved drafts under Content Studio โ†’ Drafts waiting (admin/legends-studio.php#drafts); approval requires legends.studio.approve and adds content switched off unless the reviewer chooses switch on. Invalid fields remain blocked by content validation. AI Generator is now available through Content Studio โ†’ AI Generator; ordinary chat answers do not create drafts. Real bridge/browser acceptance remains outstanding; the game stays OFF.

Prepper boss information and Word Find assignment fixed locally 2026-10-06: open Legends โ†’ Hub for boss story (or defeat message), team damage, your round damage, HP and cutoff; Boss adds status, week/start and end, configured enraged HP threshold and daily counter-attack range/target count/enraged increase, with the damage leaderboard. Story and attack ranges use the current Boss Library entry linked to the active round; no mystery answers or private ledger metadata are exposed. Pending or held work does not count until verified/released. Counter shields can block a hit; attack deductions cannot exceed the targeted playerโ€™s positive round damage. Hub rank uses its icon/label rather than rendering [object Object]. Word Find now assigns a puzzle on any eligible positive saved record even without an FNSKU or with only numeric identifiers; no letters are revealed by numeric-only input. Lookup alone, game OFF, disabled Word Find and excluded players do not start a puzzle. Hub recovers a missing assignment if existing current undeleted positive-quantity saved work has net positive unheld Titan-unit contributions; this recovery reveals no letters and replays no points, XP, damage, coins or solve rewards. Existing assigned words are retained. Word Find empty states distinguish disabled feature, no enabled alphabetic Word Bank entries, and awaiting verified saved work; held/problem work must be released first. No schema changes. Tests verify numeric/missing-identifier assignment, idempotency, no rewards from assignment/recovery, existing-work recovery, lookup-only state and public boss metadata without mystery secrets. PHP/JS/knowledge checks pass; live deployment and real-player acceptance remain pending.

Daily role assignment repaired locally 2026-10-06: configured Pallet Pirate remains a separate admin-selected role, not proof the random draw ran. Random roles use active, non-excluded preppers with unheld scan scoring in the seven days before the day plus that dayโ€™s scans; yesterdayโ€™s points still rank top/bottom pools. Previously today-only scorers were excluded and rolled-up days stopped retrying after an early empty pool. ensureDay now retries missing roles even after initialization, and the Game Hub refresh retries the current draw. At least two eligible preppers are still required. Only enabled roles for weekday zero (every day) or the current weekday participate; available holders/pools and partner requirements still limit assignments, so not every prepper or role necessarily gets an assignment. Existing roles/holders are preserved; only missing role codes are inserted, and progress is awarded only after a successful new insertion. Repeated refreshes do not redraw existing roles. No historical scoring/backfill, game-off draws, inactive/excluded candidates, schema changes or Pallet Pirate selection changes. Admin troubleshooting: Roles editor โ†’ check enabled/weekday and pools; verify at least two eligible saved scan scorers, then refresh the prepper Hub/Roles page after deployment. Tests verify early empty day recovery, current-day eligibility, partial draw recovery, stable repeated assignment and disabled/wrong-weekday/inactive filtering. PHP/knowledge checks pass locally; live assignment verification pending.

Cash kiosk prizes added locally 2026-10-06 by owner request, superseding the earlier gift-card-only real-world reward decision. Admin Warehouse Legends โ†’ Rewards / Kiosk โ†’ create or edit a Kiosk item โ†’ Kind: Cash prize (needs approval). Set Cash / gift card value (cents), minimum 100 cents ($1), coin price, level, stock and enabled state; save with existing legends.kiosk.manage permission. In-game items remain instant; cash and gift cards require supervisor fulfillment and share the existing monthly budget and per-prepper claim limit (setting keys unchanged, labels now combined). $5 is 500 cents. Prepper Legends โ†’ Kiosk shows type, amount and approval requirement; checkout deducts coins once, reserves stock and creates pending or waitlisted claims. Admin claim queue shows snapshotted reward kind and amount; cash uses Mark cash paid after the supervisor actually pays it, while gift cards retain Approve & emailed. This records fulfillment only: no cash transfer, payment processor or automatic email is added. Refund restores coins/stock and frees shared budget; waitlisted claims cannot be fulfilled until pending. Schema0105 adds reward_kind to claims, classifies old nonzero-value claims as gift_card and preserves the purchased kind even if catalog items change. Existing kiosk level, exclusion, permissions, CSRF, budget serialization and retry protection remain. AI-generated kiosk drafts remain restricted to in-game rewards with zero monetary value; admins configure cash directly. Tests verify cash validation, pending approval, one-time charge, shared-budget waitlisting, refund/stock restoration, promotion, gift fulfillment and cash paid-kind preservation. PHP/JS/knowledge parity verified locally; deployment/schema rollout and real fulfillment acceptance pending.