(graphcache) - result.fetching is always false in some cases when using requestPolicy cache-and-network

Hi,
Awesome work!
I am trying to use urql cache in my application but i'm having an issue with that =/
Isn't in all queries, but in some places this happen, i'm doing the query, but the fetching prop is always false.

loading is just an alias to fetching.
If i changed requestPolicy to network-only, it's work, for some reason, i think that the component understand that already read a value from cache, then don't show loading, but i'm not sure.
I have some idea about that, but still don't know how solve that.
I have two queries, first query get all users to populate a user table, the second query is triggered when i click in a table row, selecting a specific user.
Then i have something like this:
query 1:
{
    organization(id: "test") {
        users {
            id
            name
            birthDay
        }
}

query 2:
{
    organization(id: "test") {
        user(id: "123") {
            id
            cellphone (focus that)
        }
}

I'm not showing loading at component that trigger query 2. I don't know how solve that, but i think that when i get a user with id 123, and in the last query a i found a array with users, and have some object of user, with id 123, the cache undersand that is the same value.
urql version & exchanges:
"urql": "^2.0.5",
"@urql/exchange-auth": "^0.1.3",
"@urql/exchange-graphcache": "^4.3.5",
"@urql/devtools": "^2.0.3",
"@urql/exchange-multipart-fetch": "^0.1.13",
Steps to reproduce
I don't know how, maybe i should make a demo if need.
Expected behavior
Fetching first setted to true in second component (running query 2)
Actual behavior
Fetching first setted to false always in second component (running query 2)
Someone have any suggestion? I think it's something silly that i have forgotten.
Thanks for your help =)

Have you checked the result.stale prop? When a stale result is served while we do a background fetch that is set to true

Hello @JoviDeCroock, there is a print about loading and stale prop:

Query result with session came after stale setted to false, before that, the query result is:
{
    "organization": {
        "id": "test",
        "session": null
    }
}

So that seems correct right 😅 we are serving a result from cache (partial result) and are fetching in the background which we can derive because of result.stale being true there

Wait a moment, why it's getting result from cache? This doesn't make sense, i doesn't have this data from cache as you can see in query 1, i'm getting users, and the unique "cache" data, should be id.
I think your affirmation is right, we are serving a result from cache (partial result, in this case, id), but is not the correct behavior.
In this way, i can't show loading for the front and doesn't have any data available to show in front.

Speaking as someone coming from the apollo-client, this behaviour is surprising. I have a field marked as nullable, which we base business logic upon in the frontend. The logic (in this case, redirect to a 404 page in case of a missing field) runs before we get a chance to fetch the missing data.
There is a semantic difference between a (as of yet) missing value and null. In case of a non-nullable value, we might be returning out-of-date data, but at least it's guaranteed that the field had that value at some point in time. In case of a nullable field, the field might never have been set to null.
The workaround for me is to simply not pass the schema property to the cacheExchange, disabling schema awareness.

@Dremora Not quite sure I get the context of the missing fields in your case; I'm assuming the redirect to 404 is a custom implementation. It very much depends however how you implemented that in your GraphQL schema. A null value is a funny thing in GraphQL because there are multiple ways to interpret it depending on how your schema implicitly returns it. It's quite common to treat Query.item for instance as "missing" and default to null rather than issuing an error or special object, which may not be true for other parts of the schema.
That specific semantic difference will definitely depend on how you're building the schema. This actually also recently came up here: https://github.com/FormidableLabs/urql/discussions/1365#discussioncomment-1622590
(Feel free to ask more questions in a discussion of your own if you'd like to fan out on this)
To summarise that thread, partial data in Graphcache is explicitly a semantic layer on top of existing schema data. But in the absence of @defer and nullability operators as a feature, it isn't possible to choose a different intuitive semantic as an alternative to the schema itself (yet). So the good news is that a solution is coming to GraphQL, the bad is that it isn't here yet (unless your API supports @defer since the protocol is already implemented in urql and Graphcache)
However, you can always choose to defer "destructive logic" like a redirect by not applying it when a result is marked with stale: true. This flag is independent of schema awareness, and may even be relevant without it. All it indicates is that more data is being fetched in the background. If it's set (and it may also be set because of cache-and-network) it's safer to wait for the API's next result rather than doing an action like redirecting immediately ✌

@kitten apologies for late reply. Yes, 404 is indeed a custom implementation. It looks like this:
  useEffect(() => {
    if (data && !data.item) {
      void redirect('/404');
    }
  }, [data, data?.item, redirect]);

I rely on the item property being nullable to determine whether an entity that we request (with its ID taken from the URL) exists. So the semantics expected here: if the property is null, it's not that we don't yet have the knowledge about the value of this field, but that we do have the knowledge, and its value is null.
When it comes to @defer, it seems to be solving the opposite problem - reusing partial results from the cache with non-nullable fields (and temporarily returning them as null). So, is it correct to assume that once @defer is here, urql will change its semantics (and the current behaviour will be opt-in on per-field basis via @defer)?

@Dremora Well, nullability opeators is actually what you likely want together with schema-awareness. It'd allow you to explicitly say that the frontend does not handle a certain case, in other words:
query ($id: ID!) {
  item!(id: $id) {
    id
    ...Item
  }
}

Here we say that item! is required by annotating it with !, which means that we say "this should never be null". In the future, the server-side will then be able to instead error out when null is returned, which means you'll get either data: null or data: { item: null } to react to, and Graphcache knows that defaulting to null will be unacceptable, no matter what the schema says about it.
In reverse item? would allow you to do the opposite, by marking a field as always optional, which means that Graphcache is then able to optimistically null this field out if it otherwise has enough data to fulfil your request.
The spec for this however is taking quite a while, so I'm currently considering to support a Relay-like approach to this by adding @required. This would be quite a huge change, but in essence, the idea is that it may be able to support the same idea by providing a Graphcache-only primitive to treat the field as required https://relay.dev/docs/next/guides/required-directive/
However, in either case, if you're doing a redirect only when an entity is missing, it's often sufficient to wait for data to settle, i.e. to change your check to:
  useEffect(() => {
    if (!result.fetching && !result.stale && !result.data?.item) {
      return redirect('/404');
    }
  }, [result]);

In general, checking for !!data is something I'd be careful about, because data can also be null in the presence of field errors, or missing in the presence of request errors. So, !result.fetching is always a definitive answer on whether you should wait in general. The !result.stale flag is basically to circumvent the "optimistic" i.e. client-side partial result if you're using schema awareness.
In certain cases it's desireable not to react to data that is changing. The result.stale flag basicallt says "you can expect a new result here soon", so if you're checking for !result.stale you're explicitly saying that you don't want a result that's partial or changing soon.
This also has other uses. Suppose you're on a list page and because you redirect the user to a "create item" page. Let's say you don't have Graphcache updaters set up, and hence either use the requestPolicyExchange (refetch on a TTL basis) or switch the listing page to cache-and-network.
You now redirect from the "create item" page back to the list page, because the user has created the item. However, your cache is still refetching and gives you a stale result, which is the empty list, so you redirect them again to the "create item" page. Situations like that are avoided by ensuring that you check result.stale before you do any "destructive" action like redirecting, since it informs you of pending background fetches.


Crash stateGoal.hasChanged not a function

Hi, why is this happening?
C:\Users\X\Desktop\SAVE\Minecraft\NodeJS-Bot\node_modules\mineflayer-pathfinder\index.js:313
    if (stateGoal && stateGoal.hasChanged()) {
                               ^

TypeError: stateGoal.hasChanged is not a function
    at EventEmitter.monitorMovement (C:\Users\X\Desktop\SAVE\Minecraft\NodeJS-Bot\node_modules\mineflayer-pathfinder\index.js:313:32)
    at EventEmitter.emit (node:events:390:22)
    at Timeout.doPhysics [as _onTimeout] (C:\Users\Xyun\Desktop\SAVE\Minecraft\NodeJS-Bot\node_modules\mineflayer\lib\plugins\physics.js:63:13)
    at listOnTimeout (node:internal/timers:557:17)
    at processTimers (node:internal/timers:500:7)

My code:
bot.on("playerJoined", (player) => {
        if(goal_memory && goal_memory[0] instanceof goals.GoalFollow && goal_memory[0].entity.username.trim() === player.username.trim()) {
            setTimeout(() => {  //Non blocking while would be better
                if(bot.players[player.username] && bot.players[player.username].entity) {

                    bot.pathfinder.setGoal(bot.players[player.username].entity, goal_memory[1])

                log("[Pathfinder] Set goal to last memory.")
                } else {
                    log("[Memory] Error, could not get entity of " + player.username + ".")
                }
            }, 3000);
        }
    })

btw the bot loses track after a disconnect or world change of the target, likely the entity gets set new then or something
do you know any better way to keep the goal in the bots "memory"?

And why is there no function to get the current goal of the pathfinder? Would be so useful

You need to read the documentation: https://github.com/PrismarineJS/mineflayer-pathfinder#botpathfindersetgoalgoal-dynamic
setGoal expect a goal instance and a boolean, you are giving it an entity and a goal instance. Parameters order and type are not optional, you need to follow the doc and example.
You can get the current goal with bot.pathfinder.goal

Oh man I am so dumb XD Thank you!!!!


[WIP] new version splitted in modules and build as UMD

I might need some help on this. This library is very procedural and inconsistent in the writing. Very hard to find out how to organize it some times.
I add some TODO to point out some of the things I noticed.
I still have to add

npm scripts
webpack config + babel
move the index.js to blockrain.js and make the index.js a jquery plugin factory of blockrain class
finally build, cross fingers, debug, fix

Love the ES6 and modular themes!
For the time being I'd recommend against a large refactor. The original code on which blockrain is based has a convoluted structure and making it more modular (like it should be) pretty much requires rewriting the entire thing, since the renderer, game logic and other things are all joined together in odd ways.
It can certainly be (and should be) done, but since the plugin is mostly feature complete, we are not messing that much with the source these days. That's pretty much the reason why most of the more recent changes are patches instead of decent rewrites.


Support arbitrary json_object in OpenAI and Context Free Grammar

Closes #3148
Closes #1229

Excellent new feature! Thanks everyone!
I will definitely test it when the next vLLM release comes out.

Is this available in the new vLLM library? How do I use this feature with Mixtral8x7b?

This is available in latest release. https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html

Please keep this issue closed, but just had to say: Oh man I love vLLM much, you guys are all awesome. Thank you!


Mutually exclusive conditions on deployment with dmcrypt dedicated journal

I've been trying to deploy ceph cluster with dedicated dmcrypted journals and met following:
To prepare OSDs with dmcrypt, i need to set both raw_multi_journal and dmcrypt_dedicated_journal to true:
https://github.com/ceph/ceph-ansible/blob/master/roles/ceph-osd/tasks/scenarios/dmcrypt-dedicated-journal.yml#L25-L27
But at the same time, this is invalid settings here: https://github.com/ceph/ceph-ansible/blob/master/roles/ceph-common/tasks/checks/check_mandatory_vars.yml#L96
I've tried to remove mutually exclusive or (dmcrypt_dedicated_journal and raw_multi_journal) and deployment is OK, but I am not quite sure if it won't break anything else.

Thanks for the report. I think the fix here is to remove this line: https://github.com/ceph/ceph-ansible/blob/master/roles/ceph-osd/tasks/scenarios/dmcrypt-dedicated-journal.yml#L25
The check in check_mandatory_vars is correct because you really can't use dmcrypt_dedicated_journal and raw_multi_journal at the same time.


Bicep foreach syntax fixes

The main change is the reformatting of resource declarations to place the for loop on the same line as the resource type, which is now valid and allows the infra provisioning to complete without errors

Were you experiencing deployment issues due to formatting? Looking at the acr.bicep file as an example, if I make your changes, running the command az bicep format --file acr.bicep to auto-format the code converts the changes back to the current syntax form.

Were you experiencing deployment issues due to formatting? Looking at the acr.bicep file as an example, if I make your changes, running the command az bicep format --file acr.bicep to auto-format the code converts the changes back to the current syntax form.

hi @jgbradley1 - thats correct - you run into BICEP errors due to formatting issues.
See example below:

I am also using latest bicep version:
Bicep CLI version 0.30.23 (ec3612efc7)


[WFCORE-6719] Upgrade JBoss Invocation to 2.0.1.Final

https://issues.redhat.com/browse/WFCORE-6719

Core -> Full Integration Build 13300 outcome was UNKNOWN using a merge of 887700c52a5dc1818d26b956dd3cccba20845c4c
Summary: Canceled (Exit code 143 (Step: Build & test full (Maven)) (new)) Build time: 00:04:11


Add an experimental customization point for the error label

This supports SwiftPM, which uses "error:" instead of "Error:" to make its error messages match the compiler.

@swift-ci Please test


Adding support for DNS search on RS1

Signed-off-by: Sandeep Bansal<EMAIL_ADDRESS>(cherry picked from commit b8e8dcd6e031d005a2d46d95f84da35b436cd870)

Cherry pick of moby/moby#33311

LGTM
integration tests and unit tests are green


[WIP] add QM9 example

Basic thing works, but going to wait to merge until I've optimized it a little

Codecov Report

Merging #26 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #26   +/-   ##
=======================================
  Coverage   75.00%   75.00%
=======================================
  Files           3        3
  Lines          56       56
=======================================
  Hits           42       42
  Misses         14       14

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 47a8386...3a65183. Read the comment docs.


Future

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

Why is closed

I need help for my msn email access

This is inappropriate for this repo


[docs]: translate hertz/tutorials/basic-feature/bindAndValidate

zh web page：https://www.cloudwego.io/zh/docs/hertz/tutorials/basic-feature/binding-and-validate/
zh doc：https://github.com/cloudwego/cloudwego.github.io/blob/main/content/zh/docs/hertz/tutorials/basic-feature/binding-and-validate.md
en folder：https://github.com/cloudwego/cloudwego.github.io/tree/main/content/en/docs/hertz/tutorials
Notes:

Do not change the original layout, code style or content sequence.
Software Translator is a tool, not god, do not use the result as the final result.
Translation principle: faithfulness, expressiveness and elegance.
Submit your PR here in this repo.

I can translate it.

This PR has been merged. Thx!


minor updates for GeoFormatTypes 0.4

Codecov Report

Merging #265 (0bb3ecc) into master (384ec4b) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #265   +/-   ##
=======================================
  Coverage   85.23%   85.23%
=======================================
  Files          37       37
  Lines        2634     2634
=======================================
  Hits         2245     2245
  Misses        389      389

Impacted Files
Coverage Δ

src/sources/gdal.jl
91.81% <ø> (ø)

src/sources/grd.jl
96.55% <ø> (ø)

:mega: Codecov can now indicate which changes are the most critical in Pull Requests. Learn more


Bugfix to delete non-exisiting shopcart

Made the following changes:

fixed bug to delete a non-existing shopcart
updated thunder collection to point to port 8080

Good job!


Add update_report_spec imported from update_result_spec

ref: https://github.com/quipper/sbpayment.rb/pull/25#issuecomment-163198666

Thanks. released as v0.4.1.

released as v0.4.1.

Thanks!


console output optimization

Avoid console printing warnings when vf filters are not present.

Hello, i have commit b2c846cee99fabaa47445ea9f4ee2409fb125ce8 to handle this, thanks for the PR.

Hello, i have commit b2c846c to handle this, thanks for the PR.

that commit is better.


fusermount: exit status 1

Well, I install keybase client on Ubuntu16.04 manually , when I run "run_keybase", it tells me  KBFS failed to FUSE mount at $HOME/.config/keybase/kbfs: fusermount: exit status 1, please give me a little help with it, thanks

Could you run_keybase and then keybase log send in terminal? Thanks.

@heronhaye Sure thing, The log ID is 12b908cf5904e889d936c11c

It seems your device does not support FUSE. Is it a chromebook or something similar?

Same issue when running on WSL, with log ID 9ceb8e8047ef8026877e871c

@SOF3 WSL doesn't support fuse either. You can still use KBFS with keybase fs commands or in the GUI.

I'm having the same issue, using kali-linux under windows with WSL2 which does support FUSE (see https://devblogs.microsoft.com/commandline/announcing-wsl-2/ -- "This introduces a whole new set of apps that you can run inside of WSL. Some exciting examples are the Linux version of Docker, as well as FUSE!")
log id:
56c03d046f2eded33682f41c

Log ID in WSL v1   1f6affc882940e220d0e5a1c

I get this error when I try to run keybase on AWS CloudShell... which does not have FUSE when I do a modprobe fuse.
modprobe: FATAL: Module fuse not found in directory /lib/modules/4.14.294-220.533.amzn2.x86_64


nixos/i2pd: update addressbook subscriptions

Description of changes
Follow the upstream update in the default PurpleI2P/i2pd addressbook subscriptions from 2021-01-27
Minor and trivial change
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

I'm quite puzzled why upstream replaced inr.i2p with reg.i2p as default. inr.i2p is still being actively updated and includes much more domains (775 vs 108).

@curbengh I don't remember exactly, but there were some inconsistency at the time. I think  inr.i2p didn't carry reg.i2p address or something like that. It all resulted in being unable to resolve torproject.i2p, that's basically the whole reason why I opened this PR.
As for the upstream reason, I wouldn't know, maybe it was the above, maybe having fewer domains in the root node is actually beneficial, with faster loading, or something like that.

Closed in favor of https://github.com/NixOS/nixpkgs/pull/208451


Design Review for EV

Type

[ ] Bug fix
[ ] New feature
[x] Improvement to existing feature

Related JIRA Issue(s)
ENSWBSITES-1319
Description
The design review of Entity viewer resulted in a long list of changes that needed to be made.  I have made styling changes according to what was suggested in this listed (mentioned in the JIRA ticket). Please do refer to the ticket if you are interested in which changes were required to be made.
Also, I made a few coding changes to GeneExternalReferences, as I found the different naming slightly confusing (e.g. xrefs and externalReferences). This was along with the changes made to replace using accordions with ShowHide as suggested by @azangru.
TODO:
1. Fix font-size in GeneOverview
2. Do we need to indent SidePanel to the right?
3. Orange grid line
4. Broken tests
Deployment URL
https://design-review-ev.review.ensembl.org/
Views affected
Entity viewer
Other effects

[ ] I have checked any requirements for Google Analytics
[x] I have created any required tests
[ ] The PR has as its final commit a WASM/JS update commit if any Rust files were updated.

The disabled Download button looks more prominent than in the XD (this is currently in production, so wasn't introduced in this PR):

vs XD:

Text color of the active button is now wrong:

@azangru I've made those changes with the latest commit

Do we need the increased complexity of the loading button? Won't this work:
// InstantDownloadButton.tsx

import classNames from 'classnames';

...

const buttonClass = classNames({
  themeDark: props.theme === 'dark',
  disabled: props.isDisabled
})

return (
  <LoadingButton {...props} className={buttonClass}>
    Download
  </LoadingButton>
);

/* InstantDownloadButton.scss */

.themeDark {
  border-color: $dark-grey;
  color: $dark-grey;

  &.disabled {
    color: $white;
  }
}


Update scalac-scoverage-plugin to 2.0.11

About this PR
📦 Updates org.scoverage:scalac-scoverage-plugin from 2.0.10 to 2.0.11
📜 GitHub Release Notes - Version Diff
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.scoverage", artifactId = "scalac-scoverage-plugin" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "org.scoverage", artifactId = "scalac-scoverage-plugin" }
}]

labels: library-update, early-semver-patch, semver-spec-patch, version-scheme:early-semver, commit-count:1

Codecov Report
Patch has no changes to coverable lines.
:loudspeaker: Thoughts on this report? Let us know!.


Make zpmhub compatible with both new and old version of zpm

Hi @bg-ssh
Background
InterSystems is planning to release a new version of IPM (previously known as ZPM). We made some breaking changes in this release, including renaming of packages and classes. Since your package references one or more of such renamed classes, we would like to help you update your package so that it's compatible with both new and old package managers.
Testing
Older Versions
You can test that this PR works on older versions (ZPM v0.7.1 and earlier) by running
zpm "load https://github.com/isc-shuliu/zpmhub"

Newer Versions
You can also test the PR on our unreleased new package manager by running it in a container
git clone https://github.com/intersystems/ipm
cd ipm
git checkout v1
docker compose up -d
docker exec -it ipm-sandbox-1 /bin/bash

Then, in the docker container, run iris session IRIS to enter iris shell
do $System.OBJ.Load("/home/irisowner/zpm/preload/cls/IPM/Installer.cls", "ck")
do ##class(IPM.Installer).setup("/home/irisowner/zpm/")
zpm "repo -delete-all"
zpm "repo -reset-defaults"

Also, since the newer version of IPM is installed on a per-namespace level, you may want to enable package mapping if your code touches other namespaces.
Finally, you can run
zpm "load https://github.com/isc-shuliu/zpmhub"

to verify successful installation.
Let me know if you have any questions!

Thanks Shuheng


merge package from arlac77/npm-package-template

package.json

chore(package<EMAIL_ADDRESS>

Codecov Report

Merging #361 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #361   +/-   ##
=======================================
  Coverage   33.33%   33.33%
=======================================
  Files           5        5
  Lines          93       93
=======================================
  Hits           31       31
  Misses         62       62

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e43c9e6...f569843. Read the comment docs.

Coverage remained the same at 29.204% when pulling f569843b6e0167e1924b59f4c2528f5e2be0d059 on template-sync-1 into e43c9e6a341c62e05e47d1cf9517f43c1ba52f2d on master.


Import information from Spreadsheet of Existing Projects

As a customer, I may have a spreadsheet that has a list of projects I would like to import. Please either import the data or give me an import tool.
Matt has a copy of the data.

This has been merged, but need to test it on live

Done


How to make the log tiny (compact mode)

Hey guys,
thank you for this great tool. But I did not find out, how it's possible to shrink the output.. it's nearly impossible to debug something in the console.
I read the documentation, but I am not able to get it.
I want to have somthing like:
import * as morganLogger from 'morgan';
app.use(morganLogger(process.env.LOGGING_FORMAT || 'combined'));

Is that possible without adding another X dependencies?
That's what I have atm:
app.use(requestReceived);
app.use(responseTime());
app.use(requestId());
app.use(cabin.middleware);

You can use the environment variables SHOW_META, SHOW_META_APP, and OMIT_META_FIELDS.
You most likely would want to set SHOW_META_APP=false to disable the application parsed information.

Reference Axe documentation (ref #152)


Task Running

Choosing a Task Runner for the Cloverfield Boilerplate Scaffold
Cloverfield aims to create a next generation JavaScript project boilerplate. That means we'll use the tools that coders in-the-know will be using over the next 1 - 3 years. We're starting with the 2016 edition. Read more.
The JS community has been splintering when it comes to task runner consensus. For a while, Grunt was the clear winner, but that isn't the case anymore. We need to make a decision on one of these options, because many of our generators are going to produce some sort of task runner config. Please do some research and weigh in by answering the questions below.
Gulp and Brocolli have entered the community radar, and there is a growing trend to lean more heavily on Unix pipes instead of Node streams or the heavy file i/o typical of Grunt setups.
And the long-time reigning champion that's been a part of Unix since the time of the ancient grey beards is starting to make inroads. See Building JavaScript Projects with Make.
Oh, and npm has a built-in task runner that lets you easily leverage Unix pipes. Substack thinks that's the way to go, and he's not alone.
This is a pretty confusing landscape for those who haven't investigated all of these possible solutions, so lets try to lay out the pros and cons of each.
Questions

What's your pick?
What's the main reason you use it?
What are the other advantages?
What are the disadvantages?

Greener fields

If you could change one thing, what would it be?
If you could only keep one thing, what would it be?

Having episode with Grunt, Gulp and Broccoli, my current go to is Broccoli. Mostly because I'm always setting up front-end build processes, testing and dev workflows and Broccoli was engineered specifically for that problem space. It's faster to deal with during dev builds than grunt, and there's generally less noodling with the Brocfile than I'd have to do with the others.
The downside is it's not as general purpose as the other two. But that's also the upside got me at least.
Grunt has the most mature community, but is dirt-slow.
Gulp is faster than grunt (usually), but you end up doing a lot more work to set up your workflow than you will with Broccoli because of Broccoli's built in server and watching. At least if your developing UI.

If I were doing something more general purpose, I suspect I'd use Gulp ATM.

+1 for npm's task runner.
I have found that Grunt files become unwieldy on large projects and is slower than Gulp. Having used Gulp on recent projects, I found that there are some cool ways to better organize your tasks, but a number of plugins tend to violate the Gulp guidelines and you need to research the good modules to create optimal Gulp recipes. Broccoli looks cool, but if you are looking for something that works equally well on *Nix and Windows, it doesn't appear to be quite ready for Windows.
For me, each of these task runner tools create an extra layer that can be solved simpler by just utilizing npm run per Substack. Sticking with npm eliminates the need for additional dependencies which will reduce the overall boilerplate footprint and create a low barrier of adoption for those already familiar with Node.

Makefiles
I've said it before; Using a "flavor of the month" tool for a project that is meant to last a long time is a bad idea.
Everything you can do in grunt/gulp/taskjs you can do in Makefiles, with the added benefit of decades of backing, knowledge, tutorials, and examples already out there. Given it's cross-project and cross-language, it allows others who may not be 100% familiar with JS build systems to get up and running quickly - one less tool to learn (I'm assuming most decent develops know Make already).
If not make, then npm task runners would be my second choice. Because these can be simple calls out to a bash script that does what a Makefiles would have done for you otherwise. (And besides, Makefiles often call out to external scripts anyway - it's the Unix Philosophy!)

@jesstelford

"(I'm assuming most decent developers know Make already)."

You assume wrong. The majority of developers, particularly web developers, either don't have a build process or have their build processes handed to them by IDEs like Visual Studio. More importantly, they have absolutely no reason to know what a make file is, let alone how to write one. That doesn't make them bad developers.
I see nothing wrong with Make, and I applaud the spirit of the suggestion, people are too happy for shiny things. But using Make with JavaScript projects is more "flavor of the month" (ala hipster) than anything else these days. It's pretty rare to see a JS project using Make, in my experience. If you're looking for "tried and true" in JavaScript-land, Grunt or simple npm run scripts are most likely your gotos.

@blesh Thanks for calling me on that statement. I have a bias toward Make since I come from a C/C++ background.

have their build processes handed to them by IDEs like Visual Studio.

Even more reason for using Makefiles; VS has a Makefile Project Wizard built in, whereas the others require a plugin to be runable from within the IDE.
Although, but implying the majority of web developers use VS disregards the large numbers of devs who work in *nix environments (Linux, OSX, etc).

It's pretty rare to see a JS project using Make

I was curious, so I did some basic searching on Github;

99,548 references to .js inside a Makefile
436,468 references to grunt in either grunt.js or gruntfile.js
72,380 references to gulp in either gulp.js or gulpfile.js

If my search-fu is correct (it probably isn't), it shows Grunt as by far and away the most popular build tool for Javascript, but Make still comes in before Gulp.

Make has been around for decades and is still in constant use. There is a TON of tooling for make. Most IDEs either know how to assist you with make files, or have plugins that do. It's true that few JavaScript projects use it, but some do, and it may be worthwhile to encourage Make to spread in the JavaScript ecosystem.
Contrast with Grunt, Gulp and Brocolli, the only one with a large ecosystem is Grunt, and it's quickly going out of fashion. Gulp and Brocolli are new things to learn for most JS developers. As long as you have to learn something new, shouldn't you have some assurance that it will still be useful in 2017?
I think make and npm are the only safe bets available today...
That said, make is something new to learn for many JavaScript developers.
Maybe we should stick with npm as the standard for minimal projects, and generate a makefile with our scaffolding. That way, digging into make is opt-in, and developers who don't want to can use simple commands like npm run build.
Thoughts?

Just gonna leave this here: https://gist.github.com/substack/8313379

My vote is for Gulp.  It is something new to learn, but it is very intuitive.  A Gulp File is very easy to read an understand what is going on.  I have to agree with @clohr that you have to do research to find the good plugins/scripts because the community is still small.
I do like the sound of make though.  I personally never considered using it with JS.  I'm going to have to look at a few examples.

@ericelliott

make is something new to learn

Arguably, so is Grunt, Gulp, etc - their syntax can be (almost) as opaque as make at times. I whole heartedly agree with it may be worthwhile to encourage Make to spread in the JavaScript ecosystem.

generate a makefile with our scaffolding

Now you're talking about implementing autoconf / cmake. I'm not so sure that's a good route to go down (it's the equivalent of implementing a gruntfile-builder package that autogenerates your gruntfile.js based on gruntfilelists.txt :P)
It's always possible to alias npm tasks to make targets:
// package.json
{
  "scripts": {
    "build": "make build"
  }
}

That way, it feels familiar to a JS user who might not have seen make before, but doesn't otherwise care about what make / Makefiles actually are.
@cswenor
Check out Building javascript projects with make for a great intro ;)

One thought I have about using make is that it is a new language.
If I imagine myself giving a Junior Developer that has started learning with JavaScript and they see this and see it is a completely different syntax they might be spooked a bit.
Just a thought.

I think we may be missing an important point... build processes are not necessarily appropriate for beginning developers to be tasked (pun intended) with writing. Build processes are more a "devops" thing than a "junior javascript developer just joing the team" kind of thing.
That's not to be elitist and say that non-devops devs shouldn't be able to understand and even help manage these things. I'm just saying in the spectrum of important influences on choice of build systems, I wouldn't say "immediate familiarity to a junior dev" is high on my list.

@getify

I wouldn't say "immediate familiarity to a junior dev" is high on my list.

The caveat to that is; We may encounter non-junior / intermediate / senior devs who have never used Make before, but want to use the cloverfield project (in a way which requires altering the build system). In that case, I'd argue that forcing them to use/learn Make is a good thing, but it's almost guaranteed to turn some people off. The same way that using Grunt over Gulp might turn some people off, etc.

I'd say "ability to use/execute the build system" and "ability to configure/customize/write the build system components" are two separate and almost orthagonal concerns.
From my limited perspective, it seems the former is more what's at concern here with sentiments like "almost guaranteed to turn some people off". So I think the more important question there is what is the interface to the system, and how accessible is it to those with less experience. I can't imagine npm can be beaten in that respect.
What it runs on under the covers should be debated separately, and the focus should be IMO less on "ease of familiarity" and more on "right fit". I linked to "task.js" earlier because for me, writing JS code to build my JS code is the most natural fit. If you're at a PHP shop, though, I bet PHP is the more natural fit. Same with a perl shop.
I personally don't feel like make is a natural fit in such environments, but I also wouldn't turn to bash scripting (anymore, now that I have node) so I recognize if you're purely coming from the sysadmin/devops PoV make and bash are pretty natural.

Well thought out and articulate points!
As I said earlier, I have a C/C++ background which gives me a favourable bias towards make, to an extent that I still haven't bothered learning Grunt / Gulp / etc, as I am yet to see a benefit for me. For others, I can see how keeping it JS would be beneficial.

I agree that JavaScript feels like a more natural fit.  So whatever is selected should be JS.

I think we may be missing an important point... build processes are not necessarily appropriate for beginning developers to be tasked (pun intended) with writing. Build processes are more a "devops" thing than a "junior javascript developer just joing the team" kind of thing.

:+1:
Yep. Let's clarify what our typical build system is trying to achieve:

Simple dev command that watches files for changes, then rebuilds only what needs to be rebuilt
Example that transpiles from ES6 or CoffeScript, configurable to do so with or without sourcemaps
Build CSS system with sprite generator
Lint on build and display results in that dev command console output
Run smoke tests on change
Full build command that kicks off cross-platform testing (e.g. Sauce Labs cloud testing)
Am I missing anything?

What we really need is TodoMVC for build systems
Let's actually set up builds using the top contenders. Let's pick the Backbone TodoMVC source (we're not actually building an app here, this is an arbitrary, meaningless selection, no bikeshedding) and whip up the contenders.
If you care about build system x, write a TodoMVC build with x and link to it here.
To make the timing meaningful, we should try to use all the same tech in all the contender build systems. These are arbitrary tech selections -- these do not reflect the tech we'll promote in Cloverfield. No bikeshedding about this stuff here, please. =)

ESLint with these rules (change the rules if it doesn't pass, not the JavaScript source.)
Concat JS and compress with Uglify
Run the CSS through node-sass
Run a couple tests with tape

Since we're JavaScript guys, we can kick off the build process and time the results using JavaScript. We can worry about the exact timing code when we have a couple builds to compare.
Criteria for judging:

Build times with an emphasis on repeat builds - the longer it takes to build during the dev process, the less productive developers are
Ease of use after the build system has been set up - this includes simple maintenance of the build config, e.g., how hard is it to add a task?

Note also, this isn't a spec race. We're all going to weigh in with our opinions, which are informed by the somewhat-objective results.
The fastest build is not an automatic winner, but it will help if we have some data backing our opinions up.
Let's get building. =)

Now you're talking about implementing autoconf / cmake. I'm not so sure that's a good route to go down (it's the equivalent of implementing a gruntfile-builder package that autogenerates your gruntfile.js based on gruntfilelists.txt :P)

Nope, I'm talking about running a single command to, for instance, add a CSS sprite compiler to the build, rather than choosing the tech, downloading the libs, and adding to the makefile manually.

I think the more important question there is what is the interface to the system, and how accessible is it to those with less experience.

Absolutely agreed. :+1:

I think we should keep it simple. Use npm as the standar for minimal projects and generate a bash script with #!/usr/bin/env node so we can write JS bash as shown here https://gist.github.com/substack/8313379

I agree that JavaScript feels like a more natural fit. So whatever is selected should be JS.

One thing I love about npm is that anything can be an npm task, and as long as it reads from stdin and writes to stdout, it's easy to pipe tasks together without slowing things down. For me, that stdin->stdout composability of tasks is a worthy consideration. That pretty much rules out grunt. Gulp kindof does that with the streaming API if people write their streaming code properly...

I think we should keep it simple. Use npm as the standar for minimal projects and generate a bash script with #!/usr/bin/env node so we can write JS bash as shown here https://gist.github.com/substack/8313379

This is totally doable. I LOLed at Substack's task.js. I think what's less important than the tools is that we support a high-quality workflow for developers.

There should be a dev mode that watches files and rebuilds when needed
In dev mode, syntax problems and any critical unit test breakages should alert the developer with clear errors
It should be trivial to kick off a full build and run the full test suite
What else?

Note, this is pretty basic stuff that just about every task runner should have lots of clear examples for. I'm totally cool with npm, and I don't think we'd get much backlash if we make that the standard, as long as the npm examples exit with an error status for continuous integration...

There's a larger problem at play here in my mind:
There are two camps:

Ivory Tower JS Developers - These are people that are completely out of touch with the mass majority of JS hackery going on in the world (see 2). They always use task runners, they set up builds, they use Travis CI, and they consider it all "easy" and "second nature". They live and work in bubble environments with others who are experts in their own right, and frequently discuss things like Make, Rake, JSLint, Istanbul, etc, with like-minded peers. Some of them don't even consider themselves to be in an Ivory Tower and wonder how everyone else is missing out on what they already know and have accepted as common place.

Common JS Developers - These aren't "Junior Developers", at least in title. These are people who might even be extremely skilled developers in other languages, who generally view the web as "another UI". Or maybe they're people who started off with JS because they wanted to add some piece of functionality to a website they were making pretty for some small midwestern company. Sometimes they were the guy tasked with maintaining a website for a few years, and now they're being asked (6 years too late) to make the company website "more Web 2.0". Maybe they're someone who just never had the good fortune of being exposed to newer technologies, so they're maintaining an old ASP Classic or PHP app, and now they have bigger aspirations.  Either way, this developer probably has never heard of Make, Grunt, Gulp, Rake, etc, or possibly even Node. They're interested in improving the tooling around their growing JavaScript work load, but have no idea that they can set up builds.

The problem is that for people in category No. 2 above, the concepts and learning curves for all available technologies are daunting to say the least. They probably don't have access to mentors or even know were to look.
So to what @getify was saying earlier that "Junior devs shouldn't be setting up builds" (paraphrasing), I'd say "that's only because it's so hard right now that they can't". Proof: A junior dev can build and deploy a C# project with the click of a mouse in Visual Studio.
Furthermore, because they "shouldn't" doesn't mean they aren't going to try. And if they're going to try, it should be easy for them.
Now I'm not saying the JS world should strive for "click to deploy". But I am saying that the available tooling isn't approachable or ergonomic enough, and that's why a "Junior Dev" can't be trusted with it. Not necessarily because the core concepts are hard.
Personally, I think the work that @stefanpenner has done with Ember-CLI (built atop BroccoliJS) is absolute genius, and the larger JS community should strive to build upon that idea.
What I think is a bad idea is getting all neckbeard about "what people should be using because it's the old way and it's 'established'". The old ways are good, and we should remember them, but they're not progress, and it's the inadequacies of the old ways that gave birth to all of these new task runners. If Make were perfect, Rake wouldn't exist. If Rake were perfect, Grunt wouldn't exist. Grunt, Gulp; Gulp, Broccoli. And so on.

There should be a dev mode that watches files and rebuilds when needed

In dev mode, syntax problems and any critical unit test breakages should alert the developer with clear errors
It should be trivial to kick off a full build and run the full test suite
What else?

I think that all these tasks are better explained here: http://blog.keithcirkel.co.uk/how-to-use-npm-as-a-build-tool/

In closing, I'd like to offer exactly zero solutions to the problems I've presented.
（╯°□°）╯︵ 🎤

@ericelliott
Great idea - I'll see what I can do to put together a make example (although I do have to say; make's power really comes into play when there are a lot of files that need expensive compilation steps due to its intelligence in avoiding recompilation of untouched files).
@heltonvalentini
That's an excellent post, thanks for linking it - it even opened my eyes to some things I didn't know npm's task runner could do :)
@blesh

what people should be using because it's the old way and it's 'established'". The old ways are good, and we should remember them, but they're not progress, and it's the inadequacies of the old ways that gave birth to all of these new task runners.

I dispute the claim grunt, et al came about because of deficiencies in make. Can you point out what it is that Grunt / Gulp / etc can do that make can't?
I would rephrase what you said to be:

The old ways are good, and we should remember them because they have already solved the problem, and it's the inadequacies of the these new task runners which make that so obvious.

I think that all these tasks are better explained here: http://blog.keithcirkel.co.uk/how-to-use-npm-as-a-build-tool/

Yep. I'm aware of that. What Cloverfield will be is something that takes most of the work and hard choices out of that. Things like which test suite should we use? Well, that kinda depends on your framework choice, right? For instance, I think if you're using Meteor, you really only have one choice that integrates well with meteor, but shouldn't $ cf test install and scaffold the right test tools for you?
This implies that Cloverfield should support multiple frameworks, and that the framework selection you make will have an impact on what Cloverfield does.
Before any of you go crazy investing a lot of time in this, let me make it clear:
Cloverfield is about supporting the future, not the framework of the minute. If you're happy with ember-cli, continue to use ember-cli and ignore this project.
When you eventually realize that the web is eating all software because it's built on standards that have lasted the test of time, we'll welcome you back, and hopefully, somebody will have extended Cloverfield with some pretty nice Ember 6.0 support.
 They're getting shot in the head by Angular's team next year.
...But I do consider it important to think about how we might scaffold web components such that they're easy to use with Angular, or React, or Meteor.
=)

@blesh

this developer probably has never heard of Make, Grunt, Gulp, Rake, etc, or possibly even Node. They're interested in improving the tooling around their growing JavaScript work load, but have no idea that they can set up builds.
"that's only because it's so hard right now that they can't"
available tooling isn't approachable or ergonomic enough
Not necessarily because the core concepts are hard.

The thing is, they are hard. And we make them hard as a conscious choice. Technically, the only think you need to run a javascript project is node index.js.
It's us as the developers who are looking for more advanced options / features that don't exist by default who decide to add an extra tool or two or twenty. It's about the trade offs we make there - more complexity at build time for (possibly) better developer productivity during coding time, and (possibly) better performance at run time.
A junior dev / someone new to JS would not be making those choices because they shouldn't need to. It's only when they get sufficiently advanced enough that they should be doing it. At that point, it's reasonable to assume they're able to learn another tool chain (Gulp / Grunt / Makefiles / etc), and that the tool they learn will be the one they stick with. This goes back to @ericelliott's implication that cloverfield will eventually influence what a new JS dev learns as the 'standard' tool.

Proof: A junior dev can build and deploy a C# project with the click of a mouse in Visual Studio.

Counter-proof: A junior dev can run a javascript application by running node index.js

@ericelliott

Cloverfield is about supporting the future, not the framework of the minute. If you're happy with ember-cli, continue to use ember-cli and ignore this project.

In that case, I put forward Makefiles once again. It has withstood the test of time, and is usable with every "modern" framework of the minute, and will continue to be usable with whatever new frameworks come out in the future. npm, Grunt, Gulp, etc, are still all young, may change, and may go the way of angular directives. Make will not.

npm is young compared to make, but it's been around almost since the beginning of Node, and it's the gateway to the single largest module repository in the world with the most active developer ecosystem in the world. I think it's a fair bet that npm and npm run will still be around and popular 3 years from now.
Of course, those npm scripts could just be calling make commands, and I'm happy to go that route if that's the concensus the Cloverfield community reaches. I'm eagerly looking forward to your TodoMVC build with Make. =)

My version of old vs young:

The old ways are good, and we should remember them, because they have already solved the problem. The young ways are good, and we would not have progress without them, but new tools do not guarantee progress; they sometimes even revert earlier progress.

I use Grunt because of its relative maturity, large plugin ecosystem, and broad scope as a task runner. Broccoli looks interesting. The partial re-build feature is something good that there is no easy way to replicate in Grunt.
I agree that the npm task runner is good as a starting point, but I don't know how easily I could duplicate my Grunt config for a complex project using npm run, and I don't know how it solves the partial re-build problem.
I like Make. Will Windows users be less inclined to use the platform with make as the build tool, and if so, is that an important factor in the decision?

@jesstelford

Can you point out what it is that Grunt / Gulp / etc can do that make can't?

They can be written in JavaScript and require no knew syntax knowledge, and should be pretty seemless for any developer with Node experience to acclimated themselves to. Make, will never be able to claim those things. It may as well be Rake in comparison. Great tool, wrong language.
@ericelliott

Cloverfield is about supporting the future, not the framework of the minute. If you're happy with ember-cli, continue to use ember-cli and ignore this project.

 I don't think you quite understand what I'm saying. I'm not saying "Make Cloverfield support XXX framework"...
FWIW: I build non-Ember things all of the time with Ember-CLI. RSVP.js is built with Ember-CLI. It's just an abstraction on top of BroccoliJS, but it provides some nice features for development and builds. It could be a lot better though.
The reason I brought up Ember-CLI is because it represents an effort to add good tooling around setting up builds.
It's just a shame it's not generic enough to suit more needs. I'd presume that's what this effort is.
If you really want me to "ignore this project", make a JavaScript build process that runs in some other language. Something like that would have to be beyond amazing, feature wise, just to garner my attention. If we were talking about Ruby or C#, I'd want my build setup to be done in those languages. Otherwise it's just shitty ergonomics. Expecting X language developers to know Y language to build X language is just yuck, even if it's "not hard" and "it's been around forever so people should know it".

Make, will never be able to claim those things.

It might if we provide great tools to generate the make config.

Yep. We're on the same page here.

FWIW: I build non-Ember things all of the time with Ember-CLI. RSVP.js is built with Ember-CLI. It's just an abstraction on top of BroccoliJS, but it provides some nice features for development and builds. It could be a lot better though.

What are your favorite things about it that we should definitely do?
What should we definitely do differently?

Expecting X language developers to know Y language to build X language is just yuck, even if it's "not hard" and "it's been around forever so people should know it".

I agree. We're not gonna do that. Even if we decide to use Make under the covers.
So, Ben, what does your ideal build system look like? Do we get to see your TodoMVC contribution next?

@jesstelford Thanks!
Where's the watch task? (aka interactive dev mode) =)

@ericelliott

Where's the watch task? (aka interactive dev mode) =)

I have added a watch-build target to the Makefile example, as outlined in jesstelford/cloverfield-build-make#1:

make watch-build

Will use the npm watch package, and spin off two processes (one watching js changes, the other watching css changes), which can be terminated with Ctrl-C.

@jesstelford I'm not sure why, but I can't seem to get make watch-build to actually rebuild anything. Check the open issues. =)

Hey @ericelliot I think the idea of comparing task runners in the same way todomvc compares frameworks is an awesome idea. It would be enlightening even beyond the scope of this project.
I think it is worthy of its own repo,  so if you don't start one I will. :)  It would be nice to have a basic set of files to "build" and a clear set of tasks to accomplish. With some clever requirements, it could also measure some interesting metrics for each approach (number of required dependencies, timings, etc).

@Flet / @ericelliott
I have created a "base" project which can be forked, and have the build tool added easily. This is what I used to build my make version, with all the make-specific stuff removed:
https://github.com/jesstelford/cloverfield-build-todomvc

I've created TodoTasks for this purpose.

@jesstelford Can you open a TodoTasks PR with your base project?

:+1: Open: https://github.com/ericelliott/todotasks/pull/1

Refer to the sample project, todotasks.
@jesstelford, could you help us clean up the repo and make it conform more to this suggested spec?

Not a complete answer to your questions @ericelliott but as someone who has gone through the build tool learning process recently (within the last year):
Make - I found learning Rake easy and intuitive. I'm sure Make would be just as nice to work with.
Gulp - Seemed cool at first but cryptic errors from the Node ecosystem turned me off.
Grunt - Definitely easy to learn and work with but I could see myself sometimes wanting the granularity and speed of something Gulp.
NPM - The moment I heard about npm run I tried it out and was immediately successful. It was very easy as I could lean on my existing experience with bash and node.
Brocolli - Haven't tried it.

Thanks Adam! Your perspective is very helpful. =)

I like the idea of ./task.js. Keeping it in javascript makes for portable tasks. I also like using code as configuration instead of mega large and confusing .json configuration blobs (grunt).

The problem with ./task.js is that every developer will have their own way of doing things. In order to encourage an ecosystem of best practices to flourish, it's necessary to establish some baseline standards.
Keep in mind that while Substack is a brilliant developer, he spends a whole lot of time building little one off, self contained, isolated modules. The purpose of this project is to ease the process of building complete applications. When you're working on a team (or for larger orgs, teams of teams!), it's really hard to keep everybody on the same page. If there's a prescribed way of doing things, that saves t * dn time where t = time and dn = number of developers on the team.
In other words, having no standards means that a lot of devs are wasting a lot of time reinventing the wheel. =) That's the problem that Cloverfield hopes to be able to solve for all application developers who decide to use it.

While I'm quite late to the party, I just wanted to throw in a vote for NPM. I'm working on a games platform that's all Node -- and only back end services -- so that obviates Grunt, and we're managing the majority of the work that we'd otherwise use Gulp for with Jenkins instead. NPM's "scripts" and "bin" facilities (via package.json) allow us to do anything we need a module to do to install, run, test, and clean up after itself.
To @blesh's point about there being two types of developers, I can hang with the best of JS experts that know the value of continuous integration and rabid testing and automation, but I'm also prepared, if necessary, to accept that JavaScript may not always be the best tool for a job. If that were the case for a given module, my second choice would immediately be make, because it can actually do all of the things that these other tools have been built to do. It just happens to be the case that most people don't like reading man pages to learn how to use things.
And then I read Building JavaScript Projects with Make, and I was like ... "uh, yeah, I can do that, too!"

@elrasguno Rock on. I love the feedback. I'm really liking the npm run option, and make sounds like a great backup plan for developers who want to dig deeper. :+1:

@jesstelford I just looked at your test.js and LOLed.

I have some open PRs in the todotests repo if anybody would like to review them, in order, please! =)

Cleaning up the base implementation example
Adding an npm example with build script

Note that in the npm example, the source gets compiled with Browserify and minified with working sourcemaps. It would be great if other build system examples could do the same.

@vivainio raised an interesting point in the existing scaffolding tools thread.

Gulp is fine on windows, make and 'npm run' are a no-go there.

It's true that both npm run and make both encourage more reliance on the operating system, and a whole ecosystem of tooling that may or may not be available in a Windows environment, whereas you're more likely to rely on cross-platform JS implementations using tools like Gulp and Broccoli.
Any thoughts on using npm run and make cross platform? Is this reason enough to avoid heavy reliance on these tools?
Does @jesstelford's make implementation of todotasks run on Windows? (I don't have a Windows box handy right now to test).

Interesting. @isaaks (of npm / node fame) just posted a makefile tutorial gist. Check it out!

@ericelliott ...and just the kind of example that won't work on Windows.

Being new to the game, for me a good way to monitor/fish out errors in my code when I'm in development is very important so I can easily auto rebuild and possibly leave the file non minified so I can find where the issues are.
Nodemon is very handy but I'm sure there is other solutions out there but been a bit of a newby, I've not had the experience to play with them all.

@Cmdv Check out the npm implementation in the todotasks repository.
It watches files for changes and automatically lints, rebuilds, and reruns unit tests on file saves. The build produces sourcemaps so you can easily find the source of bugs with correct filenames and line numbers.
Ignore the actual code -- the important thing about that repo is the process. Type npm run dev and you'll fire up the interactive developer console where you'll see the automatic task output. Then make a change to a file in the js/ directory, save it, and watch what happens in the dev console.
All of these tools support processes like that. The thing that's interesting about the npm implementation is that I was able to reproduce that process in a tiny fraction of the lines of code I used to do the same thing with Grunt.

Something else worth considering, at least for the npm approach, is that there are a lot of tools that aim to reduce even the npm scripts boilerplate. Some tools I'm enjoying recently for frontend:

wzrd for browserify + http-server
budo or beefy for watchify + http-server + LiveReload
standard for config-less style linting
testling or smokestack for running TAP in a browser

@mattdesl
I like the idea of mixing in wzrd or budo, assuming it's easy enough to integrate them into people's actual projects. They're a bit limited by default, but they're a great idea.
For the rest of my reply, see my comment in the tech selection thread.

Looks like we're going with npm scripts. Thanks for the lively discussions! =)

Hey everybody... I'd love your input on composable scaffolds. =)


As of 2022-02-22 Automatic detection of requesterPays buckets is failing

First observed on PR https://github.com/googleapis/java-storage-nio/pull/823 and visible in the integration tests related to Requester Pays (build results)
Environment details

this library
OS type and version: N/A
Java version: N/A
version(s): all released prior to 2022-02-22

Code example
https://github.com/googleapis/java-storage-nio/blob/417704a68c9fe8ad618300d23209364066bd9826/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/it/ITGcsNio.java#L310-L316
External references such as API reference guides
It seems the error message response changed subtly
- Bucket is requester pays bucket but no user project provided.
+ Bucket is a requester pays bucket but no user project provided.

According to public documentation, we should expect the reason to be userProjectMissing, however it is required as can be seen in
{
  "error": {
    "code": 400,
    "message": "Bucket is a requester pays bucket but no user project provided.",
    "errors": [
      {
        "message": "Bucket is a requester pays bucket but no user project provided.",
        "domain": "global",
        "reason": "required"
      }
    ]
  }
}

Related from NodeJS https://github.com/googleapis/nodejs-storage/pull/1791/files

I think the underlying issue is here.
https://github.com/googleapis/java-storage-nio/blob/fc0f8a1acecb7908849cfbfb3b1ad258f0787a32/google-cloud-nio/src/main/java/com/google/cloud/storage/contrib/nio/CloudStorageFileSystemProvider.java#L963-L975
It always falls into the catch block which then tries to match against that changed string.  I think it shouldn't be falling into the catch block and instead the call to get(bucketName) should include an option specifying the project name which should keep it from throwing an exception.  It seems like a bug that was previously covered up by the catch clause.
Boolean isRP = storage.get(bucketName).requesterPays();

Ignore that.  It seems that throwing the exception is necessary because it's attempting to find requester pays status without providing the user account to avoid access charges in the case where it wasn't requester pays.
It seems like there needs to be a more robust mechanism of determining if this is a requester pays bucket than scraping the exception message after trying to connect.  This mechanism also causes problems because it requires the somewhat unusual storage.buckets.get permission which is not necessary for reading the actual content of the bucket.  So users need more permissions than necessary when trying to read from a requester pays bucket because the test to see if it IS a requester pays bucket requires additional permissions than actually accessing the file they want.  This has caused continual confusion for our users.
Is there either:
A) a way to query the requester pays status of a bucket that doesn't require the user to be authenticated in the case where it is requester pays
B) a way to make this ignore querying requester pays status and just falling back to connecting with a user account when we get back an error that says it is requester pays?

This issue is unfortunately breaking large numbers of our production workflows. I hate to suggest this, but perhaps for now we could grit our teeth and add the missing "a" into the message it's looking for to get it working again, and open a separate ticket to research / implement a more robust mechanism for detecting requester pays status. Unless someone already knows of a more robust way?
Once a patch is in for this issue, would it be possible to get a release of the library with the fix?


ZEPPELIN-3065

What is this PR for?
Bug Fix: Zeppelin/ZEPPELIN-3065
Personalized mode does not allow multiple users to run the same paragraph at the same time
What type of PR is it?
Bug Fix
Todos

[ ] - Task

What is the Jira issue?
https://issues.apache.org/jira/browse/ZEPPELIN-3065
How should this be tested?

Simultaneously run same paragraph using two separate users in both personalized mode. Both users should get the results.

Screenshots (if appropriate)
Questions:

Does the licenses files need update? no
Is there breaking changes for older versions? no
Does this needs documentation? no

@srehmann , Thank you for your contribution. :-)
Can you modify the title according to the contribution specification?
https://zeppelin.apache.org/contribution/contributions.html

@liuxunorg https://github.com/liuxunorg,
Thanks a lot for your input. Actually this is the first time that I am
contributing to any apache project (many more in the future hopefully), I
asked for a few recommendations at<EMAIL_ADDRESS>without any
luck.
I have made all the changes, and ready to commit. Just wanted a
clarification on the title thing. You meant commit title or what?
Waiting for your swift response.
Regards
On Thu, Jul 25, 2019 at 7:36 PM Xun Liu<EMAIL_ADDRESS>wrote:

@srehmann https://github.com/srehmann , Thank you for your
contribution. :-)
Can you modify the title according to the contribution specification?
https://zeppelin.apache.org/contribution/contributions.html
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/apache/zeppelin/pull/3412?email_source=notifications&email_token=ACR5JRH532RVWKD6YGH3VXDQBG25VA5CNFSM4IGZ5RQKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD2ZVM4Q#issuecomment-515069554,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACR5JRA36S5FKKQ6JF52NNLQBG25VANCNFSM4IGZ5RQA
.

@srehmann , Very welcome to contribute your code, boldly try, we will help you. :-)

I have made all the changes, and ready to commit. Just wanted a clarification on the title thing. You meant commit title or what?

The title of the PR is generally the title of the ticket.
PR title => [ZEPPELIN-3065] Personalized mode does not allow multiple users to run the same paragraph at the same time

If the title is too long, you can abbreviate it.
PR title => [ZEPPELIN-3065] Personalized mode can't run multiple people at the same time

so, Please change PR title to [ZEPPELIN-3065] Personalized mode can't run multiple people at the same time

Moreover, when I will commit the reviews changes, what should be the commit message then?

I added a note to the comment.

@srehmann ,  You can follow my Comments, Modify the code in your IDEA, After modifying the code,
Committed by git commit, The PR here will display your modified code.

@liuxunorg I have done the changes and committed.

@liuxunorg I have done the changes and committed.

I guess, I have made a mistake here. I merged master into my branch and then pushed it. All master commits are now part of my commit I guess?

@srehmann , The branch code you develop needs to be kept at the top of all commit records.
Now your branch, because there is no rebase to the top, is currently unable to submit.

You need to save your modified code as a patch file.
To clean up your branch again, first make your branch and /apach/zeppelin commit records consistent, then apply your patch file and resubmit.

If you don't do the above, then you can:

Save your own modified code.
Re-create a new branch on the latest master branch;
On the new branch, modify the code;
Re-pull this new branch;

Before committing the code in the future, you have to execute it to ensure that your code branch is the top layer so that you can merge it.
git rebase upstream/master

Don't be discouraged, familiar with git operations, there will be no problems in the future. :-)

@srehmann You can close this PR and create another PR

Closing pull request and re-creating another for the same issue.


Fix link

This fixes some issues I discovered when linking an external lcms2 library.
For one, the order of the dependency libraries are wrong. They need to come after the library that needs their symbols.
Furthermore, lcms2 can be built split into multiple libraries. The easiest way to deal with that is to simply require its pkg-config file as a dependency instead of manually linking to its lib.

This will only look for lcms2 when static linking, don't you want it in any case? I.e. in Requires instead of Requires.private?

This will only look for lcms2.pc when static linking, don't you want it in any case? I.e. in Requires instead of Requires.private? Like it was -llcms2 in Libs instead of Libs.private? Or you're saying this should've been in Libs.private previously, clients of libjxl_cms don't access the lcms2 API directly anyway?

This will only look for lcms2.pc when static linking, don't you want it in any case? I.e. in Requires instead of Requires.private? Like it was -llcms2 in Libs instead of Libs.private? Or you're saying this should've been in Libs.private previously, clients of libjxl_cms don't access the lcms2 API directly anyway?

You want to link lcms2 if you are linking jxl as static library. If jxl is a shared library, lcms2 is either already built in (if it itself was static) or the jxl shared object will refer to its shared library all on its own.
And the usual place to put static-linking-only dependencies is in the XYZ.private variables, so that you don't end needlessly linking them when making a shared build.
It'd be in theory possible to alter the behaviour, depending on whether jxl is being build as a shared or static lib, but that seems like a bigger undertaking.

is this fixed by https://github.com/libjxl/libjxl/pull/3061?

Thanks for the contribution, @BtbN !


Virtual machine (for windows 64bits user): Missing password of esp user

The password of the "esp" user of the virtual machine should be written next to the link to download it.

same to https://github.com/espressif/esp-at/issues/413

duplicate


scylla_login: print warning message when no RAID disks available

Scylla AMI requires additional disks to construct data volume, so our
AMI image automatically attaches ephemeral disks for it.
However, some unsupported additional instance types does not supported
any additional disks, so AMI will launch without any additional disks.
On such environment, we have added readable error message on 37ec32c,
but it still only able to check on journalctl.
To warn users more clearly, add new warning message on login prompt.
Fixes scylladb/scylla#8501

ping

ping

ping


Add reference to TPU support

What does this PR do?
This PR makes a small addition to the readme that reference new TGI support for TPUs via Optimum TPU (https://huggingface.co/docs/optimum-tpu/howto/serving)

Thanks a lot !


🐛 Anime Reviews Endpoint return Null

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
No response
Expected Behavior
No response
Steps To Reproduce
No response
Environment
No response
Anything else?
As reported on discord: https://discord.com/channels/460491088004907029/1154915055725457428

Not a parser issue. Probably caching?

Not an issue...
https://api.jikan.moe/v4/anime/51009/reviews?spoilers=true&preliminary=true
The anime is still airing so you need to pass preliminary as true.


New language support suggestion : Portuguese

I would like to ...

[x] offer my help to translate this cheat sheet in another language
[ ] ask if someone can translate this cheat sheet in another language

What is the language you would see this cheat sheet translate ?
Portuguese

I can take this :)


Negative value expenses

User story
As a user creating an expense with multiple receipts I want to be able to add a receipt that has a negative value to accurately reflect a credit.
Best solution for this problem
Because the total amount of the expense is driven by the amount of each receipt, if one receipt is a refund, we throw an error message causing the user to do a workaround and reduce the amount of one receipt by the other that is a credit. This is not accurate or ideal for accounting or reporting purposes.
I’d like the expense to recognize negative numbers for an individual receipt if there are multiple receipts involved and the total is still positive.
Here is an example: https://opencollective.com/opensource/expenses/85662
This is common in scenarios where a service might pre-charge your account in one month for expected expenses and then offer you a refund in the following month for any amount that is unused.
MVP

user should be able to enter a negative value like "-1,324.00" in the expense value field
if the total of the expense is less than $0.00, we should not allow the user to save the expense and the UI should provide a warning that "An expense must be larger than $0.00"

Metrics
We should measure the number of receipts that are filed with negative receipts.
Documentation
A note should be added to the existing documentation about expenses noting that negative receipts are allowed:
https://docs.opencollective.com/help/expenses-and-getting-paid/submitting-expenses

Triage Template (team only)
This template is for members of the team to triage for prioritisation. For more guidance see https://www.loom.com/share/369ab467fbc64dec848085d38ff57ca0:
P1 high frequency, high impact
P2 low frequency, high impact
P3 high frequency, low impact
P4 low frequency, low impact
Examples of high impact - a problem affects users during an essential process (expenses and payments > onboarding and registration > contributing) with no workaround.
High frequency - >10% of users affected (measured as a proportion of total potential users for this case).

Different use case, but same need: https://github.com/opencollective/opencollective/issues/3044


feat: 🎸 add steam deck web app generator

Pull Request
Compile all the information written below to send a legitimate pull request to the repository!
Label:
This PR is labeled as:
Choose only one and remember to select the label even on the right.

[x] Feature
[ ] Bug
[ ] Other

Linked Issue
This PR has the following linked issues:

Closes #;
...

Solution
Adds Steam Deck Web App Generator website.

Website: https://steam-deck-web-app-generator.vercel.app
Repo: https://github.com/halitsever/steam-deck-web-app-generator

Thank you kindly for your contribution @halitsever, I deeply appreciate that!
Regarding your project: that's a neat and simple idea, congratulations.


Sometimes file types are not downloading all the time

Describe the bug
Sometimes files with py, json, and text extension are skipped from being downloaded
To Reproduce
Steps to reproduce the behavior:

udemy course url: https://www.udemy.com/course/python-for-beginners-learn-python-from-scratch
Run the following command to reproduce the error...
python udemy-dl.py https://www.udemy.com/course/python-for-beginners-learn-python-from-scratch/ -k cookie.txt -u my_emails_address -p my_password -q 1080 -o "../Udemy_-_Python_3_from_Beginner_to_Expert_-_Learn_Python_from_Scratch" --skip-sub
See error...
Asset : '006 arhitmetic-operators.py' (download skipped).
[-] : Reason : int() argument must be a string or a number, not 'NoneType'
or
Asset : '075 namesurnames.txt' (download skipped).
[-] : Reason : int() argument must be a string or a number, not 'NoneType'
or
Asset : '078 sample.json' (download skipped).
[-] : Reason : int() argument must be a string or a number, not 'NoneType'

Expected behavior
I expected the files to download like all other files (mp4, pdf, doc, txt, html, zip, py, json)
Screenshots
If applicable, add screenshots to help explain your problem.
Python Environment (please complete the following information):

OS Platform: [Ubuntu 18.04]
Python Version [2.7.17]

Additional context
First time seeing this occur and only with this course. Some of the py and txt files did download, but most were skipped. All naming conventions were the same for files successfully downloaded and for those that were skipped.
I manually downloaded a few of the files being skipped and opened them in vs codium. I didn't see any issues with contents of files i.e. not corrupt or empty files.
Any suggestions?
Update: It's happening on https://www.udemy.com/course/docker-tutorial/ as well.

can you reproduce the same with python3? i will remove python2 version in the up coming update soon.

I installed Python 3.6.9. You can't run the script with "python3", it has to just be "python".
So, I had to set an alias in my .bashrc (alias python=/usr/bin/python3) or else just using python to run the script would default to my python 2.7 version. I was able to then run python -V and the result was 3.6.9.
Anyway, I re-tried https://www.udemy.com/course/python-for-beginners-learn-python-from-scratch and again some of the .py files would not download and gave same error message.
For example two consecutive files: 021 loops.py downloaded ok, but 022 loops.py did NOT download. It's really weird and doesn't make sense as to why.
If you change coming update to remove python2, can you modify script to run with or accept either  the word(s) "python" or "python3". This will prevent confusion and avoid having to make an alias for those that have both versions of python (2 or 3) installed. Thanks!

hmmm then i might need your creds to reproduce and fix i cannot reproduce with the courses i have in my account or you can link any free course here which also causes the same issue so that i can fix it.

I don't that my alias took effect yesterday and when I ran the script again I think it was still using python version 2.7. Running "source .bashrc" or ". ~/.bashrc" from the command line doesn't truly reload bashrc even though python -V returned 3.6.9 (I think scripts were still running with 2.7). Because now that I have rebooted my computer and I run the udemy-dl script with "python" I am now getting the following:

Traceback (most recent call last):
File "udemy-dl.py", line 7, in
import udemy
File "/home/john/Downloads/udemy-dl-master_pythonVersion/udemy/init.py", line 32, in
from ._udemy import course
File "/home/john/Downloads/udemy-dl-master_pythonVersion/udemy/_udemy.py", line 26, in
from ._internal import InternUdemyCourse as Udemy
File "/home/john/Downloads/udemy-dl-master_pythonVersion/udemy/_internal.py", line 29, in
from ._colorized import *
File "/home/john/Downloads/udemy-dl-master_pythonVersion/udemy/_colorized/init.py", line 25, in
from .colors import *
File "/home/john/Downloads/udemy-dl-master_pythonVersion/udemy/_colorized/colors.py", line 25, in
from colorama import init,Fore,Back,Style
ModuleNotFoundError: No module named 'colorama'

I deleted the alias and rebooted my computer. Now python -V shows 2.7 again and the udemy-dl script runs without error.  It appears to me that udemy-dl doesn't like python3 (even if the alias labels python3 as python)....at least that's how it appears on my computer.
Is there a way to run udemy-dl with python3...for example....

python3 udemy-dl https://www.udemy.com/course/python-for-beginners-learn-python-from-scratch/ -k cookie.txt -u my_emails_address -p my_password -q 1080 -o "../Udemy_-Python_3_from_Beginner_to_Expert-_Learn_Python_from_Scratch" --skip-sub

I don't believe that my alias took effect yesterday and when I ran the script again I think it was still using python version 2.7. Running "source .bashrc" or ". ~/.bashrc" from the command line doesn't truly reload bashrc even though python -V returned 3.6.9 (I think scripts were still running with 2.7). Because now that I have rebooted my computer and I run the udemy-dl script with "python" I am now getting the following:

Traceback (most recent call last):
File "udemy-dl.py", line 7, in
import udemy
File "/home/john/Downloads/udemy-dl-master_pythonVersion/udemy/init.py", line 32, in
from ._udemy import course
File "/home/john/Downloads/udemy-dl-master_pythonVersion/udemy/_udemy.py", line 26, in
from ._internal import InternUdemyCourse as Udemy
File "/home/john/Downloads/udemy-dl-master_pythonVersion/udemy/_internal.py", line 29, in
from ._colorized import *
File "/home/john/Downloads/udemy-dl-master_pythonVersion/udemy/_colorized/init.py", line 25, in
from .colors import *
File "/home/john/Downloads/udemy-dl-master_pythonVersion/udemy/_colorized/colors.py", line 25, in
from colorama import init,Fore,Back,Style
ModuleNotFoundError: No module named 'colorama'

I deleted the alias and rebooted my computer. Now python -V shows 2.7 again and the udemy-dl script runs without error. It appears to me that udemy-dl doesn't like python3 (even if the alias labels python3 as python)....at least that's how it appears on my computer.
Is there a way to run udemy-dl with python3...for example....

python3 udemy-dl https://www.udemy.com/course/python-for-beginners-learn-python-from-scratch/ -k cookie.txt -u my_emails_address -p my_password -q 1080 -o "../Udemy_-Python_3_from_Beginner_to_Expert-_Learn_Python_from_Scratch" --skip-sub

the error says you don't have dependencies, install the dependencies for python3 first then it will work

the error says you don't have dependencies, install the dependencies for python3 first then it will work

LOL...yeah that would help wouldn't it?!?! :roll_eyes:
Ok, so I did that and was able to run python3 udemy-dl........................
Same issue(s), most of the .py, .txt, and .json files would not download and returned the same error as mentioned previously.
 I'm not worried about it though. I'll mess around some more and see what I can I can break.

I have the same issue "Reason : int() argument must be a string, a bytes-like object or a number, not 'NoneType'"
The problem happen when try download for example download video and assets called XXX.txt and sameXXX.txt.zip
On windows system, conda, and tested in python 3.7 and 3.8

i have added a label that i can't reproduce with the courses i have in my account, if you guys can share your credentials i will try to reproduce with the same course you downloading and will be able to fix it ASAP otherwise you will have to wait until i can reproduce  the issue on the courses i have.
Thanks

I have an account enrolled in a course having txt assets so this issue.
I sent the full details to<EMAIL_ADDRESS>from<EMAIL_ADDRESS>Let me know!

I have an account enrolled in a course having txt assets so this issue.
I sent the full details to<EMAIL_ADDRESS>from<EMAIL_ADDRESS>Let me know!

thanks bro i will check the email, try to reproduce and fix ASAP.

can confirm facing this same issue on a course i have , if @r0oth3x49 you were able to reproduce this issue using the account of the guy who emailed you then fine , otherwise just let me know   i will email you my account id_pass where you can reproduce it

I have an account enrolled in a course having txt assets so this issue.
I sent the full details to<EMAIL_ADDRESS>from<EMAIL_ADDRESS>Let me know!

i didn't get any creds on my email are you sure you emailed?

can confirm facing this same issue on a course i have , if @r0oth3x49 you were able to reproduce this issue using the account of the guy who emailed you then fine , otherwise just let me know i will email you my account id_pass or an active cookie directly where you can reproduce it

would be great if you can share your creds, i didn't received creds from any one yet, i managed to get the time out for fixing and upgrading tool, If you share it by today earlier then i will be able to fix this think as well.
email me on<EMAIL_ADDRESS>please share the following in email.

credentials
course url to reproduce the issue on.
issue type you are facing

I have an account enrolled in a course having txt assets so this issue.
I sent the full details to<EMAIL_ADDRESS>from<EMAIL_ADDRESS>Let me know!

i didn't get any creds on my email are you sure you emailed?

I did and just did again but this time from<EMAIL_ADDRESS>please check now and let me know

I have an account enrolled in a course having txt assets so this issue.
I sent the full details to<EMAIL_ADDRESS>from<EMAIL_ADDRESS>Let me know!

i didn't get any creds on my email are you sure you emailed?

I did and just did again but this time from<EMAIL_ADDRESS>please check now and let me know

git it now thanks man, please share the course url to reproduce the issue so that i can directly go for the fix instead of investigating where and on which course it is.

aah got that as well in the email sorry.

I have an account enrolled in a course having txt assets so this issue.
I sent the full details to<EMAIL_ADDRESS>from<EMAIL_ADDRESS>Let me know!

i didn't get any creds on my email are you sure you emailed?

I did and just did again but this time from<EMAIL_ADDRESS>please check now and let me know

got it now thanks man, please share the course url to reproduce the issue so that i can directly go for the fix instead of investigating where and on which course it is.

I already provided it in the email, but here it is again: https://www.udemy.com/course/design-patterns-csharp-dotnet/

@r0oth3x49 even through you got the already got the credentials to reproduce the issue , i still sent you mine for 2 reasons

it will be better to confirm on 2 courses once you have debugged fixed this issue.
This issue reported my here - https://github.com/r0oth3x49/udemy-dl/issues/529
It seems to be course specific and doesn't happen on all courses

So i sent my credentials so that you can take care of both the issues

Please check ,  you must have got this above email from<EMAIL_ADDRESS>

Beware, you made your account password public and everyone can now access
your Udemy account!
Le dim. 19 juil. 2020 à 17:34, xd003<EMAIL_ADDRESS>a écrit :

@r0oth3x49 https://github.com/r0oth3x49 even through you got the
already got the credentials to reproduce the issue , i still sent you mine
for 2 reasons

it will be better to confirm on 2 courses once you have debugged
fixed this issue.
This issue reported my here - #529
https://github.com/r0oth3x49/udemy-dl/issues/529
It seems to be course specific and doesn't happen on all courses

So i sent my credentials so that you can take care of both the issues
[image: Screenshot_20200719-115902_Nine]
https://user-images.githubusercontent.com/26503185/87868830-c46e9100-c9b7-11ea-8f39-8727d80eac14.png
Please check , you must have got this above email from
<EMAIL_ADDRESS>—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/r0oth3x49/udemy-dl/issues/524#issuecomment-660596484,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AH5KUB76R2WFOXYYYTBC2TDR4KHWVANCNFSM4OQA7ENQ
.

@r0oth3x49 Even through you got the already got the credentials to reproduce the issue , i still sent you mine for 2 reasons

t will be better to confirm on 2 courses once you have debugged fixed this issue.

This issue reported my here - #529 . It seems to be course specific and doesn't happen on all courses

Hence i sent my credentials so that you can take care of both the issues together
Please check , you must have got the email from<EMAIL_ADDRESS>

@Laiteux thanks for reminding me .Although i did by mistake and had edited it in seconds but didnt knew github keeps edit history as well

@r0oth3x49 Even through you got the already got the credentials to reproduce the issue , i still sent you my udemy account details for 2 reasons
1. t will be better to confirm on 2 courses once you have debugged and fixed this issue.

2. This issue reported my here - #529 . It seems to be course specific issue and doesn't happen on all courses

Hence i sent my credentials so that you can take care of both the issues together
Please check , you must have got the email from<EMAIL_ADDRESS>
okay now you don't need to worry i have deleted your edit revisions and people will only access the recent version of edit older ones are delete, please always make sure you don't share such things on public.
that's why i always ask to email instead. i will check the email.
what you can do is simply change your password right now and send me the new creds that would be fine

@r0oth3x49 sent updated password just now


Store topics in SQL instead of a JSON column

I like the approach :+1: Trying to reshuffle everything on a change would be much more complicated than blowing everything away and rebuilding.

@thehenster rereview pls

Merge when you're ready :+1:


fix: Character importer

#47  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @aMediocreDad and the rest of your teammates on  Graphite


GloSC not working for AC Origins

#Hey Peter,
thanks for you work, it enabled me to play Dragon Age with my Steam controller through Origin.
Now I just bought AC Origins outside Steam but can not get GloSC to work with it. That is: Only when I do a fresh install I get the game going one time (with controller hints). When I start the game again I get a error message that only flickers for half a second. I think it says something about no steam target?
I have to thoroughly erase GloSC (with Revo uninstaller) and than again install it to get it working again one time.  Could you tell me how to overcome this issue?
Thanks,
Ashish from The Netherlands.
(Windows 10, i5, AMD RX480 8GB)

Screenshot me that error message.
Also, have you tried not launching anything from your AC Origins shortcut and launching it manually afterwards?

Hey Peter,
thanks for your swift reply.
It took some effort but here it is:

Right now I get the game to work but I don't get controller hints....

Before I couldn't get the game to start through the direct path to the .exe file.
I had to go through the Uplay .exe file and then start AC Origins.
I just reinstalled Uplay...so a slight improvement but not the way you intented your software to work.
Thanks for your help!

Not launching anything from AC shortcut:
Do you mean disabling 'start game' option in GloSC?
How do a manually launch it afterwards? I think I don't understand your suggestion...sorry

That's no error message. Don't worry about it.
Yes, disabling start game from GloSC and then launching AC Origins from UPlay, from explorer. Like you would do without Steam / GloSC / whatever.
However, from what it seems, this is not a GloSC issue then, but rather a problem with the game itself.
Sorry

Hey Peter,
ok..I'll try that. I hope I get it working. I have this work thing the coming days but I'll try it Friday.
Anyway: Thanks again for taking the time to look in to it.
Grtz Ashish

Hi There!
I am having a very similar issue. I have tried just loading the GloSC app from steam but still get the below error message.  I can create another thread or provide anything else you might need.
Thank you!

Hey Peter,
you wrote:
'Yes, disabling start game from GloSC and then launching AC Origins from UPlay, from explorer.'
What do you mean by explorer? The Microsoft browser? Because non-steam games don't show up in the online steam library.
 -.-

Hey Peter,
just to inform you:
I think I resolved my issue, I used a community config for SC, when I changed to the standard gamepad template AC Origins recognized the controller. Somehow there's a difference between the two. Probably because the custom config was created with an in-steam copy of the game. Thanks once again for helping me out.


BUG: fixing the overflow on login page

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
I want to fix the overflow on the login

Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

How will you proceed ?

@hustlerZzZ Removing the backslash from the top left corner and adjusting the max-height and min-height of the main component

@hustlerZzZ Removing the backslash from the top left corner and adjusting the max-height and min-height of the main component

Ok start working