Contribute to Open Source. Search issue labels to find the right project for you!

Automate some generation of code with Sourcery


Context 🕵️‍♀️

As suggested by @toshi0383, there’s some code that we can generate using Sourcery. Some examples of code that we can generate are:

  • Constructor based on the properties.
  • Equatable func == implementation.
  • Hashable.

What 🌱

Introduce Sourcery into the codebase.

<!– Love xcproj? Please consider supporting our collective: 👉 –>

Updated 13/12/2017 12:08 4 Comments

Fail earlier if the Carthage project hasn't been generated when necessary


Context 🕵️‍♀️

As suggested by @rahul-malik in this PR, we could improve the CI feedback time when the developer forgets to re-generate the Carthage project after some files have been added/removed.

What 🌱

Add a Danger check that fails CI earlier.

<!– Love xcproj? Please consider supporting our collective: 👉 –>

Updated 08/12/2017 18:05

Trouble initiating with groups


I’m trying to initiate Choices with an array of objects that have their own choices property. From what I understand, this is how Choices generates a selectbox with option groups. Here is an example of my choices array this.choices = [ { label: 'Group Title A', id: 1, choices: [ { label: 'Option 1', value: 'option_1' }, ] }, { label: 'Group Title B', id: 2, choices: [ { label: 'Option 1', value: 'option_1' }, { label: 'Option 2', value: 'option_2' }, { label: 'Option 3', value: 'option_3' }, { label: 'Option 4', value: 'option_4' }, { label: 'Option 5', value: 'option_5' }, { label: 'Option 6', value: 'option_6' } ] } ]; When I feed this array to the constructor like so.. this.dropdown = new Choices(this.root.querySelector('.choices'), { callbackOnCreateTemplates: function(template) { const classNames = this.config.classNames; return { choice: data => { return template(` <div class="${classNames.item} ${classNames.itemChoice} ${data.disabled ? classNames.itemDisabled : classNames.itemSelectable} ${data.selected ? 'choices-form__select--selected-item' : ''}" data-choice ${data.disabled ? 'data-choice-disabled aria-disabled="true"' : 'data-choice-selectable'} data-id="${}" data-value="${data.value}"> ${data.label} </div> `); }, }; }, classNames: { containerOuter: 'choices-form__select', containerInner: 'choices-form__select-inner', disabledState: 'choices-form__select--disabled', list: 'choices-form__select--list', listSingle: 'choices-form__select--list--single', listDropdown: 'choices-form__select--dropdown', input: this.inputName, item: 'choices-form__select--item', itemSelectable: 'choices-form__select--item--selectable', itemDisabled: 'choices-form__select--item--disabled', }, choices: this.choices, // Passing my array here itemSelectText: '', searchEnabled: false, shouldSort: false, }); I get “No choices available”.. however if I immediately call setChoices after this, and feed in my array again the dropdown will populate. this.dropdown.setChoices(this.choices, 'value', 'label', true); Is it not possible to initiate choices with groups? Thanks!

Updated 06/12/2017 09:07 1 Comments

track character abilities



lich uses infomon.lic and we need a similar system, this will likely exist on the Callbacks system, so that the output is easy to suppress.

Many of these data components exist in <mono> tags

what we need to track: - cmans - shield mans - spells (the initial login only provides Profession spell list or the first minor) - stats - society

Updated 12/12/2017 03:34

add the correct buildflags when building makedoc


Currently, when building doc/makedoc, a CC_FOR_BUILD command is used; that command does not include CFLAGS and CPPFLAGS from the environment, which in Debian, will cause the hardening flags not to be included.

This bug is not tagged distro:debian because it’s not really debian specific. This patch should fix the issue:

Updated 14/12/2017 06:45 5 Comments

Display a Landing Page on New Installs / Big Updates


As @diasdavid noted in

Also, @lidel pretty soon you can start recommending users to install an IPFS node through station so that they can use ipfs-companion with go-ipfs.

Exciting times! In parallel to js-ipfs effort, good old go-ipfs will become a lot more user-friendly thanks to ipfs-station’s refresh happening there right now.

While we could and probably will recommend it in store listing and on preferences screen, there is an opportunity here for better communication between extension and its users.

(I’m parking this issue here so we have a game plan when Station is ready)

Here’s an Idea: display a landing page to greet new users

tl;dr Detect new install/upgrade via browser.runtime.onInstalled API and OnInstalledReason and display a landing page when certain conditions are met.

New Installs

  • Open a new tab with byte-size information and links about distributed web It is crucial to keep this short, sweet and engaging. Less is more.
  • Detect if they are already running IPFS API on default port and preconfigure extension (read and set local HTTP gateway address, like suggested in #309) to work out-of-the-box 🚀 ✨
  • If IPFS API is offline, inform the user that extension requires a working node to be fully functional and kindly suggest one-click installation of ipfs-station with go-ipfs (think “big green button that says install IPFS Station, and there is a yarn-like kitten asking user to click on it” 🙃 )


  • While we have landing page logic in place, we could inform users about new features in just installed update (think “animated GIF demo of a new feature”)
  • Much lower priority than “on-new-install” This should be non-invasive, so we probably want to do it manually, only on MAJOR and MINOR updates ( and only when a new feature is worth taking user’s time.
Updated 05/12/2017 12:08 8 Comments

Suggestion details command

  • [ ] Suggestion metadata
  • [ ] Emoji name
  • [ ] User who submitted it
  • [ ] Suggestion emoji itself (thumbnail)
  • [ ] (Maybe) Filesize? If so, make it human readable (e.g. 10 MB)
  • [ ] Show upvotes and downvotes in a compact way, just like in q!sg
  • [ ] Timestamps
    • [ ] Submission time (ideally with relative timestamp, e.g. 10 minutes ago)
    • [ ] Validation time (ideally with relative timestamp)
  • [ ] Forced denial/approval
    • [ ] Who did it?
    • [ ] Reason

Probably going to use an Embed for this.

Discussion: Should this replace q!status? Or should we just improve q!status as it is outlined here? Or maybe even have both?

Updated 02/12/2017 07:44

Audit all commands for goroutine leaks


We’re leaking goroutines on canceled commands all over the place.

To do this audit, I recommend looking at all channel writes and I mean all.

A quick grep indicates that the following files may have issues (should, at least, be looked at):

  • [x] core/commands/dht.go – #4413
  • [x] core/commands/repo.go – #4413
  • [ ] core/commands/add.go
  • [ ] core/commands/dag/dag.go
  • [ ] core/commands/files/files.go
  • [ ] core/commands/commands.go
  • [ ] core/commands/filestore.go
  • [ ] core/commands/object/object.go
  • [ ] core/commands/pin.go
  • [ ] core/commands/ping.go
  • [ ] core/commands/unixfs/unixfs.go
  • [ ] core/commands/refs.go

Basically, anytime we write to a channel that may block (i.e., doesn’t have a buffer at least as large what we’re writing), we should select on the channel write and <-req.Context().Done().

Updated 22/11/2017 20:29 2 Comments

Replace mutt_mktemp() with mkstemp()


Ultimately all the ways in mutt to create a temporary file come down to mutt_mktemp_full() in muttlib.c. The varying part of the name that function creates, not counting totally predictable things like the PID, is a 64 bit random number. That is less randomness than I have in freaking shell scripts, by using the mktemp(1) program with a suffix of 12 Xs (roughly 6*12 = 72 bits), as the Turtle Book [1] recommends. Shouldn’t we use the libc interfaces for making temporary files, which are similar to mktemp(1) and thus allow for more randomness?

[1] Classic Shell Scripting by Robbins & Beebe, O'Reilly Media 2005. See pages 274-278.

Updated 06/12/2017 20:16 13 Comments

Check if a Swift file contains headers


Context 🕵️‍♀️

When new files are created from Xcode it adds some default headers. Since they don’t add much value, we make sure in every PR that we don’t merge source files with comments in them.

What 🌱

Add a new check in the Danger file that fails if there’s any Swift file with headers.

Proposal 🎉

  • Update the Dangerfile to include that check.
Updated 16/11/2017 07:51

Create config form in client


Currently a config looks a bit like this: { "players": [ { "name": "bert", "command": "python3", "args": ["../games/planetwars/bots/simplebot/"] }, { "name": "timp", "command": "python3", "args": ["../games/planetwars/bots/simplebot/"] } ], "game_config": { "player_map": { "bert": "player_1", "timp": "player_2" }, "map_file": "../games/planetwars/maps/hex.json", "max_turns": 500 }, "log_file": "gamelog.json" }

Now, in the client, we would like to provide some visual interface, a form, to create this a bit more pretty. So, create a form that makes a config like this.

Steps to succes

  • Create a new React component that contains this form
  • Add some form fields
  • Create an internal representation of a gameconfig
  • Add a button that saves form data to internal config
  • Save config to filesystem
Updated 17/11/2017 08:31

Faulty 'truncate' option in files_write()


The following code fails: ```python import io import ipfsapi

api = ipfsapi.connect(‘localhost’, 5001)

longtext = ‘one two three’

res = api.files_write(‘/file.txt’, io.BytesIO(str(longtext)), create=True) assert api.files_read(‘/file.txt’) == longtext

shorttext = ‘this’

res = api.files_write(‘/file.txt’, io.BytesIO(str(shorttext)), truncate=True) assert api.files_read(‘/file.txt’) == shorttext `` The second assertion fails withyes two three== yes`

This error is seems to be specific to the API implementation, as the command line equivalent works just fine: bash $ echo 'one two three' | ipfs files write /file.txt --create $ echo 'yes' | ipfs files write /file.txt --truncate $ ipfs files read /file.txt yes

Updated 17/11/2017 18:50 1 Comments

Make links to "more information" in Vulnerable JS audit clickable


Currently, when the scanner finds a vulnerable JS library, it provides a description that says to see the url for more information (for example: See for more information"), but that URL is not clickable.

Would love to make this easier for people to click-through and get remediation information.

Updated 08/11/2017 22:10 4 Comments

Multiple selector returns single Choices instead of array of Choices


I have the following code:

var filterDropdownControls = new Choices('.main-filter-container .js-select-element', {
            itemSelectText: null,
            searchEnabled: false,
            searchChoices: false,
            shouldSort: false,
            shouldSortItems: false

Expected result:

filterDropdownControls is an array of Choices becuse selector ‘.main-filter-container .js-select-element’ returns multiple elements.

Actual result:

Choises is applied to all elements of selector. But the filterDropdownControls is a single instance of Choices which linked to first element of selector.

Updated 06/12/2017 09:11 2 Comments

Tell users how to use `@sonarwhal/sonar` when they try to scan `localhost`



This template is for bug reports or suggestions for sonar’s website ( If you have an issue with a URL when using the online scanner, please report it in

  1. Propose a new feature/change:

    Write a short description of your proposal with (if applicable) some examples of the expected behaviour.

  2. Bug report:

    Share the url, OS version, browser version and steps to reproduce.

  3. If you have any questions, please stop by our chatroom:

–> There are few error in database from people trying to scan localhost. We should tell them to use the CLI version

Updated 03/11/2017 17:40 8 Comments

Deprecation warning on 'include'


I caught deprecation warning: $ ansible-playbook -i ansible/inventory ansible/prepare_devel_test_runners.yml Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. future release. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. Owner of monitored GitHub repo:

Updated 21/11/2017 09:07 2 Comments

Add CocoaPods support


Context 🕵️‍♀️

Support installing the tool with CocoaPods. Other tools like SwiftLint supports CocoaPods,

What 🌱

The binary gets installed by CocoaPods and developers can easily use the binary from a project build phase.

Proposal 🎉

Add a .podspec and update the release process to generate the CocoaPods binary.

Updated 01/11/2017 21:30 2 Comments

Remove inline styling from js to accommodate standard CSP policies


This line of code violates standard CSP policies due to the inline style being set: js this.passedElement.setAttribute('style', 'display:none;');

What developers can do instead is specify the hiddenState class with one that has a display: none; rule when creating a Choices input. As there is an operation that occurs a few lines before: js // Hide passed input this.passedElement.classList.add( this.config.classNames.input, this.config.classNames.hiddenState, );

Is there a case that requires this styling to be set here that I’m failing to consider?

Updated 06/12/2017 17:47 1 Comments

Class instances for types from Foreign.C.Types


Why does only the CSize from Foreign.C.Types has instances for Additive, etc.? If there is not a reason for that, I’m willing to implement those instances for all types from Foreign.C.Types. If that’s alright, perhaps these instances should be in modules Basement.FFI.Additive, etc. and Foundation.FFI (or C.Types instead of FFI)?

Note: I think that at some stage, it would be nice to implement the things from Foreign.C.String using the Foundation’s String.

Updated 11/11/2017 09:44 1 Comments

Translate user interface to your preferred language!


Just go to and start translating!

If your language is not present yet, create a new issue requesting it :+1:

Same if anyone want to become a proofreader for a specific language:

Difference between translators and proofreaders:

  • translators can suggest translations for empty or translated strings and vote on existing ones
  • proofreader can translate and suggest (of course) but will lose their Voting feature to get a more powerful “Proofreader ” button that allows them to approve or reject translations

Don’t worry if GitHub does not reflect translations added at Crowdin: translations are merged manually before every release.

It is a good idea to opt-in for email notifications about any new strings in future:

Thanks again for your translations!

Updated 06/11/2017 22:45

Rework rollback operations


Currently a rollback is just a forced state-update on the operation log to whatever state the user deems fit.

This is implemented via a stateOp which are identified when we try to deserialize a user operation and fail to do so:

That failure relies on a decoder feature (ErrorIfFieldNotSet and assumes that the user-provided operation does not have a State field like the stateOp has.

There should be a way of identifying a stateOp which does not rely on the decoder error-ing. Additonally, stateOp should probably have the State field renamed to avoid any conflicts.

Updated 26/10/2017 10:13

Docker image prone to ipfs daemon to become zombie process


I ran ipfs/ipfs-cluster:v0.1.0 image for some time and ipfs process was memory hungry and eventually got killed (by OOM killer I suppose), now it’s zombie. ``` PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND 1 0 ipfs S 34932 0% 3 0% ipfs-cluster-service –loglevel debug –debug 624 0 root S 1592 0% 1 0% sh 630 624 root R 1524 0% 3 0% top 19 1 ipfs Z 0 0% 2 0% [ipfs]

`` The way to avoid such behavior is use ethersupervisord or something like that **and** add option to run ONLYipfs-cluster-servicevia IPFS_APIvariable for example (if it's set - sed it inservice.jsonand do not forkipfs daemon`)

Updated 04/12/2017 15:04 4 Comments

does <save> for IMAP really need to display User/Pass?

  • bug reports

    • Expected behavior <save> shows save to imap://
    • Actual behavior <save> shows Append messages to <br>imap://<user>:<pass> ([yes]/no):
    • Steps to reproduce save a message to a folder with folder=imap URL.
    • Used program versions NeoMutt 20171013-25-e05db1
    • Operating System and its version macOS High Sierra (10.13)

I’d like to see us suppress the username/password (or at least the password) on the Append message.

Updated 21/10/2017 14:41 10 Comments

Fork me on GitHub