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

Directory report - single person household birthday does not follow system format


around line 238 in Reports/DirectoryReport.php there is this: if ($bDirBirthday && $per_BirthMonth && $per_BirthDay) { $pdf->sRecordName .= sprintf(‘ (%d/%d)’, $per_BirthMonth, $per_BirthDay);

to make it follow the system format for the birth day, I changed it to this:

    if ($pdf->getBirthdayString($bDirBirthday, $per_BirthMonth, $per_BirthDay, $per_BirthYear, $per_Flags)) {
        $pdf->sRecordName .= ' ('.$pdf->getBirthdayString($bDirBirthday, $per_BirthMonth, $per_BirthDay, $per_BirthYear, $per_Flags).')';

Rudimentary tests seem to work.

Collected Value Title Data
Page Name /DirectoryReports.php
Screen Size 864x1536
Window Size 764x1519
Page Size 1907x1519
Platform Information Linux 2.6.32-673.8.1.lve1.4.3.1.el6.x86_64 #1 SMP Thu May 5 16:06:47 EDT 2016 x86_64
PHP Version 5.6.30
ChurchCRM Version 2.7.0
Reporting Browser Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:53.0) Gecko/20100101 Firefox/53.0
Prerequisite Status Missing Prerequisites: [“PHP 7.0+”]
Integrity check status {“status”:“success”}
Apache Modules mod_rewrite,mod_mime,mod_headers,mod_expires,mod_auth_basic
Updated 22/04/2017 15:21

Meaningful error for extra whitespaces


If the user accidentally adds a whitespace in a filelist between the filename and the attributes, the error (exception) is not very helpful.


[fileset dpi]
    file_type = cppSource
    usage = sim verilator
    files =


[fileset dpi]
    file_type = cppSource
    usage = sim verilator
    files =
      dpi/myheader.h [is_include_file]

In the incorrect case, fusesoc takes the whitespace as the separator and an empty filename with the attribute leading to the exception:

IOError: [Errno 21] Is a directory: '/path/to/module/'

It would be more helpful to throw an error like “empty filename, did you add an extra space between the filename and the attribute?”

Updated 21/04/2017 13:09

Tabs bar is not shown when switching from private tabs to normal tabs


Description: Tabs bar is not shown when switching from private tabs to normal tabs

Did you search for similar issues before submitting this one? Yes Expected behavior: Tabs bar should be shown when swithced from private tabs to normal tabs - Device (iPhone5, iPhone6s plus, iPad 3, ?): iPhone 6 (iOS 10.3.1.), iPhone 7+(iOS 10.3.1)

  • Brave Version: Found on 1.3.2 but its a known issue in 1.3.1 as well

  • Steps to reproduce:

    1. Enable always show tabs bar from settings
    2. Open two or more tabs to show the tabs bar in portrait mode
    3. Long press on a link and select open in a private tab
    4. Once private tab is opened, close it and return to normal tabs
    5. Tabs bar is missing, tab switch only possible from tapping on the tab count, still doesn’t bring up the tabs bar
    6. Go to settings and navigate back to tabs, tabs bar becomes visible

** Website problems only: N/A - did you check with Brave Shields down? N/A - did you check in Puffin/Dolphin/iCab/Maxthon (UIWebView-based browsers)? N/A

  • Screenshot if needed:

  • Any related issues:

Updated 20/04/2017 11:33

Followup Work for Iterable Support


@cmmcleod sent an amazing PR for supporting iterables (including Immutable.js) in

There’s a few remaining things which would be nice to investigate:

  • We should provide a way to “load more” if there are too many items in the iterable. The arbitrary 100 item limit is a bit confusing.
  • It shouldn’t be possible to edit things inside key-value pairs. Currently editing a fake “array” of key and value throws.
  • Perhaps we can format key-value pairs differently? I know we bikeshedded on this in but I wonder if all that’s necessary is to replace an array-like display with a dedicated “Key:” and “Value:” labels, and maybe change “Array” in this case to “Iterable” or something like that.
Updated 30/04/2017 14:59 7 Comments

[Modern] Difficulty following paginationContainer example


I’m trying to follow the paginationContainer example, but have a couple of issues:

Firstly, it won’t compile:

Invariant Violation: RelayConnectionTransform: Expected type `EventConnection` to have an edges.cursor field for which the type is an scalar in document `UpcomingEvents_query`.

My EventConnection looks like this

type EventConnection {
  pageInfo: PageInfo!
  edges: [EventEdge]

type EventEdge {
  node: Event
  cursor: String!

This is unchanged from my old classic-compatible schema.

Secondly, the example specifies the type of the cursor variable as “ID”, but the connection spec (as well as graphql-relay-js) defines cursors as “String”

Updated 19/04/2017 08:18 4 Comments

Introductions (Presentazioni)


Welcome, contributors! Before starting to work on the guide, we would like to get to know you better. Please, introduce yourself below in the comment section.

If you don’t know were to start to introduce yourself, here are some optional guidelines: - [ ] What’s your name/nickname? - [ ] Where are you from? - [ ] Why do you want to be part of this project? What goals do you hope to achieve? What skills do you wish to learn? - [ ] Are you engaged, or have you ever been engaged, in any online community or organization? - [ ] Have you any experience in translation or localization? - [ ] How many languages do you speak, and how did you learn them? - [ ] Have you any experience in open software? - [ ] Have you any experience with GitHub?

ITALIAN VERSION / VERSIONE ITALIANA Un benvenuto a tutti i collaboratori! Prima di iniziare a lavorare sulla guida, ci piacerebbe conoscerti un po' meglio. Puoi dire qualcosa su di te qui di seguito, nella sezione commenti.

Se non hai idea di dove iniziare per presentarti, puoi ispirarti alle seguenti domande facoltative… - [ ] Qual è il tuo nome o nickname? - [ ] Dove vivi? - [ ] Per quale ragione hai deciso di partecipare al progetto? Che obiettivi speri di concretizzare? Che competenze desiri acquisire? - [ ] Fai parte, o hai mai fatto parte, di comunità od organizzazione virtuale? - [ ] Hai già qualche esperienza di traduzione o localizzazione? - [ ] Quante lingue conosci e come le hai imparate? - [ ] Hai già qualche esperienza nel campo dell'Open Source? - [ ] Hai già qualche esperienza nell'utilizzo di GitHub?

Updated 22/04/2017 20:21 4 Comments

Move owner set manipulation during document discarding


This is a small editorial change suggestion. Probably a good first bug, although I’d prefer @annevk sign off on the idea beforehand, so assigning it to him for a spot-check. It relies on #2520 landing first (and I will reference the text assuming that lands).

Currently the definition of “discard a Document” has a funny note at the bottom of its six-step algorithm:

Whenever a Document object is discarded, it is also removed from the owner set of each worker whose set contains that Document.

Indeed, in the section “The worker’s lifetime,” we have

Whenever a Document object is discarded, it must be removed from the owner set of each WorkerGlobalScope object whose set contains that Document object.

This seems very strange. We should just move that latter normative statement into the algorithm for discarding a document, and get rid of the non-normative note.

Updated 14/04/2017 06:12 1 Comments

Add some DNS, Resource prefetch and preload meta info to Thimble


Some great speedups discussed in and

In we’re undoing my hacky way of preloading these big Bramble resources. We can use this proper way instead.

Updated 22/04/2017 22:51 2 Comments

Sign Out Button Location


Sign Out/Log Off button is its own separate button and not easily identifiable. Typically, this button is found under your profile picture or the settings section of a website.

Collected Value Title Data
Page Name /Menu.php
Screen Size 800x1280
Window Size 670x1280
Page Size 1451x1280
Platform Information Linux IDAE001 4.4.0-66-generic #87-Ubuntu SMP Fri Mar 3 15:29:05 UTC 2017 x86_64
PHP Version 7.0.15-0ubuntu0.16.04.4
ChurchCRM Version 2.6.3
Reporting Browser Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Prerequisite Status All Prerequisites met
Integrity check status {“status”:“success”}
Apache Modules core,mod_so,mod_watchdog,http_core,mod_log_config,mod_logio,mod_version,mod_unixd,mod_access_compat,mod_alias,mod_auth_basic,mod_authn_core,mod_authn_file,mod_authz_core,mod_authz_host,mod_authz_user,mod_autoindex,mod_deflate,mod_dir,mod_env,mod_filter,mod_mime,prefork,mod_negotiation,mod_php7,mod_rewrite,mod_setenvif,mod_socache_shmcb,mod_ssl,mod_status
Updated 11/04/2017 05:03

Hover text for top right icons


Hover text would be useful for knowing what the icons do before actually having to click on them.

Collected Value Title Data
Page Name /Menu.php
Screen Size 800x1280
Window Size 670x1280
Page Size 1451x1280
Platform Information Linux IDAE001 4.4.0-66-generic #87-Ubuntu SMP Fri Mar 3 15:29:05 UTC 2017 x86_64
PHP Version 7.0.15-0ubuntu0.16.04.4
ChurchCRM Version 2.6.3
Reporting Browser Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Prerequisite Status All Prerequisites met
Integrity check status {“status”:“success”}
Apache Modules core,mod_so,mod_watchdog,http_core,mod_log_config,mod_logio,mod_version,mod_unixd,mod_access_compat,mod_alias,mod_auth_basic,mod_authn_core,mod_authn_file,mod_authz_core,mod_authz_host,mod_authz_user,mod_autoindex,mod_deflate,mod_dir,mod_env,mod_filter,mod_mime,prefork,mod_negotiation,mod_php7,mod_rewrite,mod_setenvif,mod_socache_shmcb,mod_ssl,mod_status
Updated 11/04/2017 05:03

Image Viewer: Transparent background images look bad when using Dark Theme


The dark background in the image viewer makes it hard to see transparent images.


There is a checkered pattern underneath the image that is probably transparent and is letting the black color through. We should give the area underneath the image a white background always, despite what theme is currently used.

Also, we could probably stand to make that checker pattern a little bigger.

Updated 20/04/2017 18:37 8 Comments

Survey on volunteers preferences and expectations

  • [ ] Project notifications preferences: how would you like to be notified that a project needs your attention? Automatic notifications? A personal email from your reviewer each time there is an update? A public dashboard to check whenever you like? Some other form of notification?

  • [ ] Relationships with reviewer/senior translator: how can your senior be of any help to you? What do you hope to achieve from your exchanges with your reviewer (es. mentorship, tips and know-how exchanges, recognition of your abilities and efforts etc.)?

  • [ ] Communication channel: in which environment would you be more comfortable discussing your work and receiving QA (reviews, corrections and tips to improve)? Would you prefer private exchanges with your reviewer, a public forum thread, a mailing list composed by localizers only, a back-and-forth of comments integrated with the translation platform?

  • [ ] Long-term commitment: what can we do to keep your interest in the project alive even when there is no work in sight for you? How can we be unobtrusive and discreet when you are busy? Would setting an availability system help?

ITALIAN VERSION / VERSIONE ITALIANA - [ ] Preferenze per il sistema di notifiche dei progetti: in che modo preferiresti essere avvisato quando c'è bisogno di te? Notifiche automatiche ogni volta che un tuo progetto si aggiorna? Una email personalizzata dal tuo revisore che ti chiede se sei disponibile? Una dashboard pubblica dove tu stesso puoi controllare, a tua discrezione, i progetti che hanno bisogno di traduzione? Un altro tipo di notifica?

  • [ ] Rapporti con i revisori e i localizzatori senior: in che modo i tuoi senior possono aiutarti? Cosa speri di ricavare, a livello personale, dai tuoi scambi con un revisore? (es. Un rapporto di tutoraggio, uno scambio di consigli e trucchi del mestiere, un riconoscimento del tuo lavoro e delle tue abilità da poter utilizzare come referenza, ecc.)

  • [ ] Canali di comunicazione: in quale ambiente ti trovi più a tuo agio per sottoporre le tue traduzioni al QA (ovvero alla revisione, alle correzioni e ai consigli per migliorare la tua tecnica di traduzione)? Preferisci uno scambio privato tra te e il revisore via email, oppure che la revisione avvenga su un thread in un forum pubblico, una via di mezzo, ovvero in una mailing list composta solo da localizzatori, o ancora tramite commenti integrati nella piattaforma di traduzione (un po' come i commenti alle pull request su GitHub)?

  • [ ] Collaborazione a lungo termine: come possiamo mantenere vivo il tuo interesse nel progetto nel tempo, anche durante i tempi morti in cui non c'è nulla da tradurre? E ancora, come possiamo chiedere il tuo aiuto in modo discreto e senza disturbarti nei periodi in cui sei occupato? Aiuterebbe un sistema per tenere traccia della disponibilità di ciascun traduttore?

Updated 27/04/2017 16:36 2 Comments

[query] Field retrieval optimization


Consider a query like

[:find [?url ?description]
                    (or-join [?page]
                      [?page :page/url ""]
                      [?page :page/title "Foo"])
                    [?page :page/url ?url]
                    [?page :page/description ?description]]

In other words: find bindings for ?page, then retrieve some values for that binding.

We currently produce the following SQL:

SELECT `datoms01`.v AS `?url`,
       `datoms02`.v AS `?description`
FROM `datoms` AS `datoms00`,
     `datoms` AS `datoms01`,
     `datoms` AS `datoms02`
WHERE ((`datoms00`.a = 97 AND `datoms00`.v = $v0)
    OR (`datoms00`.a = 98 AND `datoms00`.v = $v1))
   AND `datoms01`.a = 97
   AND `datoms02`.a = 99
   AND `datoms00`.e = `datoms01`.e
   AND `datoms00`.e = `datoms02`.e

If :page/url and :page/description are unique, or — as in this case — we’re returning a single tuple, we could instead produce two subqueries to represent the values, and filter out nulls:

SELECT `?page`,
       (SELECT v FROM `datoms` WHERE a = 97 AND e = `?page` LIMIT 1) AS `?url`,
       (SELECT v FROM `datoms` WHERE a = 98 AND e = `?page` LIMIT 1) AS `?description`
  SELECT `datoms00`.e AS `?page`
  FROM `datoms` AS `datoms00`
  WHERE ((`datoms00`.a = 97 AND `datoms00`.v = $v0)
      OR (`datoms00`.a = 98 AND `datoms00`.v = $v1)))

(obviously eliminating the interior LIMIT for unique attributes).

I’m not sure if there’s a speed win there, but it would be interesting to see if alternative representations of individual patterns could yield better queries.

Updated 24/04/2017 22:07 1 Comments

Improve UX of clicking small icons in the preview & editor bars.


Check out the screengrab below. I click the icon, then move the mouse only a few pixels, which causes the <img /> used in the icon to star dragging, and also stops my click from registering.


This leads the UI to sometimes not doing what you wanted, which is annoying. We should fix this.

  • Maybe instead of click events, we fire the UI on mousedown
  • Maybe we shouldn’t use <img/> tags in there, and just rely on background images
    • This will prevent the dragging behaviour
  • Maybe something else…
Updated 23/04/2017 06:57 5 Comments

Adopt flat bundles


Are there plans to use rollup and generate flat bundles for Relay (similar to what react did in It would be nice to get smaller bundles and it looks like this would also address the performance regression in server side rendering (

Is this something that could be accepted as a pull request without access to internal FB infrastructure?

Updated 14/04/2017 18:39 6 Comments

Add "Local" authentication strategy


We need to support the scenario when a website user can click [Sign In], enter his or her email address, click [Next].. The server must send an email with a temporary pass code and/or URL link; user clicks on the link or enters the code on the next screen of the login page and thus authenticates himself (no need to remember a password).

The list of Passport.js authentication strategies can be found in src/passport.js and the list of login options such as is located in src/routes/account.js.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource. </bountysource-plugin>

Updated 06/04/2017 09:18

Thimble Stress Test: HTML5 Games Workshop

mozilla/ looks fun. It also looks like something we should be able to support quite nicely. The question is, do we? I suspect we’ll break on a few things.

Using this as a benchmark for what we should be able to handle is what I’d like to see happen in this bug. It would be good to try this workshop with Thimble, and file bugs that come from doing it and hitting issues.

Updated 07/04/2017 18:38 2 Comments

feature request: dont show Components with regards to arbitrary exclude list (basically, hide repetitive High-Order Components from the Tree)


Based on #211.

It would be nice, to have a exclude list of components, which i dont want to see in my react tree.

Exclude list have to be configurable and persistent.

Exclude list: [/GetContext*/, /Jss*/]

Tree Before: jsx <ButtonGroup> <GetContext(Jss(Button))> <Jss(Button)> <Button> <span>one</span> <Button> <Jss(Button)> </GetContext(Jss(Button))> <GetContext(Jss(Button))> <Jss(Button)> <Button> <span>two</span> <Button> <Jss(Button)> </GetContext(Jss(Button))> <GetContext(Jss(Button))> <Jss(Button)> <Button> <span>three</span> <Button> <Jss(Button)> </GetContext(Jss(Button))> <ButtonGroup>

Tree After:

Updated 19/04/2017 15:23 1 Comments

Change "Create new Project" button styling after it is clicked.


On the Your Projects page, after you click the “Create New Project” button. We change the button label, but otherwise keep the button styling the same as it was before, including the :hover and :active styling.


Let’s change it so that once a user clicks this button, we grey it out (or fade it with something like opacity: .5 and remove the :hover and :active styling.

Updated 16/04/2017 21:17 8 Comments

item-margin: accordion, matching, mcq, textInput


Several components stack their items: Accordion, Matching, MCQ, and Text Input. The Less that describes the spacing between items appears to be inconsistent: Accordion: margin-bottom: @item-margin-bottom; Matching: padding-bottom: @item-padding-bottom; MCQ: margin-bottom:2px; Text Input: margin-bottom: 2px;

It seems that MCQ and Text Input ought to use variables. And it seems that all four should be using the same variable. As this space is meant to separate items and is not meant to be a part of the item itself, “margin” would be more appropriate than “padding”: @item-margin-bottom.

Other changes: - Matching’s padding-bottom should probably change to margin-bottom. - MCQ has itsmargin-bottom assigned in .mcq-item label. It ought to move to .mcq-item for consistency. (The effect is the same.)


Updated 11/04/2017 05:22 3 Comments

Add "Updates Available" UX for new service worker cached content


In Brackets, and eventually in Thimble (#1459), we cache and serve static resources so that offline use cases work. When a service worker has new content, we really should provide the user with some kind of UI that indicates they need to refresh the browser in order to load the new code. It’s a lot like having a “Updates Installed, Restart Required…” UX for a native app.

Depending on what the change is that’s been updated in the cache, the update may or may not be critical for the code to continue to work. An example is when we make changes to dist/bramble.js and Thimble needs to call some API function in Bramble that isn’t available in the old version. Running Brackets and Thimble separately means that they can drift out of compatibility until you refresh and force the cached code to get loaded.

Right now we don’t do anything, and it worries me. I’d like to add some kind of UI for the user to tell them that they need to refresh before they continue to use the app. Once we have this, I can wire up the various bits of Brackets and Thimble to use it.

@flukeout this is probably worth doing before we update prod with all our new changes.

Updated 13/04/2017 15:56 13 Comments

Brackets URL Hints doesn't list folders


screen shot 2017-03-30 at 8 59 38 pm

When you type <img src= Brackets will give you a list of possible completions for files in the filesystem, as well as “Take a Selfie…”. It doesn’t list any folders that you have, though.

We should really show the folders too. The code for this lives in I think.

Updated 18/04/2017 20:55 5 Comments

Non collapse widgets


Latest families and members widgets on dashboard are not collapsable. The four widgets below them are.

Collected Value Title Data
Page Name /Menu.php
Screen Size 854x480
Window Size 726x480
Page Size 2655x480
Platform Information Linux CSHN001 4.4.0-63-generic #84-Ubuntu SMP Wed Feb 1 17:20:32 UTC 2017 x86_64
PHP Version
ChurchCRM Version 2.6.3
Reporting Browser Mozilla/5.0 (Linux; Android 6.0.1; LG-D850 Build/MOB31K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Mobile Safari/537.36
Prerequisite Status All Prerequisites met
Integrity check status {“status”:“success”}
Apache Modules core,mod_so,mod_watchdog,http_core,mod_log_config,mod_logio,mod_version,mod_unixd,mod_access_compat,mod_alias,mod_auth_basic,mod_authn_core,mod_authn_file,mod_authz_core,mod_authz_host,mod_authz_user,mod_autoindex,mod_deflate,mod_dir,mod_env,mod_filter,mod_mime,mpm_itk,prefork,mod_negotiation,mod_php7,mod_rewrite,mod_setenvif,mod_socache_shmcb,mod_ssl,mod_status
Updated 03/04/2017 05:31

Integrator should fail more often


In my plugin.xml has something like this inside:

<feature extension="" file="integrator.xml"/>

but there is no “integrator.xml” in the plugin folder, the integrator complains:

        [integrate] D:\DITA-OT2.x\plugins\my.plugin\integrator.xml (The system cannot find the file specified)

but it is still successful.

Updated 31/03/2017 04:52 2 Comments

Date format in directory does not obey localization in all places


When a family only has 1 member the birthday is printed in brackets as part of the family name, first name line. This birthday does not obey the localization setting for shortdate. The problem is on line 250 of file churchcrm/Reports/DirectoryReport.php which is still using a direct ‘sprintf’ instead of using the new localization function. I am currently running 2.6.3.

Updated 03/04/2017 05:31

Chrome-specific Event filtering methods should be moved to chrome_thread_helper.html


We should move any methods that say “give me these events of interest” out of chrome_browser_helper after chrome_thread_helper is implemented (see #3458), and factor them to be of the form “give me a thread and I’ll give you the events you want”.

I think @benshayden had some other specific things that he wanted to see moved into chrome_thread_helper.

@zeptonaut @maxlgu

Updated 30/03/2017 15:12 1 Comments

Populate database with antiCRISPR accessions and sequences


This requires PR #118 to have been merged and issue #119 to have been resolved.

We need to populate the database with the accession numbers and sequences for the known antiCRISPR genes we have so far.

Starting from this list of accession numbers from this paper, we (1) download the corresponding sequences, and (2) populate the database with the accession numbers in the accession field and the sequences in the sequence field.

  1. The script downloads the antiCRISPR protein sequence in fasta format.
  2. The downloaded sequence itself, not the header starting with >, should go into the sequence field.
Updated 13/04/2017 15:41

Malformed flow events can cause the TraceViewer UI to hang


See . Specifically hang of the UI happens with this trace

But does not happen after I filter out the flow events

Very likely because I ended up with mismatching IDs in the flow events generated by memory-infra. Not high prio, as I am just ditching flow events in memory-infra. However the UI should not hang just because the IDs don’t match

I did filter the trace with this: ``` import json

d = json.load(open(‘trace-pseudo-oom_on_load.json’)) out = {} out[‘metadata’] = d[‘metadata’] out[‘traceEvents’] = []

for e in d[‘traceEvents’]: if not (e[‘cat’] == ‘disabled-by-default-memory-infra’ and e[‘ph’] != ‘v’): out[‘traceEvents’].append(e)

with open(‘trace-processed.json’, ‘w’) as f: json.dump(out, f) ```

Updated 28/03/2017 19:36

[tx] Accept [a v] notation for lookup refs in entity position


This is follow-up tracking In #382, I accept only (lookup-ref a v) for lookup-refs in both entity and value position (e and v in a [:db/add e _ v] assertion). That’s contrary to Datomic, which accepts embedded vectors like [a v] in both locations, treating ambiguity in some ad-hoc way. (See the discussion in #183 for notes on this ambiguity.)

This ticket tracks accepting an embedded vector [a v] in the entity position only. We suspect that the majority of lookup refs are entity refs in this form, and it’s both shorter to type and handy to agree with Datomic.

To implement this, you’ll need to:

1) verify that entid_or_lookup_ref_or_temp_id is still used only to parse entity positions; 2) add a vector_lookup_ref function accepting [a v] around; 3) use your new function around; 4) add tests demonstrating you can used nested vectors in entity position and that you can use nested vectors in value position – but they’re not interpreted as lookup refs. This latter may already be tested by the existing tests!

Updated 28/03/2017 16:11

Vigorous perusal of large Redux stores leads to non-responsiveness and eventually OOM


It always puzzled me why the redux store had a getState() method that returned the state, instead of simply having a state variable. Now I see that had it been implemented so, the react devtools would have died with even smaller stores and apps, with the entire content of the store serialized and transported once per every connected element through the element context.

I have an app with about a 20MB worth of data (when JSON-stringified) in the store and dozens or even hundreds of components in some pages picking various stuff from the store. Then I have a legion of HoCs that dutifully forward all props to the decorated components. Some of those properties come from the store of course, thus multiplying the number of times a set of values coming from the store gets serialized and passed to the devtools.

In essence, once my app loads, devtools needs about a minute to load, and then I have about a minute of time for perusal until the entire tab crashes with an out-of-memory.

So I modded the backend to call a user-supplied callback that can decide which props to really send to the frontend:

    mapState: state => state,
    mapProps: props => _.mapValues(props, (v, k) => {
        const state = store.getState();
        return state.hasOwnProperty(k) ? 'from Redux' : v;
    mapContext: context => context,

i.e., replace everything in props that is also a property of the state with the string ‘from Redux’. Then I can take a look at the Redux Devtools to see the actual value. I thought that I needed to do the same for the context, but luckily, hey - getState().

The counterpart in backend/getData.js: javascript var userMappers = window.__REACT_DEVTOOLS_USER_MAPPERS__; ... props = userMappers ? userMappers.mapProps(element._instance.props) : element._instance.props; state = userMappers ? userMappers.mapState(element._instance.state) : element._instance.state; context = userMappers ? userMappers.mapContext(element._instance.context) : element._instance.context; And presto! React DevTools now connects at a fraction of the time that was necessary before and is actually usable.

Would you be willing to add this extension point, REACT_DEVTOOLS_USER_MAPPERS , to the kit? What are your thoughts on the issue? I don’t submit a PR (yet), because I expect that a lot of things will likely change conceptually until the idea is ready for a PR (if at all). Until then, I’ll be relying on this modded version to get my work done.

Updated 20/04/2017 13:15 4 Comments

Tab bar focus is not on the active tab when orientation is changed


Description: Tab bar focus is not on the active tab when orientation is changed

Did you search for similar issues before submitting this one? Yes

Expected behavior: Should focus the active page tab

  • Device (iPhone5, iPhone6s plus, iPad 3, ?): iPhone 6 (iOS 10)

  • Brave Version: 1.4.1 (Existing behavior on stable release)

  • Steps to reproduce:

    1. Enable show tabs bar always from settings
    2. Open 8 tabs with different sites in each tab, make sure the tabs are visible in portrait mode
    3. Be on the 8th tab and change orientation from portrait to landscape
    4. Change the orientation back to portrait, tabs bar focus is on the 5th & 6th tab rather than 8th tab which is in focus

** Website problems only: - did you check with Brave Shields down? - did you check in Puffin/Dolphin/iCab/Maxthon (UIWebView-based browsers)?

  • Screenshot if needed:

  • Any related issues:

Updated 13/04/2017 16:31

Persist component tree expansion and selection state


To reproduce:

  1. Go to a React app and open up the React DevTools tab (I’m using Chrome, in case that matters)
    • Observe that the whole component tree is collapsed by default (which BTW I’ve just proposed in #348 should be changed).
  2. Select & inspect some component inside the tree.
    • Observe that a (partial) hierarchy is now visible.
  3. Reload the page (either manually or automatically by editing some source code, if you have that configured)
    • Observe that the whole component tree is collapsed again.

Expected behaviour

After reload, the visibility of the component hierarchy is unchanged. At least, I would expect this if the component hierarchy itself doesn’t change on reload, which is the case in all my (admittedly simple) React apps.

If the tree did change then OK, I can understand that it might not be possible; for example, the previously selected component might no longer exist, and others might have also vanished. But surely it would be possible to preserve the visibility of all components which are still there? And any newly added ones could just be left collapsed, or invisible if their parent is collapsed or invisible.


For me this greatly hampers usability, because if I’m working on a particular component, I have to reselect that component every single time I edit the source code, which is a real PITA. However I’m wondering if I’ve missed some really good reason why the behaviour is like that despite of the usability impact, because I see that #1 basically requested this behaviour, which I find rather mystifying! The request in #1 was justified with the following explanation:

The previously selected component is still visible in the props inspector. This can be especially confusing when comparing components before & after the reload.

But I can’t understand at all why that would be confusing, and if anything, surely it’s beneficial if you want to compare components before and after the reload? If the tree is auto-collapsed on reload, it makes it impossible to compare anything without first re-expanding the tree. So #1 really confuses me …


Select the component in the Elements tab, and then after page reload, switch to the Elements tab and immediately back to the React tab. The previously selected component will be automatically reselected. Having to do this after every page is still annoying, but quite a lot more tolerable than having to manually perform a text search for the component and select it (or worse, manually expand each ancestor of the component until it becomes visible).

Thanks for your consideration!

Updated 28/04/2017 18:59 3 Comments

Expand web service clients' cookbooks


We have lots of great clients but only have a few examples of how to use them. Here are the docs:

Client Cookbook Status
Perl cpan ok
Python pypi N/A
Java N/A
Ruby rubydoc poor

Use the recipes from the Perl cookbook as your guide:

  1. The bare minimum you need to create and run a valid Webservice::InterMine query from scratch
  2. Queries without constraints are not very useful, so here we look at how to add some simple constraints to your searches
  3. There are several different constraint types, distinguished by their operators; this recipe introduces all the main constraint types.
  4. This recipe presents the other potential features of a query: joins and path descriptions
  5. Once you have your query working the way you want it to, you will then need to deal with the results it returns - this recipe introduces the different result formats and how to access your data
  6. This recipe looks at using iteration, and ways that you can use features such as filtering results, limiting them, and processing them in a stream.
  7. The Perl API is written to be easily extensible with Moose roles - so if there is something you wish it could do, it probably can: here we look at adding different output formats to queries.
  8. You don’t have to create all your own queries - much of the work has been done for you with re-usable ‘Templates’ available from the webservice - here we look at the basics of calling a template
  9. Your scripted queries can be saved to the web-service as templates, making them as portable as the web-service itself, and as powerful as any other template.
  10. You can create new lists on the server from collections of identifiers or queries that define a specific result set.
  11. You can perform statistical analysis of lists available to you.
  12. You can combine lists in various ways, via common set operations.

Not all clients have all this functionality. But we’d like to add!

Tell @justinccdev

Updated 24/03/2017 10:46

Feature Request - Model Viewer


You can view the model here:

  • Classes in data model
  • Counts
  • Drill down to subclasses (e.g. bioentity to sequence feature to gene)

However we think the user experience could be improved! Can the model be rendered as a graph?

You can get the data model (and counts) from any InterMine in JSON format:

We can later expand this project:

  • Click on a class to view faceted data browser
  • Use to build searches

Tell @yochannah and @joshkh

Updated 24/03/2017 10:18

Dashboard trace button needs a new name


The dashboard has two features in the tooltip: * A link to the trace collected during the benchmark in cloud storage * A button to re-run the benchmark at that revision as a perf tryjob in order to get a trace.

These are both called “trace”. The naming is confusing, the button name should be more clear.

@nedn @tdresser @simonhatch @eakuefner @benshayden

Updated 12/04/2017 17:38 2 Comments

Remove parsers.csv_file


CSVReader wraps csv into an iterator and CSVWriter does some kind of buffering thing. But the reader could just use NumPy’s genfromtxt or Pandas’s read_csv or even the plain csv. Everything that uses CSVWriter also appears to write everything entirely, so it can just use csv directly.

Updated 12/04/2017 20:54 1 Comments

General Localization - README



Right now, the Study Group Repo documentation is in English, with some (awesome but sporadic) translations in Indonesian, Bengali and Portugeuse submitted by our community members, we’d love to solicit more languages or improvements on these translations if noted/necessary.


  1. Step 1: Start with the main Study Group Repo
  2. Step 2: Fork the repository, clone it locally and create a README file to start, which translates the README from English to another language
  3. Step 3: Save that file as where the xx is the two letter code for your language of translation. If your language is not include as a two letter code in that list, comment here to ask what the best short code might be.

Look at this example of the readme written in Portugeuse to see an illustration of the steps above.

Expected result

We will have a collection of READMEs for the Study Group project in a variety of languages

Current result

Currently we have a Portuguese translation.


Portuguese Translation of the README screen shot 2017-03-22 at 3 31 43 pm


Updated 30/03/2017 20:04 6 Comments

Testing existing materials



We have a series of repositories that come together to support our Study Group Program. We’d love for you to go through those repos, test our materials, and provide feedback in the issues.


Example walk-through for a potential Study Group Lead who would like to participate in our program:

  1. Step 1: Person finds Study Group Program page or sees a tweet about it
  2. Step 2: Person looks at existing Study Groups on that page, and finds that their city/university/community is not represented
  3. Steph 3: Person visits Study Group Orientation gitbook and starts walking through the curriculum to start a study group, or reads the Study Group Project README on starting a new group
  4. Step 4: Person forks the Study Group Project and starts to customize their site and host events according to the instructions in the Study Group Orientation guidebook.

Expected result

Ideally, the above example “Process” would work well for everyone.

Current result

In practice, sometimes a person will fork the repo, but never finish the orientation documentation, or respond to Aurelia/Zannah’s outreach. Maybe it’s because our materials are not clear. 😢

Possible Fix

Audit the current Study Group Materials. * test the orientation guide * fork the study group project and try to create your own study group from the readme instructions * test out our lessons and improve upon them or submit your own lesson to the issues

Let us know what works and what doesn’t, via Github Issues on the appropriate repository. No improvement is too small!


screen shot 2017-03-22 at 2 30 51 pm


Updated 22/03/2017 18:18

Study Group Map improvements



The current Mozilla Study Group Page includes a map built with Carto, we’d like to solicit improvements to the map, or other ways to highlight Study Group contributors globally.


[ordered list the process to finding and recreating the issue, example below]

  1. Step 1: User visits the Study Group Project page at science.mozilla.or (Navigation: Programs>StudyGroups)
  2. Step 2: User views the map (JS + Carto)
  3. Step 3: User scrolls down the page and clicks to unroll the Study Group list under a region with links to individual groups (Django/Python)

Expected result

Ideally, as it does now, the Study Group map would help users find out where Study Groups are all over the world and how to contact them or participate in a local study group.

Current result

Right now, the map displays Study Groups whose locations we know, which is hard because not all forks of the Study Group Project have profiles with locations.

Possible Fix

  1. Soliciting locations from all Study Group forks and collecting them in one spreadsheet would be great (see test map data for formatting)
  2. UI improvements to the map are also welcome
  3. A simple embed fix for the current embedded map (which would eliminate the box shadow that currently outlines the top and left sides of the map would also be great.


screen shot 2017-03-22 at 1 24 53 pm


Updated 11/04/2017 18:03 6 Comments

Update "New Project" style.css to include a nicer font


Honestly, I’m tired of looking at….


Since we’re already packaging a style.css file with new projects, we may as well add a few styles to it to make it more attractive and appealing.

As a start, let’s add

body {
  font-family: sans-serif;

We could also..

  • Add extra padding around the body
  • Change the default background color
    • Would it be possible to generate a dynamic / randomized stylesheet every time a new project is created? That would be cool.
  • Include a cool Google Font?
Updated 16/04/2017 20:03 13 Comments

eslint doesn't check code in src/extensions/*


By design, Brackets doesn’t run eslint on many extensions. They did this because a lot of them were included via submodule, and were owned by other people with other code styles.

We have a number of extensions that live in our tree, and we manage all the code directly in this repo. We should be linting these. We actually used to do it, but when we merged with upstream, they changed to eslint from jshint, and altered the way that it sets which files to lint.

The fix for this is to add the following directories to the eslint:src definition:

  • src/extensions/default/Autosave
  • src/extensions/default/BrambleUrlCodeHints
  • src/extensions/default/UploadFiles
  • src/extensions/default/bramble-move-file
  • src/extensions/default/bramble
  • src/extensions/extra/SVGasXML
  • src/extensions/extra/HTMLHinter
  • src/extensions/extra/MDNDocs
  • src/extensions/extra/bramble-watch-index.html

The Gruntfile is where you need to work, see

@gideonthomas did I miss any that you can think of?

Updated 21/03/2017 05:59 4 Comments

Add a way to hide the preview


Right now, if I want to focus on my code or markup, I make the preview window really small. To do that I have to drag the edge of the preview to the right side until it won’t get any smaller.

This sucks because…

  • Resizing in this way takes a long time
  • The resizing handle is small and hard to grab
  • It doesn’t fully get rid of the preview

I think we should be able to toggle the preview window in the same way as the file tree.

Updated 18/04/2017 19:48 14 Comments

POST /timing returns 500

» curl -vX POST ''
*   Trying
* Connected to ( port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate:
* Server certificate: DigiCert SHA2 Secure Server CA
* Server certificate: DigiCert Global Root CA
> POST /timing HTTP/1.1
> Host:
> User-Agent: curl/7.43.0
> Accept: */*
< HTTP/1.1 500 Internal Server Error
< Content-Security-Policy: default-src 'self'; img-src 'self' data:; script-src 'self' 'nonce-e0dec415-b732-421f-8563-7a7893daef85'; style-src 'self' 'unsafe-inline'; connect-src 'self'; font-src;
< Content-Type: text/plain; charset=utf-8
< Date: Mon, 20 Mar 2017 15:15:23 GMT
< ETag: W/"c-cx4CTq1LG2ze3rjnQ3PEUQ"
< Strict-Transport-Security: max-age=86400000
< X-Frame-Options: DENY
< X-Powered-By: Express
< Content-Length: 12
< Connection: keep-alive
* Connection #0 to host left intact
Server error%  
Updated 20/03/2017 20:27 2 Comments

add helpful prefs to profile generated by `run-addon --setup-profile`


The ./bin/run-addon --setup-profile command creates a persistent profile that can be used for local development.

It would be great if that profile setup step included creating a user.js file inside the Profile folder, which could be used to automatically set prefs.

One pref that’s particularly important to change is the default value of the signature check pref; this could be done via

// inside user.js
user_pref("xpinstall.signatures.required", false);

Disabling this pref allows the extension to run in Dev Edition, so that the ./bin/run-addon --binary /path/to/dev/edition command can run without any twiddling needed in about:config. Makes things one step easier for a beginner.

We could also add some prefs to enable verbose system logging, along the same lines of the prefs added by the Devprefs addon, but I’m not sure if this is a good idea or not.

Updated 01/04/2017 21:38 2 Comments

Add test suite


It’s probably hard to test the actual core feature of react-perimeter , but there are a few things we can definitely test:

  • correctly exports the React component
  • renders children
  • attaches ref correctly with render callbacks
  • registers event listeners on mount
  • removes event listeners on unmount
  • removes event listeners after onBreach is called if once is true
  • more stuff

I’d like to use jest and enzyme for this.

Updated 18/03/2017 21:52 4 Comments

"WindowsError: [Error 32]" in CollectAgentTraceData


Logs from windows bots are being littered with:

Traceback (most recent call last):
  File "c:\b\s\w\irsikafo\third_party\catapult\telemetry\telemetry\internal\platform\", line 285, in CollectAgentTraceData
WindowsError: [Error 32] The process cannot access the file because it is being used by another process: 'c:\\b\\s\\w\\itptl8q_\\tmplnqedg'

(full log from system_health.common_desktop on build)

The error appears to be harmless, but still litters the logs with a lot of confusing/misleading information.

@nedn this is probably low priority, but could you find someone to have a look?

Updated 15/03/2017 13:33

SwiftKeys keyboard keeping first letter when using predictive text



The SwiftKey keyboard has full access. After I type a few characters into the empty URL bar and then select a word suggested by SwiftKey the first letter remains in the URL.

For example if I type in “publi” into the empty URL bar, SwiftKey will suggest “public”. When l select the suggestion “ppublic” is put in the URL bar instead of “public”. I this only occurs for the first word in the URL.

Did you search for similar issues before submitting this one?

Expected behavior:

  • Device (iPhone5, iPhone6s plus, iPad 3, ?):

  • Brave Version:

  • Steps to reproduce:

    1. Install SwiftKeys
    2. Open Brave
    3. Select URL Bar
    4. Type “T”
    5. Select recommended word (e.g. “The”)
    6. The URL will now show “TThe” instead of just “The”

** Website problems only: - did you check with Brave Shields down? - did you check in Puffin/Dolphin/iCab/Maxthon (UIWebView-based browsers)?

  • Screenshot if needed:

  • Any related issues:

Updated 28/04/2017 21:42

Simplify Vector::push_front()


Some logic is being duplicated in different forms (primarily in regards to shifting elements) inside Vector::push_front() mainly due to the conditional. Factor as much of the logic out of the condition al as possible so it only appears one time. The result of a size == capacity check should only modify this->_data so that after a resize, the problem can be put in terms of the average case where we know the vector has room to shift elements around.

Updated 14/03/2017 05:06

refactor occurs check into a folder


The occurs check code in src/solve/infer/ (specifically, the methods defined on OccursCheck) follows a very folder-like pattern. Unfortunately, it can’t quite use the Folder trait (as defined in because that trait only contains “callback methods” for processing free lifetime/type/krate variables. The occurs check needs to be able intercept all types, at least, as well as names that live in a universe and a few other things. We could add callback methods for those things to Folder.

I imagine the resulting trait would look like:

pub trait Folder {
    // Methods today:
    fn fold_free_var(&mut self, depth: usize, binders: usize) -> Result<Ty>;
    fn fold_free_lifetime_var(&mut self, depth: usize, binders: usize) -> Result<Lifetime>;
    fn fold_free_krate_var(&mut self, depth: usize, binders: usize) -> Result<Krate>;

    // Methods we need:
    fn fold_ty(&mut self, ty: &Ty, binders: usize) -> Result<Ty>;
    fn fold_lifetime(&mut self, lifetime: &Lifetime, binders: usize) -> Result<Lifetime>;

One thing that I’m not crazy about is that fold_ty invokes fold_free_var etc, at least in its default incarnation, so putting them into the same trait might mean that if you override fold_ty you would not need the other methods. So it might be better to have Folder just include the higher-level methods (e.g., fold_ty) and then have a new trait VarFolder where we define a bridge impl like impl<T: VarFolder> Folder for T. Or something like that.

Updated 14/03/2017 00:44

Image view button layout


Kind if a nit pick-

The image buttons on family view are a bit small for touch screen

The button row should take up the entire width of the image, and be split evenly.


Collected Value Title Data
Page Name /PersonView.php
Screen Size 854x480
Window Size 726x480
Page Size 1383x480
Platform Information Linux scotchbox 3.13.0-110-generic #157-Ubuntu SMP Mon Feb 20 11:54:05 UTC 2017 x86_64
PHP Version
ChurchCRM Version 2.7.0
Reporting Browser Mozilla/5.0 (Linux; Android 6.0.1; LG-D850 Build/MOB31K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Mobile Safari/537.36
Prerequisite Status All Prerequisites met
Integrity check status {“status”:“failure”,“message”:“Signature definition File Missing”}
Apache Modules core,mod_so,mod_watchdog,http_core,mod_log_config,mod_logio,mod_version,mod_unixd,mod_access_compat,mod_alias,mod_auth_basic,mod_authn_core,mod_authn_file,mod_authz_core,mod_authz_host,mod_authz_user,mod_autoindex,mod_deflate,mod_dir,mod_env,mod_expires,mod_filter,mod_headers,mod_include,mod_mime,prefork,mod_negotiation,mod_php7,mod_rewrite,mod_setenvif,mod_socache_shmcb,mod_ssl,mod_status
Updated 14/03/2017 05:51

Investigate x-powered-by headers


Re: /server/src/server.js:161-162,

// Disable x-powered-by header

Yet, when I do a verbose cURL or using HTTPie, I see the powered by header…

TL;DR: X-Powered-By: Express

$ http -v
GET /data/e1ccd9d4052d11e781a328cfe91ef31b/ HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
User-Agent: HTTPie/0.9.6

HTTP/1.1 404 Not Found
Connection: keep-alive
Content-Length: 12
Content-Security-Policy: default-src 'self'; img-src 'self' data:; script-src 'self' 'nonce-b816642b-59ec-42ca-a1d8-819d221f27e0'; style-src 'self' 'unsafe-inline'; connect-src 'self'; font-src;
Content-Type: text/plain; charset=utf-8
Date: Fri, 10 Mar 2017 22:40:03 GMT
ETag: W/"c-jay+q1cB12YhkU7VWV3DNg"
Strict-Transport-Security: max-age=86400000
X-Frame-Options: DENY
X-Powered-By: Express

No such shot
Updated 21/03/2017 18:32

Open Tasks menu issues

  1. The Missing Gender, Classification, Role data should exclude Admin User (member id 1)
  2. Missing role data should exclude persons without families.
  3. Configure HTTPS help should open in a new tab.
  4. Show the number of families missing lat/lng information.

2017-03-08 14_01_49-churchcrm_ person profile

Updated 10/03/2017 19:40 2 Comments

Watch for l10n changes


Let’s automate builds for client code when changes to the l10n files (inside the locales/en-US) are made. I think it’s as simple as watching the en-US directory for changes and then running npm run localize, npm run localize-client and npm run restart-server.

We can probably try to figure out optimizations (for e.g. running only one of localize-client or restart-server depending on whether the change was made in the client or the server) but should probably start with just implementing the above.

Updated 04/04/2017 01:21 10 Comments

[Relay] No queries logged with Relay.Environment


I can’t seem to get any Relay Queries to be picked up by the Relay plugin if I’m using Relay.Environment instead of Relay.Store

// ... imports
const env = new Relay.Environment();
env.injectNetworkLayer(new Relay.DefaultNetworkLayer(''));


env.commitUpdate(new TestMutation({data: 'data'}));

Results in “No Relay Queries logged”, but if I switch to:

const env = Relay.Store;
// ... same as the above

…I can see the query get logged under the Relay-tab. The Console shows that the Mutation gets executed either way.

I’m using v2.0.12 (Google Chrome Extension) of react-devtools and 0.10.0 of react-relay (and 0.13.5 of react-router-relay if that matters). I’m using the default setup of create-react-app (0.9.3) and have not made any modifications to the webpack config more than added Relay.

Am I missing something?

Updated 19/04/2017 19:02 5 Comments

Document dev group


We have a group:

Email alias:

This should go in README, we should review the group, and we need to email everyone currently involved in the project to get them watching the group, then we need to double check those people actually receive notifications and updates.

Updated 17/04/2017 17:24 4 Comments

Fork me on GitHub