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

Detailed work with permissions


We don’t currently offer a way to update or delete a permission. This requires the general ability to list all the permissions for a file and get it into a favourable object, presumably a tibble with one row per permission. Given that info, especially the id of the permission, you’re in a position to form additional calls that delete or update it. Finally, all of this is notably different for Team Drives.

Updated 20/08/2017 03:13

Mangling option may produce buggy code in IE8-.


Hello! Consider this example: ``` var name = ‘test’, func = function () { try { console.log(name); } catch (e) { } };

func(); Obviously, this should output `'test'`, however, it outputs `undefined` in IE8 and older when running the obfuscator with `mangle:true` (yes, I know we're in 2017 =( ). This is related to the infamous [IE8 catch scope leak issue]( The issue may occur in random parts of the code that use var smth; try { … } catch(e){ … }`` pattern as the variable of the outer scope may be named the same as thecatch` argument, thus shadowing it.

Would you please take a look? Thanks in advance!

Updated 19/08/2017 11:08 1 Comments

Duel Masters Update


Most of the following should also apply to ygopro-ka * Database - [ ] Cut the copyright text on the bottom of each card that distinguishes OCG and TCG cards from each other and Duel Masters cards from Yugioh cards. - [ ] Add a race setcode to each creature so Adds Race cards can be easily scripted in the future. (Not necessary in ygopro-ka) * Duel Masters Rules[24000000] - [ ] Change the order of how Duel Masters Rules sets up the duel: - [ ] 1. Duel Masters Rules moves to the turn player’s field. - [ ] 2. Duel Masters Rules moves to the non-turn player’s field (or is created, if the non-turn player forgot to include it in their deck). - [ ] 3. Duel Masters Rules checks the turn player’s possession for invalid cards. - [ ] 4. Duel Masters Rules checks the non-turn player’s possession for invalid cards. - [ ] 5. Duel Masters Rules sets the turn player’s LP to 1. - [ ] 6. Duel Masters Rules sets the non-turn player’s LP to 1. - [ ] 7. Duel Masters Rules shuffles the turn player’s hand into the deck. - [ ] 8. Duel Masters Rules shuffles the non-turn player’s hand into the deck. - [ ] 9. Duel Masters Rules sets the turn player’s shields. - [ ] 10. Duel Masters Rules sets the non-turn player’s shields. - [ ] 11. Duel Masters Rules draws the turn player’s opening hand. - [ ] 12. Duel Masters Rules draws the non-turn player’s opening hand. - [ ] Add the untap rule that occurs at the start of the turn to Duel Masters Rules instead. - [ ] Add the rule where creatures can’t be normal summoned/set to Duel Masters Rules instead. - [ ] Change the battle destroy rules to continuous effects so less chain links are formed and have those rules always apply first before any other ability. - [ ] Consider updating the duel masters functions to create Duel Masters Rules instead, so players don’t have to include the card in their deck. * EnableCreatureAttribute - [ ] Consider separating the evolution function and using a filter similar to Yugioh’s xyz procedure.

Updated 17/08/2017 11:05

Split pmbootstrap and aports in two repositories


There are different release cycles, that make sense for aports and pmbootstrap. * aports: always up-to-date * we could provide different branches like edge, 3.6, 3.5 which follow Alpine’s branching model * but these branches need to be always up to date * for pmbootstrap we could have a stable release every now and then * that way we could package it for pip and for some Linux distributions (AUR, Gentoo overlay, …) * it would be a better experience for new users (install pmbootstrap through their distribution/pip, more stability)

A great benefit, that @MartijnBraam pointed out:

if you ship pmbootstrap seperately, then you can make pmbootstrap init manage the aports git repo and make it selectable between “edge”, which is the latest master or a specific tag

Updated 14/08/2017 21:34

APKINDEX.tar.gz: improve repository description


Right now, the description simply says “user” (because we build the package in /home/user/build). I have upstreamed a parameter to set any description in abuild. But it will take some time, until it lands in the released version of abuild, that gets actually used in Alpine Linux.

I suggest we wait until they released it, and then simply use the parameter in pmbootstrap to set the description to postmarketOS (maybe with a date appended?). It will probably make sense to add a parameter to pmbootstrap, so we can use another value when building for the binary package repo, than when creating packages locally.

Updated 12/08/2017 02:31

Better export for statistics tools


<a href=“”><img src=“” align=“left” width=“96” height=“96” hspace=“10”></img></a> Issue by mitchellsundt Thursday Jul 09, 2015 at 18:37 GMT Originally opened as (10 comment(s))

Originally reported on Google Code with ID 495

I am also severely missing a possibility to export data to statistical programmes such
as Stata or R including variable labels and value labels, i.e. essentially the underlying
logic of the questionnaire. Before, we were using pencil paper questionnaires and the
free (but not open source) CSPro as data entry tool. It was possible to directly export
to Stata, which was extremely handy. Any change in the questionnaire was immediately
and correctly reflected in the Stata export. As any digital questionnaire includes
the information of (a) the question, (b) variable name, (c) answer categories in words
and (d) associated values in numbers. As far as I understood, (a)-(c) would be lost
in ODK .csv export and only (d) is kept. Is that correct? IMHO, this would mean much
(error-prone) duplication of work. 

How difficult is it to include (a)-(c) and to develop an export to statistical programmes?
Has already anyone started to write an export filter to one of these statistical programmes?


Reported by yanokwa on 2012-01-06 00:01:02

Updated 12/08/2017 02:16 2 Comments

Allow submitted forms to be marked as invalid and resubmitted


<a href=“”><img src=“” align=“left” width=“96” height=“96” hspace=“10”></img></a> Issue by mitchellsundt Thursday Jul 09, 2015 at 17:54 GMT Originally opened as (4 comment(s))

Originally reported on Google Code with ID 234

We have a use case where we want to use ODK Collect/Aggregate to collect health information.
That health information will be inserted into a third party health system. We anticipate
that there will be validation and other errors that could occur during form entry.
We would like to keep invalid forms in Collect until the field worker has corrected
them. After they have corrected them we assume they will be resubmitted.

I believe this will require changes on both Aggregate and Collect if it is accepted.
Ideally, Aggregate would communicate all invalid submissions, and a brief message as
to why the form submission failed. All valid forms would be deleted from the Collect

Reported by david.roberge12 on 2011-06-16 18:52:14

Updated 12/08/2017 02:13 4 Comments

Can't have the english and the underlying value collected for viewing in aggregate


<a href=“”><img src=“” align=“left” width=“96” height=“96” hspace=“10”></img></a> Issue by mitchellsundt Thursday Jul 09, 2015 at 17:37 GMT Originally opened as (2 comment(s))

Originally reported on Google Code with ID 180

Would be helpful to have an option to display two columns of data, one 
for the english choice and one for the underlying value. An easy 
approach i've used is to build an english list with underlying names 
the same as the english names and then recreate the same list again 
with a second list of underlying values that equal the numerical 
values i'm after. But it makes the form a little cumbersome and 
redundant looking 

Reported by parkstrial on 2011-01-27 15:31:33

Updated 12/08/2017 02:13 2 Comments

CSV repeats


<a href=“”><img src=“” align=“left” width=“96” height=“96” hspace=“10”></img></a> Issue by mitchellsundt Wednesday Jul 08, 2015 at 22:54 GMT Originally opened as (9 comment(s))

Originally reported on Google Code with ID 100

I have a question about downloading the data from Agreegate (on appspot server) with
repeating elements - when I go to the 'download CSV' option, it doesn't download the
repeated element data, instead it just shows the URL for the extra data table.  I can't
seem to find a way to directly download that repeated data - is there a way for doing
so that I'm missing?

Reported by wbrunette on 2010-07-21 23:39:35

Updated 12/08/2017 02:13 9 Comments

group specific display of xforms


<a href=“”><img src=“” align=“left” width=“96” height=“96” hspace=“10”></img></a> Issue by mitchellsundt Wednesday Jul 08, 2015 at 22:51 GMT Originally opened as (3 comment(s))

Originally reported on Google Code with ID 81

"I would like to know if ODK can pass the handset id of an android through
the server url. I would like to limit the xforms that can be accessed by
different groups of people based on the group to which the handset id has
been assigned."

Reported by yanokwa on 2010-06-24 09:46:39

Updated 12/08/2017 02:13 3 Comments

headers should reflect question text on data type


<a href=“”><img src=“” align=“left” width=“96” height=“96” hspace=“10”></img></a> Issue by mitchellsundt Wednesday Jul 08, 2015 at 22:02 GMT Originally opened as (4 comment(s))

Originally reported on Google Code with ID 19

in form submission results, it'd be nice to see the question text not the
data type.

Reported by yanokwa on 2010-04-29 22:12:49

Updated 12/08/2017 02:12 4 Comments

Faster page load times


At the moment at every click: Load wrapper -> Wrapper creates iframe and loads page html -> Init websocket connection -> Load page details using websocket api

It could be much faster by sharing the wrapper and the websocket connection between and only change the inner frame html.

Need a wrapper api command that allows change the url of the page.

Updated 08/08/2017 17:32 1 Comments

Lazy sql updates


Currently the sqlite database is updated as the new file is written to the hdd.

Maybe it would be better to read the files when its required by the sql query:

  • data/user/data.json updated
  • The storage layer marks the data/user/data.json as updated
  • File written to disk, no sql connection made

When user tries to list the topics:

  • Storage layer loads the files to sql that marked as updated
  • Reset the files updated status
  • Run the query on updated database


  • Lot faster data process by batching updates using BEGIN / COMMIT
  • Less CPU usage If you only “seed” the site
  • If the file updated more than once then only have to load 1 times


  • Displaying the data could be slower if you have many pending updated files because it has to parse the updated files before display any result
  • Has to store somewhere the pending database updates
Updated 08/08/2017 17:32

Notify if a new rate is found


The main point of rateswatcher is to notify the user if a new rate is found.

There can have multiple definitions of new rate.

One easy way is to store the highest rate in Firebase. Every time a new rate is updated, it is compared to the stored highest rate, if the new rate is higher than the stored rate, update the stored rate to the new rate.

Another way is to take the average of all the past rates, if the new rate is higher than the average, notify the user.

The first way is easier to do, the second way is good to have.

Updated 05/08/2017 14:31



Ofc, a lot of functions have side effects. I wanna research this question and let testla try to test it. Prototype may be like this (now we check not return, but obj: js /*T (5, 5) => { a: 5, b: 5 } */ function sideEffect(a, b) { obj.fuck = { //#T# result// a: a, b: b }; return 'fuck'; }

Updated 04/08/2017 12:19

Анонсер - Ocelot, XBT тощо


Передісторія тут:

в старій базі тригер (bb_topics_au) вставляв дані в цю (bb_bt_torrents_del) таблицю: sql DELIMITER $$ CREATE TRIGGER `bb_topics_au` AFTER UPDATE ON `bb_topics` FOR EACH ROW if new.topic_type_gold != old.topic_type_gold then insert into bb_bt_torrents_del (torrent_id,info_hash,is_del,dl_percent) select torrent_id,info_hash,0 ,case new.topic_type_gold when 1 then 0 when 2 then 50 when 3 then 75 when 4 then -1 else 100 end from bb_bt_torrents t where t.topic_id=new.topic_id ON DUPLICATE KEY UPDATE dl_percent=values(dl_percent); end if $$ DELIMITER ; та тут: Ця логіка (таблиця + тригер) потрібна для анонсера XBTT, який більше не підтримується апстрімом. Для спрощення, ми почнемо з використання стандартного анонсера на PHP, потім можливо перейдемо або на Ocelot, або на XBTT.

Тобто, поки що дропаємо таблицю і тригер, можливо повернемося до них пізніше.

Updated 11/08/2017 22:17 7 Comments

Add @taskr/sourcemaps


This PR adds source map init, write, and apply for use in tasks and plugins. The approach is very similar to Gulp 4 (in fact most of the code is based on gulp-sourcemaps). Important improvements include:

  • Maintains the source map chain through steps, ensuring that the final output maps back to the original input
  • Greatly simplifies source map handling for plugins


Build-in support:

// 1. Initialize / load existing source maps
// 2. Write inline source maps
yield task.source('**/*.js', { sourcemaps: true })

// 1. Initialize / load existing source maps
// 2. Write external source maps (next to source files)
yield task.source('**/*.scss', { sourcemaps: true })
  .target('build', { sourcemaps: '.' });

Custom usage:

yield task.source('**/*.ts')
  .initSourceMaps({ load: true })
  .writeSourceMaps({ dest: '.' })

Plugin usage:

const applySourceMap = require('@taskr/sourcemaps').applySourceMap;
const transform = require('./transform');

module.exports = function(task, options) {
  task.plugin('transform', { every: true }, function * (file) {
    // If sourceMap is enabled for file, make source maps
    if (file.sourceMap) {
      options.makeSourceMap = true;

    const result = transform(, options); = result.code;

    // Apply source map, merging with existing
    if (file.sourceMap) {


1. Should this be included by default with the taskr package

I think building gulp-sourcemaps into gulp 4 was well received and would be a nice addition to taskr. Currently, most of the plugins have source map support currently, which is awesome, but they only support merging if the tool supports it (which is rare) and some don’t allow control between inline and external source maps. This adds 4 direct dependencies, but they have no sub-dependencies, so in total it’s fairly reasonable at 80k.

Alternative: It could potentially be an optional dependency that needs to be explicitly installed, but it will most likely be installed by plugins needing applySourceMap that in the end it may not lead to savings for the user to make it optional.

2. Should source maps be written by default

Currently, unless source map writing is explicitly disabled with .target('...', { sourcemaps: false }), if the sourceMap property is found on a file, it is written as an inline source map. The sourceMap property should only be set if source maps are enabled in .source or initSourceMaps, so it’s reasonable to assume it is an intelligent default to write them.

I’ve added support to @taskr/babel, wanted to see what you think before I went any further. Thanks!

Updated 02/08/2017 22:43 3 Comments

More content on the pmOS homepage


Right now, I’m posting all “big news” about the project on my personal blog. This made sense in the beginning, when there was no community. But as it stands now, we have many contributors and the way we inform people about the progress should reflect that. So it would make more sense for me to put the next big announcement of the project’s state (e.g. 100 days of pmOS or plasma on pmOS) on the official homepage.

I personally won’t work on these changes right now, because I’d rather spend time on getting the binary repo working and other things, but this is where I’d like to take the home page before the next big announcement. Here are my ideas, please discuss! * Use the “CMS” from my blog (as it was suggested here). Because I like having a minimal system, that works without installing a bazillion dependencies first. Please have a look at the source and judge for yourself if you think it is acceptable or not. * Change the design of the blog, and integrate the current homepage’s start page * Write new, shorter introduction/security warning posts, that isn’t written in the perspective of “I did…”, but what we did together!

Note: I might write another post about the security architecture of the binary repo #64 on my own blog in the meantime, and keep writing on my blog about personal views of the project, such as how I would like to make this my day job one day.

Updated 08/08/2017 18:22 12 Comments

bulletize() helper


This appears in many places:

glue_data(file, "  * {name}: {id}")

This might be overwrought but it could even be a generic, with methods for character and dribble.

In general, there is probably too much diversity in how the bulleted messages are formed.

Updated 18/08/2017 05:29 1 Comments

Metadata cannot be set from nested params


By design, Meta belongs to the basic Params structure which all other parameters structures compose. Unfortunately though, during the course of an API call, it’s only the top-level Params that has its AppendTo called, meaning that setting metadata on a nested structure is not possible:

customer.New(&stripe.CustomerParams {
  Source:  &stripe.SourceParams{
    Card: &stripe.CardParams{
      // Other CardParam fields
      Params: stripe.Params{
        Meta: cardInfo.Metadata,

Fundamentally, the AppendTo implementation of Params cannot support it because it always writes metadata out at the top level:

func (p *Params) AppendTo(body *RequestValues) {
    for k, v := range p.Meta {
        body.Add(fmt.Sprintf("metadata[%v]", k), v)

    for _, v := range p.Exp {
        body.Add("expand[]", v)

    for k, vs := range p.Extra {
        for _, v := range vs {
            body.Add(k, v)

There’s probably a few ways to fix this problem, but I suspect adding Meta to the top-level Params may have been a conceptual mistake in the API design — really it should probably be included on every parameters structure that supports it, and those parameter structures should be able to serialize it appropriately.

It’s going to take a bit of refactoring to unwind this properly, so tagging this issue as future for the time being.

Updated 27/07/2017 16:27 2 Comments

Permissions to Open Mystery Boxes


I’m trying to replicate Hypixel’s way of opening mystery boxes, where you must have a rank to open a mystery box of a certain level. I was wondering if you could add permissions for players to open mystery boxes, such as for opening a 1-star mystery box. That would be really awesome.


Updated 28/07/2017 10:56 1 Comments

Build and deploy hooks


I just wanted to create this issue so i wouldn’t forget.

It would be interesting if nodeshift had different “stages” that could be hooked into.

similar to how ember-deploy works:

This sort of goes along with how the maven plugin allows you to supply different enrichers.

Updated 27/07/2017 02:29

Provide armv7 as architecture


The full hostspecs from arch_to_hostspec(): shell case "$1" in aarch64) echo "aarch64-alpine-linux-musl" ;; armel) echo "armv5-alpine-linux-musleabi" ;; armhf) echo "armv6-alpine-linux-muslgnueabihf" ;; armv7) echo "armv7-alpine-linux-musleabihf" ;; ppc) echo "powerpc-alpine-linux-musl" ;; ppc64) echo "powerpc64-alpine-linux-musl" ;; ppc64le) echo "powerpc64le-alpine-linux-musl" ;; s390x) echo "s390x-alpine-linux-musl" ;; x86) echo "i586-alpine-linux-musl" ;; x86_64) echo "x86_64-alpine-linux-musl" ;; *) echo "unknown" ;; esac

@MartijnBraam said in in the channel some time back, that we would get a good speed improvement (and also smaller binaries due to thumb2) when also providing binaries for armv7 instead of “armhf” which is armv6 only. I think especially older devices with limited CPU power and RAM, such as the rx51 (N900) would benefit from this change.

This needs to be done upstream in Alpine. It has already been proposed to switch to armv7+thumb2 only in 2015 - but no one responded to that thread and they did not change it. Please note that this is not what we want for postmarketOS, because then we could not support phones with an armv6/armhf only chip!

If you want to try your luck with this, dear reader, I suggest the following: * Please read the whole list first! * Make sure that you have some time for this. While it does not matter that much when working on pmOS, if you start something half-way and then never coming back (we’d rather have that than no contributions!), I think it is important to not do that with our upstream friends. Invest some time and make sure this actually goes through, if you want to take this. Otherwise upstream might get frustrated by our community and that is not what we want - after all we’re proposing a big change for them here. * Run pmbotstrap chroot to get a native Alpine Linux chroot (unless you have it already installed in some other way) * Clone the aports repository and run scripts/ with armv7 as parameter to see whether bootstrapping the base system works or not * Fix it up until it does work and upstream your fixes. Please ask in this ticket or in the channel if you need help with that. * Only after you have the bootstrapping process working, contact the alpine developers. * I recommend answering that mail thead – but make sure, that you’re proposing armv7 as additional architecture instead or replacing armhf - you could describe our use case with old phones there, if you want to. Mention that the bootstrapping process runs through and that you are willing to help with setting that architecture up. * If you do not get a response to that thread within a week, ask in #alpine-devel and link to the e-mail you have sent. * Help them until we can actually ship this feature * After all that is done and armv7 actually is a thing in Alpine, we’d need to adjust the deviceinfo files to make use of armv7. You could do that in a PR, but that step is so easy compared to the rest - if you got that far, you might as well let someone else take it from there.

Please report your progress in this ticket.

Updated 23/07/2017 11:11

Section on Text Authoring/Editing UX


As a follow up to the discussion on, we want to consider to add a section, possibly as an Appendix, on layout-related matters in user interfaces. Example questions to answer would be:

  • How text highlighting should work. Specifically, most UI code need to know word boundaries, line boundaries, paragraph boundaries.

  • Cursor positioning and cursor movement. Specifically, cursor movement in 1) RTL paragraph vs LTR paragraph, 2) inside a bidi level run with different direction of the paragraph, and 3) on the boundary of bidi level runs.

  • Cursor shape to denote paragraph direction and/or direction at the current position.

  • Mechanical paragraph direction setting as Higher-Level Protocols. Specifically, whether LRM/RLM/ALM markers should be inserted if an L/R/AL letter is inserted and deleted on an empty paragraph.

  • Behavior of inserting/replacing LTR/RTL character in LTR/RTL context. Specifically, if there should be any mechanical marker-insertion or mechanical embedding/isolation.

  • Behavior of copy-n-pasting LTR/RTL text in LTR/RTL context. Specifically, if there should be any mechanical marker-insertion or mechanical embedding/isolation.

Updated 21/07/2017 20:11

Gentler subprocess termination, for windows


As a follow-up to #857, we want to make subprocess termination a little more selective/gentler on Windows, too.

@mattn and @ChrisHines had a bunch of thoughts, already, but I wanted to move that discussion to an issue here, so that that PR can focus on getting the UNIX support done. Here’s my attempt to summarize those thoughts:

Updated 08/08/2017 15:41 7 Comments

get comments from docs


Follow-up to this thread:

It would be great to be able to get comments from (e.g.) spreadsheets. One common issue is that people use them (and formatting) to convey useful information that exporting spreadsheets to CSV doesn’t allow to preserve. I guess these could be stored in the attributes of a tibble, for example.

Updated 14/08/2017 04:59 2 Comments

Add windowing functions to DSP library


CMSIS-DSP offers some functions to perform FFT (Fast Fourier Transform).

An usual approach, before a FFT, is to apply a window, for example to reduce leakage effect.

A lot of different window have been developed and tested in DSP, but common choice is between Hanning, Hamming, Blackman and Flat-Top (even if many others are available).

I suggest the developers to add to CMSIS-DSP some functions to apply (at least) these common windows (f32, q15 and q31 data formats).

Updated 20/07/2017 11:25 2 Comments

Add flow-types


Right now the code is missing any sort of type checking. Flow types should be added and the transpiler should be setup to strip them an inject propTypes based on them.

The way react-navigation does this can be used as a base.

Updated 19/07/2017 18:58

Implement Header compatible with react-navigation


react-navigation seems to be the de-facto navigation component for React Native now. However the built-in header has a few areas it diverges from Material Design and there are Material Design features in the header that react-navigation won’t be implementing.

It would be a good idea to provide a component that extends the react-navigation Header and provides fixes and extra material-design features.

  • Extend the react-navigation Header.
  • Automatically apply the MaterialTheme’s appBar styles to the header.
  • Automatically handle the StatusBar.
    • Accept a translucent prop to implicitly make the bar translucent on Android.
    • Manage the status bar’s background and icon color.
  • By default disable the iOS back title and just render the back chevron.
  • Support a left action that transitions between back, hamburger, and close. (This may be a separate component)
  • Support tall headers.
  • Allow the header color and actions to transition between sets (ie: so you can implement the select bar styles)
  • Find a way to support transitioning between actions for shared floating headers.
  • Support expandable in-app search.
Updated 19/07/2017 18:55

Fork me on GitHub