Margin setting not respected

Describe the bug
The margin setting no longer has any effect on margin decorations. Decorations appear to be always enabled for fixed format programs.
To Reproduce
Steps to reproduce the behavior:

Open fixed format program
Toggle Coboleditor.margin
Margin decorations are not changed

Expected behavior
The margin decorations are disabled if the margin setting is disabled.
Screenshots

Desktop (please complete the following information):

Extension Version 7.6.5
Also tested on Windows 10

Version: 1.56.2
Commit: 054a9295330880ed74ceaedda236253b4f39a335
Date: 2021-05-12T16:45:26.313Z
Electron: 12.0.4
Chrome: 89.0.4389.114
Node.js: 14.16.0
V8: <IP_ADDRESS>-electron.0
OS: Linux x64 5.12.2-1-MANJARO

What user & workspace settings are being used?:
Default beyond mentioned settings

I can confirm this issue, but note that

[ALT] + [SHIFT] + [M]: Toggle margins (overrides user/workspace settings)

does work the same as before (next to the COBOL identifier an entry "Sourceformat: fixed" is toggled) - but both in 7.1.1 and in 7.6.5 it seem to not have any effect.
I do see that the coboleditor.margin setting has no description - possibly that's only a stub now (will be removed)?
The code is still in an margindecorations.ts seems also to be called but the decoration seems to not be applied.
Not sure if the editor.rulers setting conflict with this setting - does it?

Hm, rechecked with 7.6.6, the setting has still neither an effect (when inspecting a fixed-form reference-format source with the language id COBOL); as [ALT] + [SHIFT] + [M] doesn't do anything anymore in this scenario either, I guess the command cobolplugin.toggle_margin seems to don't do anything.
As the README has a note about "toggle margins" I'd expect to just do that (may only be reasonable for fixed-form at all), not change the internal reference-format (which it may has partially done before).

I believe this issue should be reopened - Neither the setting or the command appear to have any effect in 7.6.7.

Disabled all other extensions. Reset extension settings to defaults.
Please let me know which other details I can provide.

@Oxdeception - You will see no difference because the automatic source format has already found it is "fixed" format
If you look closely, the sequence numbers area and columns 73-80 are all the same, so it is fixed.
If you "break" the fixed format rules by extending one of your lines you will see that the area changes column and this is when the "override" use of the margin property can be used.
You can see the difference, already... compare line 4-5 on your original screenshot with your latest animation.

I think this is most an issue what the setting is about. Can you please add a description to it and possibly also extend the explanation in the README?
My personal misunderstanding was that this is about showing the "rulers".

@GitMensch - for editor.rules you will have to consult Microsoft documentation, as it provides the functionality

The expected behavior is that the margin decorations are not drawn when the setting is disabled, even if the source format is fixed.  Going back through previous versions, this was how the setting appeared to work until 7.3.29.
The setting behaving as expected in 7.3.28:

"Breaking" the fixed format rules also only seems to apply if I have three lines that break the format in the first 10 lines. One line and two blank lines also works for that. I would however prefer not to need to break the format rules. Should this setting be split instead into a general enable, and a force enable for free format?

Having thought it more.
The coboleditor.margin was created independently from the source format scanning and now that is mostly driven by the source format itself, it makes no sense to have the coboleditor.margin option, as they only allow an override option, not an on/off toggle as you desire.   So I will remove it and stick source format options instead.
You can force the fixed source format by using compiler directives in your source file, for example with Micro Focus dialects use:
$set sourceformat"free"

While a compiler directive is an option, I would prefer not to need to add and remove it just to not have margin decorations. The programs I work on are and should always be fixed format, and unfortunately the margins cause quite a bit of input lag on my remote system.
Please reconsider removing this option.

You will still be able to use the source format strategy option (setting it
to fixed) and I look at doing the scanning without depending on a completed
scan
On Wed, 9 Jun 2021, 14:01 Oxdeception, @.***> wrote:

While a compiler directive is an option, I would prefer not to need to add
and remove it just to not have margin decorations. The programs I work on
are and should always be fixed format, and unfortunately the margins cause
quite a bit of input lag on my remote system.
Please reconsider removing this option.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/spgennard/vscode_cobol/issues/285#issuecomment-857673913,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABNWWGEIV3TRVIKL5ITRWU3TR5Q2LANCNFSM46IFEF7A
.

I will make the transition automatic between the settings and it will be
consistent.
On Wed, 9 Jun 2021, 14:20 Stephen Gennard, @.***> wrote:

You will still be able to use the source format strategy option (setting
it to fixed) and I look at doing the scanning without depending on a
completed scan
On Wed, 9 Jun 2021, 14:01 Oxdeception, @.***> wrote:

While a compiler directive is an option, I would prefer not to need to
add and remove it just to not have margin decorations. The programs I work
on are and should always be fixed format, and unfortunately the margins
cause quite a bit of input lag on my remote system.
Please reconsider removing this option.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/spgennard/vscode_cobol/issues/285#issuecomment-857673913,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABNWWGEIV3TRVIKL5ITRWU3TR5Q2LANCNFSM46IFEF7A
.

I'm not sure the scanning is the source of the input lag, unless you're talking about the line scanning for where to put the decorations.
Using 7.3.28 with source format set to "always fixed" and margins on also has this input lag, where turning the margin setting off removes it.
I may possibly be misunderstanding what you're saying, however.

I am talking about the lag between scanning (no parsing happens) and the
determination of the source format so that margins can be placed it removed
On Wed, 9 Jun 2021, 14:37 Oxdeception, @.***> wrote:

I'm not sure the scanning is the source of the input lag, unless you're
talking about the line scanning for where to put the decorations.
Using 7.3.28 with source format set to "always fixed" and margins on also
has this input lag, where turning the margin setting off removes it.
I may possibly be misunderstanding what you're saying, however.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/spgennard/vscode_cobol/issues/285#issuecomment-857701129,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABNWWGH2SDPOZFIGNGJW6ETTR5VAPANCNFSM46IFEF7A
.


Can you add support for moving user data to another drive?

Good for system with small size SSD system drive. Thanks

Can you paste the ETV version from below the left menu?

I would recommend something like mklink used as described here https://superuser.com/a/1600238
To find the etv config folder, open the logs folder using the tray icon and go up one folder.


A&R Request- Add Frontcountry camping to Tribune Bay Park

The campground that was once beside Tribune Bay Park has now been officially incorporated into the Park and designated as parkland. We would like to add it's attendance to the A&R system
Park: Tribune Bay Park
Orc: 0292
Region: West Coast
Section: Mid Island Haida Gwaii
Bundle: North Island
Management area: Von Donop
Sub Area: Tribune Bay
Sub area #: 0445
Change: Add frontcountry camping activity

@LindsayMacfarlane another backlog refinement candidate.


Visualizer appears to be cut off

I'm not entirely sure where the issue would lie.

please try reinstalling the plugin by deleting the powercord-pspectrum directory.
I made some changes to the binarys recent, maybe that could cause some errors.

I can reproduce the bug, a fix is in work

Seems to be working wonderfully now.
Thanks!


@derekvawdrey

          @derekvawdrey

You can also try the ImageNetwork package in case of CORS errors; this will solve the issue. Note that cachedNetwork doesn’t work on the web, but it doesn’t cause any problems either.

You can also try using Image.network with cachedWidth or cachedHeight; sometimes this works. If you don’t have any issues while downloading images,

you could also try using floor or hive to locally store your images and then display them to the user (first load from the API to hive, then display from hive).

Based on your problem, I think Image.network with cachedWidth will solve your issue:
cachedWidth: (width * MediaQuery.of(context).devicePixelRatio).round()
Originally posted by @AkshaySavanoorCC in https://github.com/flutter/flutter/issues/151933#issuecomment-2251984139

Tried all the above suggestions but the issue still persists!
The application crashes when attempting to render images on iOS web browsers. We tried various methods including CachedNetworkImage, Image.network, Image.asset, NetworkImage, and loading images via HTTP and HTMLImage. Below are our observations:
Image.asset: Fails on iOS web. Works on Android web, but the image doesn't load unless cacheWidth is added, then it loads.
Image.network: Fails on iOS web. Works on Android web, but the image doesn't load unless cacheWidth is added, then it loads.
CachedNetworkImage: Fails on iOS web. Works on Android web.
NetworkImage: Fails on iOS web. Works on Android web with heavy lag.
HTMLImage: Fails on iOS web. Works on Android web.
Loading from Hive: Fails on iOS web. Works on Android web.
Please HELP!!

Hey @drnko are you facing this issue while loading the large images or it fails irrespective of the image size.

check: https://github.com/flutter/flutter/issues/151933#issuecomment-2251970488

check: #151933 (comment)

Thanks for your concern. We do not want to use the 3rd party dependency storage for uploading/retrieving. The issue still persists even after resizing the images.

@drnko, Hi, I have checked the app, and it looks great. Great work! I believe the infinite carousel in the header might be causing the issue. Please try using a normal list view instead of the infinite carousel and test it in an iOS browser for verification


Allow selenium-webdriver 4.0.0

This pull request resolves the Rails issue https://github.com/rails/rails/issues/43455
Since selenium-webdriver 4.0.0 has been released, webdriver 4.6 is not allowed
likely due to version limitation in webdrivers.gemspec.

bundle install failure at Rails issue 43455

$ bundle install
Warning: the running version of Bundler (2.2.22) is older than the version that created the lockfile (2.2.29). We suggest you to upgrade to the version that created the lockfile by running `gem install bundler:2.2.29`.
Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies.........
Bundler could not find compatible versions for gem "selenium-webdriver":
  In Gemfile:
    selenium-webdriver (>= 4.0.0.alpha7)

    webdrivers was resolved to 4.6.0, which depends on
      selenium-webdriver (>= 3.0, < 4.0)

Could not find gem 'selenium-webdriver (>= 3.0, < 4.0)', which is required by gem 'webdrivers', in source at
`/home/yahonda/src/github.com/SeleniumHQ/selenium`.

Bundler could not find compatible versions for gem "webdrivers":
  In snapshot (Gemfile.lock):
    webdrivers (= 4.6.0)

  In Gemfile:
    webdrivers

Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.
$

Refer
https://rubygems.org/gems/selenium-webdriver/versions/4.0.0

Yes, thanks for the contribution, few other problems that needed fixing. I'll get a release out shortly.


Script hangs until Ctrl+C is clicked

Description of the problem
My Script hangs on when Listening until I click ctrl+c which resumes it. There is not trace when it happens
Code to reproduce

import configparser
from fbchat import log, Client, Message, Plan
from icalendar import Calendar, Event
from datetime import datetime
import time
from pytz import UTC # timezone
from itertools import islice
import requests
import re
import json
import os

#https://fbchat.readthedocs.io/en/stable/examples.html

#mainFunction that calls the rest

def invitedToThread(thread_id):
    if hasMessagedThread(thread_id):
        client.send(Message(text='Hi Team, I am here to automatically create your Facebook Event Plan for all of your games! To start please type "Register Bot TEAMNAME" without the quotes replacing TEAMNAME with your team name as shown on dodgeballwinnipeg.com'), thread_id=thread_id, thread_type=thread_type)
        logThread(thread_id)

def logThread(thread_id):
    f = open(dirpath +"/threads.txt", "a")
    f.write(thread_id)
    f.close()
def hasMessagedThread(thread_id):
    with open(dirpath +'/threads.txt') as f:
        if thread_id in f.read():
            return True
        else:
            return False

#grab calendar ICS from URL defined in config file
def grabCalendar():
    headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
    req = requests.get(config['CALENDAR']['URL'],headers=headers )
    data = req.text
    print("Calendar Retrieved")
    return(data)

#Loop through calendar events
def calendarEventCreate(g,client):
    gcal = Calendar.from_ical(g)
    numberOfTeams = 0;
    teamsProcessed = -1;
    teams = list(config['TEAMS'].keys());
    length = len(teams)

    n = length
    m = 3
    teamObj = [[0] * m for i in range(n)]
    for i in range(length):
        teamObj[i][0] = teams[i]
        teamObj[i][1]= config['TEAMS'][teams[i]]
        teamObj[i][2] = False
        numberOfTeams = i
    #loop through all ics events
    for event in gcal.walk('vevent'):
        start = event.get('dtstart')
        summary = event.get('summary')
        location = event.get('location')
        #event is before today
        if(start.dt < datetime.now()):
            print("Before")
        else:
        #future event
            for team in teamObj:
                #match team name in calendar and the fact that the team hasnt been processed already
                if(re.search(team[0], summary, re.IGNORECASE)and team[2] == False):
                    createFBPlan(team[1],start.dt,summary,location,client)
                    team[2] = True
                    teamsProcessed += 1
                    #once all teams have been processed then break function
                    if teamsProcessed == numberOfTeams:
                        return

#creatae FB Plan in thread
def createFBPlan(threadid, dt, summary, eventlocation,client):
    #try:
    print(summary)
    plantime = (time.mktime(dt.timetuple()))
    theplan = Plan( time=plantime, title=summary, location=eventlocation)
    client.createPlan(theplan,thread_id=threadid)
    print("Created FBPlan for " + summary)
    client.changePlanParticipation(theplan,take_part = False)
    #except:
        #print("Error creating FBPlan")

# Subclass fbchat.Client and override required methods
class EchoBot(Client):
    def onMessage(self, author_id, message_object, thread_id, thread_type, **kwargs):
        self.markAsDelivered(thread_id, message_object.uid)
        self.markAsRead(thread_id)
        # If you're not the author, echo
        if author_id != self.uid:
            if "Register Bot" in message_object.text:
                print("Register Team")
                team_name = message_object.text.split("Register Bot",1)[1]
                config["TEAMS"][team_name.strip()] = thread_id
                with open(dirpath+'/configdraft.ini', 'w') as configfile:
                    config.write(configfile)
                self.send(Message(text='Your team has now been registered, you should see a Facebook Plan created the when one doesnt exist.'), thread_id=thread_id, thread_type=thread_type)
                data = grabCalendar()
                time.sleep(5)
                calendarEventCreate(data,self)
            else:
                print("Invited to Thread")
                if hasMessagedThread(thread_id) == False:
                    self.send(Message(text='Hi Team, I am here to automatically create your Facebook Event Plan for all of your games! To start please type "Register Bot TEAMNAME" without the quotes replacing TEAMNAME with your team name'), thread_id=thread_id, thread_type=thread_type)
                    logThread(thread_id)
    def onPlanCreated(
        self,
        mid=None,
        plan=None,
        author_id=None,
        thread_id=None,
        thread_type=None,
        ts=None,
        metadata=None,
        msg=None,
    ):
        """Called when the client is listening, and somebody creates a plan.

        Args:
            mid: The action ID
            plan (Plan): Created plan
            author_id: The ID of the person who created the plan
            thread_id: Thread ID that the action was sent to. See :ref:`intro_threads`
            thread_type (ThreadType): Type of thread that the action was sent to. See :ref:`intro_threads`
            ts: A timestamp of the action
            metadata: Extra metadata about the action
            msg: A full set of the data received
        """
        log.info(
            "{} created plan {} in {} ({})".format(
                author_id, plan, thread_id, thread_type.name
            )
        )
        self.changePlanParticipation(plan,take_part = False)
    def onPlanEnded(
        self,
        mid=None,
        plan=None,
        thread_id=None,
        thread_type=None,
        ts=None,
        metadata=None,
        msg=None,
    ):
        """Called when the client is listening, and a plan ends.

        Args:
            mid: The action ID
            plan (Plan): Ended plan
            thread_id: Thread ID that the action was sent to. See :ref:`intro_threads`
            thread_type (ThreadType): Type of thread that the action was sent to. See :ref:`intro_threads`
            ts: A timestamp of the action
            metadata: Extra metadata about the action
            msg: A full set of the data received
        """
        log.info(
            "Plan {} has ended in {} ({})".format(plan, thread_id, thread_type.name)
        )
        print("Start Grab Calendar")
        data = grabCalendar()
        time.sleep(5)
        calendarEventCreate(data,self)

dirpath = os.path.dirname(os.path.abspath(__file__))
#grabs config and calls main function
config = configparser.ConfigParser()
config.read(dirpath+'/configdraft.ini')

cookies = {}
try:
    # Load the session cookies
    with open(dirpath+'/sessiondraft.json', 'r') as f:
        cookies = json.load(f)
except:
    # If it fails, never mind, we'll just login again
    pass

client = EchoBot(config['FACEBOOK']['facebookemail'], config['FACEBOOK']['facebookpassword'],session_cookies=cookies)
with open(dirpath+'/sessiondraft.json', 'w') as f:
    json.dump(client.getSession(), f)

client.listen()

Environment information

Python version 3.6.7
fbchat version 1.9.6
If relevant, output from $ python -m pip list

If you have done any research, include that.
Make sure to redact all personal information.

So I switched from running this on a Ubuntu Windows 10 subsystem to a Raspberry pi running Raspbian and I rarely run into this issue. On top of that, I have the pi restart every night automatically so I don't notice the issue if it does run into it.


Assert the right type

Does this PR deserve a meme?

Probably not... but I'm gonna do one anyway


[ELY-1203] unignore PLAIN SASL mechanism test

Unignore (Remove assumption from) test which checks Exception type when wrong credentials are used in SASL mechanisms.
Related JIRAs (already fixed):
https://issues.jboss.org/browse/JBEAP-11643
https://issues.jboss.org/browse/REM3-290
https://issues.jboss.org/browse/ELY-1203

Full integration - Windows Build 3851 outcome was FAILURE using a merge of a96a56f28cf486e19564f06016df22eb576ee30f
Summary: Execution timeout (new); tests passed: 3875, ignored: 112 Build time: 02:01:21


Merge ign-rendering3 ➡  ign-rendering6

➡  Forward port
Port ign-rendering3  ➡  ign-rendering6
Branch comparison: https://github.com/gazebosim/gz-rendering/compare/ign-rendering6...ign-rendering3
Note to maintainers: Remember to Merge with commit (not squash-merge or rebase)

https://build.osrfoundation.org/job/gz_rendering-pr-win/12/ is yellow even though there are zero test failures. @j-rivero can you take a look when you get a chance?
I'll go ahead and merge since it's just a changelog diff.


/wiki eevee biome not showing correct information

when I type /wiki eevee biome it says that it doesnt spawn in any biomes even though it spawns in birch forest, so uhhh ye.

This is a report that should be made to https://www.pixelmonmod.com/tracker.php?p=8, please forward it directly to Pixelmon as /wiki is an official sidemod.


Remove all auth thunks

Replaced all auth related thunks. Started working on this in an effort to create a patternly compliant way to allow the user to refresh the token via a pop up modal as outlined here: https://www.patternfly.org/v4/design-guidelines/usage-and-behavior/modal#report-errors
Follow up PR to come with implementation of the error modal with refresh token button. This should provide for a better user experience when a users token expires & cleans up an edge case when the user is not auto rerouted when the session has expired.

Follow up PR to come with implementation of the error modal with refresh token button. This should provide for a better user experience when a users token expires & cleans up an edge case when the user is not auto rerouted when the session has expired.

This will be good to have, are there any thunks left after this one? We should shoot for thunk-zero (TM) and pull the dep.

Follow up PR to come with implementation of the error modal with refresh token button. This should provide for a better user experience when a users token expires & cleans up an edge case when the user is not auto rerouted when the session has expired.

This will be good to have, are there any thunks left after this one? We should shoot for thunk-zero (TM) and pull the dep. I'd like to test this one in an environment before merging.

Haha there are a few thunks left. They are quite embedded in our app. I am working on doing the plan operations -> thunk conversion right now which will be my next PR. Going to break the conversions up by resource type to make this a little more manageable & testable.


Add missing methods for responsefield "statustext"

Thanks for the patch.
Before we accept the patch can you correct the case of methods and variable names to use consistent camel case.
e.g. getStatusText not getStatustext
and
statusText not statustext.
Also the indentation looks off.
Please use tabs for indentation where a tab represents 4 spaces.

Since the whole file was using spaces instead of tabs, i updated the whole file. Hope that's fine...


SETUP.md links to help.exercism.io

That no longer exists. What should it link to instead? Are students seeing this, or is it just for this repository?

It is.

SETUP.md - this should contain any track specific, problem agnostic information that will be included in the README.md of every exercise when fetched. Include information on how to run tests, how to get help, etc.

Egad, we've been serving wrong info to students all this time. A wonder that nobody has complained.

Eegad. I thought I checked all of these.


Wire up all GMClock logics

Bugs / Edge Cases
if a clock is completed, and it still has remaining PC, then those PC should be removed.
Remaining Features


Add e2e utility function for logging into Metamask

📄 Context
Add an e2e utility function for logging into MetaMask. We'll need this function in all other e2e tests related to the Send Transaction UI.
🎯 Definition of Done

[ ] The new e2e utility function allows you to log into MetaMask with a test account.

I did some work for this one in https://github.com/cartesi/rollups-explorer/tree/feature/205-add-e2e-utility-function-for-logging-into-metamask, exploring the synpress library. For the time being I'll leave this as is and will get back to it when I'm idle.


[prepare for conference] add arctic motivation and iceberg format chapter

add arctic motivation under introducing arctic
add iceberg format under table format

Closed by #152


usage question

sorry, I haven't had enough time to discover and see how the whole perimeterX works outside of it's fingerprinting... but it looks like even if you get the payload and _px2 header, just a simple curl request is not going to work, right? what's your typical use of that deobfuscated script? You run it or replace the original request? Thanks in advance.

sorry, I haven't had enough time to discover and see how the whole perimeterX works outside of it's fingerprinting... but it looks like even if you get the payload and _px2 header, just a simple curl request is not going to work, right? what's your typical use of that deobfuscated script? You run it or replace the original request? Thanks in advance.

@XBeg9
The process of dealing antibot system:

Know what browser attributes they collect, then fake the corresponding attributes, either by using puppeteer / playwright, or by compiling your own Chromium. or, alternatively, putting together the payload yourself to make it look like a normal user. Both of these would definitely need to understand how their obfuscated code works, what fingerprints they collect, and how they put the data together.
curl definitely not enough, because TLS / http2 fingerprints are not the same as browser. You can search for what JA3 / JA4 is or check here. Usually, you can use curl-cffi, or compile the Chromium network stack yourself and make adapation with your project to make the tls/h2 fingerprint consistantly with the normal browser.

sorry, I haven't had enough time to discover and see how the whole perimeterX works outside of it's fingerprinting... but it looks like even if you get the payload and _px2 header, just a simple curl request is not going to work, right? what's your typical use of that deobfuscated script? You run it or replace the original request? Thanks in advance.

@XBeg9
The process of dealing antibot system:

Know what browser attributes they collect, then fake the corresponding attributes, either by using puppeteer / playwright, or by compiling your own Chromium. or, alternatively, putting together the payload yourself to make it look like a normal user. Both of these would definitely need to understand how their obfuscated code works, what fingerprints they collect, and how they put the data together.
curl definitely not enough, because TLS / http2 fingerprints are not the same as browser. You can search for what JA3 / JA4 is or check here. Usually, you can use curl-cffi, or compile the Chromium network stack yourself and make adapation with your project to make the tls/h2 fingerprint consistantly with the normal browser.

so for deobfuscated scripts here, you just inject them into the page (replace original init.js) or run them before hand? Hwo do you get a payload to produce _px2 and then use inside curl-cffi?... I am just trying to abandon the chrome... curious about this things.

sorry, I haven't had enough time to discover and see how the whole perimeterX works outside of it's fingerprinting... but it looks like even if you get the payload and _px2 header, just a simple curl request is not going to work, right? what's your typical use of that deobfuscated script? You run it or replace the original request? Thanks in advance.

@XBeg9
The process of dealing antibot system:

Know what browser attributes they collect, then fake the corresponding attributes, either by using puppeteer / playwright, or by compiling your own Chromium. or, alternatively, putting together the payload yourself to make it look like a normal user. Both of these would definitely need to understand how their obfuscated code works, what fingerprints they collect, and how they put the data together.
curl definitely not enough, because TLS / http2 fingerprints are not the same as browser. You can search for what JA3 / JA4 is or check here. Usually, you can use curl-cffi, or compile the Chromium network stack yourself and make adapation with your project to make the tls/h2 fingerprint consistantly with the normal browser.

so for deobfuscated scripts here, you just inject them into the page (replace original init.js) or run them before hand? Hwo do you get a payload to produce _px2 and then use inside curl-cffi?... I am just trying to abandon the chrome... curious about this things.

In my own projects, I generate payloads based on their code + algorithms, and then use uTLS to send the request without relying on Chrome because I'm familiar with how they work through deobfuscation. Here, I'll guide step by step how to write puppeteer / playwright with evasions to bypass PX checks.
It's also unwise to use the deobfuscated code directly; our purpose is simply to understand how they work

sorry, I haven't had enough time to discover and see how the whole perimeterX works outside of it's fingerprinting... but it looks like even if you get the payload and _px2 header, just a simple curl request is not going to work, right? what's your typical use of that deobfuscated script? You run it or replace the original request? Thanks in advance.

@XBeg9
The process of dealing antibot system:

Know what browser attributes they collect, then fake the corresponding attributes, either by using puppeteer / playwright, or by compiling your own Chromium. or, alternatively, putting together the payload yourself to make it look like a normal user. Both of these would definitely need to understand how their obfuscated code works, what fingerprints they collect, and how they put the data together.
curl definitely not enough, because TLS / http2 fingerprints are not the same as browser. You can search for what JA3 / JA4 is or check here. Usually, you can use curl-cffi, or compile the Chromium network stack yourself and make adapation with your project to make the tls/h2 fingerprint consistantly with the normal browser.

so for deobfuscated scripts here, you just inject them into the page (replace original init.js) or run them before hand? Hwo do you get a payload to produce _px2 and then use inside curl-cffi?... I am just trying to abandon the chrome... curious about this things.

In my own projects, I generate payloads based on their code + algorithms, and then use uTLS to send the request without relying on Chrome because I'm familiar with how they work through deobfuscation. Here, I'll guide step by step how to write puppeteer / playwright with evasions to bypass PX checks.
It's also unwise to use the deobfuscated code directly; our purpose is simply to understand how they work

is your _px2 always the same? I am seeing this right now on different browsers / IPs... Any ideas why?

is your _px2 always the same? I am seeing this right now on different browsers / IPs... Any ideas why?

Of course they can't be the same because different fingerprints and browsers would have to be faked

is your _px2 always the same? I am seeing this right now on different browsers / IPs... Any ideas why?

Of course they can't be the same because different fingerprints and browsers would have to be faked

can you please guide me, on how you get your _px2?

is your _px2 always the same? I am seeing this right now on different browsers / IPs... Any ideas why?

Of course they can't be the same because different fingerprints and browsers would have to be faked

can you please guide me, on how you get your _px2?

I don't want to open source the solution I'm currently using because I'm afraid PX will notice, also I don't want to use it publicly. But I will gradually open source alternative solutions in this repo.

is your _px2 always the same? I am seeing this right now on different browsers / IPs... Any ideas why?

Of course they can't be the same because different fingerprints and browsers would have to be faked

can you please guide me, on how you get your _px2?

I don't want to open source the solution I'm currently using because I'm afraid PX will notice, also I don't want to use it publicly. But I will gradually open source alternative solutions in this repo.

I mean, I don't need exact steps... just curious... are you making payload (with fingerprints realized from deobfuscated code) trigger the query to /collector and then use the response as _px2 ? That's the whole idea?

I mean, I don't need exact steps... just curious... are you making payload (with fingerprints realized from deobfuscated code) trigger the query to /collector and then use the response as _px2 ? That's the whole idea?

yea exactly

I mean, I don't need exact steps... just curious... are you making payload (with fingerprints realized from deobfuscated code) trigger the query to /collector and then use the response as _px2 ? That's the whole idea?

yea exactly

ok, I am inside this payload mess right now, if you can bring some code examples, would save me a ton of time... can we telegram?

I mean, I don't need exact steps... just curious... are you making payload (with fingerprints realized from deobfuscated code) trigger the query to /collector and then use the response as _px2 ? That's the whole idea?

yea exactly

ok, I am inside this payload mess right now, if you can bring some code examples, would save me a ton of time... can we telegram?

I don't use TG. I'll progressively update how this payload is composed here. You could also take a look at the deobfuscated code

I mean, I don't need exact steps... just curious... are you making payload (with fingerprints realized from deobfuscated code) trigger the query to /collector and then use the response as _px2 ? That's the whole idea?

yea exactly

ok, I am inside this payload mess right now, if you can bring some code examples, would save me a ton of time... can we telegram?

I don't use TG. I'll progressively update how this payload is composed here. You could also take a look at the deobfuscated code

yea, looking into nf(t, f); right now :)

I mean, I don't need exact steps... just curious... are you making payload (with fingerprints realized from deobfuscated code) trigger the query to /collector and then use the response as _px2 ? That's the whole idea?

yea exactly

ok, I am inside this payload mess right now, if you can bring some code examples, would save me a ton of time... can we telegram?

I don't use TG. I'll progressively update how this payload is composed here. You could also take a look at the deobfuscated code

yea, looking into nf(t, f); right now :)

Tip, just looking at the code might slow down your understanding because you don't know the context variables, keep track of the call stacks.
But if you use devtools overriedes to replace init.js into deobfuscated code and then add breakpoints, it might help you

I mean, I don't need exact steps... just curious... are you making payload (with fingerprints realized from deobfuscated code) trigger the query to /collector and then use the response as _px2 ? That's the whole idea?

yea exactly

ok, I am inside this payload mess right now, if you can bring some code examples, would save me a ton of time... can we telegram?

I don't use TG. I'll progressively update how this payload is composed here. You could also take a look at the deobfuscated code

yea, looking into nf(t, f); right now :)

Tip, just looking at the code might slow down your understanding because you don't know the context variables, keep track of the call stacks. But if you use devtools overriedes to replace init.js into deobfuscated code and then add breakpoints, it might help you

exactly what I am doing right now... just don't know if it's worth the effort now :) I need very limited amount of pages visited, just got very curious about this whole thing

I mean, I don't need exact steps... just curious... are you making payload (with fingerprints realized from deobfuscated code) trigger the query to /collector and then use the response as _px2 ? That's the whole idea?

yea exactly

ok, I am inside this payload mess right now, if you can bring some code examples, would save me a ton of time... can we telegram?

I don't use TG. I'll progressively update how this payload is composed here. You could also take a look at the deobfuscated code

yea, looking into nf(t, f); right now :)

Tip, just looking at the code might slow down your understanding because you don't know the context variables, keep track of the call stacks. But if you use devtools overriedes to replace init.js into deobfuscated code and then add breakpoints, it might help you

exactly what I am doing right now... just don't know if it's worth the effort now :) I need very limited amount of pages visited, just got very curious about this whole thing

Not worth it, that's actually bunch of shit code. they're technically terrible. If there are only very few requests, go for paid solver

I mean, I don't need exact steps... just curious... are you making payload (with fingerprints realized from deobfuscated code) trigger the query to /collector and then use the response as _px2 ? That's the whole idea?

yea exactly

ok, I am inside this payload mess right now, if you can bring some code examples, would save me a ton of time... can we telegram?

I don't use TG. I'll progressively update how this payload is composed here. You could also take a look at the deobfuscated code

yea, looking into nf(t, f); right now :)

Tip, just looking at the code might slow down your understanding because you don't know the context variables, keep track of the call stacks. But if you use devtools overriedes to replace init.js into deobfuscated code and then add breakpoints, it might help you

exactly what I am doing right now... just don't know if it's worth the effort now :) I need very limited amount of pages visited, just got very curious about this whole thing

Not worth it, that's actually bunch of shit code. they're technically terrible. If there are only very few requests, go for paid solver

still, sportsmanship drives me to understand this right now... would be great if you can share anything that you can... so It does relax my brain now. Haha :)

I mean, I don't need exact steps... just curious... are you making payload (with fingerprints realized from deobfuscated code) trigger the query to /collector and then use the response as _px2 ? That's the whole idea?

yea exactly

ok, I am inside this payload mess right now, if you can bring some code examples, would save me a ton of time... can we telegram?

I don't use TG. I'll progressively update how this payload is composed here. You could also take a look at the deobfuscated code

yea, looking into nf(t, f); right now :)

Tip, just looking at the code might slow down your understanding because you don't know the context variables, keep track of the call stacks. But if you use devtools overriedes to replace init.js into deobfuscated code and then add breakpoints, it might help you

exactly what I am doing right now... just don't know if it's worth the effort now :) I need very limited amount of pages visited, just got very curious about this whole thing

Not worth it, that's actually bunch of shit code. they're technically terrible. If there are only very few requests, go for paid solver

still, sportsmanship drives me to understand this right now... would be great if you can share anything that you can... so It does relax my brain now. Haha :)

yea I'll continue make some updates this week

readable/init_9.0.8.js freezes the chrome instance... does it work on your side?

when I try to override, readable/init_9.0.8.js freezes the chrome instance... does it work on your side?

I will create a fix shortly, I think something got wrong during AST transform.

@MiddleSchoolStudent have you seen this? Math["slice"] ? fully invalid code.

@MiddleSchoolStudent have you seen this? Math["slice"] ? fully invalid code.

what you have committed is different then I am getting transformed using AST

@MiddleSchoolStudent have you seen this? Math["slice"] ? fully invalid code.

what you have committed is different then I am getting transformed using AST

I will take a look soon busy with other things.

@MiddleSchoolStudent have you seen this? Math["slice"] ? fully invalid code.

what you have committed is different then I am getting transformed using AST

I will take a look soon busy with other things.

here is my status update, reproduced the whole piece... but still, it doesn't allow me to do the request
here is my steps, I would appreciate if you can help me understand what's wrong here:
[Step 1]: get _pxhd cookie (I just make get query to main website, it sets cookie and I grab it using cookie header in response)
[Step 2]: send the first request to /collector, and after this initial first request I'm already getting _px2 cookie, response looks like this after decoding
{ "do" null, "ob": {"cts":"SOME_UUID","cs":"SOME_CS","vid":"SOME_VID","_px2":{"exp":"172800","value":"*****"}}

[Step 3] set _pxhd, _px2 cookie to request and make it, it fails with 403.
if I try second request to /collector, then I am getting something like this.
{"do":["sid|SOME_UUID","cls|SOME_CLS","sts|SOME_STC","drc|SOME_DRC"]}

Should I finish this "do" first before making the actual request? I thought _px2 is more then enough to start making request till they lock the session.
Thanks

Can you share any channel/email where we can communicate outside of GitHub? I have some proposals for you :)

Can you share any channel/email where we can communicate outside of GitHub? I have some proposals for you :)

<EMAIL_ADDRESS>

@MiddleSchoolStudent have you seen this? Math["slice"] ? fully invalid code.

what you have committed is different then I am getting transformed using AST

Okay I'm done, I'll start working on the issue you're having now.

@MiddleSchoolStudent have you seen this? Math["slice"] ? fully invalid code.

what you have committed is different then I am getting transformed using AST

updated here please try: https://github.com/MiddleSchoolStudent/PerimeterX-solver/commit/d9862b804ad752bf7c76b0557c377f34ed247ee8


Pulling time information from a filepath and template

We currently have functionality to produce a filepath given a template and time information
like valid/init/forecast/accum (Thanks, Julie!). We don't currently have any utilities to get time information out of a filepath and template. For example, if we have the template:
NATIONAL_BLEND_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/blendp_qpf_{valid?fmt=%Y%m%d%H}.grd
and the filepath:
20170718/blendp_qpf_2017071806.grd
we could use that to pull out time information like %Y%m%d%H

This was implemented a long time ago. Here is an example from pcp_combine_wrapper.py:
        se = sts.StringExtract(self.logger, template,
                               os.path.basename(f))
        se.parseTemplate()

If se is not set to None, you can use functions like getValidTime to pull time information from that object. See the StringExtact class in string_template_substitution.py

This should be closed.  We can re-open if necessary.


The CS detected a suspicious process disabled Windows Defender during install sf-x64.exe (v2 beta cli)

Summary
This morning I tried to install the v2 Beta version of the new Cli. I used the Windows sf-x64.exe link from this page: https://github.com/salesforcecli/cli/blob/main/.github/workflows/v2-beta.md -> https://developer.salesforce.com/media/salesforce-cli/sf/channels/beta/sf-x64.exe
The installation was succesfull but I got the following message from our security department: The installer tried to disable Windows Defender.
CrowdStrike: The CS detected a suspicious process disabled Windows Defender, a technique commonly used by malware to evade detection. The user ...... seems to download an executable named "sf-x64.exe" using Chrome browser and on Jul. 12, 2023 08:11:13, the user seems to launched this executable from this download path "C:\Users.......\Downloads\sf-x64.exe". We couldn't retrieve any information from TI concerning his hash "6745c9f9e02050ce0d5d2daad307638d5041ee201293b2cdc7555e226c7316fd". Hash search in the last 7 days, only found executed in this host.
Steps To Reproduce
Install https://developer.salesforce.com/media/salesforce-cli/sf/channels/beta/sf-x64.exe
Expected result
No CrowdStrike warning and no attempt to stop Windows Defender.
Actual result
CrowdStrike: The CS detected a suspicious process disabled Windows Defender, a technique commonly used by malware to evade detection. The user ...... seems to download an executable named "sf-x64.exe" using Chrome browser and on Jul. 12, 2023 08:11:13, the user seems to launched this executable from this download path "C:\Users.......\Downloads\sf-x64.exe". We couldn't retrieve any information from TI concerning his hash "6745c9f9e02050ce0d5d2daad307638d5041ee201293b2cdc7555e226c7316fd". Hash search in the last 7 days, only found executed in this host.
System Information

windows installer executable of the Cli

Windows 10 Enterprise 22H2
I couldn't run the cli version verbose command, The security officer asked me to remove this cli as soon as possible.

As said, I had to deinstall the cli, so can't provide the output of sf version --verbose --json

@stoevie there's something in oclif (which creates the windows installers) that does that:
https://github.com/oclif/oclif/blob/15c43daf208755f27ed5aee3ad884d4c3fe8f725/src/commands/pack/win.ts#L85
windows' filesystem already makes install/update pretty slow--I'm concerned that having Defender scan each file change is going to really suck.
I'm going to mark this as a feature for oclif because there's probably other oclif scenarios that would need it.
The feature would be to run the installer with an option to preserve Defender behavior

This also came up for us from the following binary's download link:
https://developer/[.]salesforce[.]com/media/salesforce-cli/sf/channels/stable/sf-x64.exe
MD5: 9960f69fc48f629446b2d1c396f6eb70

@stoevie there's something in oclif (which creates the windows installers) that does that: https://github.com/oclif/oclif/blob/15c43daf208755f27ed5aee3ad884d4c3fe8f725/src/commands/pack/win.ts#L85
windows' filesystem already makes install/update pretty slow--I'm concerned that having Defender scan each file change is going to really suck.
I'm going to mark this as a feature for oclif because there's probably other oclif scenarios that would need it.
The feature would be to run the installer with an option to preserve Defender behavior

@mshanemc where can I find this feature request? for me this issue is still relevant. IT departments should manage virus scanner exclusions, not installers.

@stoevie you can install the sf-64.exe unchecking the last option. This option make the install to try disable Windows Defender.
I had the same problem here and I solved with this procedure.

Thanks Dalla7, I will try.
Kr,
Gert

Good morning, I tried the suggestion of @dalla73 , that works and is ok for me. I will close the case.


ESD-3622 Update auth0-extension-express-tools package for samesite co…

✏ Changes
This updates auth0-extension-express-tools to version 2.0.0 to get the fixes for the new Chrome same-site cookies policy.
🔗 References

Request to update this package: ESD-3622

🎯 Testing

[x] a quick test to confirm it still works

🚀 Deployment
Steps: https://auth0team.atlassian.net/wiki/spaces/DXEX/pages/51151590/Extensions+Lessons+Learned
✅ This can be deployed any time
🎡 Rollout
In order to verify that the deployment was successful we will...
npm tag this with a major or minor, not a patch bump to the version.
🔥 Rollback
Go back to the prior version
🖥 Appliance
This should be compatible with the appliance.

@donflopez I bumped all the versions here also


[Bug]: useTopNavigation causes layout thrashing

Browser
No response
Package version
1
React version
17
Description
I was using a site that was slow, so I profiled it and found all sorts of force layout calls from top navigation. Source led me to this: https://github.com/cloudscape-design/components/blob/main/src/top-navigation/use-top-navigation.ts#L82
Please read: What forces layout/reflow. The comprehensive list.
I found some other issues with icons and whatnot, but I'll leave that exercise up to you. When your UI library is your perf bottleneck, that's a bad place to be in.
Source code
No response
Reproduction
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct
[X] I checked the current issues for duplicate problems

Hi,
I've unfortunately not been able to reproduce this yet. Can you provide more details about the issue you're seeing and how to reproduce it? Especially helpful would be a link to a page where you're encountering the performance issues, and the interactions that you do on the page that trigger the slowness.

@schontz and I have discussed this topic directly, closing this issue for now.


Linux module missing after hard reboot on Linode

flannel.1, flynnbr0, and veth* are missing
flynn-host list timeout
How can I re-boostrap node and join into existing cluster?
Any help appreciated thanks

t=2017-11-17T05:53:12+0000 lvl=eror msg="error running job" app=host pid=5127 host.id=node135 fn=AddJob job.id=node135-35a26452-88a0-4323-884f-ffb2610fe525 err="error getting squashfs layer from https://dl.flynn.io/tuf?target=/layers/6dc530a0d72a16d92ebf587ac63d7ea243bcb0c351b100d485069586e52c145a.squashfs: verify: data too short"

What was your solution?

I suspect the kernel got upgraded, in which case the ZFS kernel modules need to be recompiled by running:
$ dpkg-reconfigure spl-dkms
$ dpkg-reconfigure zfs-dkms


DND plugin move or copy if different tree

Hi,
First of all, nice work.
In my scenario I have 2 tree, the source one and the target one.
I would like to copy the node from the source to target but move the node from source to source tree.
So if I drag and drop a node outside the parent tree it should be a copy, if move inside of the same tree it should just move the node.
I don't want that the user must use the CTRL key, so to achieve this I tried to change the dnd options "always_copy" on rutime checking where the node is drop , but I couldn't make it works.
Any solution?
Thanks.

By design multi tree moves are actually always copy operations - the node is first copied to the new tree and then deleted in the original tree. You can prevent the delete operation by using check_callback.
Quick & dirty sample code:
var preventDelete = false;
$('#tree1').jstree({
  core : { check_callback : function (operation) { if (preventDelete && operation=="delete_node") { preventDelete = false; return false; } return true; } },
  ...
$('#tree2').jstree({
  core : { check_callback : function (operation) { if (preventDelete && operation=="delete_node") { preventDelete = false; return false; } return true; } },
  ...
$('#tree1, #tree2').on('copy_node.jstree', function (e, data) {
  if (data.is_multi) {
    preventDelete = true;
  }
});

Works like a charm.
Didn't know about "is_multi" attribute.
Thanks a lot.

Hi @vakata ,
I'm trying to use the same code, but getting following error:

Uncaught ReferenceError: preventDelete is not defined

What should I do?
Thanks


Cannot start() connection to signalR server

Hello, much like others, I cannot seem to start() a connection to the signalR server. I get back the dreaded Response Content-Type not supported: [application/json; charset=UTF-8]
I looked at the code in dartio_http_client.dart and do not understand some things, specifically with block lines 85 thru 97:
final contentTypeHeader = httpResp.headers["Content-Type"];
final isJsonContent =
    contentTypeHeader.indexOf("application/json") != -1;
if (isJsonContent) {
  content = await httpResp.transform(utf8.decoder).join();
} else {
  content = await httpResp.transform(utf8.decoder).join();
  // When using SSE and the uri has an 'id' query parameter the response is not evaluated, otherwise it is an error.
  if (isStringEmpty(uri.queryParameters['id'])) {
    throw ArgumentError(
        "Response Content-Type not supported: $contentTypeHeader");
  }
}

From what I can tell, the contentTypeHeader variable holds a 'growable list', not a simple string. Thus, when trying to find the 'indexOf("application/json")' if fails (returns -1) instead of returning 0 for the start of the 1st (0th) element in that list. In other words isJsonContent should be TRUE.

What's future interesting is that as it stands right now, with a FALSE value, the content is still decoded properly and seems fine.  However because there is no 'id' query param in the uri, the code throws the ArgumentError that several of us have hit.
So, what is the solution to this? Is this something that can be fixed?
Thank you,
-David

Uh oh... I just found an item in StackOverflow:  https://stackoverflow.com/questions/50980262/how-to-use-signalr-on-flutter
The comment by the Soernt, and the comment after his, seems to imply that this plug in will ONLY work with .Net Core.  I am using a .Net frameworks/OWIN site.  Does that really mean me (and others like me) cannot use this plug in?  In re-reading the README on this repo, it does in fact 'only' say .Net Core.

Yes this library is only for .Net Core since Microsoft changed the protocol with .Net Core.
Kind regards,
Sörnt

Thank you for the verification Sörnt.  I am now in the process of re-writing (porting) my .net framework web api site to .net core 2.2... hopefully it will not be too much effort and your plug in will then work.


[WIP] add wrap_anthropic

This is incomplete at the moment but posting this for feedback as a work in progress. Currently implemented is a rudimentary support through async/sync and streaming/non-streaming, backed up by tests.
TODOs before leaving draft stage
Currently, the added tests are passing. Things that are left to do on this before undrafting:

[ ] Decide whether to put TracingExtra into a shared utility or create a separate one for the anthropic wrapper.
[ ] Better metadata/outputs via reducer logic:

[ ] The output structures aren't correct right now. Currently streaming has an outputs: {text: 'foo'} while not streaming has outputs: {output: {content: [{type: 'text': text: 'foo'}]}} which is highly inconsistent. This is just because I've been focused on getting the basic concept working without thinking too much about what the output should look like exactly. This will involve writing some reducers, which is probably the bulk of work left in getting the sync/async API working.
[ ] Tool usage output isn't supported at all yet.
[ ] In general, it would be good to get some advice on what the outputs should look like (on principle, if not in detail) – ie. should they be exactly the same as the outputs for OpenAI even where the APIs are different?

[ ] Tests:

[ ] The tests are fairly repetitive, especially in the assertions on metadata and outputs. It would be nice to parameterize them a little bit. I need to do a round on the tests and make sure they're more consistent.
[ ] Missing test_chat_async_api (async, no streaming), although I believe that to be working. So 3/4 tests are there.

Thoughts/caveats

There's also a nice stream API which is actually a lot nicer for streaming than the overloaded create, but I would like to leave it out of scope if possible, just to get something basic working for Anthropic.
It took a bit of work to get the tests actually passing because I couldn't figure out why I wasn't seeing any requests in the MockSession. After some debugging, it seems that tracing was just off and I think this means that tracing is not actually on for the OpenAI tests either, and the assertions could be giving a false sense of security:for call in mock_session.return_value.request.call_args_list[1:]:  # passes because list is empty
    assert call[0][0].upper() == "POST"

I removed the sleep that was in the equivalent tests and switched to a client with auto_batch_tracing=False. I think this should be fine.
There's no seed for Anthropic, as far as I know, so there is a risk these tests will be flakier. (They may also be flakier in case outputs are nondeterministic, since I've added a test on outputs as well, but in my testing it is very consistently returning the same string 'foo' so far.)

Thanks for the PR and for getting the integration started!
I think the challenging bit that has prevented me from shipping an anthropic wrapper is their combo context manager streaming setup that makes patching the client less pretty -
with client.messages.stream(
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello"}],
    model="claude-3-opus-20240229",
) as stream:
  for text in stream.text_stream:
      print(text, end="", flush=True)
``

As much as possible we'd like to not alter the behavior of this kind of statement

Gotcha – I have tried to avoid this one for now because it did look more involved and I'm not sure I'll be able to commit the time. Is it an option in your view to merge this without support for the stream API?
Separately, I'd love a bit of guidance from you on how to structure the outputs, since I'm not sure what the target schema is for it to look and work right in LangSmith. I've shared a Loom here and would love it if you could take a look - then I can change the reducer to get the outputs consistent.

We're using this internally and it's working fine, except that we have to use "Raw output" rather than "Output" to see the outputs. I'd love to help get this merged upstream but I have to take it off my plate for now. If someone can help with the stuff I posted in the last comment at some point, then feel free to re-engage me and I can see if I can find some capacity to drive it home.


Migrate CosmosDB v3 branch to azure-sdk-for-python

[x] Bulk code movement (preserving history)
[x] Configuration for emulator tests

closed by #5365


Use mjpg stream or canvas instead of the 'local' camera

Hi,
Instead of using the local camera is it possible to use a (mjpg) stream coming from a remote camera? or, perhaps use an html5 canvas (which happens to have a camera image rendered to it) ?
Thanks
wayne

Yes. Many of the demos has that as an in-code setting already. See for example markerroot.html

Hi,
Thank you for the pointer, I can get the markerroot sample to work and then modify it to point to my camera stream using:
	var arToolkitSource = new THREEx.ArToolkitSource({
		sourceType : 'image',
		sourceUrl : 'http://raspberrypi.local:8080/stream/video.mjpeg',
	})

AR.js is being served up from a HTTP server running at raspberrypi.local:8000 and although the web streaming software, UV4L on port 8080 allows hosting user apps,  it would only stream WebRTC so I'm still left with a cross domain issue trying to get from the HTTP app on 8000 to the mjpeg stream 8080.
I had to disable CORS in Chrome because I've not yet found a way to enable sending a CORS HTTP header in UVL4 :
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-web-security --user-data-dir
So, back to AR.js...     after overcoming the UV4L imposed issues, cross domain errors are gone and there are no errors in the JS console, I only see the video stream, but no object recognition.   Any ideas?
Thanks
Wayne

Hi,
With no CORS tricks or workarounds and changing from UV4L to RasPiCam where earthing can be hosted in Apache, I still can't get a mjpeg stream to work.
I modified: http://raspberrypi.local/AR.js/three.js/examples/markerroot.html
To point to :  sourceUrl : '/html/cam_pic_new.php?time=1498467261019&pDelay=40000',
I tried setting sourceType to image and in hope video, only `image displays the streamed vide but not the Hiro overlay object.
Should I be creating my own canvas (and updating it via setInterval) and passing that to  ArToolkitSource  somehow?
When the Cross domain error occurred it was obvious the AR.js was attempting to access the MJPEG underling canvas and now that CORS is no longer an issue that exception has gone away, so I assume AR.js is reading the data ok.
Could this be a data/pixel format issue?
Thanks
Wayne

Maybe I have a related issue: https://codepen.io/DJviolin/pen/xryMNj
I also want to have an image or a video as a webcam source for testing purposes, but the following example still wants to open my webcam (which I don't have). Is it possible to turn off the webcam lookup?

Has anyone else had the time to take a look at this or might have any suggestions?
Thanks, Wayne

This PR has been closed due to inactivity for over one year. Please open a new, updated issue if the problem or the question is still relevant.


Attempting to export chimerabeastbattlepet.m2 as OBJ failed

runtime.log

Thanks for the report. The issue appears to be a missing import not linked in production builds. This has been resolved in c4d103e. An update will be pushed momentarily.


10连出错

tenAdvanceGacha中出现重复干员会引发客户端错误

Do you have some suggestions? @guch8017
It seems ArknightsGachaMonitor works well.

Maybe because of instId

Maybe because of instId

I reused his code, and now it seems good.

fixed.


Password Reset Option Throws Error

My user's get error messages when attempting to reset their passwords. I'm on Ubuntu 20.04 LTS and Bookstack v0.31.7
Swift_TransportException
Expected response code 250 but got code "554", with message "554 5.2.252 STOREDRV.Submission.Exception:SendAsDeniedException.MapiExceptionSendAsDenied; Failed to process message due to a permanent exception with message Cannot submit message. 0.35250:0A00B782, 1.36674:01000000, 1.61250:00000000, 1.45378:02000000, 1.44866:00000000, 1.36674:7A000000, 1.61250:00000000, 1.45378:05000000, 1.44866:00140000, 1.36674:0A000000, 1.61250:00000000, 1.45378:16000000, 1.44866:A1430000, 1.36674:0E000000, 1.61250:00000000, 1.45378:BA430000, 1.44866:26010000, 16.55847:061A0000, 17.43559:0000000030020000000000000000000000000000, 20.52176:140F54911800F01F03000136, 20.50032:140F54918817F01F07000000, 0.35180:1F000130, 255.23226:D51F0000, 255.27962:7A000000, 255.27962:0A000000, 255.27962:0E000000, 255.31418:21000000, 0.35250:1F001336, 1.36674:0A000000, 1.61250:00000000, 1.45378:02000000, 1.44866:4E000000, 1.36674:32000000, 1.61250:00000000, 1.45378:53000000, 1.44866:01000000, 16.55847:BA000000, 17.43559:0000000088030000000000000100000000000000, 20.52176:140F54911800101068000000, 20.50032:140F54918817000050200000, 0.35180:6D000000, 255.23226:0A001380, 255.27962:0A000000, 255.27962:32000000, 255.17082:DC040000, 0.27745:B2200000, 4.21921:DC040000, 255.27962:FA000000, 255.1494:E3200000, 0.38698:46000000, 1.41134:46000000, 0.37692:86000000, 0.37948:86000000, 5.33852:00000000534D545000000000, 7.36354:010000000000010986000000, 4.56248:DC040000, 7.40748:010000000000010B86000000, 7.57132:000000000000000032322D32, 1.63016:32000000, 4.39640:DC040000, 8.45434:5EC1E3D3BBBCC045A15B1D7B8AA38177612D6236, 1.46798:04000000, 5.10786:0000000031352E32302E343433362E3032343A504830505231314D42353132383A31666364646266612D623637372D346365342D393333342D3564653238666232323964343A323737343030003333342D356465, 7.51330:6E8A21AB0E67D90837343030, 0.39570:00000000, 1.55954:0A000000, 0.49266:02000000, 1.33010:0A000000, 2.54258:00000000, 0.40002:7A000000, 1.56562:00000000, 1.64146:32000000, 1.33010:32000000, 2.54258:DC040000, 255.1750:BD000000, 255.31418:03003866, 0.22753:E6220000, 255.21817:DC040000, 0.64418:03000336, 4.39842:DC040000, 0.41586:C7000000, 4.60547:DC040000, 0.21966:F0220000, 4.30158:DC040000 [Hostname=PH0PR11MB5128.namprd11.prod.outlook.com] "
Swift_Transport_AbstractSmtpTransport::assertResponseCode
vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php:459
protected function assertResponseCode($response, $wanted)

{

    if (!$response) {

        $this->throwException(new Swift_TransportException('Expected response code '.implode('/', $wanted).' but got an empty response'));

    }

    list($code) = sscanf($response, '%3d');

    $valid = (empty($wanted) || \in_array($code, $wanted));

    if ($evt = $this->eventDispatcher->createResponseEvent($this, $response,

        $valid)) {

        $this->eventDispatcher->dispatchEvent($evt, 'responseReceived');

    }

    if (!$valid) {

        $this->throwException(new Swift_TransportException('Expected response code '.implode('/', $wanted).' but got code "'.$code.'", with message "'.$response.'"', $code));

    }

}

/** Get an entire multi-line response using its sequence number */

protected function getFullResponse($seq)

{

    $response = '';

    try {

        do {

            $line = $this->buffer->readLine($seq);

            $response .= $line;

        } while (null !== $line && false !== $line && ' ' != $line[3]);

    } catch (Swift_TransportException $e) {

        $this->throwException($e);

    } catch (Swift_IoException $e) {

This appears to be something specific to O365 SMTP email send. I'm investigating further.

Problem resolved. I needed to add the MAIL_FROM field and set it to the same email address that was being used for account access.

@eferreira2 Thanks for confirming, Will therefore close this off.


fix log mem escape

Issues associated with this PR
Your PR should present related issues you want to solve.
Solutions
You should show your solutions about the issues in your PR, including the overall solutions, details and the changes. At this time, Chinese is allowed to describe these.
UT result
Unit Test is needed if the code is changed, your unit test should cover boundary cases, corner cases, and some exceptional cases. And you need to show the UT result.
Benchmark
If your code involves the processing of every request, you should give the Benchmark Result.
Code Style

Make sure Goimports has run
Show Golint result

Codecov Report

Merging #1513 (a520ff2) into develop (acbb0b1) will increase coverage by 2.86%.
The diff coverage is 57.61%.

@@             Coverage Diff             @@
##           develop    #1513      +/-   ##
===========================================
+ Coverage    56.12%   58.98%   +2.86%
===========================================
  Files          270      334      +64
  Lines        25548    26974    +1426
===========================================
+ Hits         14338    15910    +1572
+ Misses        9832     9287     -545
- Partials      1378     1777     +399

Impacted Files
Coverage Δ

pkg/cel/ext/macros.go
0.00% <0.00%> (ø)

pkg/cel/ext/request.go
0.00% <0.00%> (ø)

pkg/cel/ext/response.go
0.00% <0.00%> (ø)

pkg/config/v2/common.go
100.00% <ø> (ø)

pkg/config/v2/config.go
76.92% <ø> (+36.92%)
:arrow_up:

pkg/config/v2/filter.go
66.66% <ø> (+16.66%)
:arrow_up:

pkg/config/v2/tls.go
72.72% <ø> (+37.01%)
:arrow_up:

pkg/configmanager/configmanager.go
0.00% <0.00%> (-95.93%)
:arrow_down:

pkg/configmanager/featuregate.go
100.00% <ø> (ø)

pkg/configmanager/load_config.go
73.91% <ø> (+73.91%)
:arrow_up:

... and 406 more

Continue to review full report at Codecov.

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


feature request: Could serialize_chrono_naive_to_excel() accept Option?

Feature Request
Hi!!!
Please see:
https://github.com/claudiofsr/read_xml/blob/master/src/excel.rs
https://github.com/claudiofsr/read_xml/blob/master/src/xml_structs/efinanceira.rs
I have:
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct InfoEFinanceira {
   ...
    #[serde(rename = "Ano/Mês Caixa Reportado")]
    pub ano_mes_caixa: Option<NaiveDate>,
   ...
    #[serde(rename = "Balanço da Conta: Total de Débitos")]
    pub tot_debitos: f64,
}

I try use
#[serde(rename = "Ano/Mês Caixa Reportado", serialize_with = "serialize_chrono_naive_to_excel")]

but I have ano_mes_caixa: Option<NaiveDate>.
Could serialize_chrono_naive_to_excel() accept Option<T>?
Thanks.

Could serialize_chrono_naive_to_excel() accept Option<T>?

Yes. Or at least I can add a second function to do Option<T>. Would that work for you?

Both possibilities are good!
Thanks.

Both possibilities are good!

I may implement both  but as a first pass I implemented the second option and added a serialize_chrono_option_naive_to_excel function.
Can you try that in your use case and let me know how you get on.

I tested it with my data and serialize_chrono_option_naive_to_excel worked perfectly.
Thanks!!!

This is upstream in Cargo in v0.53.0. Thanks for the suggestion and testing.


[20.09] adoptopenjdk-{13,14}: mark insecure

(cherry picked from commit 641aa9e27db6ac58c5693324d3f2693c8b3f83ce)

Motivation for this change
Backport #116935
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

@roberth, this breaks ofborg:
nix-env failed:
warning: ignoring the user-specified setting 'restrict-eval', because it is a restricted setting and you are not a trusted user
error: while evaluating anonymous function at /var/lib/ofborg/checkout/repo/38dca4e3aa6bca43ea96d2fcc04e8229/mr-est/ofborg-evaluator-4/.gc-of-borg-outpaths.nix:44:12, called from undefined position:
while evaluating 'g' at /var/lib/ofborg/checkout/repo/38dca4e3aa6bca43ea96d2fcc04e8229/mr-est/ofborg-evaluator-4/lib/attrsets.nix:276:19, called from undefined position:
while evaluating anonymous function at /var/lib/ofborg/checkout/repo/38dca4e3aa6bca43ea96d2fcc04e8229/mr-est/ofborg-evaluator-4/pkgs/top-level/release-lib.nix:144:38, called from undefined position:
while evaluating 'isDerivation' at /var/lib/ofborg/checkout/repo/38dca4e3aa6bca43ea96d2fcc04e8229/mr-est/ofborg-evaluator-4/lib/attrsets.nix:305:18, called from /var/lib/ofborg/checkout/repo/38dca4e3aa6bca43ea96d2fcc04e8229/mr-est/ofborg-evaluator-4/pkgs/top-level/release-lib.nix:146:10:
while evaluating 'callPackageWith' at /var/lib/ofborg/checkout/repo/38dca4e3aa6bca43ea96d2fcc04e8229/mr-est/ofborg-evaluator-4/lib/customisation.nix:117:35, called from /var/lib/ofborg/checkout/repo/38dca4e3aa6bca43ea96d2fcc04e8229/mr-est/ofborg-evaluator-4/pkgs/top-level/all-packages.nix:8398:10:
while evaluating 'makeOverridable' at /var/lib/ofborg/checkout/repo/38dca4e3aa6bca43ea96d2fcc04e8229/mr-est/ofborg-evaluator-4/lib/customisation.nix:67:24, called from /var/lib/ofborg/checkout/repo/38dca4e3aa6bca43ea96d2fcc04e8229/mr-est/ofborg-evaluator-4/lib/customisation.nix:121:8:
while evaluating 'isFunction' at /var/lib/ofborg/checkout/repo/38dca4e3aa6bca43ea96d2fcc04e8229/mr-est/ofborg-evaluator-4/lib/trivial.nix:333:16, called from /var/lib/ofborg/checkout/repo/38dca4e3aa6bca43ea96d2fcc04e8229/mr-est/ofborg-evaluator-4/lib/customisation.nix:119:14:
while evaluating the attribute 'jdk-hotspot' at /var/lib/ofborg/checkout/repo/38dca4e3aa6bca43ea96d2fcc04e8229/mr-est/ofborg-evaluator-4/pkgs/development/compilers/adoptopenjdk-bin/jdk14-linux.nix:5:3:
anonymous function at /var/lib/ofborg/checkout/repo/38dca4e3aa6bca43ea96d2fcc04e8229/mr-est/ofborg-evaluator-4/pkgs/development/compilers/adoptopenjdk-bin/jdk-linux-base.nix:1:1 called without required argument 'sourcePerArch', at /var/lib/ofborg/checkout/repo/38dca4e3aa6bca43ea96d2fcc04e8229/mr-est/ofborg-evaluator-4/pkgs/development/compilers/adoptopenjdk-bin/jdk14-linux.nix:5:17

Please update jdk14-linux.nix and jdk15-linux.nix.

Actually, it is not this PR that breaks ofborg but 006f2f480c7047d18b06ad1a49e893aea2050592 by<EMAIL_ADDRESS>who is not in maintainer-list.nix, without PR.

Those commits are reverted: 2ea5e9b81f41f35e69b9fa499fe925e85dd2d99b, dd46824d5552c1148684870d4b09080f8255dddb.


Allow setting another Optimization Target as a Graph Axis and Build Constraint

To have the ability to discover and set a minimum target for another ability

To expand on this - could change it from "Optimization Target vs: Drop down" in its own box to "Graph against: Popup" just below the Optimization Target:

This would give the same popup as the current Optimization Target allowing the user to select both stats and abilities.


Wrong locale message picked up after successfull 2fa authentication.

After successful 2fa authentication, devise basically for some reason device grabs warning from locale path devise.failure.already_authenticated instead notice from devise.sessions.signed_in
Here's my controller concern:
module AuthenticateWithOtpTwoFactor
  extend ActiveSupport::Concern

  def authenticate_with_otp_two_factor
    user = self.resource = find_user

    if user_params[:otp_attempt].present? && session[:otp_user_id]
      authenticate_user_with_otp_two_factor(user)
    elsif user&.valid_password?(user_params[:password])
      prompt_for_otp_two_factor(user)
    end
  end

  private

  def valid_otp_attempt?(user)
    user.validate_and_consume_otp!(user_params[:otp_attempt]) # || user.invalidate_otp_backup_code!(user_params[:otp_attempt])
  rescue StandardError => e
    Rails.logger.error e
    false
  end

  def prompt_for_otp_two_factor(user)
    @user = user

    session[:otp_user_id] = user.id
    render 'devise/sessions/two_factor'
  end

  def authenticate_user_with_otp_two_factor(user)
    if valid_otp_attempt?(user)
      # Remove any lingering user data from login
      session.delete(:otp_user_id)

      # remember_me(user) if user_params[:remember_me] == '1' we dont use remember me atm
      user.save!
      sign_in(user, event: :authentication)
    else
      flash.now[:alert] = 'Invalid code.'
      prompt_for_otp_two_factor(user)
    end
  end

  def user_params
    params.require(:user).permit(:login, :email, :password, :remember_me, :otp_attempt)
  end

  def find_user
    if session[:otp_user_id]
      User.unscoped.find(session[:otp_user_id])
    elsif user_params[:login]
      User.unscoped.where(email: user_params[:login])&.first
    end
  end

  def otp_two_factor_enabled?
    Tenant.current.has_2fa? && find_user&.otp_required_for_login
  end
end

Hi @artur79 , I'm having the same issue. Have you found any alternate solutions for it yet?

Hi @artur79 , I'm having the same issue. Have you found any alternate solutions for it yet?

AuthenticateWithOtpTwoFactor

nope

Hi, has anyone found a solution for this? Having the same problem

FYI, this is still occurring, using devise-two-factor 5.1.0.
I suspect the issue is that the user is "signed in" when you hit the workflow that it would prompt for the OTP password (at least as set up with the suggested instructions at https://www.jamesridgway.co.uk/implementing-a-two-step-otp-u2f-login-workflow-with-rails-and-devise/).  Once the OTP is entered on the second page, the user is "signed in" again, but because they were signed in for the first step, the system delivers this error message.
Specifically, it appears to be happening in this code block:
def authenticate_user_with_otp_two_factor(user)
    if valid_otp_attempt?(user)
      # Remove any lingering user data from login
      session.delete(:otp_user_id)

      # remember_me(user) if user_params[:remember_me] == '1' we dont use remember me atm
      user.save!
      sign_in(user, event: :authentication) <=== This is where the re-sign-in is occurring.
    else
      flash.now[:alert] = 'Invalid code.'
      prompt_for_otp_two_factor(user)
    end
  end


Arithmetic operations with date's

Feature request:  Arithmetic operations with date's
Expected Behavior
I think it would be nice if arithmetic operations with date's would be incorporated into the grammar of OpenValidation.
Example;
To check if a person is eligible to insure a car, the following business rule must be implemented
IF policyStartDate is less than PolicyHolderBirthDate + 25 AND enginePower is greater than 110 Kw. THEN You can't insure this car, your too young to drive such a powerfull car.
parameters:
policyStartDate: 2020-10-20
PolicyHolderBirthDate: 2000-10-14
enginePower: 200
Current Behavior
The above mentioned business rule can't be implemented because the following error is generated when compiling the rule,

All values of an arithmetical operation should be numbers.

Possible Solution
Not a solution, more a workaround
Of course we can deal with the current capability of OpenValidation by

changing the rule to something like this
IF age is less than 25 AND enginePower is greater than 110 Kw. THEN You can't insure this car, your too young to drive such a powerfull car.

adapt the generated java code so the age parameter is introduced as the difference of policyStartDate - PolicyHolderBirthDate

Steps to Reproduce (for bugs)
not applicable
Context
Within Nationale Nederlanden, Dutch insurance company, we want to use the OpenValidation framework, in a server side validation service.
Your Environment
not applicable

Hi @AndreAtNN , thanks for submitting your feature request!
We've discussed at length how to integrate Date/Time support, especially with arithmetic operations. A major hurdle in that regard was, that you'd need to parse some sort of measurement unit for any statics in the rule. In your example, you can clearly see the issue with having to add 25 (25 what? days? years? the context makes this perfectly clear, but for the rule parsing process, this isn't quite trivial) to the birth date.
Adding a feature like this, also gives need for a reasonable fallback - what's a comfortable default unit of time? IMO it always comes down to the context - Our design goals for openvalidation was always to have as little configurational baggage around the rules themselves, as possible, because if we'd make every little thing so configureable outside the rules, you'd end up with a new 'language', rather than a flavour of openValidation compatible input, sooner rather than later.
I'd love to hear your thoughts.

Hi @jages
I can see your point, the parsing of the 25 is not so trivial.
But thinking of it, there is already a simple solution to the problem.  If the date's are specified in epoch time arithmetic operations with dates are much simpler.   We decided to create business rules with date parameters in epoch time format
So if we transform the above example  to something like this, we can do arithmetic operations with dates.
COMMENT 25 years in seconds

 788923150
AS 25Years

  PolicyHolderBirthDate + 25Years
AS dateAtWhenPolicyHolderIs25Years

IF policyStartDate is less than dateAtWhenPolicyHolderIs25Years
AND enginePower is greater than 110 Kw.
THEN You can't insure this car, your too young to drive such a powerfull car

I used this Epoch time convertor https://www.epochconverter.com/
parameters
PolicyHolderBirthDate: 971481600
policyStartDate:<PHONE_NUMBER>
enginePower: 120


DSL-1 Add error routing (+ some refactoring)

Some more or less good-looking variation of implementation of this error-rooting concept and some refactoring

Isn't yet ready, still WIP. Need to add the Error routing functionality to worker


Implement IPFS snapshot recovery mechanisms for balances storage

implement IPFS snapshot recovery mechanisms for all db storages (general or individual or both if necessary)
It includes the following tasks:

read IPFS address from blockchain (get storage via substrate-api-client)
read data from IPFS
store read data in local storage

this will be done upon every worker start up.
UPDATE: only balance storage needs to be loaded from IPFS (see https://github.com/Polkadex-Substrate/Polkadex/issues/298 for reasoning)

Linking issue  #177 for better documentation:
Local permanent storage needs to be regularly snapshotted and saved to IPFS node (and pinned !).
Quote from @brenzi in issue https://github.com/Polkadex-Substrate/polkadexTEE-worker/issues/173#issuecomment-873540057

Regarding the state that needs snapshotting: We only need to restore things that can't be synced from the chain again
The proxy set doesn't strictly need snapshotting but it won't hurt (debug only. just don't restore, because you would overwrite chain-synced state)
the orderbook mirror, the balances, need snapshotting. The order cache for the OpenFinex API maybe not because these would be in limbo anyway if the ws connection breaks

Additionally we also need to snapshot the account nonce storage.
Summarising, the following disc storages need to be snapshotted to IPFS:

orderbook mirror
balance, implemented in issue #173
account nonce, implemented in issue #192

Checkout https://github.com/Polkadex-Substrate/polkadexTEE-worker/blob/develop/worker/src/ipfs.rs for ipfs interaction example
I see two IPFS snapshotting options:

save local storage snapshot regularly in IPFS
send a snapshot to IPFS whenever a local disc storage write occurs.

Copy pasted from issue #205 :

IPFS storage (see issue #224) is read and permanent storage (disc) is updated.
Unit testing: can not be done for IPFS reading, but the storing / writing to db can be unit tested
What will probably take some time : connecting to external IPFS server, connection issues.
Not part of this issue but as an explanation (and documentation):
Enclave inmemory will be updated then by reading permanent storage afterwards (which is already implemented, atleast for orderbook mirror).

IPFS storage will always be taken as the more recent one.

For this issue https://github.com/Polkadex-Substrate/Polkadex/issues/298 needs to be solved as well,

Example of storage getter extrsinic (with proof):
https://github.com/Polkadex-Substrate/polkadexTEE-worker/blob/develop/worker/src/main.rs#L794-L799
https://github.com/Polkadex-Substrate/polkadexTEE-worker/blob/develop/worker/src/polkadex.rs#L49-L57
Api creation: https://github.com/Polkadex-Substrate/polkadexTEE-worker/blob/develop/client/src/main.rs#L472-L480


How to write test cases in multiple files

Hello,
Thanks for your great work so far.
Can you point me how to write the test code in multiple files, the original generated code just has one index.js for testing and it works with Glue/Labbable but when i tried to separate the test cases in multiple files, i always meet ERROR:

Method not available when the selection has more than one connection or none

Here an example
index.js
'use strict';

const Code = require('code');
const Lab = require('lab');
const LabbableServer = require('../server.js');

global.lab = exports.lab = Lab.script();
global.describe = lab.describe;
global.it = lab.it;
global.before = lab.before;
global.after = lab.after;
global.expect = Code.expect;

describe(('server'), () => {

  let server;

  before((done) => {
    LabbableServer.ready((err, srv) => {

      expect(err).to.not.exist();

      if (err) {
        return done(err);
      }

      server = srv;

      global.server = server;

      done();
    });
  });

  it('initializes.', (done) => {
    expect(server).to.exist();
    expect(LabbableServer.isInitialized()).to.equal(true);
    done();
  });

});

auth.js
 'use strict';
 const Code = require('code');
 const Lab = require('lab');
 const LabbableServer = require('../../server.js');

 const lab = exports.lab = Lab.script();
 const describe = lab.describe;
 const it = lab.it;
 const before = lab.before;
 const after = lab.after;
 const expect = Code.expect;

 describe(('Authentication APIS'), () => {

   let server;
   let token;

   it('Login ', (done) => {
     let response;

     let options = {
       method: 'POST',
       url: '/api/v1/auth/login',
       payload: {
         username<EMAIL_ADDRESS>         password: 'handsomeisnotwrong'
       }
     };

     LabbableServer.ready((err, srv)=>{
       srv.inject(options, (res) => {
         console.log("res ", res);
         done();
       });
     })

   });

 });

I tried several approaches includes tried to call ready inside the before in auth.js but same issue.
Appreciate your help and time.
Cheers.
Tuan

Hi @anhntbk08,
I was not able to reproduce your issue, but at least three things look odd in your example:

You are setting a reference to server on the global object. Why?
In your index.js, lab is undefined
You are not cleaning up server after tests

I need to specify the connection on each inject call like server.connection[0].inject .
Thanks.


Searching element and calculate distance of element from source in graph using DFS

Concise code of DFS in which elements can be search and also calculate distance from source.

@all-contributors please add @moinmulla for his/her code


Build Ruleset 13: The user has more than x amount of Karma on Reddit

Build Ruleset 13: The user has more than x amount of Karma on Reddit. If the following is true it will generate a Verifiable Credential (VC):

Reddit account must be provided and passed to the Parachain from the F/E using the params extrinsic param to verify this
Reddit user/account must be linked and verified against the idhub-address which made the extrinsic call
TEE must utilize Reddit REST API to validate if the Reddit user has Karma over one or more of the following:

1K+ followers
10K+ followers
100K+ followers

Moving to the icebox. Not required for the initial phase.


Run rustdoc in CI and error if warnings

Which issue does this PR close?
Re https://github.com/apache/arrow-rs/issues/1267
Rationale for this change
Once we have doc links fixed, ensure they don't get broken again by checking in CI
What changes are included in this PR?
Update the clippy check to also run cargo doc and fail on any warnings
Are there any user-facing changes?
No

Codecov Report

Merging #1266 (f6caa0f) into master (43299cc) will decrease coverage by 0.00%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #1266      +/-   ##
==========================================
- Coverage   83.02%   83.02%   -0.01%
==========================================
  Files         180      180
  Lines       52269    52269
==========================================
- Hits        43398    43394       -4
- Misses       8871     8875       +4

Impacted Files
Coverage Δ

parquet_derive/src/parquet_field.rs
65.98% <0.00%> (-0.46%)
:arrow_down:

arrow/src/datatypes/field.rs
53.79% <0.00%> (-0.31%)
:arrow_down:

arrow/src/array/transform/mod.rs
84.51% <0.00%> (-0.13%)
:arrow_down:

Continue to review full report at Codecov.

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


New Photo is not visible immediately for nutrition and packaging

What

[ ] New Photo is not visible immediately for nutrition and packaging

https://user-images.githubusercontent.com/1689815/209446823-c15ed4a8-da92-4e5f-9d06-f70a7938067f.mp4

@teolemon In that specific case, the problem is with the top carousel.
I'm sure that if you go back to the "edit product photo" page, you should see the new photo.
In order to fix the issue, the "transient" photo needs to be used in the top carousel too.


Fix bugs

Codecov Report

Merging #224 into master will increase coverage by 0.03%.
The diff coverage is 94.44%.

@@             Coverage Diff              @@
##             master     #224      +/-   ##
============================================
+ Coverage     83.20%   83.23%   +0.03%
- Complexity     1077     1080       +3
============================================
  Files           148      148
  Lines          3167     3179      +12
  Branches        381      381
============================================
+ Hits           2635     2646      +11
- Misses          441      442       +1
  Partials         91       91

Impacted Files
Coverage Δ
Complexity Δ

src/main/java/tutorspet/logic/util/LessonUtil.java
98.27% <ø> (ø)
8.00 <0.00> (ø)

...ain/java/tutorspet/logic/util/ModuleClassUtil.java
91.53% <93.75%> (+0.01%)
40.00 <2.00> (+3.00)

...t/logic/commands/attendance/StatisticsCommand.java
91.17% <100.00%> (ø)
11.00 <1.00> (ø)

...tutorspet/logic/util/AttendanceRecordListUtil.java
96.34% <100.00%> (ø)
26.00 <0.00> (ø)

Continue to review full report at Codecov.

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


External Source for APPS is gone

The external source for APPS no longer exists.
This link provides nothing:  http://hometest.buddytv.netdna-cdn.com/appservice/vizio_apps_prod.json
The internal list of APPS lacks tons of APPS that no longer can be selected from code bases that depend on this, like Home Assistant.
The only selectable APPS in Home Assistant are now the APPS built into the code. I know this because I hacked in a guess for "HBO Max" in const.py and got it working (although I have no idea what the key "id" is, but for unknown APPS I can get the NAME_SPACE and APP_ID by going to that APP.
    {
        "name": "HBO Max",
        "country": ["usa"],
        "id": ["29"],
        "config": [
            {
                "NAME_SPACE": 4,
                "APP_ID": "128",
                "MESSAGE": "https://vizio.play.hbomax.com/"
            }
        ]
    },

Before I embark on going to every APP in the TV and recording the Namespace and APP_ID, PLEASE tell me someone has a copy of the JSON file before that website died. If so, please post here.

In my opinion, pyvizio should be corrected to use a local JSON file as a "APP Cache". That way, the list of the latest apps would always be available and not rely totally on some external link. As in ... it is rebuilt with (hopefully) someone's copy of those JSON files that no longer exist and stored locally. Then if a new source appears, only new ones from the new source are added to the local cache. I have already added HBO Max and FOX Sports to my copy and I can confirm they work as expected.

I would guess that this can be overcome in this way. I downloaded the Vizio APK and extracted the apps.json and apps_availability.json files. I assume that these can be dropped into pyvizio folder and used as local files. Am I correct? I suppose I should just try it out and see.

OK. I do not think I got "the absolute latest" APK, but this works. I extracted those files and actually put them into my local Home Assistant folder. I changed const.py in util to:
"""pyvizio utility constants."""
APK_SOURCE_PATH = "src"
RESOURCE_PATH = "resources/res/raw"
APP_NAMES_FILE = "apps.json"
APP_PAYLOADS_FILE = "apps_availability.json"
APP_NAMES_URL = "http://<IP_ADDRESS>:8123/local/Vizio/apps.json"
APP_PAYLOADS_URL = (
    "http://<IP_ADDRESS>:8123/local/Vizio/apps_availability.json"

Restarted and voila! All the APPs are now back. I say not the latest because I noted this did not have HBO Max. Need a better source but the attached works.
apps_availability.json.txt
apps.json.txt

I have created new JSON files here and have been adding APPs to them.
I started with the JSON from the Android APK and extracted the files.
I have been adding many that do not appear in the APK files.
So far there are about 100 APPs in here.
https://github.com/kbrown01/VizioApps

The GIT link https://github.com/kbrown01/VizioApps now has the JSON files for 154 APPs which is the complete set I have on my modern Vizio TV.

In my opinion, pyvizio should be corrected to use a local JSON file as a "APP Cache". That way, the list of the latest apps would always be available and not rely totally on some external link. As in ... it is rebuilt with (hopefully) someone's copy of those JSON files that no longer exist and stored locally. Then if a new source appears, only new ones from the new source are added to the local cache. I have already added HBO Max and FOX Sports to my copy and I can confirm they work as expected.

if we want to maintain a cache it should be done in the HA integration. Maybe something to work on if I get the time later

got the new URLs @kbrown01 want to give it a try?

also thanks for the painstaking work 🙂 if you validate this data is correct I would use these files in your repo instead.

I have not validated BUT I did download and there are 151 APPs. That is close to my 154. I can do a difference later and see what if anything was missing. I know I hit a few ones that the TV reported as "No Longer Avaialable" but I did not include them.
What is more exciting is that this list contains the "app_icon_image_url" for all of them as well as descriptions. I am going to build (for Home Assistant) a scrollable grid view of APPs now using the icons I will likely download them local and add them to my Git for the HA code.

I have changed my install and it works with the Vizio-provided links. The list of Apps for information is:
[
  "A&E Crime Central",
  "AMC+",
  "Acorn TV",
  "Adventure 2 Learning",
  "Adventure Sports Network",
  "AfrolandTV",
  "Amazon Music",
  "Annoying Orange",
  "Apple TV+",
  "AsianCrush",
  "BET+",
  "BRB Travel & Food",
  "Baby Einstein",
  "Beani.TV",
  "Best of Roblox",
  "Blackdove",
  "Bob Ross",
  "Bon Appétit",
  "Boondock Nation",
  "Brooke Burke Body",
  "Brown Sugar",
  "CBS News",
  "CBS Sports",
  "Canela.TV",
  "Chicken Soup For The Soul",
  "Christmas Plus",
  "Cinehouse",
  "CoCoMelon",
  "Comedy Dynamics",
  "ConTV",
  "Court TV",
  "Crackle",
  "Crime & Conspiracy",
  "CuriosityStream",
  "DAZN",
  "Dan TDM",
  "Dark Matter TV",
  "Discovery Go",
  "Disney+",
  "Distro TV",
  "Docurama",
  "Dove Channel",
  "ElectricNow",
  "Estrella TV",
  "FOX NOW",
  "FOX Sports",
  "FamilyTime",
  "Fandor",
  "Fawesome.tv",
  "FilmRise",
  "FitFusion",
  "Fite TV",
  "Flixfling",
  "Food Network Go",
  "Fox Nation",
  "Free Games by PlayWorks",
  "Free Movies+",
  "Funimation",
  "GoTraveler",
  "Gravitas Movies",
  "HBO Max",
  "HGTV",
  "Hallmark Movies Now",
  "HappyKids.tv",
  "Haystack TV",
  "Here TV",
  "Hipstr",
  "History Vault",
  "Hometalk TV",
  "Hulu",
  "Into The Outdoors",
  "Investigation Discovery (ID) Go",
  "Journy",
  "KORTV",
  "Kidoodle.tv",
  "LEGO TV",
  "La Bocina Latina",
  "Lava",
  "Lifetime Movie Club",
  "Local Now",
  "Love Destination",
  "Made It Myself TV",
  "MagellanTV",
  "Midnight Pulp",
  "Motorvision TV",
  "Movies Anywhere",
  "MyOutdoorTV",
  "NBC",
  "Netflix",
  "Newsy",
  "Ninja Kidz TV",
  "Nosey",
  "Novocomedy",
  "Outdoor America",
  "Outside TV",
  "PBS",
  "PBS Kids",
  "Pandora",
  "Paramount+",
  "Party Tyme Karaoke",
  "Passionflix",
  "Peacock",
  "Phoenix TV",
  "PlayWorks Kids",
  "Plex",
  "Pluto TV",
  "Popstar TV",
  "Prime Video",
  "ROW8",
  "RedBox",
  "RetroCrush",
  "Run The Fut Market",
  "Run:Time en Español",
  "STARZ",
  "Sanctuary Yoga",
  "Screambox",
  "Sensical",
  "Sesame Street",
  "Shudder",
  "Sirius XM",
  "Sling TV",
  "Smart Cinema",
  "Space Channel",
  "Ssundee",
  "SundanceNOW",
  "TLC GO",
  "The Archive",
  "The CW",
  "The Daily Wire",
  "The First",
  "TikTok",
  "Toon Goggles",
  "Tubi",
  "URBN TV",
  "US Weekly TV",
  "VIZIOgram",
  "Very Local",
  "Vevo",
  "Vudu",
  "WatchFree+",
  "WatchFree+ On Demand",
  "World Poker Tour",
  "Wu Tang Collection",
  "XUMO",
  "YouTube",
  "YouTube TV",
  "Zoomi",
  "discovery+",
  "fuboTV",
  "iFood.TV",
  "iHeartRadio"
]

great! will merge and release the update for HA. Also have a working update to persist the retrieved data so that if we lose the URL again, the apps list won't be gone, it'll just be static until we have a working fix


Have no sound with 1.1.0 [BUG]

Version Information
KSP 2 Version
The KSP 2 Version
Space Warp Version
The Space Warp Version 1.1.0

Bug Information
Describe the bug
Have no sound with 1.1.0 it works with the version before
To Reproduce
Steps to reproduce the behavior: start the game - no sound
Expected behavior
haviing sound
Link to crashlog [If Applicable]
Ctrl + V here
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
Add any other context about the problem here.

I can confirm, no sound after upgrading to 1.1.0

This is known about, we are currently investigating

Fixed