Add PHP 8.2 support, drop PHP 7.4 support, upgrade to vimeo/psalm v5

Q
A

Documentation
no

Bugfix
no

BC Break
no

New Feature
yes

RFC
no

QA
yes

Description

This PR:

Adds support for PHP 8.2
Drops support for PHP 7.4
Updates vimeo/psalm to v5
Solves various psalm errors (but also creates a couple of new ones added to the baseline sadly).

Closes:

https://github.com/laminas/laminas-cache-storage-adapter-redis/pull/57
https://github.com/laminas/laminas-cache-storage-adapter-redis/pull/58

There are various errors shown in CI here:

boesing/psalm-plugin-stringf not supporting PHP 8.2 (solved by: https://github.com/boesing/psalm-plugin-stringf/pull/142)
Too many open files (not sure what is causing this still)
RedisCluster::keys(): Can't send KEYS to <IP_ADDRESS>:6380 (which I'm unable to test locally as I don't have redis cluster setup).

Hopefully this can at least be a place to start if anyone else wishes to pick this up before I can fix, but those last 2 are really stumping me.

I already spent some time in trying to fix CI regarding Open Files and KEYS error.
Will see that the open PRs get merged once I get CI running. I do prefer not merging this without CI passing for the unit tests.
Too many open files is the error I mentioned in slack. Its ridicculous and drives me crazy as all CI errors we have right now are hard to tackle...

The open files issue only occurs with the latest dependencies, if I could reproduce that locally (which I know you mentioned you can't either) then we might be able to figure out which version of which dep and conflict with it. Or even open an issue upstream.

@internalsystemerror I am currently merging the renovate PRs. Are you open to apply your changes to the renovate PR regarding psalm v5?

I prefer not to work directly on the renovate branches myself as it prevents renovate from updating them in the future so its a habit I've gotten into. But I can rebase this one using the commit from the renovate branch tomorrow.

I've rebased but now I'm getting a load of extra psalm errors. I think the options array needs typing and I'm kinda confused what's expected, e.g. $server['timeout'] is used where $server['port'] should be, things like that.

Yeah, so to be specific. The issue is because in a lot of places rather than throwing exceptions, values are being coerced via normalisation which means to fix most of these issues is a BC break as far as I can see. If using specific types the vast majority of this normalisation becomes redundant also.


feat: add Dockerfile

Closes #130
This adds an initial pass Dockerfile to create a graphql-debugger Docker image.
Heavily inspired by this

Command to build image to test it out (from the root): docker build . -t graphql-debugger -f docker/Dockerfile

Image comes out at 468.74 MB currently - there's definitely some optimisation to be done there in terms of stripping files/deps we don't need from the final image

Possibly, I'm not overly familiar with the setup you have here. You can negate that by adding *.db to the dockerignore file and seeing if that makes a difference?

@samlaycock in development the dev.db file sits in ./packages/data-access/prisma and when deployed to npm it sits in a persons node_modules/@graphql-debugger/data-access/prisma dir.
I made some changes to this PR to run the e2e tests against the docker container - still issues for now 👀

You may be able to see from the most recent CI run for e2e-docker that its having issues waiting for a schema to be displayed in debugger - could be due to conflict or different locations of the dev.db file.
CI RUN:

https://github.com/rocket-connect/graphql-debugger/actions/runs/7182010167/job/19557577820?pr=154

@samlaycock I have fixed the issues with the dev.db mount, we first reset-db inside the build, then set the permissions of the file so we can modify it.
In the CI the volume is mounted so that resetDB points to the same DB.

https://github.com/rocket-connect/graphql-debugger/issues/183


Serialize manifest imports for mapped handles that are owned by manifests.

Should fix the remaining part of #822


New Theme: YinYang

Theme submission
Link to my theme repository: https://github.com/joway/hugo-theme-yinyang
I made sure that...

[x] the repository contains a good README.md describing my theme
[x] an open source license has been added to LICENSE.md
[x] all metadata have been added to theme.toml
[x] screenshots have been added in the images/ folder with the required dimensions
[x] in case I'm using a customized demo via the exampleSite folder that

[x] https://example.com is set as base url in exampleSite/config.{toml, yaml, json} to avoid the abuse of unused domains
[x] the site's content is as neutral as possible (contains no ads etc.) and reflects the features of my theme

[x] I tested my theme against the gohugoio/HugoBasicExample

[x] I've checked the developer tools' console in my browser for error messages

[x] in case my theme is using Hugo Pipes features like toCSS and PostCSS that I have committed the /resources directory with all generated assets, for my theme to work in the basic version of Hugo

Hello @joway and thanks for the theme submission.
On first look can you please remove the browser interface from your theme's screenshot.png and tn.png while keeping the dimensions that are specified in the README
If you have a look at the Themes Showcase you will notice that all theme thumbnails in the list only feature the theme layout and nothing else.
Once you do this let me know so that I can review your theme further.

@onedrawingperday Hi, thanks for you review, i have fix the screenshot.png and tn.png.

@joway
As far as I know there is no language array in the sample theme.toml that is provided in the README.

Please remove lines 22-26 from your theme.toml

Also as a minimum version you have entered Hugo 0.0.1. But that cannot be. Hugo's first public release

You need to enter a valid Minimum Hugo Version.

In your Example Site's config you have enabled Google Analytics tracking and that is not acceptable on the Hugo website.

Please leave the extrahead parameter blank like so: extraHead ='' and document its use in your theme's README e.g. To load scripts use the extraHead parameter e.g. <script async src="https://www.googletagmanager.com/gtag/js?id=enter-your-ID"></script><script src="https://example.com/some-script.js"></script>

Hi, @onedrawingperday , thanks for your detailed review, I have fixed all problems, plz take a look.
Thanks!

Hello @joway
The file theme.toml is not the place from custom parameters. Please remove the following from lines 22-23:
[params]
extraHead = ''

You need to enter this empty parameter where you had it originally i.e. /exampleSite/config.toml.
Please do this and let me know.

@onedrawingperday  hi, fixed it, plz take a look again, thanks!

Your theme should appear soon on Hugo's theme site. Next, I'll promote your theme on Hugo's official Twitter account.


calling autoUpdater.checkForUpdates crashes the app

Electron version: 0.37.2 & 0.35.5
Operating system: OSX 10.11

Part of the stack trace:
Responsible:           Electron [25499]
User ID:               502
Date/Time:             2016-03-25 17:01:48.270 +0200
OS Version:            Mac OS X 10.11.4 (15E65)
Report Version:        11
Anonymous UUID:        2C6BD5A7-8763-4740-F4C9-9AAAE37693B8
Sleep/Wake UUID:       F49F40D7-B263-4D40-9100-769091599763
Time Awake Since Boot: 210000 seconds
Time Since Wake:       24000 seconds
System Integrity Protection: enabled
Crashed Thread:        28  com.apple.NSURLConnectionLoader
Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY
Application Specific Information:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber length]: unrecognized selector sent to instance 0x29a37'
terminating with uncaught exception of type NSException
abort() called
Is there any way to debug this? Calling setFeedURL seems to work fine.

Wow, after waisting half a day on this, I figured it out. https://github.com/atom/electron/issues/3067

Closing this out as a duplicate of #3067


Need to integrate  latest syntax for error declaration.

Issue
the addition of the latest syntax in solidity 0.8.13 for the error reverts is not supported in surya.

We have a floating pragma on the solidity parser, so when something like this is happening to you, it'll mostly be a question of uninstalling and installing the package again.
i.e., npm uninstall surya && npm install surya


Fix using explicit imports.

Replace explicit with relative imports for importing classes to comparator.py

Codecov Report

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

@@           Coverage Diff           @@
##           master       #3   +/-   ##
=======================================
  Coverage   16.21%   16.21%
=======================================
  Files           3        3
  Lines          37       37
  Branches        2        2
=======================================
  Hits            6        6
  Misses         31       31

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 7070e9a...97db042. Read the comment docs.


Investigate whether the registration of IServiceScope can be optimized

The Integration.ServiceCollection integration package currently registers the IServiceScope. It does so by creating a new service scope the first time it is requested. But the way it does so is unsuited for the Blazor integration, which requires setting the service scope from the outside.
Some investigation is needed to see whether this Blazor requirement can be integrated in the ServiceCollection integration package, or at least be implemented in a way that simplifies integration with Blazor.
In the current Blazor guidance IServiceScope to allow Blazor integration. Here's the relevant code:
public void ConfigureServices(IServiceCollection services)
{
    services.AddRazorPages();
    services.AddServerSideBlazor();

    services.AddSimpleInjector(container, options =>
    {
        // Custom extension method; see code below.
        options.AddServerSideBlazor(this.GetType().Assembly);

        // Adds the IServiceScopeFactory, required for the IServiceScope registration. See #13
        container.Register(
            () => options.ApplicationServices.GetRequiredService<IServiceScopeFactory>(),
            Lifestyle.Singleton);
    });

    // ** START RELEVANT SNIPPET FOR #14 **
    // Replace the IServiceScope registration made by .AddSimpleInjector
    // (must be called after AddSimpleInjector)
    container.Options.AllowOverridingRegistrations = true;
    container.Register<ServiceScopeAccessor>(Lifestyle.Scoped);
    this.container.Register<IServiceScope>(
        () => container.GetInstance<ServiceScopeAccessor>().Scope
            ?? container.GetInstance<IServiceScopeFactory>().CreateScope(),
        Lifestyle.Scoped);
    container.Options.AllowOverridingRegistrations = false;
    // ** END RELEVANT SNIPPET FOR #14 **

    InitializeContainer();
}

feature-14 branch created.


Use s as string param in builtin methods

str is a Rust type name and should not be used as a variable name.
This patch replaces instances of str in builtin definitions with s.
One test case modified to account for these changes.

Hello @jgbyrne,
thanks for pointing this out and providing a pull request. I've also thought about this renaming before, but IMHO string is too long, and s is too short, but I agree with your argumentation, str is both a Rust builtin type, but also a Tokay builtin-function. So this is the best option to choose from.


Support uniqueItems in JSON schema?

Can uniqueItems of JSON schema be supported through v.set, similar to Zod?
BTW, thanks for the awesome project.

Set is not supported by JSON schema so I would prefer to add a uniqueItems action to Valibot instead and also use this action to add uniqueItems when using toJsonSchema. What do you think?

Set is not supported by JSON schema so I would prefer to add a uniqueItems action to Valibot instead and also use this action to add uniqueItems when using toJsonSchema. What do you think?

I think your idea sounds even better.

I am pretty busy right now, but I will try to implement it in the next few weeks.

If it's okay with you, I'll try contributing.

Yes, feel free to create a PR. 🙌


feat: add national-id utils

Features:
National-id validation
Get place by national-id

Hi @ali-master, can you assign someone to this PR who can review my work?

Hi @mohoma Jan,
There is no one who wants to review the codes except you and please be the leader and the Repository is yours.


502 Bad Gateway / 504 Gateway Time-out

502 Bad Gateway / 504 Gateway Time-out errors on forum page only now.

Same issue at this moment.
Using two machines with different networks (mobile and work).
Cleared all browser history / cookies and it did not solve the issue.

"504 Gateway Time-out" now

Experiencing the same issue as well. For the last couple of hours, not once have I been able to reach the forum.

Forum not work.

Solved at this moment (14:45 South African time); approx. 8 hours down.

One hour and fifteen minutes later and we have it again; not even going to bother with clearing cache.

And fifteen minutes later it works again. For how long?


Make it so that players have to switch off turns

Grabbing a piece requires that it's that player's turn
Confirm flips the whites_turn boolean.

Love the global whites_turn btw, shitty code FTW.

I'm going to leave it as is, because this is meant to be more of a board simulator than an actual game, and it makes it more tedious for testing.


NUTCH-2149 REST endpoint to read Nutch sequence files

Removed debug statement
Corrected indentation and line width

+1 this looks great @sujen1412 please commit!


[Story] Duplicate Machine

As a student I would like to duplicate a machine so I can modify a machine without changing the original

Acceptance test

Start on the machine select page
Click the options button on the sample DFA machine card
Select the duplicate option
Enter a name for the new machine
Verify that you see a new machine card with that title

Merged by PR #40.


Blazor wasm sample

Hi there,
it´s great you started an official integration of tinymce for blazor. 🎉
I added an example for usage with blazor wasm.
Moreover I added support for .net 5.0.
Hope you find this pr usefull.
Greetings

Hi,
Thank you for your submission. The code contains a checked-in version of TinyMCE, which doesn't really belong in this repo. We would also need you to sign the CLA - please let us know if you didn't receive a CLA email.
As an alternative to this contribution, we'd be happy to provide a link from the readme to your demo project.
Kind regards,
Dylan Just
Tiny

Hi,
would it be ok to abandon this pr and make a new pr just containing the .net 5 support?
I also would provide you a link to a readme for the blazor wasm example repo so the checked-in version of TinyMCE is not part of this repo.
PS: I haven´t received any mail regarding the CLA yet.
Kind regards,
Nico

Hi,

would it be ok to abandon this pr and make a new pr just containing the .net 5 support?

That would be fantastic, thanks.

PS: I haven´t received any mail regarding the CLA yet.

As this repository is new, I think you logged the PR before we'd turned the CLA system on for this repo. It should work for your next PR.
Once again, thank you very much for contributing. I'll close this PR and await your new one.
Kind regards,
Dylan Just
Tiny Technologies


Flexible initial conditions input

Allow for other AMR files to serve as the starting condition for HYDRAD. This may also be useful when checkpointing long-running simulations
Make compiling and running IC code optional.
Doc updates to reflect these changes.

Pull Request Test Coverage Report for Build 61

1 of 3 (33.33%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.1%) to 43.137%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

hydrad_tools/configure/configure.py
1
3
33.33%

Totals

Change from base Build 60:
-0.1%

Covered Lines:
176

Relevant Lines:
408

💛  - Coveralls


Pass templates paths as params

Pass the template param to the class and parse it internally with template()
because it gives much more flexibility in the quite common roles+profiles+Hiera
scenario. Otherwise we should resolve the template in the profile, loosing the
variables scope or pass a complete ERB template through Hiera, which is quite
ugly (tpls should stay in the module, Hiera is only for real data)
I have also removed hardcoded defaults in spec test
BONUS: puppet 4.x linter fixes

Thanks for the contribution @vide. However this type of implementation is a bit counter to what we like in our modules and is also backwards incompatible. Old manifests that rely on these params taking in strings will break because they now require a filepath.
Our suggestion is to either pass in your desired template string via the param. Or find out what's missing from our in-module templates and update those.

I'm sorry but I don't agree with you. I think that the approach I propose (which is used by the way in puppetlabs-bacula module too) is better, flexibility wise.
For example in our DHCP server we don't have bind in the same installation and I need a completely different DDNS template. Passing it through Hiera is a mess and is ugly as hell, templates as I said should stay in an ERb and through Hiera we should only tell if we want to use some special template.
I agree with you that my change is backwards-incompatible and that's not good. If you change your mind and give another chance to my approach, I will look into fixing this.
Thanks anyway


useStrapiAuth is POST as 'text/plain' instead of 'application/json'

Version
@nuxtjs/strapi: 1.6.3
nuxt: 3.0.0
strapi is on Strapi Cloud, nuxt is on render
Reproduction Link
https://acx.onrender.com/auth/login
Steps to reproduce
Try any login/password and see the request to api (yes, the form is open/no captcha, I know).
What is Expected?
According Strapi forums, correct way is to use application/json.
What is actually happening?
Result is "405 Method Not Allowed".

Hello @AdrianoCahete,
Just tried your reproduction, the Content-Type is well set to application/json on my side but there is a CORS error.

Yep, I forgot to close/delete this issue. Fixed the content type, but had another error with CORS :(


Run with Relative Paths in development

It is possible to build for Relative Paths.
How would I do the same when running in development using npm start?

Sorry this slipped through the cracks.
You don't have an option to serve this anywhere but the root in development until #1582 is resolved; it's planned for v2.0 right now. 😄

Hi @Timer, thanks for your reply.
Would it be possible to work around this issue by "ejecting" ?

@kimhanse not easily, no! The PR we have isn't complete yet -- you'd run into issues. There are other external factors which are not ready to support this yet (webpack-dev-server).
You could try to apply it by hand and see if it works for you, but it's doubtful.

Our solution was to eject and then modify some of the generated config files. It appears that this is working except that the web socket is still placed under root dir, and we can live with that in dev.
The changes we had to do to the configuration to move our application from / to /v2/ was:
diff --git a/config/webpack.config.dev.js b/config/webpack.config.dev.js
index 0047b70..e6ae8f9 100644
--- a/config/webpack.config.dev.js
+++ b/config/webpack.config.dev.js
@@ -14,11 +14,11 @@ const paths = require('./paths');

 // Webpack uses `publicPath` to determine where the app is being served from.
 // In development, we always serve from the root. This makes config easier.
-const publicPath = '/';
+const publicPath = '/v2/';
 // `publicUrl` is just like `publicPath`, but we will provide it to our app
 // as %PUBLIC_URL% in `index.html` and `process.env.PUBLIC_URL` in JavaScript.
 // Omit trailing slash as %PUBLIC_PATH%/xyz looks better than %PUBLIC_PATH%xyz.
-const publicUrl = '';
+const publicUrl = '/v2';
 // Get environment variables to inject into our app.
 const env = getClientEnvironment(publicUrl);

diff --git a/config/webpackDevServer.config.js b/config/webpackDevServer.config.js
index 0fb049d..211a2b8 100644
--- a/config/webpackDevServer.config.js
+++ b/config/webpackDevServer.config.js
@@ -75,6 +75,7 @@ module.exports = function(proxy, allowedHost) {
       // Paths with dots should still use the history fallback.
       // See https://github.com/facebookincubator/create-react-app/issues/387.
       disableDotRule: true,
+      index: '/v2/',
     },
     public: allowedHost,
     proxy,
diff --git a/package.json b/package.json
index 947a951..c559e00 100644
--- a/package.json
+++ b/package.json
@@ -2,6 +2,7 @@
   "name": "webapp2",
   "version": "0.1.0",
   "private": true,
+  "homepage": "/v2",
   "dependencies": {
     "autoprefixer": "7.1.2",
     "axios": "^0.16.2",

Correct, the websocket breaks. We hope to get this resolved soon!

Our workaround for the websocket issue is to have this in our nginx proxy config:
    location /v2/ {
      proxy_pass http://<IP_ADDRESS>:3000;
    }
    location /sockjs-node/ {
      proxy_pass http://<IP_ADDRESS>:3000;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
    }

Good to hear this is being worked on. Thanks for your help @kimhanse - I adapted your solution to use the existing PUBLIC_URL env var rather than hardcoding.
I also found that using react-hot-loader, I needed to add an nginx proxy for __webpack_dev_server__:
    location ~ ^/__webpack_dev_server__/ {
      proxy_pass                          http://<IP_ADDRESS>:3000;
    }


Add Events Import BeforeRead and AfterRead

Requirements
Please take note of our contributing guidelines: https://docs.laravel-excel.com/3.1/getting-started/contributing.html
Filling out the template is required. Any pull request that does not include enough information to be reviewed in a timely manner may be closed at the maintainers' discretion.
Mark the following tasks as done:

[x] Checked the codebase to ensure that your feature doesn't already exist.
[x] Checked the pull requests to ensure that another person hasn't already submitted the feature or fix.
[ ] Adjusted the Documentation.
[x] Added tests to ensure against regression.

Description of the Change

Add new events to be able to handle the phpSpreadsheet object before the "data reading" execution.
These two events could add more control on how to handle the reading. At this moment only basic operations.
In the future, maybe could change all the reading behaviour based on the information provided by the methods like reader->listWorksheetInfo($currenFile);. or read a small sample of data to test the rows and data field content, or split the reading in chunks if the number of records exceeds 99999? ...etc.
Based on the Documentation:
"Both Reader and Sheet have a ->getDelegate() method which returns the underlying PhpSpreadsheet class. This will allow you to add custom macros as shortcuts to PhpSpreadsheet methods that are not available in this package."
BeforeReader.php and AfterRead.php return

When calling getDelegate() a IReader Object which is the phpSpreadsheet class.
When calling getReader() a Reader Object Reader class.

Why Should This Be Added?

Benefits

Use the getDelegate() as a standard to obtain the phpSpreadsheet Object as defined in Reader.php
This could avoid confusion in the use of the two different methods that return the same object.
Possible Drawbacks

.gitignore should be IGNORED, due I used Visual Studio.
At the moment it is unknown for me how many implementations use getDelegate instead of getReader  in the Events\BeforeImport.php and Events\AfterImport.php.
The Event beforeImport is executed after the file was readed, and these new events will run before the reader executes the read.
No Drawbacks in a standard operation, due it is a new set of events added to the Reader.php
    /**
     * @param  object  $import
     */
    public function loadSpreadsheet($import)
    {
        $this->sheetImports = $this->buildSheetImports($import);

        $this->beforeRead($import);  // New

        $this->readSpreadsheet();

        $this->afterRead($import);   // New

        if (!$import instanceof WithMultipleSheets) {
            $this->sheetImports = array_fill(0, $this->spreadsheet->getSheetCount(), $import);
        }

        $this->beforeImport($import);
    }

Initial state
Due the reading process has multiple options, at this moment WithChunkReading wasn't tested or modified. Will be the Step 2 or TODO in case of acceptance. view code below.
   /**
     * @param  object  $import
     * @param  string|UploadedFile  $filePath
     * @param  string|null  $readerType
     * @param  string|null  $disk
     *
     * @return \Illuminate\Foundation\Bus\PendingDispatch|$this
     * @throws NoTypeDetectedException
     * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
     * @throws Exception
     */
    public function read($import, $filePath, string $readerType = null, string $disk = null)
    {
        $this->reader = $this->getReader($import, $filePath, $readerType, $disk);

        if ($import instanceof WithChunkReading) {
            return (new ChunkReader)->read($import, $this, $this->currentFile);
        }

        try {
            $this->loadSpreadsheet($import, $this->reader);

            ($this->transaction)(function () use ($import) {
                foreach ($this->sheetImports as $index => $sheetImport) {
                    if ($sheet = $this->getSheet($import, $sheetImport, $index)) {
                        $sheet->import($sheetImport, $sheet->getStartRow($sheetImport));
                        $sheet->disconnect();
                    }
                }
            });

            $this->afterImport($import);
        } catch (Throwable $e) {
            $this->raise(new ImportFailed($e));
            throw $e;
        }

        return $this;
    }

src\ChunkReader.php
class ChunkReader
{
    /**
     * @param  WithChunkReading  $import
     * @param  Reader  $reader
     * @param  TemporaryFile  $temporaryFile
     *
     * @return \Illuminate\Foundation\Bus\PendingDispatch|null
     */
    public function read(WithChunkReading $import, Reader $reader, TemporaryFile $temporaryFile)
    {
        if ($import instanceof WithEvents && isset($import->registerEvents()[BeforeImport::class])) {
            $reader->beforeImport($import);
        }

        $chunkSize  = $import->chunkSize();
        $totalRows  = $reader->getTotalRows();
        $worksheets = $reader->getWorksheets($import);

        if ($import instanceof WithProgressBar) {
            $import->getConsoleOutput()->progressStart(array_sum($totalRows));
        }
...

Verification Process

Test were modified to add the new Events. TestCase.php has a modification to be able to use the Local Storage path. (I had no enough time to explore why or if the "disk" parameter will fix the problem )
vendor\bin\phpunit --filter WithEventsTest
vendor\bin\phpunit --filter RegistersEventListenersTest

test\TestCase.php
    /**
     * @param \Illuminate\Foundation\Application $app
     */
    protected function getEnvironmentSetUp($app)
    {
		$app->useStoragePath(__DIR__ . '/Data/Disks/Local');
        $app['config']->set('filesystems.disks.local.root', __DIR__ . '/Data/Disks/Local');
        $app['config']->set('filesystems.disks.test', [
            'driver' => 'local',
            'root'   => __DIR__ . '/Data/Disks/Test',
        ]);

Applicable Issues

Some request associated to this change.
https://github.com/Maatwebsite/Laravel-Excel/pull/2389#issue-325879771
Note: Possible will be needed to expose the Variable $sheetImports to be able to change the behaviour of the reading, due it is used in a deeper function, and maybe the force the "functionality - $this->reader, 'setLoadSheetsOnly' " by default with all the worksheets defined at the workbook, or simulate what some ETLs do, to find the first worksheet with data.
In case the definition doesn't have WithMultipleSheets specific worksheets idicated at the beforeRead Events will not run.
    /**
     * @param  object  $import
     *
     * @return array
     */
    public function getWorksheets($import): array
    {
        // Csv doesn't have worksheets.
        if (!method_exists($this->reader, 'listWorksheetNames')) {
            return ['Worksheet' => $import];
        }

        $worksheets     = [];
        $worksheetNames = $this->reader->listWorksheetNames($this->currentFile->getLocalPath());
        if ($import instanceof WithMultipleSheets) {
            $sheetImports = $import->sheets();

            // Load specific sheets.
            if (method_exists($this->reader, 'setLoadSheetsOnly')) {
                $this->reader->setLoadSheetsOnly(array_keys($sheetImports));
            }

            foreach ($sheetImports as $index => $sheetImport) {
                // Translate index to name.
                if (is_numeric($index)) {
                    $index = $worksheetNames[$index] ?? $index;
                }

                // Specify with worksheet name should have which import.
                $worksheets[$index] = $sheetImport;
            }
        } else {
            // Each worksheet the same import class.
            foreach ($worksheetNames as $name) {
                $worksheets[$name] = $import;
            }
        }

        return $worksheets;
    }

Thanks for opening the PR. However the PR doesn't comply with our PR requirements listed in the contributing guide. Please create a new PR which applies to those requirements: https://docs.laravel-excel.com/3.1/getting-started/contributing.html#pr-requirements
A few things to pay attention to:

StyleCI is failing due to incorrect code style
PR has unnecessary inline comments
PR contains a lot of commits, please turn into 1 commit
Please also PR the docs
Check the inline comments I put in this PR


Source adapter trigger dispatcher homologation

Merge after: This PR !!

Changes
Trigger's prefetch count now:

Has a default value of 1. FIFO behavior
Have limits: 1 ≤ prefetchCount ≤ 1000
Added validation and tests for this
Added comments in resources for better docs. TODO: improve Broker docs and samples
Fixed Broker sample
-Also renamed example to make clear it includes the Trigger

:gift: Sync the behavior between the Source Adapter and Broker Dispatcher Prefetch Count
:gift: Added Trigger Validation and tests
:bug: Fix bug on Broker sample, it was missing the failer namespace. Also renamed example to make clear it includes the Trigger
:broom: improved docs by commenting and added resources. Minimal refactor on code.

/kind enhancement

Fixes #535

Release Note

 Now the Source Adapter and Broker Dispatcher's Prefetch Count  behavior is the same.
Updated the Trigger's webohook to validate:
- Has a default value of 1. FIFO behavior
- Have limits: 1 ≤ prefetchCount ≤ 1000

Docs

/assign
Let's rebase before I check this.

/lgtm
/approve


Always return en language

I use {{__ ('Register')}} and always give me an English value

Sorry but I'm not able to reproduce such an issue.


Plumb Emulator support into packages/packages recipe

Add the plumbing for supporting the packages/packages recipe so that we can generate an emulator from that recipe for use in the tests.
The tests are cirrus so this will have no effect immediately.

The tests are cirrus so this will have no effect immediately.

🤦🏻 Sorry, I spaced on that when I sent you that trial PR. We can try spinning up an initial Linux LUCI test for this; I think the plan of record for moving everything is Dockerfile support, but doing just Android without it is probably doable.

No problem. Sounds good. I will reach out when I begin this work shortly.

Hi Stuart, can you provide a candidate test that I can take a look at from start to finish that requires an android emulator? Do any of the current tests run on emulators or is this a "new feature" for the packages tests?

It's a new feature. I have a test that would be perfect for this, which is the custom package test, but it's still on Cirrus because there hasn't been much progress on migrating Linux tests to LUCI. (I believe @keyonghan was planning on doing at least some of that, but I'm not sure what the timeline is.)
If someone can migrate this task to LUCI, it would then be a trivial change to enable an emulator test in it.

Okay, I will get with Keyong about this to see what he has already done.

It's a new feature. I have a test that would be perfect for this, which is the custom package test, but it's still on Cirrus because there hasn't been much progress on migrating Linux tests to LUCI. (I believe @keyonghan was planning on doing at least some of that, but I'm not sure what the timeline is.)

I should have sync'ed with you about the cirrus to LUCI migration. @yusuf-goog is helping with the remaining migration now due to me working on something else. @ricardoamador Please touch base with yusuf about the progress.

@ricardoamador I've hacked up a test PR that should work for testing emulator recipe support:
https://github.com/flutter/packages/pull/4377
I've replaced the script run by Linux dart_unit_test_shard_1 master and Linux dart_unit_test_shard_2 master to instead flutter drive Android tests. It's currently showing No Android devices available as expected; with emulator support working it should instead drive integration tests.
(I expect it'll time out with only two shards, but we'll be able to see it successfully complete several packages' tests before that, so it should still work as a PoC).

@stuartmorgan that is great news! I will take a look in the next few days. Trying to wrap up some changes before getting to this one.

I've replaced the script run by Linux dart_unit_test_shard_1 master and Linux dart_unit_test_shard_2 master to instead flutter drive Android tests. It's currently showing No Android devices available as expected; with emulator support working it should instead drive integration tests.
(I expect it'll time out with only two shards, but we'll be able to see it successfully complete several packages' tests before that, so it should still work as a PoC).

We've now landed partial migration of Android platform tests (just not including drive), so I updated the trial PR to be less hacky. It's now the Linux_android android_platform_tests_shard_* tests that run it, and the sharding is higher, so things may actually pass once emulators are there.

Taking a look.

@stuartmorgan the .ci.yaml defines the recipe but it looks like packages primarily uses another yaml file to pass arguments down in to the test runner. Is this an artifact of using Cirrus or will packages continue to use this structure even when migrated to LUCI for testing?

flutter/packages uses a generic recipe so that almost all CI changes can be made in-repo, instead of the cumbersome process of having to change another repo (where we don't get presubmit, and changes are out-of-band relative to the affected repo). We will continue to use this structure until/unless there's a centralized replacement with those same semantics provided for all of the Flutter repos (my understanding is that there is or was some kind of plan around that), because moving away from it would be a huge usability regression.

Thank you for the context.

@stuartmorgan okay I was able to get an emulator to support this target: Linux_android android_platform_tests_shard_1 master.
However there is currently a limitation where the machine that supports kvm which is needed for the emulator has only 8 cores. Now normally this would not be an issue but I see that for each of the shards you are specifying 32 cores which I would assumes reduces the runtime of this test. Is that a correct assumption?

I don't know how much difference the machine configuration makes in practice; we could do some tests and see how reasonable it it, and how much we need to adjust sharding.
That run is definitely not a fewer-cores-is-slower problem though, the test hung. It got to Pause and resume video recording at minute three, and then spent the rest of the hour there waiting. Could we get this all wired up without making the test change yet, if the infra part is working, and then I can investigate the hangs by experimenting further once that's in place?

@stuartmorgan That is good to know. I am going to reach out to the chromium team to see about getting a 32core with kvm configuration but good to know this is not a 'cores' issue. For sure I can add the plumbing if you would like to investigate further. The change is fairly simple and I can have it in tomorrow for sure. I just need to clean it up and then make sure the tests work.

https://flutter-review.googlesource.com/c/recipes/+/47340
I added instructions into the description on how to activate the emulators for packages.
Basically you just add the 'android_virtual_device' dependency which will make the recipe assume you want to run with an emulator for the test.
Let me know if you have questions or anything when you get to testing.

I am going to reopen for tracking and that we might need to provide other methods for supplying emulation.

I was able to successfully set up a different emulator-based test (https://github.com/flutter/packages/pull/4484) so it's looking good! Next week I'll investigate the hang in the primary Android integration tests.

None of the problems were infra-related, they are all test-specific. Given that, we can close this as done. Thanks again for getting this set up!


ck cd

Certain CK commands (e.g. find) often return a directory where a user needs to go for further operation. It would be convenient to combine search and change into a single command.

We discussed that internally and there is no easy way to change current directory and keep it when calling programs/scripts in Linux or Windows. Instead, I added two commands to CK 'cd' and 'cdc'. The first one just prints 'cd {path to entry}' which you can copy/paste ... Second one does the same and also attempt to copy this command to clipboard so that you can just paste it and go to a given entry ...
I.e. for a test:

ck cd test:unicode
ck cdc test:unicode

May I ask you to check if it will be ok as a possible solution, please? Thanks!

The cd command works just fine. But cdc complains:

CK error: seems that "tkinter" python package is not installed!

I'll check with tkinter installed... In any case, it would be good to document this dependence.

I added extra support for 'pyperclip' module (available via pip, i.e. pip install pyperclip).
Can you please check it now? Thanks!

I've installed pyperclip via pip but it appears to have an unsatisfied dependency on Ubuntu 12.04:
$ python -c "import pyperclip"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/pyperclip/__init__.py", line 218, in <module>
    raise Exception('Pyperclip requires the xclip or xsel application, or the gtk or PyQt4 module.')
Exception: Pyperclip requires the xclip or xsel application, or the gtk or PyQt4 module.
$

Let's ignore the clipping issue for now. In the below, I'd expect to see a warning informing of more than one option existing:
$ ck list program:slambench*
slambench-1.1-opencl
slambench-1.1-cuda
slambench-1.1-opencl-dragon-board
slambench-1.1-cpu
slambench-1.1-cpu-openmp
$ ck cd program:slambench*
cd /home/dvdt/CK/reproduce-pamela-project/program/slambench-1.1-opencl
$

(Only a single, topmost option is selected; no warning.)

I added warning to the above case - can you please check it ...
As for clipboard, yes, we should find a better solution ...
Thanks!

It's actually become a bit worse - I get an exception now when I try to find anything:
$ ck find script:explore-datasets
/home/dvdt/CK/ck-clsmith/script/explore-datasets
Traceback (most recent call last):
  File "/home/dvdt/CK/ck-master/ck/kernel.py", line 8414, in <module>
    r=access(sys.argv[1:])
  File "/home/dvdt/CK/ck-master/ck/kernel.py", line 8376, in access
    rr=perform_action(i)
  File "/home/dvdt/CK/ck-master/ck/kernel.py", line 2899, in perform_action
    return a(i)
  File "/home/dvdt/CK/ck-master/ck/kernel.py", line 4748, in find
    rx=copy_to_clipboard({'string':'"'+pf+'"'})
  File "/home/dvdt/CK/ck-master/ck/kernel.py", line 1383, in copy_to_clipboard
    import pyperclip
  File "/usr/local/lib/python2.7/dist-packages/pyperclip/__init__.py", line 218, in <module>
    raise Exception('Pyperclip requires the xclip or xsel application, or the gtk or PyQt4 module.')
Exception: Pyperclip requires the xclip or xsel application, or the gtk or PyQt4 module.
$

Ups, sorry. I think I fixed that.
Can you please check both 'find' and 'cdc' (that it doesn't crash but returns CK error)?
Thanks!

It should be solved now so I close this ticket!


Create new models needed for Fishpass specific features

This is an incomplete list:

[x] Barrier Types
[x] Barrier Status
[x] ScenarioBarrier (an instance of one barrier's default data being overwritten by user)

I'm checking this work out now.


redo (ticdc): add comments for redo log config and make TestLogManagerInOwner more stable

What problem does this PR solve?

Issue Number: close #10072
What is changed and how it works?
Check List
Tests

Unit test

Questions
Will it cause performance regression or break compatibility?
Do you need to update user documentation, design documentation or monitoring documentation?
Release note
None

/retest

/retest


Unhandled exception (BadRequest) when using special characters in search bar

I got some unhandled exception when typing whitespaces or commas in the search bar. For instance:
chr11: 33,880,122 - 33,913,836

Fails. I copied these coordinates from the results page, so an easy error to reproduce. Personally I would remove the whitespaces after the colon and around the - between the start and end coordinates, in the results displayed (that is in addition to fix the search query)

I think the whitespace makes the location easier to read

Vs.

But otherwise fixed in #111


fix(all): lint warnings - add missing dependency for tests

Description
Fixes some static analysis warnings
Related Issues
none
Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I titled the PR using Conventional Commits.
[x] I did not modify the CHANGELOG.md nor the pubspec.yaml files.
[x] All existing and new tests are passing.
[ ] The analyzer (flutter analyze) does not report any problems on my PR.

Breaking Change
Does your PR require plugin users to manually update their apps to accommodate your change?

[ ] Yes, this is a breaking change (please indicate that with a ! in the title as explained in Conventional Commits).
[x] No, this is not a breaking change.

Action added by you catches you 😄

Action added by you catches you smile

too bad it doesn't accept "lint" as a valid header :(


Update consensys/blockscout image

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

@joshuafernandes
I have tested v4.1.5 on both besu and goquorum. it seems fine.
In v4.0.0, there is a problem that cannot get valid transactions.
Can get transactions but are forever pending.

Hello @fox0430 this looks good, but need the CLA to be signed before we can merge. Click on details in the checks above to sign the CLA and we can merge

@joshuafernandes
I signed the CLA .


File browser last directory

Bug Report / Feature Request
Summary:
When using telescope-file-browser.nvim, the directory does not persist between sessions. For example, if I open Neovim in $HOME and navigate to ~/Downloads, the next time I open the file browser, it defaults back to $HOME instead of the previously navigated directory (~/Downloads).
Steps to Reproduce:

Open Neovim in the $HOME directory.
Use telescope-file-browser.nvim to navigate to ~/Downloads.
Close the file browser.
Reopen the file browser.

Expected Behavior:
The file browser should open in the last navigated directory (~/Downloads) instead of the initial directory ($HOME).
Actual Behavior:
The file browser reopens in the initial directory ($HOME) instead of the last navigated directory (~/Downloads).
I'm using the default settings provided in the README, I'm sorry if this option is already provided and I just coulnd't find it out

This seems to be a very behaviour specific to individuals. I'm assuming you open nvim from HOME directory. So the file_browser will open where the current directory `cwd' is.
I'm saying specific, because some might want to open file_browser from the HOME directory/the directory where they are currently in :pwd. However, some might want it to be the last visited directory. I would suggest this be option based with an option something like open_prev_path = true


crouton on arm, kernel version issue with libc updating in chroot

Hello!
I'm having an issue updating my crouton installs.
They fail at updating libc with this error:
ERROR: Your kernel version indicates a revision number
of 255 or greater.  Glibc has a number of built in
assumptions that this revision number is less than 255.
If you've built your own kernel, please make sure that any
custom version numbers are appended to the upstream
I realize this is not a crouton script issue, but an issue with the chrome os version number.
Does anyone know of a way to work around this?
Been stuck with this issue for a while, so I'd thought I'd ask here.
Any help appreciated!
uname -a output:
Linux localhost 4.4.257-19930-ga3a8dfd6a994 #1 SMP PREEMPT Wed Mar 3 21:02:41 PST 2021 aarch64 GNU/Linux
Thanks!
kernel number with a dash or some other delimiter.
Please paste the output of the following command here: sudo edit-chroot -all

Please describe your issue:
If known, describe the steps to reproduce the issue:

This is also happening in xenial & bionic it appears -

Help please. #4441
crouton on arm, kernel version issue with libc updating in chroot · Issue #4429 · dnschneid/crouton
sid installation issues on Chrome OS 90.0.4430.11 #4434

I believe it's outdated distros and there may not be anything that can be done. 🤔

I hit the same issue, same kernel version. A 255 revision limit rings a bell...it's sound like the LINUX_VERSION_CODE encoding, which packs the kernel version in a uint32. It is generated by /usr/include/linux/version.h
define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))

So 257 overflows and makes this kernel 4.5.1. glibc needs a different packing scheme.
Turns out that breakage like this was known at the time of releasing 4.4.256<EMAIL_ADDRESS>-- see that and other recent threads on lkml.
Seems that the actual check is coming from a post-install script: /var/lib/dpkg/info/libc6:i386.preinst . I don't know enough about crouton yet to know how to manually step through the process so that I can edit this file and comment out the test.

@clrmntn42 can you please change the ticket description and delete "arm"? This also affects x86_64. Maybe the summary should be "crouton fails on newer kernels (e.g., 4.4.257)".

I hacked it up. This approach is not supported or recommended -- I don't know what else it breaks, so use at your own risk. Also, be warned that this hacking will take you around an hour, and you need an extra Linux system. And, in hindsight, this is a hacky even for a hack: I think there's a better way to do this (I'll post that last). Anyway, here's what I did:

Begin install:

crouton -r xenial -txfce

Ctrl-Z after it retrieves libc, to leave the installer paused.

Open a new terminal tab, and:

cd /tmp/crouton.*/xenial-*/var/cache/apt/archives

There you'll find the libc6 package. E.g., libc6_2.23-0ubuntu3_amd64.deb

This is pretty hacky. So I copied the libc6 deb package to a USB drive and then copied it to a Linux system (see https://unix.stackexchange.com/questions/138188/easily-unpack-deb-edit-postinst-and-repack-deb#138190), and then edited the DEBIAN/preinst file and changed the test:

    if [ "$system" = "Linux" ]
    then
        # Test to make sure z < 255, in x.y.z-n form of kernel version
        # Also make sure we don't trip on x.y.zFOO-n form
        kernel_rev=$(uname -r | sed 's/\([0-9]*\.\)\{1,2\}\([0-9]*\)\(.*\)/\2/')
        if [ "$kernel_rev" -ge 255 ]
        then
            echo "ERROR: Your kernel version indicates a revision number"
            echo "of 255 or greater.  Glibc has a number of built in"
            echo "assumptions that this revision number is less than 255."
            echo "If you\'ve built your own kernel, please make sure that any"
            echo "custom version numbers are appended to the upstream"
            echo "kernel number with a dash or some other delimiter."
            echo
            exit 1
        fi

It's the "-ge 255" line. I changed it from 255 to something much bigger (999). Then repackaged the deb, and copied it back to the location on the chrome book. This is switching out the deb package file while the installer is paused.

fg to continue the crouton installer, and it picks up the modified libc6.

Then it crashes with the same error! But this is later in the install sequence, and this time it's a slightly different libc6 version (libc6_2.23-0ubuntu11.2_amd64.deb). You'll find it in this directory, or something similar:

cd /usr/local/chroots/xenial/var/cache/apt/archives

Go through the whole copying to a USB drive and dpkg-deb process to edit the DEBIAN/preinst again, and making a fixed version of the deb file and putting it back there.

Now run the update, and do the Ctrl-Z process again at a point I forget what:

crouton -r xenial -u -t xfce

A problem here is that the update overwrites the .deb file, so I had to try again a few times copying the patched version over. I'm battling a race condition.

For me it then crashed again since I needed a patched libc6_2.23-0ubuntu11.2_i386.deb as well. All the same process again, although this time the package system became confused and wouldn't make forward progress. I finally had to manually force the libc6 i386 install using chroot:

enter-chroot -u 0 dpkg -i /var/cache/apt/archives/libc6_2.23-0ubuntu11.2_i386.deb

Then do the update again. And it finally finished!

startxfce4

And now I'm in Xfce. On a 4.4.257 kernel.
It was only by step 9 that I figured out I could enter-chroot -u 0 to run commands: so I think this could be simplified by doing pauses and forcing dpkg -i installs at the right times.
Also, I wonder if I could have installed the Linux (Beta) feature so that I could have the dpkg-deb commands locally, and save the trip over a USB stick to another system.
I'm sure someone will whittle this down using these techniques and make the above steps look way too verbose in comparison. :-)
(BTW, I first tried something even hackier by untar-ing and editing the deb files on the chromebook with vi and tar alone, but I wasn't able to get them back in the ar format. This is hacking with just the default software on the chromebook. I suspect it's doable, I just didn't get there.)
(Also, if I had a newer BPF up and running, I'd be able to copy-out over the uname(2) return values and change the kernel versions that way. This is an ancient trick that predates eBPF.)
UPDATE: My chromebook just displayed a kernel version error and then blew up spraying fire and sparks everywhere, and ejected keys into the ceiling. Just kidding. :) As I said, use at your own risk.

I hacked it up. This approach is not supported or recommended -- I don't know what else it breaks, so use at your own risk. Also, be warned that this hacking will take you around an hour, and you need an extra Linux system. And, in hindsight, this is a hacky even for a hack: I think there's a better way to do this (I'll post that last). Anyway, here's what I did:

Begin install:

crouton -r xenial -txfce

Ctrl-Z after it retrieves libc, to leave the installer paused.
Open a new terminal tab, and:

cd /tmp/crouton.*/xenial-*/var/cache/apt/archives

There you'll find the libc6 package. E.g., libc6_2.23-0ubuntu3_amd64.deb

This is pretty hacky. So I copied the libc6 deb package to a USB drive and then copied it to a Linux system (see https://unix.stackexchange.com/questions/138188/easily-unpack-deb-edit-postinst-and-repack-deb#138190), and then edited the DEBIAN/preinst file and changed the test:

    if [ "$system" = "Linux" ]
    then
        # Test to make sure z < 255, in x.y.z-n form of kernel version
        # Also make sure we don't trip on x.y.zFOO-n form
        kernel_rev=$(uname -r | sed 's/\([0-9]*\.\)\{1,2\}\([0-9]*\)\(.*\)/\2/')
        if [ "$kernel_rev" -ge 255 ]
        then
            echo "ERROR: Your kernel version indicates a revision number"
            echo "of 255 or greater.  Glibc has a number of built in"
            echo "assumptions that this revision number is less than 255."
            echo "If you\'ve built your own kernel, please make sure that any"
            echo "custom version numbers are appended to the upstream"
            echo "kernel number with a dash or some other delimiter."
            echo
            exit 1
        fi

It's the "-ge 255" line. I changed it from 255 to something much bigger (999). Then repackaged the deb, and copied it back to the location on the chrome book. This is switching out the deb package file while the installer is paused.

fg to continue the crouton installer, and it picks up the modified libc6.
Then it crashes with the same error! But this is later in the install sequence, and this time it's a slightly different libc6 version (libc6_2.23-0ubuntu11.2_amd64.deb). You'll find it in this directory, or something similar:

cd /usr/local/chroots/xenial/var/cache/apt/archives

Go through the whole copying to a USB drive and dpkg-deb process to edit the DEBIAN/preinst again, and making a fixed version of the deb file and putting it back there.
Now run the update, and do the Ctrl-Z process again at a point I forget what:

crouton -r xenial -u -t xfce

A problem here is that the update overwrites the .deb file, so I had to try again a few times copying the patched version over. I'm battling a race condition.

For me it then crashed again since I needed a patched libc6_2.23-0ubuntu11.2_i386.deb as well. All the same process again, although this time the package system became confused and wouldn't make forward progress. I finally had to manually force the libc6 i386 install using chroot:

enter-chroot -u 0 dpkg -i /var/cache/apt/archives/libc6_2.23-0ubuntu11.2_i386.deb

Then do the update again. And it finally finished!
startxfce4

And now I'm in Xfce. On a 4.4.257 kernel.
It was only by step 9 that I figured out I could enter-chroot -u 0 to run commands: so I think this could be simplified by doing pauses and forcing dpkg -i installs at the right times.
Also, I wonder if I could have installed the Linux (Beta) feature so that I could have the dpkg-deb commands locally, and save the trip over a USB stick to another system.
I'm sure someone will whittle this down using these techniques and make the above steps look way too verbose in comparison. :-)
(BTW, I first tried something even hackier by untar-ing and editing the deb files on the chromebook with vi and tar alone, but I wasn't able to get them back in the ar format. This is hacking with just the default software on the chromebook. I suspect it's doable, I just didn't get there.)
(Also, if I had a newer BPF up and running, I'd be able to copy-out over the uname(2) return values and change the kernel versions that way. This is an ancient trick that predates eBPF.)
UPDATE: My chromebook just displayed a kernel version error and then blew up spraying fire and sparks everywhere, and ejected keys into the ceiling. Just kidding. :) As I said, use at your own risk.

Hi brendangregg,
Excellent, I will try your idea out now on this RK3399 chromebook and report back! Cheers!

if I understand the kernel thread discussions correctly, the kernel versions are updated to numbers above 255, but they hacked the kernel version to report back a lesser version number to avoid the issue on linux....for some reason the chromebook devs took the version number hack and did not incorporate the version check fix???

Apologies for being MIA (will continue to be so for a while, unfortunately).  We'll probably have to do a similar hack in crouton in order to get libc installed for the first time.
Once it's installed, you can use something like this LD_PRELOAD hack to make all calls to uname cap at 255, which should allow stuff like package upgrades to progress without modification.  I haven't done much testing on the code so it's possible it's insufficient, but hopefully that helps people who are trying to hack their way around this nuisance.

The way I see it is theirs 3 thing we can do...
1.We can manually change the kernel number to something higher.
2.Wait and hope for the next Chrome upodate to fix this.
3.Revert back to a previous chrome version.

Just purchased a Chromebook Plus (520QAB-K04) looking forward to using it as a development platform.   It has version 4.4.268 kernel that exceeds 255.  Any idea when this issue will be reconciled with a Chrome update, or do I need to return this Chromebook and get an older version from eBay?  Thx

Disregard...    After reading the Wiki Chrome OS article I discovered that the intent of newer Chromebooks is to use Crostini, and not the Crouton solution which appears to have been an interim solution.


Unnecessary Alert Prompt Triggered During Routing Reordering

Note
When a user reorders a routing downwards via drag and drop and releases the cursor over the route name label, an alert prompt is erroneously triggered, asking the user to stay or leave the page. This issue is replicable at every point on the route name label except for the reorder chip.
Expected behavior
Ideally, there should be no alert message generated when reordering a routing downwards via drag and drop and releasing the cursor over the route name label. Users should be able to perform this action seamlessly without any unnecessary interruptions.
Steps to reproduce the issue
Log in to the application using valid credentials.
Click on any brokering run to see the routing configured for the run.
Navigate to the routing management section.
Attempt to reorder a routing downwards via drag and drop.
Release the cursor over the route name label.
Observe the alert prompt asking the user to stay or leave the page.
Environment details
App version : v1.1.0
App environment : UAT
Additional information
https://jam.dev/c/e3215fe9-f4c9-461b-8ffc-ba46cf35ba56

Seems like this issue is happening if the user releases the card when the cursor is outside of the "re-ordering" chip. Not sure what the best solution here is @ymaheshwari1 if there is no way to fix this with existing UI we can think of a new UI

Seems like this issue is happening if the user releases the card when the cursor is outside of the "re-ordering" chip. Not sure what the best solution here is @ymaheshwari1 if there is no way to fix this with existing UI we can think of a new UI

I will check once on this.


Failed to load branches on public repo

Component
server, web-ui
Describe the bug
Trying to open Branches tab on public repo, I get infinite loading spinner and error : failed to load branches: user does not exist [uid: 0, name: ]
Steps to reproduce

Install Woodpecker
Under anonymous user open public repo

Try to open Branches tab

In browser console see error

GET
https://domain.tld/api/repos/2/branches?page=1
[HTTP/2 500  255ms]

Error: : failed to load branches: user does not exist [uid: 0, name: ]
    _request https://domain.tld/assets/index-CaKTCYMy.js:44
    _get https://domain.tld/assets/index-CaKTCYMy.js:44
    getRepoBranches https://domain.tld/assets/index-CaKTCYMy.js:44

In Server log see

{"level":"trace","time":"2024-10-22T16:10:12Z","caller":"/woodpecker/src/github.com/woodpecker-ci/woodpecker/server/router/router.go:43","message":"[GET] /api/repos/2/branches?page=1"}
{"level":"debug","time":"2024-10-22T16:10:12Z","caller":"/woodpecker/src/github.com/woodpecker-ci/woodpecker/server/router/middleware/session/repo.go:160","message":"guest granted &{UserID:0 RepoID:0 Repo:<nil> Pull:true Push:false Admin:false Synced:0 Created:0 Updated:0} to wp/test"}
{"level":"error","error":"user does not exist [uid: 0, name: ]","time":"2024-10-22T16:10:12Z","caller":"/woodpecker/src/github.com/woodpecker-ci/woodpecker/server/api/repo.go:363","message":"failed to load branches"}
{"level":"debug","ip":"<IP_ADDRESS>","latency":82.330564,"method":"GET","path":"/api/repos/2/branches","status":500,"time":"2024-10-22T16:10:12Z","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:131.0) Gecko/20100101 Firefox/131.0","time":"2024-10-22T16:10:12Z","caller":"/woodpecker/src/github.com/woodpecker-ci/woodpecker/server/router/middleware/logger.go:59"}

In Gitea log see

2024/10/22 16:12:56 ...eb/routing/logger.go:102:func1() [I] router: completed GET /api/v1/version for [<IP_ADDRESS>]:0, 401 Unauthorized in 1.1ms @ v1/api.go:748(v1.Routes.apiAuth)

Expected behavior

Branches list loads just fine
Or there is no Branches tab at all

System Info
Woodpecker `next-9dd796ad65`, Gitea `1.22.3`, Potgres 16

Additional context
The same on 2.7.1, but there are two An unknown error occurred in UI without details.
Validations

[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Checked that the bug isn't fixed in the next version already [https://woodpecker-ci.org/faq#which-version-of-woodpecker-should-i-use]

I think it's about user token.
I have not been logged in for a while, got errors. My user had tokens:
// users.token
{
  "gnt": 1,
  "tt": 0,
  "exp":<PHONE_NUMBER>,
  "iat":<PHONE_NUMBER>
}
// users.secret
{
  "gnt": 1,
  "tt": 1,
  "exp":<PHONE_NUMBER>,
  "iat":<PHONE_NUMBER>
}

After logging in and logging out, Branches list works under anonymous user too and I got updated users table:
// users.token
{
  "gnt": 1,
  "tt": 0,
  "exp":<PHONE_NUMBER>,
  "iat":<PHONE_NUMBER>
}
// users.secret
{
  "gnt": 1,
  "tt": 1,
  "exp":<PHONE_NUMBER>,
  "iat":<PHONE_NUMBER>
}

Let's see how it's going in 1 hour (I'll update the comment).


Check grouping

I think this would be on the heap so not sure if the complicator would detect empty grouping and skip the looping over all metrics

This is a micro-optimisation that applies in a case where the impact is going to be very tiny. In general I don't worry about constant costs for a query (which this is) as cardinality is the problem - not fixed costs per node evaluation.
This also makes the code harder to grok, and given this saves only 16B of allocations I don't think it makes sense.


making user input form a variable in js

WHEN I type a movie name into the search field, a variable is created in the script file
TO use this name to fetch other details about the movie and log to the search history


Compact view bug

Hi,
Thanks for an awesome chrome extension! It has, until now, made my daily workflow much more effective. A couple of weeks ago, the view suddenly became a little buggy. Please see attached image.

It seems that the next message is "started to early" so the subject of the first message is half covered.
Is it some setting I have messed up?
Best regards,
Frode Kolgrov

what browser version? any other extensions? what is the exact url?

Google chrome version 62.0.3202.89 (Official Build) (64-bit)
Many other extentions - temporary disabled all without any luck
https://outlook.office.com/owa/?realm=luminell.com&exsvurl=1&ll-cc=1044&modurl=0

I can confirm this bug is still in on main inbox view https://outlook.office.com/owa/ if you have the Reading Pane enabled.
Without the pane, it looks OK.

If anybody wants to take a stab (send me a pull request) at the CSS please do..


[Extractor] Split APIs into multiple API templates

@miaojiang I just confirmed the extractor doesn't split APIs into multiple templates.

@lucashuet93 @odaibert @nzthiago Any ideas why I might not be seeing this functionality working?

@joeyeng I can reproduce it. We will investigate.

@miaojiang Any update on this?

I'm surprised there's not more interest in this feature. Without this, this tool is unusable, imo...

We will revisit soon.

Use "--splitAPIs true" to split into multiple API template, and you can deploy anyone of them separately

@joeyeng  please give it a try and let us know what you think!

@RupengLiu I'm getting: ##[error]Unrecognized option '--splitAPIs'

@RupengLiu Sorry it was a problem in my pipeline. It is working for me now. But are we forced to use extractorparams.json for passing params to the extractor now?


Kafka Producer not sending messages, compatable with Python Kafka, Docker?

I have a EXP web service that POSTs to a model service that then populates the DB, the model service then responds with the new data (just json) back to the EXP web service. On the EXP service I am trying to then push this new data to Kafka via a producer but it's failing, after console logging the producer I see that ready: 'false' so I think I'm never actually sending messages.
My consumer is using python-kafka because its a python script that automatically reads from Kafka and sends it to an ES. I am using docker-compose for my containers. I confirmed my set-up works because I am able to manually send things to my Kafka container via python, I am just having implementing it in node using kafka-node :l
I declare Kafka at the top of my listing.js
var kafka = require('kafka-node'),
Producer = kafka.Producer,
KeyedMessage = kafka.KeyedMessage,
client = new kafka.Client('kafka:9092'),
producer = new Producer(client);
km = new KeyedMessage('key', 'message');
then in my Post request I have this:
request(options)
.then(function(parsedBody) {
//payloads = [];
//var msg = { topic: 'new-listings-topic', messages: parsedBody, partition: 0 };
//payloads.push(msg)
payloads = [
{ topic: 'new-listings-topic', messages: parsedBody, partition: 0 },
];
console.log(producer);
console.log(payloads);
producer.on('ready', function () {
producer.send(payloads, function (err, data) {
console.log(payloads)
console.log(data);
});
});
producer.on('error', function (err) {
console.log(err);
});
res.send(parsedBody);
//res.send('Pokemon added through the exp api');
})
.catch(function (err) {
res.send(err)
})
});

After checking to see if my client or producer are ready it seems neither are ready. Is this a problem with how I'm connecting to the client? Does kafka-node support docker? I am using spotify/kafka which has built in zookeeper support. My docker-compose has this, so shouldn't the connection string be kafka:9092?
i.e client = new kafka.Client('kafka:9092'),
and the web service has a links: - kafka already
kafka:
image: spotify/kafka
container_name: kafka
environment:
ADVERTISED_HOST: kafka
ADVERTISED_PORT: 9092
hostname: kafka
if (client.ready) {
console.log('client is ready');
}
else {
console.log('client is not ready');
}
if (producer.ready) {
  console.log('producer is ready');
}
else {
  console.log('producer is not ready');
}

exp       | EventEmitter {
exp       |   ready: false,
exp       |   client:
exp       |    EventEmitter {
exp       |      sslOptions: undefined,
exp       |      ssl: false,
exp       |      connectionString: 'kafka:9092',
exp       |      clientId: 'kafka-node-client',
exp       |      zkOptions: undefined,
exp       |      noAckBatchOptions: undefined,
exp       |      brokers: {},
exp       |      longpollingBrokers: {},
exp       |      topicMetadata: {},
exp       |      topicPartitions: {},
exp       |      correlationId: 0,
exp       |      _socketId: 0,
exp       |      cbqueue: {},
exp       |      brokerMetadata: {},
exp       |      ready: false,
exp       |      zk: EventEmitter { client: [Object], _events: [Object], _eventsCount: 4 },
exp       |      _events:
exp       |       { ready: [Function],
exp       |         brokersChanged: [Function],
exp       |         error: [Function],
exp       |         close: [Function] },
exp       |      _eventsCount: 4 },
exp       |   requireAcks: 1,
exp       |   ackTimeoutMs: 100,
exp       |   partitioner: {} }
exp       | EventEmitter {
exp       |   sslOptions: undefined,
exp       |   ssl: false,
exp       |   connectionString: 'kafka:9092',
exp       |   clientId: 'kafka-node-client',
exp       |   zkOptions: undefined,
exp       |   noAckBatchOptions: undefined,
exp       |   brokers: {},
exp       |   longpollingBrokers: {},
exp       |   topicMetadata: {},
exp       |   topicPartitions: {},
exp       |   correlationId: 0,
exp       |   _socketId: 0,
exp       |   cbqueue: {},
exp       |   brokerMetadata: {},
exp       |   ready: false,
exp       |   zk:
exp       |    EventEmitter {
exp       |      client:
exp       |       Client {
exp       |         domain: null,
exp       |         _events: [Object],
exp       |         _eventsCount: 3,
exp       |         _maxListeners: undefined,
exp       |         connectionManager: [Object],
exp       |         options: [Object],
exp       |         state: [Object] },
exp       |      _events:
exp       |       { init: [Object],
exp       |         brokersChanged: [Function],
exp       |         disconnected: [Object],
exp       |         error: [Function] },
exp       |      _eventsCount: 4 },
exp       |   _events:
exp       |    { ready: [Function],
exp       |      brokersChanged: [Function],
exp       |      error: [Function],
exp       |      close: [Function] },
exp       |   _eventsCount: 4 }

The ready event is only emitted once. So with the way the code is written you would only send a single message. It would be better to wrap the ready to around your code so it doesn't send a  request until the producer is ready.
You may want to format your sample code with  markdown. It would make it much more readable
We use docker to run our tests check out our docker-compose file.

I don't get what you mean. I only want to send messages as they are created with a POST request is made. I am triggering the send on the request.then method.
I think my problem is with connecting to my kafka container? Or should I move the declaration of kafka into my POST method?
the full code here:
https://jsfiddle.net/0uak2nwd/

Since kafka is a dependency you need to ensure that's ready before you sending any messages. So you can either put that on top of your code and in your ready handler initialize your route or since you're using promises you can use a Promise wrapper similar to below.
'use strict';

var kafka = require('kafka-node');
var Producer = kafka.Producer;
var Client = kafka.Client;

module.exports = function () {
  var args = arguments;
  return new Promise(function (resolve, reject) {
    var client = Client.apply(null, args);
    var producer = new Producer(client, { requireAcks: 1 });

    producer.on('ready', function () {
      resolve(promisedSend);
    });

    producer.on('error', function (err) {
      reject(err);
    });

    function promisedSend(payloads) {
      return new Promise(function (resolve, reject) {
        producer.send(payloads, function (error) {
          if (error) {
            return reject(error);
          }
          resolve();
        })
      });
    }
  });
};

Outside your route you can define:
var producerPromise = require('./example/producer.init');
var producerReady = producerPromise('<IP_ADDRESS>:2181'); // NOTE: this is ZK address!

// inside your request post handler you can call:

producerReady.then (function (producerSend) { return  producerSend([{topic: 'test', partition: 0, messages: 'my message'}]);  });

Make sure you update your code to use the zookeeper address and not kafka broker.

Gonna be honest do not think I follow,
So I made a producer.js and I put the first chunk of your code in it ver batum (don't know what I would change) keep in mind I am using spotify/kafka (which has Zookeeper and Kafka together so I'm not sure of the settings to alter)
On the top of my route file for the post request I define
var producerPromise = require('../producer.js'); //I used a .js file not a .init file correct?
var producerReady = producerPromise('kafka:9092'); // I changed this to ADVERTISED_HOST:ADVERTISED_PORT

Then in my POST METHOD on the request-promise after getting a response I call
request(options)
  .then(function(parsedBody) {
producerReady.then (function (producerSend) { return  producerSend([{topic: 'new-listings-topic', partition: 0, messages: parsedBody}]);  });

Is this correct? Sorry I'm not trying to bother you I am just confused. This is my first time working with kafka at all.
I did the above and it doesn't seem to be working :l

The default kafka port is 9092. The zookeeper port should be 2181. Connecting to the kafka  broker won't emit a ready you should provide the zookeeper host to the client instead.

Would I need to change anything in my docker-compose then? I think the thing tripping me up is using a docker image with zookeeper and kafka bundled together?
I changed: var producerReady = producerPromise('kafka:2181'); But I do not think it's sending to my python consumer as it prints out anything that is being sent to my new-listings-topic.
I know my python script is connected to my kafka container, but I don't think my node producer is being connected.
kafka:
image: spotify/kafka
container_name: kafka
environment:
ADVERTISED_HOST: kafka
ADVERTISED_PORT: 9092
hostname: kafka

I would recommend you start with a very simple test file that just initializes a producer (see examples folder) and see if you can produce to the kafka/zk container. You can use the kafka bin tools to verify messages are being received.


Multiple customElement instances seem to share the reference to the object declared in the provider

Multiple customElement instances seem to share the reference to the object declared in the provider. Changing fields inside this object is this way reflected in all instances. This behavior feels unexpected.
Maybe consider creating a new instance of such objects when creating customElement instances.
Demonstration
const yetiCustom = customElement('yeti-custom', {
  SomeObj: {
    someProp : 0
  },
  connectedCallback() {
    console.log(this.SomeObj.someProp++);
  }
});

this.append(yetiCustom());
this.append(yetiCustom());

Console output:
0
1

Thanks for reporting this. This is an interesting one as I see it as a bug but I also see some nice use cases where sharing state could be useful.

Properties are now created using structuredClone method to ensure that there is no object reference sharing between custom element instances of the same type.


Allow specifying On Air token in .env file

This pull-request implements the following:

bring variables from .env file into the environment
read ON_AIR_TOKEN variable from the environment
increase reconnect_timeout so short network hiccups do not reload UI state

The changes have already been made on main. This is a null-commit.


[RESOLVED] Interface eth0(): High error rate (>2 for 5m)

Problem started at 16:24:29 on 2023.04.19
Problem name: Interface eth0(): High error rate (>2 for 5m)
Host: S100-Primario
Severity: Warning
Operational data: errors in: 0, errors out: 0
Original problem ID: 19777
Event details in Zabbix: http://<IP_ADDRESS>/tr_events.php?triggerid=23483&eventid=19777

Problem has been resolved in 3m 0s at 16:27:29 on 2023.04.19
Problem name: Interface eth0(): High error rate (>2 for 5m)
Host: S100-Primario
Severity: Warning
Original problem ID: 19777


OfficeScript Error

Hi,
Could you help me please?
I tested office script manually (without Power Automate Flow) as you recommend and it work fine. But if I run it with Automate flow script stop with error. I'm using  your template files for testing.
In output folder are created two new files "JulyGroups_.xlsx_" and "AugustGroups_.xlsx_". After manual extension change to .xlsx files are empty.
Output of of Run script:
{
    "statusCode": 404,
    "headers": {
        "Access-Control-Expose-Headers": "Version",
        "mise-correlation-id": "79df18c5-532e-4f5f-9576-a9376d929e0f",
        "x-ms-workflow-name": "5fba9d55-ac0a-4321-906a-718f8c4f3d06",
        "Version": "3.6",
        "x-ms-client-request-id": "3b601724-9ebd-4323-bd0e-dd69fb097a3c",
        "x-ms-request-id": "3b601724-9ebd-4323-bd0e-dd69fb097a3c",
        "Strict-Transport-Security": "max-age=31536000; includeSubDomains",
        "X-Content-Type-Options": "nosniff",
        "X-Frame-Options": "DENY",
        "Timing-Allow-Origin": "*",
        "x-ms-apihub-cached-response": "false",
        "x-ms-apihub-obo": "false",
        "Cache-Control": "no-store, no-cache",
        "Date": "Sat, 21 Jan 2023 09:14:12 GMT",
        "Content-Length": "165",
        "Content-Type": "application/json"
    },
    "body": {
        "message": "We were unable to run the script. Please try again.\nWorkbook not found.\r\nclientRequestId: 3b601724-9ebd-4323-bd0e-dd69fb097a3c",
        "logs": []
    }
}

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 1fdee872-3dfe-61b6-f824-dc8c74625c36
Version Independent ID: c4481c81-ebae-7b3a-5da9-1757fb575188
Content: Convert CSV files to Excel workbooks - Office Scripts
Content Source: docs/resources/samples/convert-csv.md
Product: excel
Technology: scripts
GitHub Login: @o365devx
Microsoft Alias: o365devx

Hi @Pekotu,
I'm sorry to hear you're having problems with the sample. It seems like something is wrong with those Excel files that are being created. Could you please share screenshots of your flow? The underscores in your file names seem suspicious.
For what it's worth, here's what the Apply-to-each loop my flow looks like:

Hi,
Thank you for messages.
Finally I solved it by removing of condition from flow. Now it use one csv and copy it to one xlsx and work fine.
Have a Great day
Petr Kopecký

2023 0:48, 0:48, Alex Jerabek @.***> napsal/a:

Hi @Pekotu,
I'm sorry to hear you're having problems with the sample. It seems like
something is wrong with those Excel files that are being created. Could
you please share screenshots of your flow? The underscores in your file
names seem suspicious.
For what it's worth, here's what the Apply-to-each loop my flow looks
like:

--
Reply to this email directly or view it on GitHub:
https://github.com/OfficeDev/office-scripts-docs/issues/572#issuecomment-1401160735
You are receiving this because you were mentioned.
Message ID:
@.***>

@Pekotu Closing this issue as you seem to have resolved it. If you have further questions, do let us know. Thanks.


Feature Request: Supporting relationship rollbacks

While implementing transactional rollback, we end up doing roughly this pattern for the case where we're removing relationships
transaction:
 	spicedb.DeleteRelationships([
		relationshipFilter1,
	])
	database.Write(...)
	commit()
rollback:
	spicedb.WriteRelationships([
		relationship1,
		relationship2,
		...
	])

Here, we delete using a filter, for example on resource: foo, id: 123 which ends up removing a number of relationships. But in the case the transaction fails, we need to manually re-create all of these. This also requires that to support the rollback, we need to pre-load these relationships into memory (at least) to be able to perform the rollback should the transaction fail.
For this use-case, if the DeleteRelationships either returned a an id of the transaction, which could then be rolled-back by ID, or returned the relationships affected (possibly large), would allow for the rollback to ensure to insert exactly the same data that it attempted to remove initially.
The transaction would then look like:
 	deleted = spicedb.DeleteRelationships([
		relationshipFilter1,
	])
	database.Write(...)
	commit()
rollback:
	spicedb.WriteRelationships([
		deleted.relationships...
	])

or using a Transaction ID:
 	deleted = spicedb.DeleteRelationships([
		relationshipFilter1,
	])
	database.Write(...)
	commit()
rollback:
	spicedb.Rollback(deleted.transactionID)

This issue becomes more pronounced the moment multiple spicedb resources may need to be deleted. For example, if the model contains organizations which own projects which own resources, then the deletion of the organization requires all sub-resources to also be updated.

Hey @easyCZ 👋🏻 thanks for reporting. This is a recurring topic - exposing transaction semantics via the API for folks to solve the "dual-writes" problem. I'm afraid that even with such semantics in place you wouldn't have transactional guarantees, because you are addressing two different transactional boundaries, and requires some sort of coordination between the two systems of record (e.g. two-phase commit via OpenXA). For example, nothing prevents a rack failure from abruptly terminating the process right between your DB commit and SpiceDB commit, leaving the system in an inconsistent state.
At the risk of sounding like a broken record, the fine folks at Red Hat wrote at length about patterns to handle the dual-write problem across multiple transactional boundaries.
Perhaps you are aware of all of this and actually accept the fact inconsistencies may happen across systems of record, and in that case, I can understand the convenience of an API that helps folks undo a mutation and spare the need to construct the reverse operation (which may not be trivial depending on the application design). After all, you want to treat SpiceDB the same way you treat any other database, where these API operations are commonplace.

+1 on our end. I would add that the challenges with rollback aren't confined to deletes only. Any mutations we perform might potentially need to be rolled back if the transaction to our application DB fails/rolls back.
@vroldanbet I appreciate your concerns wrt distributed transactions. I think you hit the nail on the head when saying that inconsistencies may happen, but the probability of these distributed transactions failures is probably orders of magnitude lower than just one of them failing for whatever reason.
For our use case, we regard spice as a pure projection of our application db. We can always reproduce a consistent state of spicedb from our application db. To that extent, we have written a reconciliation script that we can run periodically to patch over (minor) inconsistencies.
All that said, adding spice-native transactions would help a ton with implementing dual-writes, especially the rollback part of it.

Would really like this feature as well. Perhaps strong transactional guarantees are not necessary here, because as @edorivai mentions the ground truth for all relationships is usually an SQL database, from which SpiceDB relationships can be re-created.
What would be great to have is an ability to revert operations - in a way that when you submit an operation (for example add permissions), you get an operation ID, and SpiceDB keeps the information on this operation in cache for some time. Then, you can call a RevertOperation endpoint, and the operation is reverted.
I think this would be a much more doable option than full transactional guarantees, and can be done without any major changes to SpiceDB architecture - all that is needed is a cache that would store operation information for some time. What do you think, @vroldanbet.
Also, this would mesh great with #315 - you could delete an object and all its "related" resources, and if needed revert the operation without needing to query those resources first.


Google or Facebook auth example

Hi Sahil, This is not an Issue, but I couldnt figure out how to ask a question or make a request.
I LOVE this example you have provided here. I'm pretty hamstrung without adal.js until I stumbled upon your example in your new and TOTALLY awesome O365 course on PluralSight. Fantastic work by the way!
You mentioned that might/could use this library you wrote to provide a Google or some other IDP implementation.
Would you be kind enough to share an example of this on this or another repo?
Other question I thought of whilst watching your module on Electron. Could it be possible to create an Electron app that runs in the PC/Mac/Linux machine tray, that runs on computer start, takes a local claim, contacts an IDP, retrieves token's, and then make available globally to that computers browser sessions. So effectivly providing true Seamless Single Sign On, without the need for ADFS or some other IDP?
Thanks you very  much, love your work, and appologies for posting, here I just realized I should post this message in the pluralsight chat/discussion area.
Kind Regards
Nigel Dewar

Nigel,
Glad you like this. I am in the process of updating this for RC6, and also adding google API support. This will also be published on angular.io.
Re: your electron question - what do you mean by "takes a local claim"?
Posting here is fine, too many channels for me to follow up on :-) but I try to answer the PS discussions too. I need to (find time) update my site .. ugh! Glad you like the new PS course.
S

.. thinking more about your req: re: the electron app. "the takes a local claim" .. instead of that .. look at my AzureAD pluralsight course - specifically where I talk about a daemon. You can store an app secret or client side cert, and use that to accomplish what you are trying to achieve.

That sounds really good.
Thanks very much for the update, really exciting to hear.
Cheers
From: maliksahil<EMAIL_ADDRESS>Sent: Monday, 5 September 2016 8:37 p.m.
To: maliksahil/Angular2AzureAD<EMAIL_ADDRESS>Cc: nigel-dewar<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [maliksahil/Angular2AzureAD] Google or Facebook auth example (#2)
Nigel,
Glad you like this. I am in the process of updating this for RC6, and also adding google API support. This will also be published on angular.io.
Re: your electron question - what do you mean by "takes a local claim"?
Posting here is fine, too many channels for me to follow up on :-) but I try to answer the PS discussions too. I need to (find time) update my site .. ugh! Glad you like the new PS course.
S
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/maliksahil/Angular2AzureAD/issues/2#issuecomment-244715898, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AI94WBmCur-w6tq2agmR_yHgb3zkAHG0ks5qm_DWgaJpZM4J08hQ.

Thanks for reply on this.
I did watch your course and the module on using a daemon.
That sounds good, but with this process,  I am not sure how I would claims for an individual user.
I mean, I know I would be able to authenticate ‘the user’, but I am not sure, how I would be able to say, authenticate and get back claims for say ‘’sally jones”. Do you know what I mean?
I’ll go back and watch the daemon module again.
Cheers
From: maliksahil<EMAIL_ADDRESS>Sent: Monday, 5 September 2016 8:41 p.m.
To: maliksahil/Angular2AzureAD<EMAIL_ADDRESS>Cc: nigel-dewar<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [maliksahil/Angular2AzureAD] Google or Facebook auth example (#2)
.. thinking more about your req: re: the electron app. "the takes a local claim" .. instead of that .. look at my AzureAD pluralsight course - specifically where I talk about a daemon. You can store an app secret or client side cert, and use that to accomplish what you are trying to achieve.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/maliksahil/Angular2AzureAD/issues/2#issuecomment-244716574, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AI94WISwjXipa-Zg-qbEXWdkY6qIdDgwks5qm_G6gaJpZM4J08hQ.

Aha! So, you DO need user identity also - you can't do that unless the user authenticates atleast once. So assuming you can do that, you'd have to -
Authenticate

Get access token
Get refresh token

.. and subsequently use that refresh token to gain new access tokens.
And if this logic is inside the systray app - then you can launch the app on system startup in systray/dock, and party on.
Now, unfortunately, nodejs adal.js does not implement this protocol. So you'll have to implement it yourself, and you'll also have to write logic to keep the refresh token safe.

Awesome! Now at least I know it could be possible I will give it a crack. For me it's fine for a user to log in once and then handle in electron the perpetual login using refresh thereafter. I think it could be an ultra cheap and easy to deploy alternative to adfs moving into the oidc driven world ahead.
With this angular2 Azure AD library, this uses the implicit flow right? I realized this as was getting azure login errors and then went and changed the manifest file to allow implicit.
I noticed with your Electron example in your new course you used Authorization code flow.
Is this because it's not possible to use auth code flow in a pure js only web app?
I've done heaps of research and know how implicit and auth code works and the differences,  what I am yet to understand is, is one better over the other? I know this is likely a question for stack exchange but I'd thought I'd ask you as you have a really good working knowledge of these technologies and I'm sure you likely have lots of experience to back up your opinions on this matter.
Thanks heaps for your kindness answering these questions. I promise I'll not badger you on this as I am sure you have more than plenty to do.
Cheers
Nigel.
Sent from Samsung Mobile
-------- Original message --------
From: maliksahil
Date:06/09/2016 19:04 (GMT+10:00)
To: maliksahil/Angular2AzureAD
Cc: nigel-dewar , Author
Subject: Re: [maliksahil/Angular2AzureAD] Google or Facebook auth example (#2)
Aha! So, you DO need user identity also - you can't do that unless the user authenticates atleast once. So assuming you can do that, you'd have to -
Authenticate

Get access token
Get refresh token

.. and subsequently use that refresh token to gain new access tokens.
And if this logic is inside the systray app - then you can launch the app on system startup in systray/dock, and party on.
Now, unfortunately, nodejs adal.js does not implement this protocol. So you'll have to implement it yourself, and you'll also have to write logic to keep the refresh token safe.

You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/maliksahil/Angular2AzureAD/issues/2#issuecomment-244892331, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AI94WCeGshLZ7cJ40weNUMuqSeRDTXShks5qnSymgaJpZM4J08hQ.

Authcode is possible in a web app also, but the issue there is, the refresh token (well it's ID_token) is valid for only 30 minutes. Usually refresh tokens are supposed to be good for 6 months/12 months etc.

Ohhhhhh!  Seriously!
Ok I understand now. Thanks so much for this, it's funny that in all the courses I've watched, I must have missed this or either that or this fact is not often discussed.
Thanks heaps for this Sahil. Appreciate it alot.
Sent from Samsung Mobile
-------- Original message --------
From: maliksahil
Date:06/09/2016 21:34 (GMT+10:00)
To: maliksahil/Angular2AzureAD
Cc: nigel-dewar , Author
Subject: Re: [maliksahil/Angular2AzureAD] Google or Facebook auth example (#2)
Authcode is possible in a web app also, but the issue there is, the refresh token (well it's ID_token) is valid for only 30 minutes. Usually refresh tokens are supposed to be good for 6 months/12 months etc.

You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/maliksahil/Angular2AzureAD/issues/2#issuecomment-244924038, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AI94WK6tq0Jomt1_Hfp93h26bAH_mnB6ks5qnU_UgaJpZM4J08hQ.


problem with WebProcess

right after i push the directory from my computer to my pi, i keep getting this error, and it doesn't stop. any ideas on why this could be happening?

ha! never mind. i forgot to set my gpu mem variables. oops!


Can't report anymore

4chan changed the report system, a possible fix is to redirect the user from the app to the website when they want to report something

Should be fixed.


Fix top.xml and remove hard coded value for ${java8_compiler}

Copying Lan's comment in  https://github.com/AdoptOpenJDK/openjdk-systemtest/pull/89#pullrequestreview-109277468 as description of this PR:
We should not hard code ${java8_compiler}, what about java9, 10, 11?
I think the code works because in top.xml, it happens to set java8_compiler and java9_compiler to java.home if it is not defined.
For example, the output for jdk10 testing is very confusing:
17:55:24      [echo] java8_home set to /home/jenkins/workspace/openjdk10_j9_systemtest_x86-64_linux/openjdkbinary/j2sdk-image/bin/..
17:55:24      [echo] java8_compiler set to /home/jenkins/workspace/openjdk10_j9_systemtest_x86-64_linux/openjdkbinary/j2sdk-image/bin/javac

https://ci.adoptopenjdk.net/view/System tests/job/openjdk10_j9_systemtest_x86-64_linux/6/consoleFull
top.xml should be fixed. There is no need to have separate variables for java compiler.

The fix for this should be included in the PR for https://github.com/AdoptOpenJDK/openjdk-systemtest/issues/132


Insiders build crashes immediately on launch

VSCode Version:
OS Version: MacOS High Sierra

When running in terminal with verbose mode, it gives this error:
[main 16:42:52] Could not delete obsolete instance handle { Error: ENOENT: no such file or directory, unlink '/Volumes/MacData/MovedUsers/seanlatimer/Library/Application Support/Code - Insiders/1.24.0-insider-main.sock'
    at Object.fs.unlinkSync (original-fs.js:1091:18)
    at /Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/code/electron-main/main.js:495:334
    at Object.g [as _notify] (/Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/code/electron-main/main.js:83:170)
    at Object.enter (/Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/code/electron-main/main.js:86:418)
    at n.Class.derive._oncancel._run (/Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/code/electron-main/main.js:87:719)
    at n.Class.derive._oncancel._error (/Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/code/electron-main/main.js:87:236)
    at Object.onceWrapper (events.js:293:19)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:191:7)
    at emitErrorNT (net.js:1283:8)
    at _combinedTickCallback (internal/process/next_tick.js:80:11)
    at process._tickCallback (internal/process/next_tick.js:104:9)
  errno: -2,
  code: 'ENOENT',
  syscall: 'unlink',
  path: '/Volumes/MacData/MovedUsers/seanlatimer/Library/Application Support/Code - Insiders/1.24.0-insider-main.sock' }
[main 16:42:52] Error: ENOENT: no such file or directory, unlink '/Volumes/MacData/MovedUsers/seanlatimer/Library/Application Support/Code - Insiders/1.24.0-insider-main.sock'
    at Object.fs.unlinkSync (original-fs.js:1091:18)
    at /Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/code/electron-main/main.js:495:334
    at Object.g [as _notify] (/Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/code/electron-main/main.js:83:170)
    at Object.enter (/Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/code/electron-main/main.js:86:418)
    at n.Class.derive._oncancel._run (/Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/code/electron-main/main.js:87:719)
    at n.Class.derive._oncancel._error (/Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/code/electron-main/main.js:87:236)
    at Object.onceWrapper (events.js:293:19)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:191:7)
    at emitErrorNT (net.js:1283:8)
    at _combinedTickCallback (internal/process/next_tick.js:80:11)
    at process._tickCallback (internal/process/next_tick.js:104:9)
[main 16:42:52] Lifecycle#kill()

Does this issue occur when all extensions are disabled?: Yes

@SeanLatimer Does this reproduce after a system restart?

Removing these 2 folders
~/Library/Application Support/Code - Insiders
~/.vscode-insiders

Basically making it a fresh install, it will launch once.
Any subsequent attempts to launch then gives this error, reboots etc don't cause any change.

Removing these 2 folders
~/Library/Application Support/Code - Insiders
~/.vscode-insiders

Basically making it a fresh install, it will launch once.
Any subsequent attempts to launch then gives this error, reboots etc don't cause any change.

Interesting. Does a /Volumes/MacData/MovedUsers/seanlatimer/Library/Application Support/Code - Insiders/1.24.0-insider-main.sock file exist? Is that a special file system, in any way?

The file does not exist, no.
Other than my user directory being on another HDD, there's nothing special about it.

This might be #20567.
What is the full contents of /Volumes/MacData/MovedUsers/seanlatimer/Library/Application Support/Code - Insiders?
Can you try choosing a shorter path for your user data dir? Use code --user-data-dir PATH to try this out. Does it work there?>

tree output of the directory: https://hastebin.com/xadawilice.txt
It appears to be an issue with long paths.
In the default directory, I was getting these:
1.24.0-insider-main
1.24.0-insider-shar

I manually renamed them to:
1.24.0-insider-main.sock
1.24.0-insider-share.sock

After that, it starts up with no issues. Until a fix is available, this is a workaround for the issue. Although it would need to be repeated every time a new version is released.

YES! That is exactly #20567.
Interesting that renaming them works for you. Can you now try to delete them and start Code... does it start OK?
Unfortunately, having your home directory be /Volumes/MacData/MovedUsers/seanlatimer will hit this all the time. I suggest to use a different user-data-dir with --user-data-dir. Or maybe move your home folder to a shorter path...?

After deleting them, Code creates them with the truncated names and it's back to crashing.
It's not a huge issue, now that I know it can be fixed on my end.
I'll close this since a remedy has been found, appreciate the help!

I have a similar, my VScode Insiders is creating 1.24.0-insider-shared.soc instead of 1.24.0-insider-shared.sock and I need to rename every time even with a full reinstall. OSX High Sierra


[Setup] Allow preserving current Proton installation

Adds a --preserve script option, that when used, does the following

Creates a custom copy of proton in ~/.local/share/Steam/compatibilitytools.d/ when using the install command
Deletes the custom copy entirely when using uninstall

Symlinking to the custom copy works as it does when modifying the existing installation.

Thanks!


Update Gallery demo app themes for Material3 compatibility

@QuncCccccc or @HansMuller can you take a look at this on please?