how to NOT scan the QRCode on each opening

Run npm run doctor or wechaty run doctor(for docker user), paste output here

Wechaty version: #git[4ed33d2 https://github.com/Microsoft/TypeScript/issues/9944 compact selenium-webdriver types v2, hope @types v3 will publish soon]
Darwin x64 version 16.1.0 memory 27/8192 MB
Docker: false
Node version: v7.2.1

Expected behavior
I understand that giving a profile string will name the bot, and the cookie data will be saved, so I don't need to re-scan the QR code to login each time. ref:
https://github.com/wechaty/wechaty/wiki/API#wechatyinstanceprofilestring-wechaty
Actual behavior
Data IS saved to a file
Each time the bot starts up, it's needed to scan the QRCode again.
Steps to reproduce the behavior (and fixes, if any)
Launch a bot using any method. pass in:
const WcBot = Wechaty.instance(
  {profile: "SOMENAME"}
)

the file SOMENAME.wechat.json IS created.
I am using ctrl-C to kill the node process - is this correct?
I have tried leaving the browser open and closing it.
Paste the full output logs here with WECHATY_LOG=silly set
next comment

initial launch
➜  kbot git:(master) ✗ echo $WECHATY_LOG
silly
➜  kbot git:(master) ✗ npm start

><EMAIL_ADDRESS>start /Users/dc/dev/rikai/ta-bot/kbot
> DEBUG=*,-engine*,- ts-node bot.ts

SILL Brolog WECHATY_LOG set level to silly
SILL StateMonitor constructor(Wechaty, standby)
VERB Wechaty contructor()
VERB Wechaty addListener(login, function)
VERB Wechaty addListener(logout, function)
VERB Wechaty addListener(error, function)
VERB Wechaty addListener(scan, function)
VERB Wechaty addListener(message, function)
  bot:startup startup +0ms
  bot:startup initDb +2ms
  bot:startup done +28ms
INFO Wechaty v#git[4ed33d2 https://github.com/Microsoft/TypeScript/issues/9944 compact selenium-webdriver types v2, hope @types v3 will publish soon] initializing...
VERB Wechaty puppet: web
VERB Wechaty head: chrome
VERB Wechaty profile: KBOT.wechaty.json
VERB Wechaty uuid: dafda773-e6a9-4c69-883c-bbcf13b7b9f9
SILL StateMonitor Wechaty:current() - standby
VERB StateMonitor Wechaty:target(ready) <- (standby)
VERB StateMonitor Wechaty:current(ready,false) <- (standby,true)
SILL StateMonitor constructor(Puppet, dead)
VERB Config puppetInstance(PuppetWeb)
VERB PuppetWeb init() with head:chrome, profile:KBOT.wechaty.json
VERB StateMonitor Puppet:target(live) <- (dead)
VERB StateMonitor Puppet:current(live,false) <- (dead,true)
SILL UtilLib getPort(18788)
SILL UtilLib getPort(18788) return: 20057
VERB PuppetWeb init() getPort 20057
VERB PuppetWeb initServer()
SILL StateMonitor Puppet:target() - live
VERB PuppetWebServer init() on port 20057
  express:application set "x-powered-by" to true +0ms
  express:application set "etag" to 'weak' +2ms
  express:application set "etag fn" to [Function: wetag] +0ms
  express:application set "env" to 'development' +1ms
  express:application set "query parser" to 'extended' +0ms
  express:application set "query parser fn" to [Function: parseExtendedQueryString] +0ms
  express:application set "subdomain offset" to 2 +0ms
  express:application set "trust proxy" to false +0ms
  express:application set "trust proxy fn" to [Function: trustNone] +1ms
  express:application booting in development mode +0ms
  express:application set "view" to [Function: View] +0ms
  express:application set "views" to '/Users/dc/dev/rikai/ta-bot/kbot/views' +0ms
  express:application set "jsonp callback name" to 'callback' +0ms
  express:router use / query +14ms
  express:router:layer new / +1ms
  express:router use / expressInit +1ms
  express:router:layer new / +0ms
  express:router use / jsonParser +0ms
  express:router:layer new / +0ms
  express:router use / <anonymous> +0ms
  express:router:layer new / +0ms
  express:router:route new /ding +0ms
  express:router:layer new /ding +1ms
  express:router:route get /ding +0ms
  express:router:layer new / +0ms
VERB PuppetWebServer createHttpsServer() listen on port 20057
  socket.io:server initializing namespace / +0ms
  socket.io:server creating engine.io instance with opts {"path":"/socket.io"} +2ms
  socket.io:server attaching client serving req handler +3ms
VERB PuppetWeb initServer() done
VERB PuppetWeb initBrowser()
SILL StateMonitor constructor(Browser, close)
VERB PuppetWebBrowser constructor() with head(chrome) sessionFile(KBOT.wechaty.json)
VERB PuppetWebBrowserDriver constructor(chrome)
VERB PuppetWebBrowserCookie constructor(BrowserDriver, KBOT.wechaty.json)
SILL StateMonitor Puppet:target() - live
VERB PuppetWebBrowser init()
SILL StateMonitor Browser:current() - close
VERB StateMonitor Browser:target(open) <- (close)
VERB StateMonitor Browser:current(open,false) <- (close,true)
VERB PuppetWebBrowserDriver init() for head: chrome
VERB PuppetWebBrowserDriver initChromeDriver()
VERB PuppetWebBrowserDriver initChromeDriver() new Builder()
VERB PuppetWebBrowserDriver initChromeDriver() new Builder() done
VERB PuppetWebBrowserDriver valid()
VERB PuppetWebBrowserDriver valid() getSession()
  bot:Grammar gram count 49 +112ms
VERB PuppetWebBrowserDriver valid() getSession() then() done
VERB PuppetWebBrowserDriver valid() getSession() then() watchdog timer exist, will be cleared
VERB PuppetWebBrowserDriver watchdogTimer = null after set null
VERB PuppetWebBrowserDriver valid() driver.getSession() done()
VERB PuppetWebBrowserDriver valid() driver.executeScript() done
SILL PuppetWebBrowserDriver valid() driver ok
VERB PuppetWebBrowserDriver initChromeDriver() valid() done: true
SILL PuppetWebBrowserDriver initChromeDriver() success
VERB PuppetWebBrowser init() driver.init() done
VERB PuppetWebBrowser open(https://wx.qq.com/zh_CN/htmledition/v2/images/webwxgeticon.jpg)
VERB PuppetWebBrowserCookie load() from KBOT.wechaty.json
SILL PuppetWebBrowserCookie addCookies({"domain":".wechat.com","expiry":1482375002,"httpOnly":false,"name":"mm_lang","path":"/","secure":false,"value":"en_US"})
WARN PuppetWebBrowserCookie addCookies() exception: invalid cookie domain: invalid domain:".wechat.com"
  (Session info: chrome=55.0.2883.95)
  (Driver info: chromedriver=2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1),platform=Mac OS X 10.12.1 x86_64)
ERR PuppetWebBrowserCookie load() add() exception: invalid cookie domain: invalid domain:".wechat.com"
  (Session info: chrome=55.0.2883.95)
  (Driver info: chromedriver=2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1),platform=Mac OS X 10.12.1 x86_64)
VERB PuppetWebBrowser browser.loadSession(KBOT.wechaty.json) exception: invalid cookie domain: invalid domain:".wechat.com"
  (Session info: chrome=55.0.2883.95)
  (Driver info: chromedriver=2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1),platform=Mac OS X 10.12.1 x86_64)
VERB PuppetWebBrowser open(https://wx.qq.com)
SILL StateMonitor Browser:target() - open
VERB StateMonitor Browser:current(open,true) <- (open,false)
VERB PuppetWeb initBrowser() done
VERB PuppetWeb initBridge()
VERB PuppetWebBridge new Bridge({puppet: PuppetWeb, port: 20057})
SILL StateMonitor Puppet:target() - live
VERB PuppetWebBridge init()
VERB PuppetWebBridge inject()
VERB PuppetWebBridge getInjectio()
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute("injectioReturnValue = /** * * Wechaty - Wechat for Bot, and human who talk to  ... ")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL PuppetWebBridge inject() eval(Wechaty) return code[200] message[WechatyBro Inject Done] port[20057]
VERB PuppetWebBridge proxyWechaty(init, )
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute("return typeof WechatyBro === "undefined"")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute(" const callback = arguments[arguments.length - 1] const isAsync = (typeof  ... ")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL PuppetWebBridge inject() Wechaty.init() return code[200] message[WechatyBro Init Succ on port: 20057] port[20057]
VERB PuppetWebBridge ding(inject())
VERB PuppetWebBridge proxyWechaty(ding, inject())
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute("return typeof WechatyBro === "undefined"")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute(" const callback = arguments[arguments.length - 1] const isAsync = (typeof  ... ")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL PuppetWebBridge inject() ding success
VERB PuppetWeb initBridge() done
VERB StateMonitor Puppet:current(live,true) <- (live,false)
SILL PuppetWebWatchdog onFeed: 120000, HEARTBEAT[inited]
SILL StateMonitor Puppet:target() - live
SILL StateMonitor Puppet:inprocess() false
VERB PuppetWebWatchdog clearWatchDogTimer() nothing to clear
SILL PuppetWebWatchdog setWatchDogTimer(120000, HEARTBEAT:[inited])
SILL PuppetWebWatchdog monitorScan(HEARTBEAT)
SILL PuppetWebWatchdog autoSaveSession()
VERB PuppetWebWatchdog autoSaveSession() skiped as no this.userId
SILL PuppetWebWatchdog memoryCheck() free: 32 MB, require: 4 MB
VERB PuppetWeb init() done
VERB StateMonitor Wechaty:current(ready,true) <- (ready,false)
  socket.io:server incoming connection with id zusf-b1bSgxUI6MIAAAA +3s
  socket.io:client connecting to namespace / +0ms
  socket.io:namespace adding socket to nsp / +1ms
  socket.io:socket socket connected - writing packet +2ms
  socket.io:socket joining room zusf-b1bSgxUI6MIAAAA +0ms
  socket.io:client writing packet {"type":0,"nsp":"/"} +1ms
  socket.io-parser encoding packet {"type":0,"nsp":"/"} +3s
  socket.io-parser encoded {"type":0,"nsp":"/"} as 0 +0ms
VERB PuppetWebServer createSocketIo() got connection from browser
VERB PuppetWebServer initEventFromClient()
VERB PuppetWebEvent onServerConnection: [object Object]
  socket.io:socket joined room zusf-b1bSgxUI6MIAAAA +2ms
  socket.io-parser decoded 2["log","connectSocket()"] as {"type":2,"nsp":"/","data":["log","connectSocket()"]} +768ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["log","connectSocket()"]} +767ms
  socket.io:socket emitting event ["log","connectSocket()"] +0ms
  socket.io:socket dispatching an event ["log","connectSocket()"] +1ms
VERB PuppetWebEvent onServerLog(connectSocket())
  socket.io-parser decoded 2["log","connectSocket: io not found. loading lib..."] as {"type":2,"nsp":"/","data":["log","connectSocket: io not found. loading lib..."]} +4ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["log","connectSocket: io not found. loading lib..."]} +3ms
  socket.io:socket emitting event ["log","connectSocket: io not found. loading lib..."] +0ms
  socket.io:socket dispatching an event ["log","connectSocket: io not found. loading lib..."] +0ms
VERB PuppetWebEvent onServerLog(connectSocket: io not found. loading lib...)
  socket.io-parser decoded 2["log","checkScan() - code change detected: from null to 0"] as {"type":2,"nsp":"/","data":["log","checkScan() - code change detected: from null to 0"]} +2ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["log","checkScan() - code change detected: from null to 0"]} +1ms
  socket.io:socket emitting event ["log","checkScan() - code change detected: from null to 0"] +0ms
  socket.io:socket dispatching an event ["log","checkScan() - code change detected: from null to 0"] +0ms
VERB PuppetWebEvent onServerLog(checkScan() - code change detected: from null to 0)
  socket.io-parser decoded 2["scan",{"code":0,"url":"https://login.weixin.qq.com/qrcode/ofW7AHClxQ=="}] as {"type":2,"nsp":"/","data":["scan",{"code":0,"url":"https://login.weixin.qq.com/qrcode/ofW7AHClxQ=="}]} +0ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["scan",{"code":0,"url":"https://login.weixin.qq.com/qrcode/ofW7AHClxQ=="}]} +0ms
  socket.io:socket emitting event ["scan",{"code":0,"url":"https://login.weixin.qq.com/qrcode/ofW7AHClxQ=="}] +0ms
  socket.io:socket dispatching an event ["scan",{"code":0,"url":"https://login.weixin.qq.com/qrcode/ofW7AHClxQ=="}] +0ms
VERB PuppetWebEvent onServerScan(0)
SILL PuppetWebBrowserCookie save() to file KBOT.wechaty.json
  socket.io-parser decoded 2["ding","heartbeat@browser"] as {"type":2,"nsp":"/","data":["ding","heartbeat@browser"]} +3ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["ding","heartbeat@browser"]} +3ms
  socket.io:socket emitting event ["ding","heartbeat@browser"] +0ms
  socket.io:socket dispatching an event ["ding","heartbeat@browser"] +0ms
SILL PuppetWebEvent onServerDing(heartbeat@browser)
SILL PuppetWebWatchdog onFeed: 60000, HEARTBEAT[heartbeat@browser]
SILL StateMonitor Puppet:target() - live
SILL StateMonitor Puppet:inprocess() false
SILL PuppetWebWatchdog clearWatchDogTimer() [120] seconds left
SILL PuppetWebWatchdog setWatchDogTimer(60000, HEARTBEAT:[heartbeat@browser])
SILL PuppetWebWatchdog monitorScan(HEARTBEAT)
SILL PuppetWebWatchdog autoSaveSession()
VERB PuppetWebWatchdog autoSaveSession() skiped as no this.userId
SILL PuppetWebWatchdog memoryCheck() free: 53 MB, require: 4 MB
  socket.io-parser decoded 2["log","recv ding"] as {"type":2,"nsp":"/","data":["log","recv ding"]} +2ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["log","recv ding"]} +2ms
  socket.io:socket emitting event ["log","recv ding"] +0ms
  socket.io:socket dispatching an event ["log","recv ding"] +0ms
VERB PuppetWebEvent onServerLog(recv ding)
  socket.io-parser decoded 2["log","socket io lib loaded."] as {"type":2,"nsp":"/","data":["log","socket io lib loaded."]} +1ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["log","socket io lib loaded."]} +1ms
  socket.io:socket emitting event ["log","socket io lib loaded."] +0ms
  socket.io:socket dispatching an event ["log","socket io lib loaded."] +0ms
VERB PuppetWebEvent onServerLog(socket io lib loaded.)
SILL PuppetWebBrowserCookie save() saving 3 cookies: pgv_pvi,pgv_si,mm_lang
  socket.io-parser decoded 2["log","connectSocket()"] as {"type":2,"nsp":"/","data":["log","connectSocket()"]} +2ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["log","connectSocket()"]} +2ms
  socket.io:socket emitting event ["log","connectSocket()"] +0ms
  socket.io:socket dispatching an event ["log","connectSocket()"] +0ms
VERB PuppetWebEvent onServerLog(connectSocket())
SILL PuppetWebBrowserCookie save() 3 cookies to KBOT.wechaty.json
SILL PuppetWebWatchdog onFeed: 60000, SCAN[[object Object]]
SILL StateMonitor Puppet:target() - live
SILL StateMonitor Puppet:inprocess() false
SILL PuppetWebWatchdog clearWatchDogTimer() [60] seconds left
SILL PuppetWebWatchdog setWatchDogTimer(60000, SCAN:[[object Object]])
SILL PuppetWebWatchdog monitorScan(SCAN)
SILL PuppetWebWatchdog autoSaveSession()
VERB PuppetWebWatchdog autoSaveSession() skiped as no this.userId
SILL PuppetWebWatchdog memoryCheck() free: 53 MB, require: 4 MB

https://login.weixin.qq.com/qrcode/ofW7AHClxQ==
[0] Scan QR Code in above url to login:
  socket.io-parser decoded 2["ding","heartbeat@browser"] as {"type":2,"nsp":"/","data":["ding","heartbeat@browser"]} +14s
  socket.io:socket got packet {"type":2,"nsp":"/","data":["ding","heartbeat@browser"]} +14s
  socket.io:socket emitting event ["ding","heartbeat@browser"] +1ms
  socket.io:socket dispatching an event ["ding","heartbeat@browser"] +0ms
SILL PuppetWebEvent onServerDing(heartbeat@browser)
SILL PuppetWebWatchdog onFeed: 60000, HEARTBEAT[heartbeat@browser]
SILL StateMonitor Puppet:target() - live
SILL StateMonitor Puppet:inprocess() false
SILL PuppetWebWatchdog clearWatchDogTimer() [47] seconds left
SILL PuppetWebWatchdog setWatchDogTimer(60000, HEARTBEAT:[heartbeat@browser])
SILL PuppetWebWatchdog monitorScan(HEARTBEAT)
SILL PuppetWebWatchdog autoSaveSession()
VERB PuppetWebWatchdog autoSaveSession() skiped as no this.userId
SILL PuppetWebWatchdog memoryCheck() free: 40 MB, require: 4 MB
  socket.io-parser decoded 2["log","checkScan() - code change detected: from 0 to 201"] as {"type":2,"nsp":"/","data":["log","checkScan() - code change detected: from 0 to 201"]} +4s
  socket.io:socket got packet {"type":2,"nsp":"/","data":["log","checkScan() - code change detected: from 0 to 201"]} +4s
  socket.io:socket emitting event ["log","checkScan() - code change detected: from 0 to 201"] +0ms
  socket.io:socket dispatching an event ["log","checkScan() - code change detected: from 0 to 201"] +0ms
VERB PuppetWebEvent onServerLog(checkScan() - code change detected: from 0 to 201)
  socket.io-parser decoded 2["scan",{"code":201,"url":"https://login.weixin.qq.com/qrcode/ofW7AHClxQ=="}] as {"type":2,"nsp":"/","data":["scan",{"code":201,"url":"https://login.weixin.qq.com/qrcode/ofW7AHClxQ=="}]} +5ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["scan",{"code":201,"url":"https://login.weixin.qq.com/qrcode/ofW7AHClxQ=="}]} +5ms
  socket.io:socket emitting event ["scan",{"code":201,"url":"https://login.weixin.qq.com/qrcode/ofW7AHClxQ=="}] +0ms
  socket.io:socket dispatching an event ["scan",{"code":201,"url":"https://login.weixin.qq.com/qrcode/ofW7AHClxQ=="}] +0ms
VERB PuppetWebEvent onServerScan(201)
SILL PuppetWebBrowserCookie save() to file KBOT.wechaty.json
SILL PuppetWebBrowserCookie save() saving 3 cookies: pgv_pvi,pgv_si,mm_lang
SILL PuppetWebBrowserCookie save() 3 cookies to KBOT.wechaty.json
SILL PuppetWebWatchdog onFeed: 60000, SCAN[[object Object]]
SILL StateMonitor Puppet:target() - live
SILL StateMonitor Puppet:inprocess() false
SILL PuppetWebWatchdog clearWatchDogTimer() [56] seconds left
SILL PuppetWebWatchdog setWatchDogTimer(60000, SCAN:[[object Object]])
SILL PuppetWebWatchdog monitorScan(SCAN)
SILL PuppetWebWatchdog autoSaveSession()
VERB PuppetWebWatchdog autoSaveSession() skiped as no this.userId
SILL PuppetWebWatchdog memoryCheck() free: 41 MB, require: 4 MB
https://login.weixin.qq.com/qrcode/ofW7AHClxQ==
[201] Scan QR Code in above url to login:
  socket.io-parser decoded 2["unload","[object Event]"] as {"type":2,"nsp":"/","data":["unload","[object Event]"]} +6s
  socket.io:socket got packet {"type":2,"nsp":"/","data":["unload","[object Event]"]} +6s
  socket.io:socket emitting event ["unload","[object Event]"] +0ms
  socket.io:socket dispatching an event ["unload","[object Event]"] +0ms
  socket.io:client client close with reason transport close +7ms
  socket.io:socket closing socket - reason transport close +1ms
SILL PuppetWebServer initEventsFromClient() on(disconnect) socket.io disconnect: transport close
VERB PuppetWebEvent onServerDisconnect(transport close)
SILL StateMonitor Puppet:current() - live
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
VERB PuppetWebBrowser readyLive()
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL PuppetWebBrowser Browser.execute("return 1+1")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
VERB PuppetWebEvent onServerDisconnect() re-initing bridge
VERB PuppetWebBridge init()
VERB PuppetWebBridge inject()
VERB PuppetWebBridge getInjectio()
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute("injectioReturnValue = /** * * Wechaty - Wechat for Bot, and human who talk to  ... ")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL PuppetWebBridge inject() eval(Wechaty) return code[200] message[WechatyBro Inject Done] port[20057]
VERB PuppetWebBridge proxyWechaty(init, )
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute("return typeof WechatyBro === "undefined"")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute(" const callback = arguments[arguments.length - 1] const isAsync = (typeof  ... ")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL PuppetWebBridge inject() Wechaty.init() return code[200] message[WechatyBro Init Succ on port: 20057] port[20057]
VERB PuppetWebBridge ding(inject())
VERB PuppetWebBridge proxyWechaty(ding, inject())
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute("return typeof WechatyBro === "undefined"")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute(" const callback = arguments[arguments.length - 1] const isAsync = (typeof  ... ")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
  socket.io:server incoming connection with id WbtOXLTRzTBVXF2KAAAB +2s
  socket.io:client connecting to namespace / +1ms
  socket.io:namespace adding socket to nsp / +2ms
  socket.io:socket socket connected - writing packet +1ms
  socket.io:socket joining room WbtOXLTRzTBVXF2KAAAB +0ms
  socket.io:client writing packet {"type":0,"nsp":"/"} +1ms
  socket.io-parser encoding packet {"type":0,"nsp":"/"} +2s
  socket.io-parser encoded {"type":0,"nsp":"/"} as 0 +1ms
VERB PuppetWebServer createSocketIo() got connection from browser
VERB PuppetWebServer initEventFromClient()
VERB PuppetWebEvent onServerConnection: [object Object]
  socket.io:socket joined room WbtOXLTRzTBVXF2KAAAB +3ms
SILL PuppetWebBridge inject() ding success
VERB PuppetWebEvent onServerDisconnect() setTimeout() bridge.init() done.
  socket.io-parser decoded 2["log","login(page refresh)"] as {"type":2,"nsp":"/","data":["log","login(page refresh)"]} +24ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["log","login(page refresh)"]} +25ms
  socket.io:socket emitting event ["log","login(page refresh)"] +0ms
  socket.io:socket dispatching an event ["log","login(page refresh)"] +0ms
VERB PuppetWebEvent onServerLog(login(page refresh))
  socket.io-parser decoded 2["login","page refresh"] as {"type":2,"nsp":"/","data":["login","page refresh"]} +246ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["login","page refresh"]} +251ms
  socket.io:socket emitting event ["login","page refresh"] +0ms
  socket.io:socket dispatching an event ["login","page refresh"] +0ms
VERB PuppetWebEvent onServerLogin(page refresh, 0)
VERB PuppetWebBridge getUserName()
VERB PuppetWebBridge proxyWechaty(getUserName, )
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute("return typeof WechatyBro === "undefined"")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
  socket.io-parser decoded 2["log","connectSocket()"] as {"type":2,"nsp":"/","data":["log","connectSocket()"]} +9ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["log","connectSocket()"]} +3ms
  socket.io:socket emitting event ["log","connectSocket()"] +2ms
  socket.io:socket dispatching an event ["log","connectSocket()"] +0ms
VERB PuppetWebEvent onServerLog(connectSocket())
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute(" const callback = arguments[arguments.length - 1] const isAsync = (typeof  ... ")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
  socket.io-parser decoded 2["log","connectSocket: io not found. loading lib..."] as {"type":2,"nsp":"/","data":["log","connectSocket: io not found. loading lib..."]} +6ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["log","connectSocket: io not found. loading lib..."]} +5ms
  socket.io:socket emitting event ["log","connectSocket: io not found. loading lib..."] +0ms
  socket.io:socket dispatching an event ["log","connectSocket: io not found. loading lib..."] +0ms
VERB PuppetWebEvent onServerLog(connectSocket: io not found. loading lib...)
  socket.io-parser decoded 2["log","checkScan() - already login, no more check, and return(only)"] as {"type":2,"nsp":"/","data":["log","checkScan() - already login, no more check, and return(only)"]} +5ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["log","checkScan() - already login, no more check, and return(only)"]} +10ms
  socket.io:socket emitting event ["log","checkScan() - already login, no more check, and return(only)"] +1ms
  socket.io:socket dispatching an event ["log","checkScan() - already login, no more check, and return(only)"] +0ms
VERB PuppetWebEvent onServerLog(checkScan() - already login, no more check, and return(only))
SILL PuppetWebEvent bridge.getUserName: @4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365
SILL Contact constructor(@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365)
SILL Contact ready()
SILL Contact get contact via PuppetWeb
SILL PuppetWebBridge getContact() retryPromise: attampt 1/35 time for timeout 306250
VERB PuppetWebBridge proxyWechaty(getContact, @4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365)
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute("return typeof WechatyBro === "undefined"")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
  socket.io-parser decoded 2["ding","heartbeat@browser"] as {"type":2,"nsp":"/","data":["ding","heartbeat@browser"]} +15ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["ding","heartbeat@browser"]} +8ms
  socket.io:socket emitting event ["ding","heartbeat@browser"] +0ms
  socket.io:socket dispatching an event ["ding","heartbeat@browser"] +2ms
SILL PuppetWebEvent onServerDing(heartbeat@browser)
SILL PuppetWebWatchdog onFeed: 60000, HEARTBEAT[heartbeat@browser]
SILL StateMonitor Puppet:target() - live
SILL StateMonitor Puppet:inprocess() false
SILL PuppetWebWatchdog clearWatchDogTimer() [53] seconds left
SILL PuppetWebWatchdog setWatchDogTimer(60000, HEARTBEAT:[heartbeat@browser])
SILL PuppetWebWatchdog monitorScan(HEARTBEAT)
SILL PuppetWebWatchdog autoSaveSession()
SILL PuppetWebWatchdog memoryCheck() free: 119 MB, require: 4 MB
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute(" const callback = arguments[arguments.length - 1] const isAsync = (typeof  ... ")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
  socket.io-parser decoded 2["log","socket io lib loaded."] as {"type":2,"nsp":"/","data":["log","socket io lib loaded."]} +10ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["log","socket io lib loaded."]} +14ms
  socket.io:socket emitting event ["log","socket io lib loaded."] +1ms
  socket.io:socket dispatching an event ["log","socket io lib loaded."] +0ms
VERB PuppetWebEvent onServerLog(socket io lib loaded.)
SILL Contact contactGetter(@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365) resolved
SILL PuppetWebEvent onServerLogin() user DC-bot logined
SILL PuppetWebBrowserCookie save() to file KBOT.wechaty.json
  socket.io-parser decoded 2["log","connectSocket()"] as {"type":2,"nsp":"/","data":["log","connectSocket()"]} +20ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["log","connectSocket()"]} +14ms
  socket.io:socket emitting event ["log","connectSocket()"] +0ms
  socket.io:socket dispatching an event ["log","connectSocket()"] +0ms
VERB PuppetWebEvent onServerLog(connectSocket())
  socket.io-parser decoded 2["log","recv ding"] as {"type":2,"nsp":"/","data":["log","recv ding"]} +2ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["log","recv ding"]} +1ms
  socket.io:socket emitting event ["log","recv ding"] +0ms
  socket.io:socket dispatching an event ["log","recv ding"] +8ms
VERB PuppetWebEvent onServerLog(recv ding)
SILL PuppetWebBrowserCookie save() saving 9 cookies: mm_lang,webwx_auth_ticket,webwxuvid,webwx_data_ticket,pgv_si,wxloadtime,wxsid,pgv_pvi,wxuin
SILL PuppetWebBrowserCookie save() 9 cookies to KBOT.wechaty.json
INFO Bot DC-bot logined
VERB Wechaty say(Wechaty login)
SILL Message constructor() SN:0
SILL Contact constructor(filehelper)
SILL PuppetWeb send() destination: filehelper, content: Wechaty login)
VERB PuppetWebBridge proxyWechaty(send, filehelper, Wechaty login)
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute("return typeof WechatyBro === "undefined"")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute(" const callback = arguments[arguments.length - 1] const isAsync = (typeof  ... ")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
  socket.io-parser decoded 2["message",{"ToUserName":"filehelper","Content":"Wechaty login","MsgType":1,"FromUserName":"@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365","MsgId":"14823322145360487","LocalID":"14823322145360487","ClientMsgId":"14823322145360487","CreateTime":1482332215,"MMStatus":1,"sendByLocal":true,"MMAtContacts":"","MMSendContent":"Wechaty login","MMPeerUserName":"filehelper","MMDigest":"Wechaty login","MMIsSend":true,"MMIsChatRoom":false,"MMActualContent":"Wechaty login","MMActualSender":"@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365","MMDigestTime":"22:56","MMDisplayTime":1482332215,"MMTime":"22:56"}] as {"type":2,"nsp":"/","data":["message",{"ToUserName":"filehelper","Content":"Wechaty login","MsgType":1,"FromUserName":"@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365","MsgId":"14823322145360487","LocalID":"14823322145360487","ClientMsgId":"14823322145360487","CreateTime":1482332215,"MMStatus":1,"sendByLocal":true,"MMAtContacts":"","MMSendContent":"Wechaty login","MMPeerUserName":"filehelper","MMDigest":"Wechaty login","MMIsSend":true,"MMIsChatRoom":false,"MMActualContent":"Wechaty login","MMActualSender":"@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365","MMDigestTime":"22:56","MMDisplayTime":1482332215,"MMTime":"22:56"}]} +31ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["message",{"ToUserName":"filehelper","Content":"Wechaty login","MsgType":1,"FromUserName":"@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365","MsgId":"14823322145360487","LocalID":"14823322145360487","ClientMsgId":"14823322145360487","CreateTime":1482332215,"MMStatus":1,"sendByLocal":true,"MMAtContacts":"","MMSendContent":"Wechaty login","MMPeerUserName":"filehelper","MMDigest":"Wechaty login","MMIsSend":true,"MMIsChatRoom":false,"MMActualContent":"Wechaty login","MMActualSender":"@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365","MMDigestTime":"22:56","MMDisplayTime":1482332215,"MMTime":"22:56"}]} +26ms
  socket.io:socket emitting event ["message",{"ToUserName":"filehelper","Content":"Wechaty login","MsgType":1,"FromUserName":"@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365","MsgId":"14823322145360487","LocalID":"14823322145360487","ClientMsgId":"14823322145360487","CreateTime":1482332215,"MMStatus":1,"sendByLocal":true,"MMAtContacts":"","MMSendContent":"Wechaty login","MMPeerUserName":"filehelper","MMDigest":"Wechaty login","MMIsSend":true,"MMIsChatRoom":false,"MMActualContent":"Wechaty login","MMActualSender":"@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365","MMDigestTime":"22:56","MMDisplayTime":1482332215,"MMTime":"22:56"}] +1ms
  socket.io:socket dispatching an event ["message",{"ToUserName":"filehelper","Content":"Wechaty login","MsgType":1,"FromUserName":"@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365","MsgId":"14823322145360487","LocalID":"14823322145360487","ClientMsgId":"14823322145360487","CreateTime":1482332215,"MMStatus":1,"sendByLocal":true,"MMAtContacts":"","MMSendContent":"Wechaty login","MMPeerUserName":"filehelper","MMDigest":"Wechaty login","MMIsSend":true,"MMIsChatRoom":false,"MMActualContent":"Wechaty login","MMActualSender":"@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365","MMDigestTime":"22:56","MMDisplayTime":1482332215,"MMTime":"22:56"}] +1ms
SILL Message constructor() SN:1
SILL Message ready()
SILL Contact ready()
SILL Contact ready()
SILL Contact get contact via PuppetWeb
SILL PuppetWebBridge getContact() retryPromise: attampt 1/35 time for timeout 306250
VERB PuppetWebBridge proxyWechaty(getContact, filehelper)
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute("return typeof WechatyBro === "undefined"")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute(" const callback = arguments[arguments.length - 1] const isAsync = (typeof  ... ")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL Contact contactGetter(filehelper) resolved
SILL Message ready()
SILL Contact ready()
SILL Contact ready()
  bot:WcBot RECV: Wechaty login +29s
  bot:WcBot room null +0ms
<DC-bot>:{TEXT}Wechaty login
  bot:WcBot dont reply to self message +0ms
  socket.io-parser decoded 2["ding","heartbeat@browser"] as {"type":2,"nsp":"/","data":["ding","heartbeat@browser"]} +15s
  socket.io:socket got packet {"type":2,"nsp":"/","data":["ding","heartbeat@browser"]} +15s
  socket.io:socket emitting event ["ding","heartbeat@browser"] +0ms
  socket.io:socket dispatching an event ["ding","heartbeat@browser"] +0ms
SILL PuppetWebEvent onServerDing(heartbeat@browser)
SILL PuppetWebWatchdog onFeed: 60000, HEARTBEAT[heartbeat@browser]
SILL StateMonitor Puppet:target() - live
SILL StateMonitor Puppet:inprocess() false
SILL PuppetWebWatchdog clearWatchDogTimer() [46] seconds left
SILL PuppetWebWatchdog setWatchDogTimer(60000, HEARTBEAT:[heartbeat@browser])
SILL PuppetWebWatchdog monitorScan(HEARTBEAT)
SILL PuppetWebWatchdog autoSaveSession()
SILL PuppetWebWatchdog memoryCheck() free: 57 MB, require: 4 MB
  socket.io-parser decoded 2["message",{"MsgType":1,"Content":"test","FromUserName":"@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365","ToUserName":"@@e3896bf57a9937367b1a9944297ed1c6e4cc7b59e6f25fc7d9d9a0c0d3978ab5","MsgId":"14823322366800213","LocalID":"14823322366800213","ClientMsgId":"14823322366800213","CreateTime":1482332237,"MMStatus":1,"sendByLocal":true,"MMAtContacts":"","MMSendContent":"test","MMPeerUserName":"@@e3896bf57a9937367b1a9944297ed1c6e4cc7b59e6f25fc7d9d9a0c0d3978ab5","MMDigest":"test","MMIsSend":true,"MMIsChatRoom":true,"MMActualContent":"test","MMActualSender":"@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365","MMDigestTime":"22:57","MMDisplayTime":1482332237,"MMTime":"22:57"}] as {"type":2,"nsp":"/","data":["message",{"MsgType":1,"Content":"test","FromUserName":"@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365","ToUserName":"@@e3896bf57a9937367b1a9944297ed1c6e4cc7b59e6f25fc7d9d9a0c0d3978ab5","MsgId":"14823322366800213","LocalID":"14823322366800213","ClientMsgId":"14823322366800213","CreateTime":1482332237,"MMStatus":1,"sendByLocal":true,"MMAtContacts":"","MMSendContent":"test","MMPeerUserName":"@@e3896bf57a9937367b1a9944297ed1c6e4cc7b59e6f25fc7d9d9a0c0d3978ab5","MMDigest":"test","MMIsSend":true,"MMIsChatRoom":true,"MMActualContent":"test","MMActualSender":"@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365","MMDigestTime":"22:57","MMDisplayTime":1482332237,"MMTime":"22:57"}]} +8s
  socket.io:socket got packet {"type":2,"nsp":"/","data":["message",{"MsgType":1,"Content":"test","FromUserName":"@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365","ToUserName":"@@e3896bf57a9937367b1a9944297ed1c6e4cc7b59e6f25fc7d9d9a0c0d3978ab5","MsgId":"14823322366800213","LocalID":"14823322366800213","ClientMsgId":"14823322366800213","CreateTime":1482332237,"MMStatus":1,"sendByLocal":true,"MMAtContacts":"","MMSendContent":"test","MMPeerUserName":"@@e3896bf57a9937367b1a9944297ed1c6e4cc7b59e6f25fc7d9d9a0c0d3978ab5","MMDigest":"test","MMIsSend":true,"MMIsChatRoom":true,"MMActualContent":"test","MMActualSender":"@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365","MMDigestTime":"22:57","MMDisplayTime":1482332237,"MMTime":"22:57"}]} +8s
  socket.io:socket emitting event ["message",{"MsgType":1,"Content":"test","FromUserName":"@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365","ToUserName":"@@e3896bf57a9937367b1a9944297ed1c6e4cc7b59e6f25fc7d9d9a0c0d3978ab5","MsgId":"14823322366800213","LocalID":"14823322366800213","ClientMsgId":"14823322366800213","CreateTime":1482332237,"MMStatus":1,"sendByLocal":true,"MMAtContacts":"","MMSendContent":"test","MMPeerUserName":"@@e3896bf57a9937367b1a9944297ed1c6e4cc7b59e6f25fc7d9d9a0c0d3978ab5","MMDigest":"test","MMIsSend":true,"MMIsChatRoom":true,"MMActualContent":"test","MMActualSender":"@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365","MMDigestTime":"22:57","MMDisplayTime":1482332237,"MMTime":"22:57"}] +0ms
  socket.io:socket dispatching an event ["message",{"MsgType":1,"Content":"test","FromUserName":"@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365","ToUserName":"@@e3896bf57a9937367b1a9944297ed1c6e4cc7b59e6f25fc7d9d9a0c0d3978ab5","MsgId":"14823322366800213","LocalID":"14823322366800213","ClientMsgId":"14823322366800213","CreateTime":1482332237,"MMStatus":1,"sendByLocal":true,"MMAtContacts":"","MMSendContent":"test","MMPeerUserName":"@@e3896bf57a9937367b1a9944297ed1c6e4cc7b59e6f25fc7d9d9a0c0d3978ab5","MMDigest":"test","MMIsSend":true,"MMIsChatRoom":true,"MMActualContent":"test","MMActualSender":"@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365","MMDigestTime":"22:57","MMDisplayTime":1482332237,"MMTime":"22:57"}] +0ms
SILL Message constructor() SN:2
SILL Message ready()
SILL Contact ready()
SILL Room constructor(@@e3896bf57a9937367b1a9944297ed1c6e4cc7b59e6f25fc7d9d9a0c0d3978ab5)
SILL Room ready()
SILL PuppetWebBridge getContact() retryPromise: attampt 1/35 time for timeout 306250
VERB PuppetWebBridge proxyWechaty(getContact, @@e3896bf57a9937367b1a9944297ed1c6e4cc7b59e6f25fc7d9d9a0c0d3978ab5)
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute("return typeof WechatyBro === "undefined"")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute(" const callback = arguments[arguments.length - 1] const isAsync = (typeof  ... ")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL Room contactGetter(@@e3896bf57a9937367b1a9944297ed1c6e4cc7b59e6f25fc7d9d9a0c0d3978ab5) resolved
SILL Contact constructor(@d977dc2b39a2a08d6ec44a548ac40db8b7b99dda7cdf5adeaf071629b496fbb8)
SILL Contact constructor(@c81b173ca7fbd29c07fd0d2f4ba61d09c3d462ce5013b42c93ebd2c880a2bedd)
SILL Contact constructor(@1fd06859f4d7a8ab9b7e60219ffadb47)
SILL Contact ready(function)
SILL PuppetWebBridge getContact() retryPromise: attampt 1/35 time for timeout 306250
VERB PuppetWebBridge proxyWechaty(getContact, @d977dc2b39a2a08d6ec44a548ac40db8b7b99dda7cdf5adeaf071629b496fbb8)
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute("return typeof WechatyBro === "undefined"")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL Contact ready(function)
SILL Contact ready(function)
SILL PuppetWebBridge getContact() retryPromise: attampt 1/35 time for timeout 306250
VERB PuppetWebBridge proxyWechaty(getContact, @c81b173ca7fbd29c07fd0d2f4ba61d09c3d462ce5013b42c93ebd2c880a2bedd)
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute("return typeof WechatyBro === "undefined"")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL Contact ready(function)
SILL PuppetWebBridge getContact() retryPromise: attampt 1/35 time for timeout 306250
VERB PuppetWebBridge proxyWechaty(getContact, @1fd06859f4d7a8ab9b7e60219ffadb47)
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute("return typeof WechatyBro === "undefined"")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute(" const callback = arguments[arguments.length - 1] const isAsync = (typeof  ... ")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute(" const callback = arguments[arguments.length - 1] const isAsync = (typeof  ... ")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL Contact contactGetter(@d977dc2b39a2a08d6ec44a548ac40db8b7b99dda7cdf5adeaf071629b496fbb8) resolved
SILL Contact contactGetter(@1fd06859f4d7a8ab9b7e60219ffadb47) resolved
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute(" const callback = arguments[arguments.length - 1] const isAsync = (typeof  ... ")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL Contact contactGetter(@c81b173ca7fbd29c07fd0d2f4ba61d09c3d462ce5013b42c93ebd2c880a2bedd) resolved
SILL Message ready()
SILL Contact ready()
SILL Room ready()
  bot:WcBot RECV: test +22s
  bot:WcBot room Room {
  domain: null,
  _events: {},
  _eventsCount: 0,
  _maxListeners: undefined,
  id: '@@e3896bf57a9937367b1a9944297ed1c6e4cc7b59e6f25fc7d9d9a0c0d3978ab5',
  rawObj:
   { Alias: '',
     AppAccountFlag: 0,
     AttrStatus: 0,
     ChatRoomId: 0,
     ChatRoomOwner: '@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365',
     City: '',
     ContactFlag: 2,
     DisplayName: '',
     EncryChatRoomId: '@19798596deec18400027da60ca69a3fc',
     HeadImgUpdateFlag: 1,
     HeadImgUrl: '/cgi-bin/mmwebwx-bin/webwxgetheadimg?seq=647580478&username=@@e3896bf57a9937367b1a9944297ed1c6e4cc7b59e6f25fc7d9d9a0c0d3978ab5&skey=',
     HideInputBarFlag: 0,
     KeyWord: '',
     MMBatchgetMember: true,
     MMCanCreateChatroom: true,
     MMFromBatchGet: true,
     MMFromBatchget: true,
     MMInChatroom: true,
     MMOrderSymbol: 'TESTBOTGROUP',
     MemberCount: 4,
     MemberList: [ [Object], [Object], [Object], [Object] ],
     NickName: 'TestBotGroup',
     OwnerUin: 0,
     PYInitial: 'TESTBOTGROUP',
     PYQuanPin: 'TestBotGroup',
     Province: '',
     RemarkName: '',
     RemarkPYInitial: '',
     RemarkPYQuanPin: '',
     Sex: 0,
     Signature: '',
     SnsFlag: 0,
     StarFriend: 0,
     Statues: 1,
     Uin: 0,
     UniFriend: 0,
     UserName: '@@e3896bf57a9937367b1a9944297ed1c6e4cc7b59e6f25fc7d9d9a0c0d3978ab5',
     VerifyFlag: 0,
     stranger: true },
  obj:
   { id: '@@e3896bf57a9937367b1a9944297ed1c6e4cc7b59e6f25fc7d9d9a0c0d3978ab5',
     encryId: '@19798596deec18400027da60ca69a3fc',
     topic: 'TestBotGroup',
     ownerUin: 0,
     memberList: [ [Object], [Object], [Object], [Object] ],
     nickMap:
      Map {
        '@d977dc2b39a2a08d6ec44a548ac40db8b7b99dda7cdf5adeaf071629b496fbb8': 'DC | Rikai Labs',
        '@4379b77717d8ab07977ba40bbba85f5e90698839407518cb12ff04d3e3b4a365': 'DC-bot',
        '@c81b173ca7fbd29c07fd0d2f4ba61d09c3d462ce5013b42c93ebd2c880a2bedd': 'Edaan Getzel',
        '@1fd06859f4d7a8ab9b7e60219ffadb47': '李韦岐 Weiqi' } } } +0ms
[TestBotGroup]<DC-bot>:{TEXT}test
  bot:WcBot dont reply to self message +9ms
  socket.io-parser decoded 2["ding","heartbeat@browser"] as {"type":2,"nsp":"/","data":["ding","heartbeat@browser"]} +7s
  socket.io:socket got packet {"type":2,"nsp":"/","data":["ding","heartbeat@browser"]} +7s
  socket.io:socket emitting event ["ding","heartbeat@browser"] +0ms
  socket.io:socket dispatching an event ["ding","heartbeat@browser"] +0ms
SILL PuppetWebEvent onServerDing(heartbeat@browser)
SILL PuppetWebWatchdog onFeed: 60000, HEARTBEAT[heartbeat@browser]
SILL StateMonitor Puppet:target() - live
SILL StateMonitor Puppet:inprocess() false
SILL PuppetWebWatchdog clearWatchDogTimer() [45] seconds left
SILL PuppetWebWatchdog setWatchDogTimer(60000, HEARTBEAT:[heartbeat@browser])
SILL PuppetWebWatchdog monitorScan(HEARTBEAT)
SILL PuppetWebWatchdog autoSaveSession()
SILL PuppetWebWatchdog memoryCheck() free: 36 MB, require: 4 MB
^CWechaty exit 130 because of SIGINT
VERB Wechaty say(Wechaty exit 130 because of SIGINT )
SILL Message constructor() SN:3
SILL PuppetWeb send() destination: filehelper, content: Wechaty exit 130 because of SIGINT )
VERB PuppetWebBridge proxyWechaty(send, filehelper, Wechaty exit 130 because of SIGINT )
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute("return typeof WechatyBro === "undefined"")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open

bot stopped with ctrl-C
restart bot and a QR is then again required.

➜  kbot git:(master) ✗ npm start

><EMAIL_ADDRESS>start /Users/dc/dev/rikai/ta-bot/kbot
> DEBUG=*,-engine*,- ts-node bot.ts

SILL Brolog WECHATY_LOG set level to silly
SILL StateMonitor constructor(Wechaty, standby)
VERB Wechaty contructor()
VERB Wechaty addListener(login, function)
VERB Wechaty addListener(logout, function)
VERB Wechaty addListener(error, function)
VERB Wechaty addListener(scan, function)
VERB Wechaty addListener(message, function)
  bot:startup startup +0ms
  bot:startup initDb +1ms
  bot:startup done +23ms
INFO Wechaty v#git[4ed33d2 https://github.com/Microsoft/TypeScript/issues/9944 compact selenium-webdriver types v2, hope @types v3 will publish soon] initializing...
VERB Wechaty puppet: web
VERB Wechaty head: chrome
VERB Wechaty profile: KBOT.wechaty.json
VERB Wechaty uuid: 2f015bdc-88f4-4384-998c-e3010fbc4988
SILL StateMonitor Wechaty:current() - standby
VERB StateMonitor Wechaty:target(ready) <- (standby)
VERB StateMonitor Wechaty:current(ready,false) <- (standby,true)
SILL StateMonitor constructor(Puppet, dead)
VERB Config puppetInstance(PuppetWeb)
VERB PuppetWeb init() with head:chrome, profile:KBOT.wechaty.json
VERB StateMonitor Puppet:target(live) <- (dead)
VERB StateMonitor Puppet:current(live,false) <- (dead,true)
SILL UtilLib getPort(18788)
SILL UtilLib getPort(18788) return: 19061
VERB PuppetWeb init() getPort 19061
VERB PuppetWeb initServer()
SILL StateMonitor Puppet:target() - live
VERB PuppetWebServer init() on port 19061
  express:application set "x-powered-by" to true +0ms
  express:application set "etag" to 'weak' +2ms
  express:application set "etag fn" to [Function: wetag] +1ms
  express:application set "env" to 'development' +0ms
  express:application set "query parser" to 'extended' +0ms
  express:application set "query parser fn" to [Function: parseExtendedQueryString] +0ms
  express:application set "subdomain offset" to 2 +1ms
  express:application set "trust proxy" to false +0ms
  express:application set "trust proxy fn" to [Function: trustNone] +0ms
  express:application booting in development mode +0ms
  express:application set "view" to [Function: View] +0ms
  express:application set "views" to '/Users/dc/dev/rikai/ta-bot/kbot/views' +1ms
  express:application set "jsonp callback name" to 'callback' +0ms
  express:router use / query +13ms
  express:router:layer new / +1ms
  express:router use / expressInit +0ms
  express:router:layer new / +0ms
  express:router use / jsonParser +1ms
  express:router:layer new / +0ms
  express:router use / <anonymous> +0ms
  express:router:layer new / +0ms
  express:router:route new /ding +0ms
  express:router:layer new /ding +0ms
  express:router:route get /ding +0ms
  express:router:layer new / +0ms
VERB PuppetWebServer createHttpsServer() listen on port 19061
  socket.io:server initializing namespace / +0ms
  socket.io:server creating engine.io instance with opts {"path":"/socket.io"} +1ms
  socket.io:server attaching client serving req handler +2ms
VERB PuppetWeb initServer() done
VERB PuppetWeb initBrowser()
SILL StateMonitor constructor(Browser, close)
VERB PuppetWebBrowser constructor() with head(chrome) sessionFile(KBOT.wechaty.json)
VERB PuppetWebBrowserDriver constructor(chrome)
VERB PuppetWebBrowserCookie constructor(BrowserDriver, KBOT.wechaty.json)
SILL StateMonitor Puppet:target() - live
VERB PuppetWebBrowser init()
SILL StateMonitor Browser:current() - close
VERB StateMonitor Browser:target(open) <- (close)
VERB StateMonitor Browser:current(open,false) <- (close,true)
VERB PuppetWebBrowserDriver init() for head: chrome
VERB PuppetWebBrowserDriver initChromeDriver()
VERB PuppetWebBrowserDriver initChromeDriver() new Builder()
VERB PuppetWebBrowserDriver initChromeDriver() new Builder() done
VERB PuppetWebBrowserDriver valid()
VERB PuppetWebBrowserDriver valid() getSession()
  bot:Grammar gram count 49 +112ms
VERB PuppetWebBrowserDriver valid() getSession() then() done
VERB PuppetWebBrowserDriver valid() getSession() then() watchdog timer exist, will be cleared
VERB PuppetWebBrowserDriver watchdogTimer = null after set null
VERB PuppetWebBrowserDriver valid() driver.getSession() done()
VERB PuppetWebBrowserDriver valid() driver.executeScript() done
SILL PuppetWebBrowserDriver valid() driver ok
VERB PuppetWebBrowserDriver initChromeDriver() valid() done: true
SILL PuppetWebBrowserDriver initChromeDriver() success
VERB PuppetWebBrowser init() driver.init() done
VERB PuppetWebBrowser open(https://wx.qq.com/zh_CN/htmledition/v2/images/webwxgeticon.jpg)
VERB PuppetWebBrowserCookie load() from KBOT.wechaty.json
SILL PuppetWebBrowserCookie addCookies({"domain":".wechat.com","expiry":1482375412,"httpOnly":false,"name":"mm_lang","path":"/","secure":false,"value":"en_US"})
WARN PuppetWebBrowserCookie addCookies() exception: invalid cookie domain: invalid domain:".wechat.com"
  (Session info: chrome=55.0.2883.95)
  (Driver info: chromedriver=2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1),platform=Mac OS X 10.12.1 x86_64)
ERR PuppetWebBrowserCookie load() add() exception: invalid cookie domain: invalid domain:".wechat.com"
  (Session info: chrome=55.0.2883.95)
  (Driver info: chromedriver=2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1),platform=Mac OS X 10.12.1 x86_64)
VERB PuppetWebBrowser browser.loadSession(KBOT.wechaty.json) exception: invalid cookie domain: invalid domain:".wechat.com"
  (Session info: chrome=55.0.2883.95)
  (Driver info: chromedriver=2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1),platform=Mac OS X 10.12.1 x86_64)
VERB PuppetWebBrowser open(https://wx.qq.com)
SILL StateMonitor Browser:target() - open
VERB StateMonitor Browser:current(open,true) <- (open,false)
VERB PuppetWeb initBrowser() done
VERB PuppetWeb initBridge()
VERB PuppetWebBridge new Bridge({puppet: PuppetWeb, port: 19061})
SILL StateMonitor Puppet:target() - live
VERB PuppetWebBridge init()
VERB PuppetWebBridge inject()
VERB PuppetWebBridge getInjectio()
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute("injectioReturnValue = /** * * Wechaty - Wechat for Bot, and human who talk to  ... ")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL PuppetWebBridge inject() eval(Wechaty) return code[200] message[WechatyBro Inject Done] port[19061]
VERB PuppetWebBridge proxyWechaty(init, )
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute("return typeof WechatyBro === "undefined"")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute(" const callback = arguments[arguments.length - 1] const isAsync = (typeof  ... ")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL PuppetWebBridge inject() Wechaty.init() return code[200] message[WechatyBro Init Succ on port: 19061] port[19061]
VERB PuppetWebBridge ding(inject())
VERB PuppetWebBridge proxyWechaty(ding, inject())
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute("return typeof WechatyBro === "undefined"")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL PuppetWebBridge execute()
SILL PuppetWebBrowser Browser.execute(" const callback = arguments[arguments.length - 1] const isAsync = (typeof  ... ")
SILL StateMonitor Browser:target() - open
SILL StateMonitor Browser:current() - open
SILL PuppetWebBridge inject() ding success
VERB PuppetWeb initBridge() done
VERB StateMonitor Puppet:current(live,true) <- (live,false)
SILL PuppetWebWatchdog onFeed: 120000, HEARTBEAT[inited]
SILL StateMonitor Puppet:target() - live
SILL StateMonitor Puppet:inprocess() false
VERB PuppetWebWatchdog clearWatchDogTimer() nothing to clear
SILL PuppetWebWatchdog setWatchDogTimer(120000, HEARTBEAT:[inited])
SILL PuppetWebWatchdog monitorScan(HEARTBEAT)
SILL PuppetWebWatchdog autoSaveSession()
VERB PuppetWebWatchdog autoSaveSession() skiped as no this.userId
SILL PuppetWebWatchdog memoryCheck() free: 28 MB, require: 4 MB
VERB PuppetWeb init() done
VERB StateMonitor Wechaty:current(ready,true) <- (ready,false)
  socket.io:server incoming connection with id Vj9nsEhIbqR-zu1oAAAA +2s
  socket.io:client connecting to namespace / +1ms
  socket.io:namespace adding socket to nsp / +0ms
  socket.io:socket socket connected - writing packet +2ms
  socket.io:socket joining room Vj9nsEhIbqR-zu1oAAAA +0ms
  socket.io:client writing packet {"type":0,"nsp":"/"} +1ms
  socket.io-parser encoding packet {"type":0,"nsp":"/"} +2s
  socket.io-parser encoded {"type":0,"nsp":"/"} as 0 +0ms
VERB PuppetWebServer createSocketIo() got connection from browser
VERB PuppetWebServer initEventFromClient()
VERB PuppetWebEvent onServerConnection: [object Object]
  socket.io:socket joined room Vj9nsEhIbqR-zu1oAAAA +1ms
  socket.io-parser decoded 2["log","connectSocket()"] as {"type":2,"nsp":"/","data":["log","connectSocket()"]} +768ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["log","connectSocket()"]} +768ms
  socket.io:socket emitting event ["log","connectSocket()"] +0ms
  socket.io:socket dispatching an event ["log","connectSocket()"] +0ms
VERB PuppetWebEvent onServerLog(connectSocket())
  socket.io-parser decoded 2["log","connectSocket: io not found. loading lib..."] as {"type":2,"nsp":"/","data":["log","connectSocket: io not found. loading lib..."]} +2ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["log","connectSocket: io not found. loading lib..."]} +1ms
  socket.io:socket emitting event ["log","connectSocket: io not found. loading lib..."] +1ms
  socket.io:socket dispatching an event ["log","connectSocket: io not found. loading lib..."] +0ms
VERB PuppetWebEvent onServerLog(connectSocket: io not found. loading lib...)
  socket.io-parser decoded 2["log","checkScan() - code change detected: from null to 0"] as {"type":2,"nsp":"/","data":["log","checkScan() - code change detected: from null to 0"]} +2ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["log","checkScan() - code change detected: from null to 0"]} +1ms
  socket.io:socket emitting event ["log","checkScan() - code change detected: from null to 0"] +0ms
  socket.io:socket dispatching an event ["log","checkScan() - code change detected: from null to 0"] +0ms
VERB PuppetWebEvent onServerLog(checkScan() - code change detected: from null to 0)
  socket.io-parser decoded 2["scan",{"code":0,"url":"https://login.weixin.qq.com/qrcode/YfiMkp3v4w=="}] as {"type":2,"nsp":"/","data":["scan",{"code":0,"url":"https://login.weixin.qq.com/qrcode/YfiMkp3v4w=="}]} +1ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["scan",{"code":0,"url":"https://login.weixin.qq.com/qrcode/YfiMkp3v4w=="}]} +1ms
  socket.io:socket emitting event ["scan",{"code":0,"url":"https://login.weixin.qq.com/qrcode/YfiMkp3v4w=="}] +0ms
  socket.io:socket dispatching an event ["scan",{"code":0,"url":"https://login.weixin.qq.com/qrcode/YfiMkp3v4w=="}] +0ms
VERB PuppetWebEvent onServerScan(0)
SILL PuppetWebBrowserCookie save() to file KBOT.wechaty.json
  socket.io-parser decoded 2["ding","heartbeat@browser"] as {"type":2,"nsp":"/","data":["ding","heartbeat@browser"]} +3ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["ding","heartbeat@browser"]} +4ms
  socket.io:socket emitting event ["ding","heartbeat@browser"] +0ms
  socket.io:socket dispatching an event ["ding","heartbeat@browser"] +0ms
SILL PuppetWebEvent onServerDing(heartbeat@browser)
SILL PuppetWebWatchdog onFeed: 60000, HEARTBEAT[heartbeat@browser]
SILL StateMonitor Puppet:target() - live
SILL StateMonitor Puppet:inprocess() false
SILL PuppetWebWatchdog clearWatchDogTimer() [120] seconds left
SILL PuppetWebWatchdog setWatchDogTimer(60000, HEARTBEAT:[heartbeat@browser])
SILL PuppetWebWatchdog monitorScan(HEARTBEAT)
SILL PuppetWebWatchdog autoSaveSession()
VERB PuppetWebWatchdog autoSaveSession() skiped as no this.userId
SILL PuppetWebWatchdog memoryCheck() free: 49 MB, require: 4 MB
  socket.io-parser decoded 2["log","recv ding"] as {"type":2,"nsp":"/","data":["log","recv ding"]} +3ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["log","recv ding"]} +2ms
  socket.io:socket emitting event ["log","recv ding"] +0ms
  socket.io:socket dispatching an event ["log","recv ding"] +0ms
VERB PuppetWebEvent onServerLog(recv ding)
SILL PuppetWebBrowserCookie save() saving 3 cookies: pgv_pvi,pgv_si,mm_lang
  socket.io-parser decoded 2["log","socket io lib loaded."] as {"type":2,"nsp":"/","data":["log","socket io lib loaded."]} +3ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["log","socket io lib loaded."]} +3ms
  socket.io:socket emitting event ["log","socket io lib loaded."] +0ms
  socket.io:socket dispatching an event ["log","socket io lib loaded."] +0ms
VERB PuppetWebEvent onServerLog(socket io lib loaded.)
  socket.io-parser decoded 2["log","connectSocket()"] as {"type":2,"nsp":"/","data":["log","connectSocket()"]} +1ms
  socket.io:socket got packet {"type":2,"nsp":"/","data":["log","connectSocket()"]} +1ms
  socket.io:socket emitting event ["log","connectSocket()"] +0ms
  socket.io:socket dispatching an event ["log","connectSocket()"] +0ms
VERB PuppetWebEvent onServerLog(connectSocket())
SILL PuppetWebBrowserCookie save() 3 cookies to KBOT.wechaty.json
SILL PuppetWebWatchdog onFeed: 60000, SCAN[[object Object]]
SILL StateMonitor Puppet:target() - live
SILL StateMonitor Puppet:inprocess() false
SILL PuppetWebWatchdog clearWatchDogTimer() [60] seconds left
SILL PuppetWebWatchdog setWatchDogTimer(60000, SCAN:[[object Object]])
SILL PuppetWebWatchdog monitorScan(SCAN)
SILL PuppetWebWatchdog autoSaveSession()
VERB PuppetWebWatchdog autoSaveSession() skiped as no this.userId
SILL PuppetWebWatchdog memoryCheck() free: 49 MB, require: 4 MB

https://login.weixin.qq.com/qrcode/YfiMkp3v4w==
[0] Scan QR Code in above url to login:
^CWechaty exit 130 because of SIGINT
VERB Wechaty say(Wechaty exit 130 because of SIGINT )

➜  kbot git:(master) ✗

Hi @dcsan ,
It seems that you are run into issue #31
According to your log:
VERB PuppetWebBrowser open(https://wx.qq.com/zh_CN/htmledition/v2/images/webwxgeticon.jpg)
SILL PuppetWebBrowserCookie addCookies({"domain":".wechat.com","expiry":1482375002,"httpOnly":false,"name":"mm_lang","path":"/","secure":false,"value":"en_US"})
WARN PuppetWebBrowserCookie addCookies() exception: invalid cookie domain: invalid domain:".wechat.com"
  (Session info: chrome=55.0.2883.95)
  (Driver info: chromedriver=2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1),platform=Mac OS X 10.12.1 x86_64)
ERR PuppetWebBrowserCookie load() add() exception: invalid cookie domain: invalid domain:".wechat.com"
  (Session info: chrome=55.0.2883.95)
  (Driver info: chromedriver=2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1),platform=Mac OS X 10.12.1 x86_64)
VERB PuppetWebBrowser browser.loadSession(KBOT.wechaty.json) exception: invalid cookie domain: invalid domain:".wechat.com"
  (Session info: chrome=55.0.2883.95)
  (Driver info: chromedriver=2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1),platform=Mac OS X 10.12.1 x86_64)
VERB PuppetWebBrowser open(https://wx.qq.com)

It's obviously that you are using wechat.com, however, Wechaty did not recognize that and still using the wx.qq.com, which caused the cookie could not set back in the browser. As the result, you have to re-scan the Qr Code because you lost your cookies.
I thought this problem was solved by this commit: https://github.com/wechaty/wechaty/commit/c78329e9dd1157e74614ae1d10338c8f51a7100d#diff-67759812817c700bf8e67907e5adffa6R183 , but there must be something wrong with that: It should use the hostname from cookies to open url in browser, which should be wechat.com in your case, but it return wx.qq.com by mistake.
I'll check it later, and you are welcome to review my code if you want to fix this faster. :)

adding from chat
please notice this two lines in the log:

VERB PuppetWebBrowser open(https://wx.qq.com/zh_CN/htmledition/v2/images/webwxgeticon.jpg)
SILL PuppetWebBrowserCookie addCookies({"domain":".wechat.com",

We need to keep the domain in 1st line(wx.qq.com) and the 2st line(.wechat.com) the same. If it is not, you will have to re-scan
BrowserCookie.hostname() should do that, but it's not. Code review is welcome at here: https://github.com/wechaty/wechaty/commit/c78329e9dd1157e74614ae1d#diff-67759812817c700bf8e67907e5adffa6R183

when wechat sends me to web2.wechat.com

the PROFILE.wechaty.json seems to have cookies at the right domain?
[
  {
    "domain": ".wechat.com",
    "expiry":<PHONE_NUMBER>,
    "httpOnly": false,
    "name": "mm_lang",
    "path": "/",
    "secure": false,
    "value": "en_US"
  },
  {
    "domain": ".wechat.com",
    "expiry":<PHONE_NUMBER>,
    "httpOnly": false,
    "name": "webwx_auth_ticket",
    "path": "/",
    "secure": false,
    "value": "CIsBEKi.......RiYc="
  },

Yes, the cookie file should always right.
What we need to do when starting Wechaty, is to get hostname out of cookie file, and use that hostname in the browser to visit the webwxapp. If so, the cookie can be set back correctly, and session can be restored.

at wx.qq.com

the cookie file still has .wechat domain?
[
  {
    "domain": ".wechat.com",
    "expiry":<PHONE_NUMBER>,
    "httpOnly": false,
    "name": "mm_lang",
    "path": "/",
    "secure": false,
    "value": "en_US"
  },
  {
    "domain": ".wechat.com",
    "expiry":<PHONE_NUMBER>,
    "httpOnly": false,
    "name": "webwx_auth_ticket",
    "path": "/",
    "secure": false,
    "value": "CIsB....QyRiYc="
  },

Strange. The cookies should be saved to file right after user login, and will auto save to file every 5 minutes.
If the hostname in cookie  is not the same as the url, there must something wrong.

hmm, deleted cookie file and now it seems to be updated to the right domain. maybe it's not getting overwritten properly somehow when the domain changes?
btw the domains are there before I login.
[
  {
    "domain": ".qq.com",
    "expiry":<PHONE_NUMBER>,
    "httpOnly": false,
    "name": "pgv_pvi",
    "path": "/",
    "secure": false,
    "value": "1443930112"
  },
  {
    "domain": ".qq.com",
    "httpOnly": false,
    "name": "pgv_si",
    "path": "/",
    "secure": false,
    "value": "s4759231488"
  },
  {
    "domain": ".wx.qq.com",
    "expiry":<PHONE_NUMBER>,
    "httpOnly": false,
    "name": "mm_lang",
    "path": "/",
    "secure": false,
    "value": "en"
  }
]

after I login I assume the rest will appear.
hmm i think the domain may change

yes the domains change halfway
the QR code is presented at this domain:
https://wx.qq.com/
but after I scan it I am redirected here:
https://web2.wechat.com/
Could this maybe (possibly) be as I have an english OS?
In any case the cookies file has the right (final) domain:
[{"domain":".wechat.com","expiry":1482379153

Could you please post the full file here, with two different version of wx.qq.com and wechat.com?
I need them to write a unit test, thanks!

initial state
login is presented at wx.qq.com
before scanning QR code
(note I haven't prettified the JSON this is how it is written)
[{"domain":".qq.com","expiry":2147385600,"httpOnly":false,"name":"pgv_pvi","path":"/","secure":false,"value":"8512099328"},{"domain":".qq.com","httpOnly":false,"name":"pgv_si","path":"/","secure":false,"value":"s5248662528"},{"domain":".wx.qq.com","expiry":1482380243,"httpOnly":false,"name":"mm_lang","path":"/","secure":false,"value":"en"}]

after scanning the QRCode
I'm redirected to web2.wechat.com
cookies file
[{"domain":".wechat.com","expiry":1482380361,"httpOnly":false,"name":"mm_lang","path":"/","secure":false,"value":"en_US"},{"domain":".wechat.com","expiry":1797697161,"httpOnly":false,"name":"webwx_auth_ticket","path":"/","secure":false,"value":"CIsBEIW4yZYPGoABjgOYg33uUb4ct38aQsfT/zJ8FDNF8yKX4o4sJT7aVXjvBUjBLC/SXBj38TSCEmWsK8DME2FzDUl4kS2vXalfNnAFdScEuveH/h7T2CbHbvv5O4fDfxW2Olb5OQoWLrS61Wkx0XjghelAhyusVCGHiRVTtHaCx4gfyHk4+QyRiYc="},{"domain":".wechat.com","expiry":1797697161,"httpOnly":false,"name":"webwxuvid","path":"/","secure":false,"value":"e2108c64dbecd6ea0e3bc7a0266f467dcc63350fbc55559cdf6c25afd6f8bd88c7216d3aaec6427e41c2b918872bb549"},{"domain":".wechat.com","expiry":1482380361,"httpOnly":false,"name":"webwx_data_ticket","path":"/","secure":false,"value":"gScvXIoeHANgdX4Dq5kOjAGY"},{"domain":".wechat.com","httpOnly":false,"name":"pgv_si","path":"/","secure":false,"value":"s4528565248"},{"domain":".wechat.com","expiry":1482380361,"httpOnly":false,"name":"wxloadtime","path":"/","secure":false,"value":"1482337161"},{"domain":".wechat.com","expiry":1482380361,"httpOnly":false,"name":"wxsid","path":"/","secure":false,"value":"GURmztH40ijJuL3f"},{"domain":".wechat.com","expiry":2147385600,"httpOnly":false,"name":"pgv_pvi","path":"/","secure":false,"value":"6397004800"},{"domain":".wechat.com","expiry":1482380361,"httpOnly":false,"name":"wxuin","path":"/","secure":false,"value":"278208447"}]

If I quit and try to npm start again the domains are now reset correctly, temporarily
[{"domain":".qq.com","expiry":2147385600,"httpOnly":false,"name":"pgv_pvi","path":"/","secure":false,"value":"9658915840"},{"domain":".qq.com","httpOnly":false,"name":"pgv_si","path":"/","secure":false,"value":"s3164663808"},{"domain":".wx.qq.com","expiry":1482380491,"httpOnly":false,"name":"mm_lang","path":"/","secure":false,"value":"en"}]

FWIW I turned loglevel back to DEBUG and now I'm noticing a few of these:
INFO Wechaty v#git[4ed33d2 https://github.com/Microsoft/TypeScript/issues/9944 compact selenium-webdriver types v2, hope @types v3 will publish soon] initializing...
  bot:Grammar gram count 49 +106ms
WARN PuppetWebBrowserCookie addCookies() exception: invalid cookie domain: invalid domain:".wechat.com"
  (Session info: chrome=55.0.2883.95)
  (Driver info: chromedriver=2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1),platform=Mac OS X 10.12.1 x86_64)
ERR PuppetWebBrowserCookie load() add() exception: invalid cookie domain: invalid domain:".wechat.com"
  (Session info: chrome=55.0.2883.95)
  (Driver info: chromedriver=2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1),platform=Mac OS X 10.12.1 x86_64)

@dcsan I just added some unit tests and a bug fix, could you have a try with the latest code?
Please pay attention to this part of the log output:
VERB PuppetWebBrowserCookie hostname()
VERB PuppetWebBrowserCookie getCookiesFromFile() from demo.wechaty.json
SILL PuppetWebBrowserCookie hostname() got web.wechat.com

VERB PuppetWebBrowser open(https://web.wechat.com/zh_CN/htmledition/v2/images/webwxgeticon.jpg)

SILL PuppetWebBrowserCookie addCookies({"domain":".wechat.com","expiry":1482380361,"httpOnly":false,"name":"mm_lang","path":"/","secure":false,"value":"en_US"})

This line: SILL PuppetWebBrowserCookie hostname() got web.wechat.com should match your cookie domain in cookie file.

I'm not sure about the timing
things seem to match but the domain changes after login.
QRCode is shown at web.wechat.com
PuppetWebBrowserCookie hostname() got web.wechat.com
and the cookies in the file (from last login) are also .wechat.com
However, it's still needed to scan the QRCode every time.
VERB PuppetWebBrowserCookie hostname()
VERB PuppetWebBrowserCookie getCookiesFromFile() from SOMENAME.wechaty.json
SILL PuppetWebBrowserCookie hostname() got web.wechat.com

VERB PuppetWebBrowser open(https://web.wechat.com/zh_CN/htmledition/v2/images/webwxgeticon.jpg)

SILL PuppetWebBrowserCookie addCookies({"domain":".wechat.com","expiry":1482386001,"httpOnly":false,"name":"mm_lang","path":"/","secure":false,"value":"en"})

Is it correct that I should stop the process with ctrl-C and then also "leave" the browser?

Wechaty version: #git[890137b fix ci with browser.open() & hostname]
Darwin x64 version 16.1.0 memory 197/8192 MB
Docker: false
Node version: v7.2.1

Wechaty will create a new browser on each time it starts. So the old browser will be never reused.
It seems hostname() works fine according to your log. If the cookies can be set back correctly, then you will no need to scan QR Code. If you are asked for the scan, then there must be other problems for your browser with wechat.com.
When I use Wechaty on wx.qq.com, most of the times the session can be restored, but there's still sometimes it not work as expected. Please let me know if you could find any clues of it, thanks.

For what it's worth, I noticed that on one account I use the problems are much worse than another.

problem account:
only use from iPad

OK account
scan from iPhone

I can't think of any other differences.
They are both active accounts I use in many locations and devices.
Both iphone and ipad are set to english OS now.
trying to track what might be the issue.

Let's continue monitoring this problem.
Also, there's #57 might related to this one.

Did not hear from others about this issue.
Close for now.


[Feature] Improve the alarm mechanism of streamx

What problem does this PR solve?
Issue Number: https://github.com/streamxhub/streamx/issues/1313
Problem Summary:
What is changed and how it works?
Proposal: https://github.com/streamxhub/streamx/issues/1313
Feel free to ping committers for the review!
Contribution Checklist

Make sure that the pull request corresponds to a GITHUB issue.

Name the pull request in the form "[Feature] [component] Title of the pull request", where Feature can be replaced by Hotfix, Bug, etc.

Minor fixes should be named following this pattern: [hotfix] [docs] Fix typo in README.md doc.

Purpose of this pull request

LGTM


Guzzle 7 support

Hey there,
It looks like this package and others that depend on it (like your Flysystem Sharepoint package) can't be installed on newer versions of Laravel because of a lack of Guzzle 7 support.

anything?

https://github.com/delaneymethod/sharepoint-api/pull/3 added support for the "latest Guzzle HTTP version (v7.x)". This is now in dev-master, but not in a version that delaneymethod/flysystem-sharepoint can use. Are there any plans to get this working again when guzzlehttp/guzzle 7.x is in user?


Support needed arguments in pipeline script

@dauss75, @vlaufer, @chris-owen, my Django code will need to call the back-end pipeline you developed last week in order to annotate and filter the user's uploaded NGS data file (e.g., an unannotated VCF file).  Could you please add support in your pipeline's entry-point script for the following, and provide an example of how to call it from the command line?
The call from my script will include the following arguments:

upload_id.  A short, random string used downstream to identify the user's upload and results.
format.  File format defined by the user; either VCF, BAM, or FASTQ.  (Assume this is correct for now.)
filters.  Filters selected by the user prior to uploading.  This argument will be used by the script @vlaufer is developing in https://github.com/DCGenomics/NCBI_August_Hackathon_Push_Button_Genomics_Solution/issues/8.
input_file.  Absolute path to the user's uploaded file.

Here's how I imagine I would call the script you have at the beginning of your pipeline:
/path/to/your/script \
--upload_id sazygp \
--format VCF \
--filters  molcons:missense,nonsense+clinsig:pathogenic \
--input_file /home/ubuntu/eweitz/NCBI_August_Hackathon_Push_Button_Genomics_Solution/django/browser/userdata/sazygp/test.GRCh38.dbsnp.clinvar.chr22_dummyNoAnn.vcf

Certainly. I am working on this functionality tonight and should have something soon.

Awesome!  Thanks Vincent.

All - I have had multiple issues trying to implement this vcf filterer.

I endeavored to switch over from os.system to subprocess.call for security reasons. When I did so, I kept receiving the same error from snpEff. The error was: "error: missing filter expression." I am uncertain as to why the script works with os.system but not when the syntax is changed.
Currently, the script only works with AND statements, not OR statements. I have had a lot of difficulty getting the call to snpeff to work when trying to include more than one filtering expression all in the same call. A stop gap solution is to create temporary files and subset them iteratively, but this will not work for OR statements, if we wish to add that functionality.

Sorry for the slow progress, did not anticipate the amount of difficulty getting this calls to work.

@vlaufer, for number 1, you most likely need to specify "shell=True" in the call to subprocess.call().  See here:
https://docs.python.org/3/library/subprocess.html#replacing-os-system

I will find time either after work or weekend for any remaining works.

@seandavi - I tried both shell="True" and shell="False" I think the issue centers on escaping characters correctly and the syntax required by snpSift.
I have been pushing the script to this github repo, it is in the main folder under the name vcf_filter_v0.1.py
@eweitz - I do not think there needs to be an option for delivering FASTQ or BAM to the front end at all, but I may be completely missing something. We currently have no way to annotate anything other than a VCF, and also again unless I am missing something we would need separate FASTQ or BAM --> JSON converters. It seems to me that the pipeline has to go FASTQ-->BAM-->VCF-->JSON to make sense...

It seems to me that the pipeline has to go FASTQ-->BAM-->VCF-->JSON to make sense

@vlaufer, agreed -- with the cavaet that users may upload data in FASTQ, BAM or VCF, so we can bypass the FASTQ-to-BAM or BAM-to-VCF conversion in some cases.
The --format argument passed into your back-end pipeline is intended to serve as a way to determine what formatting conversions the back-end will need to do.  If --format FASTQ, then convert to BAM if needed, then VCF.  If --format BAM, then just convert to VCF.  (Issues https://github.com/DCGenomics/NCBI_August_Hackathon_Push_Button_Genomics_Solution/issues/3 and https://github.com/DCGenomics/NCBI_August_Hackathon_Push_Button_Genomics_Solution/issues/2 cover those conversions.) At the end of this conversion process, the uploaded file would be in VCF regardless of the input format.  It would then be annotated, then filtered, via pipeline scripts.
Per your comment, I assume that the annotated and filtered VCF file will then need to be converted to JSON prior to being passed into @cjav Django and @ohjuarez's Solr services.
The Django view layer gets its data from @ohjuarez's Solr  API (see here) formatted as JSON.  The JSON is then converted into a Python dictionary, which gets passed onto a Django template that converts the dict to the HTML the user sees.

@eweitz - good. I think I just misinterpreted which script you were talking about taking those arguments. we are on the same page.
Thanks for bearing with me as I get used to the issue functionality of github.
Kindly, Vincent


urlrelay seems to expire after a couple days - can we renew?

We are running a Jambox unattended at church, and loving it.
Although, after a couple of days, we cannot access it via URLrelay.com/go.
I brought it home, and verified that the box is alive, and IF I remember the old address, I can get to it with
http://<IP_ADDRESS>:6080/?..............
So, it's looking like urlrelay.com is clearing out registrations.
I guess I could force a reboot every day in Crontab, but is there something I could run instead to re-do the registration?
regards,
Neal

@mnopneal
Where are you located and who is your internet service provider?
The urlrelay.com web service deletes stale registrations after 30 days, so the problem is not likely there.
urlrelay.com is like a mailbox that lets your raspberry pi pass its local url to your browser.  Urlrelay.com matches them by their external IP address.  To work, this requires that:

the IP address that your raspberry pi used to register, and your browser have the same external IP address.  This should be the case if your raspberry pi and your browser are behind the same router, and your external IP address has not changed since last registration.
Your browser can't be using a VPN or other proxy.  If that's the problem, though, it would flat-out never work.
The local url of the rasperry pi (IP address) has not changed.  This is quite unlikely, but I have seen routers change the raspberry pi IP address (buggy netgear orbi firmware).  A workaround is to assign a static DHCP lease in your router, and/or update the router firmware.

My money is on #1, your external IP address is probably changing.   You can check your browser IP address at https://whatismyip.com.  If you see this change, that's you're problem.
The raspberry pi should register on boot, and every 24 hours after that.  The script which does this is /usr/local/bin/urlrelay.sh.   You can verify that it is running with "ps aux | grep urlrelay".  Even if this script somehow broke, the registration will stay active for 30 days.  But the registration will be wrong for as long as 24 hours if your IP address changes. You can make it register more frequently by changing the second-to-last line from "sleep 1d" to something short like "sleep 10m".
-Kevin

Thanks for the reply.   We are newly on AT&T fiber; the church is on Business Comcast.   IP public addresses haven't changed for either one.  I have turned off the reboot in crontab.    I will make much more careful notes on this.     I.E. get it to the point of urlrelay.com not providing an answer after a couple of days.

@mnopneal whats your external ip?
I might be able to get more insight from the urlrelay database.
What exactly are you seeing when it fails?  An error message from urlrelay?
There's always a chance that the problem is not with urlrelay, but that your pi, or vnc process, is crashing.  One cross check is to see if you can ssh into the pi while it's in that state.
-Kevin

I'm retired, so a little out of practice at keeping detailed logs:
Dec 24th: Started Jambox.
Dec 25th: did urlrelay.com/go, got normal response, and Connect link
worked fine.  (at <IP_ADDRESS>)
Mon Dec 26 13:44:59 EST 2022: did urlrelay.com/go, and repeatedly got no
response for 60 seconds, then it threw up a link for my normal Jambox at
<IP_ADDRESS>, which is upstairs and powered down at the moment.
Manually edited that browser link for .235
, and it connected fine.
So, the Jambox is running;  problem appears to be that urlrelay.com/go
isn't responding rationally.
My public IP is still at <IP_ADDRESS>.  I can leave things alone for
a couple of days, then connect to it and invoke that update script by
hand to see if it spits out any errors or makes any difference in the
urlrelay response.
Thanks.
On 2022-12-25 00:06, Kevin Doren wrote:

@mnopneal [1] whats your external ip?
I might be able to get more insight from the urlrelay database.
What exactly are you seeing when it fails? An error message from
urlrelay?
There's always a chance that the problem is not with urlrelay, but
that your pi, or vnc process, is crashing. One cross check is to see
if you can ssh into the pi while it's in that state.
-Kevin
--
Reply to this email directly, view it on GitHub [2], or unsubscribe
[3].
You are receiving this because you were mentioned.Message ID:
@.***>
Links:
[1] https://github.com/mnopneal
[2]
https://github.com/kdoren/jambox-pi-gen/issues/142#issuecomment-1364627453
[3]
https://github.com/notifications/unsubscribe-auth/AIGOAU5LTDIMPPJXEBEJLP3WO7I6TANCNFSM6AAAAAATGCJAFU

@mnopneal I think that what's happening is that you have 2 jamboxes behind the same router, and both have id=1.
urlrelay works "like magic" if you have a single box on your local network (same external IP as your browser).  When you go to urlrelay.com/go, there is only one place to go, and you'll be redirected there.
What you apparently have is 2 boxes with default setting of id=1.  In that case urlrelay.com will redirect you to the box which registered most recently.  The boxes re-register every 24 hours, so if they are both powered on, you'll get redirected to one box for x hours, then the other box for 24-x hours.
If you have more than one box, you, and your boxes, need to specify the difference.  This is done in the box (by setting a different NODE_ID ( i.e. set NODE_ID=2 on one of your boxes) in the file  /etc/urlrelay/urlrelay.conf, then rebooting.  After that you can get into either box by specifying its ID, like "urlrelay.com/go?id=2" (or id=1),
This is described here:   https://github.com/kdoren/jambox-pi-gen#urlrelay
-Kevin

Thanks.  I'm a little skeptical, since we had these issues with the Jambox at church, with no other Jamboxen nearby, and mine is normally off, BUT in the spirit of eliminating possibilities, I have done as suggested.     This time, I did the urlrelay.com/go, got normal response for .235, and Connect link worked fine.   So, the 24 hours is from the anniversary of boot-up time?

Yes, every 24 hours from boot up unless you've done something to change it.
You could be dealing with more than one problem.  I.e. box crashes sometimes at church because hardware is flakey.  You bring it home where another box has same id, and then things get really confusing.
Now that the id is fixed, you'll be in a position to see if there is an additional problem to debug


[VMS] Component for event listing card

In this task, you are going to create a component that implements the UI for an event card:
See Figma for detailed designs.
This should be a "dumb" UI component, that is, it will receive all the content (like image, heading, body, meta text) that it has to render from its props. It itself won't hold any state.

@PC98 should the component be absolutely sized or fill its container? There are Figma examples for the component being 246x324 and 266x237

Thanks for bringing this up. I followed up with Jason and he said that the height should be static, 237px. He said the width can be a value in the 240-260px range depending on the grid layout of the page. Based on the layout component that the "EventsListing" page uses (see "_Production" page design in "Donor and Volunteer Experience", aka User Experience, Figma doc), the width should be 246px. Not sure how we want to handle this dynamic width though, since the Core team hasn't built layout components yet, should we take in width as a prop?

Also here are some specs related to max-lines and padding values:


Update documentation regarding users using social identities

Hi!
Can you be more clear in docs regarding does @gmail/outlook/aol email accounts are supported or not because in our experience we just cannot even get successful login in PowerrBI working for those external users?
See discussion here: https://community.powerbi.com/t5/Service/Work-or-School-Account-required-when-sharing-with-hotmail/m-p/2202492

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: f70ccdae-1552-2465-be6f-d47cd260ad8e
Version Independent ID: 1ffea5bb-64b0-2661-801e-9eec46e6eec1
Content: Distribute Power BI content to external guest users using Azure Active Directory B2B - Power BI
Content Source: powerbi-docs/guidance/whitepaper-azure-b2b-power-bi.md
Service: powerbi
Sub-service: powerbi-resource
GitHub Login: @davidiseminger
Microsoft Alias: davidi

Thanks for your comment, and for the links to the community discussion. I'll look into this and update the article with any results or definitive answers we find.

Hi @Bafff , I will take this up with the product team. Thanks.

Hi!
Any news?

@Bafff I read about the issue via a different channel too. One of our customers opened an ICM. This seems to be a bug which should be fixed soon. If you don't see a fix in few days, I would recommend that you open a ticket regarding this.

Thanks for your comment. This is, indeed, an issue with the product rather than the documentation itself. Feel free to pursue the fix (via the ICM) and once that fix is in place, we'll be happy to update the documentation as appropriate.

@davidiseminger can you confirm that with the fix (I still would need to know what ICM means) I would receive back the ability to create guest users accounts in my AAD and grant them access to my PowerBI?


Provision for searchable/autocomplete dropdown

Hello,
I'm new to React Native and its ecosystem.
I'm just asking if there is any provision in this module where I could place a searchable/autocomplete dropdown on the map which suggests places as user types in something?
Thanks.

@akashbdj, still no answer? I am also interested in this feature.

This is out of scope of the lib. Use https://github.com/devfd/react-native-geocoder and position your TextEdit (or any other autocomplete by other libs) absolutely above the map (not as child of MapView)


Manage docker login

In order to pull image from private registry, we need to be authenticated.
login command : https://docs.docker.com/engine/reference/commandline/login/
Could  you please provide the capability to have an interactive login during the provisioning ?

During provisioning in vagrant it's not possible to interact with the prompt (I think), so you'd need to place the username and password into the login command. I'm not sure yet if it makes sense to make this a configuration option for vagrant-docker-compose because it isn't a configuration for docker-compose but rather for docker itself. Maybe it should be added to the built-in docker provisioner.
Lets see if we can get you going, and then decide where the feature should live. Does the below achieve what you want? You'd need to add it after provisioning docker and before provisioning docker-compose.
  config.vm.provision :shell, inline: "docker login -u #{ENV['DOCKER_USERNAME']} -p #{ENV['DOCKER_PASSWORD']} server"

Example:
  config.vm.provision :shell, inline: "apt-get update"
  config.vm.provision :docker
  config.vm.provision :shell, inline: "docker login -u #{ENV['DOCKER_USERNAME']} -p #{ENV['DOCKER_PASSWORD']} server"
  config.vm.provision :docker_compose, yml: "/vagrant/docker-compose.yml", rebuild: true, run: "always"

I have an elegant solution on it's way, if you can confirm the above works.

I thought the same thing but I receive 401 http error when I used inline shell provision for login.
vagrant-hostsupdater plugin interact with the prompt in order to modify the hosts file as root user.

https://github.com/leighmcculloch/vagrant-docker-login works for me and can login me in. Can you give it a go and let me know if you still get the 401 http error? Considering vagrant provisioning is largely meant to be automatic I'd like to see if we can get the command line option working, otherwise I'll look further into the how vagrant-hostsupdater does its prompts.

Please reopen if the above doesn't solve your need.


fix(docs): added missing package manager tabs in cli docs

Closes #3605
📝 Description

Add missing different package manager tabs

⛳ Current behavior (updates)

🚀 New behavior

💣 Is this a breaking change (Yes/No): NO

📝 Additional Information

Summary by CodeRabbit

New Features

Introduced a new <PackageManagers> component for improved presentation of package manager commands in the documentation.
Updated installation and server start commands to utilize the <PackageManagers> component, enhancing clarity and consistency.

Documentation

Replaced inline code blocks with the <PackageManagers> component in documentation for better readability and maintainability.

I was due to a small git  branch mistake,
I will resolve soon
On Sat, Aug 10, 2024, 1:15 PM աӄա @.***> wrote:

@.**** requested changes on this pull request.
why reverting all changes?
—
Reply to this email directly, view it on GitHub
https://github.com/nextui-org/nextui/pull/3606#pullrequestreview-2231368881,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BDIO6HRBBTFA6WGJNMQYSRDZQXAH5AVCNFSM6AAAAABL63XFJ2VHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDEMZRGM3DQOBYGE
.
You are receiving this because you were assigned.Message ID:
@.***>


Grammar Serialization and Custom Token Patterns

There may be a bug when combining these features.
See: https://github.com/jhipster/prettier-java/issues/119#issuecomment-488684684

I was unable to reproduce this. Nor do I see any actual usage for he serialized pattern string (mentioned in the linked comment above).
I don't think there is actually a bug here...


Add syntax highlighting for host-name, program and process number in syslog/messages logs

On Linux systems the syslog/messages format is commonly used in several system logs under /var/log.
This log format has five main sections:

date and time
host-name
program
optional process number
log message

Special rules should be added to highlight the host-name, program and process number sections.
Example of log data
Apr  3 07:40:01 HOSTNAME anacron[1111]: Job `cron.weekly' started
Apr  3 07:40:02 HOSTNAME rsyslogd: [origin software="rsyslogd"]

Added custom rules for matching after time groups


mapping LP components handled

Successfully generate multiple LicensePlate components from mapping licensePlates state from redux store.

I see. Checked.


[🐛] pwning.owasp-juice.shop - not found

:bug: Bug report
Description

References to pwning.owasp-juice.shop result in a 404.
Is this a regression?

I think it worked before, but I'm not sure.
:microscope: Minimal Reproduction

Click on https://pwning.owasp-juice.shop/part1/challenges.html#hacking-instructor (a link on https://owasp.org/www-project-juice-shop/)

Isssue on https://owasp-juice.shop website and affects multiple links. Fixed via https://github.com/OWASP/www-project-juice-shop/commit/99cec2bf50f6bb26080f88f69abb509e29d6d72e


Update datafusion-cli allocator

Which issue does this PR close?

Closes #.
Rationale for this change

What changes are included in this PR?

Are there any user-facing changes?

@Dandandan @houqp FYI


Add integration of SeedAndDew

Hey guys,
This is in reference to our email thread about potentially using SeedAndDew as a alternate revenue stream. This is our first pass at integration to show what this would look like. I got a local build working with our python app but didn't see ads there, so I wasn't able to test it properly. Is there a good way to add some placeholder ad to verify it?
The footer_html method in footer_views.py didn't seem to add anything promo related to the response, so I'm assuming something intercepts the signal and edits it on the fly?
I also didn't see a proper settings file where the publisher id would go similar to how you would have with Google Analytics. I'm assuming that is not in source control but passed in as a param or similar?
Also, are there any relevant tests for this that I should be adding to? I couldn't find anything at first glance.

I got a local build working with our python app but didn't see ads there

I think that part is under a private rtd repository.

Thanks for the POC. I'm not familiar with the company, I'm assuming this is: https://seedanddew.com/ ?
We're still figuring out advertising for our own platform, but we're not apt to support a third party network like this. There are a number of concerns that we have around user privacy, ad quality, etc that we want tight control over. For that, I'm -1 on merging something like this -- I'll go ahead and close this issue.
If any other core folks have other opinions on this, feel free to reopen!

Agreed. We built our own ad platform because we didn't want to include arbitrary third-party code on our doc sites. This adds back "random blob of third party minified JS" which is a non-starter for me as well.


Bump bower package version

Hi guys,
The version of the package available on Bower seems to be rather old.  If I understand how Bower versioning / updating works, then the codebase distributed by Bower is from Jan 2014.
I'm sure the package has had some major improvements in the last year and a half (chunked loading is the one that made me realise something was off).  I'm not familiar enough with the codebase to update the version number myself (has there been enough changes for a minor or major version bump).
Could any of you update the version number in bower.json when you have a moment, to make the latest code available for all bower users.
Thanks, and thanks for the great plugin!

You can use this tag for now:
https://github.com/Leaflet/Leaflet.markercluster/tree/v0.4.0-hotfix.1
We'll do an updated full release when leaflet does.


msi: switch to use supports from msrestazure-python

With https://github.com/Azure/msrestazure-for-python/pull/83 merged, I am update CLI to use SDK 's
Mark it as do not merge, as I need to wait for msrestazure to publish first
//CC: @lmazuel

[na] The PR has modified HISTORY.rst describing any customer-facing, functional changes. Note that this does not include changes only to help content. (see Modifying change log).

[x] I adhere to the Command Guidelines.

View a preview at https://prompt.ws/r/Azure/azure-cli/5947
This is an experimental preview for @microsoft users.

@yugangw-msft msrestazure released:
https://pypi.python.org/pypi/msrestazure/0.4.25


Deleting Resource Group fails

It seems MS changed how the API deals with deleting resource groups. It no longer responds with the Location header for HTTP 202 response for Resource Groups. I'm not sure if other resources are affected, but they don't seem to have had this change.
https://docs.microsoft.com/en-us/rest/api/resources/resources#Resources_Delete
2017-05-18 12:11:35.993  LOG <hello-azure> [resource_group_lhmjaz.delete] INFO: Deleting Resource Group "hello-azure"
2017-05-18 12:11:36.400  LOG <hello-azure> [resource_group_lhmjaz.delete] INFO: request({'url': 'https://management.azure.com/subscriptions/xxxxxxxxxxx/resourceGroups/hello-azure', 'params': {'api-version': '2016-02-01'}, 'method': 'delete'})
2017-05-18 12:11:46.193  CFY <hello-azure> [resource_group_lhmjaz.delete] Task failed 'cloudify_azure.resources.resourcegroup.delete' -> HTTP 202 ACCEPTED but no Location header present

@01000101  This apply to all azure resources, at the end of the day the resource will be removed I added a check before delete the resource if it is already exists or not   https://github.com/cloudify-incubator/cloudify-azure-plugin/blob/d4b39ca1d4c32d5efab088cf08647e03da8769c3/cloudify_azure/resources/base.py#L320

@01000101 It seems the issue only happened with ResourceGroup , the resource group is not deleted and keeping stuck with status called Deleting forever.
I did update the api_version for resource group and it keep looping without remove


(Method) Profiling

Determine reoccurring contigs after assembly / before raGOO.
Blast? Compare contigs over all runs.

not important anymore


feat: queue for ordering of messages

Changes

add nonce to TransportMessages, increment every time one is sent out (note: this is per-connection)
implement MessageQueue, track messages in queue when received out of order
todo: this PR is basically done, but I'm occasionally seeing "invalid payload" errors when running the ping example, which I thought would go away with this PR but they haven't :/ going to debug that before opening this
todo: also need to handle duplicate nonces (malicious case, should we disconnect??)

Tests

cargo test

can also run ping example
Issues

closes #18

@stonecharioteer this isn't ready for review yet

@ivanceras nym commit has been pinned, should be fine now


uploading not working 3.3.0 - mergeAll is not a function

TypeError: a.Observable.merge(...).mergeAll is not a function

I think this is resolved now.


Updated ParameterizedModelParser run method for handing run_with_dependencies parameter

Context: Currently ParameterizedModelParser run method utilized kwargs to decide if to execute prompt with dependencies or not. This pull request eliminates the usage of kwargs and introduces a new optional prameter for run method to pass information about running the prompt with dependencies.
Closes: #664
Test Plan:

[x] Add a new test that invokes run with run_with_dependencies=True for a prompt which requires output from another prompt.

Hi @rossdanlm!
Could I get some feedback on the test for the PR?

Actually wait sorry, can you pls also remove kwargs from
https://github.com/lastmile-ai/aiconfig/blob/9617bd9d54e3bff3bb7eef2889af9f30adf39602/python/src/aiconfig/model_parser.py#L69
?
See more comments and details in #882

Hey Ross!
I have addressed this. Also, here's a short video for testing Hugging Face Functionality.
https://www.loom.com/share/a7e09d403dcd4d30a7fd93f8a9e8b7c5

Cross checked the default model parsers aiconfig/python/src/aiconfig/default_parsers/.*. They don't have any implementations of run which requires update.

@rossdancraig I share the info on the test plan later today.

Tests:

Hugging Face Local Inference: https://www.loom.com/share/256142de11e147d19640ce5fd075383b?sid=546a14da-5907-4b19-a9ae-5b97de16e543

Hugging Face Remote Inference: https://www.loom.com/share/cb99fab92e7a47f78aae09906ef3f44a?sid=7c71e5d7-28da-4e0f-aa01-065db9085a04

Tests:

Hugging Face Local Inference: https://www.loom.com/share/256142de11e147d19640ce5fd075383b?sid=546a14da-5907-4b19-a9ae-5b97de16e543
Hugging Face Remote Inference: https://www.loom.com/share/cb99fab92e7a47f78aae09906ef3f44a?sid=7c71e5d7-28da-4e0f-aa01-065db9085a04

Thank you for the super detailed test plans!!!


need valid as a transient in domain class

Couldn't get this working grails 1.3.x - isValid() triggers an assumption that 'valid' is a property, and the system looks for a setter for 'valid' property, which doesn't exist.

Thanks - I forgot that we only fixed that in 2.0. You can have one getter or one setter, and you only need to add to the transients list if you have a matching pair.


Add support for blueprint configuration

We need to add support for blueprint configuration in addition to Spring.

Doing this now will just duplicate work that's already been done in Fuse IDE.  We can wire into what they have in m4 when we tighten up our integration.

Took care of this in milestone 3


Adds hidden prop to

Adds hidden prop to  which transitions it's height to 0px
Adds my name to package.json, I'm here to stay!

Related to https://github.com/gathercontent/app/pull/1578

 Show relevant finder section based on the URL (e.g. items, trash etc.)