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

Alternative DList encoding


@ndmitchell says in issue #256:

DList is a particular encoding, but I’ve generally found that data Str a = Zero | One a | Two (Str a) (Str a) often performs better, especially if you add another constructor for tail-append (e.g. Two1 (Str a) a). You can then traverse that to build a list (or anything else) quickly. Have you benchmarked DList against such a structure? Certainly my knowledge is quite old, so compiler optimisations may have made one or the other much cheaper since then.

I think this is an interesting suggestion, and (eventually) like to see it materialized+benched

Updated 25/04/2017 21:15 2 Comments

Enable firing of 'change' event on text-input choices


Currently, the ‘search’ event is not triggered if the element passed to Choices is a text-input field, as _handleSearch is only called if this.isTextElement is false.

I’m trying to construct a Choices element on a text-input field which pulls suggestions from a remote server. My workaround for now is to attach a keyup event listener to the .choices__input--cloned child, but it would be more convenient to be able to listen for the search event.

Updated 21/04/2017 08:01 1 Comments

Focal point fails for large images


Issue Summary

Focal point not working for large images (1000px +).

Steps to Reproduce

  1. Upload image with size larger than 1000px.
  2. Start editing this image.
  3. Add focal point
  4. Save.

Expected result:

Image focal point is saved.

Actual result:

Error appears: The image could not be saved due to errors.

This error occurs with wagtail 1.9. It is working with Wagtail 1.6 and django 1.9 . Any idea how to fix this?

Technical details

  • Python version: 3.5.3
  • Django version: 1.10.7
  • Wagtail version: 1.9
  • Browser version: Chrome 57
Updated 14/04/2017 15:04 2 Comments

Bundling errors from mixing ES6 import/export and CommonJS module.exports


I am experimenting with importing ES6 source files from Choices into an environment setup for tree-shaking with Babel/Webpack. This is accomplished by not transforming CommonJS modules and relying solely on native ES6 import/export statements. Unfortunately Choices still has two module.exports calls in the source leading to the standard error message:

Uncaught (in promise) TypeError: Cannot assign to read only property 'exports' of object '#<Object>'

You’ll find those module.exports calls here and here. With reference to this thread the problem appears to be that the two styles appear in the same file. Not mission critical but thought you should be aware. Thanks for the great work on this package!

Updated 11/04/2017 10:59 4 Comments

Add tests for `new DOMMatrix('none')`


Originally posted as by @zcorpan on 12 Jan 2017, 20:22 UTC:


Variants to test: leading/trailing whitespace, uppercase, CSS comments before/after. (should all work I think)

Also: empty string (should work), and only whitespace (should throw).

cc @tim-loh

Updated 07/04/2017 14:19

Help text is partially hidden when use a combination of BooleanField and FieldPanel in page model


Help text is partially hidden when use a combination of BooleanField and FieldPanel in page model (see screenshots below).

To reproduce use the following snippet:

class SomePage(Page):
    portrait_images_in_teaser = models.BooleanField(
        default=False, help_text='I am a long-long help text. I am so long so you would not '
                                 'be able to see me on your display. Surprise!'

    settings_panels = Page.settings_panels + [


<img width=“636” alt=“screen shot 2017-03-31 at 15 08 24” src=“”>

Tablet / mobile

<img width=“664” alt=“screen shot 2017-03-31 at 15 09 54” src=“”>

Updated 31/03/2017 12:22

Let 'ipfs dht findprovs' return more than 20 peers


Version information:

go-ipfs version: 0.4.8-rc1-
Repo version: 5
System version: amd64/darwin
Golang version: go1.8






Currently when running ipfs dht findprovs it’ll continue until a timeout or finding 20 peers. It would be helpful if we could configure the command not return just because it found 20 peers. In addition, would be helpful to be able to configure the amount of time it’ll search as well.

Relevant line:

Updated 17/04/2017 18:14 5 Comments

Non-self IPNS names need republishing


<!– Output From ipfs version --all) –>

Version information: 0.4.7

<!– Bug, Feature, Enhancement, Etc –>


<!– from P0 “Critical” to P5 “Relatively Unimportant”) –>

Priority: P2


It doesn’t look like names added by ipfs key gen ever get republished. I didn’t actually test it, but I’m fairly certain there’s no code for it.

It should:

  • at startup, call Republisher.AddName() for each key in the keystore.
  • same for every run of ipfs key gen, add the name to the republisher.

cc @edsilv I think this will affect you. You’ll have to run ipfs name publish --key=<name> <hash> every 12 hours, for now.

<!– This is for you! Please read, and then delete this text before posting it. The go-ipfs issues are only for bug reports and directly actionable features. Read if your issue doesn’t fit either of those categories. Read if you are not sure how to fill in this issue. –>

Updated 26/03/2017 16:43 11 Comments

PeerID in IPNS key workflow


<!– Output From ipfs version --all) –>

Version information: 0.4.7

<!– Bug, Feature, Enhancement, Etc –>

Type: enhancement

<!– from P0 “Critical” to P5 “Relatively Unimportant”) –>

Priority: P3


  • ipfs name publish --key should accept a PeerID in addition to the key name.
  • ipfs key list should list the PeerID alongside the key name (-l arg should be default true).

<!– This is for you! Please read, and then delete this text before posting it. The go-ipfs issues are only for bug reports and directly actionable features. Read if your issue doesn’t fit either of those categories. Read if you are not sure how to fill in this issue. –>

Updated 26/04/2017 22:05 5 Comments

Pin lock UI feedback


<!– Output From ipfs version --all) –>

Version information: 0.4.7

<!– Bug, Feature, Enhancement, Etc –>

Type: enhancement

<!– from P0 “Critical” to P5 “Relatively Unimportant”) –>

Priority: P2


Pinning operations take the pin lock, so that only one pinning operation can run at a time. When running ipfs pin add and another operation is currently running, it’ll sit and wait until it acquires the lock and only then start to run. During this time there’s no UI feedback.

Instead it should show something like “Waiting for other pin operations to finish… ok”.

I think apart from ipfs pin add, this also applies to ipfs pin rm and ipfs add.

<!– This is for you! Please read, and then delete this text before posting it. The go-ipfs issues are only for bug reports and directly actionable features. Read if your issue doesn’t fit either of those categories. Read if you are not sure how to fill in this issue. –>

Updated 21/03/2017 05:34 1 Comments

base32 is broken


It seems base-x is not working as well as we thought it would. Probably other bases are broken as well


  • Write more extensive tests
  • Fix encoding

Failing example for base32

const raw = new Buffer('1220120f6af601d46e10b2d2e11ed71c55d25f3042c22501e41d1246e7a1e9d3d8ec', 'hex')
const expected = 'bciqbed3k6ya5i3qqwljochwxdrk5exzqilbckapedujenz5b5hj5r3a'
const actual = 'bjcaeqpnl3advdoccznfyi624oflus7gbbmejib4qorerxhuhu5hwhm'

cc @diasdavid

Updated 05/04/2017 22:49 3 Comments

Wish: more intelligent pasting


It happens much too often that the mouse cursor is in the wrong window during pasting.

If some text gets sent to mutt it can have quite a lot of effects - pasting a link like http://... would switch the headers, tag two messages, and then ask whether to print the current message, for example.

Please use the xterm escape sequences (below) to switch the terminal to bracketed paste mode. Then mutt will receive two escape sequences as start and end delimiter, and can decide to ignore the paste – this would be most of the time, although pasting a command in might make sense.

From /usr/share/doc/xterm/ctlseqs.txt.gz: ``` CSI ? Pm h Ps = 2 0 0 4 -> Set bracketed paste mode. CSI ? Pm l Ps = 2 0 0 4 -> Reset bracketed paste mode.

Bracketed Paste Mode When bracketed paste mode is set, pasted text is bracketed with control sequences so that the program can differentiate pasted text from typed- in text. When bracketed paste mode is set, the program will receive: ESC [ 2 0 0 ~ , followed by the pasted text, followed by ESC [ 2 0 1 ~ .


Updated 14/03/2017 21:56 4 Comments

Snippet / Modeladmin / settings forms should use `validation_error` helper


See #3440, which introduces a new validation_error helper to ensure that validation errors on the page edit form - both field-specific, and non-field errors - are displayed appropriately. After this is merged, we should update the other admin views that work with user-defined forms so that they’re also using this helper:

  • snippets
  • ModelAdmin
  • wagtail.contrib.settings

As part of this task, we should make sure that validation error handling is covered by unit tests - i.e. for each of these modules, there should be at least one test similar to which posts an invalid form and confirms that the form is redisplayed with the expected error message included. (There’s no need to go through all permutations of field and non-field errors, since that’s already covered by #3440.)

Updated 10/03/2017 19:19

Bindkey aliasing without warnings

  • Why do you not like the current state?

When you have several bindkeys with the same prefix, the one with the shortest prefix is always executed, making all others unreachable. It’s even worse because the order of bindkey definition matters.

Take the minimal muttrc alternatives:

bind index g group-reply
bind index gg first-entry

When you click g, nothing happens because the bindkey that is defined is the second one. gg gets executed.

bind index gg first-entry
bind index g group-reply

When you click g, a group reply is initiated. The first entry binding was lost.

  • What would you like to see to change?

I don’t think mutt need a Vim-like approach using timeouts, that is too complicated. But at the very least a warning message should be produced when you bind a key combination that aliases other.

Updated 15/03/2017 10:06 6 Comments

Make the debug level configurable within neomutt


Starting neomutt with the option -d 2 enables debug logging (if enabled by the build). Often, the user hasn’t enabled this logging when then encounter a problem. Often, restarting will leave neomutt in a slightly different state to the one that caused the problem.

I propose changing the internal debuglevel variable into a user-configurable $debug_level

Use case: User sees some unexpected behaviour - set debug_level=5 - repeat actions to repeat error

When debug_level is set > 0, a new log file will be opened. When debug_level is set to 0, the log file will be closed.

Updated 06/03/2017 17:09 3 Comments

.head and .chrs are not highlighted


Describe what you see, what you want to see, and perhaps some linkage to docs, synopses, or irclog chatter.

Example Code

Picture [optional]

Providing a picture means that if the issue is fixed and linguist updates to include the fix (linguist uses this package to highlight Perl 6 on GitHub), your issue will remain historically viewable.

Leave this in. For internal use.

  • [ ] Fixed in Master
  • [ ] Fixed in Release
  • [ ] Has Tests
  • [ ] Passes Tests
Updated 15/04/2017 05:48

Connecting to running daemon with wrong ID makes daemon start listening on address with wrong ID


I’m running on js-ipfs node in the browser and one daemon in nodejs. If I connect from the browser to the nodejs daemon with ipfs.swarm.connect but the ID part of the multiaddr is wrong, it’ll start listening on that address…


  1. Run jsipfs daemon
  2. Run jsipfs id, output:
  "id": "QmVabaitA7SyHTWgY4Bhtc7JfAzMXWeXqBMT93teDic4nt",
  "publicKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCUoAkSt6vtv2ZkC3maLnBGnA1OMNnSW/FsFnfhT+zQMy9A4YkePGigpNQsiI9yKMoeacBqZsNCDIGqebc5FquMLRRPN/GBJZz7tTT3uZo1aVBFcCiQapbGB56SYkxBFIyLFAlzJ3Ee8rGINvl7+iUZBirV9VylQXvGU3IRYe6zQR0Et/J5QjLIF3j5wylEm5SvN8//nGaecd0GwX5dYe3RawMlPIm+vCN+fIy1MpQQyT33IuM1iEEXzRsNzHeZ2GlWMrTQNjmKdFk4G/p/fVxxN45RpW0BDB9Em89JB9NHP2it4meg2Ao/QOfugFjtt4lHYML1KZvX/aqO8db6wN8pAgMBAAE=",
  "addresses": [
  "agentVersion": "js-ipfs",
  "protocolVersion": "9000"
  1. connect from browser node with wrong id:
  1. run jsipfs id again, output:
  "id": "QmVabaitA7SyHTWgY4Bhtc7JfAzMXWeXqBMT93teDic4nt",
  "publicKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCUoAkSt6vtv2ZkC3maLnBGnA1OMNnSW/FsFnfhT+zQMy9A4YkePGigpNQsiI9yKMoeacBqZsNCDIGqebc5FquMLRRPN/GBJZz7tTT3uZo1aVBFcCiQapbGB56SYkxBFIyLFAlzJ3Ee8rGINvl7+iUZBirV9VylQXvGU3IRYe6zQR0Et/J5QjLIF3j5wylEm5SvN8//nGaecd0GwX5dYe3RawMlPIm+vCN+fIy1MpQQyT33IuM1iEEXzRsNzHeZ2GlWMrTQNjmKdFk4G/p/fVxxN45RpW0BDB9Em89JB9NHP2it4meg2Ao/QOfugFjtt4lHYML1KZvX/aqO8db6wN8pAgMBAAE=",
  "addresses": [
  "agentVersion": "js-ipfs",
  "protocolVersion": "9000"

Now it’s listening on /ip4/ even though the daemons ID is QmVabaitA7SyHTWgY4Bhtc7JfAzMXWeXqBMT93teDic4nt

Updated 05/04/2017 23:02 1 Comments

set plus-equals, minus-equals

  • Task: Change NeoMutt to allow += and -= to change variables

Some of Vim’s variables are lists and they allow the user to add/delete items using the syntax:

set variable += apple
set variable -= banana

Change NeoMutt to be like Vim.

  • Task: Add a new variable type of “letter-list”

Some of Vim’s variables are collections of characters (a letter list). Create a new variable type to support this sort of list, then extend the += and -= to work with them.

This issue will be very helpful in solving:

Updated 02/02/2017 23:00

Revise Commands documentation to not be CLI-centered


<!– Output From ipfs version --all) –>

Version information: next

<!– Bug, Feature, Enhancement, Etc –>

Type: Enhancement

<!– from P0 “Critical” to P5 “Relatively Unimportant”) –>

Priority: P5


This is a note for something that I should eventually revise. Since we now autogenerate documentation directly from the code (, we should aim to have Commands documentation provide descriptions which serve for both CLI and HTTP API (which are the same thing at the end). Of course, the CLI user should find them as useful as before.

This applies only to the things that are used for the auto-generation: - Helptext.Tagline - Arguments.Description - Options.Description

The CLI-centered descriptions are a minority so this is a minor issue anyway.

<!– This is for you! Please read, and then delete this text before posting it. The go-ipfs issues are only for bug reports and directly actionable features. Read if your issue doesn’t fit either of those categories. Read if you are not sure how to fill in this issue. –>

Updated 06/03/2017 07:39 1 Comments

Weird/extra characters are passed to a filter in index_format


I’ve got this index_format:

folder-hook "." 'set index_format="$my_rcdir/bin/trimi \"<<%S>>%?M?+& ?%-22.22F │ %s\"|"'

And this is what is being passed to trimi:

<<^N^]-^N^[>> ^N^\To John Friend ^N^[ │ ^N^^Re: Subject...^N^[

It seems that every %format string is being encompassed by those ^N,^] etc.

<^N> 14, Hex 0e, Octal 016 <^]> 29, Hex 1d, Octal 035 <^[> 27, Hex 1b, Octal 033 <^^> 30, Hex 1e, Octal 036

Updated 26/04/2017 06:20 2 Comments

Create a new variable $net_folder_format


$folder_format is used for both local file/dirs and network mailboxes, such as IMAP. If you have multiple mailboxes, some local, some remote, then

I’d like you to introduce a new variable $net_folder_format If the mailbox is remote and this variable is set, then use it to format the folder information. If the variable isn’t set, then default to $folder_format

Local mailboxes use $folder_format as normal.

Easy tasks would be perfect for someone new to NeoMutt. You won’t need to write lots of code, and you won’t need any previous knowledge of the NeoMutt code. Obviously, you will need to be able to write C code :-)

Easy tasks also come with a mentor – a NeoMutt project member – who will help you learn what you need to complete the work.

If you’re interested in having a go, leave a comment or speak to us in our IRC channel: #neomutt on

Thank you :heart:

Updated 29/04/2017 09:23 3 Comments

Deleting page from usage view sends user back to wrong place


Issue Summary

When you delete a page from the page type usage view, you are sent back to the explorer view of the parent page instead of the usage view

Steps to Reproduce

  1. Click “add subpage” somewhere, taking you to the “choose a page type” page
  2. On the right hand side, click any of the “pages that use type X” links (if the one you clicked on has no pages, find another)
  3. Now delete one of the pages
  4. You should now be redirected to the wrong place

I expected to be taken back to the page usage view

Technical details

  • Python version: 2.7
  • Django version: 1.9.9
  • Wagtail version: 1.6.2
  • Browser version: Firefox 46.0.1
Updated 22/03/2017 15:48 1 Comments

Migrate CLI output to Logger


With the new files APIs, I’ve started on a logger that has many benefits compared to the current approach of using console.log for output. - Intent is clear, console.log is often used to debugging, may not be clear it’s actual output from CLI - Easier to turn on/off if we want to add a –quiet flag that only outputs some things - Abstract away the logging from the CLI itself - Easier to build things that continues on the same line, commands that takes time to execute.

I don’t think this is a urgent refactor we have to do right now, but maybe we can start thinking about it a little, and write new code with the logger, rather than migrating everything at once.

Updated 05/04/2017 23:05 10 Comments

API for transfer progress stats


There has been a fair amount of demand for a way to check the ‘transfer progress’ of a given file, similarly to how torrent clients show.

This is not currently a very easy thing to track, but i think that we can abuse context values and the commands diagnostics api (ipfs diag cmds) codebase to get something working here.

We first should design what we want this api to look like, and what format the information it provides should be in. Then we can go ahead and try to implement it.

Updated 10/03/2017 21:39 2 Comments

Document `{% embed %}` tag


As far as I can tell embeds don’t have any documentation, only an passing reference in the editor’s manual (

Documentation is required of - {% embed %} - the fact there is no EmbedField or similar - suggested approaches for responsive scaling.

See also #1553, #1894, #1756 amongst others.

Updated 19/04/2017 09:07 2 Comments

asciinema for go-ipfs


we need one. here’s a super basic one i made: but it’s so off.

i want to cover: - ipfs init - ipfs cat the welcome readme - ipfs add -r . a big directory of files - ipfs cat files just added - ipfs ls dirs just added - ipfs add a big file (progress bar)

maybe we could cover: - changing a file, adding dir again, noting some same, some different hashes - statrting ipfs daemon - ipfs swarm peers - ipfs cat through the network – a file i didnt have.

what else? other ideas?

Updated 21/02/2017 21:30 1 Comments

New Idea - Add user status "locked"


Maybe for later releases, it’s an option to think about a new user status named “locked”. The status means, that the user cannot login anymore, but the posts and comments of this user are still visible in the timelines. A the moment, posts or comments aren’t visible anymore if the user status is “inactive”.

Updated 04/04/2017 12:54 1 Comments



HTTP API root (e.g. http://localhost:5001/) should show a listing with links to: - /webui - show locally installed, trusted apps. (right now only webui) - list the URL to the api: /api/v0/<command>?arg=<args>&<flags>

thanks @dominictarr

Updated 24/03/2017 19:48 12 Comments

Option to set show_in_menus default to True


At the moment the show_in_menus field defaults to False so the user has to manually tick the ‘Show in menus’ checkbox in the Promote panel for each new page that is created. However, I can’t think of any sites that I’ve ever been involved with developing where the default scenario was for new pages to be excluded from menus. It would seem more logical then for the default to be True, with the onus being on the user to unselect the checkbox if they want to hide the page.

(Alternatively it might actually make more sense if the checkbox was labelled ‘Hide from menus’ and was unchecked by default.)

Updated 03/04/2017 00:42 7 Comments

Make MAX_NODES and MAX_AREA values configurable


Currently we define

#define MAX_AREA 0.25
#define MAX_NODES 50000

with the logic

int num_nodes = sel.select_nodes_from_bbox(b, MAX_NODES);
if (num_nodes > MAX_NODES) {
  throw http::bad_request(
    (format("You requested too many nodes (limit is %1%). "
            "Either request a smaller area, or use planet.osm")
            % MAX_NODES).str());

We’ve said it would be good to the max values configurable before, but now I have a project that could use it, so I have some motivation to fixing it.

I think it makes sense to change where the logic is being evaluated at the same time.

You can imagine a backend which caches in a tiled schema so it makes sense to return a larger area than requested for small requests. This could mean that for an area with an exceptionally high node density that the number of nodes selected will always be >MAX_NODES.

Another example is a backend that somehow knows that a particular request will be more than MAX_NODES without running it. It would be foolish to run it, but the number of nodes selected for select_nodes_from_bbox would be 0.

This could be accommodated by changing select_nodes_from_bbox(b,MAX_NODES) to throw http::bad_request itself

Updated 03/02/2017 09:57

Fork me on GitHub