added wisp language initially

added wisp language initially

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

--- src/languages/wisp.coffee
+++ src/languages/wisp.coffee
@@ -0,0 +1,54 @@
+###
+ES6/7 language component for Nesh, the Node.js enhanced shell.
+###
+require 'colors'
+
+wisp = require 'wisp'
+compiler = require 'wisp/compiler'
+log = require '../log'
+path = require 'path'
+vm = require 'vm'
+
+exports.setup = ({nesh}) ->
+    log.debug 'Loading Wisp, Homoiconic JavaScript with Node.js'
+
+    # Set the compile function to convert CoffeeScript -> bare Javascript
+    nesh.compile = (data) ->
+        babel.transform data
+
+    # Import the CoffeeScript REPL, which handles individual line commands
+    nesh.repl =
+      start: (opts) ->
+          opts.eval = (code, context, filename, callback) ->
+              if code[0] is '(' and code[code.length - 1] is ')'
+                  code = code.slice 1, -1
+
+              err = null
+              output = null
+              try
+                  result = compiler.compile code
+                  output = vm.runInThisContext(result.code, {filename})
+              catch e
+                err = e
+
+              # Sometimes this is the only output... in that case just ignore
+              if output is 'use strict' then output = undefined
+
+              callback err, output
+
+          repl = require('repl').start opts
+
+    # Add the CoffeeScript version to the system's list of versions
+    process.versions['babel'] = babel.version
+
+    # Set the default welcome message to include the CoffeeScript version
+    nesh.defaults.welcome = "(console.log \"Welcome\")"
+    #"Wisp #{babel.version} on Node #{process.version}\nType " + '.help'.cyan + ' for more information'
+
+    # Set the CoffeeScript prompt
+    nesh.defaults.prompt = 'wisp> '
+    nesh.defaults.useGlobal = true
+
+    # Save history in ~/.wisp_history
+    nesh.defaults.historyFile = path.join(nesh.config.home, '.wisp_history')
+


return to using sequence, in order to continue flow

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


remove attachmentIDs from TestCase

remove attachmentIDs from TestCase

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/davepwsmith/zotero-better-bibtex.git/'


atom: snippets: more

atom: snippets: more

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


some metadata reworking, mocking work

some metadata reworking, mocking work

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


initial config.coffee - commit

initial config.coffee - commit

Configuration CoffeeScript, http://coffeescript.org/

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

--- src/coffee/config.coffee
+++ src/coffee/config.coffee
@@ -0,0 +1 @@
+# Configuration CoffeeScript #


Make test helper file detection RegEx less strict

Test helper file detection will now detect helper named either:
  test-helper
  test-helpers
  test_helper
  test_helpers

--- src/commands/test.coffee
+++ src/commands/test.coffee
@@ -106,7 +106,7 @@
     throw error if error?

     testHelpers = files.filter (file) ->
-      /^test-helpers\./.test file
+      /^test[-_]helper(s)?\./.test file

     if testHelpers.length > 0
       callback sysPath.resolve sysPath.join testPath, testHelpers[0]


Simple header component

Simple header component

error: pathspec 'client/lanes/components/shared/PanelHeader.cjsx' did not match any file(s) known to git

--- client/lanes/components/shared/PanelHeader.cjsx
+++ client/lanes/components/shared/PanelHeader.cjsx
@@ -0,0 +1,8 @@
+class Lanes.Components.PanelHeader extends Lanes.React.BaseComponent
+
+    render: ->
+

+
{@props.title}

+

+            {@props.children}
+


Added atom config.cson file

Added atom config.cson file

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

--- config/atom/config.cson
+++ config/atom/config.cson
@@ -0,0 +1,120 @@
+"*":
+  "atom-beautify":
+    cpp: {}
+  "atom-clock":
+    dateFormat: "hh:mm:ss a"
+    refreshInterval: 1
+  "atom-material-ui":
+    colors:
+      abaseColor: "#2196f3"
+      genAccent: true
+      predefinedColor: "Blue"
+    fonts: {}
+    tabs:
+      compactTabs: true
+      noTabMinWidth: true
+    treeView:
+      compactList: true
+    ui:
+      panelShadows: true
+  "atom-typescript": {}
+  "autocomplete-modules":
+    babelPluginModuleResolver: true
+  "autocomplete-plus":
+    useCoreMovementCommands: false
+  "color-picker":
+    abbreviateValues: true
+  core:
+    autoHideMenuBar: true
+    customFileTypes:
+      "source.ini": [
+        ".buckconfig"
+        ".hgrc"
+        ".flowconfig"
+      ]
+      "source.json": [
+        ".arcconfig"
+        "BUCK.autodeps"
+      ]
+      "source.python": [
+        "BUCK"
+      ]
+    disabledPackages: [
+      "tree-view"
+      "symbols-view"
+    ]
+    ignoredNames: [
+      ".git"
+      ".hg"
+      ".svn"
+      ".DS_Store"
+      "._*"
+      "Thumbs.db"
+      "desktop.ini"
+      ".venv"
+    ]
+    openEmptyEditorOnStart: false
+    projectHome: "/home/jeremy/src/node"
+    telemetryConsent: "no"
+    themes: [
+      "atom-material-ui"
+      "atom-material-syntax-dark"
+    ]
+  docblockr:
+    auto_add_method_tag: true
+    deep_indent: true
+  editor:
+    fontFamily: "Source Code Pro for Powerline"
+    scrollPastEnd: true
+    tabType: "soft"
+  "exception-reporting":
+    userId: "0e609a53-3d6f-b7e8-9c28-d81b14c383dc"
+  "imdone-atom":
+    openIn: {}
+  jumpy:
+    fontSize: 0.95
+    matchPattern: "([A-EG-Z]+([0-9a-eg-z])*)|[a-egz0-9]{2,}"
+  minimap:
+    plugins:
+      codeglance: true
+      codeglanceDecorationsZIndex: 0
+      cursorline: true
+      cursorlineDecorationsZIndex: 0
+      "find-and-replace": true
+      "find-and-replaceDecorationsZIndex": 0
+      "git-diff": true
+      "git-diffDecorationsZIndex": 0
+      "highlight-selected": true
+      "highlight-selectedDecorationsZIndex": 0
+      linter: true
+      linterDecorationsZIndex: 0
+      "minimap-hide": true
+      "minimap-hideDecorationsZIndex": 0
+      "minimap-quick-highlight": true
+      "minimap-quick-highlightDecorationsZIndex": 0
+      pigments: true
+      pigmentsDecorationsZIndex: 0
+      selection: true
+      selectionDecorationsZIndex: 0
+      "split-diff": true
+      "split-diffDecorationsZIndex": 0
+  nuclide:
+    installRecommendedPackages: true
+    "nuclide-clang":
+      defaultDiagnostics: true
+    "nuclide-flow":
+      enableReferencesHighlight: true
+    "nuclide-health":
+      toolbarJewel: "CPU"
+    "nuclide-home":
+      showHome: false
+    "nuclide-python":
+      includeOptionalArguments: true
+      lintOnFly: true
+    "nuclide-working-sets": {}
+  "tree-view":
+    showOnRightSide: true
+  "vim-mode-plus":
+    automaticallyEscapeInsertModeOnActivePaneItemChange: true
+  welcome:
+    showOnStartup: false


Added stub for shims and other stuff

Added stub for shims and other stuff

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


Add spec with surrogate pair token with trailing text

--- spec/app/tokenized-buffer-spec.coffee
+++ spec/app/tokenized-buffer-spec.coffee
@@ -328,30 +328,40 @@
   describe "when the buffer contains surrogate pairs", ->
     beforeEach ->
       atom.activatePackage('javascript-tmbundle', sync: true)
-      buffer = new Buffer('sample-with-pairs.js', "'abc\uD835\uDF97def'")
-      tokenizedBuffer = new TokenizedBuffer(buffer)
-      tokenizedBuffer.setVisible(true)
+      buffer = new Buffer 'sample-with-pairs.js', """
+        'abc\uD835\uDF97def'
+        //\uD835\uDF97xyz
+      """
+      tokenizedBuffer = new TokenizedBuffer(buffer)
+      tokenizedBuffer.setVisible(true)
+      fullyTokenize(tokenizedBuffer)

     afterEach ->
       tokenizedBuffer.destroy()
       buffer.release()

-    describe "when the buffer is fully tokenized", ->
-      beforeEach ->
-        fullyTokenize(tokenizedBuffer)
-
-      it "renders each surrogate pair as its own atomic token", ->
-        screenLine0 = tokenizedBuffer.lineForScreenRow(0)
-        expect(screenLine0.text).toBe "'abc\uD835\uDF97def'"
-        { tokens } = screenLine0
-
-        expect(tokens.length).toBe 5
-        expect(tokens[0].value).toBe "'"
-        expect(tokens[1].value).toBe "abc"
-        expect(tokens[2].value).toBe "\uD835\uDF97"
-        expect(tokens[2].isAtomic).toBeTruthy()
-        expect(tokens[3].value).toBe "def"
-        expect(tokens[4].value).toBe "'"
+    it "renders each surrogate pair as its own atomic token", ->
+      screenLine0 = tokenizedBuffer.lineForScreenRow(0)
+      expect(screenLine0.text).toBe "'abc\uD835\uDF97def'"
+      { tokens } = screenLine0
+
+      expect(tokens.length).toBe 5
+      expect(tokens[0].value).toBe "'"
+      expect(tokens[1].value).toBe "abc"
+      expect(tokens[2].value).toBe "\uD835\uDF97"
+      expect(tokens[2].isAtomic).toBeTruthy()
+      expect(tokens[3].value).toBe "def"
+      expect(tokens[4].value).toBe "'"
+
+      screenLine1 = tokenizedBuffer.lineForScreenRow(1)
+      expect(screenLine1.text).toBe "//\uD835\uDF97xyz"
+      { tokens } = screenLine1
+
+      expect(tokens.length).toBe 3
+      expect(tokens[0].value).toBe '//'
+      expect(tokens[1].value).toBe '\uD835\uDF97'
+      expect(tokens[1].value).toBeTruthy()
+      expect(tokens[2].value).toBe 'xyz'

   describe "when the grammar is updated because a grammar it includes is activated", ->
     it "retokenizes the buffer", ->


bibvars

bibvars

error: pathspec 'resource/translators/Better' did not match any file(s) known to git
error: pathspec 'BibLaTeX.coffee' did not match any file(s) known to git


Delete comment in server index

Delete comment in server index

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


adds ssl middleware

adds ssl middleware

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

--- lib/middleware/ensure_ssl.coffee
+++ lib/middleware/ensure_ssl.coffee
@@ -0,0 +1,13 @@
+#
+# Makes sure that any http requests get redirected to https
+# from https://github.com/artsy/force-public/blob/master/lib/middleware/ensure_ssl.coffee
+
+{ APP_URL } = require '../../config'
+{ parse } = require 'url'
+
+module.exports = (req, res, next) ->
+  protocol = req.get('X-Forwarded-Proto') or req.protocol
+  if protocol isnt 'https' and parse(APP_URL).protocol is 'https:'
+    res.redirect 301, APP_URL + req.url
+  else
+    next()


Mark POW_RVM_PATH option as deprecated

Mark POW_RVM_PATH option as deprecated

--- src/configuration.coffee
+++ src/configuration.coffee
@@ -120,8 +120,8 @@
     # its log files. Defaults to `~/Library/Logs/Pow`.
     @logRoot    = env.POW_LOG_ROOT    ? libraryPath "Logs", "Pow"

-    # `POW_RVM_PATH`: path to the rvm initialization script. Defaults
-    # to `~/.rvm/scripts/rvm`.
+    # `POW_RVM_PATH` (**deprecated**): path to the rvm initialization
+    # script. Defaults to `~/.rvm/scripts/rvm`.
     @rvmPath    = env.POW_RVM_PATH    ? path.join process.env.HOME, ".rvm/scripts/rvm"

     # ---


REST: $scope.headers === undefined

REST: $scope.headers === undefined

See https://github.com/AppGyver/ag-data-configurator/issues/1

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/ag-data-configurator.git/'


<feat>(LrcPanel): support lrc scroll effect

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


Fix buggy qreader

Fix buggy qreader

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


MIL-291: Form validation error events should contain a lookup key for message

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/crdschurch/crds-angular-ajax-form.git/'


After creating a workflow user should be redirected to it

--- lib/gush/control/assets/javascripts/gush.coffee
+++ lib/gush/control/assets/javascripts/gush.coffee
@@ -115,7 +115,7 @@
       error: (response) ->
         console.log(response)
       success: (response) =>
-        @_addWorkflow(response);
+        window.location.href = "/show/#{response.id}"

   destroyWorkflow: (workflow) ->
     $.ajax


Make things CoffeeScriptier

Make things CoffeeScriptier

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


use object instead of array for datum lookup

--- lib/attributes/template.coffee
+++ lib/attributes/template.coffee
@@ -5,11 +5,13 @@
         # delay the dependency
         @client = $injector.get 'cj'

-        @_data = (new TemplateDatum d for d in (@_template.data || []))
+        @_data = {}
+
+        for d in (@_template.data || [])
+          @_data[d.name] = new TemplateDatum d

       datum: (key)->
-        for d in @_data
-          return d if d.name == key
+        @_data[key]

       get: (key)->
         @datum(key)?.value
@@ -40,12 +42,12 @@

       form: ->
         memo = {}
-        memo[d.name] = d.value for d in @_data
+        memo[datum.name] = datum.value for key, datum of @_data
         memo

       valid: ->
-        for d in @_data
-          return false if !d.valid()
+        for key, datum of @_data
+          return false if !datum.valid()
         true

       submit: ->


whoops, coffeescript list comprehensions don't need brackets

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


Replaces workaround and should let travis work again

--- lib/utils.coffee
+++ lib/utils.coffee
@@ -1,10 +1,8 @@
 Utils =
   getCurrentVersion: ->
-    # Chromium #15242 will make this XHR request to access the manifest unnecessary
-    manifestRequest = new XMLHttpRequest()
-    manifestRequest.open("GET", chrome.extension.getURL("manifest.json"), false)
-    manifestRequest.send(null)
-    JSON.parse(manifestRequest.responseText).version
+    chrome.management.get(chrome.i18n.getMessage('@@extension_id'), (info) ->
+      info.version
+    )

   # Takes a dot-notation object string and call the function
   # that it points to with the correct value for 'this'.
@@ -136,7 +134,7 @@

   # locale-sensitive uppercase detection
   hasUpperCase: (s) -> s.toLowerCase() != s
-
+
 # This creates a new function out of an existing function, where the new function takes fewer arguments. This
 # allows us to pass around functions instead of functions + a partial list of arguments.
 Function::curry = ->


forgot ast.coffee

forgot ast.coffee

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

--- rqljs/src/ast.coffee
+++ rqljs/src/ast.coffee
@@ -0,0 +1,105 @@
+goog.provide('rethinkdb.AST')
+
+class RDBNode
+    eval: -> throw "Abstract Method"
+
+class RDBDatum extends RDBNode
+    constructor: (val) ->
+        @data = val
+
+    eval: -> @data
+
+class RDBOp extends RDBNode
+    constructor: (args, optargs) ->
+        @args = args
+        @optargs = optargs
+
+    # Overloaded by each operation to specify its argument types
+    type: ""
+
+    # Overloaded by each operation to specify how to evaluate
+    op: -> throw "Abstract Method"
+
+    eval: ->
+        # Eval arguments and check types
+        args = []
+        for n,i in @args
+            try
+                v = n.eval()
+                # Ignore type checking for now
+                args.push v
+            catch err
+                err.backtrace.unshift i
+                throw err
+
+        optargs = {}
+        for k,n of @optargs
+            try
+                v = n.eval()
+                # Ignore type checking for now
+                optargs[k] = v
+            catch err
+                err.backtrace.unshift k
+                throw err
+
+        # Eval this node
+        @op(args, optargs)
+
+class MakeArray extends RDBOp
+    type: "DATUM... -> Array"
+    op: (args) -> new RDBArray args
+
+class MakeObj extends RDBOp
+    type: "k:v... -> Object"
+    op: (args, optArgs) ->
+        obj = new RDBObject
+        for k,v of optargs
+            obj[k] = v
+
+class JavaScript extends RDBOp
+    type: "STR -> DATUM"
+    op: (args) -> eval args[0]
+
+class UserError extends RDBNode
+    eval: -> throw new RuntimeError
+
+class DBRef extends RDBOp
+    type: "STR -> DB"
+    op: (args) -> universe.getDatabase arg[0]
+
+class TableRef extends RDBOp
+    type: "STR, DB -> TABLE"
+    op: (args, optargs) ->
+        arg[1].getTable args[0]
+
+class GetByKey extends RDBOp
+    type: "TABLE, STR -> DATUM"
+    op: (args) -> args[0].get args[1]
+
+class CompareOp extends RDBOp
+    type: "DATUM... -> BOOL"
+	cop: "Abstract class variable"
+	op: (args) ->
+        new RDBPrimitive args[1..].map(
+            (v) -> v[cop](args[0]).asJSON()
+        ).reduce(
+            (acc, v) -> acc && v
+        , true)
+
+class Eq extends CompareOp
+    cop: 'eq'
+
+class Ne extends CompareOp
+    cop: 'ne'
+
+class Lt extends CompareOp
+    cop: 'lt'
+
+class Le extends CompareOp
+    cop: 'le'
+
+class Gt extends CompareOp
+    cop: 'gt'
+
+class Ge extends CompareOp
+    cop: 'ge'


add failing comment fold tests

add failing comment fold tests

--- spec/app/language-mode-spec.coffee
+++ spec/app/language-mode-spec.coffee
@@ -158,3 +158,40 @@
         languageMode.toggleLineCommentsForBufferRows(0, 0)
         expect(buffer.lineForRow(0)).toBe "// @color: #4D926F;"

+  fdescribe "folding", ->
+
+    describe "with comments", ->
+      beforeEach ->
+        atom.activatePackage('javascript-tmbundle', sync: true)
+        editSession = project.open('sample-with-comments.js', autoIndent: false)
+        {buffer, languageMode} = editSession
+
+      describe ".unfoldAll()", ->
+        it "unfolds every folded line", ->
+          initialScreenLineCount = editSession.getScreenLineCount()
+          editSession.foldBufferRow(0)
+          editSession.foldBufferRow(5)
+          expect(editSession.getScreenLineCount()).toBeLessThan initialScreenLineCount
+          editSession.unfoldAll()
+          expect(editSession.getScreenLineCount()).toBe initialScreenLineCount
+
+      describe ".foldAll()", ->
+        it "folds every foldable line", ->
+          editSession.foldAll()
+
+          fold1 = editSession.lineForScreenRow(0).fold
+          expect([fold1.getStartRow(), fold1.getEndRow()]).toEqual [0, 19]
+          fold1.destroy()
+
+          fold2 = editSession.lineForScreenRow(1).fold
+          expect([fold2.getStartRow(), fold2.getEndRow()]).toEqual [1, 4]
+
+          fold3 = editSession.lineForScreenRow(2).fold.destroy()
+
+          fold4 = editSession.lineForScreenRow(3).fold
+          expect([fold3.getStartRow(), fold3.getEndRow()]).toEqual [6, 8]
+
+
+
+
+


Some renaming for clarity.

Some renaming for clarity.

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


settings: { ignorePattern: /regexp/ }

settings: { ignorePattern: /regexp/ }

--- src/atom/project.coffee
+++ src/atom/project.coffee
@@ -14,7 +14,8 @@
 class Project extends Resource
   window.resourceTypes.push this

-  ignorePattern: /(\.git|\.xcodeproj|\.DS_Store)$/
+  settings:
+    ignorePattern: /(\.git|\.xcodeproj|\.DS_Store)$/

   html:
     $ '

'
@@ -75,4 +76,4 @@
     child.match "^" + parent

   urls: (root=@url) ->
-    _.reject (fs.list root), (url) => @ignorePattern.test url
+    _.reject (fs.list root), (url) => @settings.ignorePattern.test url


IDEView: Minor code refactor.

IDEView: Minor code refactor.

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


Just render aggregations directly without re-fetching, in preparation for a gravity update

--- components/filter2/dropdown/view.coffee
+++ components/filter2/dropdown/view.coffee
@@ -11,25 +11,12 @@
     'click a[data-attr]': 'onSelect'

   initialize: ({@collection, @params, @facet, @el, @facets, @filterRoot}) ->
-    @listenTo @collection, 'initial:fetch', @updateCounts
+    @listenTo @collection, 'initial:fetch', @renderCounts
     @listenTo @params, "change:#{@facet}", @renderActiveParam
+    @listenTo @collection, 'sync', @renderCounts

-    for facet in @facets
-      @listenTo @params, "change:#{facet}", @updateCounts
-
-    @listenTo @params, "change:for_sale", @updateCounts
-
-  updateCounts: ->
-    # we need a copy of the params without this facet and
-    # we don't need results, just counts
-    clonedParams = @params.clone().unset(@facet).set { size: 0, page: 1 }
-    updatedCounts = new FilterArtworks
-    updatedCounts.fetch
-      data: clonedParams.toJSON()
-      success: @renderCounts
-
-  renderCounts: (collection) =>
-    counts = collection.counts[@facet]
+  renderCounts: =>
+    counts = @collection.counts[@facet]
     activeText = counts[@params.get(@facet)]?.name

     html = template


rm log

rm log

--- components/filter2/headline/view.coffee
+++ components/filter2/headline/view.coffee
@@ -15,7 +15,6 @@
     @listenTo @params, "change:for_sale", @setHeadline, @

     @stuckFacet = null if @stuckParam is 'fair_id'
-    console.log 'stuckFacet', @stuckFacet, @stuckParam

   setHeadline: ->
     if @anyFacetsSelected() || @stuckFacet


Create lmgtfy.coffee

Create lmgtfy.coffee

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

--- lmgtfy.coffee
+++ lmgtfy.coffee
@@ -0,0 +1,21 @@
+# Description:
+#   Tell Hubot to send a user a link to lmgtfy.com
+#
+# Dependencies:
+#   None
+#
+# Configuration:
+#   None
+#
+# Commands:
+#   hubot lmgtfy <optional @username> <some query>
+#
+# Author:
+#   phlipper
+
+module.exports = (robot) ->
+   robot.respond /lmgtfy?\s?(?:@(\w*))? (.*)/i, (msg) ->
+     link = ""
+     link += "#{msg.match[1]}: " if msg.match[1]
+     link += "http://lmgtfy.com/?q=#{escape(msg.match[2])}"
+     msg.send link


choicegroup should only process choices belonging to its input_id

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


background.coffee: add fetchAndNotificate function, use it with setInterval

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


Change CJS definition to require vex.js with relative path

    With this change we can require() with a package relative path like this:
    var dialog = require('vex/js/vex.dialog.js')

--- coffee/vex.dialog.coffee
+++ coffee/vex.dialog.coffee
@@ -130,7 +130,7 @@
                 .val(button.text)
                 .addClass(button.className + ' vex-dialog-button ' + (if index is 0 then 'vex-first ' else '') + (if index is buttons.length - 1 then 'vex-last ' else ''))
                 .bind('click.vex', (e) -> button.click($(@).parents(".#{vex.baseClassNames.content}"), e) if button.click)
-
+
             $button.appendTo $buttons

         return $buttons
@@ -143,7 +143,7 @@
     define ['jquery', 'vex'], vexDialogFactory
 else if typeof exports is 'object'
     # CommonJS
-    module.exports = vexDialogFactory require('jquery'), require('vex')
+    module.exports = vexDialogFactory require('jquery'), require('./vex.js')
 else
     # Global
     window.vex.dialog = vexDialogFactory window.jQuery, window.vex


fixed log linebreak for android

fixed log linebreak for android

--- src/coffeescripts/LoggrUtil.coffee
+++ src/coffeescripts/LoggrUtil.coffee
@@ -79,7 +79,8 @@
     if LoggrUtil.DEBUG
       console.log msg

-    LoggrUtil.MEM_LOG = new Date().toJSON() + ': ' + msg + '\n' + LoggrUtil.MEM_LOG
+    NEWLINE = if Platform.isAndroid() then '%0D%0A' else '\n'
+    LoggrUtil.MEM_LOG = new Date().toJSON() + ': ' + msg + NEWLINE + LoggrUtil.MEM_LOG
     if LoggrUtil.MEM_LOG.length > LoggrUtil.MAX_MEM_LOG_LENGTH
       LoggrUtil.MEM_LOG = LoggrUtil.MEM_LOG.substring 0, LoggrUtil.MAX_MEM_LOG_LENGTH


Set up env for tests

Set up env for tests

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

--- spec/javascripts/spec_helper.js.coffee
+++ spec/javascripts/spec_helper.js.coffee
@@ -0,0 +1,11 @@
+#= require jquery
+#= require jquery_ujs
+#
+#= require ember
+#= require ember-data
+#
+#= require_self
+#= require ember_cart/ember/app
+
+jQuery ->
+  jQuery("#konacha").append('

')


Added WKT centroid getter.

Added WKT centroid getter.

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


Throttle the doubleMpu animation so that it happens *after* the leaderboard has animated down.

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


Add publisher script for Nu.nl

Add publisher script for Nu.nl

This can be compiled locally using  coffee -c <filename>. No need to compile this in Grunt, since the script will only be installed locally into Chrome.

error: pathspec 'app/js/publisher_poc/publisher_plugin.user.coffee' did not match any file(s) known to git

--- app/js/publisher_poc/publisher_plugin.user.coffee
+++ app/js/publisher_poc/publisher_plugin.user.coffee
@@ -0,0 +1,70 @@
+###
+// ==UserScript==
+// @name  Factlink Publisher Pluging for Nu.nl
+// @description Enable Factlink on Nu.nl
+// @include http*://*.nu.nl/*
+// @version 0.0.1
+// @grant unsafeWindow
+// ==/UserScript==
+###
+
+# Compile this file using: coffee -c <filename>
+# Drag the compiled file (<name>.user.js) to chrome://extensions to use it.
+
+localConfig =
+  api: "http://localhost:3000"
+  lib: "http://localhost:8000/lib/dist"
+  srcPath: "/factlink.core.js"
+  url: window.location.href
+  minified: ''
+
+# testserverConfig =
+#   api: "https://factlink-testserver.inverselink.com:443"
+#   lib: "https://factlink-static-testserver.inverselink.com:443/lib/dist"
+#   srcPath: "/factlink.core.min.js"
+#   url: window.location.href
+#   minified: 'min.'
+
+# stagingConfig =
+#   api: "https://factlink-testserver.inverselink.com:443"
+#   lib: "https://factlink-static-testserver.inverselink.com:443/lib/dist"
+#   srcPath: "/factlink.core.min.js"
+#   url: window.location.href
+#   minified: 'min.'
+
+# remoteConfig =
+#   api: "https://factlink.com:443"
+#   lib: "https://static.factlink.com:443/lib/dist"
+#   srcPath: "/factlink.core.min.js"
+#   url: window.location.href
+#   minified: 'min.'
+
+# Define the config to use here:
+factlinkConfig = localConfig
+
+# Add FactlinkConfig
+ascript = document.createElement('script')
+ascript.textContent = """
+(function() {
+  window.FactlinkConfig = #{JSON.stringify(factlinkConfig)};
+})();
+"""
+document.body.appendChild(ascript)
+document.body.removeChild(ascript)
+
+# Inject custom publisher stylesheet
+css_url = "#{factlinkConfig.lib}/css/publisher_poc/nu.nl.css"
+head = document.getElementsByTagName('head').item(0)
+style = document.createElement("link")
+style.setAttribute('href', css_url)
+style.setAttribute('rel', 'stylesheet')
+style.type = "text/css"
+head.appendChild(style)
+
+# Inject custom publisher functionality
+url = "#{factlinkConfig.lib}/nu.js"
+body = document.getElementsByTagName('body').item(0)
+script = document.createElement("script")
+script.setAttribute('src', url)
+script.type = "text/javascript"
+body.appendChild(script)


Add 6 month graph to admin dashboard

Add 6 month graph to admin dashboard

--- app/views/admin/AnalyticsSubscriptionsView.coffee
+++ app/views/admin/AnalyticsSubscriptionsView.coffee
@@ -155,11 +155,15 @@
     # console.log 'updateAnalyticsGraphData'
     # Build graphs based on available @analytics data
     # Currently only one graph
-    @analytics.graphs = [graphID: 'total-subs', lines: []]
-
-    timeframeDays = 60
+    @analytics.graphs = []

     return unless @subs?.length > 0
+
+    @addGraphData(60)
+    @addGraphData(180, true)
+
+  addGraphData: (timeframeDays, skipCancelled=false) ->
+    graph = {graphID: 'total-subs', lines: []}

     # TODO: Where should this metadata live?
     # TODO: lineIDs assumed to be unique across graphs
@@ -168,6 +172,7 @@
     startedSubsID = 'started-subs'
     cancelledSubsID = 'cancelled-subs'
     netSubsID = 'net-subs'
+    averageNewID = 'average-new'
     lineMetadata = {}
     lineMetadata[totalSubsID] =
       description: 'Total Active Subscriptions'
@@ -190,6 +195,10 @@
       description: '7-day Average Net Subscriptions (started - cancelled)'
       color: 'black'
       strokeWidth: 4
+    lineMetadata[averageNewID] =
+      description: '7-day Average New Subscriptions'
+      color: 'black'
+      strokeWidth: 4

     days = (sub.day for sub in @subs)
     if days.length > 0
@@ -228,7 +237,7 @@

     levelPoints.splice(0, levelPoints.length - timeframeDays) if levelPoints.length > timeframeDays

-    @analytics.graphs[0].lines.push
+    graph.lines.push
       lineID: totalSubsID
       enabled: true
       points: levelPoints
@@ -263,7 +272,7 @@

     levelPoints.splice(0, levelPoints.length - timeframeDays) if levelPoints.length > timeframeDays

-    @analytics.graphs[0].lines.push
+    graph.lines.push
       lineID: startedSubsID
       enabled: true
       points: levelPoints
@@ -273,122 +282,170 @@
       min: 0
       max: d3.max(@subs[-timeframeDays..], (d) -> d.started + 2)

-    ## Total subs target
-
-    # Build line data
-    levelPoints = []
-    for sub, i in @subs
-      levelPoints.push
-        x: i
-        y: @targetSubCount
-        day: sub.day
-        pointID: "#{targetSubsID}#{i}"
-        values: []
-
-    levelPoints.splice(0, levelPoints.length - timeframeDays) if levelPoints.length > timeframeDays
-
-    @analytics.graphs[0].lines.push
-      lineID: targetSubsID
-      enabled: true
-      points: levelPoints
-      description: lineMetadata[targetSubsID].description
-      lineColor: lineMetadata[targetSubsID].color
-      strokeWidth: lineMetadata[targetSubsID].strokeWidth
-      min: 0
-      max: Math.max(@targetSubCount, d3.max(@subs, (d) -> d.total))
-
-    ## Cancelled
-
-    # TODO: move this average cancelled stuff up the chain
-    averageCancelled = 0
-
-    # Build line data
-    levelPoints = []
-    cancelled = []
-    for sub, i in @subs[@subs.length - 30...]
-      cancelled.push sub.cancelled
-      levelPoints.push
-        x: @subs.length - 30 + i
-        y: sub.cancelled
-        day: sub.day
-        pointID: "#{cancelledSubsID}#{@subs.length - 30 + i}"
-        values: []
-    averageCancelled = cancelled.reduce((a, b) -> a + b) / cancelled.length
-    for sub, i in @subs[0...-30]
-      levelPoints.splice i, 0,
-        x: i
-        y: averageCancelled
-        day: sub.day
-        pointID: "#{cancelledSubsID}#{i}"
-        values: []
-
-    # Ensure points for each day
-    for day, i in days
-      if levelPoints.length <= i or levelPoints[i].day isnt day
-        prevY = if i > 0 then levelPoints[i - 1].y else 0.0
+    if skipCancelled
+
+      ## 7-Day average started
+
+      # Build line data
+      levelPoints = []
+      sevenStarts = []
+      for sub, i in @subs
+        average = 0
+        sevenStarts.push sub.started
+        if sevenStarts.length > 7
+          sevenStarts.shift()
+        if sevenStarts.length is 7
+          average = sevenStarts.reduce((a, b) -> a + b) / sevenStarts.length
+        levelPoints.push
+          x: i
+          y: average
+          day: sub.day
+          pointID: "#{averageNewID}#{i}"
+          values: []
+
+      # Ensure points for each day
+      for day, i in days
+        if levelPoints.length <= i or levelPoints[i].day isnt day
+          prevY = if i > 0 then levelPoints[i - 1].y else 0.0
+          levelPoints.splice i, 0,
+            y: prevY
+            day: day
+            values: []
+        levelPoints[i].x = i
+        levelPoints[i].pointID = "#{averageNewID}#{i}"
+
+      levelPoints.splice(0, levelPoints.length - timeframeDays) if levelPoints.length > timeframeDays
+
+      graph.lines.push
+        lineID: averageNewID
+        enabled: true
+        points: levelPoints
+        description: lineMetadata[averageNewID].description
+        lineColor: lineMetadata[averageNewID].color
+        strokeWidth: lineMetadata[averageNewID].strokeWidth
+        min: 0
+        max: d3.max(@subs[-timeframeDays..], (d) -> d.started + 2)
+
+    else
+
+      ## Total subs target
+
+      # Build line data
+      levelPoints = []
+      for sub, i in @subs
+        levelPoints.push
+          x: i
+          y: @targetSubCount
+          day: sub.day
+          pointID: "#{targetSubsID}#{i}"
+          values: []
+
+      levelPoints.splice(0, levelPoints.length - timeframeDays) if levelPoints.length > timeframeDays
+
+      graph.lines.push
+        lineID: targetSubsID
+        enabled: true
+        points: levelPoints
+        description: lineMetadata[targetSubsID].description
+        lineColor: lineMetadata[targetSubsID].color
+        strokeWidth: lineMetadata[targetSubsID].strokeWidth
+        min: 0
+        max: Math.max(@targetSubCount, d3.max(@subs, (d) -> d.total))
+
+      ## Cancelled
+
+      # TODO: move this average cancelled stuff up the chain
+      averageCancelled = 0
+
+      # Build line data
+      levelPoints = []
+      cancelled = []
+      for sub, i in @subs[@subs.length - 30...]
+        cancelled.push sub.cancelled
+        levelPoints.push
+          x: @subs.length - 30 + i
+          y: sub.cancelled
+          day: sub.day
+          pointID: "#{cancelledSubsID}#{@subs.length - 30 + i}"
+          values: []
+      averageCancelled = cancelled.reduce((a, b) -> a + b) / cancelled.length
+      for sub, i in @subs[0...-30]
         levelPoints.splice i, 0,
-          y: prevY
-          day: day
-          values: []
-      levelPoints[i].x = i
-      levelPoints[i].pointID = "#{cancelledSubsID}#{i}"
-
-    levelPoints.splice(0, levelPoints.length - timeframeDays) if levelPoints.length > timeframeDays
-
-    @analytics.graphs[0].lines.push
-      lineID: cancelledSubsID
-      enabled: true
-      points: levelPoints
-      description: lineMetadata[cancelledSubsID].description
-      lineColor: lineMetadata[cancelledSubsID].color
-      strokeWidth: lineMetadata[cancelledSubsID].strokeWidth
-      min: 0
-      max: d3.max(@subs[-timeframeDays..], (d) -> d.started + 2)
-
-    ## 7-Day Net Subs
-
-    # Build line data
-    levelPoints = []
-    sevenNets = []
-    for sub, i in @subs
-      net = 0
-      if i >= @subs.length - 30
-        sevenNets.push sub.started - sub.cancelled
-      else
-        sevenNets.push sub.started - averageCancelled
-      if sevenNets.length > 7
-        sevenNets.shift()
-      if sevenNets.length is 7
-        net = sevenNets.reduce((a, b) -> a + b) / 7
-      levelPoints.push
-        x: i
-        y: net
-        day: sub.day
-        pointID: "#{netSubsID}#{i}"
-        values: []
-
-    # Ensure points for each day
-    for day, i in days
-      if levelPoints.length <= i or levelPoints[i].day isnt day
-        prevY = if i > 0 then levelPoints[i - 1].y else 0.0
-        levelPoints.splice i, 0,
-          y: prevY
-          day: day
-          values: []
-      levelPoints[i].x = i
-      levelPoints[i].pointID = "#{netSubsID}#{i}"
-
-    levelPoints.splice(0, levelPoints.length - timeframeDays) if levelPoints.length > timeframeDays
-
-    @analytics.graphs[0].lines.push
-      lineID: netSubsID
-      enabled: true
-      points: levelPoints
-      description: lineMetadata[netSubsID].description
-      lineColor: lineMetadata[netSubsID].color
-      strokeWidth: lineMetadata[netSubsID].strokeWidth
-      min: 0
-      max: d3.max(@subs[-timeframeDays..], (d) -> d.started + 2)
+          x: i
+          y: averageCancelled
+          day: sub.day
+          pointID: "#{cancelledSubsID}#{i}"
+          values: []
+
+      # Ensure points for each day
+      for day, i in days
+        if levelPoints.length <= i or levelPoints[i].day isnt day
+          prevY = if i > 0 then levelPoints[i - 1].y else 0.0
+          levelPoints.splice i, 0,
+            y: prevY
+            day: day
+            values: []
+        levelPoints[i].x = i
+        levelPoints[i].pointID = "#{cancelledSubsID}#{i}"
+
+      levelPoints.splice(0, levelPoints.length - timeframeDays) if levelPoints.length > timeframeDays
+
+      graph.lines.push
+        lineID: cancelledSubsID
+        enabled: true
+        points: levelPoints
+        description: lineMetadata[cancelledSubsID].description
+        lineColor: lineMetadata[cancelledSubsID].color
+        strokeWidth: lineMetadata[cancelledSubsID].strokeWidth
+        min: 0
+        max: d3.max(@subs[-timeframeDays..], (d) -> d.started + 2)
+
+      ## 7-Day Net Subs
+
+      # Build line data
+      levelPoints = []
+      sevenNets = []
+      for sub, i in @subs
+        net = 0
+        if i >= @subs.length - 30
+          sevenNets.push sub.started - sub.cancelled
+        else
+          sevenNets.push sub.started - averageCancelled
+        if sevenNets.length > 7
+          sevenNets.shift()
+        if sevenNets.length is 7
+          net = sevenNets.reduce((a, b) -> a + b) / 7
+        levelPoints.push
+          x: i
+          y: net
+          day: sub.day
+          pointID: "#{netSubsID}#{i}"
+          values: []
+
+      # Ensure points for each day
+      for day, i in days
+        if levelPoints.length <= i or levelPoints[i].day isnt day
+          prevY = if i > 0 then levelPoints[i - 1].y else 0.0
+          levelPoints.splice i, 0,
+            y: prevY
+            day: day
+            values: []
+        levelPoints[i].x = i
+        levelPoints[i].pointID = "#{netSubsID}#{i}"
+
+      levelPoints.splice(0, levelPoints.length - timeframeDays) if levelPoints.length > timeframeDays
+
+      graph.lines.push
+        lineID: netSubsID
+        enabled: true
+        points: levelPoints
+        description: lineMetadata[netSubsID].description
+        lineColor: lineMetadata[netSubsID].color
+        strokeWidth: lineMetadata[netSubsID].strokeWidth
+        min: 0
+        max: d3.max(@subs[-timeframeDays..], (d) -> d.started + 2)
+
+    @analytics.graphs.push(graph)

   updateAnalyticsGraphs: ->
     # Build d3 graphs


added a basic visible lighting test

added a basic visible lighting test

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

--- app/assets/jax/controllers/lighting.js.coffee
+++ app/assets/jax/controllers/lighting.js.coffee
@@ -0,0 +1,4 @@
+Jax.Controller.create "lighting",
+  index: ->
+    @world.addLight new Jax.Light.Directional
+    @world.addObject new Jax.Model position: [0, 0, -5], mesh: new Jax.Mesh.Sphere


Add coffee

Add 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/Gum-Joe/Web-OS-coffee.git/'


Fix the version

Fix the version

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


Fix the Menu

Fix the Menu


:new: Add a basic main

:new: Add a basic main

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

--- lib/main.coffee
+++ lib/main.coffee
@@ -0,0 +1,12 @@
+module.exports =
+  activate: ->
+  deactivate: ->
+  provideLinter: ->
+    provider =
+      grammarScopes: ['source.python', 'source.python.django']
+      scope: 'file' # or 'project'
+      lintOnFly: false # must be false for scope: 'project'
+      lint: (textEditor)->
+        return new Promise (resolve, reject)->
+          message = {type: 'Error', text: 'Something went wrong', range:[[0,0], [0,1]]}
+          resolve([message])


Use wasReversed instead of isReversed to show the local variable stores some temporal state.

--- src/app/selection.coffee
+++ src/app/selection.coffee
@@ -108,10 +108,10 @@
     { text, shouldOutdent } = @autoIndentText(text)
     oldBufferRange = @getBufferRange()
     @editor.destroyFoldsContainingBufferRow(oldBufferRange.end.row)
-    isReversed = @isReversed()
+    wasReversed = @isReversed()
     @clearSelection()
     newBufferRange = @editor.buffer.change(oldBufferRange, text)
-    @cursor.setBufferPosition(newBufferRange.end, skipAtomicTokens: true) if isReversed
+    @cursor.setBufferPosition(newBufferRange.end, skipAtomicTokens: true) if wasReversed
     @autoOutdentText() if shouldOutdent

   indentSelectedRows: ->


Added contextmenu

Added contextmenu

Added contextmenu with Delete and Duplicate button

--- app/views/editor/level/thangs_tab_view.coffee
+++ app/views/editor/level/thangs_tab_view.coffee
@@ -48,6 +48,8 @@

   events:
     'click #extant-thangs-filter button': 'onFilterExtantThangs'
+    'click #delete': 'onDeleteClicked'
+    'click #duplicate': 'onDuplicateClicked'

   shortcuts:
     'esc': 'selectAddThang'
@@ -61,6 +63,7 @@
     @thangTypes = @supermodel.getCollection new ThangTypeSearchCollection()  # should load depended-on Components, too
     @thangTypes.once 'sync', @onThangTypesLoaded
     @thangTypes.fetch()
+    $(document).bind 'contextmenu', @preventDefaultContextMenu

     # just loading all Components for now: https://github.com/codecombat/codecombat/issues/405
     @componentCollection = @supermodel.getCollection new ComponentsCollection()
@@ -419,6 +422,29 @@
     @onThangsChanged()
     @$el.find('.thangs-column').show()

+  preventDefaultContextMenu: (e) ->
+    e.preventDefault()
+
+  onSpriteContextMenu: (e) ->
+    {clientX, clientY} = e.originalEvent.nativeEvent
+    if @addThangType
+      $('#duplicate a').html 'Stop Duplicate'
+    else
+      $('#duplicate a').html 'Duplicate'
+    $('#contextmenu').css { position: 'fixed', left: clientX, top: clientY }
+    $('#contextmenu').show()
+
+  onDeleteClicked: (e) ->
+    $('#contextmenu').hide()
+    @deleteSelectedExtantThang e
+
+  onDuplicateClicked: (e) ->
+    $('#contextmenu').hide()
+    if !@addThangType
+      thang = @selectedExtantThang.spriteName
+      e.target = $(".add-thang-palette-icon[data-thang-type='" + thang + "']").get 0
+    @selectAddThang e
+

 class ThangsNode extends TreemaNode.nodeMap.array
   valueClass: 'treema-array-replacement'


add some random atom config file that appeared here one day

error: pathspec 'atom.symlink/github.cson' did not match any file(s) known to git

--- atom.symlink/github.cson
+++ atom.symlink/github.cson
@@ -0,0 +1 @@
+# Store non-visible GitHub package state.


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


minor

minor


Update configuration

Update configuration

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


Update configuration

Update configuration


bug fix

bug fix


Can now specify the auth cookie key or falls back to default

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/MicrosmartSA/ubiquity-ui.git/'


bubblebot bug fix

bubblebot bug fix


adds basic storage test

adds basic storage test

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

--- test/feature/storage-test.coffee
+++ test/feature/storage-test.coffee
@@ -0,0 +1,25 @@
+describe 'Storage', ->
+
+  beforeEach (done) ->
+    browser.visit('/')
+      .then ->
+        initPeteshow = "Peteshow.init()"
+        browser.evaluate(initPeteshow)
+        done()
+
+  checkStorage = (value) ->
+    it 'restores the active state from last session', (done) ->
+      browser.assert.evaluate("Peteshow.store.get('active')", value)
+      done()
+
+  it 'changes the active state to true', (done) ->
+    browser.evaluate("Peteshow.show(true)")
+    browser.assert.hasClass('#peteshow', 'active')
+    done()
+  checkStorage(true)
+
+  it 'changes the active state to true', (done) ->
+    browser.evaluate("Peteshow.show(false)")
+    browser.assert.hasNoClass('#peteshow', 'active')
+    done()
+  checkStorage(false)


add gulp file

add gulp file

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

--- gulpfile.coffee
+++ gulpfile.coffee
@@ -0,0 +1,324 @@
+
+_ = require 'lodash/fp'
+path = require 'path'
+gulp = require 'gulp'
+
+$ = _.merge do require('gulp-load-plugins'), {
+    del: (option, glob) -> require('del')(glob, option)
+    rollup: require('rollup').rollup
+    exec: require('child_process').exec
+    watch: (task, glob) -> gulp.watch glob, debounceDelay: 2000, task
+}
+
+
+
+val = {
+    npm: 'node_modules'
+    source: 'source'
+    dist: 'dist'
+    tmp: '.tmp'
+}
+
+
+
+utils = {
+    list: _.flow [
+        _.trim
+        _.split /\s+|,/
+    ]
+
+    path:
+        src: (str = '') -> path.join val.source, str
+        dst: (str = '') -> path.join val.dist, str
+        tmp: (str = '') -> path.join val.tmp, str
+        npm: (str = '') -> path.join val.npm, str
+
+    require: (module, config = {}) ->
+        if _.isString config then config = require config
+        require(module)(config)
+
+    npm_resolve: (rest...) ->
+        path.resolve [__dirname, val.npm, rest...]...
+
+    prod: !!$.util.env.production
+}
+
+
+
+
+
+gulp.task 'clean', ->
+
+    $.del {force: true}, [
+        utils.path.dst()
+        utils.path.tmp()
+        utils.path.src 'codegen'
+    ]
+
+
+
+gulp.task 'assets', ->
+
+    gulp.src [
+            utils.path.src 'assets/*'
+        ]
+
+        # .pipe $.debug minimal: true
+
+        .pipe $.if (({path}) -> not utils.prod and path.endsWith 'assets/index.html'),
+            $.replace /(<script)\s+async/, '$1'
+
+        .pipe gulp.dest utils.path.dst()
+
+
+
+gulp.task 'polyfills', ->
+
+    vendor = '
+        core-js/client/shim.min.js
+        regenerator-runtime/runtime.js
+        zone.js/dist/zone.min.js
+    '
+
+    vendor_dev = '
+        zone.js/dist/long-stack-trace-zone.min.js
+    '
+
+    make = _.flow _.compact [
+        (vendor, dev) ->
+            return vendor if utils.prod
+            return vendor.concat '\n', dev
+
+        utils.list
+
+        not utils.prod and _.map (item) ->
+            item.replace '.min.js', '.js'
+
+        _.map utils.path.npm
+    ]
+
+    gulp.src make vendor, vendor_dev
+        .pipe $.if utils.prod, $.uglify mangle: false
+        .pipe $.concat 'polyfills.min.js'
+        .pipe gulp.dest utils.path.dst 'scripts'
+
+
+
+gulp.task 'css.vendor', ->
+
+    vendor = '
+        purecss/build/pure-min.css
+        purecss/build/grids-responsive-min.css
+        purecss/build/buttons-min.css
+
+        github-fork-ribbon-css/gh-fork-ribbon.css
+    '
+
+    make = _.flow _.compact [
+        utils.list
+
+        not utils.prod and _.map (item) ->
+            item.replace /[-.]min.css/, '.css'
+
+        _.map utils.path.npm
+    ]
+
+    gulp.src make vendor
+        .pipe $.concat 'vendor.min.css'
+        .pipe $.stripComments.text space: false
+        .pipe gulp.dest utils.path.dst 'styles'
+
+
+
+gulp.task 'rollup', utils.list('scripts'), (callback) ->
+
+    show_bundle_size = _.some Boolean, [utils.prod, $.util.env.build]
+
+    $.rollup {
+        entry: utils.path.dst(
+            if utils.prod then 'scripts/main.aot.js' else 'scripts/main.js'
+        )
+        cache: utils.cache
+        plugins: _.compact [
+            resolveId: (id, from) ->
+                rxjs = 'rxjs'
+                if id.startsWith(rxjs) and not id.startsWith("#{ rxjs }-es")
+                    return utils.npm_resolve id.replace ///(#{ rxjs })(.*)///, '$1-es$2.js'
+
+                text = '!text'
+                if id.endsWith text
+                    return path.resolve from, '..', id[...-text.length]
+
+            utils.require 'rollup-plugin-string', {
+                include: '**/*.{css,html,txt}'
+                exclude: 'node_modules/**'
+            }
+
+            utils.require 'rollup-plugin-node-resolve'
+
+            utils.require 'rollup-plugin-buble', {
+                transforms: {
+                    modules: false
+                    dangerousForOf: false
+                    spreadRest: true
+                    generator: false
+                    forOf: false
+                }
+            }
+
+            utils.require 'rollup-plugin-inject', do ->
+                config = exclude: 'node_modules/**'
+
+                map_w_key = _.mapValues.convert 'cap': false
+                make = map_w_key (value, key) -> ['tslib/tslib.es6.js', key]
+
+                return _.merge config, make require 'tslib'
+
+            utils.prod and utils.require 'rollup-plugin-uglify', {
+                mangle:
+                    screw_ie8: true
+                    keep_fnames: false
+
+                compress:
+                    screw_ie8: true
+                    dead_code: true
+            }
+
+            show_bundle_size and utils.require 'rollup-plugin-filesize'
+        ]
+    }
+
+    .then (bundle) ->
+
+        utils.cache = bundle
+
+        bundle.write {
+            format: 'iife'
+            dest: utils.path.dst 'scripts/bundle.js'
+        }
+
+
+
+gulp.task 'rollup_strip', utils.list('rollup'), ->
+
+    gulp.src utils.path.dst 'scripts/bundle.js'
+        .pipe $.stripComments space: true
+        .pipe gulp.dest utils.path.dst 'scripts'
+
+
+
+gulp.task 'tmp', ->
+
+    gulp.src utils.path.src '**'
+        .pipe $.plumber()
+
+        .pipe $.if (({path}) -> utils.prod and path.endsWith 'tsconfig.json'),
+            $.replace /(strictNullChecks.:(\s+)?)true/, '$1false'
+
+        .pipe $.if '**/*.css',
+            $.postcss [
+                utils.require 'postcss-simple-vars', {
+                    variables: require './'.concat utils.path.src 'styles/variables'
+                }
+                utils.require 'postcss-selector-not'
+                utils.require 'postcss-nesting'
+                utils.require 'postcss-color-function'
+                utils.require 'autoprefixer', {
+                    browsers: [
+                        'last 2 versions'
+                        'ie >= 9'
+                        'iOS >= 8'
+                        'Safari >= 8'
+                    ]
+                }
+            ]
+        .pipe gulp.dest utils.path.tmp(), dot: true
+
+        .pipe $.if not utils.prod,
+            $.inlineNg2Template {
+                base: 'source'
+                useRelativePaths: true
+            }
+        .pipe $.if not utils.prod,
+            gulp.dest utils.path.tmp(), dot: true
+
+        .pipe $.if '**/*.css', gulp.dest utils.path.dst()
+
+
+
+gulp.task 'typescript', utils.list('tmp'), (callback) ->
+
+    if utils.prod
+
+        $.exec "cd #{ utils.path.tmp() } ; ../node_modules/.bin/ngc",
+
+            (err, stdout, stderr) ->
+                $.debug stdout
+                $.debug stderr
+                callback err
+
+    else
+
+        ts = $.typescript.createProject utils.path.tmp('tsconfig.json'), {
+            typescript: require 'typescript'
+            isolatedModules: true
+        }
+
+        gulp.src [
+                utils.path.tmp '**/*.{ts,tsx,d.ts}'
+                '!**/main.aot.ts'
+            ]
+            .pipe $.plumber()
+            .pipe $.typescript ts
+            .pipe gulp.dest utils.path.dst()
+
+
+
+gulp.task 'scripts', utils.list('typescript'), ->
+
+    type = {
+        coffee: '**/*.{coffee,coffee.md,litecoffee}'
+        typescript: '**/*.{ts,tsx,d.ts}'
+    }
+
+    gulp.src [
+            utils.path.src '**'
+            '!**/*.ts'
+            '!**/*.css'
+            '!**/*.html'
+        ]
+
+        # .pipe $.debug minimal: true
+
+        .pipe $.plumber()
+
+        .pipe $.if type.coffee,
+            $.coffee bare: true
+
+        .pipe $.if (({path}) -> utils.prod and path.endsWith '.js'),
+            $.regenerator includeRuntime: false
+
+        .pipe gulp.dest utils.path.dst()
+
+
+
+gulp.task 'dev', utils.list('assets css.vendor polyfills rollup_strip'), ->
+
+    return if $.util.env.build
+
+    $.watch utils.list('rollup_strip'), [
+       utils.path.src 'app/**/*.{css,html}'
+       utils.path.src '**/*.{js,coffee,coffee.md,litecoffee,ts,tsx}'
+    ]
+
+    $.watch utils.list('tmp'), [
+       utils.path.src 'styles/**/*.{css,coffee}'
+    ]
+
+
+
+gulp.task 'build', utils.list 'assets css.vendor polyfills rollup'
+
+
+
+gulp.task 'default', ['dev']


Fix gulpfile compiler error #1141

Fix gulpfile compiler error #1141

--- gulpfile.coffee
+++ gulpfile.coffee
@@ -6,7 +6,7 @@
   return gulp.src([
     './source/js/src/utils.js',
     './source/js/src/motion.js',
-    './source/js/src/hook-duoshuo.js'
+    './source/js/src/hook-duoshuo.js',
     './source/js/src/bootstrap.js',
     './source/js/src/post-details.js',
     './source/js/src/schemes/pisces.js'


syntax cleaning

syntax cleaning

--- src/index.coffee
+++ src/index.coffee
@@ -37,7 +37,7 @@
     return klass

 module.exports.api = api = require './api'
-
+

 # to use cozydb as an americano module
 # Plugin configuration: run through models/requests.(coffee|js) and save
@@ -50,8 +50,9 @@
     # if we are given a db or dbName options
     # or env variable is set
     # the app is meant to be used standalone
-    if process.env.RUN_STANDALONE or
-       options.db or options.dbName
+    console.log options
+    if process.env.RUN_STANDALONE or options.db or options.dbName
+        console.log 'AAAAAAAAAAAAAAAAAAAAAA'
         try
             Pouch = require 'pouchdb'
             PouchModel = require './pouchmodel'


less curve

less curve

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


Initial commit

Initial commit

boot.coffee, CoffeeScript i.e., transcompiles to JavaScript -> boot.js
Help: http://coffeescript.org/.

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

--- source/core/coffee/boot.coffee
+++ source/core/coffee/boot.coffee
@@ -0,0 +1,18 @@
+#
+# CBBL®
+# Computational Biology and Bioinformatics Laboratory.
+# _______________________________________________________________
+# CoffeeScript, http://coffeescript.org/.
+# The Non-AMD JavaScript - for defining "CBBL®" configurations.
+# _______________________________________________________________
+# Architecture and Code Handcrafted by Prabhat Kumar.
+# Architectuur en Code handgemaakt door Prabhat Kumar.
+# @author    : Prabhat Kumar [http://prabhatkumar.org/]
+# @copyright : Sequømics Corporation [http://sequomics.com/]
+# _______________________________________________________________
+# @date      : 10-May-2016
+# @license   : Apache, version 2.0
+# @require   : Node.js®
+# @require   : NPM
+# @require   : Grunt
+# _______________________________________________________________


Start UpdatesPanel spec

Start UpdatesPanel spec

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

--- spec/updates-panel-spec.coffee
+++ spec/updates-panel-spec.coffee
@@ -0,0 +1,23 @@
+UpdatesPanel = require '../lib/updates-panel'
+PackageManager = require '../lib/package-manager'
+Q = require 'q'
+
+describe 'UpdatesPanel', ->
+  beforeEach ->
+    @panel = new UpdatesPanel(new PackageManager)
+
+  it "Shows updates when updates are available", ->
+    pack =
+      name: 'test-package'
+      description: 'some description'
+      latestVersion: '99.0.0'
+      version: '1.0.0'
+
+    # skip packman stubbing
+    @panel.beforeShow(updates: [pack])
+    expect(@panel.updatesContainer.children().length).toBe(1)
+
+  it "Shows a message when updates are not available", ->
+    @panel.beforeShow(updates: [])
+    expect(@panel.updatesContainer.children().length).toBe(0)
+    expect(@panel.noUpdatesMessage.css('display')).not.toBe('none')


explicit type signatures were hurting readability

so I moved them out of the way a little

--- src/nodes.coffee
+++ src/nodes.coffee
@@ -43,167 +43,136 @@

     BinOps: [ ['left', 'right'],
       AssignOps: [ ['assignee', 'expression'],
-        # AssignOp :: Assignables -> Exprs -> AssignOp
-        AssignOp: null
-        # ClassProtoAssignOp :: ObjectInitialiserKeys -> Exprs -> ClassProtoAssignOp
-        ClassProtoAssignOp: null
-        # CompoundAssignOp :: string -> Assignables -> Exprs -> CompoundAssignOp
-        CompoundAssignOp: [['op', 'assignee', 'expression']]
-        # ExistsAssignOp :: Assignables -> Exprs -> ExistsAssignOp
-        ExistsAssignOp: null
+        AssignOp: null # :: Assignables -> Exprs -> AssignOp
+        ClassProtoAssignOp: null # :: ObjectInitialiserKeys -> Exprs -> ClassProtoAssignOp
+        CompoundAssignOp: [['op', 'assignee', 'expression']] # :: string -> Assignables -> Exprs -> CompoundAssignOp
+        ExistsAssignOp: null # :: Assignables -> Exprs -> ExistsAssignOp
       ]
       BitOps: [ null
-        BitAndOp: null # BitAndOp :: Exprs -> Exprs -> BitAndOp
-        BitOrOp: null # BitOrOp :: Exprs -> Exprs -> BitOrOp
-        BitXorOp: null # BitXorOp :: Exprs -> Exprs -> BitXorOp
-        LeftShiftOp: null # LeftShiftOp :: Exprs -> Exprs -> LeftShiftOp
-        SignedRightShiftOp: null # SignedRightShiftOp :: Exprs -> Exprs -> SignedRightShiftOp
-        UnsignedRightShiftOp: null # UnsignedRightShiftOp :: Exprs -> Exprs -> UnsignedRightShiftOp
+        BitAndOp: null # :: Exprs -> Exprs -> BitAndOp
+        BitOrOp: null # :: Exprs -> Exprs -> BitOrOp
+        BitXorOp: null # :: Exprs -> Exprs -> BitXorOp
+        LeftShiftOp: null # :: Exprs -> Exprs -> LeftShiftOp
+        SignedRightShiftOp: null # :: Exprs -> Exprs -> SignedRightShiftOp
+        UnsignedRightShiftOp: null # :: Exprs -> Exprs -> UnsignedRightShiftOp
       ]
       ComparisonOps: [ null
-        EQOp: null # EQOp :: Exprs -> Exprs -> EQOp
-        GTEOp: null # GTEOp :: Exprs -> Exprs -> GTEOp
-        GTOp: null # GTOp :: Exprs -> Exprs -> GTOp
-        LTEOp: null # LTEOp :: Exprs -> Exprs -> LTEOp
-        LTOp: null # LTOp :: Exprs -> Exprs -> LTOp
-        NEQOp: null # NEQOp :: Exprs -> Exprs -> NEQOp
+        EQOp: null # :: Exprs -> Exprs -> EQOp
+        GTEOp: null # :: Exprs -> Exprs -> GTEOp
+        GTOp: null # :: Exprs -> Exprs -> GTOp
+        LTEOp: null # :: Exprs -> Exprs -> LTEOp
+        LTOp: null # :: Exprs -> Exprs -> LTOp
+        NEQOp: null # :: Exprs -> Exprs -> NEQOp
       ]
       # Note: A tree of ConcatOp represents interpolation
-      ConcatOp: null # ConcatOp :: Exprs -> Exprs -> ConcatOp
-      ExistsOp: null # ExistsOp :: Exprs -> Exprs -> ExistsOp
-      ExtendsOp: null # ExtendsOp :: Exprs -> Exprs -> ExtendsOp
-      InOp: null # InOp :: Exprs -> Exprs -> InOp
-      InstanceofOp: null # InstanceofOp :: Exprs -> Exprs -> InstanceofOp
+      ConcatOp: null # :: Exprs -> Exprs -> ConcatOp
+      ExistsOp: null # :: Exprs -> Exprs -> ExistsOp
+      ExtendsOp: null # :: Exprs -> Exprs -> ExtendsOp
+      InOp: null # :: Exprs -> Exprs -> InOp
+      InstanceofOp: null # :: Exprs -> Exprs -> InstanceofOp
       LogicalOps: [ null
-        LogicalAndOp: null # LogicalAndOp :: Exprs -> Exprs -> LogicalAndOp
-        LogicalOrOp: null # LogicalOrOp :: Exprs -> Exprs -> LogicalOrOp
+        LogicalAndOp: null # :: Exprs -> Exprs -> LogicalAndOp
+        LogicalOrOp: null # :: Exprs -> Exprs -> LogicalOrOp
       ]
       MathsOps: [ null
-        DivideOp: null # DivideOp :: Exprs -> Exprs -> DivideOp
-        MultiplyOp: null # MultiplyOp :: Exprs -> Exprs -> MultiplyOp
-        RemOp: null # RemOp :: Exprs -> Exprs -> RemOp
-        SubtractOp: null # SubtractOp :: Exprs -> Exprs -> SubtractOp
-      ]
-      OfOp: null # OfOp :: Exprs -> Exprs -> OfOp
-      PlusOp: null # PlusOp :: Exprs -> Exprs -> PlusOp
-      Range: [['isInclusive', 'left', 'right']] # Range :: bool -> Exprs -> Exprs -> Range
-      SeqOp: null # SeqOp :: Exprs -> Exprs -> SeqOp
+        DivideOp: null # :: Exprs -> Exprs -> DivideOp
+        MultiplyOp: null # :: Exprs -> Exprs -> MultiplyOp
+        RemOp: null # :: Exprs -> Exprs -> RemOp
+        SubtractOp: null # :: Exprs -> Exprs -> SubtractOp
+      ]
+      OfOp: null # :: Exprs -> Exprs -> OfOp
+      PlusOp: null # :: Exprs -> Exprs -> PlusOp
+      Range: [['isInclusive', 'left', 'right']] # :: bool -> Exprs -> Exprs -> Range
+      SeqOp: null # :: Exprs -> Exprs -> SeqOp
     ]

     Statements: [ [],
-      Break: null # Break :: Break
-      Continue: null # Continue :: Continue
-      Return: [['expression']] # Return :: Exprs -> Return
-      Throw: [['expression']] # Throw :: Exprs -> Throw
+      Break: null # :: Break
+      Continue: null # :: Continue
+      Return: [['expression']] # :: Exprs -> Return
+      Throw: [['expression']] # :: Exprs -> Throw
     ]

     UnaryOps: [ ['expression'],
-      BitNotOp: null # BitNotOp :: Exprs -> BitNotOp
-      DeleteOp: null # DeleteOp :: MemberAccessOps -> DeleteOp
-      DoOp: null # DoOp :: Exprs -> DoOp
-      LogicalNotOp: null # LogicalNotOp :: Exprs -> LogicalNotOp
-      NewOp: [['constructor', 'arguments']] # NewOp :: Exprs -> [Arguments] -> NewOp
-      PreDecrementOp: null # PreDecrementOp :: Exprs -> PreDecrementOp
-      PreIncrementOp: null # PreIncrementOp :: Exprs -> PreIncrementOp
-      PostDecrementOp: null # PostDecrementOp :: Exprs -> PostDecrementOp
-      PostIncrementOp: null # PostIncrementOp :: Exprs -> PostIncrementOp
-      TypeofOp: null # TypeofOp :: Exprs -> TypeofOp
-      UnaryExistsOp: null # UnaryExistsOp :: Exprs -> UnaryExistsOp
-      UnaryNegateOp: null # UnaryNegateOp :: Exprs -> UnaryNegateOp
-      UnaryPlusOp: null # UnaryPlusOp :: Exprs -> UnaryPlusOp
+      BitNotOp: null # :: Exprs -> BitNotOp
+      DeleteOp: null # :: MemberAccessOps -> DeleteOp
+      DoOp: null # :: Exprs -> DoOp
+      LogicalNotOp: null # :: Exprs -> LogicalNotOp
+      NewOp: [['constructor', 'arguments']] # :: Exprs -> [Arguments] -> NewOp
+      PreDecrementOp: null # :: Exprs -> PreDecrementOp
+      PreIncrementOp: null # :: Exprs -> PreIncrementOp
+      PostDecrementOp: null # :: Exprs -> PostDecrementOp
+      PostIncrementOp: null # :: Exprs -> PostIncrementOp
+      TypeofOp: null # :: Exprs -> TypeofOp
+      UnaryExistsOp: null # :: Exprs -> UnaryExistsOp
+      UnaryNegateOp: null # :: Exprs -> UnaryNegateOp
+      UnaryPlusOp: null # :: Exprs -> UnaryPlusOp
     ]

     MemberAccessOps: [ null
       StaticMemberAccessOps: [ ['expression', 'memberName'],
-        # MemberAccessOp :: Exprs -> MemberNames -> MemberAccessOp
-        MemberAccessOp: null
-        # ProtoMemberAccessOp :: Exprs -> MemberNames -> ProtoMemberAccessOp
-        ProtoMemberAccessOp: null
-        # SoakedMemberAccessOp :: Exprs -> MemberNames -> SoakedMemberAccessOp
-        SoakedMemberAccessOp: null
-        # SoakedProtoMemberAccessOp :: Exprs -> MemberNames -> SoakedProtoMemberAccessOp
-        SoakedProtoMemberAccessOp: null
+        MemberAccessOp: null # :: Exprs -> MemberNames -> MemberAccessOp
+        ProtoMemberAccessOp: null # :: Exprs -> MemberNames -> ProtoMemberAccessOp
+        SoakedMemberAccessOp: null # :: Exprs -> MemberNames -> SoakedMemberAccessOp
+        SoakedProtoMemberAccessOp: null # :: Exprs -> MemberNames -> SoakedProtoMemberAccessOp
       ]
       DynamicMemberAccessOps: [ ['expression', 'indexingExpr'],
-        # DynamicMemberAccessOp :: Exprs -> Exprs -> DynamicMemberAccessOp
-        DynamicMemberAccessOp: null
-        # DynamicProtoMemberAccessOp :: Exprs -> Exprs -> DynamicProtoMemberAccessOp
-        DynamicProtoMemberAccessOp: null
-        # SoakedDynamicMemberAccessOp :: Exprs -> Exprs -> SoakedDynamicMemberAccessOp
-        SoakedDynamicMemberAccessOp: null
-        # SoakedDynamicProtoMemberAccessOp :: Exprs -> Exprs -> SoakedDynamicProtoMemberAccessOp
-        SoakedDynamicProtoMemberAccessOp: null
+        DynamicMemberAccessOp: null # :: Exprs -> Exprs -> DynamicMemberAccessOp
+        DynamicProtoMemberAccessOp: null # :: Exprs -> Exprs -> DynamicProtoMemberAccessOp
+        SoakedDynamicMemberAccessOp: null # :: Exprs -> Exprs -> SoakedDynamicMemberAccessOp
+        SoakedDynamicProtoMemberAccessOp: null # :: Exprs -> Exprs -> SoakedDynamicProtoMemberAccessOp
       ]
     ]

     FunctionApplications: [ ['function', 'arguments'],
-      # FunctionApplication :: Exprs -> [Arguments] -> FunctionApplication
-      FunctionApplication: null
-      # SoakedFunctionApplication :: Exprs -> [Arguments] -> SoakedFunctionApplication
-      SoakedFunctionApplication: null
-    ]
-    # Super :: [Arguments] -> Super
-    Super: [['arguments']]
-
-    # Program :: Maybe Exprs -> Program
-    Program: [['block']]
-    # Block :: [Statement] -> Block
-    Block: [['statements']]
-    # Conditional :: Exprs -> Maybe Exprs -> Maybe Exprs -> Conditional
-    Conditional: [['condition', 'block', 'elseBlock']]
-    # ForIn :: Assignable -> Maybe Assignable -> Exprs -> Exprs -> Maybe Exprs -> Maybe Exprs -> ForIn
-    ForIn: [['valAssignee', 'keyAssignee', 'expression', 'step', 'filterExpr', 'block']]
-    # ForOf :: bool -> Assignable -> Maybe Assignable -> Exprs -> Maybe Exprs -> Maybe Exprs -> ForOf
-    ForOf: [['isOwn', 'keyAssignee', 'valAssignee', 'expression', 'filterExpr', 'block']]
-    # Switch :: Maybe Exprs -> [SwitchCase] -> Maybe Exprs -> Switch
-    Switch: [['expression', 'cases', 'elseBlock']]
-    # SwitchCase :: [Exprs] -> Maybe Expr -> SwitchCase
-    SwitchCase: [['conditions', 'block']]
-    # Try :: Exprs -> Maybe Assignable -> Maybe Exprs -> Maybe Exprs -> Try
-    Try: [['block', 'catchAssignee', 'catchBlock', 'finallyBlock']]
-    # While :: Exprs -> Maybe Exprs -> While
-    While: [['condition', 'block']]
-
-    # ArrayInitialiser :: [ArrayInitialiserMembers] -> ArrayInitialiser
-    ArrayInitialiser: [['members']]
-    # ObjectInitialiser :: [ObjectInitialiserMember] -> ObjectInitialiser
-    ObjectInitialiser: [['members']]
-    # ObjectInitialiserMember :: ObjectInitialiserKeys -> Exprs -> ObjectInitialiserMember
-    ObjectInitialiserMember: [['key', 'expression']]
-    # Class:: Maybe Assignable -> Maybe Exprs -> Maybe Exprs -> Class
-    Class: ['nameAssignment', 'parent', 'block']
+      FunctionApplication: null # :: Exprs -> [Arguments] -> FunctionApplication
+      SoakedFunctionApplication: null # :: Exprs -> [Arguments] -> SoakedFunctionApplication
+    ]
+    Super: [['arguments']] # :: [Arguments] -> Super
+
+    Program: [['block']] # :: Maybe Exprs -> Program
+    Block: [['statements']] # :: [Statement] -> Block
+    Conditional: [['condition', 'block', 'elseBlock']] # :: Exprs -> Maybe Exprs -> Maybe Exprs -> Conditional
+    ForIn: [['valAssignee', 'keyAssignee', 'expression', 'step', 'filterExpr', 'block']] # :: Assignable -> Maybe Assignable -> Exprs -> Exprs -> Maybe Exprs -> Maybe Exprs -> ForIn
+    ForOf: [['isOwn', 'keyAssignee', 'valAssignee', 'expression', 'filterExpr', 'block']] # :: bool -> Assignable -> Maybe Assignable -> Exprs -> Maybe Exprs -> Maybe Exprs -> ForOf
+    Switch: [['expression', 'cases', 'elseBlock']] # :: Maybe Exprs -> [SwitchCase] -> Maybe Exprs -> Switch
+    SwitchCase: [['conditions', 'block']] # :: [Exprs] -> Maybe Expr -> SwitchCase
+    Try: [['block', 'catchAssignee', 'catchBlock', 'finallyBlock']] # :: Exprs -> Maybe Assignable -> Maybe Exprs -> Maybe Exprs -> Try
+    While: [['condition', 'block']] # :: Exprs -> Maybe Exprs -> While
+
+    ArrayInitialiser: [['members']] # :: [ArrayInitialiserMembers] -> ArrayInitialiser
+    ObjectInitialiser: [['members']] # :: [ObjectInitialiserMember] -> ObjectInitialiser
+    ObjectInitialiserMember: [['key', 'expression']] # :: ObjectInitialiserKeys -> Exprs -> ObjectInitialiserMember
+    Class: ['nameAssignment', 'parent', 'block'] # :: Maybe Assignable -> Maybe Exprs -> Maybe Exprs -> Class
     Functions: [ ['parameters', 'block'],
-      Function: null # Function :: [Parameters] -> Maybe Exprs -> Function
-      BoundFunction: null # BoundFunction :: [Parameters] -> Maybe Exprs -> BoundFunction
+      Function: null # :: [Parameters] -> Maybe Exprs -> Function
+      BoundFunction: null # :: [Parameters] -> Maybe Exprs -> BoundFunction
     ]
     Identifiers: [ ['data'],
-      Identifier: null # Identifier :: string -> Identifier
-      GenSym: [['data', 'ns']] # GenSym :: string -> string -> GenSym
-    ]
-    Null: null # Null :: Null
+      Identifier: null # :: string -> Identifier
+      GenSym: [['data', 'ns']] # :: string -> string -> GenSym
+    ]
+    Null: null # :: Null
     Primitives: [ ['data'],
-      Bool: null # Bool :: bool -> Bool
-      JavaScript: null # JavaScript :: string -> JavaScript
+      Bool: null # :: bool -> Bool
+      JavaScript: null # :: string -> JavaScript
       Numbers: [ null,
-        Int: null # Int :: float -> Int
-        Float: null # Float :: float -> Float
-      ]
-      String: null # String :: string -> String
+        Int: null # :: float -> Int
+        Float: null # :: float -> Float
+      ]
+      String: null # :: string -> String
     ]
     RegExps: [ null
-      # RegExp :: string -> [string] -> RegExp
-      RegExp: [['data', 'flags']]
-      # HeregExp :: Exprs -> [string] -> HeregExp
-      HeregExp: [['expression', 'flags']]
-    ]
-    This: null # This :: This
-    Undefined: null # Undefined :: Undefined
-
-    # Slice :: Exprs -> bool -> Maybe Exprs -> Maybe Exprs -> Slice
-    Slice: [['expression', 'isInclusive', 'left', 'right']]
-
-    Rest: [['expression']] # Rest :: Exprs -> Rest
-    Spread: [['expression']] # Spread :: Exprs -> Spread
+      RegExp: [['data', 'flags']] # :: string -> [string] -> RegExp
+      HeregExp: [['expression', 'flags']] # :: Exprs -> [string] -> HeregExp
+    ]
+    This: null # :: This
+    Undefined: null # :: Undefined
+
+    Slice: [['expression', 'isInclusive', 'left', 'right']] # :: Exprs -> bool -> Maybe Exprs -> Maybe Exprs -> Slice
+
+    Rest: [['expression']] # :: Exprs -> Rest
+    Spread: [['expression']] # :: Exprs -> Spread
   ]


Fix rebase issues

Fix rebase issues

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


Added code to remove css on closing cheatsheet.


add Gruntfile.coffee

add Gruntfile.coffee

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

--- Gruntfile.coffee
+++ Gruntfile.coffee
@@ -0,0 +1,54 @@
+'use strict'
+
+module.exports = (grunt) ->
+
+  # Project configuration.
+  grunt.initConfig(
+    nodeunit:
+      files: ['test/**/*_test.js']
+
+    jshint:
+      options:
+        jshintrc: '.jshintrc'
+      gruntfile:
+        src: 'Gruntfile.js'
+      lib:
+        src: ['lib/**/*.js']
+      test:
+        src: ['test/**/*.js']
+
+    coffee:
+      options: { bare: true }
+      compile:
+        expand: true
+        cwd: 'src'
+        src: ['**/*.coffee']
+        dest: 'lib'
+        ext: '.js'
+
+    watch:
+      gruntfile:
+        files: '<%= jshint.gruntfile.src %>'
+        tasks: ['jshint:gruntfile']
+      lib:
+        files: '<%= jshint.lib.src %>'
+        tasks: ['jshint:lib', 'nodeunit']
+      src:
+        files: 'src/**/*.coffee'
+        tasks: [ 'coffee' ]
+      test:
+        files: '<%= jshint.test.src %>'
+        tasks: ['jshint:test', 'nodeunit']
+  )
+
+  # These plugins provide necessary tasks.
+  grunt.loadNpmTasks 'grunt-contrib-nodeunit'
+  grunt.loadNpmTasks 'grunt-contrib-jshint'
+  grunt.loadNpmTasks 'grunt-contrib-watch'
+  grunt.loadNpmTasks 'grunt-contrib-coffee'
+
+  # Default task.
+  grunt.registerTask 'default', [
+      'jshint'
+      'nodeunit'
+  ]


Fix deploy.

Fix deploy.

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/tghw/grunt-heroku.git/'


style trailing space fix

style trailing space 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/keboola/kbc-ui-sardine.git/'


Updated data model on first two issues to better reflect actual model for scoring.

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


Update pt-PT.coffee

Update pt-PT.coffee

--- app/locale/pt-PT.coffee
+++ app/locale/pt-PT.coffee
@@ -64,7 +64,7 @@
     achievements: "Conquistas" # Tooltip on achievement list button from /play
     account: "Conta" # Tooltip on account button from /play
     settings: "Definições" # Tooltip on settings button from /play
-#    poll: "Poll" # Tooltip on poll button from /play
+    poll: "Votações" # Tooltip on poll button from /play
     next: "Seguinte" # Go from choose hero to choose inventory before playing a level
     change_hero: "Alterar Herói" # Go back from choose inventory to choose hero
     choose_inventory: "Equipar Itens"
@@ -728,7 +728,7 @@
     thang_title: "Editor de Thangs"
     level_title: "Editor de Níveis"
     achievement_title: "Editor de Conquistas"
-#    poll_title: "Poll Editor"
+    poll_title: "Editor de Votações"
     back: "Voltar"
     revert: "Reverter"
     revert_models: "Reverter Modelos"
@@ -789,13 +789,13 @@
     new_level_title_login: "Inicia Sessão para Criares um Novo Nível"
     new_achievement_title: "Criar uma Nova Conquista"
     new_achievement_title_login: "Inicia Sessão para Criares uma Nova Conquista"
-#    new_poll_title: "Create a New Poll"
-#    new_poll_title_login: "Log In to Create a New Poll"
+    new_poll_title: "Criar uma Nova Votação"
+    new_poll_title_login: "Iniciar Sessão para Criar uma Nova Votação"
     article_search_title: "Procurar Artigos Aqui"
     thang_search_title: "Procurar Thangs Aqui"
     level_search_title: "Procurar Níveis Aqui"
     achievement_search_title: "Procurar Conquistas"
-#    poll_search_title: "Search Polls"
+    poll_search_title: "Procurar Votações"
     read_only_warning2: "Nota: não podes guardar nenhuma edição feita aqui, porque não tens sessão iniciada."
     no_achievements: "Ainda não foram adicionadas conquistas a este nível."
     achievement_query_misc: "Conquista-chave de uma lista de variados"
@@ -809,8 +809,8 @@
     edit_btn_preview: "Pré-visualizar"
     edit_article_title: "Editar Artigo"

-#  polls:
-#    priority: "Priority"
+  polls:
+    priority: "Prioridade"

   contribute:
     page_title: "Contribuir"
@@ -973,7 +973,7 @@
     payments: "Pagamentos"
     purchased: "Adquirido"
     subscription: "Subscrição"
-#    invoices: "Invoices"
+    invoices: "Donativos"
     service_apple: "Apple"
     service_web: "Web"
     paid_on: "Pago Em"
@@ -990,15 +990,15 @@
     status_unsubscribed_active: "Não estás subscrito e não te vamos cobrar, mas a tua conta ainda está ativa, por agora."
     status_unsubscribed: "Ganha acesso a novos níveis, heróis, itens e gemas de bónus com uma subscrição do CodeCombat!"

-#  account_invoices:
-#    amount: "Amount in US dollars"
-#    declined: "Your card was declined"
-#    invalid_amount: "Please enter a US dollar amount."
-#    not_logged_in: "Log in or create an account to access invoices."
-#    pay: "Pay Invoice"
-#    purchasing: "Purchasing..."
-#    retrying: "Server error, retrying."
-#    success: "Successfully paid. Thanks!"
+  account_invoices:
+    amount: "Quantidade em dólares americanos"
+    declined: "O teu cartão foi recusado"
+    invalid_amount: "Por favor introduz uma quantidade de dólares americanos."
+    not_logged_in: "Inicia sessão ou cria uma conta para acederes aos donativos."
+    pay: "Pagar Donativo"
+    purchasing: "A adquirir..."
+    retrying: "Erro do servidor, a tentar novamente."
+    success: "Pago com sucesso. Obrigado!"

   loading_error:
     could_not_load: "Erro ao carregar do servidor"
@@ -1060,8 +1060,8 @@
     feedback: "Feedback"
     payment_info: "Informações de Pagamento"
     campaigns: "Campanhas"
-#    poll: "Poll"
-#    user_polls_record: "Poll Voting History"
+    poll: "Votações"
+    user_polls_record: "Histórico das Votações"

   delta:
     added: "Adicionados/as"


Create behaviour.coffee

Create behaviour.coffee

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

--- assets/behaviour.coffee
+++ assets/behaviour.coffee
@@ -0,0 +1,3 @@
+---
+---
+document.getElementById("output").appendChild renderjson.set_show_to_level(2)(site.github)


Added Ctrl-Shift-Z for Linux Redo.

Added Ctrl-Shift-Z for Linux Redo.

--- keymaps/linux.cson
+++ keymaps/linux.cson
@@ -26,6 +26,7 @@
   'ctrl-w': 'core:close'
   'ctrl-z': 'core:undo'
   'ctrl-y': 'core:redo'
+  'ctrl-shift-z': 'core:redo'
   'ctrl-x': 'core:cut'
   'ctrl-c': 'core:copy'
   'ctrl-v': 'core:paste'


show initial skill category

show initial skill category

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


Clearing the form doesn't reset sort order, pages, and sort direction

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


added shadow and drop shadow paths

added shadow and drop shadow paths

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/niclashoyer/raphael-wires.git/'


Implements SimpleStore for a basic in-memory store

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

--- src/stores/simple.coffee
+++ src/stores/simple.coffee
@@ -0,0 +1,18 @@
+class SimpleStore
+  _cache = []
+
+  initialize: (@options) ->
+
+  set: (value, version) ->
+    _cache.push(value)
+
+  get: (version) ->
+    _cache[version]
+
+  remove: (version) ->
+    _cache.splice(version, 1)
+
+  clear: ->
+    _cache = []
+
+module.exports = SimpleStore


change default layout (fill rows)

change default layout (fill rows)

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


handle case where once is not a function

I don't understant what happens.


[FIX] sometime slug refere to an un-existing app


Utils: remove timestamp dependency of 'generateDummyMessage'

--- client/Main/utils.coffee
+++ client/Main/utils.coffee
@@ -735,9 +735,9 @@

   # Generates a fake SocialMessage object
-  generateDummyMessage: (body, timestamp) ->
-
-    now       = new Date timestamp
+  generateDummyMessage: (body) ->
+
+    now       = new Date
     isoNow    = now.toISOString()

     account = KD.utils.extend KD.whoami(),


add fortune command

add fortune command

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

--- src/scripts/fortune.coffee
+++ src/scripts/fortune.coffee
@@ -0,0 +1,9 @@
+# Get a fortune
+#
+# fortune me - Displays a super true fortune
+
+module.exports = (robot) ->
+  robot.respond /(fortune)( me)?/i, (msg) ->
+    msg.http('http://www.fortunefortoday.com/getfortuneonly.php')
+       .get() (err, res, body) ->
+         msg.reply body


include X-MESHBLU-MESSAGE-TYPE

include X-MESHBLU-MESSAGE-TYPE

--- lib/MessageWebhook.coffee
+++ lib/MessageWebhook.coffee
@@ -6,7 +6,7 @@
   @HTTP_SIGNATURE_OPTIONS:
     keyId: 'meshblu-webhook-key'
     key: config.privateKey
-    headers: [ 'date', 'X-MESHBLU-UUID']
+    headers: [ 'date', 'X-MESHBLU-UUID' ]

   constructor: (options, dependencies={}) ->
     {@uuid, @options, @type} = options
@@ -40,6 +40,10 @@
   doRequest: (options, message={}, callback) =>
     deviceOptions = _.omit @options, 'generateAndForwardMeshbluCredentials', 'signRequest'
     options = _.defaults json: message, deviceOptions, options
+    options.headers ?= {}
+
+    options.headers['X-MESHBLU-MESSAGE-TYPE'] = @type
+
     @request options, (error, response) =>
       return callback error if error?
       return callback new Error "HTTP Status: #{response.statusCode}" unless _.inRange response.statusCode, 200, 300


Remove options for NSQDConnection in Writer

--- src/writer.coffee
+++ src/writer.coffee
@@ -53,16 +53,8 @@
     _.extend @, params

   connect: ->
-    options =
-      heartbeatInterval: @heartbeatInterval
-      tls: @tls
-      tlsVerification: @tlsVerification
-      delate: @deflate
-      deflateLevel: @deflateLevel
-      snappy: @snappy
-      authSecret: @authSecret
-
-    @conn = new WriterNSQDConnection @nsqdHost, @nsqdPort, options
+    @conn = new WriterNSQDConnection @nsqdHost, @nsqdPort, 30, @tls,
+      @tlsVerification, @deflate, @deflateLevel, @snappy
     @conn.connect()

     @conn.on WriterNSQDConnection.READY, =>


Modify code

Modify code

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


Make all images responsive

Make all images responsive

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


Use Config::onDidChange instead of ::observe with callNow: false

--- lib/project-view.coffee
+++ lib/project-view.coffee
@@ -30,16 +30,16 @@
       @paths = null

   subscribeToConfig: ->
-    @subscribe atom.config.observe 'fuzzy-finder.ignoredNames', callNow: false, =>
+    @subscribe atom.config.onDidChange 'fuzzy-finder.ignoredNames', =>
       @reloadPaths = true

-    @subscribe atom.config.observe 'fuzzy-finder.traverseIntoSymlinkDirectories', callNow: false, =>
+    @subscribe atom.config.onDidChange 'fuzzy-finder.traverseIntoSymlinkDirectories', =>
       @reloadPaths = true

-    @subscribe atom.config.observe 'core.ignoredNames', callNow: false, =>
+    @subscribe atom.config.onDidChange 'core.ignoredNames', =>
       @reloadPaths = true

-    @subscribe atom.config.observe 'core.excludeVcsIgnoredPaths', callNow: false, =>
+    @subscribe atom.config.onDidChange 'core.excludeVcsIgnoredPaths', =>
       @reloadPaths = true

   toggle: ->


bugfix

bugfix

--- src/index.coffee
+++ src/index.coffee
@@ -117,7 +117,7 @@
 defineIndexes = (models, callback) ->
     async.eachSeries models, (model, next) ->
         log.info "#{model.getDocType()} - define indexes..."
-        model.registerIndexDefinition callback
+        model.registerIndexDefinition next
     , callback

 requestsIndexingProgress = 0


minor refactor

minor refactor

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


Fix typo

Fix typo

--- src/katon.coffee
+++ src/katon.coffee
@@ -93,7 +93,7 @@
       logan.success 'Katon', 'running'

     if which('nodemon')?
-      logan.succes 'Nodemon', 'installed'
+      logan.success 'Nodemon', 'installed'
     else
       logan.error 'Nodemon', 'not installed'


Use guest avatar when we can’t load user avi

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


Fix handling of image data in responses.  Causing some tests to fail, need to be fixed.

--- src/replay/catalog.coffee
+++ src/replay/catalog.coffee
@@ -122,11 +122,16 @@
         status = parseInt(status_line.split()[0], 10)
         version = status_line.match(/\d.\d$/)
         headers = parseHeaders(filename, header_lines)
-      return { status: status, version: version, headers: headers, body: body.join("\n\n") }
+      return { status: status, version: version, headers: headers, body: body }

-    [request, response, body...] = File.readFileSync(filename, "utf-8").split(/\n\n/)
+    [request, response, body] = readAndInitialParseFile(filename)
     return { request: parse_request(request), response: parse_response(response, body) }

+readAndInitialParseFile = (filename)->
+  buffer = File.readFileSync filename
+  parts = buffer.toString('utf8').split('\n\n')
+  body = new Buffer(buffer.slice(parts[0] + '\n\n' + parts[1] + '\n\n').length)
+  return [parts[0], parts[1], body]

 # Parse headers from header_lines.  Optional argument `only` is an array of
 # regular expressions; only headers matching one of these expressions are


Rewrite Figure._process_guides() using add_layout()

--- bokehjs/src/coffee/api/plotting.coffee
+++ bokehjs/src/coffee/api/plotting.coffee
@@ -300,19 +300,17 @@
         else
           @y_mapper_type = 'log'

-      axis = new axiscls({plot: if axis_location? then this else null})
+      axis = new axiscls()

       if axis.ticker instanceof models.ContinuousTicker
         axis.ticker.num_minor_ticks = @_get_num_minor_ticks(axiscls, minor_ticks)
       if axis_label.length != 0
         axis.axis_label = axis_label

-      grid = new models.Grid({plot: this, dimension: dim, ticker: axis.ticker})
-
-      if axis_location?
-        this[axis_location] = (this[axis_location] ? []).concat([axis])
-
-      @add_renderers(axis, grid)
+      grid = new models.Grid({dimension: dim, ticker: axis.ticker})
+
+      @add_layout(axis, axis_location)
+      @add_layout(grid)

   _get_axis_class: (axis_type, range) ->
     if not axis_type?


5秒后flash消失

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


rails_apps_composer: add analytics

rails_apps_composer: add analytics

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

--- app/assets/javascripts/google_analytics.js.coffee
+++ app/assets/javascripts/google_analytics.js.coffee
@@ -0,0 +1,44 @@
+# thanks to Jonathon Wolfe at http://reed.github.io/turbolinks-compatibility/google_analytics.html
+
+class @GoogleAnalytics
+
+  @load: ->
+    # Google Analytics depends on a global _gaq array. window is the global scope.
+    window._gaq = []
+    window._gaq.push ["_setAccount", GoogleAnalytics.analyticsId()]
+
+    # Create a script element and insert it in the DOM
+    ga = document.createElement("script")
+    ga.type = "text/javascript"
+    ga.async = true
+    ga.src = ((if "https:" is document.location.protocol then "https://ssl" else "http://www")) + ".google-analytics.com/ga.js"
+    firstScript = document.getElementsByTagName("script")[0]
+    firstScript.parentNode.insertBefore ga, firstScript
+
+    # If Turbolinks is supported, set up a callback to track pageviews on page:change.
+    # If it isn't supported, just track the pageview now.
+    if typeof Turbolinks isnt 'undefined' and Turbolinks.supported
+      document.addEventListener "page:change", (->
+        GoogleAnalytics.trackPageview()
+      ), true
+    else
+      GoogleAnalytics.trackPageview()
+
+  @trackPageview: (url) ->
+    unless GoogleAnalytics.isLocalRequest()
+      if url
+        window._gaq.push ["_trackPageview", url]
+      else
+        window._gaq.push ["_trackPageview"]
+      window._gaq.push ["_trackPageLoadTime"]
+
+  @isLocalRequest: ->
+    GoogleAnalytics.documentDomainIncludes "local"
+
+  @documentDomainIncludes: (str) ->
+    document.domain.indexOf(str) isnt -1
+
+  @analyticsId: ->
+    'no'
+
+GoogleAnalytics.load()


Fix relationships in user

Fix relationships in 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/netguru/review.git/'


Hotfix for ads not loading.

Hotfix for ads not loading.

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


Improve the way it's decided whether to show an MPU or not.


Fix signature change when composing, refs #544

--- client/app/components/compose_editor.coffee
+++ client/app/components/compose_editor.coffee
@@ -269,7 +269,7 @@

         # On account change, update message signature
         if oldProps.accountID isnt @props.accountID
-            @_updateSignature
+            @_updateSignature()

     _updateSignature: ->
         signature = @props.accounts[@props.accountID].signature