Feature request: Expose a method to set the revision

It would be useful to have a method to set the revision in the cookie, in the same way the .accept() method lets us set accepted levels.
The use case is as follows: I want to persist the consent choices (and revision) of the user on the server, so that if the user logs in from a different browser, their consent choices are remembered. I do this by retrieving their choices from the server and calling .accept() on their choices client side, if the cookie is not found.
But this means that if their choices remain the same, but I push out a new revision, if they log in from a new browser, I'll automatically "accept" them at the same level, under the new revision. If I could also set the revision, then the plugin will be able to detect that the revisions don't match, and show the consent modal with the revision dialog.

Shouldn't this already be possible? Example:
(async function(){

    //fetch value from server
    const cc_config = await (await fetch('your_api_url')).json();

    const cc = initCookieConsent();

    cc.run({
        ...
        revision: cc_config.revision
        ...
    }

})();

Is a .setRevision() really needed? Do you plan on setting the revision number after the plugin has already been initialized?

Yea, I plan to initialize the plug-in first, to the current revision, then to call setRevison() with whatever revision the user had previously agreed to (possibly an earlier revision). Would the purpose be more clear if the new function were called acceptRevison()? Or maybe there is a better way to handle this? The goal is to deal with the situation where a new revision is available, the user has agreed to an older revision, AND that user agreement is currently stored server side, not in the cookie.

Thinking more, maybe adding a third "revision" parameter to accept() might be cleaner than a new method.

I don't get why the current way doesn't fit your needs. Correct me if this is not what you want.
I assume you store a configuration parameter to manage the revision number on the server side, let's call it server revision:

fetch server revision value from the server
initialize the plugin with the fetched server revision value
the plugin will check if it has already been accepted (with the specified server revision value) or not:

cookieconsent is already accepted:

current cookie revision === server revision :  great, don't show modal
current cookie revision !== server revision : same as "cookieconsent has not yet been accepted" case below

cookieconsent has not yet been accepted:
show consent modal, and when consent is given, set cc_cookie with revision = server revision

Perhaps I'm missing your point.

Thanks for the reply! Here is the issue I'm having a hard time explaining: if a logged in user grants us consent to use cookies, I send a request back to the server to persist that on the server. Then, if the same user logs in from another browser (or their cookies are cleared), I don't want them to have to consent again (they already have). As part of retrieving the account information from the server, I also retrieve the consent data.
So the part that the current system doesn't quite handle: I can call accept client side to set the current cookie to whatever the server says they have already agreed to. but I can't set the revision in the cookie to what they have already agreed to. Perhaps I am abusing the intended purpose of the accept method here?
The main goal here is to achieve the following. User X logs in on our site, and grants consent. Then User X logs in on a different device; they shouldn't have to grant consent again (they already have), UNLESS the revision has changed.
This is really only sort of a theoretical problem for now, but it will become real if I ever go to a new revision.

To be even clearer, the current way requires the user's consent info to already be in a cookie. I'm sometimes getting it via a request, and setting it client side.

I think I got it now.
Whenever you call the .accept() method, cc_cookie is re-set*, which means that as long as you're initializing the plugin with the latest valid revision parameter (in your case, retrieved from the server), cc_cookie will be set correctly.
The following code is executed after each .accept() call (** note at the bottom):
https://github.com/orestbida/cookieconsent/blob/9170f9067b288dcd51d9606f3c71094b3d7c0a8e/src/cookieconsent.js#L835-L843
So you shouldn't need a method to manually tell the plugin what the new revision should be.
Perhaps something like this works:
// suppose this is the data fetched from the server
const server_preferences = {
    latest_revision: 3,
    user_accepted_revision: 2,
    user_accepted_categories: ['necessary', 'analytics']
};

/*
 *  found server preferences for this user ?
 *    - no: should_ask_consent = true;
 *    - yes:
 *        1. saved user revision === latest valid revision: should_ask_consent = false;
 *        2. saved user revision !== latest valid revision: should_ask_consent = true;
 */
const should_ask_consent = server_preferences.latest_revision !== server_preferences['user_accepted_revision'];

const cc = initCookieConsent();

cc.run({
    autorun: should_ask_consent,
    revision: server_preferences.latest_revision,
    ...
});

if (!should_ask_consent) {
    // consent already given
    // set/re-set cc_cookie (regardless of whether it already exists or not)
    cc.accept(server_preferences.user_accepted_categories);
}

Note: with the upcoming v2.6, calling multiple times cc.accept() will not necessarily re-set cc_cookie multiple times. It will be set only if at least one of the following states/changes occur:

cc_cookie has not yet been set
categories have changed
revision has changed

Hmm... Correct me if I'm wrong, but it seems to me that the proposed solution doesn't account for showing the revision_message when there is no cookie set (because the user is on a new browser) but we know (from the server data) that the user has accepted an outdated revision. One of the main appeals of the revision system is being able to ask for consent again while acknowledging that consent was previously granted (but is now outdated).

Yes, it doesn't manage the revision_message. Although It can be adapted to do so, it is not an ideal solution.

Hahaha, I like criticisms (especially constructive ones)!
The main issue is that as soon as .run() is executed, the modals are also generated! Since there is no initial parameter which can tell the plugin “there was a previous accepted revision by this user”, it will create the default modal without the revision message (if cookie is not found).
Re-working the .accept() method — at this point — would be a big breaking change!
The easiest and most intuitive way to handle all of these cases — from my point of view — would be to simply add an option like old_revision. This way the plugin knows everything before generating the html!

[yes] valid revision (number > -1) ?

[yes] valid old_revision (number > -1) ?

[yes] revision === old_revision ?

[yes] .accept(<user_categories>)
[ no] generate consent_modal with revision_message  and show

[ no] cc_cookie exists ?

[yes] cc_cookie[revision] === revision ?

[yes] don't do anything
[ no] generate consent_modal with revision_message  and show

[ no] generate consent_modal and show

[ no] cc_cookie exists ?

[yes] don't do anything
[ no] generate consent_modal and show

Other cases? My question is: do you really need a method to set revision ?

Yes, an old_revision option might work. But, to make it even more consistent, what about an option like accepted_consent that would have the same format as the cookie? essentially an old_everything. {level:[], revision: 1}.
If accepted_consent is set and is different from what is already in the cookie (or if the cookie is missing), then, in run(), you could stick the accepted_consent into the cookie at the beginning, and then proceed as normal with no other special logic--it could proceed exactly as if it found the accepted_consent in the cookie.
Then you could just do:
cookieconsent.run() with the revision set to the current revision, and the accepted_consent set to the user's preferences. If the revisions have a mismatch, the system already handles that. Wouldn't need to separately run accept(), and, possibly could even use autorun to show, depending on the use case.

Yes, as long as the cookie set from the server can be decoded using decodeUriComponent!


101 bug unique submission name of jobs in deadline

Changelog Description
Customization of deadline batch name with a "Group" prefix to identify groups from jobs

Ready to be shipped into the next version.


[SCIM2] Get Group call fails when the user list of the role is large

Description
Get Group call fails (timeout) when the user list of the role is large.
Following error can be also observed in the carbon log in IS 5.9.0.
[2020-08-13 11:36:29,788] []  WARN {org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve} - Thread [https-jsse-nio-9443-exec-4] (id=[{6}]) has been active for [600,906] milliseconds (since [8/13/20 11:26 AM]) to serve the same request for [https://localhost:9443/scim2/Groups/9cb38827-ede0-43c6-9568-98d29071da66] and may be stuck (configured threshold for this StuckThreadDetectionValve is [600] seconds). There is/are [1] thread(s) in total that are monitored by this Valve and may be stuck., tenantDomain=carbon.super java.lang.Throwable
Root Cause
The reason is  that after the usernames are taken from carbon kernel via getUserListOfRole(roleName) API, at SCIM level it calls getUserClaimValue for each username to get the respective userId.
Steps to Reproduce

Assign over 1000 users to a role
Set the MaxUserLimit property to 1000
Call the SCIM2 getGroup API for the respective groupId

Reproduced IS Versions

5.7
5.9

Reproduced User Store

Active Directory

This issue is being closed due to extended inactivity. Please feel free to reopen it if further attention is needed. Thank you for helping us keep the issue list relevant and focused!


Vim9: cannot read closure variable in debug mode

Steps to reproduce
Run this shell command:
vim -Nu NONE -S <(tee <<'EOF'
    vim9script
    def Func()
        var s = 'rep'
        def Closure(): string
            return s
        enddef
        echo 'text'->substitute('.*', () => Closure(), '')
    enddef
    debug Func()
EOF
)

Execute >step to step into Func().
Execute >next to step over var s = 'rep'.
Execute >next to step over def Closure(): string.
Execute >step to step into the lambda () => Closure().
Execute >step to step into Closure().
Finally, execute >echo s; an error is given:
E121: Undefined variable: s

Expected behavior
No error is given because s is defined in the outer environment of Closure(), and the code works fine without :debug:
vim9script
def Func()
    var s = 'rep'
    def Closure(): string
        return s
    enddef
    echo 'text'->substitute('.*', () => Closure(), '')
enddef
Func()

rep

Version of Vim
8.2 Included patches: 1-4559
Environment
Operating system: Ubuntu 20.04.4 LTS
Terminal: xterm
Value of $TERM: xterm-256color
Shell: zsh 5.8
Additional context
At the script level, the exact same code does not give any error:
vim9script
var lines =<< trim END
    vim9script
    var s = 'rep'
    def Closure(): string
        return s
    enddef
    echo 'text'->substitute('.*', () => Closure(), '')
END
lines->writefile('/tmp/t.vim')
breakadd func Closure
source /tmp/t.vim

>echo s
rep

Although, in that case, we're no longer dealing with a closure...

Unrelated, but why does adding a breakpoint on all lambda functions prevents Vim from finding a closure at compile time?
vim9script
def Func()
    var s = 'rep'
    def Closure(): string
        return s
    enddef
    echo 'text'->substitute('.*', () => Closure(), '')
enddef
breakadd func <lambda>*
Func()

E117: Unknown function: Closure

No such error if we add a breakpoint on all functions:
vim9script
def Func()
    var s = 'rep'
    def Closure(): string
        return s
    enddef
    echo 'text'->substitute('.*', () => Closure(), '')
enddef
breakadd func *
Func()

For the first problem: The compiled function knows where to find the value of the variable.  However, the debug "echo" command has no clue where to find it.  This would be quite difficult to make work.
For the second problem: The closure is compiled without debugging when first encountering it.  When it is later compiled for debugging the context is missing. I'll see if it can be compiled for debugging earlier.

Now the help says this:
A closure must be compiled in the context that it is defined in, so that
variables in that context can be found.  This mostly happens correctly, except
when a function is marked for debugging with `breakadd` after it was compiled.
Make sure to define the breakpoint before compiling the outer function.

The last sentence seems to imply that there is a way to access variables from a closure in debug mode:
Make sure to define the breakpoint before compiling the outer function.

But it doesn't work.  Test 1:
vim -Nu NONE -S <(tee <<'EOF'
    vim9script
    def Func()
        var s = 'rep'
        def Closure(): string
            return s
        enddef
        echo 'text'->substitute('.*', () => Closure(), '')
    enddef
    breakadd func Func
    Func()
EOF
)

>next
>next
>step
E1271: compiling closure without context: <lambda>1

Test 2:
vim -Nu NONE -S <(tee <<'EOF'
    vim9script
    def Func()
        var s = 'rep'
        def Closure(): string
            return s
        enddef
        echo 'text'->substitute('.*', () => Closure(), '')
    enddef
    breakadd func <lambda>*
    Func()
EOF
)

>step
>echo s
E121: Undefined variable: s

And yet, in both cases, the breakpoint is defined before calling or compiling any function.

Now the help says this:
A closure must be compiled in the context that it is defined in, so that
variables in that context can be found.  This mostly happens correctly, except
when a function is marked for debugging with `breakadd` after it was compiled.
Make sure to define the breakpoint before compiling the outer function.

The last sentence seems to imply that there is a way to access
variables from a closure in debug mode:

No, it means that if you add the breakpoint later, compiling the closure
may fail, because it cannot find the variables in the context.  That's
even worse than not being able to print the variables.
You can work around it by assigning the value to a global variable, you
can print that.  It does require changing the script temporarily.
--
"My particular problem is with registry entries, which seem to just
accumulate like plastic coffee cups..."           -- Paul Moore
/// Bram Moolenaar -- @.*** -- http://www.Moolenaar.net   \
///                                                                      \
\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


Enforce consistent formatting

Add format checking to both script/test and script/cibuild.

Coverage remained the same at 82.069% when pulling 8f40c836ddf549e22fb5eefc3deb67c0290804b9 on mix-format into 9c4ac217d11a9edd6a825c46ac463c76d447be04 on master.


ENH: Add meegkit

Will fail until meegkit actually builds

Now we wait for https://github.com/conda-forge/uv-feedstock/issues/114


Inline Fragments for interfaces (attempt #2)

Different attempt to https://github.com/EntityGraphQL/EntityGraphQL/pull/133
This one uses expression trees to try get around the issue mentioned in other PR
Sadly it doesn't actually get around it because the dynamic type it returns still has all properties (can't use multiple dynamic types as it throws exception about different return types).

update: this now gets around the extra property issue by creating multiple types that inherit dynamically at runtime.

Cool. Likely have time to look at this (and others) on the weekend.
I was going to suggest dynamic inheritance or creating a weird "union" type.
Shall I focus on looking at this one and forget attempt 1?
Thanks

yeah forget attempt 1, it's simpler but overall don't think it's as good.
however there are a couple of hacks in #2 that might need more cleaning up (ParameterReplacer.cs)


add support env variable

It would be cool to set the configuration through environment variables without being tied to the way of working with the secrets of a particular approach.
For example - Using Secrets as environment variables
P.S. I tried to use pathes, but it's a hard way. Which may break on subsequent operator updates

Could you describe how you're trying to pass secrets in, and why passing a secretName doesn't work for you?

I tried this config:
apiVersion: authzed.com/v1alpha1
kind: SpiceDBCluster
metadata:
  name: auth
spec:
  config:
    replicas: 1
    datastoreEngine: postgres
  secretName: my-spicedb-config
  patches:
    - kind: Deployment
      patch:
        spec:
          template:
            spec:
              containers:
                - name: spicedb
                  env:
                    - name: SPICEDB_DATASTORE_CONN_URI
                      valueFrom:
                        secretKeyRef:
                          name: spicedb-postgres-pguser-spicedb
                          key: uri

But this option did not work right.
I want to automate the process of creating postgres-clusters and I am using one of the ready-made operators, so I would like to be able to set environment variables based on third-party secrets

I'm curious what error you saw, I think that should have worked if everything else was configured correctly.
But I do think it makes sense to be able to split up required secret fields into their own config if you want. What about something like this:
spec:
  presharedKey:
    key: preshared_key
    secretName: spicedb-config
  datastoreUri:
    key: datastore_uri
    secretName: spicedb-config

which would allow you to control which secret/key the value comes from. For crunchy, you could specify uri as the key.

Eventually, I was able to get the application up and running. I use ArgoCD to deploy applications, and the patches changes were not always picked up immediately, but manual updates helped. Also, at some time, Deployment in SpiceDBCluster stopped being created, but disabling Istio gave it back.
My final config:
apiVersion: authzed.com/v1alpha1
kind: SpiceDBCluster
metadata:
  name: auth
  annotations:
    sidecar.istio.io/inject: "false"
spec:
  config:
    replicas: 1
    datastoreEngine: postgres
  secretName: auth-spicedb-config
  patches:
    - kind: Deployment
      patch:
        spec:
          template:
            metadata:
              annotations:
                sidecar.istio.io/inject: "false"
            spec:
              containers:
                - name: spicedb
                  env:
                    - name: SPICEDB_DATASTORE_CONN_URI
                      valueFrom:
                        secretKeyRef:
                          name: spicedb-postgres-pguser-spicedb
                          key: uri
    - kind: Job
      patch:
        spec:
          template:
            metadata:
              annotations:
                sidecar.istio.io/inject: "false"
            spec:
              containers:
                - name: migrate
                  env:
                  - name: SPICEDB_DATASTORE_CONN_URI
                    valueFrom:
                      secretKeyRef:
                        name: spicedb-postgres-pguser-spicedb
                        key: uri

@ecordell Thanks for help.


Remove dependency on Spring JDBC

I wanted to use your library to create SQL statements for the  Azure CosmosDB NoSQL, since it supports SQL API
https://docs.microsoft.com/en-us/azure/cosmos-db/sql/tutorial-query-sql-api
But it's not JDBC, so the dependnecy on Spring JDBC gets in the way.
Please make it an optional extra module and make the SQL Builder completely standalone, if possible.
Thank you
P.S. Also, many apps don't use Spring, so even if using relational DB, it shouldn't be assumed.

You should be able to use the builders. Only the creators depend on Spring JDBC. Ultimately, creators are about building a prepared statement, so we could separate them from Spring but not from JDBC.
Please note that I'm not maintaining this library any more. You could just exclude the Spring JDBC dependency but I suggest instead you either fork your own version of the library or just copy the builders into your own project.


Improvement on server startup message.

This PR show message on server starts up. In developer mode is good to see the message:
http://localhost:10001 -> /public

Thanks for the PR! This change would cause the message to appear multiple times when using rollup-watch. I'm ok with also showing the message when open is disabled, but it should only be logged once.


Blue border is displayed around :+1::skin-tone-2: emoji on search of + in emoji search (no blue border for other searches)

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Open the app in mac safari, mac chrome, windows chrome
Open any report
Open emoji picker
Search '+' in the search

Expected Result:
App should highlight :+1::skin-tone-2: emoji with background color like it does for other emojis on other searches
Actual Result:
App does not highlight :+1::skin-tone-2: emoji with background color and adds blue border around it when searched by search term: +
Workaround:
unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

Version Number: v1.2.97-2
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://user-images.githubusercontent.com/43996225/230749519-5ce298f1-05b6-4f2f-b32d-3da1a973ce6e.mp4
https://user-images.githubusercontent.com/43996225/230749521-a80bd2ad-32b3-43be-8127-dc0a6cfba759.mp4
Expensify/Expensify Issue URL:
Issue reported by: @dhanashree-sawant
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1680946937080279
View all open jobs on GitHub

Triggered auto assignment to @sonialiap (Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details.

Bug0 Triage Checklist (Main S/O)

[ ] This "bug" occurs on a supported platform (ensure Platforms in OP are ✅)
[ ] This bug is not a duplicate report (check E/App issues and #expensify-bugs)

If it is, comment with a link to the original report, close the issue and add any novel details to the original issue instead

[ ] This bug is reproducible using the reproduction steps in the OP. S/O

If the reproduction steps are clear and you're unable to reproduce the bug, check with the reporter and QA first, then close the issue.
If the reproduction steps aren't clear and you determine the correct steps, please update the OP.

[ ] This issue is filled out as thoroughly and clearly as possible

Pay special attention to the title, results, platforms where the bug occurs, and if the bug happens on staging/production.

[ ] I have reviewed and subscribed to the linked Slack conversation to ensure Slack/Github stay in sync

Thanks @allroundexperts for linking the potential reason for the behavior!
I'm going to follow the discussion on https://github.com/Expensify/App/issues/16348 before sending this one to engineering in case https://github.com/Expensify/App/issues/16348 is reverted and resolves this issue

PR in review.

Reviewing label has been removed, please complete the "BugZero Checklist".

The solution for this issue has been :rocket: deployed to production :rocket: in version 1.3.3-2 and is now subject to a 7-day regression period :calendar:. Here is the list of pull requests that resolve this issue:

https://github.com/Expensify/App/pull/17457

If no regressions arise, payment will be issued on 2023-04-28. :confetti_ball:
After the hold period is over and BZ checklist items are completed, please complete any of the applicable payments for this issue, and check them off once done.

[ ] External issue reporter
[ ] Contributor that fixed the issue
[ ] Contributor+ that helped on the issue and/or PR

As a reminder, here are the bonuses/penalties that should be applied for any External issue:

Merged PR within 3 business days of assignment - 50% bonus
Merged PR more than 9 business days after assignment - 50% penalty

BugZero Checklist: The PR fixing this issue has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:

[ ] [@mountiny] The PR that introduced the bug has been identified. Link to the PR:
[ ] [@mountiny] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment:
[ ] [@mountiny] A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion:
[ ] [@sonialiap] Determine if we should create a regression test for this bug.
[ ] [@mountiny] If we decide to create a regression test for the bug, please propose the regression test steps to ensure the same bug will not reach production again.
[ ] [@sonialiap] Link the GH issue for creating/updating the regression test once above steps have been agreed upon:

I think this only requires payment to @dhanashree-sawant
@sonialiap would you be bale to help out here, it was a regression and fixed in the original issue. No need for new regression test I think, this is border line with accessibility issues which we dont pay that much attention to

Hi @sonialiap , ping for payment.

Job posted https://www.upwork.com/jobs/~016b5d64540e33a276
@dhanashree-sawant offer sent for reporting issue

@dhanashree-sawant paid ✔


fix_duplicates_in_cold_takes

There was a bug where the dataset would go to https://www.cold-takes.com/, and first take all the urls from the "featured posts" section, and then take all the urls from the "all posts" section, and so the featured posts were all duplicated twice in the cold_takes dataset. Now I ignore the featured posts and the duplicates are gone.

made it neater by removing irrelevant changes


Added empty disallow field to robots.txt to comply with the Robot Exclusion Standard

Actually a single tool: http://tool.motoricerca.info/robots-checker.phtml
And this robotstxt.org page refers to this in these two sentences:

The record starts with one or more User-agent lines, followed by one or more Disallow lines, as detailed below.

At least one Disallow field needs to be present in a record.

Hence Disallow field is needed because User-agent field exists.
I think commit message should be changed to something like "Added empty disallow field to robots.txt comply with Robot Exclusion Standard"

Which tools do you want to comply with?

Sorry about that, I added a description.

With the explanation, I find this legit and I'd say :+1:

I think commit message should be changed to something like "Added empty disallow field to robots.txt comply with Robot Exclusion Standard"

@taylankasap you can change the commit message with git commit --amend -m 'New message' and push your changes with --force. I noticed you commited your changes to the master branch. Next time it might be worth to create a new branch so that you don't pollute your master.

Okay, I've updated the commit message.

:+1: Should be merged in 2.3

Should I send a new pull request from 2.3 to 2.3? I'm not familiar with the pull request flow.

@taylankasap this is just a suggestion to the person who'll be doing the merge. You don't have to do anything at this point.

Thank you @taylankasap.


Explorer still prompts for undo operation even with explorer.undo set to never

Testing #141351
I set explorer.undo to never but still get prompted when I try to undo a file creation action from the explorer.

Sorry about that, I provided a faulty description. The real setting is: "explorer.enableUndo": "disable", and it should be a registered setting.

I tried to set enableUndo to disable but I got an error message saying that a boolean was expected. I trued setting it to false and to disable but I still see the prompt.

Ah, this is a good catch, thanks.
Turns out that once explorer undo is disabled, the undo ends up being handled by the active editor. In your case, that editor was the same resource that the explorer undo would have handled, so the behaviour was the same, despite the explorer not actually participating in the undo... the fix for this is trickier.
Pushing this out as the original issue is mainly for prompting and disabling undo in "unexpected" circumstances, if the editor is open there is at least some amount of expectation.

Closing as-designed because the UNDO isn't handled by explorer, and more importantly this only applies to empty files where the data-loss risk is negligible.


failing to install using miniconda on OSX

Hello!
I'm trying to install CNApy on an Arm Mac (M1) using miniConda (yes, the Arm version). However, it appears that the cplex package for arm64 does not exist in the repos. In fact, i get this error message:
LibMambaUnsatisfiableError: Encountered problems while solving:

nothing provides cplex needed by cnapy-1.1.9-py_0

Could not solve for environment specs
The following package could not be installed
└─ cnapy 1.1.9**  is not installable because it requires
└─ cplex, which does not exist (perhaps a missing channel).
I have tried to install the regular cplex OSX64 package using conda install directly from the compressed file, but i still get the same error.
Anyone knows how to solve the issue? Thanks!

Hello and thank you for submitting this issue! We had a user with a similar issue, it could only be solved by using the x86 version of Anaconda, and then using it with CNApy instead of Anaconda's ARM version. The problem is that, while CPLEX itself has its own Mac ARM version, CPLEX's Python binding somehow does not yet have an ARM version :-| We likely have to wait for the next (or one of the next) CPLEX versions to resolve this problem in a satisfying way, without the performance drop due to using Rosetta.

Hello and thank you for submitting this issue! We had a user with a similar issue, it could only be solved by using the x86 version of Anaconda, and then using it with CNApy instead of Anaconda's ARM version. The problem is that, while CPLEX itself has its own Mac ARM version, CPLEX's Python binding somehow does not yet have an ARM version :-| We likely have to wait for the next (or one of the next) CPLEX versions to resolve this problem in a satisfying way, without the performance drop due to using Rosetta.

Thanks, Paulo! It worked perfectly. Hopefully they will fix the issue

@fcatrambone Hello once again :D We noticed that IBM pushed MacOS ARM PyPI wheels for the cplex package. Hence, with our switch to PyPI and the resulting new install procedures (for the latest version 1.2.2, see https://github.com/cnapy-org/CNApy?tab=readme-ov-file#installation-options), it might now be possible to directly use ARM-based python on MacOS. We're just lacking an Apple machine to confirm this :3


Get admin/stats page pulling in redis stats

In terms of # of items in the worker queue, and finished queue, you can use these classes:
https://github.com/pwnbus/scoring_engine/blob/master/scoring_engine/engine/finished_queue.py
https://github.com/pwnbus/scoring_engine/blob/master/scoring_engine/engine/worker_queue.py
For example:
worker_queue = WorkerQueue() worker_queue.size()

Implemented in https://github.com/pwnbus/scoring_engine/pull/153


Implement web server to view backups

Implement a restic command that starts a web server to browse snapshots.

This seems like a lot of complexity for something that doesn't seem to be the core responsibility of a backup program. Is this really needed? What's the use case? I would prefer FUSE (https://github.com/restic/restic/issues/27).

Windows doesn't have fuse. Having a basic web server is very little work using http://golang.org/pkg/net/http/#FileServer. This should take the same type of interfaces used to implement a fuse backend.

Exactly what I thought, it's not much code and probably the only way to browse snapshots in Windows.

I agree. At some point it's time for a GUI, and I think the most natural step to that is an embedded web server which can present it on localhost or even other interfaces if wanted. Everyone has a web browser and one wouldn't have to fiddle around with applications.

@rakoo are you interested in working on the web server next?

Thoughts about the user interface:

Start the HTTP server with restic server
restic writes an HTTP URL to stdout which includes randomly generated username and password
The webserver requires HTTP digest auth
And it only binds to localhost

Binding to something else than localhost shouldn't be impossible, but really hard. Maybe we'll hardcode localhost for the first version, and see if users complain.
Thoughts?

This is more or less what I had in mind, except without the username/password: IMO they provide little value against a potential attacker (we'd do plain HTTP, so the username and password are clearly visible).
I'm fine with binding to localhost only: seeing the space we operate in, I expect user to have ssh to access their VPS, so I think it's fair to expect them to tunnel access to their repo this way:
backupserver> restic server 5000

clientmachine> ssh -Nf -L 5000:backupserver:5000
clientmachine> open http://localhost:5000/

I realise this is quite old, but +1 from me. I also don't think the embedded username/password is helpful as for me, this is all behind a VPN anyway and I would like it started at system-up time.

@yatesco What's your use case for starting up the discussed web server component at system startup time? I can't think of one, could you elaborate?

Hi @fd0 - it is to expose the repository to to the team.
Rather unusually maybe, I have a bunch of data which I don't want hanging around so using this archive as 'long term storage' is great, but then I need to provide access to it from the team and a samba share (e.g. #377) or a web ui would be great

Ok, thanks for the explanation.

Is it possible to expose the Fuse mount via Samba? I can't get it working, folder isn't visible. How do I get the Fuse mount to use "allow_other"?

I've outlined what needs to be done here: https://github.com/restic/restic/pull/754#issuecomment-276023059
Also see issue #767 for the fuse mount options.

Is it just a viewer we need ? or a full GUI for all tasks ? Here features I imagine for a GUI:
Restore features:

list snapshots (with date, snap size, real size, etc.)
browse a snapshot (sort, search, etc.)
view file version history
restore a snapshot, or a selection of folder/files to user local drive

Admin features:

remove snapshots
backup
check
rebuild

With Electron we keep the crossplatform/HTML5 GUI but with additional features like filesystem access, exec commands, open ssh connections, native modules, etc.

I can't speak for the project, but for me, the restore features would be sufficient.
I mostly work on Windows boxes SSH'ing into the servers and if things fail I'd like to quickly plug in my backup drive to view / download the files in question.

Hi gents, just started to work with restic, really good job, thx! My fifty cents on this topic. Just 'view snapshot' is a bit useless imho (can be done with fuse mount published by any means like nginx, samba, etc), definitely there should be some useful actions a user can do next, e.g. restore files to selected hosts, restore sql dump to some db host, restore anything that restic backed up in easy way. There are two main things: 1. Data search/classification and 2. Do something under the data (e.g. restore, delete, share, classify, compare copies(diff), etc.). Why not FUSE: it's not about Windows at all, it's about UX. Having a web frontend for backup store with rich search and easy restore (tailored to particular data type and system) is really cool. I imagine dozen use cases that make sense for backup store (advanced search, remote restore, backup policy suggestions, data masking, PII protection, shredding, data compliances, reporting, etc), having a web front for some of them (at least search and restore) would be nice! For backup where in most cases the main purpose is just to restore recent version of something, in case of data corruption, as fast as possible, it is good enough, but for functionality like archiving having a web frontend is a must. Btw data archive is another cool feature, e.g. detach certain data from restic snap and move it to long-term archive, but this is another story and off topic for the thread) And yea, if you decide to do this in future, imho this should be done in rest-server, wrapping core features in rest api. The latter makes sense for integration with 3rd party systems.

I'd recommend a whole other application called something along the lines of restic-web written in go or nodejs and react or angular to be able to do everything you can do from the commandline interface

Could restic utilize something like https://github.com/dokan-dev/dokany/ on windows?

Hello,
I have found this article: https://devblogs.microsoft.com/commandline/announcing-wsl-2/
It says:

Now that WSL 2 includes its own Linux kernel it has full system call compatibility. This introduces a whole new set of apps that you can run inside of WSL. Some exciting examples are the Linux version of Docker, as well as FUSE!

Please, take into account that WSL requires Hyper-V to work, but:

Hyper-V is only available for some versions of Windows. For example, Windows 10 Pro has Hyper-V support, while Windows 10 Home does not.

Hyper-V cannot coexist with any other hypervisor software the user may already be using (like VirtualBox, etc). So, if someone is already using VirtualBox (or any another hypervisor), they will not be able to use WSL.

In summary, I think that WSL should not be taken for granted for every Windows user.

@aliron19 Can you cite a source for that? I am using WSL on my work pc to run redis, but this is a Windows 10 Home pc, so no Hyper-V and yet WSL works just fine.

see https://docs.microsoft.com/en-us/windows/wsl/wsl2-faq#does-wsl-2-use-hyper-v-will-it-be-available-on-windows-10-home

Thanks for clarifying. Seems that the Hyper V requirement is new to WSL 2, I thought aliron was talking about WSL in general. Also good to know Hyper V will become available for Windows 10 Home users.

I would say that we should prefer a Webdav server (#485) instead of a HTML interface.
This would also allow the users to easily add it as a network drive to the windows explorer..

If you got a server (or unix/linux) with nodejs, you can easily do that:
restic mount backup &
npx http-serve backup

Then you can browse http://<IP_ADDRESS>:8080
and see you files:

When you are done you can:
CTRL + C # stop npx
fg # bring back restic
CTRL + C # stop restic

I don't know if restic locks the repository while you mount it, or if you can add more backup in the meantime.
But at least you can have a tiny web interface to browse your files.

@vincent-ogury  I thought the point of this proposed feature is to provide a user friendly backup view where restic mount isn't available.

You are right. This should work inside a docker on windows I guess.
A web version may be nice for other platforms.
It may simplified command line to show snapshots, view, forget, start a new backups...

I would like to work on this issue. The ideas is to implement a vanilla Go http server with some basic html template. Our use case is to have some universal basic interface for Restic under Windows
Here is the scope of my task:
Problem
Restic does not provide a handy way to browse through the backups on Windows.
Task
Try to implement a basic proof of concept of a built-in web server, that allows browsing and restoring the backups using a browser.
Example
Executing the following commands will create two backups and you learn how to browse the backups via the command line.
openssl rand -hex 10 > ~/.restic-password
restic -p ~/.restic-password init --repo /tmp/backup
Make a backup
restic -p ~/.restic-password --repo /tmp/backup backup ~
Make some changes
date > ~/file-with-changes.txt
Make the next backup
restic -p ~/.restic-password --repo /tmp/backup backup ~
Look what backups you have
restic -p ~/.restic-password --repo /tmp/backup snapshots
repository 2ad83051 opened successfully, password is correct
ID        Time                 Host               Tags        Paths
b8ee7b24  2020-09-11 17:20:17  thorsten-devvm-v3              /root
99388d0b  2020-09-11 17:21:23  thorsten-devvm-v3              /root
2 snapshots
Look what what's inside a backup
restic -p ~/.restic-password --repo /tmp/backup ls -l 99388d0b
Get a json formatted list of all files in the backup.
restic -p ~/.restic-password --repo /tmp/backup ls -l --json 99388d0b|jq
Check if a file is in the backup
restic -p ~/.restic-password --repo /tmp/backup find snmp.json
Restore a file
restic -p ~/.restic-password --repo /tmp/backup restore latest --target /tmp/restore --include "/root/snmp.json"
Specifications
By executing something like that, the webserver starts, and internally the backup is "open".
restic -p ~/.restic-password --repo /tmp/backup webserver <IP_ADDRESS>:3344
Pointing my browser to HTTP://<IP_ADDRESS>:3344 I get the list of all snapshots in the repository. It's the same data, that restic -p ~/.restic-password --repo /tmp/backup snapshots shows.
I can click on the ID on the first column and I get a tree-view of all files in the snapshot. The same data as restic -p ~/.restic-password --repo /tmp/backup ls -l  --json returns is displayed. The tree-view doesn't need folding and unfolding nor icons at the beginning.
Or I can click on a path of a snapshot (5th column) and I get a list of files in the backup belonging only to this path. It displays the same data as restic -p ~/.restic-password --repo /tmp/backup ls -l  --path  --json
I can click on a single file and download it through the browser.
Ideally, I can click on a file and I get a list of all different versions ordered by date of that file.
A snaphot always gives a virtual view of the entire file system. To identify the different versions of a file the following command would be used on the command line.
restic -p ~/.restic-password --repo /tmp/backup find /root/snmp.json --json|jq
All objects, where mtime is identical must be reduced to a single object because files haven't changed.

IMHO adding support of "restic mount" on windows with something like dokany would make more sense to have the same restore workflow on Linux and Windows, and provide a better user experience using OS Explorer to browse the files.

Please see https://github.com/restic/restic/pull/2862 which addresses which is intended to solve Restic does not provide a handy way to browse through the backups on Windows in the same way as it's done on other platforms than Windows.

Sure but I guess it's quite hard for a "typical" windows user to use command line interface, my target is to provide a simple and understandable interface which any user can understand.

As a workaround, I've put together what @vincent-ogury and @celogeek suggested (thanks!) and made this dockerfile; https://github.com/stevedenman/restic-browser-docker
I've been running it on my Windows machine (in Docker on wsl2) and it works nicely for browsing snapshots and downloading files.

sorry guys do you say I should not do it? why there is a problem with that? the suggested solutions are quite hard for an average user in my case all we need to do - start program (with the defined flags) and open browser!

Hello.
As a fellow restic user, I just wanted to drop my two cents on the subject.
I'm a tech-savvy user so I'm fine with the way things are in restic. I'm also aware that restic is towards tech-savvy people; hence, the current solutions are/could be complex for some. But I see no problem with implementing a local web server that's accessible via the browser. It shouldn't replace the current solutions but as a side-solution it would be nice to have something like that. And perhaps, that would make restic more accessible to even more people.
Thanks.

I totally disagree with the "it's too hard for Windows users" opinions. First of all, these users have already managed to run restic to back their stuff up, and running the mount command instead of the backup command is no harder. Second, we're talking about opening the command line and entering restic -r foo mount bar here. Seriously, how is this hard for anyone? If someone is having problem with that, those people need to educate themselves. This is not something that is "hard", it's just one command line away.

Hello,
I have successfully mounted a restic backup on Windows Explorer using WSL2 but is not so easy as I'll expected.
You have to:

Install WSL2 as explained in Windows Subsystem for Linux Installation Guide for Windows 10
Change the default user of Ubuntu to root as explained in gurnec response at Can not edit /etc/nginx/nginx.conf from Windows. Access is denied.
Logon to an Ubuntu session as root and mount the restic backup as explained in Restore using mount, for example restic -r /mnt/c/ResticBackup -p /mnt/c/ResticBackup/password-file.txt  mount /mnt/restic

At the end you will be able to see:

Second, we're talking about opening the command line and entering restic -r foo mount bar here. Seriously, how is this hard for anyone?

If you consider BIOS options to let hypervisor work, setting up WSL and diagnosing any problems coming from it malfunctioning, etc this can be quite laborious. In my view a requirement to run Microsoft Hypervisor that is incompatible with VmWare and VirtualBox I'm using, is plain ridiculous for restic.
Web browser point and click is much easier and also http is somewhat better supported (hint: browsers) than windows flavour of smb if you want to share in LAN. Also It's not clear if you can expose these mounts via smb at all, but even if you can, the point still stands.
In my view there is no question that the web browser option is simpler.

If you consider BIOS options to let hypervisor work, setting up WSL and diagnosing any problems coming from it malfunctioning, etc

@AndrewSav That's not what's being discussed here. See comment from @rawtaz

EDIT: Just to clarify, I mean that this shouldn't be hard at all for any Windows user given restic mount working on Windows like in tended in #2862 - I'm not suggesting what @filippobottega wrote about right below this comment is easy for an average Windows user. I don't think one should have to use WSL to use restic mount.

@cfbao you need to install a kernel driver for that. I'm always for an option that does not require additional kernel dirvers.

@cfbao you need to install a kernel driver for that. I'm always for an option that does not require additional kernel dirvers.

@AndrewSav Point being that it's a very simple task that every Windows restic user would be able to do easily. The marginal utility of implementing a web server is hence greatly reduced and may not justify the cost to restic development and maintenance.

@AndrewSav The web interface is nice for looking around the backup, I can imagine that. But if there is a task to restore multiple files from different directories I'd prefer the decent file manager and backup snapshot mounted as a file system. If restic is to provide WebDAV interface to the back that is still inferior solution on Windows because of its WebDAV client limitations: 1) default max file size limit is 50M, user would need to do registry manipulations to  extend it to 4G; 2) some characters are not supported in file names.
My opinion is that web interface and proper filesystem mount are complementary features with somewhat different use cases.
The third-party kernel driver (e.g. http://www.secfs.net/winfsp/) is need to be installed only once and there is no reboot required.
I also don't quite understand argument about "running some obscure command line". Wouldn't you need to run some restic command to activate web interface as well?

Thanks everyone for your input! So let's sum things up:

@fd0 has previously suggested and thereby approved implementing a HTTP serving repository browser in this issue and elaborated on it in https://github.com/restic/restic/issues/60#issuecomment-122898872 .
Lot's of people think it's a good idea to have this platform-neutral feature to browse snapshots and their files.
A common opinion is that we also want to be able to restore files from it, to the extent it's practical (we might not expect to be able to restore an entire archive through the web browser, it'd be more of a "downloading files" action).
It should not do any write operations on the repository, only read operations.
WebDAV, while being an option for browsing files, is problematic in terms of client support. We might implement WebDAV too at some point, but neither that nor a web server excludes the other one - they're separate features.

I don't see anything preventing continued work and a PR for this. Personally I support it. I think we should:

Start small, make a web GUI that can browse snapshots and files in it, then once we have a solid base start adding restore functionality.
Make it start using the command restic serve http so that we can later add other methods of serving this such as restic serve webdav and perhaps restic serve rest.
Make it generate a temporary username and password when starting the server, to
allow for configuring the IP/hostname and port to bind to using an argument, e.g. restic serve http <IP_ADDRESS>:8080.
Not write ugly code that hardcodes assets/HTML/JS/CSS but instead embed a proper web GUI using e.g. https://github.com/tv42/becky or even start by just using net/http/#FileServer.
Realize that this is a feature that will take quite some time to finish, it's not something we'll do over night.

Existing work and similar references:

https://github.com/restic/restic/pull/1963 @kitone Are you interested in continuing working on your PR and this issue?
https://golang.org/pkg/net/http/#FileServer as mentioned here.

Just pinching in quickly - Windows which was the main concern now has WSL. Wouldn't that work for viewing of the files?

Just pinching in quickly - Windows which was the main concern now has WSL. Wouldn't that work for viewing of the files?

It would, but it's not available for everyone. See https://github.com/restic/restic/issues/60#issuecomment-518051082

It would, but it's not available for everyone. See https://github.com/restic/restic/issues/60#issuecomment-518051082

Don't want to disturb the discussion too much (because I would although like the Webserver/service solution), but because that somebody mentioned dokany:
I am using implementations of this project https://github.com/billziss-gh/winfsp under windows and it works like a charm. The most interesting benefint against dokany would the FUSE compatibility layer. So perhaps it is easier to integrate into the (PERFECT!!) restic binary.

Don't want to disturb the discussion too much (because I would although like the Webserver/service solution), but because that somebody mentioned dokany:
I am using implementations of this project https://github.com/billziss-gh/winfsp under windows and it works like a charm. The most interesting benefint against dokany would the FUSE compatibility layer. So perhaps it is easier to integrate into the (PERFECT!!) restic binary.

@printpagestopdf
That sounds perfect. Can you write a guide to do this?

@printpagestopdf
That sounds perfect. Can you write a guide to do this?


Simply script uri converter

Codecov Report

Merging #10728 (9d7f984) into main (1d1e960) will increase coverage by 0%.
The diff coverage is n/a.

@@          Coverage Diff           @@
##            main   #10728   +/-   ##
======================================
  Coverage     62%      62%
======================================
  Files        476      476
  Lines      32985    32983    -2
  Branches    5356     5356
======================================
+ Hits       20734    20750   +16
+ Misses     10255    10244   -11
+ Partials    1996     1989    -7

Impacted Files
Coverage Δ

...rc/notebooks/controllers/controllerRegistration.ts
88% <ø> (-1%)
:arrow_down:

.../notebooks/controllers/vscodeNotebookController.ts
79% <ø> (ø)

src/notebooks/outputs/tracebackFormatter.ts
93% <0%> (-7%)
:arrow_down:

src/platform/common/utils/localize.ts
75% <0%> (-1%)
:arrow_down:

src/kernels/kernelDependencyService.node.ts
86% <0%> (+<1%)
:arrow_up:

src/kernels/errors/kernelErrorHandler.ts
63% <0%> (+<1%)
:arrow_up:

src/standalone/api/kernelApi.ts
73% <0%> (+1%)
:arrow_up:

...ebooks/controllers/notebookIPyWidgetCoordinator.ts
88% <0%> (+1%)
:arrow_up:

src/kernels/jupyter/session/jupyterSession.ts
74% <0%> (+2%)
:arrow_up:

src/kernels/installer/productInstaller.node.ts
78% <0%> (+4%)
:arrow_up:

... and 2 more


Add MLTransform and Vertex Private endpoints to CHANGES.md

The cut for 2.50 is tomorrow so we should make sure these are added

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Mention the appropriate issue in your description (for example: addresses #123), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, comment fixes #<ISSUE NUMBER> instead.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.
To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md
GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI or the workflows README to see a list of phrases to trigger workflows.

R: @jrmccluskey @AnandInguva


2q promote starting with hot items

With 2Q we can start promoting items that are in the Hot list

I belive it is already merged into develop


building steps

Dear sir;
good day;
during the workshop in YMCA you show us the steps to build the app but i cannot find it here anymore can you help me in that.

I didn't write the build steps on how to use Android Studio.
If you are referring to the guide on writing the code, its under the
Codelabs folder
On 8 Oct 2016 8:24 PM, "AbdullahAmer86"<EMAIL_ADDRESS>wrote:
Dear sir;
good day;
during the workshop in YMCA you show us the steps to build the app but i
cannot find it here anymore can you help me in that.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/AgmoStudioSdnBhd/Android-Pasar-Malam-Locator/issues/1,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ADz98Wua0A_MArKnhvfxfNDtuPtaLsizks5qx4uKgaJpZM4KRtSC
.


Update Remove-SPUser.md

updated example 1, remove space bet. contoso joe

OPS Build status updates of commit c9da3ad:
:clock10: Preparing: average preparing time is 1 min(s) 13 sec(s)

OPS Build status updates of commit c9da3ad:
:clock10: Incremental building: average incremental building time is 12 min(s) 23 sec(s)

OPS Build status updates of commit c9da3ad:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

sharepoint/sharepoint-ps/sharepoint-server/Remove-SPUser.md
:white_check_mark:Succeeded
View (sharepoint-ps)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


sits there with a flashing cursor no output from TV remote

Hi, I see you closed the last issue... But it still does nothing when I press keys on the TV remote.
If it suppose to display info on the CLI as keys are pressed then why is it not showing up (up, down, left, right, red, green ....)
what line can i get it to print something to show its working and to work out why my TV is not playing nice?

Line 41 is where screen printed output should currently occur

Not all HDMI cables are created equally.  You need one that advertises it has an audio return channel.

There is nothing wrong with my hardware as far as I know. It works with cec
client so why not with your one...? 🙂
On Sat, 23 May 2020, 10:32 am DrGeoff<EMAIL_ADDRESS>wrote:

Not all HDMI cables are created equally. You need one that advertises it
has an audio return channel.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/DrGeoff/cec_simplest/issues/3#issuecomment-633014680,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AN3GUW2WUB4TLBIOF6VCGDLRS6J4RANCNFSM4NILOHSA
.

Ok this is really strange.... It has started working unexpectedly. it seems the program takes a minute or two to settle down and connect to USB I guess. I'm now receiving messages from my TV remote. the strange thing is if i press any button once it shows up twice so for eg i press the red (old teletext button) once and i see on_keypress: 114  twice.
Whats that all about ?
Should it not read key down key up?

I'm glad it is working for you.  I think the double output is exactly as
you said, Keydown and keyup, but it's been a while since I looked at the
CEC API.
On Sat, 30 May 2020, 8:56 pm Electrik-rich546456<EMAIL_ADDRESS>wrote:

Ok this is really strange.... It has started working unexpectedly. it
seems the program takes a minute or two to settle down and connect to USB I
guess. I'm now receiving messages from my TV remote. the strange thing is
if i press any button once it shows up twice so for eg i press the red (old
teletext button) once and i see on_keypress: 114 twice.
Whats that all about ?
Should it not read key down key up?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/DrGeoff/cec_simplest/issues/3#issuecomment-636314290,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAEV4I2FXEDEEEXPX7MAZDDRUDQ7HANCNFSM4NILOHSA
.

well I've owned this device for a long long time and would really like to be able to use it for my idea but I think I've been climbing mount stupid rather that the CEC mountain lol.
Do you know what sort of area i should be learning to be able to do what i want in C ??

oh yeah is there a way to make it only print only one not twice as it doesn't do it with all keys ?????
arrrgggg I'm either bagging head on a Python wall  and now a C wall. :-(
on_keypress: 114
on_keypress: 114
on_keypress: 115
on_keypress: 115
on_keypress: 116
on_keypress: 116
on_keypress: 113
on_keypress: 113
on_keypress: 1 up
on_keypress: 4 right
on_keypress: 2 down
on_keypress: 3 left
on_keypress: 0 select
on_keypress: 0 select
on_keypress: 114
on_keypress: 114
on_keypress: 115
on_keypress: 115
on_keypress: 116
on_keypress: 116
on_keypress: 113
on_keypress: 0 select
on_keypress: 0 select
on_keypress: 1 up
on_keypress: 2 down
on_keypress: 4 right
on_keypress: 3 left

static unsigned long counter = 0;
// There seems to be a "down" keypress and and "up" keypress
// Make life simple by just swallowing the "up"
if( counter++ % 2 ){ return; }

There's a snippet that I sometimes use to swallow the second event.  It
would be better to ensure that the consecutive messages are the same but
the above is simple.
If you want to write a program in C++  then it will take you about 100
hours to get a basic handle on the language.  C++ is more feature full than
C and if you are familiar with another language like Java or Python then
C++ will be easier to learn.   But the greater scope of the C++ language
will mean it will take longer than C to get your head around. The internet
is full of resources on how to learn any language you want to.  But the
advantage a book has is that somebody has curated it.
Best wishes,
Geoff
On Sat, 30 May 2020 at 21:19, Electrik-rich546456<EMAIL_ADDRESS>wrote:

oh yeah is there a way to make it only print only one not twice as it
doesn't do it with all keys ?????
arrrgggg I'm either bagging head on a Python wall and now a C wall. :-(
on_keypress: 114
on_keypress: 114
on_keypress: 115
on_keypress: 115
on_keypress: 116
on_keypress: 116
on_keypress: 113
on_keypress: 113
on_keypress: 1 up
on_keypress: 4 right
on_keypress: 2 down
on_keypress: 3 left
on_keypress: 0 select
on_keypress: 0 select
on_keypress: 114
on_keypress: 114
on_keypress: 115
on_keypress: 115
on_keypress: 116
on_keypress: 116
on_keypress: 113
on_keypress: 0 select
on_keypress: 0 select
on_keypress: 1 up
on_keypress: 2 down
on_keypress: 4 right
on_keypress: 3 left
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/DrGeoff/cec_simplest/issues/3#issuecomment-636316658,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAEV4I7YQWMEN4S6OX3CRTTRUDTSPANCNFSM4NILOHSA
.


Use different postcss.config.js file in vite.config.js then default postcss.config

Describe the bug
Having multiple app builds i need multiple postcss config's,
I tried using inline postcss configuration and linking to a file. Non of that works.
Adding a postcss.config.js to the root does work, but i can't use that since i have other vite.config's that need different postcss config files and have different configurations
Reproduction
I'm using Vite + Vue2
//vite.config.js using postcss file
import { createVuePlugin } from 'vite-plugin-vue2';
export default ({ command }) => ({
plugins: [ createVuePlugin() ],
resolve: { alias: { vue: 'vue/dist/vue.js' } },
sourcemap: true,
css: { postcss: './postcssapp.config.js' },
});
//vite.config.js using postcss inline
import { createVuePlugin } from 'vite-plugin-vue2';
export default ({ command }) => ({
plugins: [ createVuePlugin() ],
resolve: { alias: { vue: 'vue/dist/vue.js' } },
sourcemap: true,
css: {
postcss: {
plugins: {
tailwindcss: {config: './tailwindapp-config.js'},
autoprefixer: {},
},
},
},
});
System Info
System:
OS: macOS 11.3
CPU: (12) x64 Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
Memory: 303.24 MB / 16.00 GB
Shell: 5.8 - /bin/zsh
Binaries:
Node: 14.17.0 - ~/.nvm/versions/node/v14.17.0/bin/node
npm: 6.14.13 - ~/.nvm/versions/node/v14.17.0/bin/npm
Browsers:
Brave Browser: <IP_ADDRESS>
Firefox: 89.0
Safari: 14.1
npmPackages:
vite: ^2.3.4 => 2.3.4

I forked an existing sandbox and edited the vite.config and postcss.config giving me the same results.
https://codesandbox.io/s/adoring-sun-52t4z?file=/vite.config.ts

https://vitejs.dev/config/#css-postcss

a custom path to search PostCSS config from (default is project root). The search is done using postcss-load-config.

So it is a directory path.
https://github.com/postcss/postcss-load-config#usage
The filename can only be one of the specified names.

So for your use case, please either use a canonical configuration file and put conditional loading logic in it, or pass an inline config.

The Vite documentation isn't very clear on this, so I marked this issue as a documentation one.

I prefer using inline instead of another package. When using inline i get following error trying to load the app (so not when compiling and running the localhost server)
[vite] Internal server error: postcssConfig.plugins.slice is not a function
  Plugin: vite:css
  File: /Users/user/Code/project/resources/assets/css/app/app.css
      at compileCSS (/Users/joeri/Code/jobtoolz-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:19155:91)
      at async TransformContext.transform (/Users/joeri/Code/jobtoolz-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:18809:50)
      at async Object.transform (/Users/user/Code/project/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:44285:30)
      at async transformRequest (/Users/user/Code/project/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:58557:29)
      at async viteTransformMiddleware (/user/Code/project/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:58695:32)

My inline configuration (can't use required i think because i use esm build))
css: {
        postcss: {
            plugins: {
                tailwindcss: { config: './tailwindapp-config.js' },
                autoprefixer: {},
            }
        },
    },

I prefer using inline instead of another package. When using inline i get following error trying to load the app (so not when compiling and running the localhost server)

When using inline css.postcss with object notation, I find exporting the config works. See postcss: Plugins can be loaded either using an {Object} or an {Array}
    css: {
        postcss: module.exports = (ctx) => ({
            plugins: {
                'tailwindcss': {
                     config: './tailwindapp-config.js'
                },
            }
        })
    },


Execute the joinchat and prompt "Can't unrestrict self".

Execute the joinchat and prompt "Can't unrestrict self".

Could you show result of getChatMemberStatus for self in the chat?

It seems that there are issues with joinChat due to server-side change. You can use addChatMember with self instead to join a chat.

Hi, 'im getting the same issue.

Yes, join chat works fine with addChatMember.
@levlam , could you please help a bit with meaning of "forwardLimit" param for addChatMember? I'm not sure what is the correct value for it? "1" - looks correct but won't there be any problems later?

When you join a chat self via addChatMember, forwardLimit is competely ignored.

thanks


Changing sync time in a mirror repo from Github, disrupt syncing

Description
When you create a mirror repository from Github, if you try to set a different sync timing (default is every 8h), the url config inside the file gitea-repositories/organization/repository.git/config is overwritten removing the Personal Access Token (PAT).
This is a frontend bug due to the form that contains the sync time settings, contains also two authentication fields (username and password). By clicking on the button "Update Mirror Setting", you will loose your url with PAT
Since the mirroring of a Github repo needs only a PAT, nobody sets the authentication fields (and Github refuse to use username-passsword authentication for repo cloning).
You can modify the form to add a button just to adjust the sync timing, or put the option in a different form.
Gitea Version
1.20
Can you reproduce the bug on the Gitea demo site?
No
Log Gist
No response
Screenshots
Just created repo

Just created repo config file

Changing sync time

Config file after sync time setting

Log file you get if you try to force syncronization

Git Version
2.39.3
Operating System
RHEL 8
How are you running Gitea?
Donwloaded last packaged version, running with systemd on CentOS 8
Database
MySQL/MariaDB

Can u please confirm the Gitea version?  In the latest Gitea version(1.20.5) binary and http://try.gitea.io, the mirror setting UI is different from yours.
Please change to the English setting appearance when screenshotting,  or it can't be understood by all people from different areas.

Well, that's two different behaviors:

Change the clone URL to a URL that contains PAT and username, Gitea automatically strips out the username and PAT and displays the username in the front end. Meanwhile, the config file's URL still includes the PAT and username. This behavior is expected.
Change multiple settings in this mirror settings section and hit button, the Gitea only changes one setting. This behavior is unexpected, which is a bug in the front end.

Hi, well the behavior 1 is fine, the frontend show the repo url, not the connection url (which includes the PAT), I know this is ok.
The behavior 2 is that changing only one setting (the sync time) changes many settings (as you can see in the differences from the config file before and after the time sync change).
For now, it is impossible to change only the sync time (unless setting it globally editing the app.ini file).


Qustion about children of Terminal

This is my grammar file,
https://github.com/oovm/lrpeg-test/blob/master/projects/lrpeg/src/ygg.peg
This is my parsing output of x=0
https://github.com/oovm/lrpeg-test/blob/95b032c9ca0fd46c39ea31edf480d41eaecdec1b/projects/lrpeg/tests/assign.yaml#L23-L34
I don't understand why there are two Terminals here, and the statement nodes I need are wrapped in children.
In my understanding, Terminal is ε or string or regex, it should have no children.

(statement IGNORE)* becomes a node in tree, which is incorrectly labelled Terminal. I've just pushed a change which labels them List (amongst others). Let me know how this works for you.


WSL xrdp issue (works in 2.0.4, doesn't work in 2.0.9)

Windows Version
Microsoft Windows [Version 10.0.19045.3693]
WSL Version
<IP_ADDRESS>
Are you using WSL 1 or WSL 2?

[ ] WSL 2
[ ] WSL 1

Kernel Version
<IP_ADDRESS>-1
Distro Version
Ubuntu 22.04
Other Software
xrdp
Repro Steps
I've developed steps for using a full desktop environment (via mstsc and xrdp).  Over the past few months I've tested
Budgie
Cinnamon
Enlightenment
GNOME
KDE
LXDE
LXQT
MATE
Xfce
I periodically re-test (to make sure my steps work).  I have confirmed that works in 2.0.4 does NOT work in 2.0.9+
EUD-WSLwithdesktop-081223-1524-4.pdf
I just installed a fresh 22.04 instance on wsl 2.0.4 with GNOME.  I was immediately able to RDP to the desktop (via mstsc and xrdp).  I can see the dock and use apps.
After I update wsl to 2.0.9 - I can connect to xrdp and login, but I don't get a desktop.  If I install fresh under 2.0.9, I see the same behavior.
Expected Behavior
Consistent xrdp behavior between 2.0.4 and 2.0.9+
Actual Behavior
Inconsistent xrdp behavior between 2.0.4 and 2.0.9+
Diagnostic Logs
No response

Does your GNOME have a lock in settings dialog like Date and time and printer, and you cannot unlock them with a notification "System policy prevents changes."?
I work well with <IP_ADDRESS> using Windows Remote Desktop, except the above problem.

GNOME desktop works for me without problem in WSL in 2.0.9 when I connect using Windows Remote Desktop, so I can confirm you that it is not the problem of WSL version. I'm on Windows 22H2 Education and installed Ubuntu 22.04.3 inside WSL2.

I appreciate your feedback @Heng-Zhou.  However, I have a working desktop on 2.0.4.  I upgrade to 2.0.9 (or 2.0.14) and it doesn't work.  I will do some additional testing when time permits.

Thank you @blakeduffey. Can you share details about specifically is failing ? We don't support xrdp so to root cause this we'd need to know what exactly is causing gnome to fail in your configuration. I'd recommend looking at straces / logs to see if you can pin point what's going wrong.

@OneBlue - thanks so much for following up.  To test this fresh I've done the following:
Uninstall WSL
Install WSL 2.0.4 (via the msi)
That gives me the following:
WSL version: <IP_ADDRESS>
Kernel version: <IP_ADDRESS>-1
WSLg version: 1.0.58
MSRDC version: 1.2.4485
Direct3D version: 1.608.2-61064218
DXCore version: 10.0.25880.1000-230602-1350.main
Windows version: 10.0.19045.3693

Install Ubuntu via wsl --install Ubuntu
Configure wsl-vpnkit
Export the Ubuntu distro via wsl --export Ubuntu ubuntu.tar
I've then imported that image as UbuntuGNOME, UbuntuKDE, and UbuntuXfce (just for comparison purposes)
I follow my distro-specific steps to setup GNOME, KDE, and Xfce on the 3 separate instances (and bounce xrdp on each).
FWIW I feel confident I could do it with the other desktops I've tested including budgie, cinnamon, MATE, Enlightenment, LXDE and LXQT.
Then I shut everything down (wsl --shutdown) since xrdp will try to run on the same port on each as it stands.
I bring them up, one at a time, and connect via mstsc (localhost:3390) to verify I can get the desktop

I shut all the instances down via wsl --shutdown
I update to 2.0.14 (as of today) via wsl --update
So Xfce worked
KDE crashes and GNOME gives a black screen after logon

I'm actually typing this as I do it - the only thing that has changed is I updated WSL from 2.0.4 to 2.0.14.

Thank you @blakeduffey. Unfortunately we don't have internal knowledge of KDE or gnome so if nothing jumps out in their straces / logs, you might need to contact their respective maintainers to help figure out what the issue is.
I can also see that msrdc has been updated in 2.0.10 so transferring to wslg so they can help us figure out if this is related.


Infer package version from package.json?

Is it possible to use the version from package.json? so I don't need to keep them in sync?

At the time of this writing the version needs to be kept in sync manually.

I've added build script that constructs jsr.json from package.json

I've added build script that constructs jsr.json from package.json

Could you share that script with the rest of us in the same situation?

Here's my release-please config which solves this and also a related issue:
https://github.com/googleapis/release-please/issues/2324

It's not solved, it's a hack. Still everybody needs a build step. It should be supported out of the box.

Here is my command to move "version" and "name" fields from package.json to jsr.json. It doesn't overwrite other preexisting fields in jsr.json such as "$schema" (btw, I highly recommend adding "$schema": "https://jsr.io/schema/config-file.v1.json", to your jsr.json) or "publish" which could be quite different from the usual "publish" in package.json.
jq -s '.[1] + {name: .[0].name, version: .[0].version}' package.json jsr.json > temp.json && mv temp.json jsr.json

Or also you can prefix the name:
jq -s '.[1] + {name: ("@nikelborm/" + .[0].name), version: .[0].version}' package.json jsr.json > temp.json && mv temp.json jsr.json


Show connection on hover without duplicating edges

Hit-testing is performed with SVG <use> tag so there's no need to duplicate edges anymore.

@beru any insights which approach is more efficient in resource usage?

any insights which approach is more efficient in resource usage?

I checked memory consumption of Electron processes with Task Manager.
It seems like this MR consumes a bit of more memory compared to main branch.
If lowering memory usage is important, I'd add a command-line option to stop adding the hitTestElement in grapher.Edge.build method. If browser users say Netron app has gotten resource hogging, adding the hitTestElement can be stopped by default.

@beru both memory and performance. For example, does it impact rendering speed of large graphs? The goal is to keep the app and browser version simple and easy to use while options tend to be hard to discover. It's more about understanding the impact of this feature and what potential issues might arise and the finding the best possible technical trade-off.

I guess it would impact rendering speed of large graphs that contain a lot of edges (let's say more than a few thousands). But I'd like to believe svg rendering of speed Chromium isn't that bad with recent GPUs.
Before rendering speed issue would arise, I suspect large graph layout with dagre.js won't finish so most of users wouldn't notice the rendering slowness. GraphViz and MSAGL are also pretty slow to layout when the number of nodes and edges exceed beyond 5,000 and I guess this is a nature of sugiyama algorithm.


[RFC] Add a generic GameProvider for launching any valid application and game.

Why?
This largely spawned from wanting to jerryrig a Mixin-capable loader to ProxyFox in order to inject suppressed exceptions at kotlin.ResultKt#throwOnFailure to provide a much better stack trace over KTor's own, frankly useless, stack trace that immediately enters into itself rather than the application.
With committing the 7 sins of modding in order to achieve this, I've noted that it's really not difficult to get Quilt to launch for other applications (4 classes, 3 of which could've been simply omitted if the internal APIs for LibClassifier were "public"), and feel that providing an official method of launching any application with Quilt Loader could be of benefit for anyone who wishes to have an easy way to access widen & mixin into Java applications for any number of reasons, including the one I highlighted above.
Goals

Provide a GameProvider that anyone can use by simply dropping it in and point to the correct jar or class.

Non-goals

Replace the existing, working MinecraftGameProvider class. This cannot replace it as the Minecraft provider has special patches for branding, and hides arguments with secrets.
Be a drop in where another modding platform exists (i.e. Forge, Paper, Velocity). This would open up such a possibility for the end user to be able to do so, but this is not an intended use case, and there's no guarantees that the classes would even pass through Knot as is without intervention.

Potential implementation
As a valid Java application will generally provide a META-INF/MANIFEST.MF that gives a classpath, version and main class, it's possible to read the manifest and get information on the application before attempting to launch it.

locateGame would have to use either an argument (say, first argument, ambiguous) to determine the boot class or jar, or use an environment variable. It would also have to bootstrap the metadata that can be fetched from the manifest, filling in values that may otherwise have to be left blank or at defaults.

LibClassifier would have to be extended to allow for easily excluding Quilt Loader and its dependencies from being loaded through itself. Ideally, it should be made public with a usable API to allow for other GameProvider implementations to use it to find the game or application they're providing, and to find which libraries are safe to throw into Loader's classpath. A flag maybe provided to add itself to the classpath anyways if it is for any reason shaded into the same jar as the application it's running.

Logger wrappers should be considered generic and not Minecraft-specific, as the end application may happen to provide SLF4J and Log4J. Note that the Log4J wrapper then can't assume that the application doesn't use advanced features of the logger this point. This can likely be done within an AbstractGameProvider should one be created for this purpose.

Ideally should run last when no other provider matches. This is mainly to prevent specialised providers that may provide patches or specific arguments from being inadvertently suppressed by the generic implementation.

Potentially refactor the GameProvider setup a bit to provide an abstract implementation to more easily build custom and generic providers for applications.

There's likely more to account for, given that the generic implementation requires some thought to implement well, including UX for drop-in & go, and APIs that would have to be exposed to make for a better experience implementing custom providers should it be required for any reason.

Since this would be useful as reference: https://docs.oracle.com/en/java/javase/17/docs/specs/jar/jar.html#jar-manifest
Also, a thing to account for: Hot loading agents should be considered given that application jars may provide one and expect it to be applied by the JVM normally.

To be honest, I'm a bit unhappy with how game providers work, since I don't think we really need to have a single generalized version of quilt-loader that everyone installs - instead I'd rather move towards having a quilt-loader-bare.jar (which can't launch anything - instead looking for a class named org.quiltmc.loader.impl.game.TheGameProvider on the classpath) and a quilt-loader-for-minecraft.jar, which can load only minecraft itself and nothing else. The "generic" GameProvider could be in a similar situation, named something like quilt-loader-general.jar and only containing a game provider which launches standard java applications in the way you've described.
I do agree with the general idea of adding this though.
I'm not sure how agent loading works, but this is the sort of thing that isn't necessarily required for every usecase of this so I assume it could be looked into later?

Fair. It doesn't necessarily have to be bundled in the main jar, and is that way with the current architecture; one is able to write an arbitrary game provider and just have it in the classpath. The only problem with that approach is that GameProvider isn't considered stable API, so, it's possible to break across versions; a small aspect already changed with the built-in mod metadata creation between 0.17 and 0.18.
If a generally modular approach is to be done, it might be a good idea to stablise the APIs relating to GameProvider, but not necessarily expose it to the end mod, so that way the game provider doesn't immediately break if updated independent of the loader. If it still manages to break, a try/catch block for each provider could provide helpful information as to why it may have broken (i.e. for an older version of Quilt, which the provider may optionally embed which it was built for).
Agent loading can be looked into later, since it's not necessarily required for most applications to function, and it's possible the agent is optional as far as the application is concerned.

Game providers unfortunately touch (and are called by) a lot of loader internals, so it's not really possible to stabilize those APIs. That's okay though since game providers aren't expected to be very common, and will likely have much more control over when they update their underlying version of quilt-loader.
This particular (generic) game provider should be another sub-project of this repository - like how minecraft specific stuff is in a sub-project. My main point is just that it should probably be built into a different jar file at the end.

That's fair. It's very likely that if you're using your own GameProvider that either...
A: You're most likely going to be fine with using an older version.
B: You can update it yourself, if it is part of the main project (i.e. bot's).
It's just considering that if they'll be detached JARs, it might be a good idea to have some mechanism to at least say on crash that Hey, this GameProvider <name or class> broke, try ${relative ? up : down}grading to Loader <whichever version it was originally built for if found> or ${relative ? down : up}dating the provider, so that the end user, should be using such a setup, isn't confused as to why it broke.

instead looking for a class named org.quiltmc.loader.impl.game.TheGameProvider on the classpath

Would sound much cleaner to me to use service providers instead.
slf4j also used to do that and switched to service providers as well.

Oh, er, not all game providers actually - quilt-provided ones would be separate (complete) jars containing bare quilt-loader plus the game-specific stuff.
Oh, misinterpreted what you said then. Yeah, that should be pretty stable as is then.

It sounds really painful to isolate every use of game provider and blame errors specifically on that game provider, so I'd rather not try to do that - mismatched versions can already happen if the install mechanism doesn't mandate specific versions of libraries.
It might be feasible to at least say if the stack has a GameProvider class in it, that it can be blamed on it. Just depends on whether it'd be worth the time to at least account for that case.

Would sound much cleaner to me to use service providers instead.
slf4j also used to do that and switched to service providers as well.

It's already in use by Quilt, so, nothing there needs to be done, making external providers just work if they define a game provider. The only thing special it has is short-circuiting with only trying its own Jar before going through the service loader.

Would sound much cleaner to me to use service providers instead.

We currently use service providers. I don't like using them since I want classes (like the environment enums and potentially others) to be in the game provider, but also returned (and directly used in) quilt-loader APIs. This requires us to have a single game provider on the classpath ever - so it would be somewhat meaningless to use a service loader.

A bit of a catch I ran into with developing on quilt-loader-0.18.1-beta.27-20230105.235638-8 is that SystemProperties.REMAP_CLASSPATH_FILE seems to be required, along with the intermediate_mappings field in the quilt.mod.json, neither of which makes much sense for this context.
The only real workaround I thought of without modifying the codebase for the remap classpath file was to create the file and set the property on initialise, which is about as hacky as you can get out of that.
A far better solution would likely be to query the game provider for a classpath, which it could then either give the remap classpath file, or its own made up one if applicable, which then could be later fed into Knot once ready.
As for intermediate_mappings, it does seem a bit out of place for when the 'game' in question isn't even obfuscated, making its requirement seem... very out of place. It might be good to have a none option of some sort for such mods that don't touch obfuscated code in any capacity, thus not requiring hashed or intermediary, or perhaps later on, let the game provider provide its own intermediary options, or let it try to auto-discover from the internal mappings folder.
Note that I'm not modifying Quilt Loader in any capacity in this instance, only adding a GameProvider and telling Quilt to try that via the service loader API.

One of the problems I've encountered using quilt loader for general applications is the fact that the library uses the net.fabricmc.api.EnvType enum. I currently working on an ASM Transformer to add an enum to net.fabricmc.api.EnvType.

For that we just said it was SERVER and called it good enough when using it for ProxyFox a while ago.
But yeah a dedicated enum type might be good?


Raise error

HA is asyncIO timout during startup - found that we are not raising/re-raising the timeouts for HA to catch.
Once these are raised, HA will try to connect again  by raising "ConfigEntryNotReady"

Still not sure I like how we handle !=200 messages - but I suppose they end up with an authentication error in the integration.
It appears I missed the rasie ConfigEntryAuthFailed in the integration - the asyncio timout would toss that, even though it's not "true"

I'm not sure how to fix the tests for passing in the ClientSession.

Thanks again for your contribution!


Code Sample on Testing on a Single image or video

Thank you so much @XuJiacong for your work in creating PIDNET. I want to test the pretrained model on images and videos but there is no straightforward code on doing that. Looking forward to your response.

For you own dataset, you need to create a list for it (see the files in data/list/cityscapes/), then define the parameters by creating the .yaml files (see the files in configs/cityscapes/). Then you can just run the tools/eval.py to test the pretrained models.

Thank you @XuJiacong!

Do you have groudtruth for the image or video? Or you just want to get the prediction?

Do you have groudtruth for the image or video? Or you just want to get the prediction?

Yes! I want to get the prediction! Test it on a single image and obtain the masks results.

Please see the Custom Inputs section for the solution. Thanks.

Please see the Custom Inputs section for the solution. Thanks.

Thank you so much @XuJiacong ! I was able to perform inference successfully on images.

Thank you so much @XuJiacong for your work in creating PIDNET. I want to test the pretrained model on images and videos but there is no straightforward code on doing that. Looking forward to your response.

hello， Could you  share the code for the testing video，Thanks


[release-1.16] Restrict max size of PEM inputs

Pull Request Motivation
See #7400 for context
Kind
/kind bug
Release Note
Set a maximum size for PEM inputs which cert-manager will accept to remove possibility of taking a long time to process an input

/test pull-cert-manager-release-1.16-e2e-v1-31


8385.15 Add Artifactory master integration

Shippable/pm#8385
Show the Artifactory master integration in the add-ons section of the UI with a checkbox. Make sure that it is enabled/disabled when the button is clicked.

complete. closing.


Add monthly downloads badge to README

Just a suggestion. I've been working on developing a badge system for Python packages to display statistics like monthly downloads. You can check it out at - https://piptrends.com/package/mapclassify.
Our goal at Pip Trends is to create a learning forum where developers can access everything they need to get started with Python and Python packages.
The badge links to the mapclassify page on Pip Trends, showcasing various stats and documentation. We plan to add simple getting-started articles and more to this page soon, and contributions are welcome. If necessary, this link can be removed. This PR is just to share the badge we have created.

Thanks! Though I am not sure I am in favour.
If we want a badge showing number of downloads I would rather suggest using shields.io option as we do with other badges. That also ensures it looks the same. And the link shall probably go to PyPI.
This PR feels more like a way of getting piptrends into the wild rather than an improvement of our Readme.

Understandable, like i mentioned earlier, this is just a suggestion and we just want to share something we built. Also about the link to piptrends.com, like I mentioned can be removed if needed.
The goal is to only share something we have built and nothing else.
About using shields.io, I believe their counts are a little inconsistent compared to the actual counts. (The download counts differ by a margin of ~6k)

Our count matches the following query:
SELECT COUNT(*) AS num_downloads
FROM `bigquery-public-data.pypi.file_downloads`
WHERE file.project = 'sqlalchemy'
  -- Only query the last 30 days of history
  AND DATE(timestamp)
    BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
    AND CURRENT_DATE()

Not quite sure why the shield.io badge has inconsistent counts, but it's the same across all packages. You can refer to the Python Packaging User Guide for more information.

@martinfleis a colleague of this person tried to open this exact PR against a project I'm the maintainer for as well (https://github.com/ixmatus/inflector/pull/16). This is a promotional campaign and they (or colleagues) appear to be doing it on reddit too, I think this is suspicious activity. They are creating an external dependency on a web property that (as far as I can tell) is not officially blessed by pypi. I recommend rejecting this PR.
Users can get package statistics from libraries.io which is linked to directly by pypi itself.

@ixmatus Well said.

Thank you for your feedback and concerns. I'd like to clarify that this is not a promotional campaign. As stated in the PR description, our intention is simply to share a tool we have developed, which we believe could be beneficial to the community.
Our badge system offers highly accurate statistics, which is why we wanted to make it available. If the link to the pip trends page is a concern, we are more than willing to remove it.
We respect your decision if you prefer not to add more badges to your README. Our primary goal is to address any misunderstandings and assure you that this is a genuine effort to contribute to the open-source community by sharing our work on GitHub.
Thank you for considering our contribution.


SL Review: User is able to edit a form after submission

User Story
As a senior leader, I want to edit my information to the SL Review form after I have submitted it so that I can go back to the submission and make changes to it alongside the conversations I am having with my supervisor.
Acceptance Criteria

[x] I can can come into the SL Review after submission and edit the form for resubmission to my manager
[x] I can see my submission in the application tab
[x] I can see the applications tab in my navigation
[x] I can click edit in the applications tab to make changes
[x] I can edit any fields in my application

Technical Details

A minimal new SL Review Camunda workflow will need to be added with a user task that is assigned to the manager
On submission, the application status is set to "Resubmit". Currently, you get the ability to edit a submission through the "Application" tab if the application status is either "Resubmit" or "Awaiting Acknowledgement" (reference: isClientEdit method of List.js). We can for now set the submission status to "Resubmit", and in future tickets refine this to allow more statuses.

Background

There's already a page in the application (https://digital-journeys-dev.apps.silver.devops.gov.bc.ca/application) where you can see all your submissions. We removed this from navigation as it was not necessary for the Telework form.

@schuyt This will have to built into the workflow of the given form, so we'll have to dig into exactly what cases we need to account for here, for each form figure out when you should be able to edit the form, and who should have the ability.

I think we need to further discuss exactly how this will work at the next convenient scrum or review session.

I reviewed this ticket and believe it relates to the Mat/Pat form (see use case above). Not a priority while we work on wrapping Telework in  next few sprints

@bhumin-fw please put in an estimate

Separate ticket is required to handle sign-off and when the workflow should be editable (see Simen)

Bhumin to move to test, after reviewing a/c especially the application tab. Bhumin to review and update ticket.

This is a material global change that will involve looking at implications for:

the Telework PIA
the Telework content (in  he tool and Careers & MyHR
testing for Telework tool
change management - messaging to the Policy team as well as to users who wrote earlier to say the form must be completed in one session, and there is "no ability to save" go back and edit later

I have added a new workflow for the SL review.
It allows a user to edit the form after submission. Use can see the submitted form with the edit button under the application page.
Note: I did not enable the application link in the navigation bar(535 will allow it to once we start work on that).
Please test this ticket by redirecting to the application page manually. type /application in the URL to redirect.
@HasanSifat @Stella-Archer @MeghanStothers Please review it and assign one who can test and move it to done.

SL Review 2.0 version is the new form given the updated process map.
Link to new form in DEV- https://digital-journeys-dev.apps.silver.devops.gov.bc.ca/form/62f6a0e509da98bcd4d3d73c

@HasanSifat
Added new workflow for SL review 2.0 and that link with form in a TEST environment.

waiting for search function 572

Tested successfully in DEV. Ready to be transferred to TEST.
@EduardoRamirezBC @JodiLittle please review

Tested successfully for the SL review form. Working successfully in DEV. Ready to be transferred to TEST/PROD

Approved

tested successfully in TEST


add globalMacros like globalConstants and move it to somewhere else in config

add globalMacros like globalConstants and move it to somewhere else in config

mvoe along with the error namespace

@flaiker in next version its possible to add BEGIN_DATA and END_DATA in the config to have it recognized as macros, its a workaround instead of having to add all the SAP standard code to git


Add alternative commands yarn for analyzing the bundle size

What is new on this PR?
Add alternative commands yarn for analyzing the bundle size.

no need with run when use yarn

Changed here https://github.com/facebook/create-react-app/pull/4020/commits/9a1c8a37bda656eacf571794375a110438835946


Setting it up with Staticfiles in AWS

I am using django-summernote as a wysiwyg editor. The editor works fine in my development stage. Where my Django setting is using the below code
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

However the moment I switch to production where my static files are saved on AWS. I do not see the summernote wysiwyg editor. Infact the the entire text-field disappears. Also My static files are working perfectly with everything else. My style.css  file on my aws is the exactly the same as my dev stage below are are my AWS settings
AWS_DEFAULT_ACL = None
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]
DEFAULT_FILE_STORAGE = 'aws_storage_classes.MediaStorage'
AWS_STORAGE_BUCKET_NAME = 'cool-media-8axodgh6d'
STATICFILES_STORAGE = 'aws_storage_classes.StaticStorage'
AWS_S3_OBJECT_PARAMETERS = {
    'CacheControl': 'max-age=86400',
}

AWS_S3_DOMAIN = "%s.s3.amazonaws.com" % AWS_STORAGE_BUCKET_NAME

STATIC_URL = 'https://%s/static/' % AWS_S3_DOMAIN
MEDIA_URL = 'https://%s/media/' % AWS_S3_DOMAIN

ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'

How can I fix this. Please let me know if you need more info. I would be more than happy to provide

I did a simple python manage.py collectstatic It seems summernote has a static file that needs to be moved to the AWS static folder. This helped me


token_issued signal

Hello! I noticed that there's been a recent (2 months ago) addition of a few signals to this project, including a token_issued signal. It also looks like there's been some experimentation with other signaling solutions, including providing an option to fire the user_logged_in signal upon successful JWT auth.
I'm interested in having some kind of post-login hook with my token-based auth, so wanted to ask: will either of these features make it into a minor release anytime soon?

Hi @chiubaka ,
I created a new release including the signals:
pip install django-graphql-jwt==0.2.2
https://django-graphql-jwt.domake.io/en/latest/signals.html
I close the issue, if you have any questions please let me know.


Removed duplicate Privacy Policy

The privacy policy is now being served by a page in CMS. This removes the duplicate hard-coded page.
I had @sarahsimpson09 confirm the correct page we want to serve.
Removals

Removed duplicate Privacy Policy

Review

@anselmbradford
@sebworks

:+1:

:+1: