{"level":"info","time":"2026-01-26T22:54:24Z","caller":"/build/pkg/api/methods/run.go:50","message":"received run request"} {"level":"info","time":"2026-01-26T22:54:24Z","caller":"/build/pkg/service/queues.go:266","message":"processing token: {2026-01-26 22:54:24.295361906 +0000 UTC m=+26108.460787649 749b57a8 **launch.random:TVEpisode/Duck Tales -* API false}"} {"level":"info","time":"2026-01-26T22:54:24Z","caller":"/build/pkg/service/queues.go:73","message":"running script (1 cmds): **launch.random:TVEpisode/Duck Tales -*"} {"level":"info","time":"2026-01-26T22:54:24Z","caller":"/build/pkg/zapscript/commands.go:359","message":"running command: {{map[]} launch.random [TVEpisode/Duck Tales -*]}"} {"level":"error","error":"failed to get random game matching 'Duck Tales -*': sql: no rows in result set","time":"2026-01-26T22:54:24Z","caller":"/build/pkg/zapscript/commands.go:365","message":"error running command: {{map[]} launch.random [TVEpisode/Duck Tales -*]}"} {"level":"error","error":"failed to run zapscript command: failed to get random game matching 'Duck Tales -*': sql: no rows in result set","time":"2026-01-26T22:54:24Z","caller":"/build/pkg/service/queues.go:355","message":"error launching token"} {"level":"info","time":"2026-01-26T22:55:01Z","caller":"/build/pkg/readers/pn532/pn532.go:412","message":"new tag detected: MIFARE (749b57a8)"} {"level":"warn","uid":"749b57a8","manufacturer":"Unknown","time":"2026-01-26T22:55:01Z","caller":"/build/pkg/readers/pn532/tags.go:265","message":"tag appears to be a clone (unknown manufacturer)"} {"level":"info","uid":"749b57a8","type":"MIFARE Classic","variant":"MIFARE Classic 1K","sectors":16,"totalMemory":1024,"manufacturer":"Unknown","time":"2026-01-26T22:55:01Z","caller":"/build/pkg/readers/pn532/tags.go:301","message":"MIFARE tag details"} {"level":"info","time":"2026-01-26T22:55:01Z","caller":"/build/pkg/readers/pn532/pn532.go:443","message":"detected MIFARE tag: 749b57a8"} {"level":"info","time":"2026-01-26T22:55:01Z","caller":"/build/pkg/readers/pn532/pn532.go:445","message":"NDEF text: **launch.random:TVEpisode/Duck Tales -*"} {"level":"info","time":"2026-01-26T22:55:01Z","caller":"/build/pkg/service/readers.go:412","message":"new token scanned: &{2026-01-26 22:55:01.832015452 +0000 UTC m=+26145.997441196 MIFARE 749b57a8 **launch.random:TVEpisode/Duck Tales -* Reader pn532-fuwtjpa2 false}"} {"level":"info","time":"2026-01-26T22:55:01Z","caller":"/build/pkg/service/readers.go:453","message":"sending token to queue: &{2026-01-26 22:55:01.832015452 +0000 UTC m=+26145.997441196 MIFARE 749b57a8 **launch.random:TVEpisode/Duck Tales -* Reader pn532-fuwtjpa2 false}"} {"level":"info","time":"2026-01-26T22:55:01Z","caller":"/build/pkg/service/queues.go:266","message":"processing token: {2026-01-26 22:55:01.832015452 +0000 UTC m=+26145.997441196 MIFARE 749b57a8 **launch.random:TVEpisode/Duck Tales -* Reader pn532-fuwtjpa2 false}"} {"level":"info","time":"2026-01-26T22:55:01Z","caller":"/build/pkg/service/queues.go:73","message":"running script (1 cmds): **launch.random:TVEpisode/Duck Tales -*"} {"level":"info","time":"2026-01-26T22:55:01Z","caller":"/build/pkg/zapscript/commands.go:359","message":"running command: {{map[]} launch.random [TVEpisode/Duck Tales -*]}"} {"level":"error","error":"failed to get random game matching 'Duck Tales -*': sql: no rows in result set","time":"2026-01-26T22:55:01Z","caller":"/build/pkg/zapscript/commands.go:365","message":"error running command: {{map[]} launch.random [TVEpisode/Duck Tales -*]}"} {"level":"error","error":"failed to run zapscript command: failed to get random game matching 'Duck Tales -*': sql: no rows in result set","time":"2026-01-26T22:55:01Z","caller":"/build/pkg/service/queues.go:355","message":"error launching token"} {"level":"info","time":"2026-01-26T22:55:02Z","caller":"/build/pkg/readers/pn532/pn532.go:418","message":"tag removed"} {"level":"info","time":"2026-01-26T22:55:02Z","caller":"/build/pkg/service/readers.go:457","message":"token was removed"} {"level":"info","time":"2026-01-26T22:56:15Z","caller":"/build/pkg/api/methods/media.go:626","message":"received media request"} {"level":"info","time":"2026-01-26T22:56:15Z","caller":"/build/pkg/api/methods/history.go:31","message":"received tokens request"} {"level":"info","time":"2026-01-26T22:56:18Z","caller":"/build/pkg/api/methods/run.go:50","message":"received run request"} {"level":"info","time":"2026-01-26T22:56:18Z","caller":"/build/pkg/service/queues.go:266","message":"processing token: {2026-01-26 22:56:18.668295672 +0000 UTC m=+26222.833721415 aa0a20a6 **launch.random:TVEpisode/The Simpsons -* API false}"} {"level":"info","time":"2026-01-26T22:56:18Z","caller":"/build/pkg/service/queues.go:73","message":"running script (1 cmds): **launch.random:TVEpisode/The Simpsons -*"} {"level":"info","time":"2026-01-26T22:56:18Z","caller":"/build/pkg/zapscript/commands.go:359","message":"running command: {{map[]} launch.random [TVEpisode/The Simpsons -*]}"} {"level":"info","time":"2026-01-26T22:56:18Z","caller":"/build/pkg/api/methods/run.go:50","message":"received run request"} {"level":"info","time":"2026-01-26T22:56:18Z","caller":"/build/pkg/service/queues.go:266","message":"processing token: {2026-01-26 22:56:18.671017818 +0000 UTC m=+26222.836443542 aa0a20a6 **launch.random:TVEpisode/The Simpsons -* API false}"} {"level":"info","time":"2026-01-26T22:56:18Z","caller":"/build/pkg/service/queues.go:73","message":"running script (1 cmds): **launch.random:TVEpisode/The Simpsons -*"} {"level":"error","error":"failed to run zapscript command: launch guard: launch already in progress","time":"2026-01-26T22:56:18Z","caller":"/build/pkg/service/queues.go:355","message":"error launching token"} {"level":"error","error":"failed to get random game matching 'The Simpsons -*': sql: no rows in result set","time":"2026-01-26T22:56:18Z","caller":"/build/pkg/zapscript/commands.go:365","message":"error running command: {{map[]} launch.random [TVEpisode/The Simpsons -*]}"} {"level":"error","error":"failed to run zapscript command: failed to get random game matching 'The Simpsons -*': sql: no rows in result set","time":"2026-01-26T22:56:18Z","caller":"/build/pkg/service/queues.go:355","message":"error launching token"} {"level":"info","time":"2026-01-26T22:58:43Z","caller":"/build/pkg/api/methods/run.go:50","message":"received run request"} {"level":"info","time":"2026-01-26T22:58:43Z","caller":"/build/pkg/service/queues.go:266","message":"processing token: {2026-01-26 22:58:43.57959196 +0000 UTC m=+26367.745017703 749b57a8 **launch.random:TVEpisode/Duck Tales -* API false}"} {"level":"info","time":"2026-01-26T22:58:43Z","caller":"/build/pkg/service/queues.go:73","message":"running script (1 cmds): **launch.random:TVEpisode/Duck Tales -*"} {"level":"info","time":"2026-01-26T22:58:43Z","caller":"/build/pkg/zapscript/commands.go:359","message":"running command: {{map[]} launch.random [TVEpisode/Duck Tales -*]}"} {"level":"error","error":"failed to get random game matching 'Duck Tales -*': sql: no rows in result set","time":"2026-01-26T22:58:43Z","caller":"/build/pkg/zapscript/commands.go:365","message":"error running command: {{map[]} launch.random [TVEpisode/Duck Tales -*]}"} {"level":"error","error":"failed to run zapscript command: failed to get random game matching 'Duck Tales -*': sql: no rows in result set","time":"2026-01-26T22:58:43Z","caller":"/build/pkg/service/queues.go:355","messag