fixes a typo.

fixes a typo.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/AppGyver/supersonic.git/'


add milestones component test

add milestones component test

error: pathspec 'test/components/overview/milestones.coffee' did not match any file(s) known to git

--- test/components/overview/milestones.coffee
+++ test/components/overview/milestones.coffee
@@ -0,0 +1,28 @@
+require '../../testHelper'
+rewire = require 'rewire'
+
+Milestones  = rewire '../../../app/assets/javascripts/components/overview/milestones'
+
+describe 'Milestones', ->
+  course = { string_prefix: 'courses' }
+  block = { id: 1, kind: 2, content: 'Tacos are great' }
+  week = { order: 1, blocks: [block] }
+  week2 = { order: 2, blocks: [] }
+
+  TestMilestones = ReactTestUtils.renderIntoDocument(
+    <Milestones
+      course={course}
+    />
+  )
+
+  it 'renders block content in a
 tag', ->
+    TestMilestones.setState(weeks: [week])
+    milestones = ReactTestUtils.findRenderedDOMComponentWithClass(TestMilestones, 'milestones')
+    expect(milestones.innerHTML).to.include('
Tacos are great
')
+
+  it 'renders an empty message if there are no blocks', ->
+    TestMilestones.setState(weeks: [week2])
+    milestones = ReactTestUtils.findRenderedDOMComponentWithClass(TestMilestones, 'milestones')
+    # fails  when run in isolation with the `mocha` bin,
+    # but passes with `gulp js_coverage` because of I18n issues
+    expect(milestones.innerHTML).to.include('This course does not currently have any milestones.')


project restrictions timeline always displays current year

setting the timeline scale to current year
setting restriction year to current year before displaying

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/kristenhazard/epm-catalog.git/'


Add Japanese locale file

Add Japanese locale file

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/prognostikos/uploadcare-widget.git/'


bootstrap-custom: removed unused functions

--- app/assets/javascripts/bootstrap-custom.js.coffee
+++ app/assets/javascripts/bootstrap-custom.js.coffee
@@ -1,7 +1,3 @@
-$ ->
-  $(".tabs").tabs()
-$ ->
-  $("a[rel=popover]").popover offset: 10
 $ ->
   $(".topbar-wrapper").dropdown()
 $ ->


Fix killed Pippo

Fix killed Pippo

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/GBCarpiArtStudio/storytime_sl.git/'


initialized drmFlexibleGrid

initialized drmFlexibleGrid

error: pathspec 'drm-flexible-grid.coffee' did not match any file(s) known to git


Sidebar: Update machine tree when a new workspace is created

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/andrewjcasal/koding.git/'


bidirectional nav: simplify

bidirectional nav: simplify


DefineStackView: cleanup deprecated method


User Environment: Ensure default workspace exists for own and shared machines

--- client/app/lib/userenvironmentdataprovider.coffee
+++ client/app/lib/userenvironmentdataprovider.coffee
@@ -3,6 +3,7 @@
 globals = require 'globals'
 remote = require('app/remote').getInstance()
 Machine = require 'app/providers/machine'
+sinkrow = require 'sinkrow'

 module.exports = UserEnvironmentDataProvider =
@@ -197,3 +198,26 @@
         console.error "User Environment  Data Provider: #{err}"

       callback err, workspace
+
+
+  ensureDefaultWorkspace: (callback) ->
+
+    data = @get()
+
+    queue = @getMyMachines().concat @getSharedMachines()
+
+      .map ({machine, workspaces}) =>
+
+        =>
+
+          for workspace in workspaces when workspace.isDefault
+            return queue.fin()
+
+          @createDefaultWorkspace machine, (err, workspace) ->
+
+            return queue.fin()  if err
+
+            workspaces.push workspace  if workspace
+            queue.fin()
+
+    sinkrow.dash queue, callback


Teamwork: Changed copy of preview splash.


Fix relationships in permission

Fix relationships in permission

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/netguru/review.git/'


Allow clicking on entire li to navigate.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/aha-app/bigquery-log-viewer.git/'


Fix bugs

Fix bugs

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/Planeshifter/my-atomic-snippets.git/'


initial

initial

error: pathspec 'coffee/test/mongo.coffee' did not match any file(s) known to git

--- coffee/test/mongo.coffee
+++ coffee/test/mongo.coffee
@@ -0,0 +1,23 @@
+{assert} = require 'chai'
+_ = require 'lodash'
+moment = require 'moment'
+
+describe "query", ->
+  it "selectDate(date,date2)", ->
+    selectDate=(date,date2)->
+      if date2
+        date2 = moment(date2).add(1,'days').toDate()
+      else
+        date2 = moment(date).add(1,'days').toDate()
+      query =
+        $gte: moment(date).toDate()
+        $lt: date2
+      return query
+    assert.deepEqual selectDate('20170809'),{
+      '$gte': moment("2017-08-09").toDate()
+      '$lt': moment("2017-08-10").toDate()
+  }
+    assert.deepEqual selectDate('20170809','20170820'),{
+      '$gte': moment("2017-08-09").toDate()
+      '$lt': moment("2017-08-21").toDate()
+  }


Removed functionality to add `dash` on space in preset name

Also changed the route for creating presets..

Removed `contentType: "application/json; charset=utf-8"` as it was converting spaces to special chars and on evercam media side `Poison` was unable to decode the `json`

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/evercam/evercam-dashboard.git/'


Update configuration

Update configuration

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/ehmicky/myos.git/'


[driver] Generate a new temp file for every --run

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/demhydraz/cafe.git/'


upload

upload

error: pathspec 'app/assets/javascripts/admin/validate.coffee' did not match any file(s) known to git


added constant agg + filter

added constant agg + filter

error: pathspec 'src/facet/filter.coffee' did not match any file(s) known to git

--- src/facet/filter.coffee
+++ src/facet/filter.coffee
@@ -0,0 +1,56 @@
+# { attribute: "make", op: "is", value: "Honda" }
+# { attribute: "make", op: "in", values: ["Honda", "BMW"] }
+# { attribute: "make", op: "match", expression: "Hond[ao]" }
+# { attribute: "displacement", op: "within", range: [5, 6] }
+# { op: "not", filter: {...} }
+# { op: "and", filters: [{...}] }
+# { op: "or", filters: [{...}] }
+
+facet.filter = {
+  is: (attribute, value) -> {
+    op: 'is'
+    attribute
+    value
+  }
+
+  in: (attribute, values) -> {
+    op: 'in'
+    attribute
+    values
+  }
+
+  match: (attribute, expression) -> {
+    op: 'match'
+    attribute
+    expression
+  }
+
+  within: (attribute, range) ->
+    throw new TypeError("range must be an array of two things") unless Array.isArray(range) and range.length is 2
+    return {
+      op: 'within'
+      attribute
+      range
+    }
+
+  not: (filter) ->
+    throw new TypeError("filter must be a filter object") unless typeof filter is 'object'
+    return {
+      op: 'not'
+      filter
+    }
+
+  and: (filters) ->
+    throw new TypeError('filters must be a nonempty array') unless Array.isArray(filters) and filters.length
+    return {
+      op: 'and'
+      filters
+    }
+
+  or: (filters) ->
+    throw new TypeError('filters must be a nonempty array') unless Array.isArray(filters) or filters.length
+    return {
+      op: 'or'
+      filters
+    }
+}


Proxy debug logging

Proxy debug logging

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/Bogdan-p/bookingbug-angular.git/'


Fix process type variable

Fix process type variable

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/Arm1stice/prosu.git/'


wrap requirejs; add height(), width()

wrap requirejs; add height(), width()

--- log.coffee
+++ log.coffee
@@ -0,0 +1,9 @@
+define
+
+  info: (message) ->
+    console.log message
+
+  fail: (message) ->
+    throw
+      name: '2cpyError'
+      message: message


add magnet URI

add magnet URI

error: pathspec 'scripts/uri/magnet.coffee' did not match any file(s) known to git

--- scripts/uri/magnet.coffee
+++ scripts/uri/magnet.coffee
@@ -0,0 +1,33 @@
+Generic = require 'uri/generic'
+uriParser = require 'uri/parser'
+
+exports = class Magnet extends Generic
+  constructor: (uri) ->
+    super
+
+    @files = []
+    @otherParameters = {}
+
+    for part in @opaque[1..].split('&') when part isnt ''
+      [param, value] = part.split '=', 2
+
+      if m = /^(.)\.(\d+)$/.exec(param)
+        param = m[1]
+        index = parseInt m[2]
+      else
+        index = 0
+
+      file = @files[index] ?= {
+        keywordTopic: []
+        exactTopic: []
+        exactSource: []
+        addressTracker: []
+      }
+
+      switch param
+        when 'dn' then file.displayName = decodeURIComponent value
+        when 'xl' then file.exactLength = parseInt value
+        when 'kt' then file.keywordTopic.push value.split('+')...
+        when 'xt' then file.exactTopic.push value
+        when 'xs' then file.exactSource.push value
+        when 'tr' then file.addressTracker.push value


add opera

add opera

error: pathspec 'data/points/opera.coffee' did not match any file(s) known to git

--- data/points/opera.coffee
+++ data/points/opera.coffee
@@ -0,0 +1,4 @@
+id: "opera"
+title: "Opera(欧朋浏览器)"
+function: [ "browser" ]
+homepage: "http://www.opera.com/zh-cn"


Add git factory

Add git factory

error: pathspec 'ngtuvok/src/components/backend/git.factory.coffee' did not match any file(s) known to git

--- ngtuvok/src/components/backend/git.factory.coffee
+++ ngtuvok/src/components/backend/git.factory.coffee
@@ -0,0 +1,3 @@
+angular.module 'ngtuvok'
+  .factory "GitFactory", ($resource) ->
+    $resource 'https://api.github.com/users/TuvokVersatileKolinahr/repos'


compute/connect: add transformState support from config

--- client/app/lib/providers/connectcompute.coffee
+++ client/app/lib/providers/connectcompute.coffee
@@ -1,5 +1,6 @@
 React = require 'app/react'
 kd = require 'kd'
+{ isFunction } = require 'lodash'

 debug = require('debug')('compute:connect')

@@ -29,6 +30,11 @@

     return acc
   , {}
+
+  # allow a final props transition to be made by passing a transformState
+  # function to config.
+  if isFunction config.transformState
+    state = config.transformState state, props

   return Object.assign({}, state, props)


client: remove isElementInViewport util

client: remove isElementInViewport util

Signed-off-by: Umut Sirin <4055abbc0e40a1254e715b952ccd414607e0b365@gmail.com>

--- client/app/lib/util/isElementInViewport.coffee
+++ client/app/lib/util/isElementInViewport.coffee
@@ -1,9 +0,0 @@
-module.exports = (el) ->
-
-  { left, right, top, bottom } = el.getBoundingClientRect()
-
-  return \
-    top >= 0 and
-    left >= 0 and
-    bottom <= (global.innerHeight or global.document.documentElement.clientHeight) and
-    right <= (global.innerWidth or global.document.documentElement.clientWidth)


minor fix for start action

minor fix for start action

--- app/scripts/services.coffee
+++ app/scripts/services.coffee
@@ -316,7 +316,7 @@
         restart: action 'Restart VM', 'vm.restart', {
           argsMapper: (id, force = false) -> { id, force }
         }
-        start: action 'Start VM', 'xapi.vm.start'
+        start: action 'Start VM', 'vm.start'
         stop: action 'Stop VM', 'vm.stop', {
           argsMapper: (id, force = false) -> { id, force }
         }


Count number of tries for each token.

Count number of tries for each token.

--- workers/social/lib/social/models/recurly/token.coffee
+++ workers/social/lib/social/models/recurly/token.coffee
@@ -21,7 +21,8 @@
     schema        :
       username    : String
       planCode    : String
-      pin         : Number
+      pin         : String
+      tries       : Number
       createdAt   :
         type      : Date
         default   : -> new Date
@@ -36,12 +37,18 @@
     JRecurlyToken.one
       username: delegate.profile.nickname
       planCode: data.planCode
-      pin     : data.pin
     , (err, token)->
       if err or not token
-        callback no
+        callback no, 0
       else
-        callback yes
+        console.log token
+        token.tries ?= 0
+        if token.pin == data.pin and token.tries < 3
+          callback yes
+        else
+          token.tries++
+          token.save ->
+            callback no

   @createToken = secure (client, data, callback)->
     {delegate} = client.connection
@@ -59,7 +66,8 @@
           planCode: data.planCode

       # Assign a (new) PIN.
-      token.pin = pin
+      token.pin   = pin.toString()
+      token.tries = 0

       # Send email
       token.save =>


JReward: no need to log if users doesn't have any referrer

--- workers/social/lib/social/models/rewards/index.coffee
+++ workers/social/lib/social/models/rewards/index.coffee
@@ -245,7 +245,7 @@
     fetchReferrer = (account, callback)->

       unless referrerUsername = account.referrerUsername
-        return callback new KodingError "User doesn't have any referrer"
+        return callback null # User doesn't have any referrer

       # get referrer
       JAccount.one 'profile.nickname': referrerUsername, (err, referrer)->
@@ -254,7 +254,7 @@

         unless referrer
           # if referrer not fonud then do nothing and return
-          return callback new KodingError "Referrer couldn't found"
+          return callback null # Referrer couldn't found

         callback null, referrer

@@ -335,6 +335,7 @@

           fetchReferrer account, (err, _referrer)->
             return logError err  if err
+            return  unless _referrer
             referrer = _referrer
             queue.next()

@@ -386,7 +387,7 @@

           fetchReferrer me, (err, _referrer)->
             return logError err  if err
-
+            return  unless _referrer
             referrer = _referrer
             queue.next()


client: sidebar: wrap draft stacks in sections

--- client/app/lib/components/sidebar/index.coffee
+++ client/app/lib/components/sidebar/index.coffee
@@ -165,14 +165,16 @@
     @state.drafts?.toList().toJS().map (template) =>
       id = template._id
       title = _.unescape template.title
-
-

-          <Link href="/Stack-Editor/#{id}" onClick={@onDraftTitleClick.bind this, id}>{title}</Link>
-

-
+

+
+

+            <Link href="/Stack-Editor/#{id}" onClick={@onDraftTitleClick.bind this, id}>{title}</Link>
+

+
+

   renderStacks: ->


Client: Sidebar: Added popoverNedeed method to make sure popover is needed


clean up code in coffee file

clean up code in coffee file

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/yirichie/bpm-live.git/'


update drop zone to auto update replace and fix a bug in replace.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/ndlib/honeycomb.git/'


The LJAX request

The LJAX request

error: pathspec 'app/assets/javascripts/ljax_rails.js.coffee' did not match any file(s) known to git

--- app/assets/javascripts/ljax_rails.js.coffee
+++ app/assets/javascripts/ljax_rails.js.coffee
@@ -0,0 +1,11 @@
+$ ->
+  for container in $('.ljax-container')
+    $.ajax
+      type: 'GET'
+      dataType: 'text'
+      url: $(container).prop('url')
+      headers: {'X-LJAX': 'true', 'X-LJAX-Container': container.id}
+      success: (data, status, xhr) ->
+        $("##{container.id}").replaceWith data
+      error: (data, status, xhr) ->
+        console.log "error: #{data}"


Filter last opened path relative to project

Previously the full paths were compared which could cause duplicates
because of symlinks or case insensitive filesystems.

Closes #28

--- lib/project-view.coffee
+++ lib/project-view.coffee
@@ -67,14 +67,15 @@
     projectRelativePaths = super

     if lastOpenedPath = @getLastOpenedPath()
-      for {filePath}, index in projectRelativePaths
-        if filePath is lastOpenedPath
+      lastOpenedProjectRelativePath = atom.project.relativize(lastOpenedPath)
+      for {projectRelativePath}, index in projectRelativePaths
+        if lastOpenedProjectRelativePath is projectRelativePath
           projectRelativePaths.splice(index, 1)
           break

-      projectRelativePath = atom.project.relativize(lastOpenedPath)
-      lastOpenedEntry = {filePath: lastOpenedPath, projectRelativePath}
-      projectRelativePaths.unshift(lastOpenedEntry)
+      projectRelativePaths.unshift
+        filePath: lastOpenedPath
+        projectRelativePath: lastOpenedProjectRelativePath

     projectRelativePaths


brand color

brand color

--- lib/query_runner.coffee
+++ lib/query_runner.coffee
@@ -125,7 +125,7 @@
         share = if @showShareUrl() then query.share_url else ""
         @reply(
           attachments: [
-            _.extend({}, options, {image_url: url, title: share, title_link: share})
+            _.extend({}, options, {image_url: url, title: share, title_link: share, color: "#64518A"})
           ]
           text: ""
         )
@@ -174,10 +174,10 @@
       field = measure_like[0] || dimension_like[0]
       share = if @showShareUrl() then "\n#{query.share_url}" else ""
       text = "*#{renderField(field, result.data[0])}*#{share}"
-      @reply(text)
+      @reply({attachments: [{text: text, color: "#64518A"}])

     else if result.data.length == 1
-      attachment = _.extend({}, options, {
+      attachment = _.extend({color: "#64518A"}, options, {
         fields: renderableFields.map((m) ->
           {title: m.label, value: renderField(m, result.data[0]), short: true}
         )
@@ -188,7 +188,7 @@
       )

     else
-      attachment = _.extend({}, options, {
+      attachment = _.extend({color: "#64518A"}, options, {
         title: renderableFields.map((f) -> f.label).join(" – ")
         text: result.data.map((d) ->
           renderableFields.map((f) -> renderField(f, d)).join(" – ")
@@ -230,6 +230,7 @@
           fallback: look.title
           title: look.title
           text: look.description
+          color: "#64518A"
           title_link: "#{@replyContext.looker.url}#{look.short_url}"
           image_url: if look.public then "#{look.image_embed_url}?width=606" else null
         ]


Improve result reporting

Improve result reporting

--- lib/Task/ActivityTask/BindingTask/Read/LimitOffset.coffee
+++ lib/Task/ActivityTask/BindingTask/Read/LimitOffset.coffee
@@ -17,6 +17,7 @@
   getPageRequest: (params) -> throw new Error("Implement me!")

   execute: ->
+    @count = 0
     Promise.bind(@)
     .then @acquireCredential
     .then -> @progressBarIncCurrent(0)
@@ -24,7 +25,7 @@
     .then @progressBarSetTotal
     .then @readChapter
     .then -> @out.end()
-    .then -> {}
+    .then -> {count: @count}

   readChapter: (total) ->
     offset = @offset
@@ -53,6 +54,7 @@
       @verbose "LimitOffset:readPageResponse", @details({params: params, response: response.toJSON(), body: body})
       @out.write(object) for object in body
       @progressBarIncCurrent(body.length)
+      @count += body.length
       [response, body]

 module.exports = LimitOffset


Fix for proxying

Fix for proxying

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/skgcorp/3dcart-workflows.git/'


fix #2

fix #2

--- lib/ensime-startup.coffee
+++ lib/ensime-startup.coffee
@@ -42,52 +42,53 @@
 classpathFile = (scalaVersion, ensimeServerVersion) ->
   atom.packages.resolvePackagePath('Ensime') + "/classpath_#{scalaVersion}_#{ensimeServerVersion}"

-ensimeConfigFile = atom.project.getPath() + '/.ensime'
+
 ensimeCache = atom.project.getPath() + '/.ensime_cache'
 ensimeServerLogFile = ensimeCache + '/server.log'

-readDotEnsime = -> # TODO: error handling
-  raw = fs.readFileSync(ensimeConfigFile) # TODO: ask as Emacs?
+readDotEnsime = (path)-> # TODO: error handling
+  raw = fs.readFileSync(path) # TODO: ask as Emacs?
   rows = raw.toString().split(/\r?\n/);
   filtered = rows.filter (l) -> l.indexOf(';;') != 0
   filtered.join('\n')

-
-scalaVersionOfProjectDotEnsime = ->
+scalaVersionOfProjectDotEnsime = (path) ->
   # scala version from .ensime config file of project
-  dotEnsime = readDotEnsime()
+  dotEnsime = readDotEnsime(path)
   dotEnsimeLisp = lisp.readFromString(dotEnsime)
   dotEnsimeJs = sexpToJObject(dotEnsimeLisp)
   dotEnsimeJs[':scala-version']

 updateEnsimeServer = ->
-  # createTempDir plugindir + ensime_update_
-  dir = tempdir
+  projectPath = atom.project.getPath()
+  ensimeConfigFile = projectPath + '/.ensime'

-  if not fs.existsSync(dir)
-    fs.mkdirSync(dir)
-    fs.mkdirSync(dir + '/project')
+  if not (projectPath and fs.existsSync(ensimeConfigFile))
+    atom.confirm
+      message: 'No .ensime found'
+      detailedMessage: "You need to have a project open with a .ensime in root."
+      buttons:
+        Ok: ->
+  else
+    if not fs.existsSync(tempdir)
+      fs.mkdirSync(tempdir)
+      fs.mkdirSync(tempdir + '/project')

+    scalaVersion = scalaVersionOfProjectDotEnsime(ensimeConfigFile)

-  ensimeServerVersion = atom.config.get('ensime.ensimeServerVersion')
+    ensimeServerVersion = atom.config.get('ensime.ensimeServerVersion')

+    # write out a build.sbt in this dir
+    fs.writeFileSync(tempdir + '/build.sbt', createSbtStartScript(scalaVersion, ensimeServerVersion,
+      classpathFile(scalaVersion, ensimeServerVersion)))

-  scalaVersion = scalaVersionOfProjectDotEnsime()
+    fs.writeFileSync(tempdir + '/project/build.properties', 'sbt.version=0.13.8\n')

-  # write out a build.sbt in this dir
-  fs.writeFileSync(tempdir + '/build.sbt', createSbtStartScript(scalaVersion, ensimeServerVersion,
-    classpathFile(scalaVersion, ensimeServerVersion)))
-
-
-  fs.writeFileSync(tempdir + '/project/build.properties', 'sbt.version=0.13.8\n')
-
-  # if file exist classpathFile delete
-
-  # run sbt "saveClasspath" "clean"
-  pid = spawn("#{atom.config.get('ensime.sbtExec')}", ['saveClasspath', 'clean'], {cwd: tempdir})
-  pid.stdout.on 'data', (chunk) -> log(chunk.toString('utf8'))
-  pid.stderr.on 'data', (chunk) -> log('ensime startup exec error: ' + chunk.toString('utf8'))
-  pid.stdin.end()
+    # run sbt "saveClasspath" "clean"
+    pid = spawn("#{atom.config.get('ensime.sbtExec')}", ['saveClasspath', 'clean'], {cwd: tempdir})
+    pid.stdout.on 'data', (chunk) -> log(chunk.toString('utf8'))
+    pid.stderr.on 'data', (chunk) -> log('ensime startup exec error: ' + chunk.toString('utf8'))
+    pid.stdin.end()

 startEnsimeServer = ->


remote/machine: update getTitle helper

remote/machine: update getTitle helper

Signed-off-by: Umut Sirin <4055abbc0e40a1254e715b952ccd414607e0b365@gmail.com>

--- client/app/lib/remote-extensions/machine.coffee
+++ client/app/lib/remote-extensions/machine.coffee
@@ -274,8 +274,8 @@
     { Shared, Reassigned, Collaboration } = JMachine.Type

     switch @getType()
-      when Shared, Collaboration then "#{@label} (#{@getOwner()})"
-      when Reassigned then "#{@label} (#{@getOldOwner()})"
+      when Shared, Collaboration then "#{@label} (@#{@getOwner()})"
+      when Reassigned then "#{@label} (@#{@getOldOwner()})"
       else @label


Fixed a typo in rule #31.

Fixed a typo in rule #31.

--- src/scripts/ferengi_rules_of_acquisition.coffee
+++ src/scripts/ferengi_rules_of_acquisition.coffee
@@ -63,7 +63,7 @@
   Whisper your way to success.\n
     -- ST:DS9, \"Treachery, Faith, and the Great River\"",
   "Ferengi Rule of Acquisition #31:\n
-  Never make fun of a Ferengi's mother.1\n
+  Never make fun of a Ferengi's mother.\n
     -- ST:DS9, \"The Siege\"",
   "Ferengi Rule of Acquisition #33:\n
   It never hurts to suck up to the boss.2\n


Add Parallel command class

Add Parallel command class

error: pathspec 'src/async/parallel.coffee' did not match any file(s) known to git

--- src/async/parallel.coffee
+++ src/async/parallel.coffee
@@ -0,0 +1,13 @@
+class Parallel
+  constructor: (commands...) ->
+    @commands = commands.flatten()
+
+  run: (callback) ->
+    @counter = 0
+    f = =>
+      @counter += 1
+      callback?() if @counter is @commands.length
+
+    command f for command in @commands
+
+module.exports = Parallel


Revert "Add duplicate check before insert in Temporarty table"

This reverts commit 8e03ef051a543c50073abfcf65b8b33359bd687a.

--- lib/Strategy/DBStrategy/Save/TemporaryTable.coffee
+++ lib/Strategy/DBStrategy/Save/TemporaryTable.coffee
@@ -31,25 +31,10 @@
         """)

   insert: (externalObject) ->
-    @checkIfExists externalObject
-    .then (exists) ->
-      if not exists
-        instance = new @temporaryModel(@serializer.toInternal(externalObject))
-        instance.set("_avatarId", @avatarId)
-        instance.save(null, {transacting: @transaction}).bind(@)
-        .then (args...) -> @emit "insert", args...
-      else
-        console.warn "Primary key collision detected!", externalObject
-
-  checkIfExists: (externalObject) ->
-    Promise.bind(@)
-    .then ->
-      @transaction.raw("""
-              SELECT COUNT(*) as "counter" FROM "#{@bufferTableName}"
-              WHERE "#{@idFieldName}" = '#{externalObject[@idFieldName]}' AND "_avatarId" = '#{@avatarId}'
-            """)
-    .then (result) ->
-      result.rows[0].counter isnt '0'
+    instance = new @temporaryModel(@serializer.toInternal(externalObject))
+    instance.set("_avatarId", @avatarId)
+    instance.save(null, {transacting: @transaction}).bind(@)
+    .then (args...) -> @emit "insert", args...

   finish: ->
       Promise.bind(@)


added benchmarks which reveal that the DOM is a waste of time

error: pathspec 'bench/helloworld.coffee' did not match any file(s) known to git

--- bench/helloworld.coffee
+++ bench/helloworld.coffee
@@ -0,0 +1,41 @@
+dom = require('../dom')
+
+assign_and_output = () ->
+	document = dom.createDocument()
+	document.body.innerHTML = "
Hello World.
"
+	return document.toString()
+
+output = () ->
+	node = (name, attrs = {}, children) ->
+		attrs = (' '+k+'="'+attrs[k]+'"' for k of attrs).join('')
+		if children.join
+			children = children.join('')
+		"<#{name}#{attrs}>#{children}</#{name}>"
+	html = (children = []) -> node('html', {}, children)
+	head = (attrs = {}, children = []) -> node('head', attrs, children)
+	body = (attrs = {}, children = []) -> node('body', attrs, children)
+	div = (attrs = {}, children = []) -> node('div', attrs, children)
+	p = (attrs = {}, children = []) -> node('p', attrs, children)
+	span = (attrs = {}, children = []) -> node('span', attrs, children)
+
+	html([head(), body(null, div({id:'content','class':'content'}, "Hello World."))])
+
+measure = (f, n) ->
+	start = Date.now()
+	for i in [0..n]
+		f()
+	return (Date.now() - start)
+
+run = (f, n, interval) ->
+	for i in [0...n] by interval
+		ms = measure(f, interval)
+		rps = interval * 1000 / ms
+		console.log "Requests per sec:", rps
+
+console.log assign_and_output()
+console.log output()
+run assign_and_output, 1000,200
+
+run output, 100000, 20000
+
+# vim: ft=coffee


im fucking retarded sometimes

im fucking retarded sometimes

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/Mikuia/Mikuia.git/'


bug fix

bug fix

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/bubblegroup/bubblebot.git/'


bug fix

bug fix

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/qiangyu/nodejsconfig.git/'


Quickfix again: Cast buffer to string when getting OS version. (Sorry)

--- src/device.coffee
+++ src/device.coffee
@@ -181,7 +181,7 @@
 exports.getOSVersion = ->
 	fs.readFileAsync(config.hostOsVersionPath)
 	.then (releaseData) ->
-		lines = releaseData.split("\n")
+		lines = (new String(releaseData)).split("\n")
 		releaseItems = {}
 		for line in lines
 			[ key, val ] = line.split('=')