fix fo calling [0] on undefined.

fix fo calling [0] on undefined.

--- lib/misc-command.coffee
+++ lib/misc-command.coffee
@@ -67,9 +67,8 @@

     allRanges = sortRanges(newRanges.concat(oldRanges))

-    if allRanges.length > 0
-      point = @editor.getCursorBufferPosition()
-      cursorContainedRanges = allRanges.filter (range) -> range.containsPoint(point)
+    cursorPosition = @editor.getCursorBufferPosition()
+    cursorContainedRanges = allRanges.filter (range) -> range.containsPoint(cursorPosition)

     if changedRange = cursorContainedRanges[0] ? allRanges[0]
       @vimState.mark.setRange('[', ']', changedRange)


Fix re-opening documents in closed state

--- src/client/connection.coffee
+++ src/client/connection.coffee
@@ -189,7 +189,7 @@
     switch doc.state
       when 'open' then callback null, doc
       when 'opening' then @on 'open', -> callback null, doc
-      when 'closed' then doc.open -> callback null, doc
+      when 'closed' then doc.open (error) -> callback error, (doc unless error)
     return

 # Not currently working.


Improvements to the HTML element replacing method in the script runner 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/jorgecsrmorais/facebook-lookalike-generator.git/'


Add German (DE) locale.

Add German (DE) locale.

error: pathspec 'vendor/assets/javascripts/mercury/locales/de.locale.js.coffee' did not match any file(s) known to git

--- vendor/assets/javascripts/mercury/locales/de.locale.js.coffee
+++ vendor/assets/javascripts/mercury/locales/de.locale.js.coffee
@@ -0,0 +1,206 @@
+Mercury.I18n['de'] =
+  # ## Javascript Strings
+
+  # ### Default Configuration
+  "Save": "Speichern"
+  "Save this page": "Diese Seite speichern"
+  "Preview": "Vorschau"
+  "Preview this page": "Diese Seite in der Vorschau betrachten"
+  "Undo": "Rückgängig"
+  "Undo your last action": "Letzte Aktion rückgängig machen"
+  "Redo": "Wiederherstellen"
+  "Redo your last action": "Letzte Aktion wiederherstellen"
+  "Link": "Link"
+  "Insert Link": "Link einfügen"
+  "Media": "Media"
+  "Insert Media (images and videos)": "Bilder und Videos einfügen"
+  "Table": "Tabelle"
+  "Insert Table": "Tabelle einfügen"
+  "Character": "Zeichen"
+  "Special Characters": "Sonderzeichen"
+  "Snippet": "Snippet"
+  "Snippet Panel": "Snippet-Fenster"
+  "History": "Verlauf"
+  "Page Version History": "Versionsverlauf der Seite"
+  "Notes": "Notizen"
+  "Page Notes": "Notizen der Seite"
+  "Style": "Stil"
+  "Block Format": "Blockformatierung"
+  "Background Color": "Hintergrundfarbe"
+  "Text Color": "Textfarbe"
+  "Bold": "Fett"
+  "Italicize": "Kursiv"
+  "Overline": "Überstrichen"
+  "Strikethrough": "Durchgestrichen"
+  "Underline": "Unterstrichen"
+  "Subscript": "Tiefgestellt"
+  "Superscript": "Hochgestellt"
+  "Align Left": "Linksbündig ausgerichtet"
+  "Center": "Zentriert"
+  "Align Right": "Rechtsbündig ausgerichtet"
+  "Justify Full": "Blocksatz"
+  "Unordered List": "Ungeordnete Liste"
+  "Numbered List": "Numerierte Liste"
+  "Decrease Indentation": "Einzug verkleinern"
+  "Increase Indentation": "Einzug vergrößern"
+  "Insert Table Row": "Zeile einfügen"
+  "Insert a table row before the cursor": "Zeile vor dem Cursor einfügen"
+  "Insert a table row after the cursor": "Zeile nach dem Cursor einfügen"
+  "Delete Table Row": "Zeile löschen"
+  "Delete this table row": "Aktuelle Zeile löschen"
+  "Insert Table Column": "Spalte einfügen"
+  "Insert a table column before the cursor": "Spalte vor dem Cursor einfügen"
+  "Insert a table column after the cursor": "Spalte nach dem Cursor einfügen"
+  "Delete Table Column": "Spalte löschen"
+  "Delete this table column": "Aktuelle Spalte löschen"
+  "Increase Cell Columns": "Mehr Spalten"
+  "Decrease Cell Columns": "Weniger Spalten"
+  "Increase Cell Rows": "Mehr Reihen"
+  "Decrease Cell Rows": "Weniger Reihen"
+  "Horizontal Rule": "Horizontaler Trennstrich"
+  "Insert a horizontal rule": "Horizontalen Trennstrich einfügen"
+  "Remove Formatting": "Formatierung löschen"
+  "Remove formatting for the selection": "Formatierung der Auswahl löschen"
+  "Edit HTML": "HTML bearbeiten"
+  "Edit the HTML content": "HTML-Inhalt bearbeiten"
+  "Edit Snippet Settings": "Snippet-Einstellungen bearbeiten"
+  "Remove Snippet": "Snippet entfernen"
+
+  # ### General
+  # Error Messages
+  "Mercury.Regions.%s is unsupported in this client. Supported browsers are %s.": "Mercury.Regions.%s wird von diesem Client nicht unterstützt. Unterstützte Browser sind: %s."
+  "Mercury.PageEditor can only be instantiated once.": "Mercury.PageEditor kann nur einmal instanziiert werden."
+  "Opera isn't a fully supported browser, your results may not be optimal.": "Opera ist ein nicht vollständig unterstützter Browser, daher sind nicht-optimale Ergebnisse möglich."
+  "Mercury.PageEditor failed to load: %s\n\nPlease try refreshing.": "Mercury.PageEditor konnte nicht geladen werden: %s\n\nBitte versuche die Seite neu zu laden."
+  "Region type is malformed, no data-type provided, or \"%s\" is unknown for the \"%s\" region.": "Regionstyp ist ungültig, kein Datentyp angegeben, oder \"%s\" ist unbekannt für die \"%s\"-Region."
+  "Mercury was unable to save to the url: %s": "Mercury war nicht in der Lage unter der URL zu speichern: %s"
+  # Confirmations
+  "You have unsaved changes.  Are you sure you want to leave without saving them first?": "Es gibt ungespeicherte Änderungen. Möchtest du wirklich beenden, ohne die Änderungen vorher zu speichern?"
+
+  # ### Toolbar / Buttons
+  # Error Messages
+  "Unknown button type \"%s\" used for the \"%s\" button.": "Unbekannter Button-Typ \"%s\" wurde für den Button \"%s\" benutzt."
+  "Unknown button structure -- please provide an array, object, or string for \"%s\".": "Unbekannte Button-Struktur – bitte gib ein Array, Objekt oder einen String für \"%s\" an."
+
+  # ### Modals / Dialogs / Etc.
+  # Error Messages
+  "Mercury was unable to load %s for the \"%s\" dialog.": "Mercury konnte %s nicht für den \"%s\"-Dialog laden."
+  "Mercury was unable to load %s for the lightview.": "Mercury konnte %s nicht für die Lightansicht laden."
+  "Mercury was unable to load %s for the modal.": "Mercury konnte %s nicht für den Modaldialog laden."
+
+  # ### Snippets
+  # Error Messages
+  "Error loading the preview for the \"%s\" snippet.": "Fehler beim Laden der Vorschau für das \"%s\"-Snippet."
+  # Misc
+  "Snippet Options": "Snippet-Optionen"
+
+  # ### Uploader
+  # Error Messages
+  "Unable to process response: %s": "Nicht in der Lage, die folgende Antwort zu verarbeiten: %s"
+  "Error: Unable to upload the file": "Fehler: Nicht in der Lage, die Datei hochzuladen"
+  "Malformed response from server": "Fehlerhafte Antwort des Servers"
+  "Too large": "Zu groß"
+  "Unsupported format": "Nicht unterstütztes Format"
+  # Statuses
+  "Processing...": "Verarbeite…"
+  "Uploading...": "Lade hoch…"
+  "Aborted": "Abgebrochen"
+  "Successfully uploaded...": "Erfolgreich hochgeladen…"
+  "Name: %s": "Name: %s"
+  "Size: %s": "Größe: %s"
+  "Type: %s": "Typ: %s"
+
+  # Inserting Media
+  "Error: The provided youtube share url was invalid.": "Fehler: Die angegebene YouTube Share-URL war ungültig."
+  "Error: The provided vimeo url was invalid.": "Fehler: Die angegebene Vimeo-URL war ungültig."
+
+  # Statusbar
+  "Path:": "Pfad"
+
+
+  # ## HTML / Template Strings
+
+  # ### Modals
+  # Insert Link Modal (link.html)
+  "Link Content": "Linkbeschreibung"
+  "Standard Links": "Standardlinks"
+  "URL": "URL"
+  "Index / Bookmark Links": "Index/Lesezeichen-Link"
+  "Existing Links": "Existierender Link"
+  "Bookmark": "Lesezeichen"
+  "Options": "Optionen"
+  "Link Target": "Link-Ziel"
+  "Self (the same window or tab)": "Self (das gleiche Fenster oder Tab)"
+  "Blank (a new window or tab)": "Blank (ein neues Fenster oder Tab)"
+  "Top (removes any frames)": "Top (entfernt Frames)"
+  "Popup Window (javascript new window popup)": "Popupfenster"
+  "Popup Width": "Popup-Breite"
+  "Popup Height": "Popup-Höhe"
+  "Insert Link": "Link einfügen"
+
+  # Insert Media Modal (media.html)
+  "Images": "Bilder"
+  "Videos": "Videos"
+  "YouTube Share URL": "YouTube Share-URL"
+  "Vimeo URL": "Vimeo-URL"
+  "Alignment": "Ausrichtung"
+  "None": "Normal"
+  "Left": "Links"
+  "Right": "Rechts"
+  "Top": "Oben"
+  "Middle": "Mitte"
+  "Bottom": "Unten"
+  "Absolute Middle": "Mitte, absolut"
+  "Absolute Bottom": "Unten, absolut"
+  "Width": "Breite"
+  "Height": "Höhe"
+  "Insert Media": "Element einfügen"
+
+  # Insert Table Modal (table.html)
+  "Rows": "Reihen"
+  "Add Before": "Davor hinzufügen"
+  "Add After": "Danach hinzufügen"
+  "Remove": "Entfernen"
+  "Columns": "Spalten"
+  "Row Span": "Reihenabstand"
+  "Column Span": "Spaltenabstand"
+  "Options": "Optionen"
+  "Alignment": "Ausrichtung"
+  "Border": "Rahmen"
+  "Spacing": "Zwischenraum"
+  "Insert Table": "Tabelle einfügen"
+
+  # HTML Editor Modal (htmleditor.html)
+  "HTML Editor": "HTML-Editor"
+  "Save and Replace": "Speichern und ersetzen"
+
+  # ### Dialogs / Etc.
+  # Color Palettes (forecolor.html, backcolor.html)
+  "Last Color Picked": "Zuletzt gewählte Farbe"
+
+  # Block Format Select (formatblock.html)
+  "Heading 1": "Überschrift 1"
+  "Heading 2": "Überschrift 2"
+  "Heading 3": "Überschrift 3"
+  "Heading 4": "Überschrift 4"
+  "Heading 5": "Überschrift 5"
+  "Heading 6": "Überschrift 6"
+  "Paragraph": "Absatz"
+  "Blockquote": "Zitat"
+  "Formatted": "Formatiert"
+
+  # About Mercury Panel (about.html)
+  "Project Home": "Projekt-Website"
+  "Project Source": "Projekt-Quelltext"
+
+  # ### Demo / Placeholder / Defaults
+  "The history panel is expected to be implemented with a server back end.  Since this is a demo, we didn't include it.": "Der Verlaufsdialog setzt ein Server-Backend voraus. Da dies eine Demo ist, steht es nicht zur Verfügung."
+
+  "The notes panel is expected to be implemented with a server back end.  Since this is a demo, we didn't include it.": "Der Notizendialog setzt ein Server-Backend voraus. Da dies eine Demo ist, steht es nicht zur Verfügung."
+
+  "Snippet Name": "Snippet-Name"
+  "A one or two line long description of what this snippet does.": "Eine ein- oder zweizeilige Beschreibung dessen, was dieses Snippet tut."
+
+  "First Name": "Vorname"
+  "Favorite Beer": "Lieblingsbier"
+  "Insert Snippet": "Snippet einfügen"


removed debugging line from getFeed function

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/fbergin/timeline-stats.git/'


Add stateless component snippet

Add stateless component snippet

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

--- snippets.cson
+++ snippets.cson
@@ -0,0 +1,44 @@
+# Your snippets
+#
+# Atom snippets allow you to enter a simple prefix in the editor and hit tab to
+# expand the prefix into a larger code block with templated values.
+#
+# You can create a new snippet in this file by typing "snip" and then hitting
+# tab.
+#
+# An example CoffeeScript snippet to expand log to console.log:
+#
+# '.source.coffee':
+#   'Console log':
+#     'prefix': 'log'
+#     'body': 'console.log $1'
+#
+# Each scope (e.g. '.source.coffee' above) can only be declared once.
+#
+# This file uses CoffeeScript Object Notation (CSON).
+# If you are unfamiliar with CSON, you can read more about it in the
+# Atom Flight Manual:
+# https://atom.io/docs/latest/using-atom-basic-customization#cson
+
+'.source.js':
+  'React stateless component':
+    'prefix': 'rscomp'
+    'body': """
+      import React from 'react'
+      import { View } from 'react-native-universal'
+
+      const $1 = () =>
+        <View
+          style={styles.root}>
+        </View>
+
+      $1.propTypes = {
+
+      }
+
+      export default $1
+
+      const styles = {
+
+      }
+    """


handle chunked response, fixes #6

handle chunked response, fixes #6

--- server.coffee
+++ server.coffee
@@ -72,6 +72,11 @@
           'Camo-Host'              : camo_hostname
           'X-Content-Type-Options' : 'nosniff'

+        # Handle chunked responses properly
+        if content_length?
+          newHeaders['content-length'] = content_length
+        if srcResp.headers['transfer-encoding']
+          newHeaders['transfer-encoding'] = srcResp.headers['transfer-encoding']
         if srcResp.headers['content-encoding']
           newHeaders['content-encoding'] = srcResp.headers['content-encoding']


track current/total connections

track current/total connections

--- server.coffee
+++ server.coffee
@@ -19,6 +19,13 @@
 EXCLUDED_HOSTS = new RegExp(excluded.replace(".", "\\.").replace("*", "\\.*"))
 RESTRICTED_IPS = /^(10\.)|(127\.)|(169\.254)|(192\.168)|(172\.(1[6-9])|(2[0-9])|(3[0-1]))/

+total_connections   = 0
+current_connections = 0
+
+decr = ->
+  current_connections -= 1
+  current_connections  = 0 if current_connections < 1
+
 server = Http.createServer (req, resp) ->
   if req.method != 'GET' || req.url == '/'
     resp.writeHead 200
@@ -27,13 +34,15 @@
     resp.writeHead 200
     resp.end 'ok'
   else
+    total_connections   += 1
+    current_connections += 1
     url = Url.parse req.url

     four_oh_four = (msg) ->
+      decr()
       log msg
-      resp.writeHead 404, { }
-      resp.write "Not Found"
-      resp.end()
+      resp.writeHead 404
+      resp.end "Not Found"

     transferred_headers =
       'Via'                    : process.env.CAMO_HEADER_VIA or= "Camo Asset Proxy #{version}"
@@ -80,7 +89,7 @@

             content_length  = srcResp.headers['content-length']

-            if(content_length > 5242880)
+            if content_length > 5242880
               four_oh_four("Content-Length exceeded")
             else
               newHeaders =
@@ -91,9 +100,11 @@
                 'X-Content-Type-Options' : 'nosniff'

               srcResp.on 'end', ->
+                decr()
                 resp.end()

               srcResp.on 'error', ->
+                decr()
                 resp.end()

               switch srcResp.statusCode
@@ -114,6 +125,7 @@
                   four_oh_four("Responded with #{srcResp.statusCode}:#{srcResp.headers}")

           srcReq.on 'error', ->
+            decr()
             resp.end()

           srcReq.end()


Remove ivars assigned in initialize

Remove ivars assigned in initialize

--- spec/atom-reporter.coffee
+++ spec/atom-reporter.coffee
@@ -177,8 +177,6 @@
     @div class: 'suite', =>
       @div outlet: 'description', class: 'description'

-  suite: null
-
   initialize: (@suite) ->
     @attr('id', "suite-view-#{@suite.id}")
     @description.html @suite.description
@@ -201,7 +199,6 @@
       @div class: 'spec-toggle'
       @div outlet: 'description', class: 'description'
       @div outlet: 'specFailures', class: 'spec-failures'
-  spec: null

   initialize: (@spec) ->
     @addClass("spec-view-#{@spec.id}")


Added a preparingupload event which can be used to add additional data to each upload.

Closes #42, #30, #33

--- src/dropzone.coffee
+++ src/dropzone.coffee
@@ -56,6 +56,7 @@
     "error"
     "processingfile"
     "uploadprogress"
+    "preparingupload"
     "sending"
     "success"
     "complete"
@@ -193,6 +194,12 @@
     # Called just before the file is sent. Gets the xhr object as second
     # parameter, so you can modify it, for example to add a CSRF token.
     sending: o.noop
+
+    # Called just before adding the file and sending the whole request to the
+    # server.
+    # This is the ideal place to add additional data to be sent.
+    # Receives `file`, `xhr` and `formData`
+    preparingupload: o.noop

     # When the complete upload is finished and successfull
     # Receives `file`
@@ -478,25 +485,6 @@
   uploadFile: (file) ->
     xhr = new XMLHttpRequest()

-    formData = new FormData()
-
-    # Adding all @options parameters
-    formData.append name, key for key, name of @options.params if @options.params
-
-    # Take care of other input elements
-    if @elementTagName = "FORM"
-      for inputElement in @element.find "input, textarea, select, button"
-        input = o inputElement
-        inputName = input.attr("name")
-
-        if !input.attr("type") or input.attr("type").toLowerCase() != "checkbox" or inputElement.checked
-          formData.append input.attr("name"), input.val()
-
-    # Finally add the file
-    # Has to be last because some servers (eg: S3) expect the file to be the
-    # last parameter
-    formData.append @options.paramName, file
-
     xhr.open "POST", @options.url, true

     handleError = =>
@@ -523,6 +511,30 @@
     xhr.setRequestHeader "Cache-Control", "no-cache"
     xhr.setRequestHeader "X-Requested-With", "XMLHttpRequest"
     xhr.setRequestHeader "X-File-Name", file.name
+
+
+    formData = new FormData()
+
+    # Adding all @options parameters
+    formData.append name, key for key, name of @options.params if @options.params
+
+    # Take care of other input elements
+    if @elementTagName = "FORM"
+      for inputElement in @element.find "input, textarea, select, button"
+        input = o inputElement
+        inputName = input.attr("name")
+
+        if !input.attr("type") or input.attr("type").toLowerCase() != "checkbox" or inputElement.checked
+          formData.append input.attr("name"), input.val()
+
+    # Let the user add additional data if necessary
+    @emit "preparingupload", file, xhr, formData
+
+    # Finally add the file
+    # Has to be last because some servers (eg: S3) expect the file to be the
+    # last parameter
+    formData.append @options.paramName, file
+

     @emit "sending", file, xhr
     xhr.send formData


Start of state machine GF for a connection. Enough to allow a simple diagram to be generated.

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

--- lib/connection/connection-statemachine.coffee
+++ lib/connection/connection-statemachine.coffee
@@ -0,0 +1,58 @@
+connectionStateMachine = (fire) ->
+  @name = 'Connection - State Machine'
+
+  @startState = 'Initial'
+
+  @states =
+    Initial:
+      entry: ->
+        console.log('init')
+        'SentPrelogin'
+
+    SentPrelogin:
+      entry: ->
+        console.log('sent pl')
+        null
+      actions:
+        '.done': 'SentLogin7WithStandardLogin'
+        '.err': 'Final'
+
+    ###
+    SentTlsNegotiation:
+      entry: ->
+        console.log('sent tls neg')
+    ###
+
+    SentLogin7WithStandardLogin:
+      entry: ->
+        console.log('sent l7 with standard login')
+        null
+
+    ###
+    SentLogin7WithSpNego:
+      entry: ->
+        console.log('sent l7 with spnego')
+
+    LoggedIn:
+      entry: ->
+        console.log('logged in')
+
+    SentClientRequest:
+      entry: ->
+        console.log('sent client request')
+
+    SentAttention:
+      entry: ->
+        console.log('sent attention')
+
+    RoutingComplete:
+      entry: ->
+        console.log('routing complete')
+    ###
+
+    Final:
+      entry: ->
+        console.log('done')
+        '@exit'
+
+module.exports = connectionStateMachine;


Call super from ImageView.initialize()

Call super from ImageView.initialize()

This allows the ScrollView superclass to set up bindings
for scrolling events.

--- src/app/image-view.coffee
+++ src/app/image-view.coffee
@@ -9,6 +9,8 @@
       @img outlet: 'image'

   initialize: (imageEditSession) ->
+    super
+
     requireStylesheet 'image-view'

     @image.load =>


added separate text button

added separate text button

error: pathspec 'src/scene/objects/gui/text_button.coffee' did not match any file(s) known to git

--- src/scene/objects/gui/text_button.coffee
+++ src/scene/objects/gui/text_button.coffee
@@ -0,0 +1,45 @@
+# Public: Text Button
+class Fz2D.Gui.TextButton extends Fz2D.Gui.Button
+  # Public: Constructor
+  #
+  # x - position on the X axis
+  # y - position on the Y axis
+  # text - label text
+  # font - label font
+  # texture_up - {Fz2D.Texture}
+  # texture_down - {Fz2D.Texture} (default: texture_up)
+  # texture_over - {Fz2D.Texture} (default: texture_down)
+  constructor: (x, y, text, @font, texture_up, texture_down=texture_up, texture_over=texture_down) ->
+    super(x, y, texture_up, texture_down, texture_over)
+
+    @label = new Fz2D.Gui.Label('', x, y, @font)
+    @setText(text)
+
+  # Public: Sets the text of the label.
+  #
+  # text - the actual label
+  setText: (text) ->
+    c = @font.centerText(@, text)
+
+    @label.setText(text)
+    @label.x = c.x
+    @label.y = c.y
+
+    @text = text
+    @
+
+  # Public: Draws button on every frame.
+  #
+  # ctx - {Fz2D.Canvas}
+  draw: (ctx) ->
+    super
+
+    if @is('down')
+      # FIXME: :D
+      @label.y++
+      @label.draw(ctx)
+      @label.y--
+    else
+      @label.draw(ctx)
+
+    null


Fix default lookup field value, fix guyvdb/docstore#85

Set default value if modal has one or set to empty string

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


[fix] [bot] Make sure the channel you're joining is enabled.

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


[coins] [fix] Changed 'give' to act same way as 'pay'


Update to use correct factory thingy

Update to use correct factory thingy

--- resources/assets/coffee/react/_components/friend-button.coffee
+++ resources/assets/coffee/react/_components/friend-button.coffee
@@ -17,7 +17,7 @@
 ###

 el = React.createElement
-{a,button,div,span} = React.DOM
+{a,button,div,span} = ReactDOMFactories

 bn = 'friend-button'


redirect can cause the team to be deleted

--- controllers/votes.coffee
+++ controllers/votes.coffee
@@ -88,4 +88,4 @@
 app.delete '/votes/:id', [ensureVoting, m.loadVote, m.ensureAccess], (req, res, next) ->
   req.vote.remove (err) ->
     return next err if err
-    res.redirect 'back'
+    res.send 202


syncing of spilled docs bails out on 401

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


change just to make sure the data is binded before send the form to the server for browser that automatically fill the login form

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


scroll to chart after refresh

scroll to chart after refresh

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


Fix 043fd55a8ba805c3752ab96fae74496429370303

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


Fix bug in sort if grid does not implement it


only set chat status if not offline

only set chat status if not offline

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


Remove the unused RubricService.getAssignment call

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


Add spec to test `cutToEndOfLine` when soft wrap is enabled

--- spec/app/edit-session-spec.coffee
+++ spec/app/edit-session-spec.coffee
@@ -1732,24 +1732,32 @@
           expect(clipboard.readText()).toBe 'quicksort\nsort'

       describe ".cutToEndOfLine()", ->
-        describe "when nothing is selected", ->
+        describe "when soft wrap is on", ->
           it "cuts up to the end of the line", ->
-            editSession.setCursorBufferPosition([2, 20])
-            editSession.addCursorAtBufferPosition([3, 20])
+            editSession.setSoftWrapColumn(10)
+            editSession.setCursorScreenPosition([2, 2])
             editSession.cutToEndOfLine()
-            expect(buffer.lineForRow(2)).toBe '    if (items.length'
-            expect(buffer.lineForRow(3)).toBe '    var pivot = item'
-            expect(pasteboard.read()[0]).toBe ' <= 1) return items;\ns.shift(), current, left = [], right = [];'
-
-        describe "when text is selected", ->
-          it "only cuts the selected text, not to the end of the line", ->
-            editSession.setSelectedBufferRanges([[[2,20], [2, 30]], [[3, 20], [3, 20]]])
-
-            editSession.cutToEndOfLine()
-
-            expect(buffer.lineForRow(2)).toBe '    if (items.lengthurn items;'
-            expect(buffer.lineForRow(3)).toBe '    var pivot = item'
-            expect(pasteboard.read()[0]).toBe ' <= 1) ret\ns.shift(), current, left = [], right = [];'
+            expect(editSession.lineForScreenRow(2).text).toBe '=  () {'
+
+        describe "when soft wrap is off", ->
+          describe "when nothing is selected", ->
+            it "cuts up to the end of the line", ->
+              editSession.setCursorBufferPosition([2, 20])
+              editSession.addCursorAtBufferPosition([3, 20])
+              editSession.cutToEndOfLine()
+              expect(buffer.lineForRow(2)).toBe '    if (items.length'
+              expect(buffer.lineForRow(3)).toBe '    var pivot = item'
+              expect(pasteboard.read()[0]).toBe ' <= 1) return items;\ns.shift(), current, left = [], right = [];'
+
+          describe "when text is selected", ->
+            it "only cuts the selected text, not to the end of the line", ->
+              editSession.setSelectedBufferRanges([[[2,20], [2, 30]], [[3, 20], [3, 20]]])
+
+              editSession.cutToEndOfLine()
+
+              expect(buffer.lineForRow(2)).toBe '    if (items.lengthurn items;'
+              expect(buffer.lineForRow(3)).toBe '    var pivot = item'
+              expect(pasteboard.read()[0]).toBe ' <= 1) ret\ns.shift(), current, left = [], right = [];'

       describe ".copySelectedText()", ->
         it "copies selected text onto the clipboard", ->


ComputeProviders: move PLANS into its own file

error: pathspec 'workers/social/lib/social/models/computeproviders/plans.coffee' did not match any file(s) known to git

--- workers/social/lib/social/models/computeproviders/plans.coffee
+++ workers/social/lib/social/models/computeproviders/plans.coffee
@@ -0,0 +1,36 @@
+module.exports       =
+  free               :
+    total            : 1
+    alwaysOn         : 0
+    storage          : 3
+    allowedInstances : ['t2.micro']
+  hobbyist           :
+    total            : 1
+    alwaysOn         : 1
+    storage          : 10
+    allowedInstances : ['t2.micro']
+  developer          :
+    total            : 3
+    alwaysOn         : 1
+    storage          : 25
+    allowedInstances : ['t2.micro']
+  professional       :
+    total            : 5
+    alwaysOn         : 2
+    storage          : 50
+    allowedInstances : ['t2.micro']
+  super              :
+    total            : 10
+    alwaysOn         : 5
+    storage          : 100
+    allowedInstances : ['t2.micro']
+  koding             :
+    total            : 20
+    alwaysOn         : 20
+    storage          : 200
+    allowedInstances : ['t2.micro', 't2.small', 't2.medium']
+  betatester         :
+    total            : 1
+    alwaysOn         : 1
+    storage          : 3
+    allowedInstances : ['t2.micro']


Add bruteforce script for 2FA

Add bruteforce script for 2FA

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

--- scripts/bruteforce.coffee
+++ scripts/bruteforce.coffee
@@ -0,0 +1,16 @@
+f = (i) ->
+    $.ajax(
+        type: "PUT"
+        contentType: "application/json"
+        url: "http://localhost:8081/2fa"
+        data: JSON.stringify
+            challenge: "#{i}"
+            token: sessionStorage.getItem "token"
+    )
+        .then(
+            -> console.log i,
+            ->
+                if i % 100 is 0 then console.log "==== #{i} ===="
+                f(i + 1)
+        )
+f 0


add vagrant config

add vagrant config

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


Add https if not specified in the url

Add https if not specified in the url

This allows to use URLs without "https://" for the sharing

--- server/lib/sharing.coffee
+++ server/lib/sharing.coffee
@@ -8,6 +8,12 @@
 user = new User()

 replications = {}
+
+
+# Add https in case the protocol is not specified in the url
+addProtocol = (url) ->
+    url = "https://" + url if url?.indexOf("://") is -1
+    return url

 # Called each time a change occurs in the _replicator db
@@ -90,6 +96,9 @@
             # Avoid empty usernames
             if not params.sharerName? or (params.sharerName is '')
                 params.sharerName = params.sharerUrl.replace "https://", ""
+
+            # Add https if not specified
+            url = addProtocol url
             # Send to recipient
             remote = request.createClient url
             remote.post path, params, (err, result, body) ->
@@ -111,6 +120,8 @@

 # Send a revocation request to the specified url
 module.exports.sendRevocation = (url, path, params, callback) ->
+    # Add https if not specified
+    url = addProtocol url
     remote = request.createClient url
     remote.del path, params, (err, result, body) ->
         handleNotifyResponse err, result, body, callback
@@ -130,7 +141,8 @@
     else
         # Add the credentials in the url
         auth = "#{params.id}:#{params.target.token}"
-        url = params.target.recipientUrl.replace "://", "://#{auth}@"
+        url = addProtocol params.target.recipientUrl
+        url = url.replace "://", "://#{auth}@"

         # Remove last slash in recipient's url
         if url.charAt(url.length - 1) is '/'


Fix locale url

Fix locale url

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


Kill atom spec. It's not worth testing this stuff right now

--- spec/app/atom-spec.coffee
+++ spec/app/atom-spec.coffee
@@ -1,45 +0,0 @@
-Atom = require 'atom'
-fs = require 'fs'
-_ = require 'underscore'
-
-describe "Atom", ->
-  beforeEach ->
-    spyOn(Atom.prototype, "setUpKeymap")
-
-  describe ".open(path)", ->
-    newWindow = null
-
-    afterEach ->
-      newWindow?.close()
-
-    describe "when opening a file", ->
-      it "displays it in a new window with the contents of the file loaded", ->
-        filePath = null
-
-        filePath = require.resolve 'fixtures/sample.txt'
-        previousWindowCount = atom.windows.length
-
-        atom.open filePath
-
-        waitsFor "window to open", ->
-          atom.windows.length > previousWindowCount
-
-        runs ->
-          expect(atom.windows.length).toBe previousWindowCount + 1
-          newWindow = _.last(atom.windows)
-          expect(newWindow.rootView.getActiveEditor().getPath()).toEqual filePath
-          expect(newWindow.rootView.getActiveEditor().getText()).toEqual fs.read(filePath)
-
-  describe ".windowOpened(window)", ->
-    atom = null
-
-    beforeEach ->
-      atom = new Atom
-
-    it "adds the window to the windows array if it isn't already present", ->
-      atom.windowOpened window
-      atom.windowOpened window
-      expect(atom.windows).toEqual [window]
-
-
-


Correct deprecation label

Correct deprecation label

--- spec/atom-reporter.coffee
+++ spec/atom-reporter.coffee
@@ -98,10 +98,10 @@
   addDeprecations: (spec) ->
     deprecations = grim.getDeprecations()
     @deprecationCount += deprecations.length
-    if @deprecationCount > 1
+    if @deprecationCount is 1
+      @deprecationStatus.text("1 deprecation")
+    else
       @deprecationStatus.text("#{@deprecationCount} deprecations")
-    else
-      @deprecationStatus.text("1 deprecation")

     for deprecation in deprecations
       @deprecationList.append $$ ->


Use alert class for status area

Use alert class for status area

--- spec/atom-reporter.coffee
+++ spec/atom-reporter.coffee
@@ -41,7 +41,7 @@
       @div outlet: 'userArea', =>
         @div outlet: 'userHeader', class: 'symbol-header'
         @ul outlet: 'userSummary', class: 'symbol-summary list-unstyled'
-      @div outlet: "status", class: 'status', =>
+      @div outlet: "status", class: 'status alert alert-success', =>
         @div outlet: "time", class: 'time'
         @div outlet: "specCount", class: 'spec-count'
         @div outlet: "message", class: 'message'
@@ -128,7 +128,7 @@

   updateStatusView: (spec) ->
     if @failedCount > 0
-      @status.addClass('failed') unless @status.hasClass('failed')
+      @status.addClass('alert-danger').removeClass('alert-success')

     @updateSpecCounts()


Fix bug in sortByConfig if config.bowerMapping is not set.

This is triggered by running the unit tests.

Signed-off-by: David Gstir <aa743a0aaec8f7d7a1f01442503957f4d7a2d634@sigma-star.at>

--- src/fs_utils/generate.coffee
+++ src/fs_utils/generate.coffee
@@ -86,7 +86,7 @@
       before: config.before ? []
       after: config.after ? []
       vendorConvention: (config.vendorConvention ? -> no)
-      bowerMapping: config.bowerMapping
+      bowerMapping: config.bowerMapping ? {}
     files.slice().sort (a, b) -> sortBowerComponents cfg, a, b
   else
     files


:lipstick:

:lipstick:

--- build/tasks/create-installer.coffee
+++ build/tasks/create-installer.coffee
@@ -6,8 +6,7 @@
   {spawn, rm} = require('./task-helpers')(grunt)

   grunt.registerTask 'create-installer', 'Create the Windows installer', ->
-    if process.platform != 'win32'
-      return
+    return unless if process.platform is 'win32'

     done = @async()

@@ -27,9 +26,7 @@
     args = ['pack', targetNuspecPath, '-BasePath', atomDir, '-OutputDirectory', buildDir]

     spawn {cmd, args}, (error, result, code) ->
-      if error?
-        done(error)
-        return
+      return done(error) if error?

       pkgs = pkg for pkg in fs.readdirSync(buildDir) when pkg.match /.nupkg$/i


Use path.join for test command

Use path.join for test command

--- Gruntfile.coffee
+++ Gruntfile.coffee
@@ -20,7 +20,7 @@

     shell:
       test:
-        command: 'node_modules/jasmine-focused/bin/jasmine-focused --captureExceptions --coffee spec'
+        command: "#{path.join('node_modules', 'jasmine-focused', 'bin', 'jasmine-focused')} --captureExceptions --coffee spec"
         options:
           stdout: true
           stderr: true


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,4 @@
+module.exports = (grunt) ->
+	grunt.initConfig()
+
+	grunt.registerTask 'default', []


Only normalize short urls

Only normalize short urls

--- src/package.coffee
+++ src/package.coffee
@@ -36,8 +36,6 @@
       info = hostedGitInfo.fromUrl(repoUrl)
       if info.getDefaultRepresentation() is 'shortcut'
         metadata.repository.url = info.https().replace(/^git\+/, '')
-      else
-        metadata.repository.url = info.toString()

   @loadMetadata: (packagePath, ignoreErrors=false) ->
     packageName = path.basename(packagePath)


Fix hiding accuracy column header

Fix hiding accuracy column header

Forgot to actually use the class.

--- resources/assets/coffee/react/beatmapset-page/scoreboard.coffee
+++ resources/assets/coffee/react/beatmapset-page/scoreboard.coffee
@@ -104,7 +104,7 @@
             className += ' hidden-xs' if m == 'accuracy'

             span
-              className: "#{bn}__row-item #{bn}__row-item--#{m} #{bn}__row-item--header"
+              className: className
               key: m
               Lang.get "beatmaps.beatmapset.show.extra.scoreboard.list.#{m}"


Passenger

Passenger

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


Adding cache endpoints

Adding cache endpoints

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

--- src/features/cache.coffee
+++ src/features/cache.coffee
@@ -0,0 +1,20 @@
+	`// @if TARGET=='nodejs'
+	`
+	class Cache
+
+		constructor: (@m) ->
+
+		List: (data, callback, error) ->
+
+			return @m.Request 'cache', 'GET', data, callback, error
+
+		Clear: (resource, callback, error) ->
+
+			return @m.Request 'cache/'+resource, 'DELETE', null, callback, error
+
+		Purge: (data, callback, error) ->
+
+			return @m.Request 'cache/all', 'DELETE', null, callback, error
+
+	`// @endif
+	`