Groups: ownerships are defined while listing not found followers/following/likes

--- client/Social/Members/AppController.coffee
+++ client/Social/Members/AppController.coffee
@@ -40,6 +40,17 @@
   addActivityView:(view, account)->
     view.$('div.lazy').remove()
     windowController = KD.getSingleton('windowController')
+
+    if KD.whoami().getId() is account.getId()
+      owner   = "you"
+      auxVerb =
+        have : "have"
+        be   : "are"
+    else
+      owner = KD.utils.getFullnameFromAccount account
+      auxVerb =
+        have : "has"
+        be   : "is"

     KD.getSingleton("appManager").tell 'Feeder', 'createContentFeedController', {
       itemClass             : ActivityListItemView
@@ -51,15 +62,16 @@
       creator               : account
       filter                :
         statuses            :
-          noItemFoundText   : "#{KD.utils.getFullnameFromAccount account} has not shared any posts yet."
+          noItemFoundText   : "#{owner} #{auxVerb.have} not shared any posts yet."
           dataSource        : (selector, options = {}, callback)=>
-            options.originId = account.getId()
-            KD.getSingleton("appManager").tell 'Activity', 'fetchActivitiesProfilePage', options, callback
+            KD.getSingleton('groupsController').ready ->
+              options.originId = account.getId()
+              KD.getSingleton("appManager").tell 'Activity', 'fetchActivitiesProfilePage', options, callback
         followers           :
           loggedInOnly      : yes
           itemClass          : GroupMembersPageListItemView
           listControllerClass: MembersListViewController
-          noItemFoundText   : "No one is following #{KD.utils.getFullnameFromAccount account} yet."
+          noItemFoundText   : "No one is following #{owner} yet."
           dataSource        : (selector, options, callback)=>
             options.groupId or= KD.getSingleton('groupsController').getCurrentGroup().getId()
             account.fetchFollowersWithRelationship selector, options, callback
@@ -70,7 +82,7 @@
           loggedInOnly      : yes
           itemClass          : GroupMembersPageListItemView
           listControllerClass: MembersListViewController
-          noItemFoundText   : "#{KD.utils.getFullnameFromAccount account} is not following anyone."
+          noItemFoundText   : "#{owner} #{auxVerb.be} not following anyone."
           dataSource        : (selector, options, callback)=>
             options.groupId or= KD.getSingleton('groupsController').getCurrentGroup().getId()
             account.fetchFollowingWithRelationship selector, options, callback
@@ -79,7 +91,7 @@
               @setCurrentViewNumber 'following', count
         likes               :
           loggedInOnly      : yes
-          noItemFoundText   : "#{KD.utils.getFullnameFromAccount account} has not liked any posts yet."
+          noItemFoundText   : "#{owner} #{auxVerb.have} not liked any posts yet."
           dataSource        : (selector, options, callback)->
             selector = {sourceName: $in: ['JNewStatusUpdate']}
             account.fetchLikedContents options, selector, callback


form workflow: code simplification

form workflow: code simplification

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


shameless plug!

shameless plug!

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


Sanitized types to be case insensitive.

Sanitized types to be case insensitive.

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/urbanetic/meteor-atlas-util.git/'


profile: wip unified sidebar

profile: wip unified sidebar

--- client/app/MainApp/lazy/staticprofileaboutview.coffee
+++ client/app/MainApp/lazy/staticprofileaboutview.coffee
@@ -78,6 +78,105 @@
   constructor:(options,data)->
     super options,data

+    @controllers = {}
+    @wrappers = {}
+    @profileUser = @getData()
+
+    topicsController = new ActivityListController
+      delegate          : @
+      lazyLoadThreshold : .99
+      itemClass         : StaticTopicsListItem
+      viewOptions       :
+        cssClass        : 'static-content topic'
+      showHeader        : no
+
+    @topicsListWrapper = topicsController.getView()
+
+    topicsController.hideLazyLoader()
+
+    @profileUser.fetchFollowedTopics {},{},(err,topics)=>
+      if topics
+        @refreshActivities err, topics, 'topic'
+      else
+        topicsController.hideLazyLoader()
+        log 'No topics'
+
+    @controllers['topic'] = topicsController
+    @wrappers['topic']    = @topicsListWrapper
+
+    groupsController = new ActivityListController
+      delegate          : @
+      lazyLoadThreshold : .99
+      itemClass         : StaticGroupsListItem
+      viewOptions       :
+        cssClass        : 'static-content group'
+      showHeader        : no
+
+    @groupsListWrapper = groupsController.getView()
+
+    @profileUser.fetchGroups (err,groups)=>
+      if groups
+        groupList = (item.group for item in groups)
+        @refreshActivities err, groupList, 'group'
+      else
+        groupsController.hideLazyLoader()
+        log 'No groups'
+
+    @controllers['group'] = groupsController
+    @wrappers['group']    = @groupsListWrapper
+
+    appsController = new ActivityListController
+      delegate          : @
+      lazyLoadThreshold : .99
+      itemClass         : StaticAppsListItem
+      viewOptions       :
+        cssClass        : 'static-content app'
+      showHeader        : no
+
+    @appsListWrapper = appsController.getView()
+
+    KD.remote.api.JApp.some {originId : @profileUser.getId()},{},(err,apps)=>
+      if apps?.length
+        @refreshActivities err, apps, 'app'
+      else
+        appsController.hideLazyLoader()
+        log 'No apps'
+
+    @controllers['app'] = appsController
+    @wrappers['app']    = @appsListWrapper
+
+    membersController = new ActivityListController
+      delegate          : @
+      lazyLoadThreshold : .99
+      itemClass         : StaticMembersListItem
+      viewOptions       :
+        cssClass        : 'static-content member'
+      showHeader        : no
+
+    @membersListWrapper = membersController.getView()
+
+    @profileUser.fetchFollowingWithRelationship {},{},(err, members)=>
+      if members
+        @refreshActivities err, members, 'member'
+      else
+        membersController.hideLazyLoader()
+        log 'No members'
+
+    @controllers['member'] = membersController
+    @wrappers['member']    = @membersListWrapper
+
+
+  refreshActivities:(err,activities,type)->
+    controller = @controllers[type]
+
+    @wrappers[type].show()
+
+    controller.removeAllItems()
+    controller.listActivities activities
+
+    controller.hideLazyLoader()
+
+
   viewAppended:->
     super
     @setTemplate @pistachio()
@@ -85,6 +184,10 @@

   pistachio:->
     """
+    {{> @topicsListWrapper}}
+    {{> @groupsListWrapper}}
+    {{> @appsListWrapper}}
+    {{> @membersListWrapper}}
     I AM SIDEBAR
     """


Create logged middleware for express

Create logged middleware for express

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/dreimert/annuaire-anciens-eleves.git/'


basic keyboard shortcuts

basic keyboard shortcuts

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

--- app/views/clients.coffee
+++ app/views/clients.coffee
@@ -0,0 +1,15 @@
+ClientsView = Ember.View.extend
+
+  didInsertElement: ->
+    $('body').bind 'keydown', @handleKeyPress.bind(@)
+
+  handleKeyPress: (e) ->
+    if e.ctrlKey
+      if e.keyCode == 78
+        if e.shiftKey
+          @get('controller').transitionToRoute('clients.new')
+      else if e.keyCode >= 49 and e.keyCode <= 57
+        client = @get('controller.model').objectAt e.keyCode - 49
+        if client? then @get('controller').transitionToRoute 'client', client
+
+`export default ClientsView`


prevent right click on large image on artwork page

--- apps/artwork/client/view.coffee
+++ apps/artwork/client/view.coffee
@@ -86,6 +86,12 @@
     @artwork.on "change:ecommerce", @renderDetail, @
     @artwork.fetch()

+    @preventRightClick()
+
+  preventRightClick: ->
+    (@$artworkImage ?= @$('#the-artwork-image')).on 'contextmenu', (event) ->
+      event.preventDefault()
+
   checkQueryStringForAuction: ->
     { auction_id } = qs.parse(parse(window.location.search).query)
     @renderAuctionPlaceholder auction_id if auction_id


Wrap favorites button so it doesn't flex

--- app/components/subject-viewer.cjsx
+++ app/components/subject-viewer.cjsx
@@ -80,7 +80,7 @@
             <button type="button" className="metadata-toggle" onClick={@showMetadata}></button>}

         {if @props.subject
-          <FavoritesButton subject={@props.subject} />}
+          <FavoritesButton subject={@props.subject} />}


Clean up metadata style

Clean up metadata style

--- app/components/subject-viewer.cjsx
+++ app/components/subject-viewer.cjsx
@@ -129,8 +129,9 @@
   showMetadata: ->
     # TODO: Sticky popup.
     alert

-      Subject metadata

-

+      Subject metadata
+

+

         {for key, value of @props.subject?.metadata when key.charAt(0) isnt '_'

             {key}


Make file icons appear in tree view

Make file icons appear in tree view

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


Add DoWhileStatement and LabeledStatement cases

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/rhumlover/dm-gettext.git/'


:bug: Updating code to relfect new API changes.

--- lib/tree-view.coffee
+++ lib/tree-view.coffee
@@ -366,7 +366,7 @@
     if pane and selectedEntry instanceof FileView
       if atom.workspace.getActivePaneItem()
         split = pane.split orientation, side
-        atom.workspace.openUriInPane selectedEntry.getPath(), split
+        atom.workspace.openURIInPane selectedEntry.getPath(), split
       else
         @openSelectedEntry yes

@@ -386,7 +386,7 @@
     selectedEntry = @selectedEntry()
     pane = atom.workspace.getPanes()[index]
     if pane and selectedEntry instanceof FileView
-      atom.workspace.openUriInPane selectedEntry.getPath(), pane
+      atom.workspace.openURIInPane selectedEntry.getPath(), pane

   moveSelectedEntry: ->
     if @hasFocus()


further duplicated code removed

further duplicated code removed

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


Set min-height instead :D

Set min-height instead :D

--- resources/assets/coffee/adjust-paddings.coffee
+++ resources/assets/coffee/adjust-paddings.coffee
@@ -37,4 +37,4 @@
       height = heights[padding.getAttribute('data-padding-id')]

       if height != undefined
-        padding.style.paddingBottom = "#{height}px"
+        padding.style.minHeight = "#{height}px"


Convert render_multi_url.js to CoffeeScript

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

--- examples/render_multi_url.coffee
+++ examples/render_multi_url.coffee
@@ -0,0 +1,48 @@
+# Render Multiple URLs to file
+# FIXME: For now it is fine with pure domain names: don't think it would work with paths and stuff like that
+
+# Extend the Array Prototype with a 'foreach'
+Array.prototype.forEach = (action) ->
+    for i, j in this
+        action j, i, _len
+
+# Render a given url to a given file
+# @param url URL to render
+# @param file File to render to
+# @param callback Callback function
+renderUrlToFile = (url, file, callback) ->
+    page = new WebPage()
+    page.viewportSize = { width: 800, height : 600 }
+    page.settings.userAgent = 'Phantom.js bot'
+
+    page.open url, (status) ->
+       if status isnt 'success'
+           console.log "Unable to render '#{url}'"
+       else
+           page.render file
+
+       delete page
+       callback url, file
+
+# Read the passed args
+if phantom.args.length > 0
+    arrayOfUrls = phantom.args
+else
+    # Default (no args passed)
+    console.log 'Usage: phantomjs render_multi_url.coffee [domain.name1, domain.name2, ...]'
+    arrayOfUrls = [
+      'www.google.com',
+      'www.bbc.co.uk',
+      'www.phantomjs.org'
+    ]
+
+# For each URL
+arrayOfUrls.forEach (pos, url, total) ->
+    file_name = "./#{url}.png"
+
+    # Render to a file
+    renderUrlToFile "http://#{url}", file_name, (url, file) ->
+        console.log "Rendered '#{url}' at '#{file}'"
+        if pos is total - 1
+            # Close Phantom if it's the last URL
+            phantom.exit()


trying to hammer everything out

trying to hammer everything out

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


remove grunt file

remove grunt file

--- Gruntfile.coffee
+++ Gruntfile.coffee
@@ -1,80 +0,0 @@
-module.exports = (grunt) ->
-
-	pkg = grunt.file.readJSON('package.json')
-
-	#*------------------------------------*\
-	#   $LOAD DEPENDENCIES
-	#*------------------------------------*/
-	dependencies = Object.keys(pkg.devDependencies).filter (o) ->
-		/^grunt-.+/.test(o)
-
-	for dep in dependencies
-		grunt.loadNpmTasks(dep)
-
-	#
-	# Grunt configuration:
-	#
-	# https://github.com/cowboy/grunt/blob/master/docs/getting_started.md
-	#
-	grunt.initConfig
-		pkg: pkg,
-
-		# Project configuration
-		# ---------------------
-
-		#*------------------------------------*\
-		#   $SHELL
-		#*------------------------------------*/
-		shell:
-			dist:
-				command: [
-					'say "hello"'
-				].join('&&'),
-				options:
-					stdout:true
-
-
-		#*------------------------------------*\
-		#   $BUMP
-		#*------------------------------------*/
-		bump:
-			options:
-				files: [
-					'package.json'
-				]
-				commit: true
-				commitMessage: 'bump version to %VERSION%'
-				commitFiles: [
-					'package.json'
-				]
-				createTag: false
-				push: false
-
-
-		#*------------------------------------*\
-		#   $DEV UPDATE
-		#*------------------------------------*/
-		devUpdate:
-			options:
-				reportUpdated: false
-				semver: true
-				packages:
-					devDependencies: true
-					dependencies: false
-				packageJson: null
-			check:
-				updateType: 'report'
-			ask:
-				options:
-					updateType: 'prompt'
-			up:
-				options:
-					updateType: 'force'
-
-
-	#*------------------------------------*\
-	#   $TASKS
-	#*------------------------------------*/
-	grunt.registerTask 'depcheck', ['devUpdate:check']
-	grunt.registerTask 'depask', ['devUpdate:ask']
-	grunt.registerTask 'depup', ['devUpdate:up']


Ignore indentation lint

Ignore indentation lint

The new promises chaining causes lint errors that are false positives.

--- Gruntfile.coffee
+++ Gruntfile.coffee
@@ -88,6 +88,8 @@
         no_empty_param_list:
           level: 'error'
         max_line_length:
+          level: 'ignore'
+        indentation:
           level: 'ignore'
       src: [
         'dot-atom/**/*.coffee'


Kanyebot

Kanyebot

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


Fixed: the americano-cozy plugin path was relative

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/goofy-bz/kresus.git/'


enabling dashboard in react version

enabling dashboard in react version


allow custom compute for dunlop can

allow custom compute for dunlop can

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/companytools/ember-cli-dunlop.git/'


bugfix: use the correct DB

bugfix: use the correct DB

--- config/main.vagrant.coffee
+++ config/main.vagrant.coffee
@@ -3,7 +3,7 @@
 deepFreeze      = require 'koding-deep-freeze'

 version         = "0.0.1"
-mongo           = 'localhost:27017/beta_koding'
+mongo           = 'localhost:27017/koding'
 projectRoot     = nodePath.join __dirname, '..'
 socialQueueName = "koding-social-vagrant"


port keyboard from wani

port keyboard from wani

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

--- lib/keyboard.coffee
+++ lib/keyboard.coffee
@@ -0,0 +1,204 @@
+Keyboard = (module,profile,opts) ->
+  @init module,profile,opts
+  @
+
+Keyboard::init = (module, profile, opts) ->
+  @destination = module
+  @width = 256
+  @height = 80
+
+Keyboard::Defaults =
+  keyWidth: 17
+  width: 256
+  height: 32
+
+Keyboard::build = () ->
+  $box = $('<div />')
+    .addClass 'wani-kb'
+    .css
+      height: @height
+      width: @width
+  @$keyboard = $box
+  @buildKeyboard $box, 48
+  $box
+
+Keyboard::buildKeyboard = ($elem,from) ->
+  kb = @
+  width = @width
+  height = @height
+  keys = 25
+  from = 48
+  blackNotes =
+    1: 1
+    3: 1
+    6: 1
+    8: 1
+    10: 1
+
+  isBlack = (n) ->
+    blackNotes[n % 12]
+  whites = {}
+  blacks = {}
+  wi = 0 #white key based index
+  i = 0
+  nn = from
+  # before creating elements, make map for black keys and white keys
+  while nn < keys + from
+    if isBlack(nn)
+      blacks[wi] = nn
+    else
+      whites[wi++] = nn
+    i++
+    nn++
+  keyWidth = width / wi
+
+  # then, we can run loop with place based index
+  for pos in [0..wi-1]
+    noteNumber = blacks[pos]
+    continue unless noteNumber
+    do (noteNumber,pos) ->
+      $('<div />')
+        .addClass('wani-kb-bk wani-kb-key wani-kb-key-' + noteNumber)
+        .css(
+          width: keyWidth * 0.7
+          height: height * 0.6
+          left: pos * keyWidth - keyWidth * 0.35)
+        .on 'mousedown', ()->
+          kb.noteOn noteNumber
+          return false
+        .appendTo $elem
+
+  for pos in [0..wi-1]
+    noteNumber = whites[pos]
+    do (noteNumber,pos) ->
+      $('<div />')
+        .addClass('wani-kb-wk wani-kb-key wani-kb-key-' + noteNumber)
+        .css(
+          width: keyWidth
+          height: height - 2
+          left: pos * keyWidth)
+        .on 'mousedown', ()->
+          kb.noteOn noteNumber
+          return false
+        .appendTo $elem
+
+
+Keyboard::noteOn = (noteNumber) ->
+  @$keyboard.find('.wani-kb-key-' + noteNumber).addClass('wani-kb-key-playing')
+  unless @playing?
+    $(document).addClass 'wani-no-select'
+    @setNoteOffListeners()
+  @playing = noteNumber
+  @destination.noteOn(noteNumber);
+
+
+Keyboard::noteOff = (noteNumber,continuePlaying) ->
+  noteNumber ?= @playing
+  @$keyboard.find('.wani-kb-key-' + noteNumber).removeClass('wani-kb-key-playing')
+  @destination.noteOff(noteNumber)
+  return if continuePlaying
+  @playing = null
+  $(document).removeClass 'wani-no-select'
+  @clearNoteOffListeners()
+
+
+Keyboard::setNoteOffListeners = () ->
+  kb = this
+  console.log(1)
+  $(document).on 'mouseup', ->
+    console.log(2)
+    kb.noteOff()
+    false
+  @$keyboard.on 'mouseleave', ->
+    kb.noteOff(kb.playing, true)
+    false
+  @$keyboard.find('.wani-kb-key').on 'mouseenter', ->
+    kb.noteOff(kb.playing,true)
+    $(this).trigger 'mousedown'
+    false
+  return
+
+Keyboard::clearNoteOffListeners = () ->
+  $(document).off 'mouseup'
+  @$keyboard.off 'mouseleave'
+  @$keyboard.find('.wani-kb-key').off 'mouseenter'
+
+__style = '''
+.wani-no-select {
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  user-select: none;
+}
+
+.wani-grabbing {
+  cursor: move !important;
+}
+
+.wani-kb {
+  height: 70px;
+  width: 256px;
+  position: relative;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  user-select: none;
+  cursor: pointer;
+  background-color: #abc;
+}
+
+.wani-kb-wk {
+  position: absolute;
+  top: 0px;
+  border-right: 1px solid #abc;
+  border-bottom: 2px solid #424033;
+  background-color: #8f8073;
+/*  background-color: #fff; */
+  border-radius: 0 0 2px 2px;
+  z-index: 2;
+}
+
+.wani-kb-bk {
+  height: 60%;
+  position: absolute;
+  top: 0px;
+  border-right: 1px solid #abc;
+  background-color: #f84;
+/*  background-color: #000; */
+  border-radius: 0 0 2px 2px;
+  z-index: 4;
+}
+
+.wani-kb-bk:hover {
+  background-color: #fca;
+}
+
+.wani-kb-wk:hover {
+  background-color: #654;
+}
+
+.wani-kb-key-playing {
+  background-color: #abc !important;
+}
+
+.wani-kb-key-playing.wani-kb-wk {
+  z-index: 3;
+  border-left: 1px solid #fff;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  box-shadow: 0 0 5px #def;
+}
+
+.wani-kb-key-playing.wani-kb-bk {
+  border-left: 1px solid #fff;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  box-shadow: 0 0 5px #def;
+}
+
+
+'''
+
+Wanigui.registerModule(
+  name: 'keyboard'
+  create: Keyboard
+  stylesheet: __style
+)


fix typo

fix typo

--- src/commands/test.coffee
+++ src/commands/test.coffee
@@ -84,7 +84,7 @@
     ]

     async.detect testHelpersFiles, fs_utils.exists, (testHelpersFile) =>
-      globals = testHelpersFile and require(testHelpersFile) or {}
+      globals = testHelpersFile? and require(testHelpersFile) or {}
       globals.window = window

       @startMocha globals


Fix minimize event double-triggering

Fix minimize event double-triggering

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/grantovich/CSH-WebNews.git/'


test cases use two params: message and options

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


bug fix

bug fix

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


bug fix

bug fix


sockets

sockets

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/stevelacy/rialu-node-msi.git/'


Add unsafe methods for bypassing existential checks.

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


avoid spurious touchmove events from preventing url clicks

This change only sets the touchMoved variable when the absolute movement
is above a minimum threshold to avoid preventing clicks in the touchend
handler

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


Tests: Skeleton tests for Governor

Tests: Skeleton tests for Governor

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

--- spec/governor.coffee
+++ spec/governor.coffee
@@ -0,0 +1,35 @@
+
+guv = require '..'
+
+describe 'Governor', ->
+
+  cfg = """
+  *{app=guv-test}
+  my{p=60,deadline=240,queue=myrole.INPUT,worker=myworker}
+  """
+
+  # Error cases
+  describe 'Errors', ->
+
+    describe 'cannot connect to Heroku', ->
+      it 'should emit error'
+    describe 'specified worker does not exist', ->
+      it 'should emit error'
+      it 'other workers should be unaffected'
+
+    describe 'cannot connect to RabbitMQ', ->
+      it 'should emit error'
+    describe 'specified queue does not exist', ->
+      it 'should emit error'
+      it 'other workers should be unaffected'
+
+  # Happy cases
+  describe 'no messages in queue', ->
+    it 'should scale to minimum'
+
+  describe 'lots of messages in queue', ->
+    it 'should scale to maximum'
+
+  describe 'lots of messages then less', ->
+    it 'should first scale up'
+    it 'then scale down again'


bug fix

bug fix

--- src/formatter.coffee
+++ src/formatter.coffee
@@ -77,7 +77,7 @@
       if $node.is('br')
         blockNode = null if blockNode?
         $node.remove()
-      else if @editor.util.isBlockNode(node) or $node.is('img:not([data-non-image])')
+      else if @editor.util.isBlockNode(node)
         if $node.is('li')
           if blockNode and blockNode.is('ul, ol')
             blockNode.append node


fix for default params in project commits cntrl

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


better logging

better logging


increasing timeout

increasing timeout


Remove unused xhr faking

Remove unused xhr faking

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


remove (unused) tile sizes

remove (unused) tile sizes

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/core-network/client-threejs.git/'


Added Twitch.tv script

Added Twitch.tv script

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

--- twitch.coffee
+++ twitch.coffee
@@ -0,0 +1,50 @@
+# Description:
+#   Twitch API - Find live streams
+#
+# Dependencies:
+#   None
+#
+# Configuration:
+#   None
+#
+# Commands:
+#   hubot ttv <category> - Perform a case-sensitive search on Twitch.tv for live streams in a game category (returns the first 5)
+#   hubot ttv featured - Return the first 5 featured live streams on Twitch.tv
+#
+# Author:
+#   MrSaints
+
+module.exports = (robot) ->
+    robot.respond /ttv (.*)/i, (msg) ->
+        if msg.match[1] is "featured"
+            getStreams msg, true
+        else
+            getStreams msg
+
+getStreams = (msg, featured) ->
+    category = msg.match[1]
+
+    API = "/streams"
+    type = "streams"
+
+    if featured
+        API = "/streams/featured"
+        type = "featured"
+
+    msg.http("https://api.twitch.tv/kraken#{API}")
+        .query
+            game: category
+            limit: 5
+        .get() (err, res, body) ->
+            data = JSON.parse body
+
+            if data._total is 0
+                msg.reply "No live streams were found in '#{category}'. Try a different category or try again later."
+                return
+
+            for stream in data[type][0..4]
+                stream = stream.stream if featured
+                msg.send "#{stream.channel.display_name} (#{stream.channel.status}) - #{stream.channel.url} [Viewers: #{stream.viewers}]"
+
+            if !featured and data._total > 5
+                msg.reply "There are #{data._total - 5} other '#{category}' live streams."


updating Amazon Linux amis by region

updating Amazon Linux amis by region


Add log for dhb load error

Add log for dhb load error

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/xaun/impac-angular.git/'


Define grunt tasks

Define grunt tasks

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

--- Gruntfile.coffee
+++ Gruntfile.coffee
@@ -0,0 +1,81 @@
+###
+ * tesvites
+ * https://github.com/leny/tesvites
+ *
+ * Copyright (c) 2015 Leny
+ * Licensed under the MIT license.
+###
+
+"use strict"
+
+module.exports = ( grunt ) ->
+
+  require( "matchdep" ).filterDev( "grunt-*" ).forEach grunt.loadNpmTasks
+
+  grunt.initConfig
+    coffeelint:
+      options:
+        arrow_spacing:
+          level: "error"
+        camel_case_classes:
+          level: "error"
+        duplicate_key:
+          level: "error"
+        indentation:
+          level: "ignore"
+        max_line_length:
+          level: "ignore"
+        no_backticks:
+          level: "error"
+        no_empty_param_list:
+          level: "error"
+        no_stand_alone_at:
+          level: "error"
+        no_tabs:
+          level: "error"
+        no_throwing_strings:
+          level: "error"
+        no_trailing_semicolons:
+          level: "error"
+        no_unnecessary_fat_arrows:
+          level: "error"
+        space_operators:
+          level: "error"
+      lib:
+        files:
+          src: [ "src/**/*.coffee" ]
+    coffee:
+      lib:
+        expand: yes
+        cwd: "src"
+        src: [ "**/*.coffee" ]
+        dest: "lib"
+        ext: ".js"
+        options:
+          bare: yes
+    concat:
+      options:
+        banner: "#!/usr/bin/env node"
+      lib:
+        src: "lib/tesvites.js"
+        dest: "lib/tesvites.js"
+    watch:
+      lib:
+        files: [
+          "src/**/*.coffee"
+        ]
+        options:
+          nospawn: yes
+        tasks: [
+          "clear"
+          "coffeelint"
+          "coffee"
+          "concat"
+        ]
+
+  grunt.registerTask "default", [
+    "clear"
+    "coffeelint"
+    "coffee"
+    "concat"
+  ]


added Gruntfile

added Gruntfile

--- Gruntfile.coffee
+++ Gruntfile.coffee
@@ -0,0 +1,163 @@
+module.exports = (grunt) ->
+
+
+  # paths setup - separate as some modules dont process templates correctly
+  paths =
+
+    # coffescript sources
+    coffee_dir: 'coffee'
+    coffee_src: 'coffee/**/*.coffee'
+
+    # javascript sources
+    js_dir: 'js'
+    js_src: 'js/**/*.js'
+    js_specs: 'js/test/**/*.spec.js'
+
+    # build directory
+    build_dir: 'build'
+
+    # minified target name
+    minified: 'build/acornplayer.min.js'
+
+    # libraries to load in the frontend
+    frontend_libs: [
+      'node_modules/jquery-browser/lib/jquery.js'    # for dom manipulation
+      'node_modules/underscore/underscore.js'        # for utilities
+      'node_modules/backbone/backbone.js'            # for mvc apps
+      'lib/bootstrap/bootstrap.min.js'               # for style
+      'lib/closure/library/closure/goog/base.js'     # for dependencies
+      'lib/athena.lib.min.js'                        # for athena utils
+    ]
+
+
+  # YOU SHOULD NOT NEED TO MODIFY BELOW THIS LINE.
+  # you may have to... if things break...
+
+
+  # google closure paths
+  paths.closure =
+
+    # dependencies file
+    deps: "#{paths.js_dir}/deps.js"
+
+    # main entry point
+    main: "#{paths.js_dir}/src/main.js"
+
+    # output file for the compiler
+    compiled: paths.minified
+
+    # root of the sources that closure should use
+    # silliness. because depswriter.py uses paths relative to closure library
+    root_with_prefix: "'#{paths.js_dir} ../../../../../#{paths.js_dir}'"
+
+    # path to library. this should be a submodule.
+    library: 'lib/closure/library'
+
+    # path to compiler. this should be a symlink (or the actual jar).
+    compiler: 'lib/closure/compiler.jar'
+
+
+  # jasmine paths
+  paths.jasmine =
+
+    # lib to include before sources (e.g. jquery, underscore, etc).
+    lib: paths.frontend_libs
+
+    # src to include. use closure deps and main entry point
+    src: [paths.closure.deps, paths.closure.main]
+
+    # specs to include.
+    specs: paths.js_specs
+
+
+
+  # Project configuration.
+  grunt.initConfig
+
+    # load package information
+    pkg: grunt.file.readJSON 'package.json'
+
+    # task to compile coffeescript into javascript
+    coffee:
+      default:
+        src: paths.coffee_src
+        dest: paths.js_dir
+        options:
+          preserve_dirs: true
+          base_path: paths.coffee_dir
+
+    # task to compute file dependencies (closure)
+    closureDepsWriter:
+      default:
+        closureLibraryPath: paths.closure.library
+        options:
+          output_file: paths.closure.deps
+          root_with_prefix: paths.closure.root_with_prefix
+
+    # task to compile code into a minified file (closure)
+    closureCompiler:
+      default:
+        js: paths.js_src
+        closureCompiler: paths.closure.compiler
+        checkModified: true
+        options:
+           # compilation_level: 'ADVANCED_OPTIMIZATIONS',
+           # externs: ['path/to/file.js', '/source/**/*.js'],
+           # define: ["'goog.DEBUG=false'"],
+           # warning_level: 'verbose',
+           # jscomp_off: ['checkTypes', 'fileoverviewTags'],
+           # summary_detail_level: 3,
+           js_output_file: paths.closure.compiled
+           output_wrapper: '"(function(){%output%}).call(this);"'
+
+    # task to run jasmine tests through the commandline via phantomjs
+    jasmine:
+      # concat because jasmine-runner doesnt support libs (before srcs)
+      src: [].concat(paths.jasmine.lib, paths.jasmine.src)
+      specs: paths.jasmine.specs
+
+    # task to run jasmine tests in a webserver
+    jasmineSpecServer:
+      lib: paths.jasmine.lib
+      src: paths.jasmine.src
+      specs: paths.jasmine.specs
+
+    # task to watch sources for changes and recompile during development
+    watch:
+      files: paths.coffee_src
+      tasks: 'deps' # or 'test', or 'testserver' :)
+
+    # task to run shell commands
+    exec:
+      # create the build directory. closure errors out if it isn't there...
+      mkbuild: command: "mkdir -p #{paths.build_dir}"
+
+
+    # task to clean up directories
+    clean:
+
+      # the generated javascript sources
+      js: paths.js_dir
+
+      # the generated build dir
+      build: paths.build_dir
+
+      # the generated jasmine-runner tester file
+      test: ['_SpecRunner.html']
+
+
+
+  # Load tasks
+  grunt.loadNpmTasks 'grunt-exec'
+  grunt.loadNpmTasks 'grunt-coffee'
+  grunt.loadNpmTasks 'grunt-contrib-clean'
+  grunt.loadNpmTasks 'grunt-closure-tools'
+  grunt.loadNpmTasks 'grunt-jasmine-runner'
+  grunt.loadNpmTasks 'grunt-jasmine-spec-server'
+
+  # Register tasks
+  grunt.registerTask 'compile', ['coffee', 'exec:mkbuild', 'closureCompiler']
+  grunt.registerTask 'deps', ['coffee', 'closureDepsWriter']
+  grunt.registerTask 'test', ['deps', 'jasmine', 'clean:test']
+  grunt.registerTask 'testserver', ['deps', 'jasmineSpecServer', 'watch']
+  grunt.registerTask 'default', ['compile']


Use coffeelint instead of jshint

Use coffeelint instead of jshint

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/rhumlover/dm-resizer.git/'


Better order.

Better order.

--- lib/setup.coffee
+++ lib/setup.coffee
@@ -87,9 +87,10 @@
   app.use require '../apps/blank'

   # Make sure we're on https://www
+  app.use ensureWWW
+  app.use ensureSSL
   app.use hstsMiddleware
-  app.use ensureSSL
-  app.use ensureWWW
+

   # Increase max sockets. The goal of this is to improve app -> api
   # performance but the downside is it limits client connection reuse with keep-alive


Need more resources for the specs

Need more resources for the specs

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

--- help/specs.coffee
+++ help/specs.coffee
@@ -0,0 +1,11 @@
+#
+# # Specs Help
+#
+module.exports = """
+Koding Virtual Machines come with the following specs:
+
+  RAM:    2.0Gb
+  Disk:   1.2Gb
+
+Additional resources will be purchasable from Koding in the near future.
+"""


update for new Atom settings

update for new Atom settings

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


Add a color-picker motion and a grammar-selector one.

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


Added tests.

Added tests.

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

--- test/allTests.coffee
+++ test/allTests.coffee
@@ -0,0 +1,25 @@
+chai = require 'chai'
+expect = chai.expect
+
+CopyMachine = require "../index"
+
+describe 'copy', ->
+    it 'makes a deep copy of any object', (done) ->
+        objectToCopy = { someString: "Certainly a string.", horse: true, potion: 1 }
+        newObject = CopyMachine.copy(objectToCopy)
+
+        expect(newObject).to.deep.equal(objectToCopy)
+        done()
+
+    it 'explodes when passed something that is not an object', (done) ->
+        numbertoCopy = 20
+        expect(CopyMachine.copy).to.throw(Error, 'Item to copy must be an object.')
+        done()
+
+    it 'passes back a new object that has no reference to the old object', (done) ->
+        objectToCopy = { someString: "Certainly a string.", horse: true, potion: 1 }
+        newObject = CopyMachine.copy(objectToCopy)
+
+        newObject.horse = false
+        expect(newObject.horse).to.not.equal(objectToCopy.horse)
+        done()


Fixed codeclimate error for line exceeding limit

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


Changed RubricService > getRubric to prevent duplication of rubric criteria and levels

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


Added regex to fudge dice and removed $ because.

--- scripts/dice.coffee
+++ scripts/dice.coffee
@@ -27,7 +27,7 @@
     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) ->
+  robot.respond /roll (\d+)d(\d+)([\+-]\d+)?/i, (msg) ->
     dice = parseInt msg.match[1]
     sides = parseInt msg.match[2]
     modifier = parseInt msg.match[3]
@@ -38,7 +38,7 @@
     else
       report modifier, roll dice, sides
     msg.reply answer
-  robot.respond /roll (\d+)dF/i, (msg) ->
+  robot.respond /roll (\d+)dF([\+-]\d+)?/i, (msg) ->
     dice = parseInt msg.match[1]
     answer = if dice > 100
       "I'm not going to roll more than 100 fudge dice for you."


Add ping.coffee

Add ping.coffee

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

--- scripts/ping.coffee
+++ scripts/ping.coffee
@@ -0,0 +1,18 @@
+# Description:
+#   Utility commands surrounding Hubot uptime.
+#
+# Commands:
+#   ping - pongと返します
+#
+# Authors:
+#   S--Minecraft
+#   snvx
+#
+# License;
+#   Copyright (c) 2015 snowbit.
+#   Released under the Apache v2 license
+#   https://github.com/snowbit/snowbit/blob/master/LICENSE
+
+module.exports = (robot) ->
+  robot.respond /PING/i, (msg) ->
+    msg.reply "PONG\n\n[#{new Date()}]"


Add Atom configuration file

Add Atom configuration file

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

--- atom_config.cson
+++ atom_config.cson
@@ -0,0 +1,11 @@
+'exception-reporting':
+  'userId': 'f637adea-1050-8ece-429a-1a2be9ddef08'
+'welcome':
+  'showOnStartup': false
+'metrics':
+  'userId': 'a3d0e1b721f417804bf9c8a098629757bafe5628'
+'core':
+  'themes': [
+    'spacegray-dark-ui'
+    'spacegray-dark-syntax'
+  ]


fixes

fixes

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


NotificationCollection: half-working fetch method

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


GitHubAccount: use errors property

GitHubAccount: use errors property


update

update

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


add gulpfile

add gulpfile

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

--- gulpfile.coffee
+++ gulpfile.coffee
@@ -0,0 +1,34 @@
+gulp = require 'gulp'
+coffee = require 'gulp-coffee'
+lint = require 'gulp-coffeelint'
+jasmine = require 'gulp-jasmine'
+istanbul = require 'gulp-coffee-istanbul'
+
+glob = (dir, ext = 'coffee') -> "#{dir}/**/*.#{ext}"
+lib = glob('lib')
+src = glob('src')
+test = glob('test')
+
+gulp.task 'run', ->
+
+
+gulp.task 'build', ->
+  gulp.src([lib, src])
+  .pipe(coffee({ bare: true }))
+  .pipe(gulp.dest('dist/'))
+
+gulp.task 'lint', ->
+  gulp.src(lib)
+  .pipe(lint())
+  .pipe(lint.reporter())
+
+gulp.task 'test', ['build'], ->
+  gulp.src(lib)
+  .pipe(istanbul({ includeUntested: true }))
+  .pipe(istanbul.hookRequire())
+  .on 'finish', ->
+    gulp.src(test)
+    .pipe(jasmine())
+    .pipe(istanbul.writeReports())
+
+gulp.task 'default', ['lint', 'build', 'test']


Extract building lib into separate gulp task

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/kevgo/modularity-framework.git/'


reconfig

reconfig

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


Add a common tasks section to the Editor class overview

--- src/editor.coffee
+++ src/editor.coffee
@@ -49,6 +49,86 @@
 #
 # **When in doubt, just default to buffer coordinates**, then experiment with
 # soft wraps and folds to ensure your code interacts with them correctly.
+#
+# ## Common Tasks
+#
+# This is a subset of methods on this class. Refer to the complete summary for
+# its full capabilities.
+#
+# ### Cursors
+# - {::setCursorBufferPosition}
+# - {::setCursorScreenPosition}
+# - {::moveCursorUp}
+# - {::moveCursorDown}
+# - {::moveCursorLeft}
+# - {::moveCursorRight}
+# - {::moveCursorToBeginningOfWord}
+# - {::moveCursorToEndOfWord}
+# - {::moveCursorToPreviousWordBoundary}
+# - {::moveCursorToNextWordBoundary}
+# - {::moveCursorToBeginningOfNextWord}
+# - {::moveCursorToBeginningOfLine}
+# - {::moveCursorToEndOfLine}
+# - {::moveCursorToFirstCharacterOfLine}
+# - {::moveCursorToTop}
+# - {::moveCursorToBottom}
+#
+# ### Selections
+# - {::getSelectedBufferRange}
+# - {::getSelectedBufferRanges}
+# - {::setSelectedBufferRange}
+# - {::setSelectedBufferRanges}
+# - {::selectUp}
+# - {::selectDown}
+# - {::selectLeft}
+# - {::selectRight}
+# - {::selectToBeginningOfWord}
+# - {::selectToEndOfWord}
+# - {::selectToPreviousWordBoundary}
+# - {::selectToNextWordBoundary}
+# - {::selectWord}
+# - {::selectToBeginningOfLine}
+# - {::selectToEndOfLine}
+# - {::selectToFirstCharacterOfLine}
+# - {::selectToTop}
+# - {::selectToBottom}
+# - {::selectAll}
+# - {::addSelectionForBufferRange}
+# - {::addSelectionAbove}
+# - {::addSelectionBelow}
+# - {::splitSelectionsIntoLines}
+#
+# ### Manipulating Text
+# - {::getText}
+# - {::getSelectedText}
+# - {::setText}
+# - {::setTextInBufferRange}
+# - {::insertText}
+# - {::insertNewline}
+# - {::insertNewlineAbove}
+# - {::insertNewlineBelow}
+# - {::backspace}
+# - {::backspaceToBeginningOfWord}
+# - {::backspaceToBeginningOfLine}
+# - {::delete}
+# - {::deleteToEndOfWord}
+# - {::deleteLine}
+# - {::cutSelectedText}
+# - {::cutToEndOfLine}
+# - {::copySelectedText}
+# - {::pasteText}
+#
+# ### Undo, Redo, and Transactions
+# - {::undo}
+# - {::redo}
+# - {::transact}
+# - {::abortTransaction}
+#
+# ### Markers
+# - {::markBufferRange}
+# - {::markScreenRange}
+# - {::getMarker}
+# - {::findMarkers}
 module.exports =
 class Editor extends Model
   Serializable.includeInto(this)


:lipstick: Remove comment for removed parameter

--- src/editor.coffee
+++ src/editor.coffee
@@ -911,11 +911,9 @@
   calcSoftWrapColumn: ->
     Math.floor(@scrollView.width() / @charWidth)

-  # Sets the soft wrap column for the editor.
-  #
-  # softWrap - A {Boolean} which, if `true`, sets soft wraps
-  # softWrapColumn - A {Number} indicating the length of a line in the editor when soft
-  # wrapping turns on
+  # Enables/disables soft wrap on the editor.
+  #
+  # softWrap - A {Boolean} which, if `true`, enables soft wrap
   setSoftWrap: (softWrap) ->
     if softWrap
       @addClass 'soft-wrap'


Volume buttons specs

Volume buttons specs

error: pathspec 'spec/javascripts/button_volume_spec.coffee' did not match any file(s) known to git

--- spec/javascripts/button_volume_spec.coffee
+++ spec/javascripts/button_volume_spec.coffee
@@ -0,0 +1,43 @@
+describe 'Button volume suite', ->
+  no1 = null
+
+  beforeEach ->
+    # Fixtures
+    jasmine.getFixtures().fixturesPath = '.'
+    loadFixtures 'spec/javascripts/fixtures/html/player-1.html'
+
+  afterEach ->
+    no1 = null
+    $.removeData(document.body, 'FoundationPlayers')
+
+  it 'has default classes', ->
+    $('.no-1').foundationPlayer()
+    no1 = $('.no-1').data 'FoundationPlayer'
+    expect(no1.$volume).toHaveClass('fi-volume')
+    expect(no1.$volume).not.toHaveClass('fi-volume-strike')
+
+  it 'has event handlers', ->
+    $('.no-1').foundationPlayer()
+    no1 = $('.no-1').data 'FoundationPlayer'
+    volumeButtonSpy = spyOnEvent(no1.$volume, 'click')
+    no1.$volume.click()
+    expect(no1.$volume).toHandle('click')
+    expect('click').toHaveBeenTriggeredOn no1.$volume
+
+  it 'button click changes class', ->
+    $('.no-1').foundationPlayer()
+    no1 = $('.no-1').data 'FoundationPlayer'
+    # Default class before click
+    expect(no1.$volume).toHaveClass('fi-volume')
+    expect(no1.$volume).not.toHaveClass('fi-volume-strike')
+    no1.$volume.click()
+    expect(no1.$volume).toHaveClass('fi-volume-strike')
+    expect(no1.$volume).not.toHaveClass('fi-volume')
+
+  it 'button click changes state', ->
+    $('.no-1').foundationPlayer()
+    no1 = $('.no-1').data 'FoundationPlayer'
+    # Default class before click
+    expect(no1.audio.muted).toBe false
+    no1.$volume.click()
+    expect(no1.audio.muted).toBe true


extracting SingleCamera module

extracting SingleCamera module

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

--- src/engine_single_camera.coffee
+++ src/engine_single_camera.coffee
@@ -0,0 +1,25 @@
+Engine.SingleCamera = (I, self) ->
+  # Set some default properties
+  Object.reverseMerge I,
+    cameraTransform: Matrix.IDENTITY
+
+  self.attrAccessor "cameraTransform"
+
+  # Add events and methods here
+  self.bind "draw", ->
+    I.canvas.withTransform I.cameraTransform, (canvas) ->
+      # TODO Turn this zSort into a per camera object stream filter
+      drawObjects = self.objects()
+
+      if I.zSort
+        drawObjects.sort (a, b) ->
+          a.I.zIndex - b.I.zIndex
+
+      drawObjects.invoke("draw", canvas)
+
+      # TODO This should be triggering a camera draw
+      # camera.trigger "draw", I.canvas
+
+  # No public methods
+  return {}
+


Capitalize filter for navbar

Capitalize filter for navbar

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

--- ngtuvok/src/components/common/capitalize.filter.coffee
+++ ngtuvok/src/components/common/capitalize.filter.coffee
@@ -0,0 +1,6 @@
+angular.module "ngtuvok"
+  .filter 'capitalize', ->
+    (input, all) ->
+      if !!input then input.replace(/([^\W_]+[^\s-]*) */g, ((txt) ->
+        txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase()
+      )) else ''


Node Modules Koding: MemoryLeakWatcher: add heapsnapshot extension to file names

--- node_modules_koding/memoryleakwatcher/lib/index.coffee
+++ node_modules_koding/memoryleakwatcher/lib/index.coffee
@@ -17,8 +17,8 @@
   console.log 'Snapshot headers: Leaked snapshot:', leakedHeapSnapshot.content.getHeader(), 'Latest snapshot before the leak:', latestHeapSnapshot.content.getHeader()
   console.log 'Leaked snapshot compared to the latest snapshot: ', latestHeapSnapshot.content.compare leakedHeapSnapshot.content

-  leakedHeapSnapshot.key = "leakedHeapSnapshot.#{leakedHeapSnapshot.date}"
-  latestHeapSnapshot.key = "latestHeapSnapshot.#{latestHeapSnapshot.date}"
+  leakedHeapSnapshot.key = "leakedHeapSnapshot.#{leakedHeapSnapshot.date}.heapsnapshot"
+  latestHeapSnapshot.key = "latestHeapSnapshot.#{latestHeapSnapshot.date}.heapsnapshot"

   s3Upload [leakedHeapSnapshot, latestHeapSnapshot]


goban meta tests

goban meta tests

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

--- test/goban.coffee
+++ test/goban.coffee
@@ -0,0 +1,47 @@
+chai = require('chai')
+requirejs = require('requirejs')
+
+# Chai
+assert = chai.assert
+should = chai.should()
+expect = chai.expect
+
+# Source: http://stackoverflow.com/a/15464313/412627
+describe 'goban', (done) ->
+
+  ###
+  Notes:
+    before(...) runs executing necessary requirejs code to fetch exported _goban var
+    and attaching it to the global test var goban.
+
+    This allows all describe(...) code to have access to _goban.
+  ###
+
+  # Test global var(s)
+  goban = undefined
+
+  # 'setup' before
+  before((done) ->
+
+    requirejs.config
+      baseUrl: './src'
+      nodeRequire: require
+
+    requirejs ["config", "main"], (config, _goban) ->
+
+      # Attach to global var
+      goban = _goban
+
+      # Tests will run after this is called
+      done()
+    )
+
+  ################## Tests ##################
+
+  describe "version", ->
+
+    it "should be string", ->
+
+      expect(goban.VERSION).to.be.a('string');
+
+


Simplify

Simplify

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


Chess!

Chess!

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

--- src/scripts/chess.coffee
+++ src/scripts/chess.coffee
@@ -0,0 +1,91 @@
+# Description:
+#   Play a game of chess!
+#
+# Dependencies:
+#   "chess": "0.1.3"
+#
+# Configuration:
+#   None
+#
+# Commands:
+#   hubot chess me - Creates a new game between yourself and another person in the room
+#   hubot chess status - Gets the current state of the board
+#   hubot chess move <to> - Moves a piece to the coordinate position using standard chess notation
+#
+# Author:
+#   thallium205
+#
+
+Chess = require 'chess'
+
+module.exports = (robot) ->
+  robot.respond /chess me$/i, (msg) ->
+    robot.brain.data.chess = Chess.create()
+    boardToFen robot.brain.data.chess.getStatus(), (status, fen) ->
+      msg.send 'http://webchess.freehostia.com/diag/chessdiag.php?fen=' + encodeURIComponent(fen) + '&size=large&coord=yes&cap=yes&stm=yes&fb=no&theme=classic&format=auto&color1=E3CEAA&color2=635147&color3=000000&.png'
+  robot.respond /chess status/i, (msg) ->
+    try
+      boardToFen robot.brain.data.chess.getStatus(), (status, fen) ->
+        if status
+          msg.send status
+        msg.send 'http://webchess.freehostia.com/diag/chessdiag.php?fen=' + encodeURIComponent(fen) + '&size=large&coord=yes&cap=yes&stm=yes&fb=no&theme=classic&format=auto&color1=E3CEAA&color2=635147&color3=000000&.png'
+    catch e
+      msg.send e
+
+  robot.respond /chess move (.*)/i, (msg) ->
+    try
+      robot.brain.data.chess.move msg.match[1]
+      boardToFen robot.brain.data.chess.getStatus(), (status, fen) ->
+       if status
+          msg.send status
+        msg.send 'http://webchess.freehostia.com/diag/chessdiag.php?fen=' + encodeURIComponent(fen) + '&size=large&coord=yes&cap=yes&stm=yes&fb=no&theme=classic&format=auto&color1=E3CEAA&color2=635147&color3=000000&.png'
+    catch e
+      msg.send e
+
+boardToFen = (status, callback) ->
+  fen = [[],[],[],[],[],[],[],[]]
+  blank = 0
+  lastRank = 0
+  for square in status.board.squares
+    if lastRank isnt square.rank
+      if blank isnt 0
+        fen[lastRank - 1].push(blank)
+        blank = 0
+    if square.piece is null
+      blank = blank + 1
+    else
+      if square.piece.type is 'pawn'
+        if blank is 0
+          fen[square.rank - 1].push(if square.piece.side.name is 'white' then 'P' else 'p')
+        else
+          fen[square.rank - 1].push(blank)
+          fen[square.rank - 1].push(if square.piece.side.name is 'white' then 'P' else 'p')
+          blank = 0
+      else
+        if blank is 0
+          fen[square.rank - 1].push(if square.piece.side.name is 'white' then square.piece.notation.toUpperCase() else square.piece.notation.toLowerCase())
+        else
+          fen[square.rank - 1].push(blank)
+          fen[square.rank - 1].push(if square.piece.side.name is 'white' then square.piece.notation.toUpperCase() else square.piece.notation.toLowerCase())
+          blank = 0
+    lastRank = square.rank
+  for rank in fen
+    rank = rank.join()
+  fen = fen.reverse().join('/').replace(/,/g,'')
+
+  msg = ''
+  if status.isCheck
+    msg += 'Check! '
+  if status.isCheckmate
+    msg += 'Checkmate! '
+  if status.isRepetition
+    msg += 'Threefold Repetition!  A draw can be called. '
+  if status.isStalemate
+    msg += 'Stalemate! '
+  if Object.keys(status.notatedMoves).length > 0
+    if status.notatedMoves[Object.keys(status.notatedMoves)[0]].src.piece.side.name is 'white'
+      fen += ' w';
+    else
+      fen += ' b';
+
+  callback msg, fen


Modified in browser at pixie.strd6.com

Modified in browser at pixie.strd6.com

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

--- test/tweening.coffee
+++ test/tweening.coffee
@@ -0,0 +1,17 @@
+module "Tweening"
+
+test "should allow for simple tweening", ->
+  one = 1
+
+  # Test for equality of two objects
+  equals one, 1
+
+test "testing boolean values", ->
+  someFunction = ->
+    return true
+
+  # Test if someFunction returns true
+  ok someFunction()
+
+# Clear out the module
+module()


Add keymap for markdown:compile-grammar-and-reload

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

--- keymaps/markdown.cson
+++ keymaps/markdown.cson
@@ -0,0 +1,2 @@
+'atom-workspace':
+  'cmd-alt-ctrl-c': 'markdown:compile-grammar-and-reload'


added ability to provide variables in Resources

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


Fixing namespace issue

Fixing namespace issue

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


start to split query plans into bounded and unbounded

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


+ http_server file

+ http_server file

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

--- plugins/http_server.coffee
+++ plugins/http_server.coffee
@@ -0,0 +1,20 @@
+###
+  发送群消息
+  POST /groupmsg
+  PARAMS {
+            group: 'qq群'
+            message: 'message'
+            token  : 'token'
+         }
+  返回结果:
+  ret {
+    err: 0
+    err_msg: ''
+  }
+
+  配置参数 config.yaml
+  - server
+    - token:
+    - allow: #TODO 白名单
+
+###


add action menu

add action menu

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/stevelacy/profile-app-views.git/'


some rds cleanup

some rds 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/bubblegroup/bubblebot.git/'


bug fix

bug fix


minor

minor


crop long property names, eg IPFS ids

crop long property names, eg IPFS ids

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/core-network/client.git/'


Update models.js.coffee

Update models.js.coffee

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


add steroids.make to connect

add steroids.make to connect

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


Referral: add another explanation

Referral: add another explanation

--- workers/social/lib/social/models/referral/index.coffee
+++ workers/social/lib/social/models/referral/index.coffee
@@ -283,6 +283,7 @@

   # this functions checks default vm and updates disk size
   # if required, when vm disk size is updated, returns hostname
+  # why this is here, because it will be deleted after 100TB campaign ends
   @resetVMDefaults = secure (client, callback)->
     JVM.fetchDefaultVm_ client, (err, vm)->
       return callback err if err


porting Danish translation from #417

porting Danish translation from #417

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

--- pivot.da.coffee
+++ pivot.da.coffee
@@ -0,0 +1,68 @@
+callWithJQuery = (pivotModule) ->
+    if typeof exports is "object" and typeof module is "object" # CommonJS
+        pivotModule require("jquery")
+    else if typeof define is "function" and define.amd # AMD
+        define ["jquery"], pivotModule
+    # Plain browser env
+    else
+        pivotModule jQuery
+
+callWithJQuery ($) ->
+    nf = $.pivotUtilities.numberFormat
+    tpl = $.pivotUtilities.aggregatorTemplates
+
+    r = nf({
+            thousandsSep: ".",
+            decimalSep: ","
+        })
+
+    t = nf({
+            digitsAfterDecimal: 0,
+            thousandsSep: ".",
+            decimalSep: ","
+        })
+
+    o = nf({
+            digitsAfterDecimal: 1,
+            scaler: 100,
+            suffix: "%",
+            thousandsSep: ".",
+            decimalSep: ","
+        })
+
+    $.pivotUtilities.locales.da =
+        localeStrings:
+            renderError: "Der opstod en fejl, mens du trak i feltet",
+            computeError: "Der opstod en fejl ved beregningen af feltet",
+            uiRenderError: "Der opstod en fejl, mens den grafiske brugerflade blev beregnet",
+            selectAll: "Vælg alle",
+            selectNone: "Vælg ingen",
+            tooMany: "(for mange værdier til at vise)",
+            filterResults: "Filter værdier",
+            totals: "I alt",
+            vs: "vs",
+            by: "af"
+        aggregators:
+            "Antal": tpl.count(t),
+            "Antal Unikke værdier": tpl.countUnique(t),
+            "Liste unikke værdier": tpl.listUnique(", "),
+            "Sum": tpl.sum(r),
+            "Sum i heltal": tpl.sum(t),
+            "Gennemsnit": tpl.average(r),
+            "Minimum": tpl.min(r),
+            "Maximum": tpl.max(r),
+            "Sum iforhold til sum": tpl.sumOverSum(r),
+            "Sum iforhold til sum, øverst 80%": tpl.sumOverSumBound80(!0, r),
+            "Sum iforhold til sum, lavest  80%": tpl.sumOverSumBound80(!1, r),
+            "Andel af i alt sum": tpl.fractionOf(tpl.sum(), "total", o),
+            "Andel af række sum": tpl.fractionOf(tpl.sum(), "row", o),
+            "Andel af kolonner sum": tpl.fractionOf(tpl.sum(), "col", o),
+            "Andel af i alt antal": tpl.fractionOf(tpl.count(), "total", o),
+            "Andel af række antal": tpl.fractionOf(tpl.count(), "row", o),
+            "Andel af kolonner antal": tpl.fractionOf(tpl.count(), "col", o)
+        renderers:
+            "Tabel": $.pivotUtilities.renderers.Table,
+            "Tabel med søjler": $.pivotUtilities.renderers["Table Barchart"],
+            "Heatmap": $.pivotUtilities.renderers.Heatmap,
+            "Heatmap per række": $.pivotUtilities.renderers["Row Heatmap"],
+            "Heatmap per kolonne": $.pivotUtilities.renderers["Col Heatmap"]


Clean up WorkspaceView API docs

Clean up WorkspaceView API docs

--- src/workspace-view.coffee
+++ src/workspace-view.coffee
@@ -14,38 +14,42 @@
 PaneContainerView = require './pane-container-view'
 Editor = require './editor'

-# Public: The container for the entire Atom application.
-#
-# An instance of this class is always available as the `atom.workspaceView`
-# global.
-#
-# ## Commands
-#
-#  * `application:about` - Opens the about dialog.
-#  * `application:show-settings` - Opens the preference pane in the currently
-#    focused editor.
-#  * `application:quit` - Quits the entire application.
-#  * `application:hide` - Hides the entire application.
-#  * `application:hide-other-applications` - Hides other applications
-#    running on the system.
-#  * `application:unhide-other-applications` - Shows other applications
-#    that were previously hidden.
-#  * `application:new-window` - Opens a new {AtomWindow} with no {Project}
-#    path.
-#  * `application:new-file` - Creates a new file within the focused window.
-#    Note: only one new file may exist within an {AtomWindow} at a time.
-#  * `application:open` - Prompts the user for a path to open in a new {AtomWindow}
-#  * `application:minimize` - Minimizes the currently focused {AtomWindow}
-#  * `application:zoom` - Expands the window to fill the screen or returns it to
-#    it's original unzoomed size.
-#  * `application:bring-all-windows-to-front` - Brings all {AtomWindow}s to the
-#    the front.
+# Public: The top-level view for the entire window. An instance of this class is
+# available via the `atom.workspaceView` global.
+#
+# It is backed by a model object, an instance of {Workspace}, which is available
+# via the `atom.workspace` global or {::getModel}. You should prefer to interact
+# with the model object when possible, but it won't always be possible with the
+# current API.
+#
+# ## Adding Perimiter Panels
+#
+# Use the following methods if possible to attach panels to the perimiter of the
+# workspace rather than manipulating the DOM directly to better insulate you to
+# changes in the workspace markup:
+#
+# * {::prependToTop}
+# * {::appendToTop}
+# * {::prependToBottom}
+# * {::appendToBottom}
+# * {::prependToLeft}
+# * {::appendToLeft}
+# * {::prependToRight}
+# * {::appendToRigt}
 #
 # ## Requiring in package specs
+#
+# If you need a `WorkspaceView` instance to test your package, require it via
+# the built-in `atom` module.
 #
 # ```coffee
 #   {WorkspaceView} = require 'atom'
 # ```
+#
+# You can assign it to the `atom.workspaceView` global in the spec or just use
+# it as a local, depending on what you're trying to accomplish. Building the
+# `WorkspaceView` is currently expensive, so you should try build a {Workspace}
+# instead if possible.
 module.exports =
 class WorkspaceView extends View
   Delegator.includeInto(this)
@@ -139,6 +143,12 @@
     @command 'core:save', => @saveActivePaneItem()
     @command 'core:save-as', => @saveActivePaneItemAs()

+  # Public: Get the underlying model object.
+  #
+  # Returns a {Workspace}.
+  getModel: -> @model
+
+  # Public: Install the Atom shell commands on the user's system.
   installShellCommands: ->
     showErrorDialog = (error) ->
       installDirectory = CommandInstaller.getInstallDirectory()
@@ -176,11 +186,11 @@
   afterAttach: (onDom) ->
     @focus() if onDom

-  # Public: Shows a dialog asking if the pane was _really_ meant to be closed.
+  # Prompts to save all unsaved items
   confirmClose: ->
     @panes.confirmClose()

-  # Public: Updates the application's title, based on whichever file is open.
+  # Updates the application's title, based on whichever file is open.
   updateTitle: ->
     if projectPath = atom.project.getPath()
       if item = @getActivePaneItem()
@@ -190,85 +200,119 @@
     else
       @setTitle('untitled')

-  # Public: Sets the application's title.
+  # Sets the application's title.
   setTitle: (title) ->
     document.title = title

-  # Returns an Array of  all of the application's {EditorView}s.
+  # Get all editor views.
+  #
+  # You should prefer {Workspace::getEditors} unless you absolutely need access
+  # to the view objects. Also consider using {::eachEditorView}, which will call
+  # a callback for all current and *future* editor views.
+  #
+  # Returns an {Array} of {EditorView}s.
   getEditorViews: ->
     @panes.find('.pane > .item-views > .editor').map(-> $(this).view()).toArray()

-  # Public: Prepends the element to the top of the window.
+  # Public: Prepend an element or view to the panels at the top of the
+  # workspace.
   prependToTop: (element) ->
     @vertical.prepend(element)

-  # Public: Appends the element to the top of the window.
+  # Public: Append an element or view to the panels at the top of the workspace.
   appendToTop: (element) ->
     @panes.before(element)

-  # Public: Prepends the element to the bottom of the window.
+  # Public: Prepend an element or view to the panels at the bottom of the
+  # workspace.
   prependToBottom: (element) ->
     @panes.after(element)

-  # Public: Appends the element to bottom of the window.
+  # Public: Append an element or view to the panels at the bottom of the
+  # workspace.
   appendToBottom: (element) ->
     @vertical.append(element)

-  # Public: Prepends the element to the left side of the window.
+  # Public: Prepend an element or view to the panels at the left of the
+  # workspace.
   prependToLeft: (element) ->
     @horizontal.prepend(element)

-  # Public: Appends the element to the left side of the window.
+  # Public: Append an element or view to the panels at the left of the
+  # workspace.
   appendToLeft: (element) ->
     @vertical.before(element)

-  # Public: Prepends the element to the right side of the window.
+  # Public: Prepend an element or view to the panels at the right of the
+  # workspace.
   prependToRight: (element) ->
     @vertical.after(element)

-  # Public: Appends the element to the right side of the window.
+  # Public: Append an element or view to the panels at the right of the
+  # workspace.
   appendToRight: (element) ->
     @horizontal.append(element)

-  # Public: Returns the currently focused {PaneView}.
+  # Public: Get the active pane view.
+  #
+  # Prefer {Workspace::getActivePane} if you don't actually need access to the
+  # view.
+  #
+  # Returns a {PaneView}.
   getActivePaneView: ->
     @panes.getActivePane()

-  # Public: Returns the currently focused item from within the focused {PaneView}
-  getActivePaneItem: ->
-    @model.activePaneItem
-
-  # Public: Returns the view of the currently focused item.
+  # Public: Get the view associated with the active pane item.
+  #
+  # Returns a view.
   getActiveView: ->
     @panes.getActiveView()

-  # Public: Focuses the previous pane by id.
+  # Focus the previous pane by id.
   focusPreviousPaneView: -> @model.activatePreviousPane()

-  # Public: Focuses the next pane by id.
+  # Focus the next pane by id.
   focusNextPaneView: -> @model.activateNextPane()

-  # Public: Focuses the pane directly above the active pane.
+  # Public: Focus the pane directly above the active pane.
   focusPaneViewAbove: -> @panes.focusPaneViewAbove()

-  # Public: Focuses the pane directly below the active pane.
+  # Public: Focus the pane directly below the active pane.
   focusPaneViewBelow: -> @panes.focusPaneViewBelow()

-  # Public: Focuses the pane directly to the left of the active pane.
+  # Public: Focus the pane directly to the left of the active pane.
   focusPaneViewOnLeft: -> @panes.focusPaneViewOnLeft()

-  # Public: Focuses the pane directly to the right of the active pane.
+  # Public: Focus the pane directly to the right of the active pane.
   focusPaneViewOnRight: -> @panes.focusPaneViewOnRight()

-  # Public: Fires a callback on each open {PaneView}.
+  # Public: Register a function to be called for every current and future
+  # pane view in the workspace.
+  #
+  # callback - A {Function} with a {PaneView} as its only argument.
+  #
+  # Returns a subscription object with an `.off` method that you can call to
+  # unregister the callback.
   eachPaneView: (callback) ->
     @panes.eachPaneView(callback)

+  # Public: Get all existing pane views.
+  #
+  # Prefer {Workspace::getPanes} if you don't need access to the view objects.
+  # Also consider using {::eachPaneView} or {Workspace::eachPane} if you want
+  # to register a callback for all current and *future* pane views or panes.
+  #
   # Returns an Array of all open {PaneView}s.
   getPaneViews: ->
     @panes.getPanes()

-  # Public: Fires a callback on each open {EditorView}.
+  # Public: Register a function to be called for every current and future
+  # editor view in the workspace.
+  #
+  # callback - A {Function} with an {EditorView} as its only argument.
+  #
+  # Returns a subscription object with an `.off` method that you can call to
+  # unregister the callback.
   eachEditorView: (callback) ->
     callback(editor) for editor in @getEditorViews()
     attachedCallback = (e, editor) -> callback(editor)
@@ -290,3 +334,7 @@
   # Deprecated
   getActivePane: ->
     @getActivePaneView()
+
+  # Deprecated: Call {Workspace::getActivePaneItem} instead.
+  getActivePaneItem: ->
+    @model.activePaneItem


Fix suggestions for 'r'

Fix suggestions for 'r'

--- admin/static/coffee/dataexplorer.coffee
+++ admin/static/coffee/dataexplorer.coffee
@@ -274,7 +274,11 @@
                         description: command['description']
                         examples: command['langs']['js']['examples']

-            parents = command['parent']?.split(' | ')
+            if command['parent']?
+                parents = command['parent']?.split(' | ')
+            else
+                parents = [null]
+
             if parents?
                 for parent in parents
                     if parent is null


making migration code work with 9.4

making migration code work with 9.4


Add Chat js handling logic

Add Chat js handling logic

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

--- app/assets/javascripts/interaction_web_tools/app.coffee
+++ app/assets/javascripts/interaction_web_tools/app.coffee
@@ -0,0 +1,12 @@
+window.InteractionWebTools ||= {}
+window.InteractionWebTools.chat = new Chat
+
+$ ->
+  InteractionWebTools.chat.receiveMessages()
+
+$(document).on 'submit', 'form.chat-message-form', (e) ->
+  e.preventDefault()
+  input = $(@).find 'input[name=content]'
+  InteractionWebTools.chat.sendMessage input.val()
+  input.val ''
+  false


Remove console log statement

Remove console log statement

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


Use getCookie for new Auth.

Use getCookie for new Auth.

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


The globulars are coming!

The globulars are coming!

*facepalm*

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


client: add css class for contenteditable fix

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


Fix kd.noop typo, remove not used variable assignment


Bugfix: removed unnecessary whitespaces

Bugfix: removed unnecessary whitespaces

--- src/scripts/wunderground.coffee
+++ src/scripts/wunderground.coffee
@@ -5,8 +5,7 @@
 #   None
 #
 # Configuration:
-#  HUBOT_WUNDERGROUND_API_KEY Sign up at http://www.wunderground.com/weather/api/.
-#
+#   HUBOT_WUNDERGROUND_API_KEY Sign up at http://www.wunderground.com/weather/api/.
 #
 # Commands:
 #   hubot weather me <location> - short-term forecast


add a script to reset database

add a script to reset database

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

--- cleandb.coffee
+++ cleandb.coffee
@@ -0,0 +1,7 @@
+server = require './server'
+
+Tree.destroyAll ->
+    TodoList.destroyAll ->
+        Task.destroyAll ->
+            console.log "all data are deleted"
+            process.exit(0)


More work on error handling and making them visible to the user

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


Add Revue script

Add Revue script

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

--- scripts/revue.coffee
+++ scripts/revue.coffee
@@ -0,0 +1,42 @@
+# Description
+#   Easily add links and images to your Revue weekly digest
+#
+# Dependencies:
+#   None
+#
+# Configuration:
+#   HUBOT_REVUE_ACCESS_TOKEN
+#
+# Commands:
+#   hubot add link <url> - Adds the url <url> as a link to your weekly digest
+#   hubot add image <image> - Adds the image <url> as an image to your weekly digest
+#
+# Notes:
+#   Eat, sleep, curate, repeat (weekly)
+#
+# Author:
+#   martijndekuijper
+
+config =
+  access_token: process.env.HUBOT_REVUE_ACCESS_TOKEN
+
+module.exports = (robot) ->
+  robot.respond /revue add (link|image) ([^ ]+)/i, (msg) ->
+    type = msg.match[1]
+    link = msg.match[2]
+
+    unless config.access_token
+      msg.send "Please set the HUBOT_REVUE_ACCESS_TOKEN environment variable."
+      return
+
+    data = "type=#{type}&url=#{escape(link)}&via=slack"
+
+    robot.http("http://www.getrevue.co/api/add_item")
+      .headers('x-revue-token': config.access_token, "Content-type": "application/x-www-form-urlencoded")
+      .post(data) (err, res, body) ->
+        json = JSON.parse(body)
+        if err || res.statusCode is 403 || res.statusCode is 422
+          msg.reply json.error
+          return
+
+        msg.reply "That is one awesome #{type}, I've added it to your weekly digest"


Append the next/prev controls in one fell swoop.


Added API for getting github status

Added API for getting github status

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

--- src/scripts/github-status.coffee
+++ src/scripts/github-status.coffee
@@ -0,0 +1,28 @@
+# Description:
+#   A way to interact with the Google Images API.
+#
+# Commands:
+#   hubot image me <query> - The Original. Queries Google Images for <query> and returns a random top result.
+#   hubot animate me <query> - The same thing as `image me`, except adds a few parameters to try to return an animated GIF instead.
+#   hubot mustache me <url> - Adds a mustache to the specified URL.
+#   hubot mustache me <query> - Searches Google Images for the specified query and mustaches it.
+
+module.exports = (robot) ->
+  robot.respond /(github|gh)( (status|st))?/i, (msg) ->
+    getStatus msg, (status) ->
+      msg.send status
+
+getStatus = (msg) ->
+  msg.http('https://status.github.com/api/last-message.json')
+    .get() (err, res, body) ->
+      result = JSON.parse(body)
+      cb "#{result.body} as of #{formatDate(new Date(result.created_on))}"
+
+formatDate = (date) ->
+  year = date.getFullYear()
+  month = date.getMonth()+1
+  day = date.getDate()
+  hour = date.getHours()
+  minute = date.getMinutes()
+  second = date.getSeconds()
+  return "#{hour}#{minute} on #{month} #{day}, #{year}"


Add main.coffee

Add main.coffee

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


bug fix

bug fix


Update pl.coffee

Update pl.coffee

Translated one tag which I earlier missed, edited the more_about_X tags to make them shorter and solve the unneeded line splitting which occured where they were displayed.

--- app/locale/pl.coffee
+++ app/locale/pl.coffee
@@ -416,7 +416,7 @@
     join_desc_4: ", a dowiesz się wszystkiego!"
     join_url_email: "Napisz do nas"
     join_url_hipchat: "publicznego pokoju HipChat"
-    more_about_archmage: "Dowiedz się więcej na temat stawania się Arcymagiem"
+    more_about_archmage: "Dowiedz się więcej o stawaniu się Arcymagiem"
     archmage_subscribe_desc: "Otrzymuj e-maile dotyczące nowych okazji programistycznych oraz ogłoszeń."
     artisan_summary_pref: "Chcesz projektować poziomy i rozwijać arsenał CodeCombat? Ludzie grają w dostarczane przez nas zasoby szybciej, niż potrafimy je tworzyć! Obecnie, nasz edytor jest dosyć niemrawy więc czuj się ostrzeżony - tworzenie poziomów przy jego pomocy może być trochę wymagające i zbugowane. Jeśli masz wizję nowych kampanii, od pętli typu for do"
     artisan_summary_suf: ", ta klasa jest dla ciebie."
@@ -441,15 +441,15 @@
     adventurer_join_suf: "więc jeśli wolałbyś być informowany w ten sposób, zarejestruj się na nich!"
     more_about_adventurer: "Dowiedz się więcej o stawaniu się Podróżnikiem"
     adventurer_subscribe_desc: "Otrzymuj e-maile, gdy pojawią się nowe poziomy do tesotwania."
-    scribe_summary_pref: "Codecombat nie będzie tylko zbieraniną poziomów. Będzie też źródłem wiedzy programistycznej, na której gracze będą mogli sie opierać. Dzięki temu, każdy z Rzemieślników będzie mógł podać link do szczegółowego artykułu, który pomoże graczowi: dokumentacji w stylu zbudowanej przez "
-#    scribe_summary_suf: " has built. If you enjoy explaining programming concepts, then this class is for you."
+    scribe_summary_pref: "Codecombat nie będzie tylko zbieraniną poziomów. Będzie też źródłem wiedzy programistycznej, na której gracze będą mogli sie opierać. Dzięki temu, każdy z Rzemieślników będzie mógł podać link do szczegółowego artykułu, który pomoże graczowi: dokumentacji w stylu "
+    scribe_summary_suf: ". Jeśli lubisz wyjaśniać idee programistyczne, ta klasa jest dla ciebie."
     scribe_introduction_pref: "CodeCombat nie będzie tylko zbieraniną poziomów. Będzie też zawierać źródło wiedzy, wiki programistycznych idei, na której będzie można oprzeć poziomy. Dzięki temu, każdy z Rzemieślników zamiast opisywać ze szczegółami, czym jest operator porónania, będzie mógł po prostu podać graczowi w swoim poziomie link do artykułu opisującego go. Mamy na myśli coś podobnego do "
     scribe_introduction_url_mozilla: "Mozilla Developer Network"
-    scribe_introduction_suf: " . Jeśli twoją definicją zabawy jest artykułowanie idei programistycznych przy pomocy składni Markdown, ta klasa może być dla ciebie."
+    scribe_introduction_suf: ". Jeśli twoją definicją zabawy jest artykułowanie idei programistycznych przy pomocy składni Markdown, ta klasa może być dla ciebie."
     scribe_attribute_1: "Umiejętne posługiwanie się słowem to właściwie wszystko, czego potrzebujesz. Nie tylko gramatyka i ortografia, ale również umiejętnośc tłumaczenia trudnego materiału innym."
     contact_us_url: "Skontaktuj się z nami"
     scribe_join_description: "powiedz nam coś o sobie, swoim doświadczeniu w programowaniu i rzeczach, o których chciałbyś pisać, a chętnie to z tobą uzgodnimy!"
-    more_about_scribe: "Dowiedz się więcej na temat stawania się Skrybą"
+    more_about_scribe: "Dowiedz się więcej o stawaniu się Skrybą"
     scribe_subscribe_desc: "Otrzymuj e-maile na temat ogłoszeń dotyczących pisania artykułów."
     diplomat_summary: "W krajach nieanglojęzycznych istnieje wielkie zainteresowanie CodeCombat! Szukamy tłumaczy chętnych do poświęcenia swojego czasu na tłumaczenie treści strony, aby CodeCombat było dostępne dla całego świata tak szybko, jak to tylko możliwe. Jeśli chcesz pomóc w sprawieniu, by CodeCombat było prawdziwie międzynarodowe, ta klasa jest dla ciebie."
     diplomat_introduction_pref: "Jeśli dowiedzieliśmy jednej rzeczy z naszego "
@@ -459,7 +459,7 @@
     diplomat_join_pref_github: "Znajdź plik lokalizacyjny dla wybranego języka "
     diplomat_github_url: "na GitHubie"
     diplomat_join_suf_github: ", edytuj go online i wyślij pull request. Do tego, zaznacz kratkę poniżej, aby być na bieżąco z naszym międzynarodowym rozwojem!"
-    more_about_diplomat: "Dowiedz się więcej na temat stawania się Dyplomatą"
+    more_about_diplomat: "Dowiedz się więcej o stawaniu się Dyplomatą"
     diplomat_subscribe_desc: "Otrzymuj e-maile na temat postępów i18n i poziomów do tłumaczenia."
     ambassador_summary: "Staramy się zbudować społeczność, a każda społeczność potrzebuje zespołu wsparcia, kiedy pojawią się kłopoty. Mamy czaty, e-maile i strony w sieciach społecznościowych, aby nasi użytkownicy mogli zapoznać się z grą. Jeśli chcesz pomóc ludziom w tym, jak do nas dołączyć, dobrze się bawić, a do tego poznać tajniki programowania, ta klasa jest dla ciebie."
     ambassador_introduction: "Oto społeczność, którą budujemy, a ty jesteś jej łącznikiem. Mamy czaty, e-maile i strony w sieciach społecznościowych oraz wielu ludzi potrzebujących pomocy w zapoznaniu się z grą oraz uczeniu się za jej pomocą. Jeśli chcesz pomóc ludziom, by do nas dołączyli i dobrze się bawili oraz mieć pełne poczucie tętna CodeCombat oraz kierunku, w którym zmierzamy, ta klasa może być dla ciebie."
@@ -475,7 +475,7 @@
     counselor_attribute_1: "Doświadczenie, w którymkolwiek z powyższych obszarów lub czymś, co uważasz za pomocne."
     counselor_attribute_2: "Trochę wolnego czasu"
     counselor_join_desc: "powiedz nam coś o sobie, o tym, czego dokonałeś i jak chciałbyś nam pomóc. Dodamy cię do naszej listy kontaktów i damy ci znać, kiedy będziemy potrzebować twojej pomocy (nie za często)."
-    more_about_counselor: "Dowiedz się więcej na temat stawania się Opiekunem"
+    more_about_counselor: "Dowiedz się więcej o stawaniu się Opiekunem"
     changes_auto_save: "Zmiany zapisują się automatycznie po kliknięci kratki."
     diligent_scribes: "Nasi pilni Skrybowie:"
     powerful_archmages: "Nasi potężni Arcymagowie:"


Update ru.coffee

Update ru.coffee

--- app/locale/ru.coffee
+++ app/locale/ru.coffee
@@ -38,7 +38,7 @@
     accessible_to: "Доступно для"
     everyone: "каждого"
     democratizing: "Демократизация процесса обучения программированию лежит в основе нашей философии. Каждый должен иметь возможность обучаться программированию."
-#    forgot_learning: "I think they actually forgot that they were actually learning something."
+    forgot_learning: "Я думаю, что они забудут, что они действительно что-то изучают."
 #    wanted_to_do: " Coding is something I've always wanted to do, and I never thought I would be able to learn it in school."
 #    why_games: "Why is learning through games important?"
 #    games_reward: "Games reward the productive struggle."