                             # since the idea of "finishing opening and rendering" is
                             # not simple to define.
                             @_log_open_time ?= {}
-                            @_log_open_time[opts.path] = {id:id, start:new Date()}
+                            @_log_open_time[opts.path] = {id:id, start:misc.server_time()}
 
                             # grab chat state from local storage
                             local_storage = require('./editor').local_storage

            project_id : @project_id
        if not id
            # new log entry
            id             = misc.uuid()
            obj.time       = new Date()
        obj.id = id
        require('./webapp_client').webapp_client.query
            query : {project_log : obj}

            #console.log opts.path, 'get_directory_listing.success or timeout', err
            if prom_client.enabled
                prom_labels.err = !!err
                prom_get_dir_listing_h?.observe(prom_labels, (misc.server_time() - prom_dir_listing_start) / 1000)

            opts.cb(err ? listing_err, listing)
            if time0 and state != 'running' and not err
