added coffeescript to output how many files were chosen during the browse_everything process

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

--- app/assets/javascripts/deposits.coffee
+++ app/assets/javascripts/deposits.coffee
@@ -0,0 +1,13 @@
+@plural = (str, num) ->
+  if (num > 1)
+    returnString = str + 's'
+  else
+    returnString = str
+
+
+$(document).ready ->
+  $('#browse').browseEverything().done(
+    (data) ->
+      $('#browse_everything_status').html(data.length.toString() + " " + plural("file", data.length) + " selected")
+  )
+


KDEventEmitter: code style

KDEventEmitter: code style

revised this backwards.  "it" as an article makes the meaning of the sentence fall apart.  English is a shitty programming language.

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/'


VirtualizationController: Disable paid vms, use createFreeVm for default vms

--- client/Main/VirtualizationController.coffee
+++ client/Main/VirtualizationController.coffee
@@ -69,7 +69,7 @@

   confirmVmDeletion: (vmInfo, callback = (->)) ->
     { hostnameAlias } = vmInfo
-
+
     vmPrefix = (@parseAlias hostnameAlias)?.prefix or hostnameAlias

     modal = new VmDangerModalView
@@ -89,7 +89,7 @@
     JVM.removeByHostname hostnameAlias, (err)->
       return callback err  if err

-      KD.getSingleton("finderController").unmountVm hostnameAlias
+      # KD.getSingleton("finderController").unmountVm hostnameAlias
       KD.getSingleton("vmController").emit 'VMListChanged'
       callback null

@@ -193,7 +193,7 @@
         return new KDNotificationView
           title : err.message or "Something bad happened while creating VM"
       else
-        KD.getSingleton("finderController").mountVm vm.hostnameAlias
+        # KD.getSingleton("finderController").mountVm vm.hostnameAlias
         vmController.emit 'VMListChanged'
         vmController.showVMDetails vm

@@ -293,28 +293,25 @@
           color       : "#ffffff"
         duration      : 120000

-      KD.remote.cacheable KD.defaultSlug, (err, group)->
-        if err or not group?.length
-          return warn err
-        koding = group.first
-        koding.createVM
-          planCode : 'free'
-          type     : 'user'
-        , (err)->
-          unless err
-            vmController = KD.getSingleton('vmController')
-            vmController.fetchDefaultVmName (defaultVmName)->
-              vmController.emit 'VMListChanged'
-              KD.getSingleton('finderController').mountVm defaultVmName
-              notify.destroy()
-              callback?()
-          else
-            notify?.destroy()
-            KD.showError err
+      { JVM } = KD.remote.api
+      JVM.createFreeVm (err, vm)->
+        unless err
+          vmController = KD.getSingleton('vmController')
+          vmController.fetchDefaultVmName (defaultVmName)->
+            vmController.emit 'VMListChanged'
+            notify.destroy()
+            callback?()
+        else
+          notify?.destroy()
+          KD.showError err

   createNewVM: (callback)->
     @hasDefaultVM (err, state)=>
-      if state then @createPaidVM() else @createDefaultVM callback
+      if state
+        new KDNotificationView
+          title : "Paid VMs will be available soon to purchase"
+      else
+        @createDefaultVM callback

   showVMDetails: (vm)->
     vmName = vm.hostnameAlias
@@ -359,7 +356,7 @@

       KD.getGroup().fetchProducts 'pack', options, (err, packs) ->
         return  if KD.showError err
-
+
         productForm.setContents 'packs', packs

     workflow = new PaymentWorkflow


remove log lines and add todo

remove log lines and add todo

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/leonidas/qa-reports.git/'


Fix dragging-when-scrolled issue; set z-index as advertised in the comments

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/TheVikingOwain/arcadecache.git/'


kd overlay view implemented

kd overlay view implemented

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

--- core/KDOverlayView.coffee
+++ core/KDOverlayView.coffee
@@ -0,0 +1,49 @@
+class KDOverlayView extends KDView
+
+  constructor: (options={}, data)->
+
+    {isRemovable, animated, color, transparent, parent, opacity} = options
+
+    cssClass =    ["kdoverlay"]
+    cssClass.push  "animated"         if animated
+    cssClass.push  "transparent"      if transparent
+    options.cssClass = cssClass.join " "
+    super
+
+    isRemovable ?= yes
+
+    if color
+      @$().css
+        backgroundColor: color
+        opacity: opacity ? 0.5
+
+    if "string" is typeof parent
+      @$().appendTo $(parent)
+    else if parent instanceof KDView
+      @$().appendTo parent.$()
+
+    if animated
+      @utils.defer =>
+        @$().addClass "in"
+      @utils.wait 300, =>
+        @emit "OverlayAdded", @
+    else
+      @emit "OverlayAdded", @
+
+    if isRemovable
+      @$().on "click.overlay", @removeOverlay.bind @
+
+  removeOverlay: ->
+
+    @emit "OverlayWillBeRemoved"
+    callback = =>
+      @$().off "click.overlay"
+      @destroy()
+      @emit "OverlayRemoved", @
+
+    if @$().hasClass "animated"
+      @$().removeClass "in"
+      @utils.wait 300, =>
+        callback()
+    else
+      callback()


Clean up generating score values

Clean up generating score values

--- resources/assets/coffee/_classes/hits.coffee
+++ resources/assets/coffee/_classes/hits.coffee
@@ -18,20 +18,21 @@

 class @Hits
   @generate: ({score, playmode}) ->
-    elements = ['count300', 'count100', 'count50']
-    if playmode == 'mania'
-      elements = ['countgeki', 'count300',  'countkatu', 'count100', 'count50']
+    elements = if playmode == 'mania'
+      ['countgeki', 'count300',  'countkatu', 'count100', 'count50']
+    else
+      ['count300', 'count100', 'count50']

     header = ''
     values = ''

-    for elem, i in elements
-      header += osu.trans "beatmaps.beatmapset.show.scoreboard.stats.#{elem}"
-      values += "#{score[elem]}"
+    header = _(elements)
+        .map (elem) -> osu.trans "beatmaps.beatmapset.show.scoreboard.stats.#{elem}"
+        .join '/'

-      if i < elements.length - 1
-        header += '/'
-        values += '/'
+    values = _(elements)
+        .map (elem) -> osu.trans "#{score[elem]}"
+        .join '/'

     header: header
     values: values


Fix display of update button

Fix display of update button

Update button was always displayed when branch explicitely set to
`master`

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/clochix/cozy-home.git/'


Restbox added

Restbox added

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/keboola/kbc-ui-wrapper.git/'


Copy and paste youtube to steam

Copy and paste youtube to steam

100% OC, totally not ripping anyone off here.

error: pathspec 'scripts/steam-info.coffee' did not match any file(s) known to git

--- scripts/steam-info.coffee
+++ scripts/steam-info.coffee
@@ -0,0 +1,38 @@
+# Description
+#  Grab the title of a youtube video
+#
+# Dependencies:
+#  cheerio
+#  request
+#
+# Configuration:
+#  None
+#
+# Commands:
+#  None
+#
+# Notes:
+#  steam also sucks (but mostly I'm lazy)
+#
+# Author:
+#  ~~justinwoo~~ sshirokov without copy and paste at all!
+
+url = require 'url'
+path = require 'path'
+request = require 'request'
+cheerio = require 'cheerio'
+
+module.exports = (robot) ->
+  robot.hear /store.steampowered.com/app/(\d+)/i, (msg) ->
+    url_parsed = url.parse(msg.match[1])
+    getTitle msg, url_parsed.href
+
+getTitle = (msg, url) ->
+  muhUrl = "http://store.steampowered.com/app/409160/#{url}/"
+  request muhUrl, (err, res, body) ->
+    if err
+      msg.send "couldn't do anything with #{muhUrl}. steam sucks"
+    else
+      $ = cheerio.load(body)
+      title = $('title').text()
+      msg.send title


Fix whitespace issue in _Gruntfile template

Here is what I got when using `grunt deploy`:

Running "coffeelint:all" (coffeelint) task

Gruntfile.coffee
  ✖  line 94   Line contains inconsistent indentation  Expected 4 got 5
  ✖  line 95   Line contains inconsistent indentation  Expected 4 got 3
  ✖  line 100  Line contains inconsistent indentation  Expected 4 got 8

✖ 3 errors

Warning: Task "coffeelint:all" failed. Use --force to continue.

--- app/templates/_Gruntfile.coffee
+++ app/templates/_Gruntfile.coffee
@@ -91,7 +91,7 @@
         <% if (config.get('deployToGithubPages')) { %>
         buildcontrol:

-             options:
+            options:
                 dir: 'dist'
                 commit: true
                 push: true


add toast service

add toast service

error: pathspec 'app/services/toast.coffee' did not match any file(s) known to git

--- app/services/toast.coffee
+++ app/services/toast.coffee
@@ -0,0 +1,7 @@
+null
+
+### @ngInject ###
+global.cobudgetApp.factory 'Toast', ($mdToast) ->
+  new class Toast
+    show: (msg) ->
+      $mdToast.show($mdToast.simple().content(msg))


SettingsPane: Temporarily comment out creating participant list.


Search completion; force the first match to the top of the list.

This may or may not be a good idea.  It means that the first completion
is just a tab away.

--- background_scripts/completion.coffee
+++ background_scripts/completion.coffee
@@ -384,6 +384,9 @@
           for suggestion in searchSuggestions
             suggestions.push @mkSuggestion true, queryTerms, type, mkUrl(suggestion), suggestion, @computeRelevancy, score
             score *= 0.9
+
+          # Experimental. Force the best match to the top of the list.
+          suggestions[0].extraRelevancyData = 0.9999999 if 0 < suggestions.length

           if custom
             # For custom search engines, we need to tell the front end to insert the search engine's keyword


sets up test

sets up test

--- components/split_test/running_tests.coffee
+++ components/split_test/running_tests.coffee
@@ -29,3 +29,11 @@
       new: 0.5
     edge: 'new'
     dimension: 'dimension5'
+
+  homepage_contents:
+    key: 'homepage_contents'
+    outcomes:
+      featured: 0.5
+      artworks: 0.5
+    edge: 'new'
+    dimension: 'dimension6'


remove unneeded image loaded check

remove unneeded image loaded check

--- components/fair_layout/client/index.coffee
+++ components/fair_layout/client/index.coffee
@@ -3,7 +3,6 @@
 FooterView = require '../../main_layout/footer/view.coffee'
 lightDetector = require '../../light_detector/index.coffee'
 FairNavView = require './nav.coffee'
-imagesLoaded = require 'imagesloaded'

 module.exports = (options) =>
   globalClientSetup()
@@ -15,8 +14,7 @@

   # check for feature image light/dark class
   if $('.feature-image').length
-    $('.feature-image').imagesLoaded ->
-      lightDetector
-        targets: '.fair-overview-top, .fair-layout-header, .fair-layout-nav'
-        backgroundClass: '.feature-image'
-        imageUrl: model.coverImage().imageUrl('wide')
+    lightDetector
+      targets: '.fair-overview-top, .fair-layout-header, .fair-layout-nav'
+      backgroundClass: '.feature-image'
+      imageUrl: model.coverImage().imageUrl('wide')


fix (Modules) Validate iframes before messing with them

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/'


simple alloca example

simple alloca example

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

--- example/noop.coffee
+++ example/noop.coffee
@@ -0,0 +1,17 @@
+# function calls and stack allocation
+
+llvm = require '../'
+
+module = llvm.CodeUnit "hello"
+
+noop = module.makeFunction "noop", llvm.type.i32, llvm.type.i32
+a = noop.parameter 0
+s = noop.alloca llvm.type.i32
+noop.store a, s
+noop.return noop.load s
+
+main = module.makeFunction "main", llvm.type.i32
+theAnswer = main.value llvm.type.i32, 42
+main.return main.callFunction noop, theAnswer
+
+module.writeBitcodeToFile 'noop.bc'


Create _.coffee with different tools

Create _.coffee with different tools

Creates isFunction, any, all, equals and last

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

--- lib/_.coffee
+++ lib/_.coffee
@@ -0,0 +1,43 @@
+_ = {}
+
+_.isFunction = (fun) ->
+  fun and fun != null and fun.constructor == "function"
+
+_.any = (array, fun) ->
+  if not _.isFunction fun
+    fun = val -> val
+  for element in array
+    if fun element
+      return true
+  return false
+
+_.all = (array, fun) ->
+  if not _.isFunction fun
+    fun = val -> val
+  for element in array
+    if not (fun element)
+      return false
+  return true
+
+# check for equality of all the key values
+_.equals = (obj1, obj2) ->
+  # check that b has the same attributes as a and each has same value
+  eqHelper = (a, b) ->
+    for key of a
+      if not key in b
+        return false
+      if a[key] != b[key]
+        return false
+    return true
+
+  return eqHelper(obj1, obj2) and eqHelper(obj2, obj1)
+
+_.last = (array) ->
+  len = array.length
+  if len == 0
+    return null
+  else
+    return array[len-1]
+
+if module?
+  module.exports = _


adding format helper

adding format helper

error: pathspec 'src/scripts/helpers/handlebars/format.coffee' did not match any file(s) known to git

--- src/scripts/helpers/handlebars/format.coffee
+++ src/scripts/helpers/handlebars/format.coffee
@@ -0,0 +1,7 @@
+define (require) ->
+  Handlebars = require('hbs/handlebars')
+
+  Handlebars.registerHelper 'format', (str) ->
+    cap = str.charAt(0).toUpperCase()
+    format = str.substring(1).replace('_', ' ')
+    return "#{cap}#{format}"


fixing metamenu

fixing metamenu

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

--- app/coffee/metamenu.coffee
+++ app/coffee/metamenu.coffee
@@ -0,0 +1,80 @@
+
+$(document).ready ->
+  setupMetaDropdowns()
+
+# init
+window.setupMetaDropdowns = ->
+  settingsPanel = new SettingsPanel('.settingsPanel')
+
+  $.subscribe('toggleSettings', (event) ->
+    settingsPanel.toggleView()
+  )
+
+  $('.settingsPanel .trigger').first().click( (event)->
+    $.publish('hidePanels');
+    $.publish('toggleSettings', [this])
+  )
+
+  appearancePanel = new AppearancePanel('.appearancePanel')
+  appearancePanel.displayBedsheets()
+
+  $.subscribe('toggleAppearance', (event) ->
+    appearancePanel.toggleView()
+  )
+
+  $('.appearancePanel .trigger').first().click( (event)->
+    $.publish('hidePanels');
+    $.publish('toggleAppearance', [this])
+  )
+
+  # close all panels listener
+  $.subscribe('hidePanels', (event) ->
+    # close all .panel objects
+    appearancePanel.contract()
+    settingsPanel.contract()
+  )
+
+# Model
+class MetaMenu
+  constructor: (@name)->
+    @$currentMenuButton = $(@name).find('.trigger').first()
+    @$currentMenuPanel = $(@name).find('.target').first()
+
+  toggleView: ->
+    if @$currentMenuPanel.is(":visible")
+      @contract()
+    else
+      @expand()
+
+  expand: ->
+    # code to expand menu item
+    @$currentMenuPanel.show()
+
+  contract: ->
+    # code to contract menu item
+    @$currentMenuPanel.fadeOut()
+
+
+# Appearance Model Subclass
+class AppearancePanel extends MetaMenu
+  displayBedsheets: ->
+    # code to display bedsheets here. Need JSON call
+    # $.publish('follow/changing', [node])
+    $.getJSON("/images.json?section=Bedsheets", (data) =>
+
+      @$currentMenuPanel.find('.bedsheets ul').html('');
+
+      for node in data
+        newElement = '

'
+        @$currentMenuPanel.find('.bedsheets ul').append(newElement)
+    )
+
+
+# Settings Model Subclass
+class SettingsPanel extends MetaMenu
+  defaultSharing: -> @$currentMenuPanel.find('.sharingList').val()
+  authorizeAllFollows: -> @$currentMenuPanel.find('.authFollow').is(':checked')
+  facebookSharing: -> @$currentMenuPanel.find('.fbShare').is(':checked')
+  changePassword: ->
+    alert "change password"
+


test for uminus

test for uminus

--- test/fixtures/execution/test_literals.coffee
+++ test/fixtures/execution/test_literals.coffee
@@ -6,4 +6,9 @@
 regex: /match/i
 words: "I think there is a match in here."

-print(!!words.match(regex))+print(!!words.match(regex))
+
+
+neg: (3 -4)
+
+print(neg is -1)


Adding snippet for node require

Adding snippet for node require

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/jonrohan/.dotfiles.git/'


Add getMaterialStyleData function

Add getMaterialStyleData function

--- views/components/ship/parts/panebody.cjsx
+++ views/components/ship/parts/panebody.cjsx
@@ -1,6 +1,6 @@
 {relative, join} = require 'path-extra'
 {$, $$, _, React, ReactBootstrap, resolveTime, notify} = window
-{Table, ProgressBar, OverlayTrigger, Tooltip, Grid, Col, Alert} = ReactBootstrap
+{Table, ProgressBar, OverlayTrigger, Tooltip, Grid, Col, Alert, Row} = ReactBootstrap

 Slotitems = require './slotitems'

@@ -65,6 +65,16 @@
     'info'
   else
     'success'
+
+getMaterialStyleData = (percent) ->
+  if percent <= 20
+    color: '#F37B1D'
+  else if percent <= 40
+    color: '#DD514C'
+  else if percent < 100
+    color: '#FFFF00'
+  else
+    null

 getDeckMessage = (deck) ->
   {$ships, $slotitems, _ships} = window


[bot] Stop the Twitch updates from removing the whole stream list - features using the live stream list should be more stable now

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/'


YouTube HTML5 mode is used by default. Fix typo in video alpha template.

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/bmedx/modulestore.git/'


Script for final converting

Script for final converting

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

--- convert_dir_final.coffee
+++ convert_dir_final.coffee
@@ -0,0 +1,6 @@
+Slimmy = require './src/slimmy'
+slimmy = new Slimmy()
+
+dirPath = process.argv[2]
+slimmy.convertDir(dirPath, true, true)
+


Add correct cmd

Add correct cmd

--- index.coffee
+++ index.coffee
@@ -10,7 +10,7 @@
     stderr = ''
     error = null

-    spawnedProcess = ChildProcess.execFile cmd, options.args, (error, stdout, stderr) ->
+    ChildProcess.execFile options.cmd, options.args, (error, stdout, stderr) ->
       grunt.log.error(stderr) if stderr
       callback(error)


Modernize markdown preview spec

Modernize markdown preview spec

--- src/packages/markdown-preview/spec/markdown-preview-spec.coffee
+++ src/packages/markdown-preview/spec/markdown-preview-spec.coffee
@@ -4,7 +4,7 @@

 describe "MarkdownPreview package", ->
   beforeEach ->
-    window.loadPackage('gfm')
+    atom.activatePackage('gfm')
     project.setPath(project.resolve('markdown'))
     window.rootView = new RootView
     atom.activatePackage("markdown-preview", immediate: true)


Add maproute.cson A route represents a line connecting 2 spots These data are based on map images format: mapspot[:MapArea:][:MapCell:][:RouteNo:] = [:Spot1:, :Spot2:] for duplicated spots, only one is chosen Special cases: 1. map 2-3, point E to point I is not possible, vice vesa, though it is drawn on the image 2. map 6-3. the surveillance point is not included

error: pathspec 'assets/data/maproute.cson' did not match any file(s) known to git


error handling

error handling

--- src/trello.coffee
+++ src/trello.coffee
@@ -50,8 +50,8 @@
   trello.get "/1/organizations/#{process.env.HUBOT_TRELLO_ORGANIZATION}/boards", (err, data) ->
     msg.reply "There was an error reading the list of boards" if err
     for board in data
-      msg.send "#{board.id} - #{board.name}"
       if board.name.toLowerCase() == msg.envelope.room.toLowerCase()
+        msg.reply "I've found the board #{board.name}. Now looking for the list..."
         trello.get "/1/boards/#{board.id}/lists", (err, data) ->
           msg.reply "There was an error reading the lists" if err
           msg.send "* #{list.name}" for list in data unless err and data.length == 0
@@ -63,16 +63,20 @@
   trello.get "/1/organizations/#{process.env.HUBOT_TRELLO_ORGANIZATION}/boards", (err, data) ->
     msg.reply "There was an error reading the list of boards" if err
     for board in data
-      msg.send "#{board.id} - #{board.name}"
       if board.name.toLowerCase() == msg.envelope.room.toLowerCase()
+        msg.reply "I've found the board #{board.name}. Now looking for the list..."
         trello.get "/1/boards/#{board.id}/lists", (err, data) ->
           msg.reply "There was an error reading the lists" if err
           for list in data
+            found_list = false
             if list.name.toLowerCase() == list_name.toLowerCase()
+              found_list = true
               trello.post "/1/cards", {name: cardName, idList: list.id}, (err, data) ->
                 msg.reply "There was an error creating the card" if err
                 msg.reply "OK, I created that card for you. You can see it here: #{data.url}" unless err
               break
+          if found_list == false
+            msg.reply "I couldn't find a list named: #{list_name}." unless id
         break

 showCards = (msg, list_name) ->
@@ -81,18 +85,22 @@
   trello.get "/1/organizations/#{process.env.HUBOT_TRELLO_ORGANIZATION}/boards", (err, data) ->
     msg.reply "There was an error reading the list of boards" if err
     for board in data
-      msg.send "#{board.id} - #{board.name}"
-      if board.name.toLowerCase() == msg.room.toLowerCase()
+      if board.name.toLowerCase() == msg.envelope.room.toLowerCase()
+        msg.reply "I've found the board #{board.name}. Now looking for the list..."
         trello.get "/1/boards/#{board.id}/lists", (err, data) ->
           msg.reply "There was an error reading the lists" if err
+          found_list = false
           for list in data
             if list.name.toLowerCase() == list_name.toLowerCase()
+              found_list = true
               trello.get "/1/lists/#{list.id}", {cards: "open"}, (err, data) ->
                 msg.reply "There was an error showing the list." if err
                 msg.reply "Here are all the cards in #{data.name}:" unless err and data.cards.length == 0
                 msg.send "* [#{card.shortLink}] #{card.name} - #{card.shortUrl}" for card in data.cards unless err and data.cards.length == 0
                 msg.reply "No cards are currently in the #{data.name} list." if data.cards.length == 0 and !err
               break
+          if found_list == false
+            msg.reply "I couldn't find a list named: #{list_name}." unless id
         break

 moveCard = (msg, card_id, list_name) ->
@@ -100,8 +108,8 @@
   trello.get "/1/organizations/#{process.env.HUBOT_TRELLO_ORGANIZATION}/boards", (err, data) ->
     msg.reply "There was an error reading the list of boards" if err
     for board in data
-      msg.send "#{board.id} - #{board.name}"
-      if board.name.toLowerCase() == msg.room.toLowerCase()
+      if board.name.toLowerCase() == msg.envelope.room.toLowerCase()
+        msg.reply "I've found the board #{board.name}. Now looking for the list..."
         trello.get "/1/boards/#{board.id}/lists", (err, data) ->
           msg.reply "There was an error reading the lists" if err
           found_list = false
@@ -115,7 +123,7 @@
           if found_list == false
             msg.reply "I couldn't find a list named: #{list_name}." unless id
       break
-
+
 module.exports = (robot) ->
   # fetch our board data when the script is loaded
   ensureConfig console.log


a few specs for exercise chooser

a few specs for exercise chooser

error: pathspec 'test/components/task-plan/homework/choose-exercises.spec.coffee' did not match any file(s) known to git

--- test/components/task-plan/homework/choose-exercises.spec.coffee
+++ test/components/task-plan/homework/choose-exercises.spec.coffee
@@ -0,0 +1,41 @@
+{Testing, sinon, expect, _, React} = require '../../helpers/component-testing'
+_ = require 'underscore'
+moment = require 'moment-timezone'
+
+{TocActions, TocStore} = require '../../../../src/flux/toc'
+{TaskPlanActions, TaskPlanStore} = require '../../../../src/flux/task-plan'
+{ExtendBasePlan, PlanRenderHelper} = require '../../helpers/task-plan'
+{CourseActions, CourseStore} = require '../../../../src/flux/course'
+
+ECOSYSTEM_ID = '1'
+COURSE_ID    = '1'
+PLAN_ID      = '1'
+
+COURSE = require '../../../../api/user/courses/1.json'
+READINGS  = require '../../../../api/ecosystems/1/readings.json'
+NEW_PLAN = ExtendBasePlan({id: PLAN_ID})
+
+ChooseExercises = require '../../../../src/components/task-plan/homework/choose-exercises'
+
+describe 'choose exercises component', ->
+
+  beforeEach ->
+    TocActions.loaded(READINGS, ECOSYSTEM_ID)
+    TaskPlanActions.loaded(NEW_PLAN, PLAN_ID)
+    CourseActions.loaded(COURSE, COURSE_ID)
+    @props =
+      ecosystemId: ECOSYSTEM_ID
+      courseId: COURSE_ID
+      canEdit: false
+      planId: PLAN_ID
+      cancel: sinon.spy()
+      hide: sinon.spy()
+
+  it 'renders selections', ->
+    Testing.renderComponent( ChooseExercises, props: @props ).then ({dom}) ->
+      expect(dom.querySelector('[data-chapter-section="1.1"]')).to.exist
+
+  it 'hides exercises onSectionChange', ->
+    Testing.renderComponent( ChooseExercises, props: @props, unmountAfter: 10 ).then ({dom, element}) ->
+      Testing.actions.click( dom.querySelector('.section') )
+      expect(element.state.showProblems).to.be.false


Add package to argument description

Add package to argument description

--- src/unlink.coffee
+++ src/unlink.coffee
@@ -26,8 +26,8 @@
       Run `apm links` to view all the currently linked packages.
     """
     options.alias('h', 'help').describe('help', 'Print this usage message')
-    options.alias('d', 'dev').boolean('dev').describe('dev', 'Unlink from ~/.atom/dev/packages')
-    options.boolean('hard').describe('hard', 'Unlink from ~/.atom/packages and ~/.atom/dev/packages')
+    options.alias('d', 'dev').boolean('dev').describe('dev', 'Unlink package from ~/.atom/dev/packages')
+    options.boolean('hard').describe('hard', 'Unlink package from ~/.atom/packages and ~/.atom/dev/packages')
     options.alias('a', 'all').boolean('all').describe('all', 'Unlink all packages in ~/.atom/packagea and ~/.atom/dev/packages')

   showHelp: (argv) -> @parseOptions(argv).showHelp()


Update navigation jig to new MVVM paradigm.

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/JoshuaToenyes/stout-client.git/'


Example of usage for a navigation button


Adjusted stripe card params name

Adjusted stripe card params name

According to the documentation of Stripe (https://stripe.com/docs/tutorials/forms), the value for the data-stripe attribute of the month and year should be 'exp-month' | 'exp-year' and not 'exp_month' | 'exp_year' (dash instead of underline).

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/tryshoppe/shoppe-stripe.git/'


add pung

add pung

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

--- scripts/pung.coffee
+++ scripts/pung.coffee
@@ -0,0 +1,10 @@
+# Description:
+#   Utility commands surrounding Hubot uptime.
+#
+# Commands:
+#   hubot pung - Reply with pung pung
+
+module.exports = (robot) ->
+  robot.respond /PUNG$/i, (msg) ->
+    msg.send "PUNG PUNG"
+


Preload settings page

Preload settings page

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/kitchensink.git/'


Set correct name when creating expensed VMs.

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/'


RemoteApi: no need to pass group info, it will be taken from sessionToken


last commit for today. still angry..

last commit for today. still angry..

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/XenGi/kicad.js.git/'


fp_circle nearly finished

fp_circle nearly finished


Adding a new crashlytics responder script

error: pathspec 'scripts/crashlytics-notifications.coffee' did not match any file(s) known to git

--- scripts/crashlytics-notifications.coffee
+++ scripts/crashlytics-notifications.coffee
@@ -0,0 +1,46 @@
+# Notifies about Crashlytics crashes via a Crashlytics web hook
+#
+# Dependencies:
+#   "url": ""
+#   "querystring": ""
+#
+# Configuration:
+#   Just put this url <HUBOT_URL>:<PORT>/hubot/jenkins-notify?room=<room> to your Jenkins
+#   Notification config. See here: https://wiki.jenkins-ci.org/display/JENKINS/Notification+Plugin
+#
+# Commands:
+#   None
+#
+# URLS:
+#   POST /hubot/crashlytics-notify?room=<room>
+#
+# Authors:
+#   bmnick
+
+url = require('url')
+querystring = require('querystring')
+
+module.exports = (robot) ->
+
+  robot.router.post "/hubot/crashltics-notify", (req, res) ->
+
+    @failing ||= []
+    query = querystring.parse(url.parse(req.url).query)
+
+    res.end('')
+
+    envelope.room = query.room if query.room
+
+    try
+      data = req.body
+
+      if data.event == 'verification'
+        res.writeHead 204, { 'Content-Length': 0}
+        res.end()
+
+      if data.event == 'issue_impact_change'
+        robot.messageRoom '#publishmobileautomati', 'Stuffs broke!'
+
+    catch error
+      console.log "jenkins-notify error: #{error}. Data: #{req.body}"
+      console.log error.stack


Set max age to last longer then session

Set max age to last longer then session

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/tamino-martinius/colourco.de.git/'


append new webc participants to front

append new webc participants to front

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/VoiSmart/Rocket.Chat.git/'


Prefer `||=` to `= true if`

Prefer `||=` to `= true if`

--- content_scripts/link_hints.coffee
+++ content_scripts/link_hints.coffee
@@ -169,7 +169,7 @@
         jsactionRules = element.getAttribute("jsaction").split(";")
         for jsactionRule in jsactionRules
           ruleSplit = jsactionRule.split ":"
-          isClickable = true if ruleSplit[0] == "click" or (ruleSplit.length == 1 and ruleSplit[0] != "none")
+          isClickable ||= ruleSplit[0] == "click" or (ruleSplit.length == 1 and ruleSplit[0] != "none")

       # Check for tagNames which are natively clickable.
       switch tagName


Added the jokels hubot script.

Added the jokels hubot script.

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

--- src/scripts/jokels.coffee
+++ src/scripts/jokels.coffee
@@ -0,0 +1,24 @@
+# Description:
+#   Returns a random joke from jokels.com
+#
+# Dependencies:
+#   None
+#
+# Commands:
+#   hubot joke/jokel/jokels - Returns a random joke from jokels.com
+#
+# Author:
+#   sylturner
+
+module.exports = (robot) ->
+  robot.respond /(jokel|jokels|joke)/i, (msg) ->
+    msg.http('http://jokels.com/random_joke').get() (err, res, body) ->
+      joke = JSON.parse(body).joke
+      vote = joke.up_votes - joke.down_votes
+      msg.send "#{ joke.question }"
+      setTimeout ->
+        msg.send "#{ joke.answer }"
+        setTimeout ->
+          msg.send "#{ vote } upvotes - #{ joke.bitly_url }"
+        , 1000
+       , 4000


Changed MB to Mb

Changed MB to Mb

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/kenliau/Zooey.git/'


Rewrote ratio function

Rewrote ratio function


Modified in browser at pixie.strd6.com

Modified in browser at pixie.strd6.com

--- test/color2.coffee
+++ test/color2.coffee
@@ -237,5 +237,25 @@
   equal color2.b, 150
   equal color2.a, 1.0

+test "#darken", ->
+  color = Color2(45, 64, 39)
+
+  color2 = color.darken(0.1)
+
+  equal color2.r, 22
+  equal color2.g, 32
+  equal color2.b, 19
+  equal color2.a, 1.0
+
+test "#lighten", ->
+  color = Color2(22, 32, 19)
+
+  color2 = color.lighten(0.1)
+
+  equal color2.r, 45
+  equal color2.g, 64
+  equal color2.b, 39
+  equal color2.a, 1.0
+
 module()


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/'


making the console input a textarea

making the console input a textarea

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/'


periodically upload chunks of the event log

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/UCSFMemoryAndAging/tabcat.git/'


disable cache

disable cache

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/rremizov/github-notifier.git/'


[ui] Remove start date option

[ui] Remove start date option

It works poorly, so I prefer to remove it.

--- client/app/views/konnector.coffee
+++ client/app/views/konnector.coffee
@@ -316,14 +316,6 @@

         fieldHtml += """
 </select>
-
-
-#{t "select starting date"}
-
-#{t "start import from"}
-<input id="#{slug}-import-date" class="autoimport" maxlength="8" type="text">
-</input>
-

 """


Add export for stylus and css variables

Add export for stylus and css variables


Added Risk Category/Assessment datatype support

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

--- app/assets/javascripts/datatypes/riskcategoryassessment.js.coffee
+++ app/assets/javascripts/datatypes/riskcategoryassessment.js.coffee
@@ -0,0 +1,44 @@
+###
+@namespace scoping into the CQL_QDM namespace
+###
+@CQL_QDM ||= {}
+
+
+###
+Data elements that meet criteria using this datatype should document the use of
+tools and calculators (indicated by the QDM category and its corresponding
+value set) that suggest vulnerabilities for any given patient. This datatype
+should be used with the QDM Attribute result to specify criteria related to the
+actual result.
+###
+class CQL_QDM.RiskCategoryAssessment extends CQL_QDM.QDMDatatype
+  constructor: (@entry) ->
+    super @entry
+    @_negationRationale = @entry.negationRationale
+    @_result = @entry.result
+    @_startDatetime = @entry.start_time
+    @_stopDatetime = @entry.end_time
+
+  ###
+  @returns {Code}
+  ###
+  negationRationale: ->
+    cql.Code(@_negationRationale.code, @_negationRationale.code_system)
+
+  ###
+  @returns {Code}
+  ###
+  result: ->
+    cql.Code(@_result.code, @_result.code_system)
+
+  ###
+  @returns {Date}
+  ###
+  startDatetime: ->
+    cql.DateTime.fromDate(moment.utc(@_startDatetime, 'X').toDate())
+
+  ###
+  @returns {Date}
+  ###
+  stopDatetime: ->
+    cql.DateTime.fromDate(moment.utc(@_stopDatetime, 'X').toDate())


first boot

first boot

error: pathspec 'content/better-bibtex.coffee' did not match any file(s) known to git

--- content/better-bibtex.coffee
+++ content/better-bibtex.coffee
@@ -0,0 +1,5 @@
+Zotero.BBT.init = Zotero.Promise.coroutine ->
+  items = yield Zotero.Items.getAll(0) # main lib for now
+  for item in items
+    console.log(item.id)
+  return


hubot_test: add a code of hubot brain

hubot_test: add a code of hubot brain

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

--- hubot_test/scripts/brain.coffee
+++ hubot_test/scripts/brain.coffee
@@ -0,0 +1,11 @@
+module.exports = (robot) ->
+  robot.respond /members append me/i, (res) ->
+    members = robot.brain.get('brain.members') || []
+    members.push res.message.user.name
+    robot.brain.set('brain.members', members)
+    res.send 'appended!'
+
+  robot.respond /members get/i, (res) ->
+    members = robot.brain.get('brain.members')
+    console.log members
+    res.send members.join(',')


Disable annoying manual media fetch in scroll-to-cursor ... need to investigate further why this over-fires.

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/lmjohns3/thorax-media.git/'


added hugs' webserver example

added hugs' webserver example

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

--- examples/web_server.coffee
+++ examples/web_server.coffee
@@ -0,0 +1,12 @@
+# Contributed by Jason Huggins
+
+http: require 'http'
+
+server: http.createServer (req, res) ->
+  res.sendHeader 200, {'Content-Type': 'text/plain'}
+  res.sendBody 'Hello, World!'
+  res.finish()
+
+server.listen 3000
+
+puts "Server running at http://localhost:3000/"


Projects: Removed WorkspaceBundle. Included workspace bundle requirements in TeamworkBundle.


Hide the mouse after 5 seconds of inactivity.

Original code by LKLG https://github.com/Shopify/dashing/pull/312

--- src/dashing.net/Scripts/application.coffee
+++ src/dashing.net/Scripts/application.coffee
@@ -11,7 +11,19 @@
   Dashing.widget_margins ||= [5, 5]
   Dashing.widget_base_dimensions ||= [300, 360]
   Dashing.numColumns ||= 4
-
+
+  # hide mouse after 5 sec of inactivity
+  timeout = null
+  $(document).on "mousemove", ->
+    if timeout isnt null
+      $("body").css cursor: ""
+      $(".gs_w").css cursor: ""
+      clearTimeout timeout
+    timeout = setTimeout(->
+      timeout = null
+      $("body").css cursor: "none"
+      $(".gs_w").css cursor: "none"
+    , 5000)
   contentWidth = (Dashing.widget_base_dimensions[0] + Dashing.widget_margins[0] * 2) * Dashing.numColumns

   Batman.setImmediate ->


Restore production source-map webpack config

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/mingaldrichgan/gatsby.git/'


Full unit test coverage with istanbul

Full unit test coverage with istanbul

Created coverage test for rng.js

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

--- node/test/rngTest.coffee
+++ node/test/rngTest.coffee
@@ -0,0 +1,171 @@
+# rngTest.coffee
+#----------------------------------------------------------------------------
+
+should = require "should"
+ROT = require "../lib/rot"
+
+describe "rng", ->
+  it "should export ROT.RNG", ->
+    ROT.should.have.property "RNG"
+
+  it "should automatically seed the RNG", ->
+    deltaSeed = Math.abs ROT.RNG._seed - Date.now()
+    deltaSeed.should.be.lessThan 1000
+
+  describe "RNG", ->
+    describe "getSeed", ->
+      it "should return the seed", ->
+        seed = ROT.RNG.getSeed()
+        seed.should.equal ROT.RNG._seed
+
+    describe "setSeed", ->
+      it "should be able to handle less than 1", ->
+        ROT.RNG.setSeed 0.5
+        ROT.RNG._seed.should.be.a.Number
+        ROT.RNG._s0.should.be.a.Number
+        ROT.RNG._s1.should.be.a.Number
+        ROT.RNG._s2.should.be.a.Number
+        ROT.RNG._c.should.be.a.Number
+        ROT.RNG._frac.should.be.a.Number
+
+      it "should be able to handle 0", ->
+        ROT.RNG.setSeed 0
+        ROT.RNG._seed.should.be.a.Number
+        ROT.RNG._s0.should.be.a.Number
+        ROT.RNG._s1.should.be.a.Number
+        ROT.RNG._s2.should.be.a.Number
+        ROT.RNG._c.should.be.a.Number
+        ROT.RNG._frac.should.be.a.Number
+
+    describe "getUniform", ->
+      it "should modify the state of the RNG", ->
+        ROT.RNG.setSeed Date.now()
+        {_seed, _s0, _s1, _s2, _c, _frac} = ROT.RNG
+        uniform = ROT.RNG.getUniform()
+        ROT.RNG._seed.should.equal _seed
+        ROT.RNG._frac.should.equal _frac
+        ROT.RNG._s0.should.not.equal _s0
+        ROT.RNG._s1.should.not.equal _s1
+        ROT.RNG._s2.should.not.equal _s2
+        ROT.RNG._c.should.not.equal _c
+
+      it "should return a value between [0,1)", ->
+        ROT.RNG.setSeed Date.now()
+        uniform = ROT.RNG.getUniform()
+        uniform.should.be.within 0.0, 1.0
+        uniform.should.be.below 1.0
+
+    describe "getUniformInt", ->
+      it "should modify the state of the RNG", ->
+        ROT.RNG.setSeed Date.now()
+        {_seed, _s0, _s1, _s2, _c, _frac} = ROT.RNG
+        uniformInt = ROT.RNG.getUniformInt 1, 6
+        ROT.RNG._seed.should.equal _seed
+        ROT.RNG._frac.should.equal _frac
+        ROT.RNG._s0.should.not.equal _s0
+        ROT.RNG._s1.should.not.equal _s1
+        ROT.RNG._s2.should.not.equal _s2
+        ROT.RNG._c.should.not.equal _c
+
+      it "should return a value between [1,6]", ->
+        ROT.RNG.setSeed Date.now()
+        uniform = ROT.RNG.getUniformInt 1, 6
+        uniform.should.be.within 1, 6
+
+    describe "getNormal", ->
+      it "should modify the state of the RNG", ->
+        ROT.RNG.setSeed Date.now()
+        {_seed, _s0, _s1, _s2, _c, _frac} = ROT.RNG
+        normal = ROT.RNG.getNormal 250, 100
+        ROT.RNG._seed.should.equal _seed
+        ROT.RNG._frac.should.equal _frac
+        ROT.RNG._s0.should.not.equal _s0
+        ROT.RNG._s1.should.not.equal _s1
+        ROT.RNG._s2.should.not.equal _s2
+        ROT.RNG._c.should.not.equal _c
+
+      it "should work without parameters", ->
+        ROT.RNG.setSeed Date.now()
+        normal = ROT.RNG.getNormal()
+        normal.should.be.ok
+
+    describe "getPercentage", ->
+      it "should modify the state of the RNG", ->
+        ROT.RNG.setSeed Date.now()
+        {_seed, _s0, _s1, _s2, _c, _frac} = ROT.RNG
+        percentage = ROT.RNG.getPercentage()
+        ROT.RNG._seed.should.equal _seed
+        ROT.RNG._frac.should.equal _frac
+        ROT.RNG._s0.should.not.equal _s0
+        ROT.RNG._s1.should.not.equal _s1
+        ROT.RNG._s2.should.not.equal _s2
+        ROT.RNG._c.should.not.equal _c
+
+      it "should return a value between [1,100]", ->
+        ROT.RNG.setSeed Date.now()
+        percentage = ROT.RNG.getPercentage()
+        percentage.should.be.within 1, 100
+
+    describe "getWeightedValue", ->
+      it "should modify the state of the RNG", ->
+        ROT.RNG.setSeed Date.now()
+        {_seed, _s0, _s1, _s2, _c, _frac} = ROT.RNG
+        value = ROT.RNG.getWeightedValue MOCK_data =
+          red: 9
+          green: 1
+        ROT.RNG._seed.should.equal _seed
+        ROT.RNG._frac.should.equal _frac
+        ROT.RNG._s0.should.not.equal _s0
+        ROT.RNG._s1.should.not.equal _s1
+        ROT.RNG._s2.should.not.equal _s2
+        ROT.RNG._c.should.not.equal _c
+
+      it "should return one of the values provided", ->
+        ROT.RNG.setSeed Date.now()
+        value = ROT.RNG.getWeightedValue MOCK_data =
+          red: 9
+          green: 1
+        ["red", "green"].should.matchAny value
+
+      it "should return the last value if we go beyond the list", ->
+        ROT.RNG.setSeed Date.now()
+        value = ROT.RNG.getWeightedValue MOCK_data =
+          red: 0
+          green: 0
+          blue: 0
+        value.should.equal "blue"
+
+    describe "getState", ->
+      it "should return the internal state of the RNG", ->
+        ROT.RNG.setSeed Date.now()
+        {_seed, _s0, _s1, _s2, _c, _frac} = ROT.RNG
+        [s0, s1, s2, c] = ROT.RNG.getState()
+        s0.should.equal _s0
+        s1.should.equal _s1
+        s2.should.equal _s2
+        c.should.equal _c
+
+    describe "setState", ->
+      it "should set the internal state of the RNG", ->
+        ROT.RNG.setSeed Date.now()
+        [_s0, _s1, _s2, _c] = ROT.RNG.getState()
+        roll1 = ROT.RNG.getUniformInt 1, 6
+        roll2 = ROT.RNG.getUniformInt 1, 6
+        roll3 = ROT.RNG.getUniformInt 1, 6
+        ROT.RNG.setState [_s0, _s1, _s2, _c]
+        rolla = ROT.RNG.getUniformInt 1, 6
+        rollb = ROT.RNG.getUniformInt 1, 6
+        rollc = ROT.RNG.getUniformInt 1, 6
+        roll1.should.equal rolla
+        roll2.should.equal rollb
+        roll3.should.equal rollc
+
+    describe "clone", ->
+      it "should create a perfect clone of the RNG", ->
+        ROT.RNG.setSeed Date.now()
+        clone = ROT.RNG.clone()
+        for i in [0...100]
+          clone.getPercentage().should.equal ROT.RNG.getPercentage()
+
+#----------------------------------------------------------------------------
+# end of rngTest.coffee


Fixed the compare gif & mp4 download error on IE & edge. (#2325)

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/'


Guard `loadAtomSnippets` against non-existent snippet directories

--- src/packages/snippets/lib/snippets.coffee
+++ src/packages/snippets/lib/snippets.coffee
@@ -37,6 +37,7 @@

   loadAtomSnippets: (path, done) ->
     snippetsDirPath = fsUtils.join(path, 'snippets')
+    return done() unless fsUtils.isDirectory(snippetsDirPath)

     loadSnippetFile = (filename, done) =>
       return done() if filename.indexOf('.') is 0
@@ -53,6 +54,7 @@

   loadTextMateSnippets: (path, done) ->
     snippetsDirPath = fsUtils.join(path, 'Snippets')
+    return done() unless fsUtils.isDirectory(snippetsDirPath)

     loadSnippetFile = (filename, done) =>
       return done() if filename.indexOf('.') is 0
@@ -83,7 +85,6 @@
         logError(err)
         done()

-    return done() unless fsUtils.isDirectory(snippetsDirPath)
     fs.readdir snippetsDirPath, (err, paths) ->
       if err
         console.warn err


pluralize restricted access title

pluralize restricted access title

fixes CNVS-16902

The title wasn't pluralize. It now is

Test Case
Given you are testing new files
When you select ONE item
And you click the 'restricted access' button
Then a dialog should appear with a title that says "Editing permissions
for 1 item"

Given you are testing new files
When you select two items
And you click the 'restricted access' button
Then a dialog should appear with a title that says "Editing permissions
for 2 items"

Change-Id: If19e1cf8b7c7df080e889cf9a74888fd48253186
Reviewed-on: https://gerrit.instructure.com/44479
Reviewed-by: Ryan Shaw <ea3cd978650417470535f3a4725b6b5042a6ab59@instructure.com>
Product-Review: Cosme Salazar <d37f5e06cd46b8fd23ce5553334e09ede5394232@instructure.com>
QA-Review: Matt Fairbourn <5f353e1c97bb9cc046b9db20beca0b9392f6f1b2@instructure.com>
Tested-by: Jenkins <d95b56ce41a2e1ac4cecdd398defd7414407cc08@instructure.com>

--- app/coffeescripts/react_files/components/Toolbar.coffee
+++ app/coffeescripts/react_files/components/Toolbar.coffee
@@ -49,7 +49,14 @@
     # jQueryUI widget
     openRestrictedDialog: ->
       $dialog = $('<div>').dialog
-        title: I18n.t("title.permissions", "Editing permissions for %{count} items", {count: @props.selectedItems.length})
+        title: I18n.t({
+            one: "Edit permissions for: %{itemName}",
+            other: "Edit permissions for %{count} items"
+          }, {
+            count: @props.selectedItems.length
+            itemName: @props.selectedItems[0].displayName()
+          })
+
         width: 400
         close: ->
           React.unmountComponentAtNode this


mobile optimization

mobile optimization

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/Bit-Bahia/bitbahia-rails.git/'


Implement a cron scheduler to clear interval

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/'


Map k/j to up/down in archive-view

Map k/j to up/down in archive-view

error: pathspec 'keymaps/archive-view.cson' did not match any file(s) known to git

--- keymaps/archive-view.cson
+++ keymaps/archive-view.cson
@@ -0,0 +1,3 @@
+'.archive-view':
+  'k': 'core:move-up'
+  'j': 'core:move-down'


:bug:Fix courses jquery css typo

:bug:Fix courses jquery css typo

--- app/views/courses/mock1/CoursesView.coffee
+++ app/views/courses/mock1/CoursesView.coffee
@@ -39,7 +39,7 @@
     courseID = $(e.target).data('course-id')
     courseTitle = $(e.target).data('course-title')
     $('#redeemCodeModal').find('.modal-title').text(courseTitle)
-    $('#redeemCodeModal').find('.redeem-code-btn').data('course-id', courseID)
+    $('#redeemCodeModal').find('.btn-redeem-code').data('course-id', courseID)

   onClickMoreInfo: (e) ->
     courseID = $(e.target).data('course-id')


Looks like I left a wee bit of debugging code in PlayItemsModal, and it was messing things up.

--- app/views/play/modal/PlayItemsModal.coffee
+++ app/views/play/modal/PlayItemsModal.coffee
@@ -54,7 +54,6 @@

   constructor: (options) ->
     super options
-    me.set('spent', 0)
     @items = new Backbone.Collection()
     @itemCategoryCollections = {}


Tests for AccountLinkedAccountsList

Tests for AccountLinkedAccountsList

error: pathspec 'client/account/lib/test/accountlinkedaccountslist.test.coffee' did not match any file(s) known to git

--- client/account/lib/test/accountlinkedaccountslist.test.coffee
+++ client/account/lib/test/accountlinkedaccountslist.test.coffee
@@ -0,0 +1,29 @@
+kd                        = require 'kd'
+expect                    = require 'expect'
+KodingListView            = require 'app/kodinglist/kodinglistview'
+AccountLinkedAccountsList = require 'account/accountlinkedaccountslist'
+
+
+describe 'AccountLinkedAccountsList', ->
+
+  describe 'constructor', ->
+
+    it 'should be extended from KodingListView', ->
+
+      listView      = new AccountLinkedAccountsList
+      instanceCheck = listView instanceof KodingListView
+
+      expect(instanceCheck).toBeTruthy()
+
+    it 'should be a <ul> HTML element', ->
+
+      listView  = new AccountLinkedAccountsList
+
+      expect(listView.getOptions().tagName).toEqual 'ul'
+
+    it 'should use custom css class', ->
+
+      listView  = new AccountLinkedAccountsList
+      hasClass  = listView.getDomElement().hasClass 'AppModal--account-switchList'
+
+      expect(hasClass).toBeTruthy()


Moved social_popup handler to separate file

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

--- core/app/assets/javascripts/social_popup/popup_handler.coffee
+++ core/app/assets/javascripts/social_popup/popup_handler.coffee
@@ -0,0 +1,12 @@
+if window.opener
+  evt = document.createEvent('CustomEvent')
+  evt.initCustomEvent('<%= @event %>', true, true, '<%= event_details %>')
+
+  window.opener.document.dispatchEvent(evt)
+  window.close()
+else
+  origin = '<%= request.env['omniauth.origin'] %>'
+
+  if origin != ''
+    window.location = origin
+


big cleanup

big cleanup

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/showell/CoffeeCoffee.git/'


element var in properties constructor undefined

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/cloudmanlabs/ContentTools.git/'


Format

Format

--- test/daemon/app/monitor.coffee
+++ test/daemon/app/monitor.coffee
@@ -14,13 +14,9 @@
     assert.equal mon.maxRestarts, -1
     assert.equal mon.sleep, 10*1000

-
 describe 'app/monitor', ->

   describe 'create(path, port)', ->

     assertMonitor "node/package_main",
-    assertMonitor "node/katon_foo_$PORT"
-
-
-
+    assertMonitor "node/katon_foo_$PORT"


Remove debugger

Remove debugger

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/morizotter/swift-functions.git/'


Handle ENOTDIR errors on open

Handle ENOTDIR errors on open

Closes #7864

--- src/workspace.coffee
+++ src/workspace.coffee
@@ -468,7 +468,7 @@
         when 'EACCES'
           @notificationManager.addWarning("Permission denied '#{error.path}'")
           return Promise.resolve()
-        when 'EPERM', 'EBUSY', 'ENXIO', 'EIO', 'ENOTCONN', 'UNKNOWN', 'ECONNRESET', 'EINVAL', 'EMFILE'
+        when 'EPERM', 'EBUSY', 'ENXIO', 'EIO', 'ENOTCONN', 'UNKNOWN', 'ECONNRESET', 'EINVAL', 'EMFILE', 'ENOTDIR'
           @notificationManager.addWarning("Unable to open '#{error.path ? uri}'", detail: error.message)
           return Promise.resolve()
         else


[test] Tests for 'block' and 'return' added.  All tests passing.  W00t!

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

--- test/test_chapter3-cont.coffee
+++ test/test_chapter3-cont.coffee
@@ -0,0 +1,34 @@
+chai = require 'chai'
+chai.should()
+expect = chai.expect
+
+{cons} = require "cons-lists/lists"
+olisp = require '../chapter3/interpreter'
+{read, readForms} = require '../chapter1/reader'
+
+the_false_value = (cons "false", "boolean")
+
+lisp = (ast) ->
+  ret = undefined
+  olisp ast, (i) -> ret = i
+  return ret
+
+describe "Core interpreter #3: Blocks", ->
+  it "Should handle simple blocks", ->
+    expect(lisp read "(block foo 33)").to.equal(33)
+  it "Should handle the last blocks", ->
+    expect(lisp read "(block foo 1 2 3)").to.equal(3)
+  it "Should handle expressive blocks", ->
+    expect(lisp read "(block foo (+ 5 5))").to.equal(10)
+  it "Should handle basic returns blocks", ->
+    expect(lisp read "(block foo (+ 1 (return-from foo 2)))").to.equal(2)
+  it "Should handle complex returns blocks", ->
+    expect(lisp read "(block foo ((lambda (exit)(* 2 (block foo (* 3 (exit 5)) )) ) (lambda (x) (return-from foo x)) ) )").to.equal(5)
+  it "Expects an uninitialized return-from to fail", ->
+    expect(-> lisp read "(return-from foo 3)").to.throw("Unknown block label foo")
+  it "Expects to see an obsolete block when called late", ->
+    expect(-> lisp read "((block foo (lambda (x) (return-from foo x))) 3 )").to.throw("Obsolete continuation")
+  it "Expects to see an obsolete block when called late", ->
+    expect(-> lisp read "((block a  (* 2 (block b (return-from a (lambda (x) (return-from b x))))) )3 )").to.throw("Obsolete continuation")
+  it "Expects to see an obsolete block when called late", ->
+    expect(-> lisp read "((block a (* 2 (block b (return-from a (lambda (x) (return-from a x))))) ) 3 )").to.throw("Obsolete continuation")


Use same string formatting as on original NoFlo tests

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/psichi/chix.git/'


[repl] Better repl-ing.

[repl] Better repl-ing.

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/'


chore(gulp): proxy API from mipod

chore(gulp): proxy API from mipod

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/kvcrawford/reactive-mpc.git/'


Add titles describing the purpose of each chart

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/tejasbubane/exercism.io.git/'


Adds shoutout command. Auth to follow.

Adds shoutout command. Auth to follow.

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

--- scripts/dynamic.coffee
+++ scripts/dynamic.coffee
@@ -0,0 +1,21 @@
+# Commands that pull in dynamic info
+# from the Twitch API and possibly others
+#
+# Command(s):
+#   hubot shoutout    — Return the current stream schedule
+
+module.exports = (robot) ->
+    robot.respond /shoutout ([a-zA-Z0-9_]*)/i, (msg) ->
+        query = msg.match[1]
+        robot.http("https://api.twitch.tv/kraken/channels/#{query}")
+            .get() (err, res, body) ->
+                streamer = JSON.parse(body)
+
+                if streamer.status == 404
+                    msg.send "That user doesn’t appear to exist, please check your spelling!"
+                    return
+
+                shout = "Check out the awesome #{streamer.display_name} at #{streamer.url}!"
+                if streamer.game
+                    shout = "#{shout} They’ve recently been playing #{streamer.game}."
+                msg.send shout


Update example.coffee Weather report feature added.

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/askdkc/cb_slackbot.git/'


add logging feature.

add logging feature.

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

--- scripts/logging.coffee
+++ scripts/logging.coffee
@@ -0,0 +1,22 @@
+# Description:
+#  output log to all messages
+# # Dependencies:
+#   None
+#
+# Configuration:
+#   None
+#
+# Commands:
+#
+# Author:
+#   nagachika
+
+module.exports = (robot) ->
+  fluent = require("fluent-logger")
+  fluent.configure("hubot.#{process.env.HUBOT_SLACK_TEAM}", { host: "172.17.42.1", port: 24224 })
+
+  robot.hear /./, (msg) ->
+    room = msg.message.room
+    username = msg.message.user.name
+    text = msg.message.text
+    fluent.emit "chatlog", {room: room, user: username, text: text}


Modified tooltip positioning on non-overlapping annotation spans.

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/bmedx/modulestore.git/'


Cleanup.

Cleanup.

--- lib/jumpy-view.coffee
+++ lib/jumpy-view.coffee
@@ -90,8 +90,8 @@
         @allPositions = {}
         that = this
         atom.workspaceView.find '*'
-            .on 'click scroll', (e) ->
-                that.clear()
+            .on 'click scroll', (e) =>
+                @clear()
         nextKeys = _.clone keys
         atom.workspaceView.eachEditorView (editorView) ->
             return if !editorView.active


Add partner_show_event to fabricate.

Add partner_show_event to fabricate.

--- node/fabricate.coffee
+++ node/fabricate.coffee
@@ -840,6 +840,15 @@
       start_at: "2014-03-08T17:15:00+00:00"
       end_at: "2014-03-08T17:30:00+00:00"
       updated_at: "2014-02-24T16:34:25Z"
+
+    when 'show_event'
+      _id: _.uniqueId()
+      partner_show: fabricate 'show'
+      title: ""
+      start_at: "2012-02-09T18:00:00+00:00"
+      end_at: "2012-02-09T20:00:00+00:00"
+      description: ""
+      event_type: "Opening Reception"

     when 'artist_filtered_search_suggest'
       total: 79


Don't use colour styles on client side.

Don't use colour styles on client side.

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/JoshuaToenyes/stout-core.git/'


change attachment download to use node low level API instead of cradle/request

--- server/controllers/attachments.coffee
+++ server/controllers/attachments.coffee
@@ -6,7 +6,7 @@

 db = require('../helpers/db_connect_helper').db_connect()
 deleteFiles = require('../helpers/utils').deleteFiles
-
+downloader = require '../lib/downloader'

 ## Actions
@@ -81,21 +81,26 @@
 # (represented by id).
 module.exports.get = (req, res, next) ->
     name = req.params.name
+    id = req.doc.id

-    stream = db.getAttachment req.doc.id, name, (err) ->
-        if err? and err.error = "not_found"
+    # Set response header from attachment infos
+    res.setHeader 'Content-Length', req.doc._attachments[name].length
+    res.setHeader 'Content-Type', req.doc._attachments[name]['content-type']
+
+    # Perform downloading via the low level downloader to avoir too high
+    # memory consumption.
+    downloader.download id, name, (err, stream) ->
+        if err? and err.error is "not_found"
             err = new Error "not found"
             err.status = 404
             next err
         else if err
             next new Error err.error

-    if req.headers['range']?
-        stream.setHeader 'range', req.headers['range']
+        if req.headers['range']?
+            stream.setHeader 'range', req.headers['range']

-    res.on 'close', -> stream.abort()
-
-    stream.pipe res
+        stream.pipe res

 # DELETE /data/:id/attachments/:name


Cleanup

Cleanup

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/Originate/response-state.js.git/'


FindTeam: check for blocked groups while detecting solo user

--- servers/lib/server/handlers/findteam.coffee
+++ servers/lib/server/handlers/findteam.coffee
@@ -28,23 +28,29 @@
     (user, next) ->
       user.fetchOwnAccount (err, account) ->
         return next err  if err
-        next null, user, account
+        next null, account, { lastLoginDate : user.lastLoginDate }

-    (user, account, next) ->
+    (account, userInfo, next) ->
       account.fetchRelativeGroups (err, groups) ->
-        next err, user, account, groups
+        userInfo.nickname = account.profile.nickname
+        next err, account, groups, userInfo

-    (user, account, groups, next) ->
+    (account, groups, userInfo, next) ->
+      roles = [ 'blockedAccount' ]
+      account.fetchAllParticipatedGroups { roles }, (err, blockedGroups) ->
+        userInfo.hasBlockedGroups = blockedGroups.length > 0
+        next err, groups, userInfo
+
+    (groups, userInfo, next) ->
       groups = groups.filter (group) -> group.slug isnt 'koding'

+      { nickname, lastLoginDate, hasBlockedGroups } = userInfo
       if not groups.length
         return next(
-          if user.lastLoginDate < FAREWELL_SOLO_DATE
+          if lastLoginDate < FAREWELL_SOLO_DATE and not hasBlockedGroups
           then SOLO_USER_ERROR
           else EMPTY_TEAM_LIST_ERROR
         )
-
-      { profile : { nickname } } = account

       Tracker.identifyAndTrack nickname, {
         to      : email


Adds undo/redo for changing node types

Adds undo/redo for changing node types

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/sightmachine/treema.git/'


drafting bbdb initial schema

drafting bbdb initial schema

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/'


Shorten declaration?

Shorten declaration?

@ means window on top level coffee.

--- resources/assets/coffee/osu_common.coffee
+++ resources/assets/coffee/osu_common.coffee
@@ -16,7 +16,7 @@
 You should have received a copy of the GNU Affero General Public License
 along with osu!web.  If not, see <http://www.gnu.org/licenses/>.
 ###
-window.osu =
+@osu =
   parseJson: (id) ->
     JSON.parse document.getElementById(id).text


Re-add bikeways.js.coffee file, accidentally removed by bc314e8073b0c0190f289a478aedd7007b13c004

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

--- app/assets/javascripts/bikeways.js.coffee
+++ app/assets/javascripts/bikeways.js.coffee
@@ -0,0 +1,69 @@
+# This file uses the Garber-Irish method for allowing "per-page Javascript."
+# I'm using the `gistyle` gem to handle the actual implementation of the pattern.
+
+APP.init = ->
+  console.log "application"
+
+APP.bikeway_segments =
+  init: ->
+    $ ->
+      console.log "bikeway_segments (controller)"
+
+  index: ->
+    $ ->
+      console.log "enter bikeway_segments#index"
+      $('#segments').dataTable
+        sDom: 'ilrptf'  # http://www.datatables.net/ref#sDom
+        bProcessing: true
+        bServerSide: true
+        sAjaxSource: $('#segments').data('source')
+        bStateSave: true
+        bDeferRender: true
+      console.log "exit bikeway_segments#index"
+
+  show: ->
+    $ ->
+      console.log "enter bikeway_segments#show"
+      kmlUrl = $('#map').data('kml-url')
+      handler = Gmaps.build('Google')
+      opts =
+        # see https://developers.google.com/maps/documentation/javascript/reference?hl=fr#MapOptions
+        provider: {
+          scrollwheel: false,
+          zoom: 16
+        }
+        internal: { id: 'map' }
+      handler.buildMap(opts, ->
+        kmls = handler.addKml(
+          { url: kmlUrl }
+        )
+        # handler.bounds.extendWith(markers)
+        # handler.fitMapToBounds()
+      )
+      console.log "exit bikeway_segments#show"
+
+APP.bikeways =
+  init: ->
+    $ ->
+      console.log "bikeways (controller)"
+
+  show: ->
+    $ ->
+      console.log "enter bikeways#show"
+      kmlUrl = $('#map').data('kml-url')
+      handler = Gmaps.build('Google')
+      opts =
+        # see https://developers.google.com/maps/documentation/javascript/reference?hl=fr#MapOptions
+        provider: {
+          scrollwheel: false,
+          zoom: 16
+        }
+        internal: { id: 'map' }
+      handler.buildMap(opts, ->
+        kmls = handler.addKml(
+          { url: kmlUrl }
+        )
+        # handler.bounds.extendWith(markers)
+        # handler.fitMapToBounds()
+      )
+      console.log "exit bikeways#show"


Added Timeline.js file which allows for hover delete/edit for letters

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

--- app/assets/javascripts/timeline.js.coffee
+++ app/assets/javascripts/timeline.js.coffee
@@ -0,0 +1,10 @@
+$(document).ready ->
+  $(document).on("mouseenter", ".letter", ->
+    $(this).find(":button").show()
+    return
+  ).on "mouseleave", ".letter", ->
+    $(this).find(":button").hide()
+    return
+
+  return
+


Don't talk shit about yogurt!

Don't talk shit about yogurt!

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/jencka/2001-A-SPACE-SACRIFICE.git/'


Added a module for quickly overriding the default controller behavior of requiring the two transition events activate and deactivate. This is useful for prototyping.

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

--- null_transitions.coffee
+++ null_transitions.coffee
@@ -0,0 +1,9 @@
+Spine ?= require('spine')
+
+NullTransitions =
+
+	doActivate: ->
+		@onActivated()
+
+	doDeactivate: ->
+		@onDeactivated()


test: reconnect

test: reconnect

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

--- test/test-reconnect.coffee
+++ test/test-reconnect.coffee
@@ -0,0 +1,22 @@
+assert  = require 'assert'
+Gearman = require('../index').Gearman
+net = require 'net'
+
+describe 'gearman connection', ->
+  it 'auto-reconnects', (done) ->
+    # mock gearman server
+    port = Math.round(1025 + Math.random() * 40000)
+    times = 0
+    server = net.createServer (stream) ->
+      times += 1
+      console.log 'server connected', times
+      if times is 2
+        gearman.disconnect()
+        server.close()
+        setTimeout done, 1000 # make sure a reconnect doesn't happen
+      if times > 2
+        assert false, "Reconnected more than expected"
+      stream.destroy() # gtfo client
+    server.listen port
+    gearman = new Gearman 'localhost', port, true
+    gearman.connect()


Invoke callback even when command fails

Invoke callback even when command fails

--- lib/load-paths-task.coffee
+++ lib/load-paths-task.coffee
@@ -1,6 +1,5 @@
 _ = require 'underscore'
 BufferedProcess = require 'buffered-process'
-$ = require 'jquery'

 module.exports =
 class LoadPathsTask
@@ -19,18 +18,12 @@
     args.unshift('--follow')

     paths = []
-    deferred = $.Deferred()
-    exit = (code) =>
-      if code is -1
-        deferred.reject({command, code})
-      else
-        @callback(paths)
-        deferred.resolve()
+    exit = =>
+      @callback(paths)
     stdout = (data) ->
       paths.push(_.compact(data.split('\n'))...)

     @process = new BufferedProcess({command, args, stdout, exit})
-    deferred

   abort: ->
     if @process?


Improving readability.

Improving readability.

Per @skalnik suggestions.

--- scripts/dice.coffee
+++ scripts/dice.coffee
@@ -25,8 +25,10 @@
 module.exports = (robot) ->
   robot.respond /roll (die|one)/i, (msg) ->
     msg.reply report [rollOne(6)]
+
   robot.respond /roll dice/i, (msg) ->
     msg.reply report roll 2, 6
+
   robot.respond /roll (\d+)d(\d+)([\+-]\d+)?/i, (msg) ->
     dice = parseInt msg.match[1]
     sides = parseInt msg.match[2]
@@ -38,6 +40,7 @@
     else
       report modifier, roll dice, sides
     msg.reply answer
+
   robot.respond /roll (\d+)dF([\+-]\d+)?/i, (msg) ->
     dice = parseInt msg.match[1]
     modifier = parseInt msg.match[2]


Add imdb script

Add imdb script

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

--- scripts/imdb.coffee
+++ scripts/imdb.coffee
@@ -0,0 +1,34 @@
+#
+# Description:
+#   Get the movie poster and synposis for a given query
+#
+# Dependencies:
+#   None
+#
+# Configuration:
+#   None
+#
+# Commands:
+#   hubot imdb the matrix
+#
+# Author:
+#   orderedlist
+
+module.exports = (robot) ->
+  robot.respond /(imdb|movie)( me)? (.*)/i, (msg) ->
+    query = msg.match[3]
+    msg.http("http://omdbapi.com/")
+      .query({
+        t: query
+      })
+      .get() (err, res, body) ->
+        movie = JSON.parse(body)
+        if movie
+          text = "#{movie.Title} (#{movie.Year})\n"
+          text += "IMDB: #{movie.imdbRating} MS: #{movie.Metascore}\n"
+          text += "#{movie.Poster}\n" if movie.Poster
+          text += "#{movie.Plot}"
+
+          msg.send text
+        else
+          msg.send "That's not a movie, yo."


docs fixed typo in navbar api

docs fixed typo in navbar api

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/'


Push new paths onto existing array

Push new paths onto existing array

--- lib/load-paths-task.coffee
+++ lib/load-paths-task.coffee
@@ -26,7 +26,7 @@
         @callback(paths)
         deferred.resolve()
     stdout = (data) ->
-      paths = paths.concat(_.compact(data.split('\n')))
+      paths.push.apply(paths, _.compact(data.split('\n')))

     @process = new BufferedProcess({command, args, stdout, exit})
     deferred


chore (Notifications) Reorder test cases based on properties affected


Adding lib overrides for the project

Adding lib overrides for the project

error: pathspec 'library.config.json.coffee' did not match any file(s) known to git

--- library.config.json.coffee
+++ library.config.json.coffee
@@ -0,0 +1,5 @@
+{
+  output: {
+    dist: 'lib'
+  }
+}


Update kite calls to provide multiple remotehost from same domain support

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/'


Add default editor.softWrapHangingIndentationSpaces

--- src/config-schema.coffee
+++ src/config-schema.coffee
@@ -149,6 +149,9 @@
       softWrapAtPreferredLineLength:
         type: 'boolean'
         default: false
+      softWrapHangingIndentationSpaces:
+        type: 'integer'
+        default: 0
       scrollSensitivity:
         type: 'integer'
         default: 40


rearrange test cases and make them slightly less leaky


restrict plugins in angular froala

restrict plugins in angular froala

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/UM-USElab/gradecraft-development.git/'


Fixed #811, a bug where you could pause the world if you clicked on a letterboxed playback scrubber.

--- app/views/play/level/LevelPlaybackView.coffee
+++ app/views/play/level/LevelPlaybackView.coffee
@@ -37,7 +37,7 @@
     'click #zoom-out-button': -> Backbone.Mediator.publish('camera-zoom-out') unless @shouldIgnore()
     'click #volume-button': 'onToggleVolume'
     'click #play-button': 'onTogglePlay'
-    'click': -> Backbone.Mediator.publish 'tome:focus-editor'
+    'click': -> Backbone.Mediator.publish 'tome:focus-editor' unless @realTime
     'mouseenter #timeProgress': 'onProgressEnter'
     'mouseleave #timeProgress': 'onProgressLeave'
     'mousemove #timeProgress': 'onProgressHover'
@@ -316,15 +316,18 @@
       max: @sliderIncrements
       animate: 'slow'
       slide: (event, ui) =>
+        return if @shouldIgnore()
         @scrubTo ui.value / @sliderIncrements
         @slideCount += 1

       start: (event, ui) =>
+        return if @shouldIgnore()
         @slideCount = 0
         @wasPlaying = @playing
         Backbone.Mediator.publish 'level-set-playing', {playing: false}

       stop: (event, ui) =>
+        return if @shouldIgnore()
         @actualProgress = ui.value / @sliderIncrements
         Backbone.Mediator.publish 'playback:manually-scrubbed', ratio: @actualProgress
         Backbone.Mediator.publish 'level-set-playing', {playing: @wasPlaying}


Fix linting errors

Fix linting errors

--- src/lines-tile-component.coffee
+++ src/lines-tile-component.coffee
@@ -399,5 +399,3 @@

   clearMeasurements: ->
     @measuredLines.clear()
-
-  lineNodeForLineId: (id) -> @lineNodesByLineId[id]


Templates: Marathon use single quotes with in YAML version

--- client/app/lib/providers/templates/marathon.coffee
+++ client/app/lib/providers/templates/marathon.coffee
@@ -39,9 +39,9 @@

 provider:
   marathon:
-    url: "${var.marathon_url}"
-    basic_auth_user: "${var.marathon_basic_auth_user}"
-    basic_auth_password: "${var.marathon_basic_auth_password}"
+    url: '${var.marathon_url}'
+    basic_auth_user: '${var.marathon_basic_auth_user}'
+    basic_auth_password: '${var.marathon_basic_auth_password}'

 resource:
   marathon_app:


Added more names for #53

Added more names for #53

--- app/lib/world/names.coffee
+++ app/lib/world/names.coffee
@@ -64,6 +64,7 @@
     "Lukaz"
     "Gorgin"
     "Coco"
+    "Allankrita"
   ]
   "Peasant": [
     "Yorik"
@@ -92,6 +93,7 @@
   "Peasant F": [
     "Hilda"
     "Icey"
+    "Mertia"
   ]
   "Archer F": [
     "Phoebe"
@@ -191,6 +193,7 @@
     "Tarlok"
     "Gurulax"
     "Mokrul"
+    "Muthyala"
   ]
   "Ogre F": [
     "Nareng"
@@ -260,6 +263,7 @@
     "Gom"
     "Gogg"
     "Ghuk"
+    "Makas"
   ]
   "Ogre Thrower": [
     "Kyrgg"
@@ -276,6 +280,7 @@
     "Makas"
     "Rakash"
     "Drumbaa"
+    "Pinakin"
   ]
   "Burl": [
     "Borlit"
@@ -283,18 +288,21 @@
   ]
   "Griffin Rider": [
     "Aeoldan"
+    "Bestarius"
   ]
   "Potion Master": [
     "Snake"
     "Amaranth"
     "Zander"
     "Arora"
+    "Clause"
   ]
   "Librarian": [
     "Hushbaum"
     "Matilda"
     "Agnes"
     "Agathe"
+    "Satish"
   ]
   "Equestrian": [
     "Reynaldo"


Add a settings config file

Add a settings config file

error: pathspec 'settings/language-apl.cson' did not match any file(s) known to git

--- settings/language-apl.cson
+++ settings/language-apl.cson
@@ -0,0 +1,3 @@
+".source.apl":
+	editor:
+		commentStart: "⍝ "


Added debugging code in attempt to fix bug caused by touch event firing at wrong time

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/UCSFMemoryAndAging/tabcat.git/'


optimized retun value

optimized retun value

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/monolithed/Brainfuck.git/'


Adds developer excuses plugin

Adds developer excuses plugin

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

--- src/scripts/excuse.coffee
+++ src/scripts/excuse.coffee
@@ -0,0 +1,30 @@
+# Description:
+#   Get a random developer excuse
+#
+# Commands:
+#   hubot excuse me - Get a random developer excuse
+
+# Description:
+#   Get a random developer excuse
+#
+# Dependencies:
+#   None
+#
+# Configuration:
+#   None
+#
+# Commands:
+#   hubot excuse me - Get a random developer excuse
+#   hubot excuse - Get a random developer excuse
+#
+# Author:
+#   ianmurrays
+
+module.exports = (robot) ->
+  robot.respond /excuse(?: me)?/i, (msg) ->
+    robot.http("http://developerexcuses.com")
+      .get() (err, res, body) ->
+        matches = body.match /<a [^>]+>(.+)<\/a>/i
+
+        if matches and matches[1]
+          msg.send matches[1]


Show the status of resque queues

Show the status of resque queues

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

--- src/scripts/resque.coffee
+++ src/scripts/resque.coffee
@@ -0,0 +1,29 @@
+# Shows the status of resque queues
+#
+# resque - Lists the queues with pending jobs
+
+module.exports = (robot) ->
+  url = process.env.RESQUE_WEB_URL || 'http://localhost:5678'
+  robot.respond /resque/i, (msg) ->
+    msg.http(url + '/stats.txt')
+      .get() (err, res, body) ->
+        msg.send format_stats parse_stats body
+
+parse_stats = (stats) ->
+  details = {}
+  handle_line = (line) ->
+    [key,val] = line.split '='
+    [group,name] = key.split '.'
+    (details[group]||={})[name.replace('+','')] = val
+  handle_line response for response in stats.split '\n'
+  details
+
+
+format_stats = (stats) ->
+  heading = "#{stats['resque']['pending']} pending jobs. #{stats['resque']['working']} of #{stats['resque']['workers']} workers active."
+  queues = ([count,name] for name,count of stats['queues'] when count isnt '0').sort (a,b) -> b[0] - a[0]
+  justify = (str, size) ->
+    Array(size - str.length + 1).join(' ') + str
+  width = Math.max.apply null, (q[1].length for q in queues)
+  queue_list = ("#{justify(q[1], width + 1)} : #{q[0]}" for q in queues).join '\n'
+  return heading + '\n' + queue_list


Load project settings when opening a project with project manager toggle

--- lib/project-manager.coffee
+++ lib/project-manager.coffee
@@ -82,16 +82,17 @@
     @fileWatcher = fs.watch @file(), (event, filename) =>
       @loadCurrentProject()

-  loadCurrentProject: ->
+  loadCurrentProject: (project, done) ->
     CSON = require 'season'
     _ = require 'underscore-plus'
     CSON.readFile @file(), (error, data) =>
       unless error
-        project = @getCurrentProject(data)
+        project = @getCurrentProject(data) if not project?
         if project
           if project.template? and data[project.template]?
             project = _.deepExtend(project, data[project.template])
           @enableSettings(project.settings) if project.settings?
+      done?()

   getCurrentProject: (projects) ->
     for title, project of projects
@@ -129,15 +130,15 @@
     projects[project.title] = project
     CSON.writeFileSync(@file(), projects)

-  openProject: ({title, paths, devMode}) ->
-    atom.open options =
-      pathsToOpen: paths
-      devMode: devMode
-
-    if atom.config.get('project-manager.closeCurrent')
-      setTimeout ->
-        atom.close()
-      , 200
+  openProject: (project) ->
+    @loadCurrentProject project, ->
+      atom.open options =
+        pathsToOpen: project.paths
+        devMode: project.devMode
+      if atom.config.get('project-manager.closeCurrent')
+        setTimeout ->
+          atom.close()
+        , 200

   createProjectManagerView: (state) ->
     unless @projectManagerView?


Added tests for AWS.JsonResponseParser.

Added tests for AWS.JsonResponseParser.

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

--- test/unit/json_response_parser.spec.coffee
+++ test/unit/json_response_parser.spec.coffee
@@ -0,0 +1,30 @@
+AWS = require('../../lib/core')
+
+describe 'AWS.JsonResponseParser', ->
+
+  resp = (options) ->
+    r = new AWS.HttpResponse()
+    r.statusCode = options.statusCode
+    if (options.headers)
+      r.headers = options.headers
+    else
+      r.headers = {}
+    if (options.body)
+      r.body = options.body
+    return r
+
+  parse = (r) ->
+    parser = new AWS.JsonResponseParser
+    return parser.parse(r)
+
+  describe 'parse', ->
+
+    it 'returns an empty object when the body is null', ->
+      expect(parse(resp({ body: null }))).toEqual({})
+
+    it 'returns an empty object when the body is an empty string', ->
+      expect(parse(resp({ body: '' }))).toEqual({})
+
+    it 'returns the parsed version of the JSON body', ->
+      expect(parse(resp({ body: '{"a":123}' }))).toEqual({a:123})
+


Nodejs: metrics: remove metrics logic from handleRequest method


Troubleshoot: new kites are registered for troubleshooting


Fix typo in keybindings

Fix typo in keybindings

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/aki77/atomatigit.git/'


app: add Link component

app: add Link component


Fix for chrome

Fix for chrome

--- client/finder/commonviews/DNDUploader.coffee
+++ client/finder/commonviews/DNDUploader.coffee
@@ -57,7 +57,7 @@
       You can archive your files and try again.
       """

-    if items?.first.webkitGetAsEntry?
+    if items?[0].webkitGetAsEntry?

       for item in items
         entry = item.webkitGetAsEntry()


relax constraints on optional transaction handlers


Mark NotificationManager public and add docs

--- src/notification-manager.coffee
+++ src/notification-manager.coffee
@@ -1,8 +1,8 @@
 {Emitter, Disposable} = require 'event-kit'
 Notification = require '../src/notification'

-# Experimental: Allows messaging the user. This will likely change, dont use
-# quite yet!
+# Public: A notification manager used to create {Notification}s to be shown
+# to the user.
 module.exports =
 class NotificationManager
   constructor: ->
@@ -13,6 +13,12 @@
   Section: Events
   ###

+  # Public: Invoke the given callback after a notification has been added.
+  #
+  # * `callback` {Function} to be called after the notification is added.
+  #   * `notification` The {Notification} that was added.
+  #
+  # Returns a {Disposable} on which `.dispose()` can be called to unsubscribe.
   onDidAddNotification: (callback) ->
     @emitter.on 'did-add-notification', callback

@@ -20,18 +26,43 @@
   Section: Adding Notifications
   ###

+  # Public: Add a success notification.
+  #
+  # * `message` A {String} message
+  # * `options` An options {Object} with optional keys such as:
+  #    * `detail` A {String} with additional details about the notification
   addSuccess: (message, options) ->
     @addNotification(new Notification('success', message, options))

+  # Public: Add an informational notification.
+  #
+  # * `message` A {String} message
+  # * `options` An options {Object} with optional keys such as:
+  #    * `detail` A {String} with additional details about the notification
   addInfo: (message, options) ->
     @addNotification(new Notification('info', message, options))

+  # Public: Add a warning notification.
+  #
+  # * `message` A {String} message
+  # * `options` An options {Object} with optional keys such as:
+  #    * `detail` A {String} with additional details about the notification
   addWarning: (message, options) ->
     @addNotification(new Notification('warning', message, options))

+  # Public: Add an error notification.
+  #
+  # * `message` A {String} message
+  # * `options` An options {Object} with optional keys such as:
+  #    * `detail` A {String} with additional details about the notification
   addError: (message, options) ->
     @addNotification(new Notification('error', message, options))

+  # Public: Add a fatal error notification.
+  #
+  # * `message` A {String} message
+  # * `options` An options {Object} with optional keys such as:
+  #    * `detail` A {String} with additional details about the notification
   addFatalError: (message, options) ->
     @addNotification(new Notification('fatal', message, options))


Remove unnecessary fat arrows

Remove unnecessary fat arrows

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/fuzzy-ai/microservice-client.git/'


:lipstick: Use theme as variable name instead of t

--- src/theme-manager.coffee
+++ src/theme-manager.coffee
@@ -23,7 +23,7 @@

   # Internal-only:
   getAvailableNames: ->
-    _.map(@loadedThemes, (t) -> t.metadata.name)
+    _.map @loadedThemes, (theme) -> theme.metadata.name

   # Internal-only:
   getActiveThemes: ->
@@ -63,7 +63,7 @@

   # Private:
   getLoadedTheme: (name) ->
-    _.find(@loadedThemes, (t) -> t.metadata.name == name)
+    _.find @loadedThemes, (theme) -> theme.metadata.name is name

   # Private:
   resolveThemePath: (name) ->


help for hi

help for hi

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/'


Update de-DE.coffee

Update de-DE.coffee

Fixed broken indent

--- app/locale/de-DE.coffee
+++ app/locale/de-DE.coffee
@@ -294,7 +294,6 @@
     teacher_list_create_class: "Auf der nächsten Seite kannst du eine neue Klasse erstellen."
     teacher_list_add_students: "Füge Schüler zur Klassen hinzu, indem du auf Klasse anzeigen klickst und ihnen den Klassencode oder die URL schickst. Du kannst auch Schüler via E-Mail einladen, wenn Sie E-Mail-Adressen haben."
     teacher_list_resource_hub_1: "Beachte auch"
-                                 "Check out the"
     teacher_list_resource_hub_2: "Kursanleitungen"
     teacher_list_resource_hub_3: "mit Lösungen für alle Level und den"
     teacher_list_resource_hub_4: "Resource Hub"


use fetchMyPermissionsAndRoles instead of fetching all members and roles


app-wrapper: starting to try out an idea

error: pathspec 'src/smc-webapp/app-wrapper.cjsx' did not match any file(s) known to git

--- src/smc-webapp/app-wrapper.cjsx
+++ src/smc-webapp/app-wrapper.cjsx
@@ -0,0 +1,43 @@
+###
+This is code to support taking a non-react app (e.g., one that uses
+jQuery extensively) and making it into a react component.
+
+Why? The point is that we can then quickly reactify all apps,
+so that we can finish reactifying everything else... at which point
+we can then go back and carefully really rewrite the app.
+
+This will also help clarify the external API for app components.
+
+Finally, writing this will mean that we can more easily integrate
+external code (e.g., jupyter notebooks) that don't (and may never)
+use react into SMC.
+###
+
+
+{React, ReactDOM, rclass, rtypes, Redux, Actions, Store}  = require('./smc-react')
+{Button, Panel, Row, Col} = require('react-bootstrap')
+{Icon, Space} = require('./r_misc')
+misc = require('smc-util/misc')
+{defaults, required} = misc
+
+App = rclass
+    render : ->
+

+
Wrapper for an app

+

+
+render = (redux, project_id, path) ->
+    <App />
+
+exports.free = (project_id, path, dom_node, redux) ->
+    ReactDOM.unmountComponentAtNode(dom_node)
+
+exports.render = (project_id, path, dom_node, redux) ->
+    init_redux(redux, project_id, path)
+    ReactDOM.render(render(redux, project_id, path), dom_node)
+
+exports.hide = (project_id, path, dom_node, redux) ->
+    ReactDOM.unmountComponentAtNode(dom_node)
+
+exports.show = (project_id, path, dom_node, redux) ->
+    ReactDOM.render(render(redux, project_id, path), dom_node)


Change: command 'dev' now softlink 'font', 'img', '_locales'

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/davask/Popup-my-Bookmarks.git/'


Remove typo

Remove typo

--- notification-plugin.coffee
+++ notification-plugin.coffee
@@ -33,7 +33,7 @@
   # Fired when a new event is triggered for notification
   # Plugins MUST override this method
   NotificationPlugin.receiveEvent = (config, event, callback) ->
-    throw new Error("Plugins must override receiveEvent")return
+    throw new Error("Plugins must override receiveEvent")

   # Utility methods for generating notification content


Add #old member to "put" event data.

Add #old member to "put" event data.

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/JoshuaToenyes/stout-core.git/'


Add name property.

Add name property.


Inline sendActionToFirstResponder

Inline sendActionToFirstResponder

--- src/window-event-handler.coffee
+++ src/window-event-handler.coffee
@@ -79,14 +79,11 @@
   # for elements with the `.native-key-bindings` class.
   handleNativeKeybindings: ->
     menu = null
-    sendActionToFirstResponder = (element, action) ->
-      if element.webkitMatchesSelector('.native-key-bindings')
-        menu ?= require('remote').require('menu')
-        menu.sendActionToFirstResponder(action)
-
     bindCommandToAction = (command, action) =>
       @subscribe $(document), command, (event) ->
-        sendActionToFirstResponder(event.target, action)
+        if element.webkitMatchesSelector('.native-key-bindings')
+          menu ?= require('remote').require('menu')
+          menu.sendActionToFirstResponder(action)

     bindCommandToAction('core:copy', 'copy:')
     bindCommandToAction('core:paste', 'paste:')