Provide API to integrate with custom servers

The main problem I have so far is that I have my own node server for the backend. I could run both that and the create-react-app server, but I think we've learned from webpack's dev server that it's not ideal to have to manage 2 processes.
Would you be open to exposing an API for this project in addition to the CLI? One option is for it to take an express server and add all the url handlers, but then you're binding yourself down to express which you probably don't want. Of course, if you moved away from express it'd be impossible to integrate with existing express servers anyway.
Isn't there a way for node's low-level http servers to be composed? If so, you could make sure that requests go through the dev server first, and then through the user's server. Theoretically that means the types of server's don't have to match (the dev server could be using express, the user's hapi).

What exactly is the problem with managing 2 processes? If you aren't using node on the backend, you'll have to have the dev server and your backend server as two processes anyway. And your database is probably a separate process already so you likely already are managing multiple processes for your development environment.
If it's just annoying to run multiple processes when you want to start development, I would suggest writing some sort of script around both of them rather than integrating the dev server into your backend node server directly - it just seems much less bug prone.

Most issues I saw with two separate processes were related to server rendering. Since this project doesn't support it I'm not sure I fully understand the problem but I'd like to learn more.
That said we should definitely make it as easy as possible to talk to another local or remote server. If there's something we're doing wrong (like CORS issues on our side? Somebody mentioned that in eject survey) we should fix that.

If you aren't using node on the backend, you'll have to have the dev server and your backend server as two processes anyway.

Sure, but using node is a hugely common scenario and I think it's worth at least thinking about.

And your database is probably a separate process already so you likely already are managing multiple processes for your development environment.

That's extremely different, if you're using an existing database it's not just a separate process but a whole different system that is not stopped when you shutdown or started when you start the server.
There are several small pain points: the URL of the bundle must include the full URL (to point to a different port), and if I want to look at the bundle that's loading it's more annoying that just going to "/bundle.js". More problematic is that multiple processes are always harder over time: deciding what to do when one crashes, making sure they all die when you quit, etc.
I just looked at the code, and I didn't realize all this was doing was using WebpackDevServer. It would be a significant change to get this working; you'd have a small express server and use webpack-{dev/hot}-middleware. But the integration point would be pretty simple:
if(DEV) {
  createReactApp.wrap(http.createServer(myApp)).listen(4000);
}

It takes a standard node server and returns another one that will intercept requests. It also allows some configuration like listening on a different port without actual configuration files.

@jlongster
I still don’t quite understand the pain points. Would it be too much for me to ask you to create a sample mini-project using a separate Express instance to guide me through the pain points on a specific example?

That's a perfectly reasonable request, and I'll try to do that soon (will be traveling for the next 3 weeks so not sure how much time I'll have). I think some of this is just from experience though and doesn't easily boil down to specific examples. Having the app be an atomic process just makes the experience "nicer".
I don't see why we should make it harder to integrate this project for various setups. What if I am doing server-side rendering? With the above API, I could still take advantage of all of the goodness from this project. The API does not violate the philosophy of it, I think, and avoid kludges like #85. I really want to adapt this and just not care about how it works, but without adding more complexity of handling multiple processes and making sure to load the bundle from http://localhost:3000/bundle.js instead of just /bundle.js (right now my index.html it static, doesn't event use a templating engine, so it's just annoying).

In a typical setup with a backend I think you would still want both http://localhost:3000/ and http://localhost:3000/bundle.js served from npm start. You would want some API to hit your backend rather than the dev server, though. The way I would want to set this up is to have some environment variable like "API_SERVER" that is different between development and production. In development the API_SERVER gets set to localhost:4000 and you run your node or rails or whatever process on localhost:4000. In production the API_SERVER gets set to api.yourserver.com, or you could have a nginx/apache layer that decides whether to serve a static file or not. I think currently you can use process.env.NODE_ENV for this; if that's a bit janky maybe we will need a better way to do dev vs prod environment variables.
That's how I'd configure a mini-project that used a backend. If you're doing server-side rendering then you are probably just going to want to eject though. I think the right solutions for server-side rendering and the right solutions for general backends are going to be different, so it's useful to distinguish those. IMO this project should be able to handle deployment alongside a backend server without too much trouble; handling server-side rendering is going to be trickier.

What if I am doing server-side rendering?

Then it's going to be quite more complicated because you'd have to compile everything with Webpack for the server. I know it's doable but it's not super straightforward, and quite error prone in my experience. This is why we don't support this use case in this setup in principle. (Some other similar projects do, so maybe they will fit your use case better.)

I think the right solutions for server-side rendering and the right solutions for general backends are going to be different, so it's useful to distinguish those.

Agreed.

Server-side rendering is a distracting feature to talk about. Especially since you don't usually use it in dev anyway. I should have used a better example.

The way I would want to set this up is to have some environment variable like "API_SERVER" that is different...

Sure, just like I would setup my webpack config, tweak the entry points, etc... My point is that this project has the chance to also give a lot of people that want this integrated a very smooth experience for setting up React. I don't actually need any of the stuff you mentioned, I would have to do all of that just to work with this.

(Some other similar projects do, so maybe they will fit your use case better.)

I definitely agree about the server rendering part. But I hope that this project grows to be a little more adaptable. The draw of ember-cli is that's it's what most people use, and I know that this scope is far smaller, but I bet it'll grow over time.
On the contrary for me giving small pain points, I haven't heard any drawbacks to the API I proposed above. What specifically is bad about it, or how will is constrain you? As far as I can see, it's future-proof because you'll always have a node dev server.
I don't feel like dragging much longer though.

Discussion might be relevant to #172

Discussion might be relevant to #172

I think it's not that relevant because that's mostly a speedup for production and is probably part of the build step for production, but if it helps, good.

I think the reason this discussion is not productive so far is because it is not obvious to us why having a separate process is painful if you don’t support server rendering. Is it just because making fetch() calls at /api is simpler than [host:port]/api? Are there other problems?

@jlongster well my point rather was that I do not mind having two separate processes for API server & static assets server (might be potentially nginx / express / http-server) where it would make sense to have some lightweight development proxy to keep everything transparent.

@gaearon I've mentioned several so I don't think that's the only reason this hasn't been productive. What you mentioned is one, and having index.html dynamically figure out where to serve the bundle, etc. are all configuration annoyances that could just go away. And all with the simplest integration point imaginable, which also allows advanced users to potentially do other things themselves. You may not hit these pain points, which makes it hard to relate, but that doesn't mean they don't exist.

I don't think is going to go anywhere, so I'll pre-emptively close it. I was hoping to be able to integrate this and contribute back but not sure how to integrate it with my current project yet. Maybe sometime in the future.

Sorry, I think I might have not made my points clear.
I’m not saying they don’t exist, I’m just asking you to be more descriptive 😉 . For example, I don’t really understand what

having index.html dynamically figure out where to serve the bundle

means.
I’m asking you to help me understand it by providing a step-by-step scenario that explains what is the pain point. The descriptions I saw so far seemed related to server rendering. I want to understand the problems you encounter without it, but I need your help.
I’m reopening because those problems are probably valid. I’m asking you to help me understand them by being as descriptive as possible; not shutting you down.

Maybe a step-by-step description would help. For example:

I have an API server at this port
I’m running npm start
Now I have this problem: <...>
I can work it around by <...>, but this poses another problem: <...>

(And, to be clear, I don’t have experience with building Node apps. Single-sentence descriptions of problems may be obvious to you, but I really ask you to go into details. They’re not obvious to me at all.)

Ok, sorry. I subconsciously assumed that others would relate to these problems as well. But note that some preferences come from general experience and hard to convey like this. I've enjoyed working with simpler dev servers in ways that I can't really explain if others don't have the same experiences.
One problem I can detail is this:

I have a server running on port 4000, and it provides an API and serves an index.html.
I run react-scripts start which listens on port 3000
Going to http://localhost:4000/index.html can't find the bundle because it's trying to load like this: <script src="/bundle.js"></script>, which resolves to http://localhost:4000/bundle.js.
The bundle is served from http://localhost:3000/bundle.js in dev, so it needs to load it from there. But I can't hardcode that URL, because it needs to be /bundle.js in prod. So it needs to dynamically check for the dev environment and use a templating system, like {% if DEV %}http://localhost:3000/bundle.js{% else %}/bundle.js{% endif %}.

Now, I could just load index.html from the webpack dev server. Then it would go like this:

API server is on port 4000
dev server listening on port 3000
Now I go to http://localhost:3000/index.html. The relative reference to the bundle /bundle.js works fine.
However, my code posts to the API with relative URLs like /get-items, which is now resolving to http://localhost:3000/get-items. So all my API calls aren't working.
I need to provide a constant API_SERVER that I need to require everywhere I make an API call, and do API_SERVER + /get-items. Or I could wrap all my calls in a function that automatically prefix that URL.

But I don't need that complexity. My site will never be big enough to require the ability to separate out the API server, so I just don't need to do that. I also don't need the complexity of using a templating system to make index.html dynamic.
So, sure, I could solve this either way. But it's additional complexity that I don't really feel like dealing with.
I'm fine if you all choose not to do this. It's your project, and you should execute your vision, and I fully respect that. If it's important enough to me to reap the benefits of it, eventually I'll try to figure this out. I would prefer the ability to simply integrate it though.

Thanks, this is super helpful!

Now, I could just load index.html from the webpack dev server.

This is certainly the workflow I had in mind, not the other way around.
Would the ability to proxy some requests to an arbitrary server satisfy you? For example you could always use /api/whatever in code, you could always use http://localhost:3000 in dev, but you would set up http://localhost:300/api/* to go to your Node app. In production, this wouldn’t have any effect, so they’d run on the same server/port.

@gaearon That certainly solves my biggest complaint. It seems like a lot of work though and a larger surface area for errors.
However, does webpack dev server already support a proxy? What is this? https://github.com/webpack/webpack-dev-server/blob/master/lib/Server.js#L121 If that's already implemented and been tested, that does seem like a good solution.

Yea. Unfortunately it seems to be the usual variety of options: http://webpack.github.io/docs/webpack-dev-server.html#proxy. If we could figure out a good subset of this configuration that would work for 95% of use cases, we might consider adding support for it.

proxy: {
  '/api/*': {
    target: 'http://localhost:4000',
    secure: false
  }
}

That's good enough for me.

I like the proxy idea! In addition to the pain point that @jlongster highlighted, it removes the need for developers to both identify and fix an inevitable CORS issue in development.
If it's helpful for those following this thread to visualize an implementation, I whipped one up. I still need to add switches for dev vs prod, but it paints the picture.

Got it. Thanks for comments. We won't add this yet, but we'll consider this use case together with the others, and maybe add something like this in the future.

Another suggestion: you could try having a separate proxy server, which runs on say localhost:2000, proxies /index.html and /bundle.js to localhost:3000 and proxies everything else to localhost:4000. (And also proxies whatever websocket thing is happening for the reloading to localhost:3000.) That might sound like a pain to write, but, it could be a totally separate module without changing anything about create-react-app. If someone built such a react-app-proxy then anyone could use it by invoking a one-liner in your node server. It has no CORS problems. It's similar to how you'd be deploying with nginx or apache in production. And then it wouldn't require putting any extra dependencies in create-react-app itself, which lets us keep this minimal.

Managing my own wepack config sounds simpler than that. The amount of changes needed for either my proposed solution or the proxy pales in comparison to some of the other features this project is taking on. There's no reason this shouldn't just solve it.

OK @jlongster I tried to implement something that solved this with the project as it is today and you are right it is too much of a PITA. CORS makes the API_SERVER strategy worse, and it's not convenient to script around npm start because of its browser-opening behavior. It's much nicer to proxy one server to the other, either webpack -> backend or backend -> webpack, and if we do it backend -> webpack then setting up the proxy will be a separate brand of annoying for every separate backend, plus the browser-opening will not work right. So I am convinced that some sort of proxying available in the default setup will be necessary to work with backend servers.

Agree. I wonder if we should go for declarative configuration or just allow the user to declare middleware.js that we would plug into Express.

Declaring middleware only solves the problem if you are using an Express backend. Whereas a proxy will solve the problem for any sort of backend - rails, php, django, etc. So I think the best is some sort of proxy.
The simplest way to configure a proxy would be just to provide one proxy port, and then any request that our dev server doesn't know how to handle gets forwarded to that port. If no proxy port is provided then no proxying happens. That's similar to how Apache is typically set up in production, proxying any request that can't be served by static files. That seems sufficient to me, although there might be something I'm missing. In particular I am not sure what websocket magic causes the live reloading, and whether it would be straightforward to proxy other websockets but not the webpack websocket.

@lacker In development, I've found this easier to handle by just standing up an Nginx server that sits in front of both my webpack dev server and my backend server or servers. This works better if e.g. your backend involves multiple microservices anyway. Works for with reloading from the webpack dev server too.

Also, it's hard to define a proxy fallback unless you hardcode some path like /api/*.
If you want to extend create-react-app to handle routing with the HTML5 history API for navigation, you need to enable historyApiFallback for the webpack dev server, in which case the dev server will try to handle all paths – so you'd need an explicit blacklist to proxy things to the backend server.

Declaring middleware only solves the problem if you are using an Express backend. Whereas a proxy will solve the problem for any sort of backend - rails, php, django, etc. So I think the best is some sort of proxy.

Sorry, I meant it the other way: let the user declare a middleware that we would add to the dev server. This would normally be used for proxying, but this gives the user the freedom to proxy to different servers, add custom headers, or rewrite URLs in some other way. If we provide a declarative config, I imagine many people could have hard-to-satisfy edge case scenarios, and since we’re trying to appeal to them with this feature, it would make sense to give user full control over it with code.

@taion Yeah, that's the setup I was suggesting to @jlongster  - just putting nginx in front of everything in your dev environment. You can do that today, I think it's just a pain because you need to configure nginx. Also because npm start will open a browser at localhost:3000 and if you are running nginx in front of that at localhost:2000 then you will constantly have these weird half-functional browser tabs opening.

Ah oops sorry, long issue thread 😬
I think a user-supplied middleware is a great way to approach this.
In terms of the built-in proxy in webpack-dev-server – it's clunky if you're trying to do anything advanced, but it actually works really well for basic use cases. I think it's simpler than setting up a full-fledged Express middleware just to proxy e.g. /api/* to some other port.

Yeah, that's the setup I was suggesting to @jlongster - just putting nginx in front of everything in your dev environment.

Not quite, I meant something close to what @jlongster proposed in the first place.
In start.js, we’re starting WebpackDevServer. Internally it is using Express so we can call .use on it (this is officially supported). So we can do
// pseudocode
var middleware
try {
  middleware = require(projectFolder + '/middleware.js')
}

var server = new WebpackDevServer(...)
if (middleware) {
  server.use(middleware)
}

server.start()

@gaearon I was responding to @taion about nginx there, not your post :P
But OK, I guess single-proxy-port isn't going to be good enough, due to the HTML5-history case and the multiple-microservices case.
If there's an API to supply an Express middleware, I think if you use https://www.npmjs.com/package/http-proxy-middleware it would be approximately the same difficulty as configuring webpack-dev-server, because they use the same underlying proxy library. A couple of questions:

Would it be possible to proxy out paths like /, /index.html, /bundle.js, a hypothetical /static/xxx directory elsewhere? That probably just breaks the dev server - if there's no real use case for that then we might want to route those to the dev server before they hit the customizable proxy. Otherwise, we need to make it clear which paths you shouldn't mess with, including the websocket.

Would the middleware get transpiled?

@lacker
I think supporting a custom Express middleware might be overkill in terms of configurability.
Most use cases can be covered pretty well with something like @jlongster's example in https://github.com/facebookincubator/create-react-app/issues/147#issuecomment-235021655.
Being able to inject an arbitrary Express middleware seems like too much customizability. I think in that case, it might be better to recommend ejecting rather than expand the surface area for customization beyond setting up a simple path-to-port/origin proxy.

If we do go with a simple json config then it should probably just be a subset of what webpack supports, and webpack is basically just passing the config to the underlying node-http-proxy which lists its arguments here: https://github.com/nodejitsu/node-http-proxy/blob/master/lib/http-proxy.js#L33-L50 I don't know where to logically draw the line there in terms of what config would get in and what config would be left out. I think that confusion is a case for either allowing middleware, or just going all the way and passing the blob straight to node-http-proxy.
It still seems like we would need to be explicit about what happens if you attempt to proxy the built-in urls like / or /index.html or /bundle.js or /sockjs-node/* (used for reloading) - do those get handled before the proxy, or after the proxy. It seems better to never proxy those elsewhere, because I can't think for a use case for proxying away the stuff the dev server uses, although I can think of ways to accidentally break your dev environment if you don't realize which urls those are.

I believe the middleware itself isn't quite enough – you also need to define where the middleware mounts, so you can't just have a middleware.js that just exports a configured middleware.

@taion An express router behaves just like a middleware. So I was thinking middleware.js would export a middleware that got mounted at / and it would just call next() on paths that should get routed to the dev server. This way you can have a single middleware handle routing several prefixes to several different backend microservices. The name middleware.js might be confusing here though.

I see – is that level of flexibility a good thing in this context, though? It seems odd to have a setup where users can't e.g. customize their Babel, ESLint, or webpack configs, but where they can effectively run an arbitrary Express application in the dev server.

The middleware sounds interesting, I would be fine with that. In terms of flexibility, this doesn't allow you to override any of this project's behavior, it just allows you to embed your own backend. I wouldn't look at it like a lot of flexibility; we could still completely change how we implement everything and it should still work. Working with a backend is a common enough case to warrant it. My original proposal was the opposite way, where you embedded this project, and I don't think that feels as intuitively wrong, but it's effectively the same thing.
I'm on PTO for the rest of this week and hope to not touch computers, but I'm glad that you all are continuing to discuss!
@lacker Thanks for doing serious research and trying out different approaches :)

I made a proof of concept, please let me know what you think: https://github.com/facebookincubator/create-react-app/pull/282

Wouldn't using webpack-dev-middleware help out with this? If I understand correctly some developers want to use their own custom server, wouldn't using this help out with the problem as well as make way for server-side rendering since they get to use their own server? Not sure if it aligns well with the goals of this project.

If I understand correctly some developers want to use their own custom server, wouldn't using this help out with the problem as well as make way for server-side rendering since they get to use their own server?

IMO this would make it too hard for us to change things. I think we want to be in control of the dev server.

make way for server-side rendering since they get to use their own server?

Using own server is the least of the problems related to server rendering. Ensuring bundling mechanism is the same, language features are transpiled (but in an efficient way), suggesting a good data fetching solution, etc, are all much harder, so this is currently a non-goal of this project.

@gaearon thanks for clearing things up

How about also providing an Express middleware people can plug into their own server?

You would need a separate Webpack config for use with webpack-hot-middleware (which would also need to polyfill EventSource for IE)
Build status reporting would have to be different - is there a standard way to hook into whatever logging the user has set up in middleware? I don't know.

var assert = require('assert');
var webpack = require('webpack');
var config = require('./config/webpack.config.middleware');

module.exports = function(express) {
  assert(
    express && typeof express.Router === 'function',
    'The express module must be passed to react-scripts middleware'
  );

  var compiler = webpack(config);
  var router = express.Router();

  router.use(require('webpack-dev-middleware')(compiler, {
    noInfo: true,
    publicPath: webpackConfig.output.publicPath,
    quiet: true,
    watchOptions: {
      ignored: /node_modules/
    }
  }));

  router.use(require('webpack-hot-middleware')(compiler, {
    log: false
  }));

  return router;
};

IMO this would make it too hard for us to change things. I think we want to be in control of the dev server.

My original proposal allows you to be in control. The dev server would sit "on top" of the backend server by composing the 2 servers into one. I should probably make a proof of concept of this. Thank you for making one with the proxy, I will take a look soon.

@jlongster Please let me know if the proxy solution works well for you. I’m inclined to get it in because I don’t see any major issues and this seems like the easiest least powerful way to support your use case.

My backend is Java-based rest services (yes I am one of those poor souls who juggles between java and javascript on a daily-basis).   My webpack dev server would proxy api calls to the Java back-end:
// proxy for restful services
const proxy = httpProxy.createProxyServer();
app.all('/api/*', function (req, res) {
    proxy.web(req, res, {
        target: 'http://localhost:8080/api/'
    });
});

So the proxy solution discussed here would work great for my use case.  Thanks.

@gaearon I can't seem to get that PR to work, it's something about the mayProxy regex. It's failing for URls that should work. If trim it down to something simple like /(?!(\/index\.html$))/ it works, so I'm not sure why it's failing to match all other URLs. I looked at it for a few minutes and could figure it out.
However, this approach works for me. I'm fine if you want to merge that in.

It's failing for URLs that should work.

Can you give any examples? I wanted to release this tomorrow but I can’t guess which URLs were failing. 😄

Can you give any examples?

Sorry, I've been on PTO! I couldn't get any URL to proxy, it would always be served by the webpack dev server. I don't know why, it must have been my setup, and I would go ahead and release it if it works for you. I'll try it out again soon and file new bugs as I find them!

@jlongster Maybe you were requesting with text/html in accept header? That's the heuristic we used.

@gaearon Oh, that's definitely it, because I set up a test case that wasn't even using ajax but was hitting various URLs directly in the browser. The downside of not allowing that is I can't "copy URL" from devtools and view the requests directly in the browser. Why not just proxy all URLs not in the whitelist, or all under /api/*, etc?

Why not just proxy all URLs not in the whitelist

How do we know if something is an API route or a client-side pushState route? We want /todos/42 to fall back to index.html because that’s what most apps want.

or all under /api/*

We didn’t want to be prescriptive about prefixes outside the React app (which your backend is). However /api/ might be a nice stronger heuristic for disabling the HTML5 fallback, so we could use that.

I don't feel too opinionated at this point, but I see that you still want control over the static files. If using the proxy, I'd say that it's unlikely I'll be dealing much with static files or care about the index.html resolution because the routing will be client-side and using an API server. But I don't have a strong case.
/api/ could work but I'd worry that it get confusing to have multiple ways of working (i.e. the way it currently works but also if you use /api/ you can view GET requests in your browser, otherwise not). Not sure. Maybe just keep doing what it's doing now and see how it feels.

I got the similar problem. I have a REST service that serves at 8001 port and open the dev server at port 3000. The ajax request sent from my react app, like /api/posts/1 can't reach the back-end API server since it will be route to 3000 port.
One solution I used is compile the app into production release and serve it under nginx proxy and then also make the REST server behind the proxy. Therefore I can access the app and REST server via the same origin, like 80 port. But this solution loses the capability of debugging and hot reloading and is inconvenience for development.
Another solution is to rewrite all cross-domain ajax requests with JSONP tricks. However, this hard-coding solution doesn't meet the requirement of production release.
I think enabling the proxy feature in dev-server is the best solution here. I tried to modify the webpack.config.dev.js in react-scripts to enable proxy but failed.
I wonder if there is any way I can let dev-server proxying  for the current release.

You can try 0.3.0-alpha which already includes support for proxy field in package.json. The template/README.md in this repo shows how to use it.

Fixed by #282, available in 0.2.3.

@taion You mentioned the approach of "standing up an Nginx server that sits in front of both my webpack dev server and my backend server or servers". Also, as @lacker pointed out, "it's just a pain because you need to configure nginx".
Would anyone be willing to share an example NGINX configuration that does this proxying?
I would like to adopt this approach, as the heuristic is not working for my use case, but I'm getting tripped up in all the configuration options (having never configured NGINX before). Thank you.

I ended up solving the NGINX configuration. Here's what worked for me in case others are also struggling:
server {
    location / {
        proxy_pass http://localhost:3000;
    }
    location /api {
        proxy_pass http://localhost:8080;
    }
}

The above is the complete contents of the file /etc/nginx/sites-enabled/default (in Ubuntu).
It serves on port 80, proxies requests under /api to the custom server running on port 8080, and proxies all other requests to the Webpack dev server running on port 3000.

With the proxy config in my package.json "proxy": "http://localhost:5000", I can make the GET requests work, but for POST it does not work, the POST requests still get routed to "http://localhost:5000".

@newcl File a new issue and describe the problem there please, with a reproducing example on GitHub. Thanks!

as I have a bit different use-case (sneaking one react component in otherwise a full LAMP site)
however I've managed to adapt the @curran 's forestanding nginx solution to apache .htaccess for a dev server as
<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
    RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
    RewriteRule .* ws://localhost:3000%{REQUEST_URI} [P]

    RewriteRule hot-update.json$ http://localhost:3000%{REQUEST_URI} [P]
    RewriteRule hot-update.js$ http://localhost:3000%{REQUEST_URI} [P]
    RewriteRule sockjs-node http://localhost:3000%{REQUEST_URI} [P]
    RewriteRule static http://localhost:3000%{REQUEST_URI} [P]
</IfModule>

so a big 👍  for this thread!

@ptica Happy to hear it!


🔥Can not classify symmetrical object correctly. Need help🙏

I have train 15 classes datasets base on faster-rcnn and get the model and it work well, but it can't classify symmetrical object correctly, such as them. Can you help me or give me your suggest?

You chose not the best pictures =)

No code to repeat.

@MiXaiLL76  Two symmetrical logos are different classes in train datasets, but predict the same classes and Accuracy is about 0.5


Success Message when project up fails

After running unikube project up of a project the command fails, but finishes with a success message:

€dit: The project appears in the project list / project delete command even though the cluster wasn't setup.

I can't reproduce this issue with the latest code. Could you please verify it still exists and add more information in what context (orga and project) that happens?


Added regex to exclude magic commands from ipynbs

I tried to fix the issue that causes errors while parsing notebook cells with magic commands.

Hello @mdmmn378! Thanks for opening this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file pigar/parser.py:

Line 64:23: W605 invalid escape sequence '\s'
Line 64:40: W605 invalid escape sequence '\s'


Dataset configuation parsing option not working correctly

Expected Behavior

Chart would be shown.
Current Behavior

Blank chart shown.
Possible Solution

I followed the documentation(https://www.chartjs.org/docs/latest/general/data-structures.html#parsing). It not works, also v.3.0.0., v3.1.0, v3.2.0. But I confirmed that it works in v3.0.0-alpha.2. (Link below)
Steps to Reproduce

Visit Link: https://jsfiddle.net/darkfrizerz/9y25zhqv/25/

  <head>
    <title>Example Chart</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.0.0-alpha.2/chart.min.js"></script>
    <!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.2.0/chart.min.js"></script> -->
  </head>

remove 3.0.0-alpha.2 script section and uncomment the commented part v3.2.0.
re-run sample code.

Context

Custom datasets is defined because it is necessary to show all data at once in the tooltip area.
Environment

Chart.js version: v3.2.0, v3.2.1
Browser name and version: 90.0.4430.212
Link to your project: None

I don't know why but.. x and y axis key exists, It works. 😅
parsing: {
  xAxisKey: 'amortizeFeeAmt',
  yAxisKey: 'amortizeFeeAmt',
},

Working Version: https://jsfiddle.net/darkfrizerz/x4g5eh96/6/

Not sure exactly what changed between the alpha and the final release on this front, but the current behaviour seems correct. We look for x and y keys so both xAxisKey and yAxisKey need to be specified here because the keys are different.

Not sure exactly what changed between the alpha and the final release on this front, but the current behaviour seems correct. We look for x and y keys so both xAxisKey and yAxisKey need to be specified here because the keys are different.

If it's correct to specify keys for both 'xAxisKey' and 'yAxisKey', (IMHO) I think you should add that to the example in the documentation page(https://www.chartjs.org/docs/latest/general/data-structures.html#parsing) as well. I think it can be a problem if it doesn't work even if someone follow the example code.

Example code is working: https://jsfiddle.net/Leelenaleee/5g9tou6j/
Reason for this is that for the x axis the default object notation key is being used which is x

Example code is working: https://jsfiddle.net/Leelenaleee/5g9tou6j/
Reason for this is that for the x axis the default object notation key is being used which is x as @etimberg pointed out

Oh I see! Now I understand. 💡
If the xAxis key is not x, I have to explicitly write it down!
Thank you so much for the answer. @etimberg @LeeLenaleee  😃


Extension to interact with the public Scratch API

Could you add an extension that connects to the scratch api? Because all the other methods are complicated and the turbowarp extensions dont work with it. I would code it myself but I have no idea how.

Do they mean things like getting how many views a project has?

I assume so
For anyone that wants to do this, you may want to either use our trampoline (https://trampoline.turbowarp.org/proxy/projects/104) or ScratchDB

i am currently working on a prototype. I will see if it works

@GarboMuffin, aren't you talking about S-Grab?

@GarboMuffin, aren't you talking about S-Grab?

S-Grab currently doesn't connect to the public Scratch API and doesn't even work for some users.

@GarboMuffin, aren't you talking about S-Grab?

S-Grab currently doesn't connect to the public Scratch API and doesn't even work for some users.

What does it do then?

yeah a few days ago it was not working and now it is?

if scratchdb is not working it should at least try to access the proxy for turbowarp, https://trampoline.turbowarp.org/

@GarboMuffin, aren't you talking about S-Grab?

S-Grab currently doesn't connect to the public Scratch API and doesn't even work for some users.

Can't we just use GET to access data from api.scratch.mit.edu?

Can't we just use GET to access data from api.scratch.mit.edu?

No, because the Scratch API does not let other sites access it. (TurboWarp uses its own API proxy to access it.)

PR #803 uses TurboWarp's trampoline proxy instead of ScratchDB to fetch stuff from the Scratch API.


Replace google font library

Thank you very much to provide such a good theme
Because google has been blocked in China,This leads to my blog very slow access speed.
How do I need to do to replace google font library is loaded on each page issue.
I need to replace it fonts.useso.com
Thank you

Sorry, I have to find a solution


Migrating to Ember 2.11 - Glimmer.

 Renaming error route to errored due to Ember bug. Adding a bugLink

This will fail till https://github.com/offirgolan/ember-light-table/issues/295 is resolved.


search for api hosting to replace heroku

list one

list two

fly.io

railway.app

Heroku Alternatives for Python-based Applications <----

add migration pipeline

resource in wiki


Refresh token expiration unknown

When using the authorization_code flow it is impossible to know whether or not the tokens in the local storage have expired.
The User object comes with an expired field that indicates whether or not the access token has expired. However, this does not take into consideration that the refresh token might still be valid and could be used to obtain a new access token via signinSilent.
Logic in pseudo-code for user authorization:
if (user && !user.expired && !user.refresh_token.expired) {
  // grant access
} else if (user && !user.refresh_token.expired) {
  // refresh access token using refresh token via signinSilent()
} else {
  // start completely new authentication process using signinRedirect()
}

Can you show me in the RFC that shows this refresh token expiration value?

Welp... Turns out that Keycloak does not conform to the RFC. You are right, the RFC does not include refresh_expires_in in the token response of the authorization code flow.
I guess this can be closed then. 😔

I don't have a place for additional dynamic values now. Doesn't matter, really, the refresh token could be revoked at any time, so your app always be coded for failure when trying to use the refresh token.


Bug Fix: emacs html export

emacs html export requires the htmlize package which is no longer included in the latest orgmode for emacs (I'm using emacs 26.3). If you export to html -> emacs with a code block it breaks since it uses htmlize to syntax highlight. (btw, get the same error in emacs when trying to export)
That being said, when I install the htmlize package in emacs, exporting from emacs works, but still fails from orgmode.nvim. The reason is because the --batch flag doesn't source your emacs configuration and any packages you have. This PR adds a --load switch to the export command that points at your emacs config. This tells emacs running in batch mode to load a specific startup file, in this case the main emacs config.

NOTE Changes beyond this. We may want to have a config option for specifying the location of an emacs config to use, since its not standard on all systems.

I know its failing tests/formatting. Just want to make sure this is an acceptable fix before polishing this PR. (See NOTE above for one outstanding issue)

Didn't know about that, thanks. I guess this should also fix https://github.com/nvim-orgmode/orgmode/issues/87.
Only issue that I see with this is that it's hardcoded. People may be using different path like $HOME/.emacs for example.
Lets do this:

Introduce a property emacs_config in the config/defaults.lua file that should look something like this:

emacs_config = {
  executable_path = 'emacs',
  config_path = '$HOME/.emacs.d/init.el`
}

Use the above config in the exporter

That should solve everything, and make it configurable.

@kristijanhusak I've made the updates and fixed the formatting issues. I also added basic documentation for it in the DOC.md file, Is there anywhere else I should put it?

@aareman looks ok, just address that one comment, and please squash commits into a single one. Thanks.

I made the changes, and squashed the commits.

Awesome, thanks!


Asset folder not copied

Not sure if my config is wrong, but the assets folder is not copied to /static/assets/
I am using Kirby 2.4. Here is my config:

<?php
c::set([
	'staticbuilder'  => true,
]);

What am I doing wrong?
I have also tried a config like the following without success:
<?php
c::set([
	'staticbuilder'  => true,
	'staticbuilder.extension'  => '/index.html',
	'staticbuilder.withfiles'  => true,
	'staticbuilder.assets' => [
		'assets'
	]
]);

Hi. A few questions:

Which version of kirby-staticbuilder are you using? Ideally it should be 2.0.0 or 2.0.1.
Is the assets folder listed in the "ASSETS" table in the http://yoursite/staticbuilder/ page?

By default the ASSETS table should look like this:
Directory or file   Copy target      Status
[dir] assets        static/assets    -
[dir] content       static/content   -
[dir] thumbs        static/thumbs    -

Hi :)

I am using version: 2.0.0
There was no error message displayed in the browser after building.
Yes all three are displayed. After setting 'staticbuilder.assets' => ['assets'] there was only assets displayed.

I can't reproduce on macOS or Windows. Is there anything special with your assets folder? A permissions issue maybe?

I have tried it with mamp on MacOs and inside a vagrant VM with ubuntu.
On my mac I set the folder permissions to 777.
Strange.

Maybe a lead: do you know how big that folder is? How many files it has.
In particular, do you have .git or node_modules folders in your assets directories (or subdirectories)?
I haven’t stress-tested that method to be honest. I’m using the Kirby Toolkit Folder::copy method, and I’m not sure it can handle a heavy load.
If your HTML/JS code only consumes part of what is in assets, maybe only list those, e.g.
c::set('staticbuilder.assets' => [
    'assets/dist',
    'assets/fonts',
    'assets/images'
];

My assets folder has 42 files and a size of 2 MB. No node_modules and no .git. My content folder is bigger but even if I exclude it and only copy the assets folder it doesn't work.

Is it possible that I need to install Kirby Toolkit or something?

No, it’s a part of Kirby.
Can you maybe zip that folder and upload it here, if it’s not too confidential?

hey there, im involved in this.
we cannot share the assets but i managed to track down the problem:
the /content/error folders are not being generated, removing them from the /content directory makes the asset copy work.
I guess you can tackle it down from here sven.
It would be nice though if you would throw an exception for the folder copy with debug turned on.
Error    content/error/error.en.txt static/error/index.html   	Not generated
Error    content/error/error.de.txt static/de/error/index.html  	Not generated

the /content/error folders are not being generated, removing them from the /content directory makes the asset copy work.

I'm not sure it's the folder copy failing here. It looks like it's a page generation that fails and halts the script, which I can't recover from. The folder copy is supposed to happen next, but if page generation halted the script then it does not go to that point.
Do you have more information on how the error page fails to build? Are you throwing an Exception, is it a PHP error, or do you call die() or exit() maybe?

It would be nice though if you would throw an exception for the folder copy with debug turned on.

I'm already displaying fatal errors, including Fatal Error: Uncaught expression, in:
https://github.com/fvsch/kirby-staticbuilder/blob/master/src/Builder.php#L559
Do you have an idea why it will not display anything in your case?

This makes sense! The error page I built was doing a redirect. This must have been stopped the generator.
<?php
	if ($page->redirect()) {
		go($page->redirect());
	}

In this case redirect was a value from the content. I used this to redirect to the start page.

As documented in: https://github.com/fvsch/kirby-staticbuilder/blob/master/doc/static.md#http-redirections
If you use the go() function, or the underlying Kirby Toolkit method for HTTP redirects, this will break the static build because this function does a exit();, which stops the whole PHP script.
Note that you can exclude the error page if you don't use it and don't want to build it. Or maybe explicitely list the page types you want to build:
c::set('staticbuilder.filter', function($page) {
    // exclude pages that don't use one of the whitelisted templates
    if (!in_array($page->intendedTemplate(), ['page', 'post', 'blog', 'home'])) {
        return false;
    }
    // use the default logic for other pages (excludes empty folders, mostly)
    return Kirby\StaticBuilder\Builder::defaultFilter($page);
});


Integrate all server side components into one application

Changes Unknown when pulling b3ad70f37bd5c481036a6e8da9fd3ffb9d41a29b on yiming187:assembly_update into ** on ctripcorp:master**.


fix: indexing issue

:tada: This PR is included in version 1.15.13 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


[question] Acrobot-v1 DQN

The acrobot won't stabilize at the equilibrium, it just keeps on spinning around. Why is that? The code can be seen under.

import gym
from gym import spaces
from AcrobotEnv import AcrobotEnv
import tensorflow as tf
from stable_baselines import DQN
from stable_baselines.deepq.policies import MlpPolicy
from stable_baselines.common.env_checker import check_env
env=AcrobotEnv()
check_env(env, warn=True)
model = DQN('MlpPolicy', env, verbose=1).learn(10000)
obs = env.reset()
for i in range(1000):
action, _states = model.predict(obs)
obs, rewards, dones, info = env.step(action)
print(obs)
env.render()

Try with the hyperparameters from rl-baselines-zoo. Some of the environment-algorithm combinations are sensitive to these.

As @Miffyli says and as written in the doc:

"Therefore, we highly recommend you to take a look at the RL zoo (or the original papers) for tuned hyperparameters."
"For better performance, increase the training budget"

The number of training timesteps you used is quite small.

Try with the hyperparameters from rl-baselines-zoo. Some of the environment-algorithm combinations are sensitive to these.

Where do I change these parameters? and I'm assuming the customDQNPolicy is:
class CustomDQNPolicy(FeedForwardPolicy):
def init(self, *args, **kwargs):
super(CustomDQNPolicy, self).init(*args, **kwargs,
layers=[32, 32],
layer_norm=False,
feature_extraction="mlp")

Where do I change these parameters?

Please read the documentation first, all your answers are there.

Please read the documentation first, all your answers are there.
Okei, thanks guys:)

I have changed the hyperparameters and implemented CustomDQNPolicy, but the acrobot keeps on spinning.

As mentioned before the acrobot is not a pendulum, the goal is to reach a target height, not to balance it.
What is your mean episode reward?

The mean episode reward is -91.

The mean episode reward is -91.

This corresponds to the results achieved in the zoo, and looking at the policy, it solves the task.


Broadway buffer config

Currently the Broadway producer has a buffer limit of 10k messages per producer which comes from the defaults set in GenStage.
Lets update this to default to :infinity so faktory worker's default is to never discard jobs when pushing to faktory. This should also be overridable at the faktory worker level under the pool settings.
Might be worth a read of these docs about genstage buffering https://hexdocs.pm/gen_stage/GenStage.html#module-buffering.

Done in #45


Listr breaks if number of tasks overflow the terminal height

I'm working on a CLI that has a lot of tasks. I noticed that when the number of tasks increases to the point that they overflow the height of the terminal window, Listr cannot update the tasks on the window accordingly. Basically there aren't enough lines in my window to hold every task. (Note, the commands still work, just the UI is broken.)
I'm expecting a spinner on each task that turns to a green check mark after it completes successful, and then proceeds to the next task. But what I'm seeing are tasks duplicating in the list output. Some of them have a dead spinner. Some are checked. And some tasks don't have a spinner or check mark (or X if failed).
To reproduce, create more tasks than there are lines in your visible terminal window and run the command.
It looks like #53 may resolve this issue. Or maybe support scrolling of long lists that go out of the terminal window. Any thoughts or suggestions?
Thanks,
Weldon
I'm on versions:
"@oclif/command": "1.5.19",
"@oclif/config": "1.13.3",
"@oclif/plugin-help": "2.2.3",
"@oclif/dev-cli": "1.22.2",

we are seeing this issue as well that UI is broken, any plan to fix it?

I use this renderer as a workaround https://www.npmjs.com/package/@tryghost/listr-smart-renderer


Improving MIDI playback in various open source projects

The following issues seek to improve support for MIDI software synthesis in various open-source projects:
Libmodplug (FFmpeg): https://github.com/Konstanty/libmodplug/issues/97
FluidSynth: https://github.com/FluidSynth/fluidsynth/discussions/1275
SDL_mixer: https://github.com/libsdl-org/SDL_mixer/issues/563
Gstreamer (and eventually Totem):

https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2962
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2956

Musetree: https://github.com/stevenwaterman/musetree/issues/80
Wildmidi: https://github.com/Mindwerks/wildmidi/issues/121
A public-domain music synthesis library and instrument banks would greatly help improve MIDI playback support across the open-source ecosystem: https://peteroupc.github.io/music.html
dr_libs: https://github.com/mackron/dr_libs/issues/261

testing


Typescript ignore "import types"

This is related to this issue.
Specifying
detectiveOptions: {
  ts: {
    skipTypeImports: true,
  }
}

works only for this kind of code
import type { TypeName } from 'path';

but TS is clever enough to auto-detect types (as they don't generate any output on the JS), so this
import { TypeName } from 'path'; // no "type" keyword

should work the same, when TypeName is a type, an interface, a const enum or anything that doesn't generate anything in memory.
In summary, skipTypeImports should work not when there's a import type, but also based on the nature of the imported property as well when there's a basic import.

I was checking the code of how detective-typescript works, and saw that it only sees one file at a time without knowing what's importing. That makes a bit hard detecting if an export is a type-like declaration or a real object.
My recommendation so far would be to recursively get into what the imported file is exporting and check their types. Keep a cache of AST objects to avoid parsing the same file multiple times...
This "easy" feature requires a somehow complex solution.
Any thoughts?


Referendum pass threshold UI

display on the ui the pass threshold

@tumispro is the backend logic ready?

Is this just regarding the indicator whether a referndum is currently passing/failing?

yeah like a line to see in the green and red bar whats the percentage important for passing / failing


Preact X, preact-redux is not working..

Preact, 10.0.0-alpha.2
preact-redux is not working, react-redux work properly

There is No Error, Just There is <Provider/> without children(<App/>)
Check Plz

Can confirm this is also occurring with our app, but not sure how to replicate it at the moment.

The problem seems to be that in Preact X, props.children is no longer guaranteed to be an array, and in this case, if you're passsing a single child, props.children is a VNode.
There's this in src/compat.js:
export const Children = {
	only(children) {
		return children && children[0] || null;
	}
};

Here children[0] doesn't exist. Should be something like
export const Children = {
	only(children) {
		if (Array.isArray(children))
			return children[0]
		else if (children && typeof children === "object")
			return children
		else
			return null
	}
};

For those working with X, try using react-redux and preact/compat. Hopefully this will be fixed soon.

Hey!
Could you guys test preact-redux's master?
I suspect that my PR, #41, fixes the problems related to Preact Redux but I'm not 100% sure of that, and the test suites would need to be adapted to support Preact X..(so breaking the compatibility with Preact 8), which I will try to fix in the next weeks.

@fjorgemota  Any Updates regarding the fix.
I can't use react-bootstrap4-modal with preact-redux.


PLEASE HELP

A few days ago I bought a ps4 controller and managed to connect it to the ds4, however, I had the first problem when I disabled the "hide ds4 controller" option, but I managed to solve it by reinstalling the program. However, a few days ago I opened the ds4 with the controller turned off, and that's when the main problem happens: The ds4 no longer recognizes the controller.


Auth for Pushleads

Your PushLeadToMarketo.php example seems pretty straightforward, much simpler than the convoluted Marketo REST api docs I have seen so far. With that said, since I have no direct experience with Marketo yet, how should I direct a Marketo customer to get me the following details and make sure it has the right permissions for me to simply push leads to their system. This is from within your example:
	private $host = "";//CHANGE ME
	private $clientId = "";//CHANGE ME
	private $clientSecret = "";//CHANGE ME

Also, are there no such things as leads list that they can be added to instead of some programname with a static string that does not appear to be predefined within marketo.

The Push Leads to Marketo endpoint requires Read-Write Lead permission as indicated under "Implementation Notes" here:
http://developers.marketo.com/rest-api/endpoint-reference/lead-database-endpoint-reference/#/Leads/pushToMarketoUsingPOST
For ideas on how to ask customers for those 3 data points, you could look at what others have done on launchpoint.com.  Here is one example:
http://launchpoint.marketo.com/assets/company/1239/8720772402749332887marketoIntegration-LP.pdf
To add leads to a list, please see Add to List endpoint:
http://developers.marketo.com/rest-api/endpoint-reference/lead-database-endpoint-reference/#/Static_Lists/addLeadsToListUsingPOST
Please send feedback on Developer Site to<EMAIL_ADDRESS>


Define glpk launcher and expose command line and api option

Purpose
Add new --solver parameter (and corresponding query string) which can currently be either gurobi or glpk. This enables running a simulation in test scenarios where a license is not available.
What it does

implement required launcher subclass
install glpk in docker image
make the launcher class determined (optionally) by end user, defaulting to gurobi
move launchers to separate file, to keep call.py relatively clean

Time to review
10 min

The code looks good. Has it been tested?

The code looks good. Has it been tested?

Yeah, just manual tests in a container - checked with invalid solver and completed a simulation with glpk


Share Lifecycle, Environment, Device data as XDM Shared State

Part of #390

This item is not planned at this time.


How is Luigi Parameter name decided?

Take this POC code, which defines a single parameter in a base class, to be reused in various subclasses:
class Thing(luigi.Task):

    color = luigi.Parameter(default='fluffypink')

    has_run = False
    def run(self):
        print self.__class__.__name__, self.color
        self.has_run = True

    def complete(self):
        return self.has_run

class AliveThing(Thing): pass

class Animal(AliveThing): pass

class Mammal(Animal): pass

class Horse(Mammal): pass

class Cow(Mammal): pass

How is the parameter name for the color parameter decided?
If I run this with v1.0.22, --help tells me this:
--Animal-color ANIMAL_COLOR
                        Animal.color [default: fluffypink]

which seems a pretty arbitrary decision .
I think  --Thing-color would be the most sensible

Interesting – it just picks an arbitrary one? It should either be all of them, or the base class

Great, thanks.
But now I'm even more confused.
Apparently the command line option --Thing-color doesn't work (its value is not passed as parameter value to the task)
If I use --color, then it works, but that option is not documented under --help
(I tried this with latest master at 67912aba66c2e890b5f524832853ac4f7758f36c)
How is the command line interface supposed to work?
We're considering upgrading from 1.0.19, but are held back by the (unclarity of the ) changes of the command line interface.
I tried to dive in to the command line parsing code, but that part of the code flows in pretty complex ways :)

Let me try to reproduce.
--MyClass-my-param style parameters weren't present in 1.0.19 though so I'm not sure what kind of compatibility issues that would present for you. They were introduced in 1.0.21 IIRC.

To make my previous comment a bit more concrete:
If I have this:
class Foo(luigi.Task):
    color = luigi.Parameter(default='fluffypink')

Then both of these commands trigger the Foo(color=blue) task:
script.py Foo --Foo-color blue
script.py Foo --color blue

If I ad just one subclass, like this:
class Foo(luigi.Task):
    color = luigi.Parameter(default='fluffypink')

class Bar(Foo):
    pass

Then script.py Foo --Foo-color blue Triggers Foo(color=fluffypink)
and script.py Foo --color blue triggers Foo(color-blue)

I can reproduce it. Let me see what's up

--MyClass-my-param style parameters weren't present in 1.0.19 though so I'm not sure what kind of compatibility issues that would present for you. They were introduced in 1.0.21 IIRC.

I understand, but it seemed the pre-1.0.21 style was discontinued because they are not exposed from  --help anymore

The instance parameter values (--color) are still the one you should use. I didn't realize they disappeared from the output of --help. We should add them back.
Class instance parameter values are meant mostly for config etc and is an attempt at merging global parameters, and config. They shouldn't be used in most situations.
So it seems like there's two remaining things to fix (1) --MyClass-my-param should override default values (2) make sure the help message outputs the right parameters

The instance parameter values ... you should use
Class instance parameter values ... shouldn't be used in most situations.

I'm not completely sure I understand the distinction you seem to make here
I only know this pattern from the luigi documentation:
class SomeTask(luigi.Task):
   par = luigi.Parameter(...)

is this an "instance parameter" or "class instance parameter"?

The distinction is not in the parameter level, it's on the parameter value level. In the example above you can use both ways. To be clear let's say the code is this
class SomeTask(luigi.Task):
   par = luigi.Parameter(default=456)

python script.py SomeTask --par 123 will run a SomeTask(par=123). If some other task in the chain instantiates SomeTask() then it will instantiate it with SomeTask(par=456).
python script.py SomeTask --SomeTask-par 123 will run a SomeTask(par=123), but will also set the value on a class level to 123. This means if some other task in the chain instantiates SomeTask() then it will be created with SomeTask(par=456).
The class level values are meant mostly for config. I.e. if you have a lot of Hadoop jobs that inherit from a common class, then the idea is you can specify HadoopJobTask--queue my-queue to set the right queue. Things like that.

You should be safe to upgrade because the bug only affects a feature that was introduced in 1.0.21. But I agree that it's confusing (eg. you thought it was something else than it was, which is not intended)

Ah, ok, so the class level parameter values --SomeTask-par are basically for overriding the parameter's default value that is hardcoded in the source code?
Thank you for taking the time to walk me through this, greatly appreciated.

Yeah exactly. It's confusing. I fixed the first issue, working on the help string now. I'll give it 10-15 min to see if I can fix it


feat: use regex to match width and height of svg to resize icons without .0px suffix

PR regarding issue #15

Thanks!!

Side note: Unfortunately this doesn't seem to be the only fix needed to solve this issue


feat: update ProfilePage

Details

This PR refactors the DetailsPage component to use the new design described in the design doc.
This PR base is another PR, so to see changes only from this PR you can use this link.
Fixed Issues

$ https://github.com/Expensify/App/issues/42077
PROPOSAL: N/A
Tests

Verify each Profile page if it works:

Verify the new design is displayed, and match the Figma design.
Verify the "Pin" button is displayed and works as expected.
Verify the "Message" button is displayed and works as expected.

Verify group messages:

Create a new group chat with a few members.
Send a message, and click an avatar to open the details page (your profile). Verify it works.
Open the group chat details (click header bar), go to Members. Select a member, click "Profile", and verify it works.

Verify DM:

Open a DM with a user, click the avatar/header bar to open the details page. Verify it works.

Verify public rooms:

Go to public chat (e.g. #exfy-roadmap: /r/868417741568295)
Click on the profile avatar, and verify it works.

Open public profile:

Go to https://dev.new.expensify.com:8082/a/1

Offline tests

N/A
QA Steps

[ ] Verify that no errors appear in the JS console
[ ] Verify tests from the Tests section.

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android & iOS: Native

https://github.com/Expensify/App/assets/104823336/ad786a0c-5079-4780-9eb0-91c62c7189bb

Android & iOS: mWeb
https://github.com/Expensify/App/assets/104823336/504338b6-adaa-4dbf-b61d-b3c1102480be

MacOS: Chrome / Safari

MacOS: Desktop

For this case here:

I feel like we should give the buttons a max-width of 50%. This way if there is just one button, it doesn't look quite as akward as this where it takes up the full width. Thoughts @Expensify/design ?

I feel like we should give the buttons a max-width of 50%. This way if there is just one button, it doesn't look quite as akward as this where it takes up the full width.

Yeah I can get down with that! It does look a bit massive when it's full-width haha.

I feel like we should give the buttons a max-width of 50%. This way if there is just one button, it doesn't look quite as akward as this where it takes up the full width.

Yeah that's clever and also making sure that it's centered which I'm sure it would be anyways :)

Thanks! I will update it in the #41972 PR, as this is where we've introduced the PromotedActionBar.

Done!

And then for posterity, can you show us what it looks like when there are 2 or more buttons here? Just to make sure we got the styles correct. Thanks!

And then for posterity, can you show us what it looks like when there are 2 or more buttons here? Just to make sure we got the styles correct. Thanks!

I will follow up in the original PR #41972 so as not to duplicate the discussion :D

@kosmydel Is this PR ready for C+ review?

@akinwale Yes, this one is ready for initial review. Keep in mind, that this one is based on another PR which is still waiting for the merge. The changes from this particular PR are available here.

@trjExpensify I started testing. I should be able to complete the checklist today.
@kosmydel There's a new merge conflict. Please check.

@kosmydel There's a new merge conflict. Please check.

I've resolved the conflicts ✅

building...

@kosmydel The Pin button on the profile page doesn't show up until after you have opened a DM with a user. Just confirming that this is the expected behaviour. Thanks.

Reviewer Checklist

[x] I have verified the author checklist is complete (all boxes are checked off).
[x] I verified the correct issue is linked in the ### Fixed Issues section above
[x] I verified testing steps are clear and they cover the changes made in this PR

[x] I verified the steps for local testing are in the Tests section
[x] I verified the steps for Staging and/or Production testing are in the QA steps section
[x] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[x] I checked that screenshots or videos are included for tests on all platforms
[x] I included screenshots or videos for tests on all platforms
[x] I verified tests pass on all platforms & I tested again on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[x] I verified proper code patterns were followed (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I verified that this PR follows the guidelines as stated in the Review Guidelines
[x] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari
https://github.com/Expensify/App/assets/4160319/180cd6b6-49b4-480f-bddf-853a3ec4dab8

MacOS: Desktop

@kosmydel The Pin button on the profile page doesn't show up until after you have opened a DM with a user. Just confirming that this is the expected behaviour. Thanks.

I think it is expected, as the report doesn't exist/is not loaded until we open a DM. cc @grgia for confirmation

The Pin button on the profile page doesn't show up until after you have opened a DM with a user. Just confirming that this is the expected behaviour. Thanks.
@kosmydel @akinwale
yep, this is expected!

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to production by https://github.com/Julesssss in version: 1.4.79-11 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Fix underlining paramter while typing in vim

First, Thanks for creating this great project!
I'm enjoying to code with rust-analyzer. It is really improved since I've known it. I love It so much.
In neovim, the first paramter was still underlined while the second is written.

However, A trick seems to underline proper parameter, but I don't like this style.

I'm using neovim-0.4.3 with coc plugin + coc-rust-analyzer. And I downloaded the latest release of rust-analyzer (2020-03-16).
In vscode, It works as it is.

coc-rust-analyzer author here, I've reproduced this issue with RA. From server trace log, RA always returns signatureHelp activeParameter as 0, coc will underline the first parameter.

After some tests, I found the different between VSCode and coc.nvim:
In VSCode, params of textDocument/signatureHelp request are:
{
    "textDocument": {
        "uri": "file:///Users/fannheyward/src/hello-rust/src/main.rs"
    },
    "position": {
        "line": 42,
        "character": 8
    },
    "context": {
        "isRetrigger": false,
        "triggerCharacter": "(",
        "triggerKind": 2
    }

In coc, context is missing from params. From LSP spec, SignatureHelpContext was added in 3.15:

Additional information about the context in which a signature help request was triggered.

My question is: does context is must have for RA to do signatureHelp?

@fannheyward  no, we use only TextDocumentPositionParams subset: https://github.com/rust-analyzer/rust-analyzer/blob/57562284abb226b80db463b9ed76deb59057b168/crates/rust-analyzer/src/main_loop/handlers.rs#L468

@phynalle try to fix this issue on coc-rust-analyzer, use :CocUpdate to upgrade the extension. Feedback is welcome.

Thanks for trying to fix it, @fannheyward.
It seems that wrong underlining is fixed, but hint window is gone while typing..
Let me show you an example.
When opening parenthesis, it shows up. It's normal.

But, when parameter is written, it is gone.

And it shows up again when new parameter is ready to be put

And it is gone again when I try to write something.

@phynalle  Fixed in coc-rust-analyzer 0.4.11, try :CocUpdate and feedback any problem.

wow, I think it's perfect. I don't see any problems. Thanks for your help.

This issue can be closed. @phynalle @matklad

Thanks @fannheyward for looking into this!

Hm, actually I wonder if there's off by one error on rust-analyzer side:

From the screenshots above, it seems like it!
cc @kjeremy would you be interested in looking into this?

Sure! I still have to go to work sadly but maybe I can get to it this weekend.

https://github.com/fannheyward/coc-rust-analyzer/issues/321 has revert the fix for this issue.
VSCode will trigger signatureHelp after every character input, for example, func(42,1, VSCode will send textDocument/signatureHelp request after ( 4 2 , 1, although RA has declared triggerCharacters: ["(", ","] only, RA will return correct activeParameter after 1 .
coc only trigger when triggerCharacters input, here are ( ,.

This properly is an issue of RA.
Test code with VSCode + RA:
fn run(x: u32, y: u32) {
    println!("{}", x + y);
}

fn main() {
}

After input ,, RA doesn't return correct activeParameter, should be 1.
Request:
Sending request 'textDocument/signatureHelp - (166)'.
Params: {
    "textDocument": {
        "uri": "file:///Users/fannheyward/src/hello-rust/src/main.rs"
    },
    "position": {
        "line": 5,
        "character": 10
    },
    "context": {
        "isRetrigger": true,
        "triggerCharacter": ",",
        "triggerKind": 2,
        "activeSignatureHelp": {
            "signatures": [
                {
                    "label": "fn run(x: u32, y: u32)",
                    "parameters": [
                        {
                            "label": "x: u32"
                        },
                        {
                            "label": "y: u32"
                        }
                    ]
                }
            ],
            "activeSignature": 0,
            "activeParameter": 0
        }
    }
}

Response:
Received response 'textDocument/signatureHelp - (166)' in 3ms.
Result: {
    "activeParameter": 0,
    "activeSignature": 0,
    "signatures": [
        {
            "label": "fn run(x: u32, y: u32)",
            "parameters": [
                {
                    "label": "x: u32"
                },
                {
                    "label": "y: u32"
                }
            ]
        }
    ]
}

Tested with RA fac1b0d, it's fixed!


Standalone language server

I would like to have Dafny support in an editor that supports the LSP (Kakoune). The language server that is developed here seems to only work under VS Code. How can I have a standalone server executable from this codebase? Is it even possible? Thanks!

Hi @jorge-jbs
With the implementation in this repository, it is currently not easily possible to add another LSP-Client. However, we are currently working on a new Language Server; I hope we can release a fir

(keeping this open until we are there.)


Documentation updates for Bluemix deployment of Bookstore App

Walking through the instructions for deployment to Bluemix.   I may have missed some steps but thought it would be best to open an issue in case others hit this issue.
Two issues..

Definition of the domain and route (did the set up in .bluemixrc) [see details below]
URL to bookstore app is not /productpage/productpage.  [I entered in http://todkap-a8-bookinfo.mybluemix.net/productpage?u=normal to get to it]

Looks like the command domain and hostname is missing that in deployInfo.sh
todkapmcbookpro:examples todd$ bluemix ic group-create
Incorrect Usage.
The command options or arguments were specified incorrectly. Review the following usage information and try entering the command again.
USAGE:
bluemix ic group-create --name GROUP_NAME [--memory,-m MEMORY_SIZE] [-n,--hostname HOSTNAME] [-d,--domain DOMAIN] [--env,-e ENV_KEY=ENV_VAL] [--env-file ENVIRONMENT_VARIABLE_FILE] [--publish,-p PORT] [-P false|true] [--volume,-v VOLUME_NAME] [--min MIN_INSTANCE_COUNT] [--max MAX_INSTANCE_COUNT] [--desired DESIRED_INSTANCE_COUNT] [--anti false|true] [--bind SERVICE_INSTANCE_NAME] IMAGE_NAME [COMMAND [COMMAND ...]]
bluemix ic group-create --name bookinfo_productpage
--publish 9080 --memory 256 --auto --anti
--min 1 --max 2 --desired 1
--env A8_REGISTRY_URL=$REGISTRY_URL
--env A8_REGISTRY_POLL=5s
--env A8_CONTROLLER_URL=$CONTROLLER_URL
--env A8_CONTROLLER_POLL=5s
--env A8_SERVICE=productpage:v1
--env A8_ENDPOINT_PORT=9080
--env A8_ENDPOINT_TYPE=http
--env A8_REGISTER=true
--env A8_PROXY=true
${BLUEMIX_REGISTRY_HOST}/${BLUEMIX_REGISTRY_NAMESPACE}/${PRODUCTPAGE_IMAGE}
I entered the following in my container page..
bookinfo_productpage
Routes: todkap-a8-bookinfo.mybluemix.net

Hi
Can you please provide some information on the bluemix CLI version and CF cli version you are using? We have had multiple people try the exact same scripts. Seems you are hitting some version incompatibility issues w.r.t. bluemix cli.

Older CF version but bluemix appears up to date.
todkapmcbookpro:hellonode todd$ bluemix --version
bluemix version 0.4.2+d8c5ae7-2016-09-14T06:42:28+00:00
todkapmcbookpro:hellonode todd$ cf --version
cf version 6.16.1+924508c-2016-02-26

Hi, I checked your app. Something is very odd. The productpage is always in /productpage/productpage. Could you redeploy the app please?

closing as there has been no response.


wake_up

Anyone knows what does a wake_up command do? saw it here:
https://github.com/gglockner/teslajson/blob/master/teslajson.py#L142

It wakes up the car from a deep sleep state to be able to respond to various API commands or get certain state only available when it's online. The commands will do this automatically, but this can be done to "pre-warm" the car out of sleep so subsequent commands will be faster.


Make Unique on a material causes excessive (40 seconds) scene save times

Godot version
3.4.4.stable
System information
Windows 10
Issue description
Setting "Make Unique" for an imported material causes saving a scene to hang for a long time.
In this video showing the bug, you can see that making the mesh unique works, but making the material unique causes the problem.
Steps to reproduce
Import a gltf file, click Make Unique on the material, and save the scene as a tscn. Demonstration video
The gltf file used in the video is here, 7.1 MB, gotten from the tutorial series by BornCG.
Minimal reproduction project
https://drive.google.com/file/d/1g_WWK8UQ_fII-XqeKD1r9TGtgVEGnmEe/view?usp=sharing

This is expected. When you make material unique, all data is saved inside the scene. You can make it faster if you save it in scn format, so that the data is binary instead of text.

Duplicate of https://github.com/godotengine/godot/issues/34641.


[Improvement][E2E + API Tests] Refactor UI test and API test modules

Search before asking

[X] I had searched in the issues and found no similar feature requirement.

Description
Although the current UI test has completed part of the interface test, the functions covered are not comprehensive, and the use of the page object model is unreasonable. API testing is built using the page object pattern, which is not reasonable in itself. API testing should focus on API rather than page elements. Based on the above problems, I have made the following improvements:

The page objects and browser objects are encapsulated twice, and the common methods of page objects and browser objects are integrated, which makes the development of page objects faster and easier to use, and increases the maintainability of UI testing.
Modules are divided for API testing related test classes, and use case writers are more focused on the writing of API use cases
Added scenario tests, not limited to single interface and API tests (samples to be completed)
API + UI test double verification, enhance the effectiveness of the test, closer to the real user scenario

Are you willing to submit a PR?

[X] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

I will split this PR, and gradually submit the corresponding PR on the original basis, thank you for your suggestions @SbloodyS @kezhenxu94


The dot-dot notation (..p.adj..) was deprecated in ggplot2 3.4.0.

exp_len <- repExplore(my_data$data, .method = "len", .col = "aa")
vis(exp_len, .by = "parameter", .meta = my_data$meta)
returned:
Warning message:
The dot-dot notation (`..p.adj..`) was deprecated in ggplot2 3.4.0.
ℹ Please use `after_stat(p.adj)` instead.
ℹ The deprecated feature was likely used in the immunarch package.
  Please report the issue at <https://github.com/immunomind/immunarch/issues>.
This warning is displayed once every 8 hours.
Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.

Hi, @github-wow!
Please try to install the development version of Immunarch like described here https://immunarch.com/#latest-pre-release-on-github, I've added the fix to avoid this warning.
Best regards,
Aleksandr


When admin downloads the excel for Mentee applications, the partner affiliation is not shown correctly

Instead of the partner name, we are showing an id in the affiliation column.

[mentee_data.xlsx](https://github.com/hack4impact-uiuc/mentee/files/14225098/mentee_data.xlsx)

Hi @SolMon9099 this is not fixed, in the mentee application excel downloaded, there is no affiliation shown.  See attached.
mentee_applications.xlsx

ok


problema na transferencia

nao consigo transferi meus ativos para outra carteira ou corretora

@deni846 Talk to Cardano Support on the Live support page so that your issue can be looked into.

@deni846 do not follow advice from @EmbeDeveth - they are scammers trying to phish your assets. I will report them.


Stored Procedure:  naming of the commands is inconsistent

Some have DocDB in them, some don't.

This issue has become stale and is at risk of being closed. The community has 60 days to upvote the issue. If it receives 5 upvotes we will keep it open and take another look. If not, we will close it. To learn more about how we handle issues, please see our documentation.
Happy Coding!

:slightly_frowning_face: In the last 60 days, this issue has received less than 5 community upvotes and we closed it. Still a big Thank You to you for taking the time to create it! To learn more about how we handle issues, please see our documentation.
Happy Coding!


Discord message 0.0.2

New Pull Request Checklist
Please mark the points which you did / accept.

[x] I will not move an already shared step version's tag to another commit
[x] I read the Step Development Guideline
[x] I have a test for my Step, which can be run with bitrise run test (in the step's repository)
[x] I did run bitrise run audit-this-step (in the step's repository - note, if you don't have this workflow in your bitrise.yml, you can copy it from the step template.)
[x] I read and accept the Abandoned Step policy

Changelog:

Added Step icon
Allow users to define a Discord role to be mentioned when a build failure
Changed Discord embed color for aborted build status

I don't know the step.yml from 0.0.1 is in this commit. I pushed the 0.0.2 using bitrise share from Ubuntu.

@trapacska Could you please check/merge the PR?


Todos Milestone: React tutorial

For this Milestone I:
✅ Used GitFlow
✅ Used linters
✅ Set up a React App with Vite
✅ Used React documentation
✅ Used functional components
✅ Used React props
✅ Used React state
✅ Handled events in a React app
✅ Used React life cycle methods
✅ Understood the mechanism of lifting state up

@abiola-arobieke, thank you for your feedback! 🚀


Compatibility with other 'file types' - e.g. Javascript Next

I'm using an alternative JS syntax highlighting package (Javascript Next) which I prefer over the plain Javascript syntax. However, I can't get Code Formatter to run without first changing the syntax back. It throws an error "Formatter for this file type (javacsriptnext - es6 syntax) not found.
I don't need a whole new formatter - just to call the Javascript one from a different syntax setting. I couldn't see a way of doing that in the settings file - or maybe I just didn't follow it properly. Is it possible to include a list of syntax settings for which each formatter is 'valid', so that I can save several clicks each time?

I have the same issue with JavaScript Ultimate.
I was able to get it working by editing: Packages/CodeFormatter/codeformatter/formatter.py and adding "javascript ultimate" (the formatter that wasn't found) to the classmap object on line 34.
For me it looks like this now:
		self.classmap = {
			'php': PhpFormatter,
			'javascript': JsFormatter,
            'javascript ultimate': JsFormatter,
			'json': JsFormatter,
			'html': HtmlFormatter,
			'asp': HtmlFormatter,
			'xml': HtmlFormatter,
			'css': CssFormatter,
			'less': CssFormatter,
			'python': PyFormatter
		}

you can use command palette to run CodeFormatter: Format as Javascript Syntax
or wait for next release where syntaxes option added https://github.com/akalongman/sublimetext-codeformatter/blob/master/CodeFormatter.sublime-settings#L34

@thecotne
Hi,
I have the next in my configuration:

However, when I try to format the file, I have the next alert:

Is that normal?
How can I configure the plugin to format javascriptnext? I saw the file you are referring, however I hadn't had such configuration option in my config. I have added it, but do not see any effect.
Regards,

@akalongman why last release version is so old? 10 commits behind master
@PavelPolyakov i was thinking it was released but it is not

@thecotne Will be released today

@thecotne @akalongman
As I understand, nothing was released for now? :(
https://github.com/akalongman/sublimetext-codeformatter/releases
Regards,

What's the update on this?
I am having the problem for all CodeFormatter on Sublime Text 3.
It used to work and broke sometime in the last 3 months perhaps?


Change to /environment broke the path

Hi Greg,
When you changed the location of the /environment file to earlier in the code, I think it ended up having the unintended consequence of actually messing up the PATH variable. Now when the /environment file is created in the new image, instead of the file saying "PATH=$PATH:/bin:/sbin", the file instead says "PATH=/bin:/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/bin:/sbin" . I think something weird is happening with the $PATH, but it is a bit strange because it seemed like you simply copy and pasted.
Best,
Nathan

Can you double check? This is what I'm getting...
Singularity.Test1.img> cat /environment
# Define any environment init code here
#

if test -z "$SINGULARITY_INIT"; then
    PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
    PS1="Singularity.$SINGULARITY_CONTAINER> $PS1"
    SINGULARITY_INIT=1
    export PATH PS1 SINGULARITY_INIT
fi

Thanks!

I created two images, and got similar results. I'll check again right now though.

Can you show me your entire /environment file in a newly created/bootstrapped container?
Thanks!

Well I'm currently building it again, but I'll definitely post it when it finishes in 5-10 minutes!

as a shortcut, you could remove /environment from an existing container and then run bootstrap against it with no definition file:
$ sudo singularity exec -w container.img rm -f /environment
$ sudo singularity bootstrap container.img

Sorry for taking so long, I accidentally messed up your instructions for speeding up the process. Anyways, here is the /environment file for my newly created test container:
$ singularity exec ubuntu.img cat /environment
'# Define any environment init code here
#

if test -z "$SINGULARITY_INIT"; then
    PATH=/bin:/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/bin:/sbin
    PS1="Singularity.$SINGULARITY_CONTAINER> $PS1"
    SINGULARITY_INIT=1
    export PATH PS1 SINGULARITY_INIT
fi

No worries... Hrmm.. That is really odd. Can you show me what is in the linux_build.smod:
$ grep PATH /usr/libexec/singularity/mods/linux_build.smod

(or where ever it was installed to)

$ grep PATH /usr/libexec/singularity/mods/linux_build.smod
        echo "    PATH=$PATH:/bin:/sbin" >> "$SINGULARITY_BUILD_ROOT/environment"
        echo '    export PATH PS1 SINGULARITY_INIT' >> "$SINGULARITY_BUILD_ROOT/environment"
    chroot "$SINGULARITY_BUILD_ROOT" /usr/bin/env -i PATH="$PATH" "$CMD" "$@"

I did a yum removes and yum installs today. Could that have maybe been the issue?

What branch are you running?

How can I tell? I just downloaded the master branch, an hour and a half ago.

Ahhh,... I was fixing it in 2.x, not master! Haha... ok, do another pull now please and let me know!
Thanks!

From the master or 2.x branch?

Seems to have been fixed. Thanks, Greg!

Perfect, thanks!


enable TLS for local environment

https://phabricator.wikimedia.org/T378691

[!WARNING]
Still very much WIP

[!NOTE]
depends on: https://github.com/wbstack/charts/pull/179

maybe you already did locally and didn't commit but I wondered if you needed to also touch https://github.com/wmde/wbaas-deploy/blob/main/bin/minikube-tunnel#L7 and open 443 there?

maybe you already did locally and didn't commit but I wondered if you needed to also touch https://github.com/wmde/wbaas-deploy/blob/main/bin/minikube-tunnel#L7 and open 443 there?

that was it, thanks.


DACT-242 Validate termination date before appointment date

Having discussed the pre 1992 appointment scenario with Richard, any resignation pre dating that won't be sent through on the TM01 form.
So it is just the minor code smell flagged up by sonar left

Latest commit was just to fix minor code conflicts