Do not depend on coffee-script in the versions plugin as it is never used

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/adoyle-h/nesh.git/'


Use request helper in Featured class

Use request helper in Featured class

--- src/featured.coffee
+++ src/featured.coffee
@@ -1,9 +1,9 @@
 _ = require 'underscore-plus'
 optimist = require 'optimist'
-request = require 'request'

 Command = require './command'
 config = require './config'
+request = require './request'
 tree = require './tree'

 module.exports =
@@ -32,7 +32,6 @@
     requestSettings =
       url: "#{config.getAtomPackagesUrl()}/featured"
       json: true
-      proxy: process.env.http_proxy || process.env.https_proxy
     requestSettings.qs = engine: atomVersion if atomVersion

     request.get requestSettings, (error, response, body={}) ->


commit

commit

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


changed to raw JInvitationRequests queries instead of group.fetchInvitationRequests for time being

--- client/landing/app/Applications/Groups.kdapplication/Views/groupsinvitationtabpaneview.coffee
+++ client/landing/app/Applications/Groups.kdapplication/Views/groupsinvitationtabpaneview.coffee
@@ -72,7 +72,7 @@
     pane  ?= @parent
     status = @options.unresolvedStatuses
     status = $in: status  if Array.isArray status
-    @getData().countInvitationRequests {}, {status}, (err, count)->
+    KD.remote.api.JInvitationRequest.count {status}, (err, count)->
       pane.getHandle().updatePendingCount count  unless err

   setStatusesByResolvedSwitch:(@resolvedState)->


feat: don't delete component configuration, it is performed by writer

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


[add] [web] Added 'coins' to the web changelog parser

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


fall back to far future max-age for responses with no cache-control

Fixing this:

https://img.skitch.com/20120413-f96b7h1h4gic7pug79kb4ittck.png

--- server.coffee
+++ server.coffee
@@ -67,7 +67,7 @@
       else
         newHeaders =
           'content-type'           : srcResp.headers['content-type']
-          'cache-control'          : srcResp.headers['cache-control']
+          'cache-control'          : srcResp.headers['cache-control'] || 'public, max-age=31536000'
           'content-length'         : content_length
           'Camo-Host'              : camo_hostname
           'X-Content-Type-Options' : 'nosniff'


setting contants

setting contants

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

--- app/scripts/config/constants.coffee
+++ app/scripts/config/constants.coffee
@@ -0,0 +1,9 @@
+window.Cobudget.Config.Constants =
+  {
+    environment: 'development'
+    apiEndpoint: 'http://127.0.0.1:9292/cobudget'
+    googClient: 'google client'
+    googApiKey: 'google api key'
+  }
+
+


This factory is used to load case data

This factory is used to load case 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/GregDesplaces/classe-1914.git/'


Log errors when updating device info.

Log errors when updating device info.

--- src/application.coffee
+++ src/application.coffee
@@ -311,6 +311,8 @@
 				customOptions:
 					apikey: apiKey
 			)
+	.catch (error) ->
+		utils.mixpanelTrack('Device info update failure', {error, body})

 cleanupContainersAndImages = ->
 	knex('app').select()


Move the REGISTRY_ENDPOINT into an env var.

--- src/application.coffee
+++ src/application.coffee
@@ -10,7 +10,6 @@
 JSONStream = require 'JSONStream'
 PlatformAPI = require 'resin-platform-api/request'

-REGISTRY_ENDPOINT = 'registry.resin.io'
 DOCKER_SOCKET = '/run/docker.sock'
 PLATFORM_ENDPOINT = url.resolve(process.env.API_ENDPOINT, '/ewa/')
 resinAPI = new PlatformAPI(PLATFORM_ENDPOINT)
@@ -115,7 +114,7 @@
 					for envVar in app.environment_variable
 						env[envVar.name] = envVar.value
 				return {
-					imageId: "#{REGISTRY_ENDPOINT}/#{path.basename(app.git_repository, '.git')}/#{app.commit}"
+					imageId: "#{pocess.env.REGISTRY_ENDPOINT}/#{path.basename(app.git_repository, '.git')}/#{app.commit}"
 					env: env
 				}


Set download_progress to 0 when beginning download

--- src/application.coffee
+++ src/application.coffee
@@ -129,7 +129,7 @@
 	docker.getImage(app.imageId).inspectAsync()
 	.catch (error) ->
 		logSystemEvent(logTypes.downloadApp, app)
-		device.updateState(status: 'Downloading')
+		device.updateState(status: 'Downloading', download_progress: 0)
 		dockerUtils.fetchImageWithProgress app.imageId, (progress) ->
 			device.updateState(download_progress: progress.percentage)
 		.then ->


add a context menu API for firefox UI elements

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

--- lib/contextmenu.coffee
+++ lib/contextmenu.coffee
@@ -0,0 +1,146 @@
+# Base class for everything concerning context menus
+# @abstract
+class MenuObjectBase
+  # Namespace URI for XUL
+  # @private
+  @NS_XUL : 'http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul'
+
+  # Creates a XUL element
+  #
+  # @param [Document] doc The document where the element should be created
+  # @param [String] tag The tag name (no namespace prefix)
+  # @param [Object] attributes An object with attributes for the element
+  # @param [Element[]] children Child elements to add to the created element
+  #
+  # @return [Element] the newly created DOM element
+  createElement : (doc, tag, attributes = {}, children = []) =>
+    element = doc.createElementNS(@constructor.NS_XUL, tag)
+    element.setAttribute(key, value) for key, value of attributes
+    element.appendChild(child) for child in children
+    element
+
+  # Sets supplied options on the instance
+  #
+  # @param [Object] available An object with supported options and their default values
+  # @param [Object] actual An object containing the actually supplied options
+  applyOptions : (available, actual) =>
+    for option, defaultValue of available
+      @[option] = if actual.hasOwnProperty(option) then actual[option] else defaultValue
+
+  # Builds the DOM for the menu object
+  # @abstract
+  #
+  # @param [Document] doc The DOM document where the object should be built
+  #
+  # @return [Element] The DOM element representing the menu object
+  build : (doc) =>
+
+# Base class for menus
+# @abstract
+class MenuBase extends MenuObjectBase
+  # The items contained in the menu
+  items : []
+
+  # Appends an item to the menu
+  #
+  # @param [MenuItem,SubMenu,MenuSeparator] item The item to append
+  append : (item) =>
+    @items.push(item)
+
+  # Inserts an item into the menu
+  #
+  # @param [Integer] index The index where the item should be inserted
+  # @param [MenuItem,SubMenu,MenuSeparator] item The item to insert
+  insert : (index, item) =>
+    @items[index...index] = [item]
+
+  build : (doc) =>
+    @createElement(doc, 'menupopup', {}, item.build(doc) for item in @items)
+
+# Represents a simple item in a menu
+class MenuItem extends MenuObjectBase
+  @available_options : { disabled: false, checked: false, image: '', action: undefined }
+
+  # Creates a new menu item
+  #
+  # @param [String] label The display label for the item
+  # @param [Object] options Further options for the item
+  #
+  # @option options [Boolean] disabled True to disable the item
+  # @option options [Boolean] checked True to display a check mark next to the item
+  # @option options [String] image The URI of an icon to display next to the item
+  # @option options [Function] action A callback to be called when the item is selected
+  constructor : (@label, options = {}) ->
+    @applyOptions(@constructor.available_options, options)
+
+  build : (doc) =>
+    element = @createElement(doc, 'menuitem', { label: @label, disabled: @disabled, checked: @checked, image: @image })
+    element.addEventListener("click", @action) if @action?
+    element
+
+# Represents a menu item containing a sub menu
+class SubMenu extends MenuBase
+  # Creates a new sub menu
+  #
+  # @param [String] label The sub menu's display label
+  # @param [Array] items The items the sub menu will contain
+  constructor : (@label, @items = []) ->
+
+  build : (doc) =>
+    @createElement(doc, 'menu', { label: @label }, [ super(doc) ])
+
+# Represents a item separator element
+class MenuSeparator extends MenuObjectBase
+  build : (doc) =>
+    @createElement(doc, 'menuseparator')
+
+# Represents a context menu for firefox UI elements
+class ContextMenu extends MenuBase
+  # A menu item representing a separator
+  @Separator : new MenuSeparator
+
+  @instance_counter : 0
+
+  # Creates a new context menu
+  #
+  # @param [Array] items The items the menu will contain
+  constructor : (@items = []) ->
+    @id = 'feedticker_context_menu_custom__instance' + @constructor.instance_counter++
+
+  # Attaches the context menu to a firefox UI element
+  #
+  # @param [String] id The XUL document ID of the element
+  # @param [nsIDOMWindow] window The window where the element resides. Omit or set
+  #   to null to attach the menu to all items with the given ID in all currently opened browser windows.
+  # @param [Boolean] forceUpdate Whether or not the menu should be re-created in windows
+  #   where it already exists. Set to true if you made change to the menu or its items
+  #   and want them to take effect.
+  attach : (id, window = null, forceUpdate = false) =>
+    if window?
+      @create(window.document, forceUpdate)
+      window.document.getElementById(id)?.setAttribute('context', @id)
+    else
+      @attach(id, viewFor(win)) for win in browserWindows
+
+  # Creates the menu's XUL DOM structure
+  # @private
+  #
+  # @param [Document] doc The XUL document where the menu should be created
+  # @param [Boolean] forceUpdate Whether or not the menu should be re-created if it already exists.
+  create : (doc, forceUpdate = false) =>
+    oldMenu = doc.getElementById(@id)
+    if forceUpdate || !oldMenu?
+      [menu, mainPopupSet] = [@build(doc), doc.getElementById('mainPopupSet')]
+      if oldMenu?
+        mainPopupSet.replaceChild(menu, oldMenu)
+      else
+        mainPopupSet.appendChild(menu)
+
+  build : (doc) =>
+    element = super(doc)
+    element.setAttribute('id', @id)
+    element
+
+exports.ContextMenu = ContextMenu
+exports.MenuItem = MenuItem
+exports.SubMenu = SubMenu


:lipstick: lib/copy-dialog.coffee

:lipstick: lib/copy-dialog.coffee

--- lib/copy-dialog.coffee
+++ lib/copy-dialog.coffee
@@ -23,8 +23,8 @@
       @showError("'#{newPath}' already exists.")
       return

-    directoryPath = path.dirname(newPath)
     activeEditor = atom.workspace.getActiveEditor()
+    activeEditor = null unless activeEditor?.getPath() is @initialPath
     try
       if fs.isDirectorySync(@initialPath)
         fs.copySync(@initialPath, newPath)
@@ -34,8 +34,8 @@
             if not error?
               atom.workspace.open newPath,
                 activatePane: true
-                initialLine: activeEditor?.getCursor()?.getBufferRow()
-                initialColumn: activeEditor?.getCursor()?.getBufferColumn()
+                initialLine: activeEditor?.getCursor()?.getBufferRow() ? 0
+                initialColumn: activeEditor?.getCursor()?.getBufferColumn() ? 0
             else
               throw error
       if repo = atom.project.getRepo()


Descriptions and code simplfy

Descriptions and code simplfy

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


terminal: append key input inside of outputbox to receive key events


remove comments

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


Passengers Bios

Passengers Bios

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


client: don't show error if shorten url fails


append git hash to version for dev builds

--- build/tasks/set-version-task.coffee
+++ build/tasks/set-version-task.coffee
@@ -7,14 +7,16 @@
   getVersion = (callback) ->
     onBuildMachine = process.env.JANKY_SHA1 and process.env.JANKY_BRANCH is 'master'
     inRepository = fs.existsSync(path.resolve(__dirname, '..', '..', '.git'))
+    {version} = require(path.join(grunt.config.get('atom.appDir'), 'package.json'))
     if onBuildMachine or not inRepository
-      {version} = require(path.join(grunt.config.get('atom.appDir'), 'package.json'))
       callback(null, version)
     else
       cmd = 'git'
       args = ['rev-parse', '--short', 'HEAD']
       spawn {cmd, args}, (error, {stdout}={}, code) ->
-        callback(error, stdout?.trim?())
+        commitHash = stdout?.trim?()
+        combinedVersion = "#{version}-#{commitHash}"
+        callback(error, combinedVersion)

   grunt.registerTask 'set-version', 'Set the version in the plist and package.json', ->
     done = @async()


Added a view for viewing and editing single recipes.

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

--- src/Views/RecipeView.coffee
+++ src/Views/RecipeView.coffee
@@ -0,0 +1,67 @@
+# The recipe view. Rendered in #main
+
+class RecipeView extends Backbone.View
+	id: "recipe"
+
+	events: {
+		"click #editRecipe":	"edit"
+		"click #cancelEdit":	"render"
+		"click #saveEdits":		"save"
+	}
+
+	initialize: =>
+		@recipe = @options
+		@$el.removeAttr("ingredients")
+		@$el.removeAttr("title")
+		@$el.removeAttr("instructions")
+		@$el.removeAttr("tags")
+
+
+	# Mutates view state
+	# return: a recipe element
+	render: =>
+		view = @make_view()
+		@$el.html view
+		view
+
+	# Mutates view state
+	edit: =>
+		editable = @make_editable()
+		@$el.html editable
+		editable
+
+	save: =>
+		console.log "Save me!"
+
+
+	# return: a uneditable version of the view
+	make_view: ->
+		editbtn = 		"
Edit
"
+		heading = 		"
#{@recipe.get("title")}
"
+		ingredients = 	"

+
Ingredients

+							#{@recipe.get("ingredients")}
+
"
+		instructions = 	"

+
Instructions

+					      #{@recipe.get("instructions")}
+
"
+		editbtn + heading + ingredients + instructions
+
+
+	# return: an editable version of the view
+	make_editable: ->
+		editbtn = 		"
Save

+
Cancel
"
+		heading = 		"<input type='text' class='recipe-title' name='title' value='#{@recipe.get("title")}'></input>"
+		ingredients = 	"

+
Ingredients

+							<textarea>#{@recipe.get("ingredients").replace(/
/g, '\n')}</textarea>
+
"
+		instructions = 	"

+
Instructions

+					      <textarea>#{@recipe.get("instructions").replace(/
/g, '\n')}</textarea>
+
"
+		editbtn + heading + ingredients + instructions
+
+


trying to fix ng-include II.

trying to fix ng-include II.

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


limit inline image to 100% width

limit inline image to 100% width

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


client: remove teams/AppView

client: remove teams/AppView

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

--- client/teams/lib/teamsappview.coffee
+++ client/teams/lib/teamsappview.coffee
@@ -1,129 +0,0 @@
-kd              = require 'kd'
-JView           = require 'app/jview'
-remote          = require 'app/remote'
-
-module.exports = class TeamsAppView extends kd.CustomHTMLView
-
-  JView.mixin @prototype
-
-  constructor: (options = {}, data) ->
-
-    super options, data
-
-    { mainController, router } = kd.singletons
-
-    @soon = new kd.CustomHTMLView
-      cssClass : 'ribbon'
-      partial  : 'Coming Soon!'
-
-    @thanks = new kd.CustomHTMLView
-      cssClass : 'ribbon hidden'
-      partial  : 'Thank You!'
-
-    @comingSoon = new kd.CustomHTMLView
-      cssClass : 'ribbon hidden'
-      partial  : 'Coming Soon!'
-
-    @header = new MainHeaderView
-      headerLogo : teamsLogo
-      cssClass   : 'hasNotTeamAccess'
-      navItems  : [
-        { title : 'Koding University', href : 'https://koding.com/docs',  name : 'about' }
-        { title : 'Features',          href : '/Features',                name : 'features' }
-      ]
-
-    @title = new kd.CustomHTMLView
-      tagName : 'h1'
-      partial : 'Announcing Koding for Teams!'
-
-    @subTitle = new kd.CustomHTMLView
-      tagName  : 'h2'
-      partial  : 'Imagine your-company.koding.comyour-university.koding.comyour-class.koding.comyour-project.koding.com'
-
-    @button = new kd.ButtonView
-      title       : 'Sign up for early access'
-      style       : 'solid medium green'
-      attributes  : { testpath : 'signup-company-button-loggedin' }
-      callback    : =>
-
-        { JUser } = remote.api
-
-        JUser.fetchUser (err, user) =>
-
-          if not user or err
-            return new KDNotificationView
-              title    : 'Something went wrong, please try again later!'
-              duration : 3000
-
-          $.ajax
-            url        : '/-/teams/early-access'
-            data       :
-              campaign : 'teams-early-access'
-              email    : user.email
-            type       : 'POST'
-            success    : @bound 'earlyAccessSuccess'
-            error      : @bound 'earlyAccessFailure'
-
-
-    @features = new kd.CustomHTMLView
-      tagName : 'ul'
-      partial : """
-
Reduce setup time for new team members.

-
Treat your infrastructure as code. Easy to manage and even easier to upgrade!

-
Predefine the compute resources that your team should have.

-
Collaborate using video/audio without the need to install anything!

-
Most cloud-providers are supported so you can use your existing infrastructure.

-
Integrate common services like GitHub, Pivotal, Asana, etc. into your Koding environment.

-
Learn more on our blog.

-        """
-
-    @soon.hide()
-    @animateTargets()
-
-
-
-  earlyAccessFailure: ({ responseText }) ->
-
-    if responseText is 'Already applied!'
-      responseText = 'Thank you! We\'ll let you know when we launch it!'
-      @$('form').hide()
-      @soon.hide()
-      @thanks.show()
-
-    new kd.NotificationView
-      title    : responseText
-      duration : 3000
-
-
-  earlyAccessSuccess: ->
-
-    @$('form').hide()
-    @soon.hide()
-    @thanks.show()
-    new kd.NotificationView
-      title    : "We'll let you know when we launch it!"
-      duration : 3000
-
-
-  animateTargets: ->
-
-    $els = @subTitle.$('span i')
-    i    = 0
-    kd.utils.repeat 2000, ->
-      $els.css 'opacity', 0
-      $els[i].style.opacity = 1
-      i = if i is $els.length - 1 then 0 else i + 1
-
-
-  pistachio: ->
-
-    """
-

-      {{> @title}}
-      {{> @subTitle}}
-      <form class='TeamsModal--middle login-form'>{{> @button}}</form>
-      {{> @soon}}
-      {{> @thanks}}
-      {{> @features}}
-

-    """


Implement acquisition of information, issue #2

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/Hiroto-K/MP3-Downloader.git/'


Autosave drafts

Autosave drafts

--- client/app/components/compose.coffee
+++ client/app/components/compose.coffee
@@ -188,6 +188,11 @@
                 div className: 'clearfix', null

     _initCompose: ->
+
+        if @_saveInterval
+            window.clearInterval @_saveInterval
+        @_saveInterval = window.setInterval @_autosave, 30000
+
         # scroll compose window into view
         @getDOMNode().scrollIntoView()
         if @state.composeInHTML
@@ -224,6 +229,8 @@
                               document.documentElement.msMatchesSelector

                         target = document.getSelection().anchorNode
+                        if !target?
+                            return
                         if matchesSelector? and not matchesSelector.call(target, '.rt-editor blockquote *')
                             # we are not inside a blockquote, nothing to do
                             return
@@ -328,6 +335,17 @@
     #componentDidUpdate: ->
     #    @_initCompose()

+    componentWillUnmount: ->
+        if @_saveInterval
+            window.clearInterval @_saveInterval
+        if @state.isDraft and @state.id?
+            if not window.confirm(t 'compose confirm keep draft')
+                MessageActionCreator.delete @state.id, (error) =>
+                    if error?
+                        LayoutActionCreator.alertError "#{t("message action delete ko")} #{error}"
+                    else
+                        LayoutActionCreator.notify t('compose draft deleted')
+
     getInitialState: (forceDefault) ->

         # edition of an existing draft
@@ -418,7 +436,7 @@
                 if error?
                     LayoutActionCreator.alertError "#{msgKo} :  error"
                 else
-                    LayoutActionCreator.alertSuccess msgOk
+                    LayoutActionCreator.notify msgOk
                     @setState message

                     if callback?
@@ -427,6 +445,9 @@
                         # mail sent close the pane
                         @redirect @buildClosePanelUrl @props.layout

+
+    _autosave: ->
+        @_doSend true

     onDelete: (args) ->
         if window.confirm(t 'mail confirm delete')


Save draft as soon as it is opened, refs #347


Update column in financial table example

--- app/data/ember_table/treedata.coffee
+++ app/data/ember_table/treedata.coffee
@@ -3312,8 +3312,7 @@
       "template_id": "personal_value_factor"
     },
     {
-      "display_name": "Sector",
-      # "display_name": "Adjusted Value 11/1/2011 (USD)",
+      "display_name": "Adjusted Value 11/1/2012 (USD)",
       "is_time_series": false,
       "template_id": "personal_value_factor"
     },


Guard against null package in featured array

--- src/featured.coffee
+++ src/featured.coffee
@@ -34,11 +34,11 @@
       json: true
     requestSettings.qs = engine: atomVersion if atomVersion

-    request.get requestSettings, (error, response, body={}) ->
+    request.get requestSettings, (error, response, body=[]) ->
       if error?
         callback(error)
       else if response.statusCode is 200
-        packages = body.filter (pack) -> pack.releases?.latest?
+        packages = body.filter (pack) -> pack?.releases?.latest?
         packages = packages.map ({readme, metadata, downloads}) -> _.extend({}, metadata, {readme, downloads})
         packages = _.sortBy(packages, 'name')
         callback(null, packages)


[added] 'this.get()' and 'this.set()' snippents

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 `currency_formatter`

Add `currency_formatter`

error: pathspec 'lib/twitter_cldr/js/mustache/numbers/formatters/currency_formatter.coffee' did not match any file(s) known to git

--- lib/twitter_cldr/js/mustache/numbers/formatters/currency_formatter.coffee
+++ lib/twitter_cldr/js/mustache/numbers/formatters/currency_formatter.coffee
@@ -0,0 +1,29 @@
+# Copyright 2012 Twitter, Inc
+# http://www.apache.org/licenses/LICENSE-2.0
+
+class TwitterCldr.NumberFormatter extends TwitterCldr.NumberFormatter
+  format : (tokens, number, options = {}) ->
+    if !options["currency"]?
+      options["currency"] = "USD"
+    currency = Twitter.Currencies.for_code(options["currency"])
+    currency ||= {
+      'currency'    : options['currency'],
+      'symbol'      : options['currency'],
+      'cldr_symbol' : options['currency']
+    }
+
+    # overwrite with explicit symbol if given
+    currency['symbol'] = options['symbol'] if options['symbol']
+
+    digits_and_rounding = @get_resource(options['currency'])
+    options['precision'] ||= @digits_and_rounding['digits']
+    options['rounding'] ||= @digits_and_rounding['rounding']
+
+    symbol = options['use_cldr_symbol'] ? currency['cldr_symbol'] : currency['symbol']
+    symbol ||= (currency['currency'] + "")
+    super.gsub('¤', symbol) # TODO verify this
+
+  resource = {}
+
+  get_resource (code) ->
+    @resource[code + ""] || @resource["DEFAULT"]


add addColor and removeColor functions, add prototype shortcuts

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


Remove setCover, fix function name

Remove setCover, fix function name

--- resources/assets/coffee/_classes/current-user-observer.coffee
+++ resources/assets/coffee/_classes/current-user-observer.coffee
@@ -17,39 +17,35 @@
 ###
 class @CurrentUserObserver
   constructor: ->
-    @currentUserCovers = document.getElementsByClassName('js-current-user-cover')
+    @covers = document.getElementsByClassName('js-current-user-cover')

     @observer = new MutationObserver (mutations) =>
       for mutation in mutations
         for nodes in mutation.addedNodes
           for node in nodes
             if node.classList.has 'js-current-user-cover'
-              @setCover node
+              @setCovers [node]
             else
               @setCovers node.getElementsByClassName('js-current-user-cover')

     $.subscribe 'user:update', @setData
-    $(document).on 'turbolinks:load', @initCovers
+    $(document).on 'turbolinks:load', @reinit

-  initCovers: =>
+  reinit: =>
     @setCovers()
-
-
-  setCover: (el) =>
-    url = if currentUser.id? then "url('#{currentUser.cover.url}')"
-
-    el.style.backgroundImage = url

   setCovers: (elements) =>
     if !elements?
-      elements = @currentUserCovers
+      elements = @covers

-    @setCover(el) for el in elements
+    for el in elements
+      url = if currentUser.id? then "url('#{currentUser.cover.url}')"
+      el.style.backgroundImage = url

   setData: (_e, data) =>
     window.currentUser = data

-    @setCovers()
+    @reinit()


Add https test

Add https test

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

--- source/javascripts/tests/simple_cors_https.coffee
+++ source/javascripts/tests/simple_cors_https.coffee
@@ -0,0 +1,21 @@
+class SimpleCorsTest
+  constructor: ($http) ->
+    @result = "pending"
+    @display_name = "Simple CORS over HTTPS"
+    @$http = $http
+
+  run: ->
+    a = Math.floor((Math.random() * 100000) + 1)
+    b = Math.floor((Math.random() * 100000) + 1)
+    @$http(
+      method: "GET"
+      url: "https://corstest-api.coshx.com:4001/tests/simple_cors?a=#{a}&b=#{b}"
+    ).success((data, status, headers, config) =>
+      if data.sum == a+b
+        @result = "passed"
+      else
+        @result = "failed"
+    ).error (data, status, headers, config) =>
+      @result = "not implemented yet on server"
+
+CorsTest.all_tests.push(SimpleCorsTest)


notification: don't re-fetch stack machines

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

--- client/app/lib/notificationcontroller.coffee
+++ client/app/lib/notificationcontroller.coffee
@@ -118,13 +118,8 @@
       { stackId } = data

       storage.stacks.fetch '_id', stackId
-        .then (stack) ->
-          Promise.all stack.machines.map (machineId) ->
-            storage.machines.fetch '_id', machineId
-          .then (machines) -> { stack, machines }
-
-        .then ({ stack, machines }) =>
-          @emit 'DisabledUserStackAdded', { stack, machines }
+        .then (stack) => @emit 'DisabledUserStackAdded', { stack }
+        .catch (err) -> debug 'failed to fetch stack', stackId

       debug 'StackOwnerUpdated', data


Abstract out base Model and Collection

Abstract out base Model and Collection

This handles parsing the `_links` response data and adding them to a
local `urls` object.

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

--- coffee/cilantro/models/base.coffee
+++ coffee/cilantro/models/base.coffee
@@ -0,0 +1,39 @@
+define [
+    '../core'
+], (c) ->
+
+    class Model extends c.Backbone.Model
+        url: ->
+            if @isNew() then super else @urls.self
+
+        constructor: (attrs, options) ->
+            @urls = {}
+            super(attrs, options)
+
+        parse: (attrs, options) ->
+            if attrs? and attrs._links?
+                for name, link of attrs._links
+                    @urls[name] = link.href
+                delete attrs._links
+            return attrs
+
+
+    class Collection extends c.Backbone.Collection
+        model: Model
+
+        url: ->
+            if @isNew() then super else @urls.self
+
+        constructor: (attrs, options) ->
+            @urls = {}
+            super(attrs, options)
+
+        parse: (attrs, options) ->
+            if attrs? and attrs._links?
+                for name, link of attrs._links
+                    @urls[name] = link.href
+                delete attrs._links
+            return attrs
+
+
+    { Model, Collection }


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


Adds library for converting an expression to a string

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

--- math/expression_to_string_spec.coffee
+++ math/expression_to_string_spec.coffee
@@ -0,0 +1,13 @@
+#= require lib/math/expression_to_string
+
+describe "expression to string conversion", ->
+  it "converts a simple addition expression", ->
+    to_string = ttm.require("lib/math/expression_to_string").toString
+    builder = ttm.require("lib/math/build_expression_from_javascript_object").buildExpression
+    expect(to_string(builder(1, '+', 2))).toEqual "1 + 2"
+
+  it "converts an exponentiation to a string", ->
+    to_string = ttm.require("lib/math/expression_to_string").toString
+    builder = ttm.require("lib/math/build_expression_from_javascript_object").buildExpression
+    expect(to_string(builder('^': [1, 2]))).toEqual "1^2"
+


Draft implementation of the AUX services

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

--- library/membrane/aux.coffee
+++ library/membrane/aux.coffee
@@ -0,0 +1,121 @@
+###
+Copyright (c) 2013, Alexander Cherniuk <ts33kr@gmail.com>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+   list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+###
+
+_ = require "lodash"
+asciify = require "asciify"
+connect = require "connect"
+logger = require "winston"
+assert = require "assert"
+uuid = require "node-uuid"
+colors = require "colors"
+async = require "async"
+nconf = require "nconf"
+https = require "https"
+http = require "http"
+util = require "util"
+url = require "url"
+
+{Zombie} = require "../nucleus/zombie"
+{Duplex} = require "../membrane/duplex"
+{Screenplay} = require "./visual"
+
+# This definition stands for the compound that provides support
+# for auxiliary services. These services reside within the conext
+# of the parent services, restricted to the context of their own.
+# This compound handles the wiring of these services within the
+# intestines of the parent service that includes this component.
+module.exports.Auxiliaries = class Auxiliaries extends Screenplay
+
+    # This is a marker that indicates to some internal subsystems
+    # that this class has to be considered abstract and therefore
+    # can not be treated as a complete class implementation. This
+    # mainly is used to exclude or account for abstract classes.
+    @abstract yes
+
+    # This server side method is called on the context prior to the
+    # context being compiled and flushed down to the client site. The
+    # method is wired in an synchronous way for greater functionality.
+    # This is the place where you would be importing the dependencies.
+    prelude: (symbol, context, request, next) ->
+        assert auxiliaries = @constructor.aux() or {}
+        context.compression = no; routines = undefined
+        mapper = (f) -> routines = _.map auxiliaries, f
+        mapper (value, key, collection) -> (callback) ->
+            assert _.isObject ecc = context.caching = {}
+            assert _.isObject singleton = value.obtain()
+            assert _.isString qualified = "#{symbol}.#{key}"
+            assembler = singleton.assembleContext.bind singleton
+            assembler qualified, request, no, ecc, (assembled) ->
+                assert _.isObject context[key] = assembled
+                assert context.sources.push assembled.sources...
+                assert context.scripts.push assembled.scripts...
+                return callback undefined
+        return async.series routines, next
+
+    # Include an auxiliary service definition in this service. The
+    # definition should be an object whose keys correspond to the
+    # installation symbol of an auxiliary service and whose values
+    # are the actual auxiliary services. So that service `value` is
+    # installed in the parent under under a name defined by `key`.
+    @aux: (definition) ->
+        return @$aux if arguments.length is 0
+        noDefinition = "definition has to be object"
+        assert _.isObject(definition), noDefinition
+        assert @$aux = _.clone(@$aux or new Object)
+        _.each definition, (value, key, collection) =>
+            notAux = "not an auxiliary: #{value}"
+            wrongValue = "got invalid value: #{value}"
+            wrongKey = "invalid key supplied: #{key}"
+            assert _.isObject(value), wrongValue
+            assert not _.isEmpty(key), wrongKey
+            assert value.inherits(Auxiliary), notAux
+            return assert @$aux[key] = value
+
+# An abstract base class for all the auxiliary service definitions.
+# An auxiliary service base class is a chimera that extends from the
+# `Zombie` service in addition to the end user service: one of those
+# implementations. Be careful to consider that auxiliary services do
+# inherit the zombie behavior with all the respectful consequences.
+module.exports.Auxiliary = class Auxiliary extends Zombie
+
+    # This is a marker that indicates to some internal subsystems
+    # that this class has to be considered abstract and therefore
+    # can not be treated as a complete class implementation. This
+    # mainly is used to exclude or account for abstract classes.
+    @abstract yes
+
+    # These invocations establish the parameters which are going
+    # to be used for matching HTTP requests against this service.
+    # Typically an HTTP pathname pattern and a domain name pattern.
+    # Try not to put constraints on the domain, unless necessary.
+    # Also, the compounds for the composition system belong here.
+    @location: -> "/#{@uuid ?= uuid.v4()}/#{@identify()}"
+
+    # These invocations establish the parameters which are going
+    # to be used for matching HTTP requests against this service.
+    # Typically an HTTP pathname pattern and a domain name pattern.
+    # Try not to put constraints on the domain, unless necessary.
+    # Also, the compounds for the composition system belong here.
+    @compose Duplex


namespaced Movable

namespaced Movable

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

--- src/ageable.coffee
+++ src/ageable.coffee
@@ -0,0 +1,39 @@
+###*
+The Rotatable module rotates the object
+based on its rotational velocity.
+
+

+player = GameObject
+  x: 0
+  y: 0
+  rotationalVelocity: Math.PI / 64
+
+player.I.rotation
+# => 0
+
+player.update(1)
+
+player.I.rotation
+# => 0.04908738521234052 # Math.PI / 64
+
+player.update(1)
+
+player.I.rotation
+# => 0.09817477042468103 # 2 * (Math.PI / 64)
+

+
+@name Rotatable
+@module
+@constructor
+@param {Object} I Instance variables
+@param {Core} self Reference to including object
+###
+Ageable = (I={}, self) ->
+  Object.reverseMerge I,
+    rotation: 0
+    rotationalVelocity: 0
+
+  self.bind 'update', (dt) ->
+    I.rotation += I.rotationalVelocity * dt
+
+  return {}


Change count of billable and nonbillable

Resolves: [#107291726]

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


log HTTP headers on invalid hostname

log HTTP headers on invalid hostname

 On branch master

	modified:   nodejs_server/lib/apprunner.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/FireworksProject/platform.y.git/'


More correct naming in helpers.createServer.

--- src/helpers.coffee
+++ src/helpers.coffee
@@ -146,11 +146,11 @@
             # these two items.
             0

-exports.startServer = (port = 3333, rootPath = '.', callback = (->)) ->
+exports.startServer = (port = 3333, path = '.', callback = (->)) ->
   server = express.createServer()
   server.configure ->
-    server.use express.static rootPath
-    server.set 'views', rootPath
+    server.use express.static path
+    server.set 'views', path
     server.set 'view options', layout: no
     server.register '.html', compile: (str, options) -> (locals) -> str
   server.get '/', (req, res) ->


pluginHelpers default to first joinTo file instead of last

#662

--- src/helpers.coffee
+++ src/helpers.coffee
@@ -153,7 +153,7 @@
         if vendorFiles.length > 0
           vendorFiles[0]
         else
-          destFiles.pop()
+          destFiles.shift()

   Object.freeze(joinConfig)


windows sucks

windows sucks

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


[add] A trace to 'error' event that doesn't help.

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


bump script

bump script

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


More database stupidity.

More database stupidity.

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


[collection] BaseCollection

[collection] BaseCollection

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

--- app/scripts/collections/base.coffee
+++ app/scripts/collections/base.coffee
@@ -0,0 +1,5 @@
+define [
+  'backbone'
+], (Backbone) ->
+
+  class BaseCollection extends Backbone.Collection


switch to KD.showError

switch to KD.showError

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


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/douggr/atom-project-manager.git/'


Added basic API function

Added basic API function

error: pathspec 'routes/api/v2/storageBuckets.coffee' did not match any file(s) known to git

--- routes/api/v2/storageBuckets.coffee
+++ routes/api/v2/storageBuckets.coffee
@@ -0,0 +1,66 @@
+Meteor.startup ->
+
+  if Meteor.isServer
+    _   = require 'lodash'
+    lib = require './lib.coffee'
+
+    formatStorageBucket = (sb) ->
+      console.log(sb)
+      id: sb._id
+      name: sb.name
+      create: sb.created
+
+    Router.map ->
+      @route 'api/v2/storageBuckets',
+        where: 'server'
+        path: '/api/v2/storageBuckets'
+      .get ->
+        lib.foundJson @response, 200, StorageBuckets.find().map formatStorageBucket
+
+      @route 'api/v2/storageBuckets/single',
+        where: 'server'
+        path: '/api/v2/storageBuckets/:name'
+      .get ->
+        check([@params.name], [String])
+        if (bucket = StorageBuckets.findOne name: @params.name)
+          lib.foundJson @response, 200, formatStorageBucket bucket
+        else lib.notFound @response
+      .delete ->
+        try
+          check([name = @params.name], [String])
+          Agent.deleteStorageBucket name
+          lib.foundJson @response, 200, { name: name }
+        catch e
+          lib.endWithError @response, 400, (e.message or e.error)
+      .put ->
+        args = [
+          name = @params.name
+        ]
+        try
+          check([name = @params.name], [String])
+          if (StorageBuckets.findOne(name: name))
+            lib.endWithError @response, 400, "Bucket exists"
+          else
+            Agent.createStorageBucket name
+            lib.foundJson @response, 200, { name: name }
+        catch e
+          lib.endWithError @response, 400, (e.message or e.error)
+
+      @route 'api/v2/storageBuckets/create',
+        where: 'server'
+        path: '/api/v2/storageBuckets/:name/:source'
+      .put ->
+        args = [
+          name = @params.name
+          source = @params.source
+        ]
+        try
+          check([name = @params.name], [String])
+          check([source = @params.source], [String])
+          if (StorageBuckets.findOne(name: name))
+            lib.endWithError @response, 400, "Bucket exists"
+          else
+            Agent.copyStorageBucket source, name
+            lib.foundJson @response, 200, { name: name }
+        catch e
+          lib.endWithError @response, 400, (e.message or e.error)


Added base Listener class

Added base Listener class

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

--- listener.coffee
+++ listener.coffee
@@ -0,0 +1,9 @@
+define([], ->
+  class Listener
+    constructor: (@game) ->
+
+    notify: (player1, player2, point) ->
+      console.log "Listener#notify with #{player1}, #{player2}, #{p}"
+
+  Listener
+)


restore textarea value after canceland update bugzilla 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/leonidas/qa-reports.git/'


:boar: Add karma task

:boar: Add karma task

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

--- grunt/karma.coffee
+++ grunt/karma.coffee
@@ -0,0 +1,3 @@
+module.exports =
+  unit:
+    configFile: 'karma.conf.js'


Add mocha task

Add mocha task

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

--- grunt/mocha.coffee
+++ grunt/mocha.coffee
@@ -0,0 +1,6 @@
+module.exports =
+  options:
+    log: true
+    reporter: 'Spec'
+  all:
+    src: ['test/browser/**/*.html']


fix report filename (fixes #117)

fix report filename (fixes #117)

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


removed visible link icon for now, added /.. to shortened links


Actually *use* AYPStrip#upload

Actually *use* AYPStrip#upload

--- scripts/ayp.coffee
+++ scripts/ayp.coffee
@@ -141,17 +141,9 @@
         # Save locally, upload, cleanup
         now = strip.info.when
         name = "ayp-#{now}.jpg"
-        strip.buildJPEG (err, data) ->
-            return msg.reply "What the hell is a JAY PEG?! #{err}" if err
-            return msg.reply "You hve no S3 creds bub" unless [AYP_AWS_KEY, AYP_AWS_SECRET, AYP_AWS_BUCKET].every (p) -> p?.length
-
-            info =
-              headers:
-                'Content-Type': 'image/jpeg'
-              body: data
-            s3.put name, info, (err) ->
-              return msg.reply "Woooops! Failed to upload: #{err}" if err
-              strip_url = "http://s3.amazonaws.com/#{AYP_AWS_BUCKET}/#{name}"
+        strip.upload (err, url) ->
+              return msg.reply "What the hell is a JAY PEG?! #{err}" if err
+              strip_url = url

               # Now let's tell `ayp.wtf.cat` about our great work here
               return msg.reply "I'd update the site, but I don't know the secret :( Though, the image is #{strip_url}" unless AYP_SECRET
@@ -460,6 +452,8 @@
   #
   # cb invoked as `cb(error, url)`
   upload: (cb=(->)) =>
+    return cb(new Error("You hve no S3 creds bub")) unless [AYP_AWS_KEY, AYP_AWS_SECRET, AYP_AWS_BUCKET].every (p) -> p?.length
+
     perform = =>
       name = "ayp-#{@info.when}.jpg"
       info =


Better handle error when the access isn't found.

--- server/controllers/accounts.coffee
+++ server/controllers/accounts.coffee
@@ -131,6 +131,10 @@
             h.sendErr res, "when finding access bound to this account: #{err}"
             return

+        if not access?
+            h.sendErr res, "couldn't find the bank access: #{err}", 404, "bank access not found"
+            return
+
         # Fetch accounts
         weboob.retrieveAccountsByBankAccess access, (err) =>
             if err?


fix badge css class

fix badge css class

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/3zcurdia/badger.git/'


Increase job frequency to every minute.

Increase job frequency to every minute.


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


junction: add a payment flag to satisfier


don't install dependencies unnecessarily

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


prevent server crashing for unknown boxes ref #679

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


add whitespace rules per the rust-guidelines

https://github.com/rust-lang/rust-guidelines/blob/master/style/whitespace.md

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/pyfisch/atom-language-rust.git/'


Add core.hideGitIgnoredFiles option

Add core.hideGitIgnoredFiles option

--- src/app/general-config-panel.coffee
+++ src/app/general-config-panel.coffee
@@ -5,5 +5,9 @@
   @content: ->
     @div class: 'config-panel', =>
       @div class: 'row', =>
-        @label for: 'core.autosave', "Autosave on Unfocus:"
+        @label for: 'core.hideGitIgnoredFiles', "Hide files in .gitignore:"
+        @input id: 'core.hideGitIgnoredFiles', type: 'checkbox'
+
+      @div class: 'row', =>
+        @label for: 'core.autosave', "Autosave on unfocus:"
         @input id: 'core.autosave', type: 'checkbox'


use me

use me

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/nicgirault/cinelocal-admin.git/'


Adds back sd.APP_URL for easier development

--- desktop/apps/editorial_features/components/venice_2017/client/index.coffee
+++ desktop/apps/editorial_features/components/venice_2017/client/index.coffee
@@ -58,11 +58,11 @@

   chooseVideoFile: ->
     if @parser.getBrowser().name is 'Safari'
-      @section.video_url_hls
+      sd.APP_URL + @section.video_url_hls
     else if @parser.getDevice().type is 'mobile'
-      @section.video_url_medium
+      sd.APP_URL + @section.video_url_medium
     else
-      @section.video_url
+      sd.APP_URL + @section.video_url

   showCta: (e) ->
     @$(e.target).fadeOut()


Added dynamic CLIENT_ID for slack page

Added dynamic CLIENT_ID for slack 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/slash7it/warbot.git/'


add wrapper for githubot

add wrapper for githubot

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

--- scripts/lib/git.coffee
+++ scripts/lib/git.coffee
@@ -0,0 +1,54 @@
+git = require('githubot')
+Promise = require('q').Promise
+config = require('config')
+_ = require('lodash')
+
+class Git
+  process.env.HUBOT_GITHUB_TOKEN = config.git.token
+
+  @createPR: (title, baseBranch, headBranch) ->
+    request = {title: title, base: baseBranch, head: headBranch}
+    postPull(request)
+    .then (pull) -> getCommits(pull.number)
+
+  @createPRwithCommitter: (title) ->
+    request = {title: title, base: config.git.base_branch, head: config.git.head_branch}
+    postPull(request)
+    .then (pull) ->
+      getCommits(pull.number)
+      .then (commits) ->
+        body = _.chain(commits).reduce((a, b) -> _.merge(a, b)
+        ).map((v, k) -> _.flatten([k, v]).join("\n")
+        ).join("\n\n").value()
+        postPull({body: body}, pull.number)
+        .then (pull) -> pull.html_url
+
+  @getPulls: (id) ->
+    return new Promise (resolve, reject) ->
+      git.get endpoint("pulls", id), (pulls) -> resolve pulls
+
+  postPull = (request, id) ->
+    return new Promise (resolve, reject) ->
+      git.post endpoint("pulls", id), request, (pull) -> resolve pull
+
+  getCommits = (pullId) ->
+    return new Promise (resolve, reject) ->
+      git.get endpoint("pulls", pullId + "/commits"), (commits) ->
+        resolve _.chain(commits).map((row) -> {
+          committer: row.committer.login,
+          pullId: getPullIdFrom(row.commit.message)
+        }).filter((row) -> row.pullId?
+        ).groupBy((row) -> row.committer
+        ).map((rows, committer) -> "@#{committer}": rows.map((row) -> row.pullId)
+        ).value()
+
+  getPullIdFrom = (message) ->
+    pullId = message.match(/^Merge pull request (#\d+) from/)
+    if pullId? then pullId[1] else null
+
+  endpoint = (resource, id) ->
+    elem = [config.git.base_uri, resource]
+    elem.push(id) if id?
+    elem.join("/")
+
+module.exports = Git


Add option to show auth'd connections and remove some logs

--- server/stream/streamBroadcast.coffee
+++ server/stream/streamBroadcast.coffee
@@ -12,6 +12,7 @@
 			console.log 'connecting in', "localhost:#{record.extraInformation.port}"
 			connections[record.extraInformation.port] = DDP.connect("localhost:#{record.extraInformation.port}", {_dontPrintErrors: true})
 			connections[record.extraInformation.port].call 'broadcastAuth', record._id, InstanceStatus.id(), (err, ok) ->
+				connections[record.extraInformation.port].broadcastAuth = ok
 				console.log "broadcastAuth with localhost:#{record.extraInformation.port}", ok

 		removed: (record) ->
@@ -31,7 +32,9 @@
 		showConnections: ->
 			data = {}
 			for port, connection of connections
-				data[port] = connection.status()
+				data[port] =
+					status: connection.status()
+					broadcastAuth: connection.broadcastAuth
 			return data

 	emitters = {}
@@ -51,9 +54,6 @@
 			check remoteId, String

 			@unblock()
-			console.log 'InstanceStatus.id(), selfId:', InstanceStatus.id(), selfId
-			console.log 'remoteId, InstanceStatus.getCollection().findOne({_id: remoteId}):', remoteId, InstanceStatus.getCollection().findOne({_id: remoteId})
-
 			if InstanceStatus.id() is selfId and InstanceStatus.getCollection().findOne({_id: remoteId})?
 				@connection.broadcastAuth = true


fix non-matching glob

fix non-matching glob

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


Always assign paths

Always assign paths

--- src/project.coffee
+++ src/project.coffee
@@ -69,7 +69,7 @@

     if Grim.includeDeprecatedAPIs and path?
       Grim.deprecate("Pass 'paths' array instead of 'path' to project constructor")
-      paths ?= _.compact([path])
+    paths ?= _.compact([path])

     @setPaths(paths)


Add required comments to src/hello-world.coffee

--- src/hello-world.coffee
+++ src/hello-world.coffee
@@ -1,3 +1,19 @@
+# Description:
+#   Say Hi to Hubot.
+#
+# Dependencies:
+#   None
+#
+# Configuration:
+#   None
+#
+# Commands:
+#   hubot hello - "hello!"
+#   hubot orly - "yarly"
+#
+# Author:
+#   tombell
+
 module.exports = (robot) ->
   robot.respond /hello/, (msg) ->
     msg.reply "hello!"


Deref the right thing

Deref the right thing

--- scripts/ayp.coffee
+++ scripts/ayp.coffee
@@ -152,7 +152,7 @@
             "I have done the thing,",
             "Tada!",
           ]
-          msg.reply "#{prefix} #{url} is now -> #{@info.image_url}"
+          msg.reply "#{prefix} #{url} is now -> #{strip.info.image_url}"

 # This wraps up everything that builds the image strips of the comic
 #


Update Model class to use new relationships and providers.

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/RobotSnacks/stout-orm.git/'


[NEW] WebSQL support (for webkit browsers)

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

--- src/device.module.db.coffee
+++ src/device.module.db.coffee
@@ -0,0 +1,166 @@
+###
+WebSQL
+
+@namespace Device
+@class DB
+@author Javier Jimenez Villar <javi@tapquo.com> || @soyjavi
+###
+
+Device.DB = do(dvc = Device) ->
+  ERROR = lng.Constants.ERROR
+  CONFIG =
+    name: "lungo_db"
+    version: "1.0"
+    size: 65536
+    schema: []
+
+  db = null
+
+  ###
+  Initialize the SQLite storage (HTML5 Feature)
+  @method init
+  @param {object} Configuration for the Database
+  ###
+  init = (db_config) ->
+    CONFIG = lng.Core.mix(CONFIG, db_config)
+    db = openDatabase(CONFIG.name, CONFIG.version, CONFIG.name, CONFIG.size)
+    if db
+      _createSchema()
+    else
+      throw new Error(ERROR.DATABASE)
+
+
+  ###
+  Select a data set of a given table and based on a selection object
+  @method select
+  @param {string} Name of the table in the database
+  @param {object} [OPTIONAL] Object selection condition
+  @param {Function} Callback when the process is complete
+  ###
+  select = (table, where_obj, callback) ->
+    where = (if (where_obj) then " WHERE " + _convertToSql(where_obj, "AND") else "")
+    execute "SELECT * FROM " + table + where, (rs) ->
+      result = []
+      i = 0
+      len = rs.rows.length
+
+      while i < len
+        result.push rs.rows.item(i)
+        i++
+      _callbackResponse callback, result
+
+
+  ###
+  Inserts a data set of a given table and based on a data object
+  @method insert
+  @param {string} Name of the table in the database
+  @param {object} Object (or Array of objects) to insert in table
+  ###
+  insert = (table, data, callback) ->
+    if lng.Core.toType(data) is "object"
+      _insertRow table, data
+    else
+      for row of data
+        _insertRow table, data[row]
+
+
+  ###
+  Updates a data set of a given table and based on a data object and
+  an optional selection object
+  @method update
+  @param {string} Name of the table in the database
+  @param {object} Data object to update in table
+  @param {object} [OPTIONAL] Object selection condition
+  ###
+  update = (table, data_obj, where_obj, callback) ->
+    sql = "UPDATE " + table + " SET " + _convertToSql(data_obj, ",")
+    sql += " WHERE " + _convertToSql(where_obj, "AND")  if where_obj
+    execute sql
+
+
+  ###
+  Delete a data set of a given table and based on a selection object
+  @method drop
+  @param {string} Name of the table in the database
+  @param {object} [OPTIONAL] Object selection condition
+  ###
+  drop = (table, where_obj, callback) ->
+    where = (if (where_obj) then " WHERE " + _convertToSql(where_obj, "AND") else "")
+    execute "DELETE FROM " + table + where + ";"
+
+
+  ###
+  Executes a SQL statement in the SQLite storage
+  @method execute
+  @param {string} SQL statement
+  @param {Function} Callback when the process is complete
+  ###
+  execute = (sql, callback) ->
+    lng.Core.log 1, "lng.Data.Sql >> " + sql
+    db.transaction (transaction) ->
+      transaction.executeSql sql, [], ((transaction, rs) ->
+        _callbackResponse callback, rs
+      ), (transaction, error) ->
+        transaction.executedQuery = sql
+        _throwError.apply null, arguments
+
+
+  _createSchema = ->
+    schema = CONFIG.schema
+    schema_len = schema.length
+    return  unless schema_len
+    i = 0
+
+    while i < schema_len
+      current = schema[i]
+      _regenerateTable current
+      _createTable current.name, current.fields
+      i++
+
+  _createTable = (table, fields) ->
+    sql_fields = ""
+    for field of fields
+      if lng.Core.isOwnProperty(fields, field)
+        sql_fields += ", "  if sql_fields
+        sql_fields += field + " " + fields[field]
+    execute "CREATE TABLE IF NOT EXISTS " + table + " (" + sql_fields + ");"
+
+  _regenerateTable = (table) ->
+    _dropTable table.name  if table.drop is true
+
+  _dropTable = (table) ->
+    execute "DROP TABLE IF EXISTS " + table
+
+  _convertToSql = (fields, separator) ->
+    sql = ""
+    for field of fields
+      if lng.Core.isOwnProperty(fields, field)
+        value = fields[field]
+        sql += " " + separator + " "  if sql
+        sql += field + "="
+        sql += (if (isNaN(value)) then "\"" + value + "\"" else value)
+    sql
+
+  _callbackResponse = (callback, response) ->
+    setTimeout callback, 100, response  if lng.Core.toType(callback) is "function"
+
+  _insertRow = (table, row) ->
+    fields = ""
+    values = ""
+    for field of row
+      if lng.Core.isOwnProperty(row, field)
+        value = row[field]
+        fields += (if (fields) then ", " + field else field)
+        values += ", "  if values
+        values += (if (isNaN(value) or value is "") then "\"" + value + "\"" else value)
+    execute "INSERT INTO " + table + " (" + fields + ") VALUES (" + values + ")"
+
+  _throwError = (transaction, error) ->
+    throw new Error(ERROR.DATABASE_TRANSACTION + error.code + ": " + error.message + " \n Executed query: " + transaction.executedQuery)
+
+  init: init
+  select: select
+  insert: insert
+  update: update
+  drop: drop
+  execute: execute


Improve incompatible native module error message

Close #6771

--- src/package.coffee
+++ src/package.coffee
@@ -426,8 +426,8 @@
     return @mainModule if @mainModuleRequired
     unless @isCompatible()
       console.warn """
-        Failed to require the main module of '#{@name}' because it requires an incompatible native module.
-        Run `apm rebuild` in the package directory to resolve.
+        Failed to require the main module of '#{@name}' because it requires an incompatible native module (#{_.map(@incompatibleModules, 'name').join(', ')}).
+        Run `apm rebuild` in the package directory and restart Atom to resolve.
       """
       return
     mainModulePath = @getMainModulePath()


add model motherclass to improve backbone one

error: pathspec 'newebe/client/app/lib/model.coffee' did not match any file(s) known to git

--- newebe/client/app/lib/model.coffee
+++ newebe/client/app/lib/model.coffee
@@ -0,0 +1,16 @@
+
+# Utility methods for models
+module.exports = class Model extends Backbone.Model
+
+    # Model-view binding for forms. It binds an attribute of the model to a
+    # field.
+    bindField: (attribute, field) ->
+        if not field?
+            console.log "try to bind a non existing field with #{attribute}"
+        else
+            field.keyup =>
+                @set attribute, field.val(), silent: true
+                true
+
+            @on "change:#{attribute}", =>
+                field.val @get "attribute"


Improve JS for selecting rewards

Improve JS for selecting rewards

--- app/assets/javascripts/neighborly/projects/backers/new.js.coffee
+++ app/assets/javascripts/neighborly/projects/backers/new.js.coffee
@@ -15,15 +15,15 @@
       this.$('input[type=radio]').change this.clickReward
       this.$('#backer_anonymous').change this.clickAnonymous

-      this.value = this.$('#backer_value')
-      this.rewards = this.value.data('rewards')
-      this.choices = this.$('.reward-option')
-      this.selectReward this.$('input[type=radio]:checked')
-      this.value.focus()
+      this.$value = this.$('#backer_value')
+      this.rewards = this.$value.data('rewards')
+      this.$choices = this.$('.reward-option')
+      this.selectReward(this.$('input[type=radio]:checked'))
+      this.$value.focus()
       this.submitButtonHandler()

     submitButtonHandler: ->
-      if this.value[0].checkValidity()
+      if this.$value[0].checkValidity()
         this.$('input[type=submit]').removeClass('disable').attr('disabled', false)
       else
         this.$('input[type=submit]').addClass('disable').attr('disabled', true)
@@ -33,11 +33,12 @@
       this.submitButtonHandler()

     clickReward: (event) ->
-      this.choices.removeClass('selected')
+      this.$choices.removeClass('selected')
       option = this.$(event.currentTarget)
+      reward = this.reward()
       this.$('.custom.radio.checked').not(option.find('~ span')).removeClass('checked')
       this.selectReward option
-      this.value.val this.reward().minimum_value
+      this.$value.val(reward.minimum_value) if this.$value.val() == '' || parseInt(this.$value.val()) < parseInt(reward.minimum_value)
       option.parents('.reward-option:first').addClass('selected')
       this.submitButtonHandler()

@@ -58,7 +59,7 @@
     resetReward: (event) ->
       reward = this.reward()
       if reward
-        value = this.value.val()
-        this.selectReward this.$('#backer_reward_id') if (!(/^(\d+)$/.test(value))) or (parseInt(value) < reward.minimum_value)
+        value = this.$value.val()
+        this.selectReward(this.$('#backer_reward_id')) if (!(/^(\d+)$/.test(value))) || (parseInt(value) < parseInt(reward.minimum_value))
       this.submitButtonHandler()


Function calls Runtime.Block directly

Function calls Runtime.Block directly

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


Fix exports of non-function objects into the global scope

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/fulcrumapp/fulcrum-expressions.git/'


update

update

error: pathspec 'src/dump-formulas-for-glyphs.coffee' did not match any file(s) known to git

--- src/dump-formulas-for-glyphs.coffee
+++ src/dump-formulas-for-glyphs.coffee
@@ -0,0 +1,157 @@
+
+
+
+
+############################################################################################################
+njs_path                  = require 'path'
+njs_fs                    = require 'fs'
+join                      = njs_path.join
+#...........................................................................................................
+CND                       = require 'cnd'
+rpr                       = CND.rpr
+badge                     = 'JIZURA/show-repeated-factors'
+log                       = CND.get_logger 'plain',     badge
+info                      = CND.get_logger 'info',      badge
+whisper                   = CND.get_logger 'whisper',   badge
+alert                     = CND.get_logger 'alert',     badge
+debug                     = CND.get_logger 'debug',     badge
+warn                      = CND.get_logger 'warn',      badge
+help                      = CND.get_logger 'help',      badge
+urge                      = CND.get_logger 'urge',      badge
+echo                      = CND.echo.bind CND
+#...........................................................................................................
+suspend                   = require 'coffeenode-suspend'
+step                      = suspend.step
+after                     = suspend.after
+eventually                = suspend.eventually
+immediately               = suspend.immediately
+repeat_immediately        = suspend.repeat_immediately
+every                     = suspend.every
+#...........................................................................................................
+# BYTEWISE                  = require 'bytewise'
+# through                   = require 'through2'
+# LevelBatch                = require 'level-batch-stream'
+# BatchStream               = require 'batch-stream'
+# parallel                  = require 'concurrent-writable'
+D                         = require 'pipedreams'
+$                         = D.remit.bind D
+$async                    = D.remit_async.bind D
+ASYNC                     = require 'async'
+XNCHR                     = require './XNCHR'
+#...........................................................................................................
+# new_db                    = require 'level'
+HOLLERITH                 = require 'hollerith'
+# LRSL                      = require 'longest-repeating-sublist'
+
+XNCHR.chrs_from_text "𢐨𢐮𢰅𣹎𤑜𤑨𤑵𤙗𥋡𥽮𦭲𦳪𦽙𧙭𧛴𧩿𨂳𩱆𩱌𩱍𩱎𩱒𩱓𩱖𩱗𩱚𩱜𩱞𩱟𩱠𩱡𩱣𩱤𩱥𩱦𩱧𩱨𩱪𩱫𩱭𩱮𩱯𩱰𩱱𩱲𩱳𩱶𩱷𪾞𫙆𫙇"
+
+#-----------------------------------------------------------------------------------------------------------
+@show_repeated_factors = ( S ) ->
+  #.........................................................................................................
+  S.query             = { prefix: [ 'spo', ], }
+  S.db_route          = join __dirname, '../../jizura-datasources/data/leveldb-v2'
+  S.db                = HOLLERITH.new_db S.db_route, create: no
+  S.prd_for_lineups   = 'guide/lineup/uchr'
+  S.prd_for_formulas  = 'formula/ic0'
+  help "using DB at #{S.db[ '%self' ][ 'location' ]}"
+  input               = ( HOLLERITH.create_phrasestream S.db, S.query ).pipe $transform S
+  #.........................................................................................................
+  return null
+
+#-----------------------------------------------------------------------------------------------------------
+$filter_inner_glyphs = ( S ) =>
+  return $ ( phrase, send ) =>
+    [ _, glyph, prd, obj, ] = phrase
+    send phrase if XNCHR.is_inner_glyph glyph
+
+#-----------------------------------------------------------------------------------------------------------
+$filter_relevant_phrases = ( S ) =>
+  prds = []
+  prds.push S.prd_for_lineups  if S.lineups
+  prds.push S.prd_for_formulas if S.formulas
+  return $ ( phrase, send ) =>
+    [ _, glyph, prd, obj, ] = phrase
+    send [ glyph, prd, obj, ] if prd in prds
+
+#-----------------------------------------------------------------------------------------------------------
+$show_progress = ( S ) =>
+  count = 0
+  return $ ( phrase, send ) =>
+    send phrase
+    info count if ( count += +1 ) % 1000 is 0
+
+#-----------------------------------------------------------------------------------------------------------
+$look_for_repetitions = ( S ) =>
+  return $ ( phrase, send ) =>
+    [ glyph, prd, components, ] = phrase
+    #.......................................................................................................
+    switch prd
+      when S.prd_for_lineups  then components = Array.from components.trim()
+      when S.prd_for_formulas then null
+      else throw new Error "unknown predicate #{rpr prd}"
+    #.......................................................................................................
+    if ( repeated_components = LRSL.find_longest_repeating_sublist components )?
+      #.....................................................................................................
+      switch prd
+        when S.prd_for_lineups
+          sigil      = 'ℓ'
+        when S.prd_for_formulas
+          sigil      = 'f'
+          components = ( XNCHR.as_uchr component for component in components )
+        else throw new Error "unknown predicate #{rpr prd}"
+      #.....................................................................................................
+      components  = components.join ''
+      glyph       = XNCHR.as_uchr glyph
+      fncr        = XNCHR.as_fncr glyph
+      key         = ( ( XNCHR.as_uchr component ) for component in repeated_components ).join ''
+      send [ key, fncr, glyph, sigil, components, ]
+
+#-----------------------------------------------------------------------------------------------------------
+$aggregate = ( S ) =>
+  cache = {}
+  return $ ( phrase, send, end ) =>
+    #.......................................................................................................
+    if phrase?
+      [ key, fncr, glyph, sigil, components, ] = phrase
+      entry     = [ fncr, glyph, components, ].join '\t'
+      target_0  = cache[ key ]?= {}
+      target_1  = target_0[ entry ]?= []
+      target_1.push sigil unless sigil in target_1
+      debug '©77388', glyph, entry if glyph in '㢸㢽㣃䰜䰞弻弼粥鬻𢏺𢐁𢐆㵉'
+      # if glyph is '桓'
+      #   # debug '0921', cache
+      #   # process.exit()
+      #   end = send.end
+    #.......................................................................................................
+    if end?
+      for key, entries of cache
+        idx = -1
+        for entry, sigils of entries
+          idx += +1
+          key = '\u3000' unless idx is 0
+          line = "#{entry} #{sigils.join ''}"
+          send [ key, line, ]
+      process.exit()
+      end()
+
+#-----------------------------------------------------------------------------------------------------------
+$show = ( S ) =>
+  return D.$observe ( phrase ) =>
+    echo phrase.join '\t'
+    # [ key, fncr, glyph, components, ] = phrase
+    # echo "#{key}\t#{glyph}\t#{components}"
+
+
+#-----------------------------------------------------------------------------------------------------------
+$transform = ( S ) =>
+  return D.combine [
+    $filter_inner_glyphs        S
+    $filter_relevant_phrases    S
+    $show_progress              S
+    $look_for_repetitions       S
+    $aggregate                  S
+    $show                       S
+    D.$on_end => S.handler null if S.handler?
+    ]
+
+


add history module

add history module

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

--- lib/history.coffee
+++ lib/history.coffee
@@ -0,0 +1,19 @@
+{ Cc, Ci } = require('chrome')
+
+ioService = Cc['@mozilla.org/network/io-service;1'].getService(Ci.nsIIOService)
+asyncHistory = Cc['@mozilla.org/browser/history;1'].getService(Ci.mozIAsyncHistory)
+
+# Marks a URL as visited.
+# This method works asynchronously.
+#
+# @param url [String] The URL to insert into browser history
+markVisited = (url) ->
+  asyncHistory.updatePlaces(
+    uri: ioService.newURI(url, null, null)
+    visits: [
+      transitionType: Ci.nsINavHistoryService.TRANSITION_LINK
+      visitDate: Date.now() * 1000
+    ]
+  )
+
+exports.markVisited = markVisited


correct the case when the value is 'true'

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


Generate function when parsing string-specified handlers.

When parsing string-specified controller route handlers, a function is
now generated which calls the specified function with its controller
as "this".

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


When using the event editor:copy-selection, it pastes at the cursor rather than the beginning of the line (see #11542)

--- src/text-editor.coffee
+++ src/text-editor.coffee
@@ -3007,7 +3007,7 @@
     maintainClipboard = false
     for selection in @getSelectionsOrderedByBufferPosition()
       if not selection.isEmpty()
-        selection.copy(maintainClipboard, true)
+        selection.copy(maintainClipboard, false)
         maintainClipboard = true
     return


translation section account

translation section account

--- app/locale/pt-BR.coffee
+++ app/locale/pt-BR.coffee
@@ -1002,5 +1002,5 @@
     left_xp_postfix: ""

 #  account:
-#    recently_played: "Recently Played"
-#    no_recent_games: "No games played during the past two weeks."
+    recently_played: "Jogos Recentes"
+    no_recent_games: "Não foram feitos jogos durante duas semanas."


client/app: open setup intercom

client/app: open setup intercom

--- client/app/lib/index.coffee
+++ client/app/lib/index.coffee
@@ -71,7 +71,7 @@
   mainController.ready ->
     setupChatlio()
     require('./setupcountly')()
-    # setupIntercom()
+    setupIntercom()

   ###


Enable ignoreEolWhitespace in getLineDiffs on  windows

--- src/git.coffee
+++ src/git.coffee
@@ -235,7 +235,11 @@
   #
   # Returns an object with two keys, `ahead` and `behind`. These will always be
   # greater than zero.
-  getLineDiffs: (path, text) -> @getRepo().getLineDiffs(@relativize(path), text)
+  getLineDiffs: (path, text) ->
+    # Ignore eol of line differences on windows so that files checked in as
+    # LF don't report every line modified when the text contains CRLF endings.
+    options = ignoreEolWhitespace: process.platform is 'win32'
+    @getRepo().getLineDiffs(@relativize(path), text, options)

   # Public: Returns the git configuration value specified by the key.
   getConfigValue: (key) -> @getRepo().getConfigValue(key)


added implementation stub for authentication token generation

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