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

Reconfigure mobile testing to use 4G speeds


Data from the Chrome UX Report indicates that the vast majority of connection speeds on mobile devices (phone/tablet) are effectively 4G:

  SUM(IF( = '4G', bin.density, 0)) / SUM(bin.density) AS pct_mobile_4g
  UNNEST(first_contentful_paint.histogram.bin) AS bin
WHERE IN ('phone', 'tablet')

Result: 87.95%

Update the WebPageTest configuration for mobile tests to use 4G speeds to more accurately represent real user conditions.

Updated 13/12/2017 21:10 8 Comments

Right aligned container button dropdown UI gets squeezed


I can put the containers button on my tab bar and remove the normal “new tab” button from it. This customization results in a setup that’s familiar for muscle memory and very clear.

In OS X fullscreen mode, this results in the button being placed at the very far right of the screen. The dropdown seems to nudge itself leftward to avoid being off the screen, but the new container button seems squeezed as a result.

<img width=“295” alt=“screen shot 2017-12-05 at 10 48 25” src=“”>

Updated 05/12/2017 19:12

Focus name field on opening New Container sub-panel


In the sub-panel that appears on hitting the “+” (Create New Container) button: The Name field should be automatically focused, with the “Container #xx” text selected so that typing removes it.

This is a continual “missing stair” issue for me: every time I create a new container, I start typing because I expect that field to be focused. I’m assuming that I’m not the only person this happens to.

Updated 05/12/2017 18:50

getNotifications manipulates ES arrays in parallel steps

whatwg/notifications is manipulating and ES array in parallel steps. It says things like “push that object to objects”. How is that supposed to work? Is that using Array.prototype.push? If so, is it using the initial value of that? Even if it does, that can be affected by accessor properties on Array.prototype and in particular can run arbitrary script, which is not OK in parallel.

Updated 05/12/2017 12:39 2 Comments

Thimble Autocomplete Malfunction


When using Thimble about 18 hours ago I was able to use autocomplete. For example when typing h1 then pressing tab, it would render the open and close h1 tags. Now, instead, it types h1 (or whatever tag, em, strong, etc.) into the live preview field even if it is not in the body or inside a paragraph or ordered list tag. I am also no longer able to access the file I created when using autocomplete, only the files after losing the ability to autocomplete. This problem is consistent across Firefox, Chrome and Edge browsers. ej-grpfnqrq0z-ea5-lo7w

Updated 14/12/2017 06:43 3 Comments

User Photos on Family Map


User photos on the family map are broken

Collected Value Title Data
Page Name /MapUsingGoogle.php
Screen Size 1050x1680
Window Size 870x1680
Page Size 1031x1680
Platform Information Linux IDAE001 4.4.0-101-generic #124-Ubuntu SMP Fri Nov 10 18:29:59 UTC 2017 x86_64
PHP Version 7.0.22-0ubuntu0.16.04.1
SQL Version 5.7.20-0ubuntu0.16.04.1
ChurchCRM Version 2.9.0
Reporting Browser Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 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 30/11/2017 03:28 1 Comments

Seemingly contradictions in the srcset attribute guidelines for Images


If an element has a srcset attribute present, all image candidate strings for that element must have the width descriptor specified.

This seems like this contradicts what is stated above it (and pasted below in this issue) in that an image candidate string for that element must have 0 or one of the following: a width descriptor or a pixel density descriptor.

Zero or one of the following:​

A width descriptor, consisting of:​ ASCII whitespace, a valid non-negative integer giving a number greater than zero representing the width descriptor value, and a U+0077 LATIN SMALL LETTER W character.

A pixel density descriptor, consisting of:​ ASCII whitespace, a valid floating-point number giving a number greater than zero representing the pixel density descriptor value, and a U+0078 LATIN SMALL LETTER X character.

It sounds like it is saying in 1 spot that you can only have one or the other (or none) and then the other says they must all have the width descriptor.

Updated 05/12/2017 13:29 2 Comments

Add UI to use "memory filesystem" workaround mode


In #2563 we’re adding a special URL flag to allow loading the editor using a memory-backed filesystem instead of IndexedDB. The goal is to enable people to still use Thimble in cases where IndexedDB isn’t allowed (for security reasons).

When we show the error message on the loading page, we want to include a button to allow the user to load the page again and add the proper URL flag to enable a memory filesystem. Basically, we want this to be made available as a last resort, and as an opt-in mode for users with no other choice.

Second, we need to alter the way the Thimble editor page loads so that it includes some kind of warning/info about being in this special mode. We don’t want to surprise people and have them lose all their work when they close the tab (this will happen with a memory filesystem!) Maybe we can do something similar to what we do now for the service worker update bar?

cc @flukeout

Updated 06/12/2017 16:07 6 Comments

Add example(s) for X-Content-Type-Options


[See about adding examples. Below is the old purpose of this issue.]

3.3.1. Should response to request be blocked due to nosniff? Run these steps:​ 1. If response’s header list does not contain `X-Content-Type-Options`, then return allowed. 2. Let nosniff be the result of extracting header values from the first header whose name is a byte-case-insensitive match for `X-Content-Type-Options` in response’s header list. 3. If nosniff is failure, then return allowed. 4. Let mimeType be the result of extracting a MIME type from response’s header list. 5. Let destination be request’s destination. 6. If destination is script-like and mimeType (ignoring parameters) is not a JavaScript MIME type, then return blocked. 7. If destination is “style” and mimeType (ignoring parameters) is not `text/css`, then return blocked. 8. Return allowed.

Many websites will use a blanket “nosniff” option because it’s being pushed as a recommended security measure. However, many sites also do not supply a content-type header with every document/response returned. As a result, any script or style that would not have a supplied content-type in the header would, according to this spec, be blocked. Blocking should only occur on a mis-match of MIME type in the intention of this spec as I understood, and not when the MIME type is missing altogether. Since you can’t compare between two values when one of them is missing, it should be allowed.

I suggest adding an additional step between 4 and 6: If mimeType is empty, then return allowed.

Updated 23/11/2017 11:57 12 Comments

Missing Hyperlink on Custom Field Type


Custom Field Type “Person From Group” allows the user to select a person from a group as a property of a user or family.

The value of this property is displayed in the user Person View page with a plain-text representation of the selected user’s name. This text should be a hyperlink to the selected user’s PersonView page

Collected Value Title Data
Page Name /PersonView.php
Screen Size 1050x1680
Window Size 899x890
Page Size 1287x890
Platform Information Linux scotchbox 3.13.0-55-generic #94-Ubuntu SMP Thu Jun 18 00:27:10 UTC 2015 x86_64
PHP Version
SQL Version 5.5.55-0ubuntu0.14.04.1
ChurchCRM Version 2.9.0
Reporting Browser Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 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 11/12/2017 03:10 2 Comments

Don't show Brackets errors in the preview console


Updated Ticket Information

It looks like whenever an error or any other activity occurs in the Brackets console (such as problems accessing session storage, CORS issues, etc.) it is propagated to the console we show for the preview window as well (console activity that should only be due to the user’s code). Let’s only show the relevant console logs that will help the user debug their code.

Same Device Info as reported on my Error 404 Issue:

Please keep in mind I use a managed device.

Another error after Error 404?? The preview page is stuck on my index page. screenshot 2017-11-20 at 10 32 04 am screenshot 2017-11-20 at 10 31 54 am

Side Note: Thank you very much to the person that fixed error 404! 👍

Fortunately, my preview will work about 25% of the time but the console just spams this…It’s kinda annoying… It also stops me from viewing my other files apparently… screenshot 2017-11-20 at 10 23 19 am

(Information is subject to change) New Information from Console - Screen picture (cropped) screenshot 2017-11-21 at 4 19 24 pm

Updated 23/11/2017 20:32 4 Comments

/* global */ list accepts spaces in identifiers


/*global window, document, require, externData alert, machineID:true, externJSON $*/

produces the output

'externData alert' is defined but never used (W098)

except that isn’t a legal identifier because of the embedded space. (It should have been “externData, alert' but sloppy typing on my part, which led to the warning.)

The warning should be more along the lines of ‘Illegal JavaScript identifier,’ should it not?

Updated 12/11/2017 20:39 2 Comments

OpenAPIv3: some schema templates do not specify type


The following code templates do not specify the type, so we get a warning icon in the editor when we are done. yaml SimpleSchema: properties: property: type: integer format: int64 SchemaWithRequiredProperty: required: - property properties: property: type: integer format: int64 Additionally, the icon is a warning but the message says “invalid”. This is a bit confusing. If its invalid shouldn’t it be an error? The spec does not seem to require that type is specified. Not sure what to recommend here.

Updated 13/11/2017 12:34 2 Comments

Segregation of `src/data/queries` and `src/data/types` is contra-intuitive


Too wide (and falsy) segregation of GraphQL Types and Resolvers

The first example of this is new ObjectType in src/data/queries/index.js importing fields. Fields should be taken in context of parent type, not as standalone information.

This can ensure some users that custom types cannot have own field resolvers which is false.

In fact, much of fields which can have own resolvers are handled level up (which is possible but not always desired) and makes thinking about GraphQL harder than it actually are.

There is place where I need collect all the opinion and experience. Please, comments are welcomed!

Updated 30/10/2017 05:55 16 Comments

Feature request: Add a "My Projects" link on the homepage for signed in users.


Got a great suggestion for an improvement in an email from Ibrahim

I’m a 7th grade student who is learning HTML, and I don’t like what happens when I log into Thimble. I have to go to the top right, click on it, and then click on “My Projects" to see them. I would like it if you made a link to “My Projects” on the main page, so I could easily go to them. And if I weren’t logged in, it would redirect me to the login page, and when I logged in, it would go to my projects. That would be really nice. Here’s an example of how I would want it, in one of these spaces surrounded by black:

It came with a mockup…


I like this idea, especially adding a “My Projects” link to the header somewhere.

We tried doing this in the past with a slightly more involved solution that tried to show you your projects list in the dropdown, but having a quick link to get to your list would also be great!

Updated 26/10/2017 00:27 9 Comments

Update service definitions to use new service IDs


To make sure our code base stays up to date with best practices, we should switch our Symfony services to use the currently available features.

Follow these guides: - - - -

and subsequent chapters

Updated 23/11/2017 08:07 3 Comments

The context menu is not dismissed when a tile is dragged


  • Firefox 57 and up

  • All Windows

  • All Mac
  • All Linux

  • Start the browser and open a New Tab.

  • Click the context menu button for one of the tiles.
  • Drag a different tile and observe the context menu.

  • The context menu is dismissed.

  • The context menu stays in its place.

  • Attached a screen recording of the issue: context menu not dismissed

Updated 08/12/2017 18:58 4 Comments

Some media elements can indefinitely block the document's load event for no reason


When running the resource loading algorithm, if no mode could be computed in step 6, the algorithm fails to set the media element’s delaying-the-load-event flag back to false in:

⌛ Otherwise the media element has no assigned media provider object and has neither a src attribute nor a source element child: set the networkState to NETWORK_EMPTY, and abort these steps; the synchronous section ends.

Updated 12/10/2017 22:12 3 Comments

Labels generated from the cart should be sorted by last name by default


Currently (ver 2.8.10) when you generate labels from the cart, they are sorted by Zip Code, as per line 670 of Reports/PDFLabel.php (function GenerateLabels()):

$sSQL .= 'ORDER BY fam_Zip, per_LastName, per_FirstName';

If one has chosen to generate a PDF file full of labels, this sort order makes it difficult for an office administrator to ‘proof’ the list of labels, especially if the members of the cart are in diverse postal districts.

In our installation I’ve changed line 670 as follows:

$sSQL .= 'ORDER BY per_LastName, per_FirstName, fam_Zip';

Now the labels are properly sorted by last name. I’m not sure how this change would affect the ‘ZipBundleSort’ feature, but that function simply loops through all the labels anyway and checks their zips as it builds the bundles. As long as array_count_values($Zips) in line 451 doesn’t need a pre-sorted array… In which case, I’m not sure including fam_Zip in the ORDER BY clause is even necessary.

Updated 30/09/2017 14:56

Firebase config overwrites unrelated keys


<!– Please don’t delete this template –> <!– Before creating an issue please make sure you are using the latest version of preact-cli. –>

Do you want to request a feature or report a bug? bug

What is the current behavior? Output production on hosting key options

If the current behavior is a bug, please provide the steps to reproduce. With an existing firebase.json file: npm run serve -- --server config --dest .

<!– A great way to do this is to provide your configuration via a GitHub gist. –>

What is the expected behavior? The file is merged only overriding the hosting key. A deep merge of the hosting key might be even better, but I don’t know that it’s really needed.

Merged firebase.json: ``` { “database”: { “rules”: “database.rules.json” }, “hosting”: { “public”: “build”, “rewrites”: [ { “source”: “”, “destination”: “/index.html” } ], “headers”: [ { “source”: “”, “headers”: [ { “key”: “Cache-Control”, “value”: “public, max-age=3600, no-cache” }, { “key”: “Access-Control-Allow-Origin”, “value”: “” }, { “key”: “Access-Control-Max-Age”, “value”: “600” } ] }, { “source”: “/sw.js”, “headers”: [ { “key”: “Cache-Control”, “value”: “private, no-cache” } ] }, { “source”: “**/.chunk.*.js”, “headers”: [ { “key”: “Cache-Control”, “value”: “public, max-age=31536000” } ] }, { “source”: “/”, “headers”: [ { “key”: “Link”, “value”: “</bundle.6acb8.js>; rel=preload; as=script, </style.ba975.css>; rel=preload; as=style, </route-home.chunk.8111b.js>; rel=preload;as=script” } ] } ] } }


If this is a feature request, what is motivation or use case for changing the behavior? When using CI/CD pipelines like Gitlab pipelines this config is going to change when the pipeline runs and should therefore be an automatable. In my case I also have a top level database key that I don’t want overridden.

Please mention other relevant information. - node version 8.4.0 - npm version 5.3.0 - Operating system mac sierra 10.12.6

Updated 26/09/2017 15:15 4 Comments

Chrome: Can't press `Esc` to toggle console when React panel are open


Testing on OS X with Chrome 63 canary.

If I press Esc while React devtools is open, I expect this to open a JS console in a split view with the React devtools. This is how every other tab behaves. Instead, I see the console slide up and immediately back down in a split second.

We should fix this so the console can be used again.

Workaround: Switch to another tab, hit Esc, switch back to React.

Updated 10/10/2017 03:27 2 Comments

Switch ActivityStreamPreferences to Services.prefs


Similar to that was backported via #3067, we should remove dependency on Preferences.jsm. In particular, the class Prefs extends Preferences exposes various helper methods (e.g., get) that would need to be reimplemented.

Probably should be done after #3431 as that clean up will reduce dependency on ActivityStreamPreferences.

Updated 03/10/2017 17:20

Allow user to change the project description without needing to publish their project.


Currently in the publish dialog, there is a Description field. However, it only saves what you put in there at the moment of publishing, which isn’t ideal. Sometimes people don’t want to publish a project, but want to leave a description.

I think we should just auto-save whatever is in the description when a user closes the Publish dialog.

cc @gideonthomas - would this be a good candidate for a Good First Bug? Please add the label if you think so.

Updated 09/10/2017 22:56 16 Comments

[Question] How to import font-awesome to project with Webpack?


I am a beginner with Webpack and am having a lot of trouble figuring out what to do in webpack.config.js to import font-awesome for use in React components like this:

<span className="fa fa-user" />

I’ve tried following multiple tutorials (for example that use different loaders and rules (i.e. style-loader, css-loader etc.), but nothing has worked for me (I’m sure if I was more knowledgeable about Webpack configuration I’d be able to make it work), and often those approaches introduce bugs with how the project loads all the other css files (i.e. interfering with isomorphic-style-loader).

For now the temporary solution I’ve made is adding this link to Html.js head:


Obviously, I’d rather be using a local font-awesome package.

can someone ELI5 how to set up webpack.config.js to load font-awesome for this project or point me in the right direction?


(P.S if you have the Font Awesome 5 beta and figured out how to get the SVG Framework approach to work with react-starter-kit, that works too)

Updated 07/10/2017 03:43

Change <title> tag for the default index.html page


Currently both the <title> and <h1> have very similar content. I’ve seen many people start to edit the title expecting to change what they see in the preview because the text matches. It’s a small thing but I think we should change it so that the first change people try to make works more reliably.

<img src=“” width=“300” />

Updated 10/10/2017 17:26 16 Comments

Add source file & line number to Console output.


One of our Teacher users would love to use the built-in console, but without seeing where the error or console.log came from, it’s not useful enough.

Fore example, take a look at the console output below (from the browser’s developer tools)

<img width=“400” alt=“image” src=“”>

On the right of the line that says Hello world!, it shows the filename, game.js, as well as the line number, 334, where the console.log originated from. We would like to add this kind of functionality to the console in Thimble.

cc @ajlomagno - I’ve updated the description here.

Updated 19/10/2017 18:20 19 Comments

Whitespace other than spaces can break inline rule parsing


Consider this inline rule layout: /* jshint strict: implied, unused: true, undef: true, curly: true, browser: true, jquery: true, esversion: 6 */ If there is a tab between the /* and jshint, the entire rule is ignored (not discovered during parsing). The layout above works as long as the only intervening whitespace is one or more spaces. Fortunately, the individual directives on subsequent lines can be preceded by tabs without trouble.

Updated 10/10/2017 05:06 3 Comments

Remove "abort these steps" wording


In Infra, we have clarified that “return” or “throw” aborts the algorithm it is in. This convention was adopted after much of the prose in the HTML Standard was written, so HTML contains many now-redundant sequences like

then return null and abort these steps


then throw a TypeError and abort these steps.

These should remove the redundant “and abort these steps”. Similarly, cases like

Otherwise, if the new value is the same as the body element, do nothing. Abort these steps.

should be converted to replace “Abort these steps” with “Return”.

Doing so helps set a good example, and reduce confusion for people who read HTML (which is currently a mix of the new style and the old style).

There are currently 427 instances of “abort these steps”. If any of them seem tricky, feel free to leave them in and we can take care of them later. Just getting the straightforward ones is a big enough task.

(This is part of #2053)

Updated 14/11/2017 13:32 2 Comments

The "Copy element props" feature does not do a deep-copy


The copy props feature was introduced in #837. It’s awesome, but has a substantial flaw: it only copies as deeply as the user has expanded the properties in the property explorer.

Reproduction steps:

  1. Go to Coursera’s home page. If you were logged in, log out.
  2. Open the React extension.
  3. Search the inspector for “FrontPage2016” and select the node.
  4. Copy its props and paste them into a temporary file: before.json.
  5. Expand the naptime prop in the prop explorer. Then unexpand it.
  6. Copy the same node’s props and paste into a temporary file: after.json.
  7. diff before.json after.json
  8. Cry

I have no familiarity with the React DevTools codebase, but I suspect that this is a side-effect of a lazy system designed to minimize communication with the React runtime. Assuming there is a way to say “Recursively eagerly evaluate this piece of data”, there should be an easy fix.

<!– Note: It is much more likely that your issue will get fixed if you also provide a minimal project reproducing it. Thanks! –>

Updated 26/09/2017 21:46 3 Comments

"Customize your New Tab page" button overlaps other buttons from A-S New Tab page if Zoom is set to 300%


[Affected versions]: - Firefox 53 and up - Activity Stream Build: 1.15.0-dev-1498669904-155a8b9

[Affected Platforms]: - All Windows

[Prerequisites]: - Latest Activity Stream dev add-on version was previously installed on a profile with history. - Set Zoom to 300%.

[Steps to reproduce]: 1. Start the browser with the profile from prerequisites and open a New Tab. 2. Scroll through the New Tab page and observe the “Customize your New Tab page” button.

[Expected results]: - “Customize your New Tab page” button does not obstruct the user in using other buttons from the page.

[Actual results]: - “Customize your New Tab page” button overlaps with other buttons.

[Notes]: - Attached a screen recording of the issue: overlap

Updated 16/10/2017 16:57 1 Comments

"Close" button overlaps the "Up arrow" button from the scroll bar from New Tab Preferences menu


Also see

[Affected versions]: - Firefox 53 and up - Activity Stream Build: 1.15.0-dev-1498669904-155a8b9

[Affected Platforms]: - All Windows

[Prerequisites]: - Latest Activity Stream dev add-on version was previously installed on a profile with history. - Set Zoom to 300%.

[Steps to reproduce]: 1. Start the browser with the profile from prerequisites and open a New Tab. 2. Click on “Customize your New Tab page” button. 3. Click on “Up arrow” button from the scroll bar.

[Expected results]: - “Up arrow” button from the scroll bar is clickable.

[Actual results]: - “New Tab Preferences” menu is closed because the “Close” button is focused when hovering the “Up arrow” button from the scroll bar.

[Notes]: - Attached a screenshot of the issue: close button overlaps scroll up arrow

Updated 16/11/2017 20:37 5 Comments

Add flake8 linting


Even if you don’t like PEP8 syntax, it’s good to stick with them, and it’s even better to have tooling in place that forces you to fix things when you don’t use it… and for some reason flake8 won’t run.

Updated 16/10/2017 16:24 2 Comments

Property Inspector is Not Resilient to Non-existent Property


val can be null here in _inspectResponse. Which throws and causes havoc. Reproed in Outlook 365.

What happens here is that the property keys enumerate in the property view as if they’re own properties and not on the prototype. But when I try to expand one of the properties. It is now on the prototype (not own) and therefore getIn returns null.

I’m not quite sure how that’s happening. Perhaps there’s a getter in the user code. However, since getIn is explicitly invoking getters it needs to be more resilient to the assumptions changing.

Updated 14/12/2017 09:26 6 Comments

Delete project


We need to provide a red “delete project” button in the setting page. Similar to what Github, Dockerhub etc. have (require writing the name into a box).

We need to delete all references to the project apparently and also in future when activity tracking is merged all references must be deleted as per out policies.

Updated 06/10/2017 06:12 2 Comments

Add domintro explanations for web developers


I think the API would greatly benefit from some domintro boxes. This would allow you to add some developer-facing documentation for the more confusing concepts that end up manifesting in the API, like a response’s type. The domintro could actually explain what each value you get back means. (I wasn’t able to figure out the difference between “basic” and “default” myself.)

Updated 26/10/2017 03:24 5 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 10/10/2017 14:44 7 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?


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?

Contributing so far:

  • [x] kitsunenosarat
  • [x] gialloporpora
  • [x] eliogi
  • [x] valtermura
  • [x] Mte90
  • [x] Sav22999
Updated 11/10/2017 07:51 9 Comments

Survey on volunteers preferences and expectations


## 🇺🇸<a class=“typeform-share link” href=“” data-mode=“1” target=“_blank”>Take the survey!</a>

Please, complete this brief survey to help us better understand your aspirations and talents! No question is mandatory, feel free to skip any question you like. Just remember to come and say hello in issue #20 so that we can reach out to you.

## 🇮🇹<a class=“typeform-share link” href=“” data-mode=“1” target=“_blank”>Inizia il sondaggio!</a>

Completa questo breve sondaggio per aiutarci a conoscere meglio le tue aspirazioni e i tuoi talenti. Nessuna domanda è obbligatoria, sentiti libero di saltare quelle a cui non vuoi rispondere. Se non lo hai già fatto, ti chiediamo di presentarti nello issue #20 così potremo metterci in contatto con te.

Survey participants so far

  • [x] eliogi
  • [x] valtermura
  • [x] winfox
  • [x] Sav22999
  • [x] Owlz
Updated 14/10/2017 13:18 4 Comments

Extension opens a new tab when an "Always Open in This Container" domain is opened in a different container for activity stream


If I pin a domain to a container (using the “Always Open in This Container” context menu item) and then open that domain in a tab within a different container (or even about:newtab with no container), Firefox opens a new tab for the new container and domain. This is frustrating because I lose my context when the new tab opens and I also have to manually close the old tab. Is it possible for the current tab to instead switch containers when the new domain is opened?

I uninstalled and reinstalled the Containers extension so it would forget all my domain/container settings. The current implementation of “Always Open in This Container” is just too frustrating. I will just open containers manually for now.

Updated 05/12/2017 18:34 10 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 05/10/2017 21:28 18 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 29/11/2017 09:21 5 Comments

Indicate which file/folder we are dragging over in filetree on dnd


In I’m rewriting the drag-and-drop code in Brackets, and one of the new things it does is allow a user to drag files/folders over top of items in the filetree and use that path. For example, you can drag over a folder, and the folder will open, then drag down to a sub-folder, and it will open too; then you can drop and your files will get imported into that dir/sub-dir path vs. the project root.

However, we don’t have any UI code to help you know that this is happening. It would be nice if while dragging the filetree nodes were highlighted or flashed or did something visual. @flukeout might have some good suggestions.

This code is somewhat similar to what @Th30 is doing in I’m assigning this to @Th30, who is looking for a bug in this part of the code.

Updated 05/10/2017 21:33 5 Comments

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 01/11/2017 20:41 4 Comments

Feature Request: 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 23/10/2017 18:55 26 Comments

Containers panel is narrowed when the "Containers" button is moved in the Firefox menu

  • Firefox 51.0.1 and up
  • Containers Experiment 0.9.3

  • All Windows

  • All Mac
  • All Linux

  • Have Containers Experiment(v0.9.3) installed on a Firefox new profile.

  • Open the browser with the profile from prerequisite.

  • Click the “Containers” button and observe the doorhanger size and items.
  • Right-click on the “Containers” button from the toolbar and select the “Move to Menu” option from the doorhanger.
  • Click the Firefox menu from the main toolbar.
  • Click on the “Containers” icon and observe again the panel size and items.

  • The “Containers” panel its items are fully displayed.

  • The “Containers” panel is narrowed getting the items from the right side out of the view.

  • You have to use the horizontal scrollbar in order to view the right side of the items in the “Containers” panel.

  • As a side issue, the “Edit Containers” button gets an unneeded extra space under it. containers_send_to_menu
Updated 05/12/2017 18:34 3 Comments

"Container" menu wrapping when disabling/enabling feature several times under about:addons


Disabling the “Containers Experiment” several times via about:addons while the menu is still opened will cause the menu to start wrapping. The menu will repeat itself several times causing major performance issues when attempting to open the menu. Restarting the browser fixes the issue.


STR: (assumes you have the containers add-on installed)

  • load about:addons and click on “Extensions”
  • click on the “Container” button and while the menu is opened, select “Disable” under about:addons
  • re-enable the “Containers Experiment” extension and repeat the above step 2-3 times

<img width=“308” alt=“screen shot 2017-02-14 at 4 45 17 pm” src=“”>

Updated 05/12/2017 18:34 2 Comments

New "enforcing" option: `oldie`


Currently, JSHint issues some warnings that relate to peculiarities of outdated versions of the Internet Explorer browser:

  • W002: “Value of ‘{a}’ may be overwritten in IE 8 and earlier.” (issued in non-Node.js contexts)
  • W070: “Extra comma. (it breaks older versions of IE)” (issued in pre-ES5 contexts)

The conditions that enable these options are inconsistent and only approximate the user’s intention to support old versions of that browser. Because they are currently enabled by default, we could implement a “relaxing” option to disable them. However, they are becoming increasingly irrelevant, so it may be more convenient to disable them by default (which is a “SemVer patch” change) and implement a new option such as oldie (which is a “SemVer minor change) to allow consumers to enable them in a more explicit, intentional way.

It’s tempting to use E059 (“Incompatible values for the ‘{a}’ and ‘{b}’ linting options.”) in order to restrict this new option’s usage to browser: true contexts, but that may be going too far. Some consumers may wish to write code that is portable between IE and (for instance) Node.js, so they would want to enable this option without specifying browser: true.

Finally, we should take the opportunity to expand the warning messages to use “Internet Explorer” rather than “IE”.

Updated 23/09/2017 05:08 1 Comments

Thimble and JS: TODOMVC Starter Kits


The TodoMVC examples are good ways to learn about different frameworks and approaches to solving a common problem: creating a TODO app in the browser.

It would be nice to migrate some of these over to Thimble, so our users could play with them. The main thing we want here is something that works well within Thimble with a complete Tutorial, and learning/reference material. A few to consider are:

  • Vanilla JS:
  • React:*
  • Vue:
Updated 05/11/2017 20:09 11 Comments

Use DOM methods instead of innerHTML


There are a few places where production code uses innerHTML. They should use DOM methods instead. - tracing/base/base.html - tracing/ui/analysis/single_object_instance_sub_view.html - tracing/ui/base/radio_picker.html - tracing/ui/base/dom_helpers.html - Can createScopedStyle be removed altogether? Do its two callers really need it? - tracing/ui/extras/drive/index.html - telemetry/support/html_output/results-template.html (Nevermind, this is dead code.) - dashboard/templates/edit_sheriffs.html - dashboard/elements/quick-log.html - dashboard/elements/test-picker.html - dashboard/static/debug_alert.html - dashboard/elements/autocomplete-box.html

@nedn , I noticed this when I was reading radio-picker while reviewing lpy’s CL. Can I ask you to fix at least that one? :-)

Updated 03/10/2017 02:56 10 Comments

WebIDL Binder: take Prefix into account when generating JavaScript


The ‘Prefix’ keyword only affects the generated C++ glue code. This leads to name collisions inside the WebIDL Binder when multiple inner classes or classes inside namespaces share the same name. Also the generated JavaScript glue code does not in any way take the prefix into account.

This is for example problematic when dealing with C++ code compiled from Cap’n Proto schemas. For each message type there will be a C++ class with an inner Reader and Builder class. These inner classes are the ones through which the reading and composition of Cap’n Proto messages is done. Getters for various types also return a Reader for that type. So pretty much every class for which we would want to generate glue code in this scenario will either be called ‘Reader’ or ‘Builder’. This causes the WebIDL Binder to complain of duplicate definitions, although they are actually distinct classes. Generated JavaScript also only uses the name ‘Reader’ or ‘Builder’ without any further qualification.

Would it be possible to have the WebIDL Binder take the Prefix into account, so that it would treat interfaces adorned with different Prefixes as distinct types and generate ‘fully qualified’ JavaScript names (by prepending the Prefix to the name for example)?

Updated 25/10/2017 07:44 5 Comments

Fork me on GitHub