Please return arc-green theme or add a "dimmed" version of the current dark theme, v1.22 dark contrast is unbearable

Description
v1.22 changed the colors of the dark theme. The new background is almost black and new contrast creates serious eye strain. Please return and support the arc-green theme.
EDIT: If supporting arc-green is not an option as mentioned below by silverwind, please add a "dimmed" version of the current dark theme, with contrast on par with the arc-green of v1.21.
Screenshots

Gitea Version
1.22
Can you reproduce the bug on the Gitea demo site?
Yes
Operating System
No response
Browser Version
Firefox 126

I don't think we'll be going back to green primary, but a new low-contrast dark theme could be supported, similar to GitHub's "Dark dimmed".

Dimmed version would be fine, presently it's unusable for me without dark reader

In case others arrive at this thread, some history around this change, is that the increased contrast was to improve accessibility. Although, a dimmed version is likely possible, as long as it isn't the only option (so folks can choose the option that works the best for them).

a dimmed version is likely possible, as long as it isn't the only option
Let's start with at least one dimmed option as presently there's none and UX worsened.

Other users do appreciate the increased contrast, but I guess you can never make it right for everyone.
Also I think https://github.com/go-gitea/gitea/issues/30160 is a dependency if we want to keep our sanity while writing additional themes.

For return arc-green theme alone, you can put theme-arc-green.css in GITEA_CUSTOM/... directory. Works like a charm for now.
Customizing the look of Gitea.

For return arc-green theme alone, you can put theme-arc-green.css in GITEA_CUSTOM/... directory. Works like a charm for now. Customizing the look of Gitea.

A short-lived workaround, given that theme is out of support. Thank you regardless.

For return arc-green theme alone, you can put theme-arc-green.css in GITEA_CUSTOM/... directory. Works like a charm for now. Customizing the look of Gitea.

A short-lived workaround, given that theme is out of support. Thank you regardless.

Yes, it may still mostly work for 1.22, but eventually it's bound to break when CSS color variables are added or renamed.

Here is a temporary workaround for the current version 1.22.1. This includes all variables implemented in the latest theme:
https://github.com/lsd-techno/gitea-theme

Here is a temporary workaround for the current version 1.22.1. This includes all variables implemented in the latest theme:
https://github.com/lsd-techno/gitea-theme

Love the arc-green colors.
Unfortunately, using this breaks all Syntax Highlighting.
Broken in Markdown, Broken in the file views 😭

Here is a temporary workaround for the current version 1.22.1. This includes all variables implemented in the latest theme:
https://github.com/lsd-techno/gitea-theme

Love the arc-green colors. Unfortunately, using this breaks all Syntax Highlighting. Broken in Markdown, Broken in the file views 😭

Thanks for pointing out, code markup looks much pretty now, but can't see file views problem.

I'd like to hint to the fact that by changing the color from green to blue, we threw the corporate design under the bus. Should've changed the logo color as well then.

I'd like to hint to the fact that by changing the color from green to blue, we threw the corporate design under the bus. Should've changed the logo color as well then.

Agreed - I loved the green-dominant consistent with logotype in grey-ish dark theme; I wish had noticed and raised the voice when PR for theme change was open... Hope our 'cup of tee' doesn't go the blue way, as I much prefer green tea ;)

Why was it dropped at all? It was so unique, I miss the green. This blue stuff is so ordinary :-(


merge from template-arlac77-github

package.json

chore(deps): add ^22.0.4 remove ^22.0.1 (devDependencies.semantic-release)

:tada: This PR is included in version 1.0.8 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Expose CipherSuites via Config

Allow users to configure what CipherSuites they wish
to use
Resolves #64

Nice, thank you @jinleileiking !


feat(community): add ipfs ecosystem wg

This adds https://blog.ipfs.tech/2023-introducing-the-ecosystem-working-group/ to https://ipfs.tech/community/#meetups-wgs
cc @darobin

Let's merge this once we have a resolution on #292 to keep this section balanced.


use implicit solver in the gpu prognostic edmf job

Purpose

To-do

Content

[ ] I have read and checked the items on the review checklist.

Going to rebase to see the current state of things

Looks like this is working now 🙂

@szy21, should we merge this?

I updated this PR. Here is the error: https://buildkite.com/clima/climaatmos-ci/builds/18074#018eaa40-5e56-40d3-8d5b-a796cf4d4043/200-289


update README.md with correct dependency

What is the reason for this change? Probably you haven't enabled scalajs plugin in your build.sbt, or you have older sbt or scalajs version. I will update README.md with missing instructions from scalajs tutorial.

You are right, I didn't enable scalajs plugin and my sbt version is not 0.13.7. Thanks


Resolve access point creation with password

Fixes #1004
It turns out that the t2 ap command options changed in bin/tessel-2.js but lib/tessel/access-point.js was never updated to use opts.password instead of opts.pass.
There was also a frequent occurrence of an error, Error: udhcpc: sendto: Network is down, that would cause an empty wifi-iface to be added to etc/config/wireless. This has been resolved by removing unnecessary reconnectDnsmasq and reconnectDhcp commands within the commitAndClose function. Those were added naively when this feature was originally built by me. I've confirmed that existing and factory-reset Tessels work without those commands.
Smoke Test:

clone this repo
npm link path/to/clone
t2 ap --ssid "ThisIsMyTessel" --password "HelloWorld"

You should get the following result:
hipsterbrown:tessel-test $ t2 ap --ssid "ThisIsMyTessel" --password "HelloWorld"
INFO Looking for your Tessel...
INFO Connected to newtwo.
INFO Updated Access Point successfully. SSID:  ThisIsMyTessel, password HelloWorld, security mode: psk2

LGTM—merge when ready. This should go out in the patch release today.

Coverage decreased (-0.07%) to 76.114% when pulling 7dfed17e58776dd70cbeb7643ecb7e27ebb0a0c7 on HipsterBrown:ap-fix into 125917ed392b4496caf2cd0b95ba44087a412979 on tessel:master.

I think something is wrong with coveralls 0_o

Yea, that's a bit odd. Merging now that Travis has passed.


Add data for TextEncoder

Refs #1195
Testcase: http://jsbin.com/wodusal/edit?html,js,output

Thanks!

@cvrebert FYI, while doing verification I also included tests for TextDecoder, and as suspected all browsers with support also support it. So went ahead and combined the two into one.

Sweet! Thanks.


IntelliJ creates import statements which fail on runtime after (ts) transpile

When coding with IntelliJ which is fully typescript capable, when coding a line like this:
let message:GmailMessage = getCurrentMessage(event);

IntelliJ generates an import statement like this:
import GmailMessage = GoogleAppsScript.Gmail.GmailMessage;

This import statement becomes after transpiling and pushing:
var GmailMessage = GoogleAppsScript.Gmail.GmailMessage;

But this statement fails during script runtime. Problem is, without the import, I don't have any autocomplete in my IDE and of course the IDE flags the source as invalid.
How to handle that situation? I simply can't remove those lines manually in the Online Editor every time I have pushed. That would be a nightmare :)
Expected Behavior
No runtime error.
Actual Behavior
ReferenceError: "GoogleAppsScript" is not defined. [line: 9, function: , file: src/GetContextualAddOn]
Steps to Reproduce the Problem

use IDEA to code typed source code against Gmail AppsScript API
push the results

Specifications

latest IntelliJ IDEA on Mac
Version (clasp -v): clasp 1.5.0
OS (Mac/Linux/Windows): Mac

a different style of import results in error both in VSCode and IntelliJ.

I've updated the above comment with syntax highlighting.
I believe you should not need to use import statements, just install the types. I've tried with VSC.
I'll check about handling imports better, perhaps removing them before transpiling/pushing.
Does deleting them, then pushing work? (aside from the lack of autocompletion)

When i dont use imports, i dont get any autocompletion at all and the code is flagged with lots of errors. This is kind of unusable then.
VSC flags also errors but doe autocompletion nevertheless.
To your question. Yes, deleting the imports and pushing works.  Of course i can tell IDEA not to do imports at all which gives a bad coding experience in any case. I mean, using typescript and then dont having types and completion on coding? :-)

I will experiment with a solution that comments out the import line when pushing.
// import GmailMessage = GoogleAppsScript.Gmail.GmailMessage;
var greeter = function (person) {
    return "Hello, " + person + "!";
};
function testGreeter(event) {
  let message:GmailMessage = getCurrentMessage(event);
}

I created the 3rd party lib, so I can follow-up there.

Can you try installing the latest version of clasp 1.5.1, and see if the IntelliJ setup works?

grant.. you rock! Now it works like a dream. You comment out the imports right?
Had some trouble testing. Can it be that you need to deploy a new version to see changes in effect in the addon? A little bit weird because in the online editor i could just change the source and i was ready to go. Now with the need to create versions, i also need to install the addon again and again because a new version generates a new addon-Id which i need to install.
Shouldnt be this way i assume. Perhaps its also a weird caching thing on browser side. But thats a different story. I would put up a blog entry pretty soon to showcase the clasp way of developing addons with typescript. This is huge.

Yay! I'll close this issue. The imports are commented so you can still see them but they won't mess up the code.
Do note that multi-line imports don't work, but it doesn't look like the types have that for IntelliJ. i.e.
import {
  ...
} from '@types/google-apps-script';

Please create a new one if you see any other issues or have feature requests.


lock_excl bug fix

ctwrapper/functions lock was failing when access_key was None

Coverage decreased (-0.02%) to 50.5% when pulling ac0a689019d2953f606f14615bb6eec3998a3159 on lupien:fix_lock_excl into 25833ee958181622043cf36280f3d0f5cc6d8b38 on hgrecco:master.

Merged Thanks!


Update commonalities glossary with subproject relevant terms

https://github.com/camaraproject/WorkingGroups/pull/120

@shilpa-padgaonkar once we have internal aligment in the WG will go to commonalities for the terms to be included in the Glossary as a result of the contribution of this WG

Some initial compilation of terms for Carrier Billing WG:
Carrier Billing (a.k.a. Direct Carrier Billing): An online payment process which allows users to make purchases by charging payments against OB Billing Systems, accordingly to the user's configuration in the OB.
Purchase: The action of acquiring a (set of) good(s)
Payment: The process of paying for that (set of) good(s)
1-STEP Payment: Payment process perfomed in one phase (i.e. one action), that involves all the OB Carrier Billing Systems checkings to guarantee the reservation of the involved amount and trigger the charging against Billing Systems.
2-STEP Payment: Payment process performed in two phases (i.e. two actions). First action deals with payment preparation with deals with the checkings to guarantee the reservation of the involved amount. Second action is an explict confirmation or cancellation of the payment by the user. Any payment not confirmed/cancelled by a given user is discarded after some time in order to avoid inconsistency in the billing systems.
Please @bigludo7, @alabajnaid any improvement/refinement is more than welcome (as well as considering other terms if seen relevant)

Thanks !
Few comments:
Carrier Billing (a.k.a. Direct Carrier Billing): An online payment process which allows users to make purchases by charging payments against OB Billing Systems, accordingly to the user's configuration in the OB.  In a common usage in the industry, the payment is processed on current account balance or charged on next bill generated for this line.
Purchase: The action of acquiring a (set of) good(s)/service(s)
Question for Pedro: Need to indicate if order fulfillment is triggered from this request. From Juan Carlos Garcia explanation I understood that fulfillment is not triggered.
Payment: The process of paying for a (set of) good(s)/service(s)
1-STEP Payment: Payment process performed in one phase (i.e. one action), that involves all the OB Carrier Billing Systems checking ** (I will remove this) to guarantee the reservation of the involved amount** and trigger the charging against Billing Systems.
2-STEP Payment: Payment process performed in two phases (i.e. two actions). First action deals with payment preparation ** (I will remove this) with deals with the checking** to guarantee the reservation of the involved amount. Second action is an explicit confirmation or cancellation of the payment by the user. Any payment not confirmed/cancelled by a given user is discarded after some time in order to avoid inconsistency in the billing systems.

Agreed with the refinements (Carrier Billing, Payment, 1-STEP Payment, 2-STEP Payment)
Regarding Purchase, yes order fulfilment is not triggered by this request. Proposal:
Purchase: The action of acquiring a (set of) good(s)/service(s). Order fulfilment is not triggered from this request as it relies on merchant's responsibility.

If no further comments by Today, will generate PR towards Commonalities and closed this issue after merging

@FahadTanwir-STC please take a look today/tomorrow. If no additional comments we go with these terms into Commonalities WG

As no further comments, generating inout into Glossary Terms

Contributed to https://github.com/camaraproject/WorkingGroups/pull/120

Set to closed as contribution already made to Commonalities


feat(BASE): CW-18130 add base chain and tokens

Checklist:

README.md includes:

[ ] The details of signing data and transaction data, this includes parameters.
[ ] Official docs or white paper.
[ ] Website or api can query assets and broadcast transaction.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license

Task linked: CW-18130 [SDK] 加ChainId, Symbol, 簽章


Ebean Enhance with custom confDirectory location.

I've changed my confDirectory localtion in plugin configuration. ebean-enhance is seems have broken. It still looking for ${basedir}/conf/application.conf.
Play2EbeanEnhanceMojo should resolve application.conf file relative to confDirectory.

Thank you for your report.
Actually you found inconsistency in configuration.
confDirectory parameter was introduced long time ago (issue #22) and is used only by routes-compile mojo to find router files (not application.conf file).
ebean-enhance mojo uses two system properties config.resource and config.file to configure configuration file location.
Things are complicated because Ebean related logic was changing over time and was different for different Play! Framework versions. Since this plugin supports many versions, I would like it to behave like SBT behaves for every Play! version.
The simple solution would be to add confDirectory parameter to ebean-ehnance mojo, but I cannot guarantee this will be ultimate solution.
For now you have to run Maven with -Dconfig.file=configfilepath or -Dconfig.resource=configresourcename.
Could you create simple test project? I'm curious, how exactly your project looks like.

I tried to save standard maven folder structure in my project. I've placed conf directory to src/main/resources and changed path to directory through confDirectory.

While creating play module i've found one more issue. ebean-enhance resolves classes to enhance only from application.conf not reference.conf.
Ebean-enhance should resolve package to enhance not only from application.conf but reference.conf too.
Currently i am using -Dconfig.file as workaround.

Issue fixed by #162
New 1.0.0-rc3-SNAPSHOT snapshot deployed, can you test please.
New implementation supports reference.conf files. There is no need to use config.file or config.resource system parameters if application.conf (or reference.conf) file is located in resources directory (it doesn't have to be conf directory).

With 1.0.0-rc3-SNAPSHOT everything is working fine. Thanks!

Thank you for testing.
I've publish some of my tests projects for this issue here. Will cut 1.0.0-rc3 release soon.


Feature request for next: launchCamera for vertical images

I've been using the v1next project image picker and it's great! I would love to use launchCamera too but I need to take vertical images instead of horizontal ones. Is this possible already? If not it would be a great feature!

I don't understand by what you mean vertical and horizontal images.
FYI, this library does not access camera API directly instead delegates it to the default Camera app. So you should probably be able to take any image.

Ok this could be my phone (Pixel 3). It seems like the orientation is off by 90 degrees. If I open the camera holding the phone vertically and take a photo vertically then the image comes out horizontal (width larger than length). If I flip my phone 90 degrees then take the image it comes out vertically (length larger than width).
Perhaps this is related to #1338 and I should close this issue.

pixel android version

Android version 11 (Kernel version 4.9.223)

Hi. How did you manage to get it to work with NextJS. I'm using React Native  with RN Web + NextJS, with next config. So far every complicated things have worked. But this package, with this import on Typescript export * from './types'; can't work. I'm not using typescript yet. Do I need to install Typescript to get the Types?


testCase added

Looks good, for time being.

bro, why you have merged? till now i have not commited the updated one.
I send you the picture to confirm it.

Oh, I thought you are done with it. I was going to work on it but go ahead, and revert the PR. Make a new one with updated changes.


can't  install 0.5.2  - errors

pip --no-cache-dir install jpegtran-cffi
Collecting jpegtran-cffi
  Downloading jpegtran-cffi-0.5.2.tar.gz (138kB)
    100% |████████████████████████████████| 143kB 1.7MB/s
    Complete output from command python setup.py egg_info:
    In file included from jpegtran/__pycache__/_cffi__xbfac4b5xcdb1023.c:210:0:
    src/epeg_private.h:71:17: warning: ‘_jpeg_init_source’ declared ‘static’ but never defined [-Wunused-function]
     METHODDEF(void) _jpeg_init_source(j_decompress_ptr cinfo);
                     ^
    src/epeg_private.h:72:20: warning: ‘_jpeg_fill_input_buffer’ declared ‘static’ but never defined [-Wunused-function]
     METHODDEF(boolean) _jpeg_fill_input_buffer(j_decompress_ptr cinfo);
                        ^
    src/epeg_private.h:73:17: warning: ‘_jpeg_skip_input_data’ declared ‘static’ but never defined [-Wunused-function]
     METHODDEF(void) _jpeg_skip_input_data(j_decompress_ptr cinfo, long num_bytes);
                     ^
    src/epeg_private.h:74:17: warning: ‘_jpeg_term_source’ declared ‘static’ but never defined [-Wunused-function]
     METHODDEF(void) _jpeg_term_source(j_decompress_ptr cinfo);
                     ^
    src/epeg_private.h:76:17: warning: ‘_jpeg_init_destination’ declared ‘static’ but never defined [-Wunused-function]
     METHODDEF(void) _jpeg_init_destination(j_compress_ptr cinfo);
                     ^
    src/epeg_private.h:77:20: warning: ‘_jpeg_empty_output_buffer’ declared ‘static’ but never defined [-Wunused-function]
     METHODDEF(boolean) _jpeg_empty_output_buffer (j_compress_ptr cinfo);
                        ^
    src/epeg_private.h:78:17: warning: ‘_jpeg_term_destination’ declared ‘static’ but never defined [-Wunused-function]
     METHODDEF(void) _jpeg_term_destination (j_compress_ptr cinfo);
                     ^
    src/epeg.c: In function ‘_epeg_trim’:
    src/epeg.c:1101:28: warning: variable ‘w’ set but not used [-Wunused-but-set-variable]
        int            y, a, b, w, h;
                                ^
    src/epeg.c: In function ‘_epeg_encode’:
    src/epeg.c:1204:52: warning: pointer targets in passing argument 3 of ‘jpeg_write_marker’ differ in signedness [-Wpointer-sign]
          jpeg_write_marker(&(im->out.jinfo), JPEG_COM, im->out.comment, strlen(im->out.comment));
                                                        ^
    In file included from src/epeg_private.h:14:0,
                     from src/epeg.c:2:
    /usr/include/jpeglib.h:969:14: note: expected ‘const JOCTET * {aka const unsigned char *}’ but argument is of type ‘char *’
     EXTERN(void) jpeg_write_marker (j_compress_ptr cinfo, int marker,
                  ^
    src/epeg.c:1213:58: warning: pointer targets in passing argument 3 of ‘jpeg_write_marker’ differ in signedness [-Wpointer-sign]
           jpeg_write_marker(&(im->out.jinfo), JPEG_APP0 + 7, buf, strlen(buf));
                                                              ^
    In file included from src/epeg_private.h:14:0,
                     from src/epeg.c:2:
    /usr/include/jpeglib.h:969:14: note: expected ‘const JOCTET * {aka const unsigned char *}’ but argument is of type ‘char *’
     EXTERN(void) jpeg_write_marker (j_compress_ptr cinfo, int marker,
                  ^
    src/epeg.c:1216:53: warning: pointer targets in passing argument 3 of ‘jpeg_write_marker’ differ in signedness [-Wpointer-sign]
      jpeg_write_marker(&(im->out.jinfo), JPEG_APP0 + 7, buf, strlen(buf));
                                                         ^
    In file included from src/epeg_private.h:14:0,
                     from src/epeg.c:2:
    /usr/include/jpeglib.h:969:14: note: expected ‘const JOCTET * {aka const unsigned char *}’ but argument is of type ‘char *’
     EXTERN(void) jpeg_write_marker (j_compress_ptr cinfo, int marker,
                  ^
    src/epeg.c:1218:53: warning: pointer targets in passing argument 3 of ‘jpeg_write_marker’ differ in signedness [-Wpointer-sign]
      jpeg_write_marker(&(im->out.jinfo), JPEG_APP0 + 7, buf, strlen(buf));
                                                         ^
    In file included from src/epeg_private.h:14:0,
                     from src/epeg.c:2:
    /usr/include/jpeglib.h:969:14: note: expected ‘const JOCTET * {aka const unsigned char *}’ but argument is of type ‘char *’
     EXTERN(void) jpeg_write_marker (j_compress_ptr cinfo, int marker,
                  ^
    src/epeg.c:1220:53: warning: pointer targets in passing argument 3 of ‘jpeg_write_marker’ differ in signedness [-Wpointer-sign]
      jpeg_write_marker(&(im->out.jinfo), JPEG_APP0 + 7, buf, strlen(buf));
                                                         ^
    In file included from src/epeg_private.h:14:0,
                     from src/epeg.c:2:
    /usr/include/jpeglib.h:969:14: note: expected ‘const JOCTET * {aka const unsigned char *}’ but argument is of type ‘char *’
     EXTERN(void) jpeg_write_marker (j_compress_ptr cinfo, int marker,
                  ^
    src/epeg.c:1222:53: warning: pointer targets in passing argument 3 of ‘jpeg_write_marker’ differ in signedness [-Wpointer-sign]
      jpeg_write_marker(&(im->out.jinfo), JPEG_APP0 + 7, buf, strlen(buf));
                                                         ^
    In file included from src/epeg_private.h:14:0,
                     from src/epeg.c:2:
    /usr/include/jpeglib.h:969:14: note: expected ‘const JOCTET * {aka const unsigned char *}’ but argument is of type ‘char *’
     EXTERN(void) jpeg_write_marker (j_compress_ptr cinfo, int marker,
                  ^
    jpegtran/__pycache__/_cffi__xb366312fxf3ca0677.c:209:27: fatal error: turbojpeg.h: Nie ma takiego pliku ani katalogu
    compilation terminated.
    src/transupp.c: In function ‘do_flip_h_no_crop’:
    src/transupp.c:137:42: error: ‘struct jpeg_compress_struct’ has no member named ‘min_DCT_h_scaled_size’
         (dstinfo->max_h_samp_factor * dstinfo->min_DCT_h_scaled_size);
                                              ^
    src/transupp.c: In function ‘do_flip_h’:
    src/transupp.c:203:42: error: ‘struct jpeg_compress_struct’ has no member named ‘min_DCT_h_scaled_size’
         (dstinfo->max_h_samp_factor * dstinfo->min_DCT_h_scaled_size);
                                              ^
    src/transupp.c: In function ‘do_flip_v’:
    src/transupp.c:268:42: error: ‘struct jpeg_compress_struct’ has no member named ‘min_DCT_v_scaled_size’
         (dstinfo->max_v_samp_factor * dstinfo->min_DCT_v_scaled_size);
                                              ^
    src/transupp.c: In function ‘do_rot_90’:
    src/transupp.c:396:42: error: ‘struct jpeg_compress_struct’ has no member named ‘min_DCT_h_scaled_size’
         (dstinfo->max_h_samp_factor * dstinfo->min_DCT_h_scaled_size);
                                              ^
    src/transupp.c: In function ‘do_rot_270’:
    src/transupp.c:477:42: error: ‘struct jpeg_compress_struct’ has no member named ‘min_DCT_v_scaled_size’
         (dstinfo->max_v_samp_factor * dstinfo->min_DCT_v_scaled_size);
                                              ^
    src/transupp.c: In function ‘do_rot_180’:
    src/transupp.c:545:42: error: ‘struct jpeg_compress_struct’ has no member named ‘min_DCT_h_scaled_size’
         (dstinfo->max_h_samp_factor * dstinfo->min_DCT_h_scaled_size);
                                              ^
    src/transupp.c:547:42: error: ‘struct jpeg_compress_struct’ has no member named ‘min_DCT_v_scaled_size’
         (dstinfo->max_v_samp_factor * dstinfo->min_DCT_v_scaled_size);
                                              ^
    src/transupp.c: In function ‘do_transverse’:
    src/transupp.c:656:42: error: ‘struct jpeg_compress_struct’ has no member named ‘min_DCT_h_scaled_size’
         (dstinfo->max_h_samp_factor * dstinfo->min_DCT_h_scaled_size);
                                              ^
    src/transupp.c:658:42: error: ‘struct jpeg_compress_struct’ has no member named ‘min_DCT_v_scaled_size’
         (dstinfo->max_v_samp_factor * dstinfo->min_DCT_v_scaled_size);
                                              ^
    src/transupp.c: In function ‘jtransform_request_workspace’:
    src/transupp.c:900:3: warning: implicit declaration of function ‘jpeg_core_output_dimensions’ [-Wimplicit-function-declaration]
       jpeg_core_output_dimensions(srcinfo);
       ^
    src/transupp.c:908:11: error: ‘struct jpeg_decompress_struct’ has no member named ‘min_DCT_h_scaled_size’
        srcinfo->min_DCT_h_scaled_size,
               ^
    src/transupp.c:909:11: error: ‘struct jpeg_decompress_struct’ has no member named ‘min_DCT_v_scaled_size’
        srcinfo->min_DCT_v_scaled_size,
               ^
    src/transupp.c:915:40: error: ‘struct jpeg_decompress_struct’ has no member named ‘min_DCT_h_scaled_size’
        srcinfo->max_h_samp_factor * srcinfo->min_DCT_h_scaled_size,
                                            ^
    src/transupp.c:916:40: error: ‘struct jpeg_decompress_struct’ has no member named ‘min_DCT_v_scaled_size’
        srcinfo->max_v_samp_factor * srcinfo->min_DCT_v_scaled_size,
                                            ^
    src/transupp.c:935:40: error: ‘struct jpeg_decompress_struct’ has no member named ‘min_DCT_v_scaled_size’
           info->iMCU_sample_width = srcinfo->min_DCT_v_scaled_size;
                                            ^
    src/transupp.c:936:41: error: ‘struct jpeg_decompress_struct’ has no member named ‘min_DCT_h_scaled_size’
           info->iMCU_sample_height = srcinfo->min_DCT_h_scaled_size;
                                             ^
    src/transupp.c:939:38: error: ‘struct jpeg_decompress_struct’ has no member named ‘min_DCT_v_scaled_size’
      srcinfo->max_v_samp_factor * srcinfo->min_DCT_v_scaled_size;
                                          ^
    src/transupp.c:941:38: error: ‘struct jpeg_decompress_struct’ has no member named ‘min_DCT_h_scaled_size’
      srcinfo->max_h_samp_factor * srcinfo->min_DCT_h_scaled_size;
                                          ^
    src/transupp.c:948:40: error: ‘struct jpeg_decompress_struct’ has no member named ‘min_DCT_h_scaled_size’
           info->iMCU_sample_width = srcinfo->min_DCT_h_scaled_size;
                                            ^
    src/transupp.c:949:41: error: ‘struct jpeg_decompress_struct’ has no member named ‘min_DCT_v_scaled_size’
           info->iMCU_sample_height = srcinfo->min_DCT_v_scaled_size;
                                             ^
    src/transupp.c:952:38: error: ‘struct jpeg_decompress_struct’ has no member named ‘min_DCT_h_scaled_size’
      srcinfo->max_h_samp_factor * srcinfo->min_DCT_h_scaled_size;
                                          ^
    src/transupp.c:954:38: error: ‘struct jpeg_decompress_struct’ has no member named ‘min_DCT_v_scaled_size’
      srcinfo->max_v_samp_factor * srcinfo->min_DCT_v_scaled_size;
                                          ^
    src/transupp.c: In function ‘transpose_critical_parameters’:
    src/transupp.c:1127:18: error: ‘struct jpeg_compress_struct’ has no member named ‘min_DCT_h_scaled_size’
       itemp = dstinfo->min_DCT_h_scaled_size;
                      ^
    src/transupp.c:1128:10: error: ‘struct jpeg_compress_struct’ has no member named ‘min_DCT_h_scaled_size’
       dstinfo->min_DCT_h_scaled_size = dstinfo->min_DCT_v_scaled_size;
              ^
    src/transupp.c:1128:43: error: ‘struct jpeg_compress_struct’ has no member named ‘min_DCT_v_scaled_size’
       dstinfo->min_DCT_h_scaled_size = dstinfo->min_DCT_v_scaled_size;
                                               ^
    src/transupp.c:1129:10: error: ‘struct jpeg_compress_struct’ has no member named ‘min_DCT_v_scaled_size’
       dstinfo->min_DCT_v_scaled_size = itemp;
              ^
    src/transupp.c: In function ‘jtransform_adjust_parameters’:
    src/transupp.c:1365:10: error: ‘struct jpeg_compress_struct’ has no member named ‘jpeg_width’
       dstinfo->jpeg_width = info->output_width;
              ^
    src/transupp.c:1366:10: error: ‘struct jpeg_compress_struct’ has no member named ‘jpeg_height’
       dstinfo->jpeg_height = info->output_height;
              ^
    src/transupp.c:1393:16: error: ‘struct jpeg_compress_struct’ has no member named ‘jpeg_width’
         if (dstinfo->jpeg_width != srcinfo->image_width ||
                    ^
    src/transupp.c:1394:9: error: ‘struct jpeg_compress_struct’ has no member named ‘jpeg_height’
      dstinfo->jpeg_height != srcinfo->image_height)
             ^
    src/transupp.c:1398:9: error: ‘struct jpeg_compress_struct’ has no member named ‘jpeg_width’
      dstinfo->jpeg_width, dstinfo->jpeg_height);
             ^
    src/transupp.c:1398:30: error: ‘struct jpeg_compress_struct’ has no member named ‘jpeg_height’
      dstinfo->jpeg_width, dstinfo->jpeg_height);
                                  ^
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-gOd1tR/jpegtran-cffi/setup.py", line 5, in <module>
        import jpegtran.lib
      File "/tmp/pip-build-gOd1tR/jpegtran-cffi/jpegtran/__init__.py", line 1, in <module>
        from jpegtran.transform import JPEGImage
      File "/tmp/pip-build-gOd1tR/jpegtran-cffi/jpegtran/transform.py", line 5, in <module>
        import jpegtran.lib as lib
      File "/tmp/pip-build-gOd1tR/jpegtran-cffi/jpegtran/lib.py", line 208, in <module>
        libraries=["jpeg"])
      File "/usr/lib/python2.7/dist-packages/cffi/api.py", line 450, in verify
        lib = self.verifier.load_library()
      File "/usr/lib/python2.7/dist-packages/cffi/verifier.py", line 113, in load_library
        self._compile_module()
      File "/usr/lib/python2.7/dist-packages/cffi/verifier.py", line 210, in _compile_module
        outputfilename = ffiplatform.compile(tmpdir, self.get_extension())
      File "/usr/lib/python2.7/dist-packages/cffi/ffiplatform.py", line 29, in compile
        outputfilename = _build(tmpdir, ext, compiler_verbose)
      File "/usr/lib/python2.7/dist-packages/cffi/ffiplatform.py", line 62, in _build
        raise VerificationError('%s: %s' % (e.__class__.__name__, e))
    cffi.ffiplatform.VerificationError: CompileError: command 'x86_64-linux-gnu-gcc' failed with exit status 1

Are you installing from PyPi or from the repository?
This might be related to a bad libjpeg version. I removed support for libjpeg back in February so that the bindings now only require libturobjpeg headers, you might want to give that a try.

via $ pip --no-cache-dir install jpegtran-cffi

Can you try installing from the GitHub repository?
pip install git+https://github.com/jbaiter/jpegtran-cffi.git@master

$  pip install git+https://github.com/jbaiter/jpegtran-cffi.git@master

Collecting git+https://github.com/jbaiter/jpegtran-cffi.git@master
Cloning https://github.com/jbaiter/jpegtran-cffi.git (to master) to /tmp/pip-boiDuH-build
Requirement already satisfied (use --upgrade to upgrade): cffi>=1.0 in /usr/lib/python2.7/dist-packages (from jpegtran-cffi===0.6a1)
Installing collected packages: jpegtran-cffi
Running setup.py install for jpegtran-cffi ... error
Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;file='/tmp/pip-boiDuH-build/setup.py';exec(compile(getattr(tokenize, 'open', open)(file).read().replace('\r\n', '\n'), file, 'exec'))" install --record /tmp/pip-Yu93EC-record/install-record.txt --single-version-externally-managed --compile:
/usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'description_long'
warnings.warn(msg)
running install
running build
running build_py
creating build
creating build/lib.linux-x86_64-2.7
creating build/lib.linux-x86_64-2.7/jpegtran
copying jpegtran/jpegtran_build.py -> build/lib.linux-x86_64-2.7/jpegtran
copying jpegtran/init.py -> build/lib.linux-x86_64-2.7/jpegtran
copying jpegtran/transform.py -> build/lib.linux-x86_64-2.7/jpegtran
copying jpegtran/lib.py -> build/lib.linux-x86_64-2.7/jpegtran
copying jpegtran/jpegtran.cdef -> build/lib.linux-x86_64-2.7/jpegtran
running build_ext
generating cffi module 'build/temp.linux-x86_64-2.7/_jpegtran.c'
creating build/temp.linux-x86_64-2.7
building '_jpegtran' extension
creating build/temp.linux-x86_64-2.7/build
creating build/temp.linux-x86_64-2.7/build/temp.linux-x86_64-2.7
creating build/temp.linux-x86_64-2.7/src
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -DHAVE_UNSIGNED_CHAR=1 -Isrc -I/usr/include/python2.7 -c build/temp.linux-x86_64-2.7/_jpegtran.c -o build/temp.linux-x86_64-2.7/build/temp.linux-x86_64-2.7/_jpegtran.o
build/temp.linux-x86_64-2.7/_jpegtran.c:426:23: fatal error: turbojpeg.h: Nie ma takiego pliku ani katalogu
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
----------------------------------------

Command "/usr/bin/python -u -c "import setuptools, tokenize;file='/tmp/pip-boiDuH-build/setup.py';exec(compile(getattr(tokenize, 'open', open)(file).read().replace('\r\n', '\n'), file, 'exec'))" install --record /tmp/pip-Yu93EC-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-boiDuH-build/

You're missing the turbojpeg header files, please install them before compiling (apt-get install libturbojpeg0-dev  in Debian/Ubuntu).

Hopefully this nicely detailed report sends people here from search engines.
Thanks for reporting.


📝 Drop Core from Fedora's name

Thanks to Fabio Valentini for pointing this out:

"Fedora Core" isn't a thing any more - Fedora 7 dropped the "Core" from the name in, uhm ... 2007: https://fedoraproject.org/wiki/Releases/7

@decathorpe  better?

Yes, sorry for being pedantic 😅
(the package is also available on Fedora 37)

Dude, you can't be more pedantic than me. So don't worry about that at all. 😊
Great. I'll update the PR.


deb file errors and invalid mime type

Current deb as of today has a few errors.

Since it isn't signed most user friendly package mangers like Discover, or Gnome Store won't work.
If you install via the terminal you get this output.
chmod: cannot access '/opt/LBRY/chrome-sandbox': No such file or directory
Error in file "/usr/share/applications/org.kde.kdeconnect_open.desktop": "/" is an invalid MIME type ("*" is an unregistered media type)

The application works, but just thought I would share this to see if it can be improved.

Thanks @Goddard. @jessopb is this related to Electron upgrade?

Most likely related to certain distros...the electron upgrade may help. We should probably encourage the appimage more also.

This sounds like an issue with KDE, I found various bugs like https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=963498  filed online.
We also have an appimage available which provides better in-app upgrade support.
Closing this for now.

I know I posted 1 issue, but it is really 3 things.

The deb should be signed which is the major issue because it causes most simple user friendly installers to not work.  It causes you to be required to drop to a terminal and run dpkg.  As opposed to Gnome Software/Discover etc..
chmod: cannot access '/opt/LBRY/chrome-sandbox': No such file or directory - I am not really sure if this even matters, but just bringing it to your attention.

Signing a deb package isn't part of the electron packaging tools we're using and it's still supported in most app installers. We should really make the appimage the primary installation method since it supports autoupgrades better.
The chmod issue only affects a few OSes and we'd need to disable sandboxing on the deb for it to work on those. Since it works without it, we'll keep it for now.


Support resource requests and limits

Add native support for resource requests and limits to acornfile.
The best usecase test for this will be to prove that we can properly launch and manage AI/ML applications that require GPU support

whoops. dupe of https://github.com/acorn-io/acorn/issues/43


Public folder generated after yarn build not working

Hi,
I have tried the yarn build command, but when I go to public folder and open the index.html file on Chrome, I see nothing, in the console there are no error,  if I use yarn start or yarn dev I can see the content of the page. someone can explain me why?
thanks

I got the same problem

If it's useful, this is the public generated:
public.zip

Hi @Piero87 and @Yhozen
So, this is kind of an expected behavior with React Router similar to this issue https://github.com/ReactTraining/react-router/issues/3567 where you need to setup a webserver in order to get it working
You can if you are using Mac/Linux simply run the following command inside public directory:
python -m SimpleHTTPServer 8000

Then it should work for you :)

We've just updated the readme to include some instruction in case people run into similar issue here.

Thanks!


MM-32637 - Incident reminders shouldn't apply on archiving

Summary

Simple solution
tests will fail until the fix is merged in another 3 PRs

Ticket Link

https://mattermost.atlassian.net/browse/MM-32637

/update-branch


How would I change the primary keys in the identity tables to int instead of string?

Porting a question from the EF repo (https://github.com/aspnet/EntityFramework/issues/4879) asked by @TDK1964...
How would I change the primary keys in the identity tables to int instead of string?
I basically want to change all the string Guids PK's to int so this would include IdentityUserRole,IdentityUserLogin,IdentityUserClaim,IdentityRole,ApplicationUser (or should that be IdentityUser?)
I also want to change the table names to
builder.Entity<ApplicationUser>().ForSqlServerToTable().Table("Users");
builder.Entity<IdentityUserRole<string>>().ForSqlServerToTable("UserRoles");
builder.Entity<IdentityUserLogin<string>>().ForSqlServerToTable("UserLogins");
builder.Entity<IdentityUserClaim<string>>().ForSqlServerToTable("UserClaims");
builder.Entity<IdentityRole>().ForSqlServerToTable("Roles");

I have tried .ToTable("...") but this doesn't work either.

It's doable but requires too much hassle that just decided to go with the default string ID.
(You can not use IdentityDbContext, all the templates need to be changed)
This is a thing I really wish to be fixed soon too.

Any thoughts?

Instructions for this would be quite important for us since we try need to use a large pre-existing database that uses INT as the primary user key.

@rowanmiller who should we ping to get a response?
It's sad that EF and asp.net core that gives so much flexibility enforces such a thing that I believe must of the users wouldn't want.
How many .Net applications are there that int isn't their pk type for users?
You need an enormous amount of users to actually need to use GUID as the PK.

@HaoK can you please respond to this question with details?

@HaoK It's not just the DbContext, it's Identity helper classes (e.g. UserManager) as well (and obviously the asp.net templates).
Isn't it?

There should be no change in UserManager nor in the templates, Identity itself always treats the key as a string.  Its only the stores that store the keys whatever type you want (and to do the TKey => string translation)

@HaoK Your solution worked for me. These are the changes I made and includes renaming the tables.
public class ApplicationUser : IdentityUser<int>
{
...
}
public class ApplicationRole : IdentityRole<int>
{
...
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, int>
{
...
protected override void OnModelCreating(ModelBuilder builder)
{
	builder.Entity<ApplicationUser>(i => {
		i.ToTable("Users");
		i.HasKey(x => x.Id);
	});
	builder.Entity<ApplicationRole>(i => {
		i.ToTable("Role");
		i.HasKey(x => x.Id);
	});
	builder.Entity<IdentityUserRole<int>>(i => {
		i.ToTable("UserRole");
		i.HasKey(x => new { x.RoleId, x.UserId });
	});
	builder.Entity<IdentityUserLogin<int>>(i => {
		i.ToTable("UserLogin");
		i.HasKey(x => new { x.ProviderKey, x.LoginProvider });
	});
	builder.Entity<IdentityRoleClaim<int>>(i => {
		i.ToTable("RoleClaims");
		i.HasKey(x => x.Id);
	});
	builder.Entity<IdentityUserClaim<int>>(i => {
		i.ToTable("UserClaims");
		i.HasKey(x => x.Id);
	});
    }
}

I'm doing some verification for the ASP.NET Identity features and have not been successful in getting the Identity DB to change the user ID type from guid to int. If this is going to be a common scenario, we may need better docs.
I tried doing what's described above by @TDK1964, but it ends up producing the error:
System.TypeLoadException
GenericArguments[0], 'WebApplication1.Data.ApplicationUser', on 'Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore`8[TUser,TRole,TContext,TKey,TUserClaim,TUserRole,TUserLogin,TUserToken]' violates the constraint of type parameter 'TUser'.

at System.RuntimeTypeHandle.Instantiate(RuntimeTypeHandle handle, IntPtr* pInst, int numGenericArgs, ObjectHandleOnStack type)

at System.RuntimeTypeHandle.Instantiate(Type[] inst)

at System.RuntimeType.MakeGenericType(Type[] instantiation)

I don't know why this type error occurs at runtime, given that there was no build error. I'm using the 21343 (6/11) build.
So, is this a scenario we need to support, and if so, can you provide instructions for doing it? Have I missed where this is documented, or should I file an issue for it to be documented? Thanks!

@HaoK @divega

I'm on my mobile phone, but you should add to the startup class some code that says the PK is an interesting.
I'll upload it soon.
It works fine for me (using RC 2)

I did also try changing the AddIdentity call in Startup.cs to specify the custom generic types:
services.AddIdentity<ApplicationUser, ApplicationRole>(...

... but that didn't change the outcome. Is there some other code I need to add?

@SteveSandersonMS
        services.AddIdentity<ApplicationUser, Role>()
            .AddEntityFrameworkStores<ApplicationDbContext, int>()

This does the trick for me.

Yeah that is an easy step to miss. We should make sure the docs are updated to make it clear.

Thanks! Yes, that works :)

@HaoK, BTW, why is it even needed?
Why isn't inheriting from IdentityDbContext with the generic parameters <IntUser, IntRole, int> enough?
It looks redundant.

Because .AddEntityFrameworkStores<ApplicationDbContext>() is really .AddEntityFrameworkStores<ApplicationDbContext, string>()

@HaoK I meant to say, that since you pass in ApplicationDbContext, you can infer the PK type IdentityDbContext generic parameter.

Our constraint is that its a DbContext not necessarily one derived from IdentityDbContext

@HaoK Since most do, can't you check is IdentityDbContext?
That sounds like a lot better UX even if not the best OO.

Sure filed a issue to consider in the future

@HaoK Out of curiosity, in which timezone are you...?  :+1:

Changing the user PK to int caused me problems with external login providers (OAuth).
Be aware.
#885

Hi guys, using EF 1.1.0 and Identity Server 4 I got this working using the following steps:
Change the ApplicationDbContext or whatever you used to reflect this one:
        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);

            // Customizations
            builder.Entity<ApplicationUser>(i =>
            {
                i.ToTable("Users");
                i.HasKey(x => x.Id);
            });
            builder.Entity<ApplicationRole>(i =>
            {
                i.ToTable("Roles");
                i.HasKey(x => x.Id);
            });
            builder.Entity<IdentityUserRole<Guid>>(i =>
            {
                i.ToTable("UserRoles");
                i.HasKey(x => new { x.RoleId, x.UserId });
            });
            builder.Entity<IdentityUserLogin<Guid>>(i =>
            {
                i.ToTable("UserLogins");
                i.HasKey(x => new { x.ProviderKey, x.LoginProvider });
            });
            builder.Entity<IdentityRoleClaim<Guid>>(i =>
            {
                i.ToTable("RoleClaims");
                i.HasKey(x => x.Id);
            });
            builder.Entity<IdentityUserClaim<Guid>>(i =>
            {
                i.ToTable("UserClaims");
                i.HasKey(x => x.Id);
            });
            builder.Entity<IdentityUserToken<Guid>>(i =>
            {
                i.ToTable("UserTokens");
                i.HasKey(x => x.UserId);
            });
        }

Create a Custom ApplicationUser class
    public class ApplicationUser : IdentityUser<Guid>
    {
    }

Create a Custom ApplicationRole class
    public class ApplicationRole : IdentityRole<Guid>
    {
    }

Change your ASP.NET Core Startup according:

// entity framework for asp.net identity
services
    .AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlServer(Configuration.GetConnectionString("xxx")));

// identity models
services
    .AddIdentity<ApplicationUser, ApplicationRole>()
    .AddEntityFrameworkStores<ApplicationDbContext, Guid>()
    .AddDefaultTokenProviders();

Drop the existing DB because the schema can't be migrated from PK String to PK Guid
dotnet ef database drop -c ApplicationDbContext
Create the initial migration
dotnet ef migrations add InitialCreate -c ApplicationDbContext
Create the database
dotnet ef database update

raffaeu, don't you also have to change the ApplicationDbContext class signature to something like:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, Guid>

Yes, I forgot to mention @Kurtbaby
You also have to change the inheritance signature of ApplicationContext in this way:
    public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, Guid>
    {


SyncVars are useless

I understand how to use Syncvars and SyncVar Hooks, but I don't see the point of using them instead of regular Commands and Rpcs since they can do the exact same things.
I say that because you are removing SyncEvents from Mirror to save complexity and I think you could potentially do the same with SyncVars.
If you think you should definitely keep the SyncVars because of some performance or banwidth saving improvements, then please, make it more explicit in the documentation.

:O  downvote
Ive come from a networking place where you just had regular variables and functions to change them, the sync vars have been revolutionary in comparison to not having them. I like them.

Agreed down vote. The reason syncevents are being taken out is because you have to send it and it triggered on otherside when you receive a message. Syncvars do the same thing.
You can change the variable server side and it auto sends to clients and clients can either ignore the hook for it and just have updated data or do something with the hook like you would with syncevent.
This is the reason for removing syncevents because we have syncvars that do the exact same thing but also have option to not use the hook and just have updated data. Also removing it means I have to call an rpc command to update info on client which still creates a message just it would for the syncvar. It adds complex to end users having to add a method for each little variable float they want to update. While if all i need to know is say the velocity in the script in question and client side can do all the rest to do things client side. All server has to do is change the variable with simple speed = 5.0 and it auto does the message for me 1 line. I get lines dont mean speed or anything but wwhen you have to create like 4-5 lines of code to make a simple command to update a single variable thats more lines the compiler and unity needs to step through versus just set it and forget it until goes to client.

context on syncevent https://github.com/vis2k/Mirror/pull/2178#issuecomment-685889502
One key difference: Rpc are only sent to client who current have the object spawned (eg in range if they have network visibility) where as SyncVar is sent to existing spawned objects and newly spawned objects (with its current value)
SyncVar are currently the main way to send data with the spawn message be be applied on client side right away

To add even more, Rpcs are simply just messages, whereas SyncVars are a way to manage a network "state". Think of Rpcs as a way to send "events", something that is raised/invoked only to connections that are observing in that moment. Whereas, SyncVars are persistent data that is retained throughout the life cycle of the entity. As James pointed out, if a connection wasnt observing when the SyncVar state changed, they will get a copy of the latest value the next time they observe the entity.

This is old, but I'm going to add that SyncVars are absolutely the way you SHOULD be doing things. At one point in my project I started favoring Commands and RPCs. This was very bad because it made syncing way more complex, as I had to sync things that already happened when new players joined. A problem that is solved out of the box with SyncVars and hooks.
When you go to use more advanced features Mirror has to offer, like Interest Management, you will want to have most of your state logic tied to SyncVar's and their hook. Or else Interest Management won't set the state properly, or you will have to write more commands and rpcs to handle something that just works with SyncVars.
I'm also guessing syncvars are more efficient as they can by synced in batches, and only fire on change.

late to the party, just wanted to add that, let's not forget about float predictions with syncvars

Hi there.
I have continued using Mirror since my last post and I have completely changed my mind about syncvars :
They are a MUST HAVE for any networking solution.


Ubuntu server

Now also inserted comment about legacy DN option in the sample Apache configuration in the appendix.

Hi @cfenell, thanks so much for this really fantastic work. Unfortunately, we don't really have the expertise to maintain such detailed documentation, so it would become out of date very quickly. We also have moved to other preferred methods for maintaining server instances like k8s, so this page is not really necessary any more. Nothing to do with the quality of this page, but for that reason this PR should be closed without merging. Sorry!!


Self/own messages triggering chat notifications

Describe the bug
When you type a message containing phrases you have highlighted to send notifications

Chat notifications on
Highlight words
Notify on highlight
Allow desktop notifications (not necessary but annoying)

you will receive a desktop notification every time your chat (including autochat!) says the phrase INCLUDING if your username has the phrase/word in it for example you want to know if someone says "whip" if your name is "whip" and/or u say "whip 5m" (including on autochat - more likely to happen in this scenario) u will receive notifications you definitely do not want.
To Reproduce
I believe this is example above sorry
Expected behavior
No notifications for own messages, alternatively a button to allow self-messages to be excluded from notifications.
Environment (please complete the following information):

OS: windows 10 home unactivated
RuneLite version: 17.0
Launcher version: 2.1.6

Example:

Red text is the notification.

While the image doesn't indicate it both public and clan messages will trigger the notification


If one log routine is switching files, will it affect the writing of other routine?

As the Write func impl,  will lock mutex, if this operation waste too much time, such as compress, other routine will block？

Compress is done in a separate goroutine, so it won't block, specifically for this reason. At most, write will rename the current file and open a new one. That's still a lot for a single log write, but way shorter than than compression, and it shouldn't happen very often.


Fix issue #66

Fixes: #66
Description: Added env. example and CODE_OF_CONDUCT.md file.
Attach Screenshots (if needed)

thanks!


polish: overnight section text pill formatting

Notion task: Bad formatting on overnight_section text pills
Text was off centered, so updated formatting so it is centered in pill.

[ ] Tests added?

I'm seeing off-centered pills in this case:

Going a different direction. Will use a new PR and branch.


TFJob Common

https://www.kubeflow.org/docs/reference/tfjob/v1beta2/common/
broken links

/assign


Don't double apply rotation

Motivation and Context
Little bug in OBB loading for mp3d.  The radius of the obb is getting double corrected by the worldRotation.
How Has This Been Tested
User has a visualization script, used that.
Types of changes

Bug fix (non-breaking change which fixes an issue)

Maybe better to re-factor with a boolean (default true) to apply world rotation instead of undoing?

Yeah, that does seem cleaner.  Change made.


Adapter located in wrong category (type) in stable repository?

I've seen that the PushBullet adapter is located in "communications" in the ioBroker adapters default/stable list. The question is: why? The io-package.json in the project is correct (type: "messaging") and even the repository files in this repo are correct (type: "messaging"):
https://github.com/ioBroker/ioBroker.repositories/blob/06f65ac470477e0c754b006f273a7ba8fce4b56d/sources-dist.json#L1390-L1394
https://github.com/ioBroker/ioBroker.repositories/blob/06f65ac470477e0c754b006f273a7ba8fce4b56d/sources-dist-stable.json#L1393-L1398
Latest repository http://download.iobroker.net/sources-dist-latest.json is also correct:
"pushbullet": {
    "meta": "https://raw.githubusercontent.com/Jens1809/ioBroker.pushbullet/master/io-package.json",
    "icon": "pushbullet.png",
    "type": "messaging",
    "stars": -1,
    "weekDownloads": 5,
    "stat": 372,
    "name": "pushbullet",
    "version": "0.0.11",
    "authors": [
      "Jens1809 <cpthans@gmail.com>"
    ],
    "title": "Pushbullet Adapter",
    "desc": "Pushbullet adapter",
    "platform": "Javascript/Node.js",
    "mode": "daemon",
    "messagebox": true,
    "extIcon": "https://raw.githubusercontent.com/Jens1809/ioBroker.pushbullet/master/admin/pushbullet.png",
    "loglevel": "info",
    "published": "2015-07-25T20:26:50.201Z",
    "versionDate": "2015-10-11T17:49:44.529Z",
    "stable": "0.0.11"
  },

Issue
How is it possible, that the stable repository file on download.iobroker.net delivers the wrong type communication?
http://repo.iobroker.live/sources-dist.json:
  "pushbullet": {
    "name": "pushbullet",
    "version": "0.0.11",
    "title": "Pushbullet Adapter",
    "desc": "Pushbullet adapter",
    "platform": "Javascript/Node.js",
    "mode": "daemon",
    "messagebox": true,
    "icon": "https://raw.githubusercontent.com/Jens1809/ioBroker.pushbullet/master/admin/pushbullet.png",
    "extIcon": "https://raw.githubusercontent.com/Jens1809/ioBroker.pushbullet/master/admin/pushbullet.png",
    "loglevel": "info",
    "type": "communication",
    "meta": "https://raw.githubusercontent.com/Jens1809/ioBroker.pushbullet/master/io-package.json",
    "published": "2015-07-25T20:26:50.201Z",
    "versionDate": "2015-10-11T17:49:44.529Z",
    "stars": -1,
    "stat": 372,
    "weekDownloads": 5,
    "latestVersion": "0.0.11",
    "issues": 9,
    "score": 1
  },

This is caused by outdated data within the release. The cahnged to io-package.json never made it into a release.
see https://github.com/Jens1809/ioBroker.pushbullet/issues/42
sources-dist.json (stable) refers to last release version which still contained the other type.
no problem her - so lts close.


Fix Installation Issues with RASCIL and BDSF

Generally the issues have been fixed with updates to the repositories i4ds/bdsf-build and i4ds/rascil-build.
The bdsf build has been updates so that the import error on importing from rascil.apps import rascil_imager no longer fails.
The issue lied in the aotools package, which downgraded upon installation the numpy installation, which then had issues, as the bdsf was installed against a certain numpy instance with boost-numpy.
Now the bdsf package has different versions for different numpy versions.
The rascil imager is now running again on python 3.8 (generally python 3.8 is the version we use now)
@Lukas113 please test this.

I will test it. I had issues with this using python 3.9, but with 3.7 it worked.

from rascil.apps import rascil_imager didn't cause an error caused by BDSF using python 3.8 and the installation procedure of this branch.


Always online

When I login to Whatsapp through baileys I stop receiving notifications on phone and stopped even receiving calls and always appear online can you add an option to keep the presence offline

Just add markOnlineOnConnect: false in your auth configuration.
const WA = makeWASocket({
      auth: state,
      ...,
      markOnlineOnConnect: false,
      });

Just add markOnlineOnConnect: false in your auth configuration.
const WA = makeWASocket({
      auth: state,
      ...,
      markOnlineOnConnect: false,
      });

its already there
const socket = makeWASocket({
auth: authState?.state,
browser: ["TestApi", "Desktop", "10.0"],
logger: Logger({ level: "debug" }),
syncFullHistory: false,
markOnlineOnConnect: false,
printQRInTerminal: true,
getMessage: async (key) => {
return await store.operation.messages.get({ "key.id": key.id });
},
});

sock.sendPresenceUpdate('unavailable') after every message send or any logic you want

Just add markOnlineOnConnect: false in your auth configuration.
const WA = makeWASocket({
      auth: state,
      ...,
      markOnlineOnConnect: false,
      });

its already there const socket = makeWASocket({ auth: authState?.state, browser: ["TestApi", "Desktop", "10.0"], logger: Logger({ level: "debug" }), syncFullHistory: false, markOnlineOnConnect: false, printQRInTerminal: true, getMessage: async (key) => { return await store.operation.messages.get({ "key.id": key.id }); }, });

If you use any presence update, you should consider https://github.com/WhiskeySockets/Baileys/issues/431#issuecomment-1758057135

sock.sendPresenceUpdate('unavailable') after every message send or any logic you want

For me, this work!

sock.sendPresenceUpdate('unavailable') after every message send or any logic you want

For me, this work!

How do you fix your code? Here not working after define sock.sendPresenceUpdate('unavailable')...

sock.sendPresenceUpdate('unavailable') after every message send or any logic you want

For me, this work!

How do you fix your code? Here not working after define sock.sendPresenceUpdate('unavailable')...

In my case i set timeout to send presenceupdate and tracked that timeout so that when i send a message it will update status after 1 minutes unless they send another message which will clear timeout of the previous one and sets it again
I also added a set interval to send presence update every 10 minutes (in my case it worked not sure if this is the correct approach or not)


LayoutController - Customize top toolbar buttons

The toolbar at the top of screen uses some kind of dynamic layout based on the horizontal screen resolution. Here's Aliucord running on the same phone vertically and horizontally; you can see the Search button is gone in the vertical layout.

Even in channels with no Threads, the Search button is still just gone, so it's not even like there's no room for a button there. All of this makes searching super inconvenient when my phone is vertical, which is always.
Ideally, I'd like to see the Search button always in the top toolbar, with the Threads button having the current Search behavior--if the screen isn't wide enough for two buttons, it is removed from the toolbar and can be accessed from the sidebar, where Search is currently:

NoBurnIn? :husk:

Out of interest, I just checked, and NoBurnIn does not help at all. Whatever disables the Search button on smaller screens is not impacted by NoBurnIn. I can e.g. disable the Threads button and enable Search, but the Search button is still completely gone in the vertical layout and only shows up if I rotate.
The Discord UI doesn't care if there's room for a button there or not, it just does not show the search button on smaller screens, while the Threads button is always shown.

i'd also love an option to do this, if only because i have the oppisite issue where frequently the threads button is inaccessible


For some reason versatile thermostat changes temperatures on it's own.

Me again ;)
Sooooo. I've left the versatile thermostat running on it's own, with simple schedule setting it's desired temperature.
Schedule is:
0:00 - heat @ 21C
2:00 - frost protection preset (that preset is at 10C)
8:00 - heat @ 21C
20:00 - heat @ 23C
And for some odd reason I get this behavior from the thermostat

The configuration is that:

there is a single central configuration.
there is a single thermostat controlling TVR over a climate.

Please advise on how I shall extract the configuration to attach it here if required.
Just a simple update:
After writing this post I decided to lower the temp to 23C as intended, and what happened was that thermostat just self changed to 29C.

Hi!
I have the same issue. It changing the target temperature on it's own.

Please advise on how I shall extract the configuration to attach it here if required.

as described in documentation: https://github.com/jmcollin78/versatile_thermostat/blob/main/README.md#custom-attributes

And for some odd reason I get this behavior from the thermostat

What is the yellow and blue line ? I suppose that orange is when the heater heats ?
What do think is odd in this graph ?

After writing this post I decided to lower the temp to 23C as intended, and what happened was that thermostat just self changed to 29C.

I will repeat with my word: you change manually the target temperature to 23°C (with the button of UI Card I think) and then the VTherm displays 29°C as target temperature. Is that correct ?
If yes, can you send me the logs when this happens please ? I suppose you have logs saying:
Underlying climate <name> have changed. new_hvac_mode is ...

The graphs is default graph when one click more info and then goes to graph icon:
Yelow - a setpoint on thermostat
Blue - a room temp from temp sensor
Orange fill - when the thermostat indicates that it's "heating"
As per:

'''
I will repeat with my word: you change manually the target temperature to 23°C (with the button of UI Card I think) and then the VTherm displays 29°C as target temperature. Is that correct ?
'''
No.

schedule set the temp to 23C
Thermostat self set it's setpoint to 25.5C
I've intervened when I've notice that it's to toasty and set the temp via buttons in the UI temp to 23C as I desire
After several minutes thermostat self set to 29C

HOWEVER:
If you look at the graphs - the thermostat self set's to different temperatures on it's OWN. In the first graph I've had NOT input of any kind into it. The thermostat is not connected to any automation other than the schedule. Thermostat is NOT exposed to home kit, or other users.
This thermostat is (or more acurately: was) more or less sandboxed.
I shall attempt to find the logs for you, however the thermostat was removed and replaced by other solution that I'm testing now (to eradicate TADO).

You may have old logs in old homeassistant.log.x files

nope - nothing that far back.

Hello bug is reproduced. I will do a patch rapidly.

https://github.com/jmcollin78/versatile_thermostat/releases/tag/6.6.2


Indentation / Code Example Fixes for Angular 2 Tutorial

Also added setup to convert to new Angular2 tutorial system.


code indentation for debugging

a little bit of code indentation and a small change of brackets

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

please check our open issues for actual changes we are looking for on this repo


Windows notification for monster drops

It would be nice to have the option to toggle a Windows notification for drops over a certain GE or alch value so as to not miss out on good drops when afk'ing certain monsters such as Abyssal Demons.

Duplicate of #3643


0.1.6 does not contain lib dir

latest version of this plugin does not contain lib dir.
it maybe simple mistake.
you should define prepublishOnly task to your package.json.
see more details are here. https://docs.npmjs.com/misc/scripts

I added them and bump up v0.1.7 .
I congrat your extension updates :)


Small changes on the Doc Folder

Critical Changes
N/A
Changes

Made changes on the markdown file in terms of adding content and revising some wording.

Issues Closed
N/A

Also wondering about the GIT-notes.md and seeing if it is correct since one part of it is missing.


Updating NuGet and Docker versions to latest

Description
Updating our NuGet package dependencies as well as our Docker container image tags to latest. Note: build will fail until we push all the required packages and images to the internal mirrors.
Checklist

Is this feature complete?

[x] Yes. Ready to ship.
[ ] No. Follow-up changes expected.

Are you including unit tests for the changes and scenario tests if relevant?

[ ] Yes
[x] No

Did you add public API?

[ ] Yes

If yes, did you have an API Review for it?

[ ] Yes
[ ] No

Did you add <remarks /> and <code /> elements on your triple slash comments?

[ ] Yes
[ ] No

[x] No

Does the change make any security assumptions or guarantees?

[ ] Yes

If yes, have you done a threat model and had a security review?

[ ] Yes
[ ] No

[x] No

Does the change require an update in our Aspire docs?

[ ] Yes

Link to aspire-docs issue:

[ ] No

Microsoft Reviewers: Open in CodeFlow

Related - https://github.com/dotnet/aspire/pull/5406

For future reference, this is the script I used to find latest tags of each image:
#!/bin/bash

# Check if repository argument is provided
if [ -z "$1" ]; then
    echo "Usage: $0 <repository>"
    exit 1
fi

REPO=$1

echo "Repository: $REPO"
echo "Fetching tags..."

# Fetch all tags
TAGS=$(skopeo list-tags docker://$REPO | jq -r '.Tags[]')

# Sort tags numerically using version sort (sort -V)
echo "$TAGS" | sort -V

/azp run dotnet.aspire

/backport to release/8.2

We also need to update triple slash comments that callout the image tag numbers, for example, in the release/8.2 branch:
https://github.com/dotnet/aspire/blob/0d7f7e11cd4cfa8d80939b570569ba8061d7aac3/src/Aspire.Hosting.Elasticsearch/ElasticsearchBuilderExtensions.cs#L21-L23

We also need to update triple slash comments that callout the image tag numbers, for example this was bumped to 8.15 but in the release/8.2 branch the remarks still read as 8.14 - I haven't looked everywhere, but I assume that same is true for most other places:
https://github.com/dotnet/aspire/blob/0d7f7e11cd4cfa8d80939b570569ba8061d7aac3/src/Aspire.Hosting.Elasticsearch/ElasticsearchBuilderExtensions.cs#L21-L23
/cc @joperezr @eerhardt

Good catch. I wonder if there is a better way than duplicating those versions in the XML doc comments. Is it possible for const strings to be substituted in XML docs?


Fix crash with release mode

We have to shift log(num of bits) many times not num of bytes many.
In some cases, like for example for size_t on 64 bit builds, the number of bytes (8 here) can become larger than ilog(num bits) (6 here).
This will cause undefined behaviour when 1 << i becomes larger than or equal to the number of bits in T. In this case the behaviour resulted in x becoming 2^64-1 and thus 0 when the function returned. This causes an allocation of size 0 later on.

IIUC it was a bug from #3771, thus it didn't affect 2.0-stable?

Yup, but punto says on irc that he still can reproduce the crash.... I'm compiling in release mode myself now to check it as well. But it certainly improves the situation, the old code doesn't make real sense.

This might have affected something because it's crashing in a different way
now tho
On 29 February 2016 at 03:36, est31<EMAIL_ADDRESS>wrote:

Yup, but punto says on irc that he still can reproduce the crash.... I'm
compiling in release mode myself now to check it as well. But it certainly
improves the situation, the old code doesn't make real sense.
—
Reply to this email directly or view it on GitHub
https://github.com/godotengine/godot/pull/3875#issuecomment-190064340.


Ignore Spell List - Keep Open

Running list of spells that should be on the ignore list.

RankWatch's old list:
-- Special-case a few spells for which reasonable uses for downranked spells exist

local RankWatch_Rank1_Allowed = {
	[(GetSpellInfo(116))] = true,	-- Mages commonly use rank 1 frostbolt to slow enemies due to its shorter cast time.
	[(GetSpellInfo(1949))] = true,	-- Warlocks commonly use rank 1 hellfire to proc trinkets etc.
	[(GetSpellInfo(1008))] = true,	-- Mages commonly use rank 1 amplify/dampen magic in arenas for purge fodder
	[(GetSpellInfo(604))] = true,
	[(GetSpellInfo(1120))] = true,	-- Drain Soul Rank 1 is used to obtain soul shards without killing a mob too quickly
}

local RankWatch_RankMaxMinusOne_Allowed = {
	[(GetSpellInfo(2120))] = true,	-- Mages use a downranked flamestrike for an optimal AOE rotation
}

local RankWatch_AnyRank_Allowed = {
	[(GetSpellInfo(1454))] = true,	-- Warlocks commonly use downranked life tap to proc the glyph
	[(GetSpellInfo(18220))] = true,	--    Dark Pact can proc the life tap glyph too
	[(GetSpellInfo(755))] = true,	-- and downranked Health Funnel still heals for quite a bit without costing so much health
	[(GetSpellInfo(118))] = true,	-- Mages commonly use downranked polymorph for shorter duration in some pve situations.
	[(GetSpellInfo(587))] = true,	-- Downranked Conjured Food is sometimes used to give to lower level players.
	[(GetSpellInfo(5504))] = true,	-- same with Conjured Water
	[(GetSpellInfo(42955))] = true,	-- and Conjured Refreshment
}

-- For buffs and HoTs, it's the target's level that matters, not the caster's
local RankWatch_Target_Level = {
	[(GetSpellInfo(  139))] = true, -- "Renew"
	[(GetSpellInfo(61295))] = true, -- "Riptide"
	[(GetSpellInfo(33763))] = true, -- "Lifebloom"
	[(GetSpellInfo(  774))] = true, -- "Rejuvenation"
	[(GetSpellInfo(48438))] = true, -- "Wild Growth"
	[(GetSpellInfo( 8936))] = true, -- "Regrowth"
	[(GetSpellInfo(  976))] = true, -- "Shadow Protection"
	[(GetSpellInfo(27683))] = true, -- "Prayer of Shadow Protection"
	[(GetSpellInfo( 1243))] = true, -- "Power Word: Fortitude"
	[(GetSpellInfo(21562))] = true, -- "Prayer of Fortitude"
	[(GetSpellInfo(14752))] = true, -- "Divine Spirit"
	[(GetSpellInfo(27681))] = true, -- "Prayer of Spirit"
	[(GetSpellInfo( 1126))] = true, -- "Mark of the Wild"
	[(GetSpellInfo(21849))] = true, -- "Gift of the Wild"
	[(GetSpellInfo(23028))] = true, -- "Arcane Brilliance"
	[(GetSpellInfo(61316))] = true, -- "Dalaran Brilliance"
	[(GetSpellInfo(  467))] = true, -- "Thorns"
	[(GetSpellInfo(19740))] = true, -- "Blessing of Might"
	[(GetSpellInfo(19742))] = true, -- "Blessing of Wisdom"
	[(GetSpellInfo(25782))] = true, -- "Greater Blessing of Might"
	[(GetSpellInfo(25894))] = true, -- "Greater Blessing of Wisdom"
	[(GetSpellInfo( 1459))] = true, -- "Arcane Intellect"
	[(GetSpellInfo( 1008))] = true, -- "Amplify Magic"
	[(GetSpellInfo(  604))] = true, -- "Dampen Magic"
	[(GetSpellInfo(   17))] = true, -- "Power Word: Shield"
}

Druid
Hunter
Mage
Paladin
Priest
Rogue
Shaman
Warlock
https://tbc.wowhead.com/spell=710/banish -- Warlocks often use low-rank Banish because they don't want long-stuns.
https://tbc.wowhead.com/spell=18647/banish -- Warlocks often use low-rank Banish because they don't want long-stuns.
Warrior


cf --version is not recognized as valid command

Seems like passing --version is not working.
[sys]$ cf --version
'--version' is not a registered command. See 'cf help'
[sys]$ cf -v
cf version 6.12.3-c0c9a03-2015-08-31T20:29:20+00:00
/etc/redhat-release
Red Hat Enterprise Linux Server release 6.5 (Santiago)

Thanks for bringing this up. This will be fixed in the next release.


server-side login (replacing parse-express-cookie-session)

My app was relying on 'parse-express-cookie-session' offered by Parse to do server-side login, i.e.:
  app.post('/login', function(req, res) {
    Parse.User.logIn(req.body.username, req.body.password).then(function(user) {
      res.redirect('/');
    }, function(error) {
      res.render('login', { flash: error.message });
    });
  });

  app.post('/logout', function(req, res) {
    Parse.User.logOut();
    res.redirect('/');
  });

I used Parse.User.Current() to check if the user is logged in on server-side.
Now, I replaced the 'parse-express-cookie-session' by 'express-session'. And do the login/logout in this way:
  app.post('/login', function(req, res) {
    Parse.User.logIn(req.body.username, req.body.password).then(function(user) {
      req.session.user=user;
      res.redirect('/');
    }, function(error) {
      res.render('login', { flash: error.message });
    });
  });

  app.post('/logout', function(req, res) {
    req.session.user = null;
    res.redirect('/');
  });

I then see if the user is logged in by checking req.session.user = null . But I cannot access it inside cloudcode.
Perhaps this is not a right way to do(?) as it is recommended to use req.user, but I have no idea how to make it work, req.user is always null. Any help from you guys?
It would be great to even have a small sample app offered by Parse showing simple server-side login like Anyimg as there should be similar cases around like me.

or server-side login is no longer possible?

What I did was to manually add the features of the parse-express-cookie-session. Below is one way of doing it. I probably will change some things such as using Parse.Cloud.httpRequest instead of Parse._request and using secure cookies before going into production however. An even better way would be to use jwt so that you don't have to fetch the user on each page load. Would love to see some implementation with that.
// Login adds the sessionToken in a cookie
app.post('/login', function(req, res) {
    Parse.User.logIn(req.body.username, req.body.password).then(function(user) {
        var val = JSON.stringify({sessionToken: user.getSessionToken()});
        var opts = {path: '/', httpOnly: true};
        res.cookie('parse.session', val, opts);
        res.redirect('/');
    }).then(null, function(error) {
        res.clearCookie('parse.session');
        res.render('pages/login', { flash: error.message });
    });
});

// Middleware adding current user to `req.user` or redirecting to login if not logged in
app.use(function (req, res, next) {
    new Parse.Promise.as().then(function() {
        var cookie = JSON.parse(req.cookies['parse.session']);
        return Parse._request('GET', 'users/me', {}, {sessionToken: cookie.sessionToken});
    }).then(function (userData) {
        var query = new Parse.Query('User');
        return query.get(userData.objectId, {useMasterKey: true});
    }).then(function (user) {
        req.user = user;
        next();
    }, function () {
        res.clearCookie('parse.session');
        return res.redirect('/login');
    });
});

I see how you reconstruct the res.user, but in that case, the request.user still seems to be null in cloudcode afterSave trigger function.
Parse.Cloud.afterSave("Comment", function(request) {
   ...
};

I can get the userid by using request.object.get('createdBy').objectId inside the trigger function, but I guess its better to stick with request.user as these functions are shared across different clients.

That is a separate issue as parse server is supposed to set the user in that case. I tried it now and it worked. Anyhow, try updating to 2.1.1 as some related fixes was applied in #373. Also make sure you are not making the request with a master key and that you are using a valid session token. You won't get any warnings/errors if the session token is invalid.

I tried your code and created a post request using $.post with request cookie : parse.session=%7B%22sessionToken%22%3A%22r%3A9f8ff4a551392d021759e81c58a3a8f8%22%7D
But the request.user is still undefined in aftersave trigger function. *I'm already using 2.1.1 parse-server
{ triggerName: 'afterSave',
  object: ParseObjectSubclass { className: 'Comment', _objCount: 152, id: 'sSGLWMDJRe' },
  master: false }

The code I posted above is a way to replace the parse-express-cookie-session middleware and will only work with your server side code, i.e. your expressjs routes.
For your cloud code (cloud functions, afterSave, beforeSave etc) you need to make the request with the header X-Parse-Session-Token to get the req.user object. When you said $.post I assume you are using jQuery with the rest api? Is it a reason you are not using the parse js sdk? Anyway, using jQuery with the rest api would look something like this:
$.post({
    url: 'http://localhost:1337/parse/classes/Comment',
    data: JSON.stringify({text: "New comment"}),
    headers: {
        'X-Parse-Application-Id': 'appId',
        'X-Parse-Session-Token': 'r:2bc226c69d8f23b6c4ed906d79a129d3',
        'Content-Type': 'application/json'
    }
});

and with the parse js sdk:
var comment = new Parse.Object('Comment');
comment.set('text', 'New comment');
comment.save(null, {sessionToken: "r:2bc226c69d8f23b6c4ed906d79a129d3");

Hi Simon, thanks very much for your help. Yes, I am using jQuery on client side to minimize the dependency upon Parse JS SDK, but I am not using the rest api directly, i.e.
app.post('/c', requireUser, function(req, res){
  var comment = new Comment();
  comment.set("comment",req.body.comment);
  var post = new Post();
  post.id = req.body.postID;
  comment.set("post",post);
  comment.set("createdBy",req.user);
  comment.save(**null,{sessionToken:req.user.sessionToken}**).then(function(comment){
    res.json({comment:comment, parseUser: req.user});
  }, function(error){
    console.log(error);
    res.json({error:error})
  });
});

I have just added null,{sessionToken:req.user.sessionToken} inside comment.save as above. It is now able to detect req.user inside trigger functions! Thanks to your answer!

Glad to hear you solved it. What do you think of changing the title of this issue to Server-side login (replacing parse-express-cookie-session)? You should probably also close the issue.

Thanks for helping @simonbengtsson!

But what's the problem of using Parse._request instead of Parse.Cloud.httpRequest? And is there any documentation for Parse._request function?

Parse._request is not documented and might potensially be removed in a futute update to the sdk. Post here if you manage to do it, otherwise I will translate it at some point and update the answer.

Seems Parse.Cloud.httpRequest can only be executed inside cloudcode?
Otherwise, it always returns
[TypeError: Cannot read property 'statusCode' of undefined]
I also tried Parse.User.become(sessionToken) but with no success.

Parse.Cloud.httpRequest should be available everywhere. What code are you using? Parse.User.become() is disabled for nodejs environments.

Yup, it can be used everywhere.
Figured out the code, need to use full path inside Parse.Cloud.httpRequest, appid and restapikey are also required.
Middleware cookie-session is used to secure the cookie. I guess it should be good for production usage?
var cookieSession = require('cookie-session');

app.use(cookieSession({
  name: COOKIE_NAME,
  secret: "SECRET_SIGNING_KEY",
  maxAge:<PHONE_NUMBER>0
}));

app.use(function (req, res, next) {
    Parse.Cloud.httpRequest({
      url: 'http://localhost:1337/parse/users/me',
      headers: {
        'X-Parse-Application-Id': 'myAppId',
        'X-Parse-REST-API-Key': 'myRestAPIKey',
        'X-Parse-Session-Token': req.session.token
      }
    }).then(function (userData) {
        req.user = Parse.Object.fromJSON(userData.data);
        next();
    }).then(null, function () {
        return res.redirect('/login');
    });
});

In login / logout part:
  app.post('/login', function(req, res) {
    Parse.User.logIn(req.body.username, req.body.password).then(function(user) {
      req.session.user = user;
      req.session.token = user.getSessionToken();
      res.redirect('/');
    }, function(error) {
      req.session = null;
      res.render('login', { flash: error.message });
    });
  });

  app.post('/logout', function(req, res) {
    req.session = null;
    res.redirect('/');
  });

Might be a dumb question, but what is the "name" and "secret"? Do I just make those up? @mchun

Name is the name of your cookie.
Secret is the signing key. You may refer to the documentation here.
https://www.npmjs.com/package/cookie-session
And yes, they can be any string.

So just to be totally clear, since I feel like we've covered a few things in this thread… @mchun, your most recent code (https://github.com/ParsePlatform/parse-server/issues/497#issuecomment-190107848) is what you're using for login/session management on the express side of your app?

@woodardj , yes. That's my production code. But beware that I am still using parse-server 2.1.6 though I guess there's not much changed.

Thanks @mchun! I ended up piecing the methodology into an authenticating middleware we already had, but this was super useful as a starting point. I am curious though, we had good luck querying _Session with the JS/Express SDK directly instead of going to the REST endpoint, is there a reason you went that route?

@mchun I have a browser JS app. And an express server running parse on nodechef. I want to be able to sign the user in through the express route, and then ensure they are logged in with a session on the client. RIght now the client does the login. Your code you posted seems to do this? Can you offer any help. In the final code you post are you still using express session module? How are you then logging in the client, do you parse the session token down. Been looking everywhere for help code on this but can onlt find parts, parse session cookie module looks un-supported and can't find the docs. Would really appreciate some help. Thanks

@mchun like @tillifywebb I am also still confused. It would be awesome to see more of your code.

I am using _request() to fetch user object Parse.Cloud.httpRequest return 403. can you please update the answer.

Can we have this in the parse server code?


Initial/Partial Logging Improvement

fixes warnings being printed as errors and introduces the new formatting for (most) errors
I think it's a reasonable thing to merge to next already, to keep the PRs small.
Things missing:

apply logging structure everywhere
remove the "grouping loops" as we don't need them
introduce human readable error types ...

So clearly not meant to be the complete and final changeset :)

@UnseenWizzard the format of some files fails on Code Style check


Support externalDocs when converting operations to OpenAPI

Description of changes:
Supports converting the @externalDocumentation trait on operations into the externalDocs property when converting to OpenAPI.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Thanks for the contribution! I was curious why we had that method if we weren't using it, but it turns out we do use it... on basically every other shape type. Whoops!


Use VRS for determining invocation app for each platform

Problem #1: As a Voice App Creator, I want to use the VRS so that I can determine the invocation name for voice apps on each platform (Alexa, Google, Bixby, etc.) following their guidelines and clearly knowing the restrictions. (edited)
Submitted by Mark.Tucker

Problem #2: As a consumer, I want to use VRS so that I can find voice experiences from companies that I’m interested in and discover new voice experiences across the different voice platforms.

Mark Tucker will revise this issue


A little outdated, but with some time you can fix it!

This bot is in v11, and some emojis we can't use, so keep that in mind when copying the code.

I am going to update the README to state that, thank you.


Add backup resolution source when user selects Public Website

Link  to design:
https://www.figma.com/file/IpIAYVQPeQfuT5TTUboQpo4S/Market-creation?node-id=936%3A3046

this is done


Images cannot be downloaded from VARS X query

The normal command to "save images" after doing a VARS query is not working for the M3 system. The function normally puts a folder on your desktop (or whatever path), then puts a physical copy of the .jpg in a vehicle/dive number folder combo. When this is executed it builds the directories but no physical copy of the framegrabs is included (see attached). Might be related to this?: Note that the "stills" folders contain only symbolic links, while the "images folders" contain the physical copy of the framegrabs).

Moved to vars-query repo


automatically clear history

add feature to automatically clear history after a certain time, session logout, screen lock and/or user shortcut

Already implemented for session logout. The option is only save favorites to disk. Using a small cache size can act as a form of continuous deletion and you can always delete everything with the global trash icon.


Fixing High Contrast Issues in ExpenseItIntro Application

See associated bugs for fixed images.

#218 and #219 as well (it would only let me link 10 issues)


Multilevel permissions

I am working on a API that involves interacting with models in a database. Users have either guest owner or admin roles on the data and have create, read, update and delete permissions on the data. Each of those is different for each model and each model only allows access to specific fields.
Example:
user model has full CRUD but only certain fields can be directly manipulated by owners and there are only read permissions on some minimal values for guest. How would I go about using gorbac for my use case?

Usually, the role is used for classifying users, witch means the role Admin is a group of people who has right to do something similar. If you need more fine-grained permission controls, you should use the 3rd argument (i.e. assert function) of the function IsGranted. You can check the ownership in that function, like if the ids are match, or it's the right time for the operation, etc..
And I can give you a brief here:
if rbac.IsGranted(name, permission,
	func (name string, permission string, r *RBAC) bool {
		// Operating time is between 9am to 12pm
		if time.Now().Hour() < 9 {return false}
		// and owner matched
		return article.Owner == user.Id }) {
}

And I strongly suggest using a closure function factory.
e.g.
func AssertFactory(a Article, u User) rbac.AssertFunction {
	return func (name string, permission string, r *RBAC) bool {
		// Operating time is between 9am to 12pm
		if time.Now().Hour() < 9 {return false}
		// and owner matched
		return article.Owner == User.Id
	}
}
if rbac.IsGranted(name, permission, AssertFactory(article, user)) {

}


Reading annotated images

Hi,
I just started exploring your codebase. I am trying to run segnet for my own project in which the images have fewer number of classes.   When I try to just simply read one of the annotated images: '0001TP_006690.png' in the trainannot directory, I get this:
[[ 0.00392157  0.00392157  0.00392157 ...,  0.00392157  0.00392157
0.00392157]
[ 0.00392157  0.00392157  0.00392157 ...,  0.00392157  0.00392157
0.00392157]
[ 0.00392157  0.00392157  0.00392157 ...,  0.00392157  0.00392157
0.00392157]
...,
[ 0.01568628  0.01568628  0.01568628 ...,  0.04313726  0.04313726
0.04313726]
[ 0.01568628  0.01568628  0.01568628 ...,  0.04313726  0.04313726
0.04313726]
[ 0.01568628  0.01568628  0.01568628 ...,  0.04313726  0.04313726
0.04313726]]
The way I tried to read the png is by:
import matplotlib.image as img
image = img.imread('0001TP_006690.png')
print(image)
If i am not wrong, arent the classes supposed to be a whole number like 1,2..11(since there are 11 classes) instead of decimnal point numbers? or is there a conversion happening that I am not aware of.

I think matplotlib rescaled the data by itself. According to the document, "Matplotlib has rescaled the 8 bit data from each channel to floating point data between 0.0 and 1.0".(https://matplotlib.org/users/image_tutorial.html)
Maybe you can try to use my input reader in Inputs.py, it will use multi-thread and deocde png file by tensorflow library.


Feature Request: Given an S3 bucket with a bucket policy, add/merge the k9 policy with this policy

I've found that some of the AWS CDK constructs modify the S3 Bucket policy automatically during creation. This is problematic if you overwrite the policy with the new k9 policy because some of the CDK constructs generate custom resources that take actions against the bucket which will fail to work if they're not included in the final policy.
For example:
const bucket = new Bucket(this, 'Bucket', {
  removalPolicy: RemovalPolicy.DESTROY,
  autoDeleteObjects: true,
});

This will add a bucket policy to enable autoDelete to work.
I think we need a k9 api that takes the bucket.policy and then adds to this policy instead of always creating a new policy.

Thank you for filing this issue Brent.
We'll take a look at the auto delete objects use case and see how we can make it work.
We'll also take a look at how we might be able to mutate an existing policy.  The main reasons k9 generates the policy from scratch are to:

be able to reason about the full policy and write the DenyEveryoneElse statement correctly
enable composition into existing code, i.e. don't want to force people to adopt a 3rd-party Bucket construct

The S3Bucket construct uses the enableAutoDeleteObjects method to add statements to the resource policy:
  private enableAutoDeleteObjects() {
    const provider = CustomResourceProvider.getOrCreateProvider(this, AUTO_DELETE_OBJECTS_RESOURCE_TYPE, {
      codeDirectory: path.join(__dirname, 'auto-delete-objects-handler'),
      runtime: CustomResourceProviderRuntime.NODEJS_12,
      description: `Lambda function for auto-deleting objects in ${this.bucketName} S3 bucket.`,
    });

    // Use a bucket policy to allow the custom resource to delete
    // objects in the bucket
    this.addToResourcePolicy(new iam.PolicyStatement({
      actions: [
        ...perms.BUCKET_READ_ACTIONS, // list objects
        ...perms.BUCKET_DELETE_ACTIONS, // and then delete them
      ],
      resources: [
        this.bucketArn,
        this.arnForObjects('*'),
      ],
      principals: [new iam.ArnPrincipal(provider.roleArn)],
    }));

This code creates a custom CFn resource which runs a Lambda function that lists and deletes objects in the bucket during removal.
S3Bucket's addToResourcePolicy is called in a number of places.  In general, it would work to make a k9 bucket policy then iterate through document and add each of the statements.  The tricky bit is the DenyEveryoneElse.
The AutoDeleteObjects custom resource creates its own Role to execute the function.  And that role name won't be known until after the stack is created.  Now, we know the naming convention of the role, so we could carve out an exclusion for it, and possibly other roles named after the stack.  Will investigate some more and propose a solution.

Thanks for the additional information.  Only allowing auto-delete in non-prod makes sense.
I have prototyped a solution that merges the k9 policy statements into an existing policy if it already exists.  That's more difficult than it sounds because AWS CDK offers a nearly write-only API on top of private state, so it's difficult to inspect what's already there without transiting policies & statements through toJSON().

@brentryan - would love for you to take a look at #13 if you have a chance.

Addressed this feature request in #13 and released v0.7.0


NONG downloader not working

tittle says it all. If i put in the ID and the youtube link i will get kicked out of geometry dash and if i go back in its still the old music.

does your game freeze for a couple seconds

yes

then you are using the other song directory checkbox. it wont work

Thanks!

Does your game freeze for a couple seconds?

Hi, can you answer me why i cant install using the installer please, i use mh v7