Refactors how authentication providers are managed.

This PR accomplished two main goals:

Make it easier to add new ways of adding and manging authentication providers
Decouples our frontend code from the PKCE auth flow

Together, both of these changes should make it much easier to enable and support different auth flow, including disabling auth altogether. See #95
We also introduce an authentication plugin system via the AuthenticationProviderPlugin base class. This is a simple interface that additional backend authentication flows can leverage. From a user's perspective swapping out authentication providers should be as easy as modifying the new config variable DISPATCH_AUTHENTICATION_PROVIDER_SLUG (we keep pkce as the default, setting this to "" disables all auth).
cc @willbengtson

I have a branch based on this deployed at https://master-7rqtwti-2hounbfgfsnu6.eu-3.platformsh.site/dashboard with authentication disabled if people want to try it out and give feedback.

@diogomatsubara that's awesome! We were thinking about hosting it somewhere for folks to play with but hadn't got a chance. I'm also planning to generate some fake data so the demo is a bit more interesting.

@kevgliss if you land some fake data I'd be happy to keep that instance updated for others to play with. I been trying to put some data in manually but that's get tedious really fast. :-)


Read files from a folder, and output to one

This will also allow to speed things up by a LOT, by caching resized pictures only once and saving in bulk
possible implementations could allow input images to be in an input folder (this will completely ignore subfolers or ordering, since it's not important at all when working with a folder of images in the first place) and written in an output folder
eg input/img1.png -> output/img2.png or even input/output/img2.png, since input images would not be searched recursively

might be useful for implementation purposes
[load folder] < {[load single] -> [calculation]} > [drawing] < [save image]
(producer <> consumer)
https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-channel


How inject dependency by Constructor with parameter if the parameter is not available

Let's have a simple Logger:
class LogString1 @Inject constructor(var text: String) {
    fun execute() {
        Log.v(this.toString(), text)
    }
}

When I inject the LogString1, I need to have text:String available. How to do if it is not available ?
Without Injection
class Activity2 : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        var activityScope = Toothpick.openScopes(application, this)
        activityScope.installModules(SmoothieActivityModule(this), Activity2Module(this))
        Toothpick.inject(this, activityScope)

        setContentView(R.layout.activity_1)

        fab.setOnClickListener { view ->
            LogString1(Math.random().toString()).execute()
        }
    }
}

I didn't find any way to do it cleanly
Only by doing that:
class LogString @Inject constructor() {

  var text: String? = null

    fun execute() {
        text?.let {

        Log.v(this.toString(), text)
        }
    }
}

With the following activity
class Activity2 : AppCompatActivity() {

    @Inject
    lateinit var log : LogString

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        var activityScope = Toothpick.openScopes(application, this)
        activityScope.installModules(SmoothieActivityModule(this), Activity2Module(this))
        Toothpick.inject(this, activityScope)

        setContentView(R.layout.activity_1)

        fab.setOnClickListener { view ->
            log.text = Math.random().toString()
            log.execute()
        }
    }
}

Is there a better or more elegant way to do that, as I think this is a common case ?

There are basically 2 things you can do, and this is not related to TP per say but more to DI. Basically all DI engines can only figure inject parameters if they know how to create these parameters (either there is a binding or there is a constructor that let's the DI lib create this entity).
The 2 workarounds are:

Assisted injection: (Guice has a longer explanation on the net)

class Foo {
  String s;
  Foo(String s) {
   ...
  }
}

//you have to create a factory yourself to handle
//the params that DI can't guess
class FooAssistedFactory {
   Foo createFoo( String s) {
     return new Foo(s);
   }
}

//then use it:
 @Inject FooAssistedFactory factory;
 ...
 factory.createFoo("Hey !");

make Foo a new DI root:

 class Foo {
  String s;
  @Inject OtherDep dep;

   Foo(String s, Scope scope) {
     this.s = s;
     //if you need other dependencies to be injected
     TP.inject(this, scope);
   }
 }

//use it
new Foo("hey !"); //<-- would inject other dependencies.

I closed the issue as it's pretty much all what there is to say, but feel free to reopen if you need more in-depth explanation about it.

@stephanenicolas thanks for the reply, that's clearer in my mind now.

As I can feel, 1/ may probably be used in more general case to 2/, because it may happen needing injection of a couple of object, so I assumed 2/ in not anymore possible, isn't ?

Without any experience on this, but does 1/ is not such bound that a DI framework like TP could handle it by itself ? with something like:
@AssistedInjected(String) Foo fooAssistedFactory
and TP would generate the factory. Doesn't make any sens ?

@stephanenicolas
in addition when you say:

either there is a binding

it would not solve the fact that the "String s" is not available at the inject time. Should we /How ca we  postpone the injection for a dep, like in my exemple:
class Activity : AppCompatActivity() {

   @Inject
    lateinit var log : LogStringBinding

   var text : String

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        var activityScope = Toothpick.openScopes(application, this)
        activityScope.installModules(SmoothieActivityModule(this), object : Module() {
            init {
                bind(LogStringBinding::class.java)
                bind(String::class.java).withName("random").toInstance(random)
            }
        })
        Toothpick.inject(this, activityScope)

        setContentView(R.layout.activity_1)
fab.setOnClickListener { view ->
           text = Math.random().toString()
           // now text is available, injection can happen safely
          Toothpick..... // inject dep relative to "random"
           log.execute()
        }

and the LogString
class LogStringBinding @Inject constructor(@Named("random") var text: String) {

    fun execute() {
        Log.v(this.toString(), text)
    }
}

Just to help other here is the link about assistedInject with Guice https://github.com/google/guice/wiki/AssistedInject
I also read in the TP FAQ that it will probably not support AssistedInjection natively.

TP doesn't offer assisted injection and we don't plan to support it as we want to stick to JSR 330 and limit the complexity of the library.


unknown attribute: post_id

When trying to fetch comments I get the following error :
ActiveRecord::UnknownAttributeError in PostsController#create_comment
unknown attribute: post_id
Extracted source (around line #22):
    comment = @post.comments.create <<--- Where it crashes
    comment.author_name = params[:name]
    comment.author_email = params[:email]
    comment.comment = params[:comment]

This happens right after using the rails g comments command and adding acts_as_commentable to Post. Any idea ?

Also
irb(main):009:0> Post.first.comments
  Post Load (0.6ms)  SELECT  "posts".* FROM "posts"   ORDER BY date ASC LIMIT 1
  Comment Load (0.3ms)  SELECT "comments".* FROM "comments"  WHERE "comments"."post_id" = ?  ORDER BY created_at ASC  [[nil, 5056]]
SQLite3::SQLException: no such column: comments.post_id: SELECT "comments".* FROM "comments"  WHERE "comments"."post_id" = ?  ORDER BY created_at ASC
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: comments.post_id: SELECT "comments".* FROM "comments"  WHERE "comments"."post_id" = ?  ORDER BY created_at ASC

Found it ! That was all my fault :sweat_smile:
In models/post.rb, I had forgotten to remove a line from our old comment integration :
class Post < ActiveRecord::Base
    include ContentModule

    acts_as_commentable

    # has_many :comments # <----- wasn't commented
    has_and_belongs_to_many :authors
    has_and_belongs_to_many :categories
    has_and_belongs_to_many :tags

:sob:


Enchanting books in quests dosn't count

What is your Quests version / build number (do not say "latest")?
4.1.1
Describe the problem and how to replicate it. Any console errors to post using a pastebin?
I've created a quest where a player had to enchant a book to "Sharpness I". However after enchanting the book with sharpness I in the enchantment table, it dosn't get marked as "done" in the quest.
For the quest I used the option "enchant object" where I selected an enchanted book with sharpness I. That failed, as I explained above. After that I tried it with a normal book and choosed an enchantment (Damage All I) from the build in menu through "add enchantment". This also wasn't working.
At the end I once again selected an already enchanted book with "Sharpness I", but this time also choosed "Damaga All I" through "add enchantment". Once again, it wasn't working.
Is there any way in the current version to let other players enchant books in a quest with the enchantment table?
If applicable, can you provide an example quest from quests.yml using a pastebin?
This is the example that I used at the beginning, before taking a deeper look into the issue and testing around. As I've explained I selected an enchanted book with "Sharpness I" under "items to enchant".
quests:
custom001:
name: Test
ask-message: Test
finish-message: Test
npc-giver-id: 1
requirements:
quests:
stages:
ordered:
'1':
items-to-craft:
- ==: org.bukkit.inventory.ItemStack
v: 2730
type: BOOK
amount: 46
- ==: org.bukkit.inventory.ItemStack
v: 2730
type: BOOKSHELF
amount: 15
complete-message: Verzaubere nun das übrig gebliebene Buch auf Schärfe 1
und bringe es anschließend dem Auftraggeber, um die Quest abzuschließen.
'2':
items-to-enchant:
- ==: org.bukkit.inventory.ItemStack
v: 2730
type: ENCHANTED_BOOK
meta:
==: ItemMeta
meta-type: ENCHANTED
stored-enchants:
DAMAGE_ALL: 1
npc-ids-to-talk-to:
- 17
rewards:
items:
- ==: org.bukkit.inventory.ItemStack
v: 2730
type: EXPERIENCE_BOTTLE
amount: 21
money: 3000
quest-points: 1
planner:
cooldown: 604800
override: false
options:
allow-commands: true
allow-quitting: true
ignore-silk-touch: true
use-parties-plugin: true
share-progress-level: 1
same-quest-only: true
share-distance: 0.0
handle-offline-players: false

@Sl4sh3z Thanks for the report. Please try https://ci.codemc.io/job/PikaMug/job/Quests/278/


Problem with SQLite

Migrating: 2016_07_24_060017_add_slug_to_categories_table
In Connection.php line 671:
SQLSTATE[HY000]: General error: 1 duplicate column name: slug (SQL: alter table "categories" add column "slug" varchar not null)
In PDOConnection.php line 66:
SQLSTATE[HY000]: General error: 1 duplicate column name: slug
In PDOConnection.php line 64:
SQLSTATE[HY000]: General error: 1 duplicate column name: slug
What I did:
Fresh install of demo with sqlite as DB
Backpack, Laravel, PHP, DB version:
All latest versions

This is a Laravel problem. Same type of error occurs when trying to create a json type column with MariaDB 10.1. You can try upgrading SQlite to the latest version, maybe that fixes it.

I am already on latest sqlite v3
On Fri 12 Jun, 2020, 8:25 PM martijnb92<EMAIL_ADDRESS>wrote:

This is a Laravel problem. Same type of error occurs when trying to create
a json type column with MariaDB 10.1. You can try upgrading SQlite to the
latest version, maybe that fixes it.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Laravel-Backpack/CRUD/issues/2928#issuecomment-643316539,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACSGHWCNPWLQBKDW353E4F3RWI6XPANCNFSM4N3TAT2A
.

rajan@saelifebook:/usr/bin$ sudo apt upgrade sqlite3 Reading package lists... Done Building dependency tree        Reading state information... Done sqlite3 is already the newest version (3.31.1-4ubuntu0.1). Calculating upgrade... Done 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

rajan@saelifebook:/usr/bin$ sudo apt upgrade sqlite3
Reading package lists... Done
Building dependency tree
Reading state information... Done
sqlite3 is already the newest version (3.31.1-4ubuntu0.1).
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Are you sure slug column does not exists when altering the table ?
does a php artisan migrate:refresh solve it ?

A fresh install of sqlite and backpack solves the issue.
Thanks for your time here.

A fresh install of sqlite and backpack solves the issue.
Thanks for your time here.


start -> star because one template make

everything have it OwO

found another start - > star problem

Thanks! Sorry for the delay


Document the cwd Attribute

Feature Description
According to this reddit post, there's an undocumented cwd attribute for command tasks.
Describe The Solution You'd Like
Documentation for this attribute.

thanks @anlumo for reporting
added this section: https://github.com/sagiegurari/cargo-make#usage-setting-up-working-directory


[Bug] When I enter a world, the game crashes.

Crash Log: https://mclo.gs/CYmC1Zj
accessories-neoforge-1.0.0-beta.22+1.20.1
accessories_tclayer-3.8.1-beta.3+1.20.1
accessories_cclayer-7.4.0-beta.4+1.20.1
eeeabsmobs-1.20.1-0.94.jar

Ah, forgot one method within CuriosApi... my bad. Should be a simple fix on my part

Pushed fix for such that corrects the mistake within the beta backport


Add a YML flag to hide posts that are not ready to be live.

No longer necessary; using branches instead


Can we make err_state_st private in 3.0 ?

Does the project feel it is okay to make the err_state_st structure private in 3.0?  Tried to do it in https://github.com/openssl/openssl/pull/9082 was was turned away.  Wondering if thoughts changed now?

@kroeckx, you were the more knowledgeable last time this was discussed.

@kroeckx, you were the more knowledgeable last time this was discussed.

You need to deprecate it, and at some later point we can then make it private or remove it.

You need to deprecate it, and at some later point we can then make it private or remove it.

It looks like @levitte already deprecated the one function that uses it.  So internally the code could be rewritten.  Tempting.

It looks like @levitte already deprecated the one function that uses it.  So internally the code could be rewritten.  Tempting.

Well, deprecation is OK, but that won't make the structure more private...

Well, deprecation is OK, but that won't make the structure more private...

I'm all for deprecating this.  It can be made private in 4.0.

I'm all for deprecating this.  It can be made private in 4.0.

I think this can be closed.  At least the "won't block 3.0" label should be removed because it the project decided that the answer for 3.0 is "no"

Hmm, actually during the OTC meeting on Tuesday we did not say the answer for 3.0 is "no". Otherwise we would assign this to Post 3.0.0 milestone. So actually if someone contributes the PR and it is not overwhelmingly complex, I think it will be considered and potentially merged. Of course it would have to happen before beta1 is out.

The ERR_get_state function is deprecated for 3.0  I believe the OTC decided, although perhaps informally, that it could not be removed without being deprecated first.   Since the function is still visible, the datatype must be visible.  I recall @kroeckx was among those saying it must be deprecated first.

I think you should put a "post 3.0" tag on this.

Closing this. The one function that uses the datatype is deprecated and will presumably go away when the rest of the 3.0 deprecated functions go away.  There's nothing special about err_state_st other than it is horribly bad sad (parallel arrays rather than a single array of struct's) and therefore sticks in my craw :)


Error triggered seconds after running this tool : panic: runtime error: invalid memory address or nil pointer dereference

Hi there,
I have configured everything as described, however when i run this tool by this command :

docker run -p <IP_ADDRESS>:3124:3124 -v ./data:/app/data docker.io/nwesterhausen/domain-monitor

It closes just after running for couple of seconds with this error :

Can also confirm I'm now receiving the same error running the program locally via Cygwin/Windows, although it seems to be getting triggered by other errors and I didn't see the panic at all for the first 2 or 3 runs of main.exe. For example, I had accidentally saved the SMTP email as<EMAIL_ADDRESS>and sending  the test email caused an error. Changing it again from the GUI doesn't seem to make it take affect, nor can I see an entry for it in config.yaml, so it's still trying to send test emails to the invalid emails, and this seems to be causing the errors that cause the panic.


CocoaPods flow step 2 - don't pod install unless project has plugins

For #9580
Reverts #9719
Only run pod install if the user uses pulls in pods via pub and plugins.
Also removes all references of the channel integration test's dependencies on cocoapods since the artifacts checked in were partial and wouldn't build without a first pod install even though it doesn't actually use cocoapods. (some context/assumptions in #9621)

cc @cbracken we talked about some related stuff

cc @jakobr-google


Postgres error on backticks

Support for Postgres database.

Prerequisites

[ ] Are you running the latest version?
[ ] Are you reporting to the correct repository?
(enso is made of many specialized packages: https://github.com/laravel-enso)
[ ] Did you check the documentation?
[ ] Did you perform a cursory search?

Description
Postgres is producing an error on backticks(`) escaping.
Steps to Reproduce
Browsing Menu list
Expected behavior
Menu list will display properly
Actual behavior
Error encountered.

I just did a complete refactor of all the "reserved words" named columns - there were more than what you reported.
The change is breaking, so you can either start with git clone again, or follow the upgrade steps from the Changelog.
If you find any other problems with PostgreSQL please open another issue.

Hi @aocneanu thanks much. All your work is greatly appreciated!

If you really like Enso, or even parts, support it by starring.


New release of Senzing will require a new library path in the env

LD_LIBRARY_PATH will need /opt/senzing/g2/lib/jre/lib/server

Change to upcoming Senzing release removes the need for this.


[1.9] Add documentation about specifying subresources in policy

Description
This issue is in regard to this document: https://kyverno.io/docs/writing-policies/match-exclude/
Support for subresources for validating policy is being added at https://github.com/kyverno/kyverno/pull/4916
The New supported format for specifying Kind in policy is:
0 '/':

'*'
Kind
Kind.Subresource

1 '/':

(Version|*)/Kind
(Version|*)/Kind.Subresource
Kind/Subresource

2 '/':

(Version|*)/Kind/Subresource
Group/(Version|*)/Kind
Group/(Version|*)/Kind.Subresource

3 '/':

Group/(Version|*)/Kind/Subresource

Another thing to be mentioned in docs is background scanning is not allowed for subresources. The user will get an error while creating a policy if they enable background scanning for subresources.

Documentation Changes are present at https://gist.github.com/Vyom-Yadav/7f311362372c6d69549103996c2a788c


conjure-up enable

This allows this bundle to be deployed via conjure-up and labels this as a spell. Additional tasks are also performed once deployment is complete. Specifically, running the smoke-tests and providing the user with a URL to view Ganglia UI.
You can test this yourself by checking out this branch and adding the following:
$ sudo apt-add-repository ppa:conjure-up/daily-git
$ sudo apt-add-repository ppa:juju/devel
$ sudo apt update
$ sudo apt install conjure-up
$ cd <location of checked out branch>
$ conjure-up -d .

Logs are stored in /var/log/conjure-up in this case it would be /var/log/conjure-up/bundle-apache-processing-mapreduce.log.
Once this is approved and uploaded to the charm store we have a Makefile target you can run to update the necessary metadata information for this bundle to be accessible by conjure-up <spell>. For example,
make metadata
<does charm set...>

Then users can do keyword searches for spells:
conjure-up bigdata
conjure-up hadoop
conjure-up mapreduce

These keywords will search the relevant tags and present the user with a list of possible spells they can deploy.
Signed-off-by: Adam Stokes<EMAIL_ADDRESS>

LGTM, @battlemidget's steps worked great.  Nice job!

rev3 contains these changes:
https://jujucharms.com/apache-processing-mapreduce/3


Incorrect type of deletion

Application sends items to recycle bin instead of deleting permanently, this affects my OCD in the most amazingly scary way every time i run the updater

Its a feature not a bug. As I do not fully trust what SkyNet does with ur
files Im instructing it to place removed files in the recycle bin.

OCD still is killing me though :/

Left the recycle bin option for debugging purposes or for those that are paranoid :smiling_imp:
Edit %appdata%\SAMUpdater\Settings\settings.ini if you would like the updater to delete files to Recycle bin instead of the default behavior of permanently deleting files.


"Modifying natives...isn't it evil?" Missing Major Point

Your "Modifying natives...isn't it evil?" does a great job of explaining the pros/cons of using a native object modifying library.  However, it leaves off a HUGE reason not to do what you guys are doing: separability.
If you start using Sugar today, and then a year from now want to stop (you don't need its features anymore, you find a better library, you quit and someone new inherits your code, etc.), there's no way to separate out the Sugar-using code from the non-Sugar-using code.
If you want to remove jQuery you just grep for $ in your code, but if you want to remove Sugar you have to go through every feature in the library grepping for (say) .format( to see if any code uses the date formatting feature.  And of course there may well be lots of other .format( code in your codebase, which means a mass find/replace is impossible.

I don't see how this is different than with jQuery, really. "You remove $ in your code"? Then... You don't have code anymore? You just rewrite all your code not to use it? Doesn't seem much better

Well it's an interesting point (first time I've heard this one). As @vendethiel points out, this isn't necessarily fundamentally any different from a library like jQuery, depending on how you write your code. However, I'll grant that if you're making a concerted effort to put separability first, then you're right that it would be harder than other libraries to do a search/replace on later. I would hardly consider it a "major" issue with the page, however, first because this has as much to do with Sugar being a utility library as it does with extending natives, but also it seems a bit common sense, no? Also, this is setting aside the larger point that if you want to stop using Sugar in the future you're almost certainly going to have to do a rewrite that would require you to look at methods individually anyway. This would be as true of Lodash or Underscore as of Sugar.
At any rate, whether or not you accept this answer I fortunately don't have to take a stance on this one, as v2.0.0 will not modify prototypes by default anyway. If you are putting separability first then you can use methods through the Sugar global (just like Lodash or Underscore) and you should be able to search/replace no problem!

I don't see how this is different than with jQuery, really. "You remove $ in your code"? Then... You don't have code anymore? You just rewrite all your code not to use it? Doesn't seem much better
This isn't necessarily fundamentally any different from a library like jQuery

Let's say you want to convert from JQuery to a few micro-libraries.  You grep for \$.ajax to find the places that will use your new AJAX replacement library.   Then you grep \$\(.*\)\.on and \$\(.*\)\.off  to find places to replace with your events library, and whatever is left is pretty much what you need to replace with your DOM manipulation library.  Plus, before you even start looking at micro-libraries, you can run those greps and at least know, roughly, how much work it will be to replace jQuery (or whatever it is you want to replace).
Conversely, with native object-manipulating libraries you have to grep for every method you ever remember using.  If you can't remember them all or you inherited the code, you have to grep for every method name in the library.  Plus, if those methods overlap existing methods, you have to determine whether the code is even using the manipulating library, or whether it relies on the original implementation.
So I'm not trying to say jQuery name-spacing itself with $ magically makes it easy to replace.  What I'm saying is that manipulating native objects makes it far more difficult to even understand when/where/how much your'e using the library, and if you do want to remove it that's more difficult too.

If you are putting separability first then you can use methods through the Sugar global
This is a critique of the "Modifying natives...isn't it evil?" page.  Obviously using a global variable for Sugar doesn't apply to that page.

No, that's just plain wrong. When you're using jQuery, you need to check for every call that happened around a $. You need to catch var $x = $(a); $a.hover(...).data(...). You need to make sure you're aware of the semantics you're changing, e.g.: .data in jQuery doesn't reflect back on the DOM when you change a property. You need to find every place where a jQuery element might have gone to, and find which calls were made on those.
That's equally hard to finding which calls were made on overloaded natives.

So first off, just to be clear, we agree that there are two parts to refactoring a library out of a codebase, and the second part is hard no matter what, right?  In other words you need to replace the old library, and nothing makes that easy, but you also need to find all the places to replace, and we're disagreeing over whether using a namespace or not matters for that.
In other words, you're arguing that if you inherit a codebase that uses both jQuery (or any name-spaced library) and Sugar, it will be just as easy for you to find all of the:
 $('#a').remove();

lines as it will be for you to find all of the:
[1,2,3].remove(3);

lines.  Because both could be:
var $a = $('#a')
$a.remove();

var a = [1,2,3];
a.remove(3);

But here's the difference: if I grep for $( I will find 0 false positives.  I might not immediately find $a.remove();, but unless I'm passing jQuery variables between modules for some odd reason, the definition of $a will be just a few lines up (and even if it is passed between modules, there's still $a = $('#a') line somewhere I can find by grepping, and then I can follow all the places that use it, in the same module or not).
Conversely, if I grep for remove( I'm going to find every remove call in the code.  I'll find that $a.remove() line, I'll find document.getElementById("foo").remove(0);, and I'll find any other use of any method named remove.  If there was a native DOM method with the same name (there isn't in this case, but there are for other Sugar methods) I'd even find false positives that are exactly someArray.remove(, and I'll have to wade through all of them to find the stuff I need to fix.
But also, and this is the real key, with jQuery or any name-spaced library, I grep once, for $.  Maybe a few extra times if I'm replacing jQuery with multiple libraries.  With Sugar or any non-name-spaced library I have to grep for every method in the library to find all of the places that look Sugar.
That's the difference between the two: grep $ and following where variables get used vs. grep add|all|any|at|... (which is a damn long list in Sugar) and then filtering the results line by line to eliminate the false positives.

That's if you consider everybody prefixes their jquery variables with $, which is far from true. And when you get a false positive, or you miss one, you're going to lose time debugging/finding it.
Etc etc etc. What you want requires flow analysis, and you can't really do that in JS anyway. There are things you can infer, sure, but not all the way, or which types are passed to a function.

Look, at the end of the day you can either be honest with people adopting (the native object form of) your library, or not.  It's your choice.  Nothing I'm going to say can possibly convince you if you don't want to be convinced.
But if you ask some impartial JS programmers, I'm willing to bet that 9 out of 10 will say it's harder to remove a native object library than a name-spaced one.  Being able to grep for a namespace is useful, and you simply can't get that in a native object library.

And on that note, I think I'm going to close this one. We could go on, but in the end I think we can agree (I'm willing to at least) that if your goal is to make your code as "greppable" as possible, then you would probably choose to go through a namespace instead of augmenting natives. Whether that is a realistic or useful goal, as well as whether or not being able to grep has any practical impact on "separating out Sugar-using code" is a separate issue. However in any case v2.0.0 directly addresses this by introducing a namespace, so I feel confident in calling this issue resolved. (Please continue though, really do enjoy the debate :smile:)


Use range/track as target of send to playlist

Description
[See  reference use case]
Proposed Solutions
client feature, to send URI of range / track to the playlist thing
Additional Background
Source: BL workshop notes
Interest: 50%

In looking at the BL workshop notes I'm not seeing what "reference use case" is being referred to. Can anyone provide a fuller description of this use case? What sort of UI are you looking for here? Is this a use case or a proposed suggestion on how playlists ought to be implemented?

Range would need deref URI in order to understand what was to be played from the playlist


Allow colons in Windows host paths

This PR allows calls like wasmtime --mapdir=.:\\?\C:\Users\user\workspace cp.wasm a.txt b.txt.

Note: this notation could lead to errors like --mapdir=C:\some\path (\some\path is valid Windows path). We can change the separator if there's a need. Double semicolon should be safe.

This looks good! Although I'm kinda worried about the possibility of errors you mentioned above, but I think I like the idea of having a :: as a separator. Do you think you could introduce that in this PR, or you reckon we should open another PR with this proposed change?

I think there's no need for another PR with just changed separator. We should decide which one we want (@sunfishcode ?), update this PR and then merge it. If we decide to stay with single colon, then we could think about some warning, but we'd need to think about the check itself (doesn't look at first glance as something easy to exhaustively check).

Another note which I should have put here earlier. I'm still confused.  But it should, as far as I know (the stdlib implementation targeting wasi should consume known prefix of path and translate it to some preopened dirfd). And if that's the case, then we should use '::' as separator, because proposed code in this PR would parse incorrectly call like --mapdir=C:\path:C:\another.

 But it should, as far as I know (the stdlib implementation targeting wasi should consume known prefix of path and translate it to some preopened dirfd).

Agreed: this should definitely work. An interesting question (for WASI standardization) is whether it should be allowed to use Windows-style paths inside a WASI module at all. The alternative being to standardize on *nix-style paths: no drive letters, / as separator. Given that code has to be reasonably portable to compile to WASI in the first place, this doesn't seem like it'd be much of a burden.
As for which separator to use, one option would be to let the user choose: require the separator to also be mentioned at the beginning of the mapping pattern, and maybe at the end:
--mapdir="|/c/path|C:\path|".

@tschneidereit excellent point! As I’ve already discussed offline with @mrowqa, with CraneStation/wasi-common#41 landing, any path with slashes works as expected:
C:/some/path

And:
/some/path

Note that both are equivalent on Windows.
As @mrowqa aptly pointed out, paths with backslashes however are somewhat of a mystery ATM, but we’re currently trying figure it out.

@tschneidereit I also considered standardization of the paths. However, I don't know much about what programs we are currently compiling successfully and what may break, so it's hard for me to favor some specific option.

--mapdir="|/c/path|C:\path|"
That's one good option, but it looks unnatural to me. Having static separator is nicer and I have done actually research which separator should be safe coming up with ::[1]. There's just one rare thing specific to PowerShell that uses ::, so (i) apps probably don't support it, and (ii) shell should inspect the argument anyway.

Other option is to have syntax like --map-from-host=C:\path --map-to-guest=/c/path, but it's long and we probably can't validate it properly with current parser. One time when I was telling @sunfishcode how docopt (current parser) is bugged, he told that we're planning to change it to clap anyway. Taking a quick look at clap we probably can get interface like --mapdir C:\path /c/path --mapdir D:\another /d/another (I haven't dig into the details).
So, I suggest: use temporarily '::' just for the simplicity, and once we change the command line arguments parser, we can try using optional arguments with two values if that's possible.
@kubkon

Note that both are equivalent on Windows.

They are not. Look at [1]. The second one is actually a relative path. Windows remembers current drive letter (which is used if none is specified), and for each drive, it remembers current path (so c:file.txt is equivalent to file.txt if current drive is C:.
[1] https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file

I also considered standardization of the paths. However, I don't know much about what programs we are currently compiling successfully and what may break, so it's hard for me to favor some specific option.

I think we just fundamentally have to do something here. We can't support OS-specific paths, at least for preopened files, i.e. where the path is set before runtime. Whether we also need to normalize all dynamic paths is a different question. If a user gets a list of all files in a directory, do we try to normalize their names? I'm not sure that's really viable.

So, I suggest: use temporarily '::' just for the simplicity, and once we change the command line arguments parser, we can try using optional arguments with two values if that's possible.

That sounds good to me, yes. Thank you for the explanation, and for the research!

I think we just fundamentally have to do something here. We can't support OS-specific paths, at least for preopened files, i.e. where the path is set before runtime. Whether we also need to normalize all dynamic paths is a different question. If a user gets a list of all files in a directory, do we try to normalize their names? I'm not sure that's really viable.

I haven't worked on WASI, so I don't know how exactly it's implemented. @kubkon ?
And I don't understand all of the terminology: is dynamic path a path obtained during runtime, i.e. when program operates on Path structs? Is it host or guest path? Do you mean something specific by normalization of file names? Some kind of remapping their names to potentially something different on host system, or maybe some kind of canonical form just for internal use?

That sounds good to me, yes. Thank you for the explanation, and for the research!

You're welcome :) . I'll update the PR in just a moment.

@tschneidereit I also considered standardization of the paths. However, I don't know much about what programs we are currently compiling successfully and what may break, so it's hard for me to favor some specific option.

--mapdir="|/c/path|C:\path|"
That's one good option, but it looks unnatural to me. Having static separator is nicer and I have done actually research which separator should be safe coming up with ::[1]. There's just one rare thing specific to PowerShell that uses ::, so (i) apps probably don't support it, and (ii) shell should inspect the argument anyway.

Other option is to have syntax like --map-from-host=C:\path --map-to-guest=/c/path, but it's long and we probably can't validate it properly with current parser. One time when I was telling @sunfishcode how docopt (current parser) is bugged, he told that we're planning to change it to clap anyway. Taking a quick look at clap we probably can get interface like --mapdir C:\path /c/path --mapdir D:\another /d/another (I haven't dig into the details).
So, I suggest: use temporarily '::' just for the simplicity, and once we change the command line arguments parser, we can try using optional arguments with two values if that's possible.
@kubkon

Note that both are equivalent on Windows.

They are not. Look at [1]. The second one is actually a relative path. Windows remembers current drive letter (which is used if none is specified), and for each drive, it remembers current path (so c:file.txt is equivalent to file.txt if current drive is C:.
[1] https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file

Ah, that's actually good to know, thanks for clarifying this!

I don't understand all of the terminology:

That's because I'm not an expert in this domain and am probably not using the right terminology myself :) I'll explain what I meant more specifically:

is dynamic path a path obtained during runtime, i.e. when program operates on Path structs?

That's what I meant, yes, as opposed to a preopened path. (See this comment for some more thoughts on how to handle those.)

Is it host or guest path?

Good question! A lot, perhaps all, of this only matters if we're talking about both, really: how do host and guest paths map to each other.

Do you mean something specific by normalization of file names? Some kind of remapping their names to potentially something different on host system, or maybe some kind of canonical form just for internal use?

What I meant by "normalization" is a way to ensure that you're talking about the same path regardless of the host system. Unfortunately I think that's just not possible. For absolute paths, we might be able to handle that by treating them as opaque and just leaving it up to the host to map them to something useful. However, for relative paths used in openat, we're running into unresolvable issues, I think. There are probably more, but case sensitivity is the most obvious example:
Say you have two calls to openat
openat(dir_fd, "FileName");
openat(dir_fd, "filename");

These will result in either the same or two different files being opened, depending on whether the underlying file system is case sensitive or not. That means code that uses both of these—perhaps at entirely different places in the code base—will behave differently e.g. on (stock-) Windows and macOS vs (stock-) Linux.

I think we should land this. If we need to change things later, we always can.
One thing that'd be good is to have some kinds of tests, ideally ones that work across all supported OSs. Not sure how doable that is with out current test harness.

(stock-) Windows and macOS vs (stock-) Linux.

macOS can be made to behave case sensitive too using taskpolicy -x: https://worthdoingbadly.com/casesensitive-iossim/

macOS can be made to behave case sensitive too using taskpolicy -x

What happens if such a process tries to create two files with the names FileName and filename in the same directory?
In any case, that doesn't seem to help us much, given that WASI needs to work across a wide range of different OSs, with different filesystem semantics (and quirks.)

What happens if such a process tries to create two files with the names FileName and filename in the same directory?

I don't know. You also have to have to be root to use taskpolicy -x anyway, so it is not useful in this case.

This PR looks good to me; please also update the documentation in docs/WASI-tutorial.md for the new command-line syntax.

@tschneidereit thank you for the explanation! Now, it sounds familiar - I had discussed parts of it with @sunfishcode and @kubkon (even opened https://github.com/CraneStation/wasi-common/issues/44).
What exactly would like to test? The --mapdir option? Or is it a general idea for testing the "WASI filesystem"? If this is the second case, it might be a good idea to open an issue.
@sunfishcode oh, I missed that one occurrence. I have updated it.

one (probably not very good) solution is to manually check if there are files with the same case-insensitive name and either prohibit creating a differently-cased name, rename to the case on disk, or rename to the case specified in the filesystem call, with a check to bypass the case-checking/case-conversion if there are already 2 or more files with matching names. when opening an existing file, it would always fail if the case doesn't match.
this would be kinda the intersection between case-sensitive and case-insensitive filesystems.

@programmerjake Yeah, that's a good point. We could do some amount of emulation if we wanted a greater degree of portability. However we'd also pay a fair amount of overhead -- if I understand what you're saying, we'd have to try 2N files where N is the number of alphabetical characters, or scanning all the filenames in the directory, and we'd also have to think about racing with other processes.
@tschneidereit I agree that we want tests, though in this case we don't have tests for the old --mapdir function either, and we don't yet have a good way to add them. I expect https://github.com/CraneStation/wasmtime/pull/220 will be a step in a direction which will make this easier, but in the meantime, I think it's useful to land this PR now so that we can unblock people working on Windows.

@programmerjake Yeah, that's a good point. We could do some amount of emulation if we wanted a greater degree of portability. However we'd also pay a fair amount of overhead -- if I understand what you're saying, we'd have to try 2N files where N is the number of alphabetical characters, or scanning all the filenames in the directory, and we'd also have to think about racing with other processes.

at a minimum, we could have open fail when the case doesn't match. that's relatively inexpensive to implement and would probably catch most non-portable cases.
on Win32, GetFileInformationByHandleEx would probably work, though I don't know if it uses the case from the filesystem or from the createfile call. I don't have a Windows installation readily available to test on.

at a minimum, we could have open fail when the case doesn't match. that's relatively inexpensive to implement and would probably catch most non-portable cases.

@programmerjake do you mean we'd fail if we try to open Filename on a case-insensitive filesystem where filename exists? That does indeed seem reasonably cheap, but I'm not sure how much it'd help with portability.

at a minimum, we could have open fail when the case doesn't match. that's relatively inexpensive to implement and would probably catch most non-portable cases.

@programmerjake do you mean we'd fail if we try to open Filename on a case-insensitive filesystem where filename exists? That does indeed seem reasonably cheap, but I'm not sure how much it'd help with portability.

@tschneidereit yes, open would fail in that case.
I think it'll help portability since, in my (admittedly limited) experience, the most common case-sensitivity issue I've encountered is code that refers to other files using the wrong case when opening for reading.
Common examples include resource paths and #include directives in C-style languages (not that compiling code using a webassembly compiler would be common).

@tschneidereit one additional reason I think it will help is that it will catch issues during development on case-insensitive filesystems as opposed to when the code is tested on a case-sensitive filesystem (which it may not be, some people only ever test on Windows)

@tschneidereit one additional reason I think it will help is that it will catch issues during development on case-insensitive filesystems as opposed to when the code is tested on a case-sensitive filesystem (which it may not be, some people only ever test on Windows)

created an issue for case-sensitivity: https://github.com/WebAssembly/WASI/issues/72

@programmerjake excellent, thank you!

@programmerjake @sunfishcode
Note that the runtime behavior of checking for case-folded filenames is not O(n^chars), it is O(files) or O(log files): you just convert all of the filenames in a directory to a canonical case-folded name (toCasefold(NFC(filename))) before you compare.  This is known as caseless matching in Unicode parlance, which is fast and vectorizable.
Wine and Samba run into issues with deeply nested directories: /foo/bar/readme.txt, /Foo/bar/readme.txt.   But that's because they are providing a compatibility layer for unmodified binaries.  In our case, we could just throw an error when there are multiple casefolded matches.


Add delivery manager job posting

This is our job posting for the delivery manager role! Will wait for 👍 from Arthi and then merge.

OK, soft-launching this one and we can announce it on Monday!


Documentation on read(chr) is missing.

The last feature implemented by @llop is not documented. Please add it to the README.md. We should also add some tests, but let me investigate how to use Travis for that.

Updated the doc with supported types info


Mobile UI

TO-DO:
Use JS to redirect mobile users to a different mobile-specific html & Design mobile-friendly UI

Added Mobile Friendly UI
Added JS script to auto-detect device type and redirect to appropriate html.index file
Added Buttons to redirect to LinkedIn, Github & Resume


Update LinkTargetIdFeature.java

Resolves: https://github.com/mastodon-sc/mastodon/issues/217
Replace HashSet used as return value for the projections() method by LinkedHashSet, since the order of entry needs to be stable in process using this method.

@tinevez Since the order of implementations of the org.mastodon.feature.Feature#projections() method needs to be reproducible, do you think, it would be good to change the return value of the method from Set to LinkedHashSet? By this, errors like the one fixed with this PR could not happen again.
cf. https://github.com/mastodon-sc/mastodon/blob/a965612e7890ec624232fc69c7431badd65c18d3/src/main/java/org/mastodon/feature/Feature.java#L66

@stefanhahmann Actually the order in which projections are returned should not matter.
I think there is a deeper problem, probably rooted in the Table headers

@stefanhahmann Actually the order in which projections are returned should not matter. I think there is a deeper problem, probably rooted in the Table headers

I agree. When fixing this bug, I was also assuming that there is something in table headers which does not appropriately handle the existing projections and thus relies on some order. However, I did not dig it down.

I think that the issue is related to the fact that everytime we call the projections() method in this feature, it returns a new HashSet, with new instances of the feature projection classes.
But in the table, when building the header, the projections() method is called twice, once for the header subtitle and once to store the projection values. I think it comes from that.
Your patch fix the issue because it imposes the order. But I will try to fix the table so that the header and values are built from the same instance of the projection, so that we don't depend on order.
But also, I think it is sometimes nicer to impose a column order, like you did :)

See https://github.com/mastodon-sc/mastodon/commit/dca0534c45ae8cb995fa328bbceaf2dfcf4c0b49


Using fud priority causes warning

I wanted to make verilator the default verilog simulator for fud, so I set the stages.verilog.priority key to 1. This works, but causes a warning saying that the key is unknown. I don't think that this should generate a warning.
The warning happens because the Verilog stage doesn't define it as a known key in the known_opts function. It seems silly to have to add the priority key for every stage, so maybe there's a way we can always have this be a known opt for all stages.
Of course this is not a big deal at all. And maybe fud2 will just supercede fud and this is not worth fixing.

Argh that's odd! The logic for checking is here and we can change it to not check the priority key: https://github.com/calyxir/calyx/blob/main/fud/fud/stages/init.py#L218
However, it's kind of weird that we use the stage options magic to encode priority stuff anyways. fud2 should probably make a better trade-off here (CC @sampsyo).

Thanks for the ping! I haven't implemented anything like priority in fud2 yet. Seems worth doing. Currently, the first thing that the BFS algorithm finds "wins" unless you use --through! Food for thought… I also don't know what the right UI would be for this yet.


There should be a way to skip scripts based on the tags that they have

e.g.
deployFunc.tags = ["dev"]
then you can skip this script like:
npx hardhat deploy --skip-tags dev
and any scripts with the tag "dev" will be skipped

the tag system is a dependency system where tag can trigger more tag.
If we allow skip, not sure what the behaviour will be one tag that is not skipped need tag that is skipped.
I am closing the issue now but feel free to reopen with more info and the use case behind it

Thanks for creating this valuable project!
Just to add my experience here, I have a few deploy scripts that I use specifically for development and testing. For example, I have a script that stands up some fixtures to develop against. I've been using a live check and the presence of an environment variable to determine whether or not to skip these.
func.skip = async (hre: HardhatRuntimeEnvironment) => {
  return hre.network.live || !process.env.DEV_FIXTURES;
};

So then my invocation to start up my node with my fixtures looks like:
DEV_FIXTURES=1 npx hardhat node

This is basically fine, though I did spend some time trying to figure out how to skip unless a tag is specifically present.

That's a great solution @burnto, I was exactly looking for this. My only concern is that I have many deploy scripts but I don't want to mix them with the production scripts, do you know if it is possible to have different folders with production and test deploy scripts? Thanks

That's a great solution @burnto, I was exactly looking for this. My only concern is that I have many deploy scripts but I don't want to mix them with the production scripts, do you know if it is possible to have different folders with production and test deploy scripts? Thanks

yes, you can setup deploy folders per network
...
networks: {
...
  mainnet: {
    url: ...
   deploy: ["deploy/001_example_1","deploy/001_example_2" ]
 },
   rinkeby: {
    url: ...
   deploy: ["deploy/001_example_1","deploy/001_example_2" , "deploy/only_on_rinkeby"]
 }
}

that's awesome, thanks @wighawag

oh wow I just notice you are from Scotland ! I'm from Edinburgh

Oh @EdsonAlcala did you previously work at Consensys on the staking team?! I see your commits on the internal codebase every day haha


Flip the axes sgr is looped on

Precursor to some form of vectorization.

Coverage increased (+0.004%) to 81.051% when pulling e6bedbdfa86d9132491415d8a2707164576feea3 on KyleSiefring:sgr_rotate_iter_review into 28ef0c075e8346bb815981caf57804a81d4430e5 on xiph:master.

Clippy is sad could you fix that either by allowing the lint or removing the +0 ?

Thank you!


Plantagenet Cherokee font is squished in the newer version of Word

I've been using the Plantagenet Cherokee for studying and typing in Cherokee since the font was introduced. I corresponded the designer of the font not long after the release and discussed some issues with him at that time. What happened to it??  Now, with the new version of MS Word, version 16 for Mac, when I open my old documents, the top half of the font is cut off and it appears squished. I have found a work-around but it is clunky and needs to be done to every document that I have typed using the font.  I realize that there are probably not many people using the Plantagenet Cherokee font but I have a LOT of Word documents of things that I have transcribed or composed in my studies of the language. Has Microsoft abandoned it? Is there a fix for it?
Thanks.
ᏔᎻᎵ

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

ID: c0639b2c-ebde-acc8-3b34-39918c459016
Version Independent ID: e7847622-e27d-61d8-b1f5-997ee0b925b5
Content: Plantagenet Cherokee - Typography
Content Source: typographydocs/font-list/plantagenet-cherokee.md
Product: typography
GitHub Login: @alib-ms
Microsoft Alias: alib

Which version of the font are you using?
MacOS comes with a version - PlantagenetCherokee.ttf, v13.0d1e3 (v1.006)
Microsoft supplemental font - plantc.ttf, v5.09 (v5.090)
And the fonts are not the same.
Is more than one version installed?

This font has not been updated for quite some time. I am not seeing any issues you have described. If you can share some details like images, sample text, I can look more into it. You may also want to try the Gadugi font shipped with Windows and Office.

This font is not abandoned. To improve our Cherokee support in Windows we have updated this typeface to the latest Unicode 14.0 published standard. In this update, we have added

7 missing characters from the Cherokee U+13A0-13FF Unicode range

80 new characters from Cherokee Supplement U+AB70-ABBF Unicode range. The Cherokee Supplement block contains lowercase letters only, whereas the Cherokee block contains all the uppercase letters, together with six lowercase letters.
Picture of all the newly added characters.

Please share the screenshots of the issues you are having so we can take action to address the issue.

No actionable feedback.


Uncaught (in promise) TypeError: Cannot read property 'type' of null

I'm switching / upgrading from Vue 2 and Buefy. A key (and great) feature for n Buefy was/is the table component however I'm receiving an error with Vue 3.
Error
The vue warning : [Vue warn]: Unhandled error during execution of scheduler flush. This is likely a Vue internals bug. Please open an issue at...
Console Error
runtime-core.esm-bundler.js:4818 Uncaught (in promise) TypeError: Cannot read property 'type' of null
I'm raising the issue here, as this appears to only occur with the Oruga table component.
Setup
"@oruga-ui/oruga-next": "^0.4.1",
"vue": "^3.0.5",
"vue-router": "^4.0.8"
"vite": "^2.3.6",
Error appears on chrome/edge/firefox
Console Error
runtime-core.esm-bundler.js:4818 Uncaught (in promise) TypeError: Cannot read property 'type' of null
Offending Code
const unmountComponent = (instance, parentSuspense, doRemove) => {         if ((process.env.NODE_ENV !== 'production') && instance.type.__hmrId) {             unregisterHMR(instance);         }
Setup
I'm using the code provided in the examples as much as possible.

app.use(Oruga, {         icon: {             override: true,             rootClass: 'icon',         },         button: {             override: true,             rootClass: 'btn',             variantClass: 'btn-',             roundedClass: 'btn-rounded',             outlinedClass: 'btn-outlined-',             disabledClass: 'btn-disabled'         },         dropdown: {             override: true,             menuClass: 'dropdown-menu',             itemClass: 'dropdown-item',             itemActiveClass: 'dropdown-item-active'         },         table: {             override: true,             wrapperClass: 'table-wrapper',             tableClass: 'table',             stripedClass: 'is-striped',             hoverableClass: 'is-hoverable',         }     })

Steps to Reproduce

Load the app, page.
If the error does not appear first time, switch routes and then back to the initial
Switching to 'blank' routes is fine, on when the template contains the table comp, does the error appear.

Suspicion
From the error it looks like vue/vite is attempting to unload the component however is failing.
Thanks,
Bob

@coreyworrell can you share the code of table too?

If you mean the data I was using.. nothing more than the example code on the website. i.e. same data and column arrays.
This is the full page.
`

        <o-table :data="data" :columns="columns" narrowed striped hoverable></o-table>

        <highlight title="state" :data="userstate" />

`

@bobmcallan in the meanwhile try using table-column component instead of columns prop

Thanks that works.. in fact that was how i will implement anyways.. I'm building out a full site over the next few weeks.. happy to keep you informed of progress if that helps.

@bobmcallan in the meanwhile try using table-column component instead of columns prop

could you please update the docs if anything property has been deprecated. the official doc encourages the use of columns prop

@bobmcallan in the meanwhile try using table-column component instead of columns prop

could you please update the docs if anything property has been deprecated. the official doc encourages the use of columns prop. Thanks...

Hi all,
I just lost 2 hours figuring out what was happening before reading this post and go the "o-table-column" way instead of the "columns prop" way.
The doc is still giving the "columns prop" way as exemple...


Feat: ability to generate docs from repo URL

So nextra looks pretty easy to use already, but even easier then asking users to deploy their own app would be if they could just point https://nextra.vercel.app/ at a repo and have the docs automatically generated!
For example, lets take a repo I maintain, https://gitlab.com/john.carroll.p/rschedule. It would be nice if navigating to this URL automatically generated a docs site for rSchedule without any further effort on my part. No deploying an app, no configuration, nothing but type a url into the browser.
For example:
https://nextra.vercel.app/d/gitlab/john.carroll.p/rschedule/branch/master/docs/1.%20Introduction.md

or

https://nextra.vercel.app/d/gitlab/john.carroll.p/rschedule/tag/v1.2.5/docs/2.%20Usage/1.%20Overview.md

The API for this would be in the form
https://nextra.vercel.app/d/[repo-provider]/[project-namespace]/[project-name]/[ref-type]/[ref]/[...filePath]

When a user entered a URL like this, Nextra would use the public Gitlab / Github API to grab the repo metadata, grab the relevant markdown file, render the markdown file as a nextjs site, and cache the results. By convention, we could say that the "docs folder" would always be located at the top level of the repo in a folder named docs. Nextra could then recursively fetch all the files in the repo's docs folder (again using the public github / gitlab APIs) and build a filetree which would be used for navigating.
This would provide open source devs with the easiest method I can imagine for generating nice documentation. If people wanted more customization, they could always deploy their own Nextra site like they can currently. But I maintain a number of repos and I really don't want to do anything to generate documentation.
Coincidently, I actually spent the last two weeks building an open source project that does exactly this (also using nextjs)! You can see the (WIP) repo here:

https://gitlab.com/john.carroll.p/dynodocs

You can see it dynamically generate documentation here. To reiterate, the documentation at this link is generated dynamically based on the provided URL.

https://dynodocs.dev/d/gitlab/john.carroll.p/rschedule/branch/v1/docs/1.%20Introduction.md

The source for that link is this file:

https://gitlab.com/john.carroll.p/rschedule/-/blob/v1/docs/1.%20Introduction.md

Notice how this markdown file contains relative links inside it. E.g. the link for the Usage Overview header is [Usage Overview](./2.%20Usage/1.%20Overview.md). These relative links are compiled to the appropriate absolute URLs by the dynodocs.dev site. This is nice because people browsing the markdown in the repo itself (instead of via dynodocs.dev) can still use the links to navigate.

This repo is very much a work in progress though, and I didn't realize that Nextra existed until this very moment. Nextra looks much further along and I like it so far! If you're amendable to this idea, I'd prefer to stop working on my repo and start contributing this functionality to yours.
What do you think? Thanks!
PS: by necessity, generating docs by a URL with so little configuration will have drawbacks. I'm not saying this option should be instead of the current Nextra functionality, but in addition to the current functionality.

It also seems possible that the functionality I describe would be better as a fork of this repo. But figured I'd reach out and see what you thought first.

I just realized that Nextra is not open source... This repo only appears to contain the docs 🤦

@thefliik Nextra is open sourced, check the core branch.

Well awesome! I'm not sure if I've ever encountered a repo separated like this before. Is it temporary?
Any thoughts about my original idea?


[Rating] Add a demo with different icons

Starts to provide a solution for #18971. Thinking I will round this out and also add a prop that allows the user to align the icons as desired.
Would love feedback from the team if this seems like a good path? @oliviertassinari

[x] I have followed (at least) the PR section of the contributing guide.

Closes #18971.

Thanks for working on this, it's a great start!
A docs demo would be good, for example using the sentiment icons.

Thanks! I'll work on this soon. Any CSS ideas on how to align these icon to baseline?

@hoop71 Thanks for exploring this issue. Regarding the implementation, I don't think that we need to change the source, I believe a new demo would be enough (leveraging the IconContainer prop).

@hoop71 Thanks for exploring this issue. Regarding the implementation, I don't think that we need to significantly change the source nor the API. I believe a new demo would require most of the work (leveraging the existing IconContainer prop). However, maybe we need to leak part/all the state to the public API?

Got it. This makes a lot of senes.

OK - I think this is working pretty well with the IconContainer prop. This is a slick solution. Very nice. On the VariableSizeRating icons, I am having trouble getting the hidden input to match the size? Any ideas @oliviertassinari? I can write a few more tests for this as well if needed.
Cheers.

For the sentiment example it would be good to provide custom text labels using getLabelText.
Not sure what's going on with the size example. (Do you have a practical use-case for this?)

What has Google done! There is twice the SVG path for the eyes 😆.

Not sure what's going on with the size example. (Do you have a practical use-case for this?)

+1 for keeping it simple (no demo)

Could you migrate the demo to TypeScript? :)

For the sentiment example it would be good to provide custom text labels using getLabelText.
Not sure what's going on with the size example. (Do you have a practical use-case for this?)
If you edit the typescript demo, the JS demo can be generated with yarn docs:typescript.

Yes, I can do this in typescript and getLabelText, no problem.
The example came from the orginal ask in #18971. I guess it depends on how much you'd like to show in the demo or let users figure out?

Regarding your side issue, all the rating needs to have the same width for the logic to work correctly. It's a simplification of the logic. We are lucky it's probably a good constraint for UX.

The example came from the orginal ask in #18971.

In the sample image in the issue those look like different icons, rather than the same icon resized (they're all the same width).
I think we can safely drop the size demo as @oliviertassinari suggested.

@hoop71 Thanks


Custom group prices

In a lot of ecommerce frameworks, customer group prices exists. Or even specific prices for a single user.
I think this can and should be a default feature in oscar.
Django groups already exists, so I guess this can be used for it.
Would this be something that can and may be implemented in oscar?

Hi! I'm facing the same problem here. Did you solve it somwhow?

closing all issues that look like they really are feature requests but don't have open PR's attached.


Add execution duration

is there a PR in the curse_of_myrra repo updating the messages.proto file and the csharp related files?

is there a PR in the curse_of_myrra repo updating the messages.proto file and the csharp related files?

Yes, here


AttributeError: 'str' object has no attribute 'get'

Getting this on v0.13.131314
Logger: custom_components.spook
Source: custom_components/spook/repairs/lovelace_unknown_entity_references.py:264
Integration: Spook (documentation, issues)
First occurred: 16:32:14 (8 occurrences)
Last logged: 16:34:12
Unexpected exception from <function AbstractSpookRepair.async_activate.._async_inspect at 0xffff5adcbd00>
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/debounce.py", line 117, in _handle_timer_finish
await task
File "/config/custom_components/spook/repairs/init.py", line 130, in _async_inspect
await self.async_inspect()
File "/config/custom_components/spook/repairs/lovelace_unknown_entity_references.py", line 108, in async_inspect
for entity_id in self.__async_extract_entities(config)
File "/config/custom_components/spook/repairs/lovelace_unknown_entity_references.py", line 159, in __async_extract_entities
entities.update(self.__async_extract_entities_from_card(card))
File "/config/custom_components/spook/repairs/lovelace_unknown_entity_references.py", line 225, in __async_extract_entities_from_card
entities.update(self.__async_extract_entities_from_card(card))
File "/config/custom_components/spook/repairs/lovelace_unknown_entity_references.py", line 235, in __async_extract_entities_from_card
entities.update(self.__async_extract_entities_from_element(element))
File "/config/custom_components/spook/repairs/lovelace_unknown_entity_references.py", line 288, in __async_extract_entities_from_element
entities.update(self.__async_extract_entities_from_actions(config))
File "/config/custom_components/spook/repairs/lovelace_unknown_entity_references.py", line 255, in __async_extract_entities_from_actions
entities.update(self.__async_extract_entities_from_action(action))
File "/config/custom_components/spook/repairs/lovelace_unknown_entity_references.py", line 264, in __async_extract_entities_from_action
(target := config.get(key))
AttributeError: 'str' object has no attribute 'get'

Do you have any action: in your YAML dashboards that have a string as a value?

The only action: I can see is navigate, toggle, call-service and none. I did have a few null but have replaced them with none.
I do have a few action: double_tap but they are for custom restriction card

dont want to be daft, but what is the solution to this? Does Spook need to exclude those in the scan, or do we need to do anything in the action yaml...

No, this can be handled by Spook. I wasn't able to take into account all the custom stuff out there writing this 😉
Will maybe pick it up tomorrow (or something).


Not able to upload more than 50 MB to OneDrive office 365

I am using “O365-APIs-Start-ASPNET-MVC” application to upload the file to office365 account. This was working perfectly on last week but yesterday onwards I was not able to upload more than 50 MB as single file.
If I try with more than 50 MB the file is not get uploading. During the upload I could not see any errors.
Please let me know this is API issue or Office 365 issue.
https://msdn.microsoft.com/en-us/office/office365/api/files-rest-operations

@JeevaJose can you provide a Fiddler trace of the failed request?

I used fiddler debugger to track the issue and found that I was getting following message.
{"error":{"code":"-1, Microsoft.SharePoint.Client.InvalidClientQueryException","message":"
The request message is too big. The server does not allow messages larger than 52428800 bytes."}}
Looks Microsoft rest API having issue.

Can you provide the request+response, body+headers as well so that we can use the diagnostics information? Make sure you clear out any personal info.

Thanks for your support.
Could you please try to upload 100 MB file to OneDrive. I just want to check whether larger files are able to upload from your end.
I will also provide the fiddler response.

Looks this is an inconsistent issue in Office 365 apis.

Closing this since I haven't received the requested diagnostics information. One thing I do suggest is that for OneDrive, there is a much better client API.


KeyStore.deserialize still using new KeyStore constructor

The KeyStore.deserialize method is using the new KeyStore constructor.  This results in a deprecation warning being written to the console.

I upgraded to the createVault constructor and I also still get the warning, because it calls the old constructor.
https://github.com/ConsenSys/eth-lightwallet/blob/master/lib/keystore.js#L137

Ahh, thanks I just updated to latest version and changed to createVault() and am also getting the deprecated message.

@flyswatter @christianlundkvist this is similar to the PR just merged.. Its showing the deprecated warning on deserialize due to the KeyStore constructor.

Up, we still have the warning

Because of the derivation bug, I was forced off this library, and since it's not being actively maintained, I have to point out how nicely ethereumjs-wallet works.

@flyswatter Its a shame, I really liked this library. especially the built in JSON serialization and tx construction etc.. but without maintenance we will have to migrate to ethereumjs-wallet soon


Change set always failed with preConditions contained - foreignKeyConstraintExists check

Environment
Liquibase Version: 3.9.1 / 3.8.0 (tested for the both version)
Database Vendor & Version: mariaDB 2.7.4/ 3.4.0  (tested for the both version)
Operating System Type & Version: macOs Monterey ubuntu-18.04 / 12.0.1  (tested for the both version)
Description
Hi team,
We recently upgraded our project from version 4.1.0 to 4.9.1 to support changeSets fails logs.
It's cool feature but in new version changeSets always failed with preConditions contained - foreignKeyConstraintExists check. Without this check, changeSets are ran successfully. However, this is a big problem for us, since there are quite a lot old changeSets in the system with this check. Now they failed.
Steps To Reproduce
List the steps to reproduce the behavior.

Create database Table Owner = [id, name] and  Dog =  [id, name, ownerId] by changeSet 1
Create index  fk_Dog_Owner_id for ownerId to Owner by changeSet 2
Create foreignKey  fk_Dog_Owner_id for ownerId to Owner by changeSet 3
Try drop foreignKey by changeSet  4 contained

      preConditions:
        - onFail: MARK_RAN
        - foreignKeyConstraintExists:
            indexName: fk_Dog_Owner_id

ChangeSet failed

Also to reproduce problem you can clone project https://github.com/KeyrisXdSnow/LiquibaseForeignKeyError
Actual Behavior
Change set always failed with preConditions contained - foreignKeyConstraintExists check:
apr. 26, 2022 11:46:26 AM liquibase.changelog
INFO: Marking ChangeSet: 2.dropKey.yaml::dropIndex::keyris ran despite precondition failure due to onFail='MARK_RAN':
          2.dropKey.yaml : Index fk_Dog_Owner_id does not exist

Expected/Desired Behavior
ChangeSet with tested with - foreignKeyConstraintExists check run successfully.
 Running Changeset: 2.dropKeyWithoutPreCondition.yaml::dropKeyWithoutPreCondition::keyris
apr. 26, 2022 11:48:01 AM liquibase.changelog
INFO: Foreign key fk_Dog_Owner_id dropped
apr. 26, 2022 11:48:01 AM liquibase.changelog
INFO: ChangeSet 2.dropKeyWithoutPreCondition.yaml::dropKeyWithoutPreCondition::keyris ran successfully in 205ms
Running Changeset: 2.dropKeyWithoutPreCondition.yaml::dropIndexWithoutPreCondition.yaml::keyris
apr. 26, 2022 11:48:01 AM liquibase.changelog
INFO: Index fk_Dog_Owner_id dropped from table Dog
apr. 26, 2022 11:48:01 AM liquibase.changelog
INFO: ChangeSet 2.dropKeyWithoutPreCondition.yaml::dropIndexWithoutPreCondition.yaml::keyris ran successfully in 248ms
apr. 26, 2022 11:48:01 AM liquibase.lockservice
INFO: Successfully released change log lock
apr. 26, 2022 11:48:01 AM liquibase.lockservice
INFO: Successfully released change log lock

Hi, we have the same issue with MariaDB and Liquibase 4.9.1. Even if this was fixed here https://github.com/liquibase/liquibase/issues/2389 it still didn't work. You will find a workaround that worked for us in the thread over here https://github.com/liquibase/liquibase/issues/2389#issuecomment-1088953881. You have to specify the table name in the precondition:

databaseChangeLog:

changeSet:
id: changeSetId
author: author
preConditions:
- onFail: MARK_RAN
- not:
- foreignKeyConstraintExists:
foreignKeyName: FK_NAME
foreignKeyTableName: TABLENAME <-- here

Hi @KeyrisXdSnow  I have tried to reproduce this issue, but I couldn't. I tried with on below environment:
Environment
Liquibase Version: 4.17.0
Database Vendor & Version: mariaDB 10.2.44
Operating System Type & Version: macOS Monterey 12.1
I used changelogs provided on this issue:

0.createSchema.yaml
2.dropKey.yaml

Could you please try again, and share any other detail which can help us to recreate this scenario? In the meantime, I'll close this issue.
Thanks,
Daniel.


fix: Make all links to info and emercency help page go back to right page while keeping the filters active

This PR encodes the back url in the query params to use a regular nextjs Link instead of history.back() as using the history does reset all filters. This way, the filters are preserved and it also work when there is no history.
This makes the PR #178 obsolete.

To see the specific tasks where the Asana app for GitHub is being used, see below:

https://app.asana.com/0/0/1204087008819118
https://app.asana.com/0/0/1205178975667853

@Esshahn @Jaszkowic This also fixes the browser history breaking the filter selection ui.


Improve turtle typings

Most of these fixes should be uncontroversial but it does include a lot of breaking changes that could potentially trip up a lot of existing programs. For example, this code will silently change behaviour after this PR because it's now checking if a table is truthy instead of the returned boolean:
while(turtle.forward()) {
  // ...
}

I had a workaround (before this PR) for getting the failure reason but it's kind of horrific:
// Get the reason for failure by accessing arr[1] even though it looks impossible
const arr = [turtle.forward()];

It's probably more common to just use the boolean than to read the error string but I still feel like it's worth changing for correctness's sake. Perhaps this should be deployed with a major version upgrade? Although it would become out of sync with CC's version number :(

LGTM, not really worried about breaking things, since this is a template that people don't really import separately :+1:


performance

For a script to parse a html page and do an xpath query, it's about 7x slower than use XML::LibXML:from<Perl5>.
script with raku libxml2 bindings
script in raku but with inline perl5 libxml2 bindings
It's about the same time difference if you leave off the xpath query and just parse the document.

The Perl example is fetching strings, while the Raku example has the much greater overhead of fetching sets of stantiated text objects.

ah interesting, you mean change say $node<text()> to say $node.to-literal?
It makes it faster, now taking 48 seconds instead of 60 for 1500 iterations. Still if we remove all xpath code, and just  time my LibXML::Document $doc .=  parse: :html, :recover, :suppress-errors, :string($html); vs XML::LibXML.load_html(recover => 1, suppress_errors => 1, string => $html) it is 43 seconds vs 7.8, so a little better but still a big difference

FWIW, for maximum throughput I'd write the LibXML example something like:
use HTTP::UserAgent;
use LibXML;
use LibXML::Document;
use LibXML::Node;

my $ua = HTTP::UserAgent.new;

my $html = $ua.get('https://nokogiri.org/tutorials/installing_nokogiri.html').content;

my $start-time = now;

say .to-literal for (^1500).hyper.map: {
    my LibXML::Document $doc .= parse: :html, :recover, :suppress-errors, :string($html);
    $doc.findnodes('//article//h2').Slip;
}

$*ERR.say: "done in: {now - $start-time} seconds";

ok thanks, I left off hyper just to make it easier to compare time on different languages. For reference the same script on my computer using libxml2 from ruby was 10 seconds, python 8, and crystal 6.5, so them and raku with inline perl5 are all about the same

On my machine, I get about a 5x improvement, (28 secs -> 5secs)  if throw away LibXML::Parser::Context, and create a low-level htmlMemoryParserCtxt native parser directly, as below:
use HTTP::UserAgent;
use LibXML::Document;
use LibXML::Raw;
use LibXML::Config;
use LibXML::Enums;

my $ua = HTTP::UserAgent.new;

my $html = $ua.get('https://nokogiri.org/tutorials/installing_nokogiri.html').content;

my $start-time = now;

my $opts = LibXML::Config.parser-flags +| XML_PARSE_NOERROR;

for (^1500) {
    my htmlMemoryParserCtxt $ctx .= new: :string($html);
    $ctx.UseOptions: $opts;
    $ctx.ParseDocument;
    my xmlDoc:D $raw = $ctx.myDoc;
    my LibXML::Document $doc .= box($raw);
    say .to-literal for $doc.findnodes('//article//h2');
}

$*ERR.say: "done in: {now - $start-time} seconds";

This is what's happening under the hood, but the LibXML::ParserContext layer is adding a lot of overhead.

thanks, I get the same speedup with that version, but on maybe 15% of runs I get the exception:
Cannot unbox a type object (NativeCall::Types::Pointer) to an unsigned int.
  in method init-local-error-handling at /home/user/rakudo/share/perl6/site/sources/39220F748A6D133E88EE7FA4658F1D6891C8A476 (LibXML::ErrorHandling) line 222
  in submethod TWEAK at /home/user/rakudo/share/perl6/site/sources/630B47B30ED9133765A7F6506BDC165B344EA20D (LibXML::XPath::Context) line 151
  in method create at /home/user/rakudo/share/perl6/site/sources/3C4A7CA01ECFD5F84ED55E82AAF44C52BCFA7708 (LibXML::_Configurable) line 16
  in method xpath-context at /home/user/rakudo/share/perl6/site/sources/E33D8CD27A0BA050C164674B9185C781242B9152 (LibXML::Node) line 542
  in method findnodes at /home/user/rakudo/share/perl6/site/sources/E33D8CD27A0BA050C164674B9185C781242B9152 (LibXML::Node) line 546
  in block <unit> at raku-libxml-lowlevel.raku line 15

Slows when I add error handling back in. Seems the error handling is still called even with the :suppress-errors option.
use HTTP::UserAgent;
use LibXML::Document;
use LibXML::Raw;
use LibXML::Config;
use LibXML::Enums;

my $ua = HTTP::UserAgent.new;

my $html = $ua.get('https://nokogiri.org/tutorials/installing_nokogiri.html').content;

my $start-time = now;

my $opts = LibXML::Config.parser-flags +| XML_PARSE_NOERROR;

my $error-count;

for (^1500) {
    my htmlMemoryParserCtxt $ctx .= new: :string($html);
    $ctx.UseOptions: $opts;
    $ctx.ParseDocument;
    my xmlDoc:D $raw = $ctx.myDoc;
    $ctx.SetStructuredErrorFunc: -> $, $ {$error-count++};
    my LibXML::Document $doc .= box($raw);
    say .to-literal for $doc.findnodes('//article//h2');
}

$*ERR.say: "error-count: $error-count";
$*ERR.say: "done in: {now - $start-time} seconds";

error-count: 62958
done in: 5.364376408 seconds

The errors are being fully processed by the Raku handler before being thrown away by libxml2, thus slowing things down.

^^ That commit fixes error handler to completely ignore errors with the :suppress-errors option is used.

thanks, the high-level code is now running for me in 12 seconds, comparable to other libxml2 bindings


quoting results?

I have a sqlite database that has entries like "Message from Unknown sender" in a column. But if I do something like
(emacsql db [:select [messageID arrivalTime subject callerIdCallerName]
:from 'Voicemails])
I get results like:
(0:ce02a3fb-6ff0-4d67-b6dd-1dbcd2c8bf1a<PHONE_NUMBER>000 Message from Unknown sender (Unknown caller ID))
That list has more than 4 elements in it (it has 7). But this isn't useful since the strings are not quoted. Is there a way to get the results from columns quoted?

EmacSQL isn't intended to be a generic SQL database interface but rather
a system that allows Emacs to use a SQL databse to back its own data.
All database values must be stored in s-expression form, so the database
is essentially limited to use by EmacSQL itself.

Ok, thanks for the clarification!


Missing events in ES version (Unable to deploy to appsource)

Describe the request
In the following Object
codeunit 12 "Gen. Jnl.-Post Line"
The following events are missing, they are available in W1.
OnBeforeCalcPmtDiscPossible
and
OnCalcPmtDiscPossibleOnBeforeOriginalPmtDiscPossible
Funfact: OnAfterCalcPmtDiscPossible this one is actually available (never called, but it is at least there, so we can at least deploy)
I think that all events that are available in W1 should be available in all localizations.
Is it possible to add this in:
23.0
23.1
23.2
23.3
23.4
23.5
24.0
Additional context
This is actually very urgent for us, we made a commitment to our customers, but now are not able to upload it to appsource.
Can you please help us out on this one?

It is not only the event that is missing in ES version, but in GenJnlPostLine.PostCust, the entire check CalcPmtDiscPossible(GenJournalLine, CVLedgEntryBuf);
is not present in Business Central ES. There is local Spanish functionality for ignoring discounts on G/L Accounts https://learn.microsoft.com/en-us/dynamics365/business-central/localfunctionality/spain/how-to-ignore-discounts-in-general-ledger-accounts
We will get back to you with more details about this.

counts
We will get back to you with more details about this.

I agree that the whole function is missing, I still think the event should be there. Just do not call it.
In the function there are 3 events. 1 is available. 2 are not. I think the other 2 should be at least there (but not called)

This one seems to have stranded. If there's any work pending, could you create a new issue for us and we'll revisit!


Cloud Computing School with Azure (Platzi 2022)

Courses 👇🏽
https://platzi.com/azure

Today I started taking the introductory course 😆
https://platzi.com/cursos/introduccion-azure/

Taking care directly on #7


bug in instructions to create a verifiable credential

recent change broke workflow.
[(https://entra.microsoft.com/#blade/Microsoft_AAD_DecentralizedIdentity/CardsListBlade]
has three fields,

title/name of VC
xml for display code of VC
xml for rules code of VC

upon clicking create, process errors out with requirement for parameter ClientId, which is both new (since last week) and not in the UX.
PLEASE FIX, until this is fixed, I do not understand how anyone can successfully use this UX and instructions. Please help me understand.
Michael
Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 9e42edd5-bb8b-dd7f-75a1-46bcea3c8a43
Version Independent ID: 29afa9f3-063c-9026-8b3f-2a4d1504d2d3
Content: How to create credentials using the QuickStart - Microsoft Entra
Content Source: articles/active-directory/verifiable-credentials/how-to-use-quickstart.md
Service: decentralized-identity
Sub-service: verifiable-credentials
GitHub Login: @barclayn
Microsoft Alias: barclaynhttps://entra.microsoft.com/#blade/Microsoft_AAD_DecentralizedIdentity/CardsListBlade

@mistokes-ppr,  Thanks for bringing this to our attention. Your feedback has been shared with the content owner for further review.

From reading clung's documentation for VC powershell scripts, it appears Azure VC storage and infrastructure has changed in a manner that requires migrations. https://github.com/cljung/vc-scripts
I don't see this documented clearly anywhere else and was curious if it is possible to do this by Azure Portal instead of powershell scripts.

@mistokes-ppr  I attempted to reproduce the problem just now after our latest documentation and service updates and I could not repro the problem. I am hoping your testing is unblocked. If you continue experiencing problems with the documentation please let us know.

#please-close


serverReadyAction not working when launch configuration is in devcontainer.json

Does this issue occur when all extensions are disabled?: Dev Containers extension must be enabled to check the problem

VS Code Version: 1.73.1
OS Version: Ubuntu 22.04

Steps to Reproduce:

In devcontainer.json define a launch configuration like:

{
  "customizations": {
    "vscode": {
        "launch": {
          "configurations": [
            {
              "name": "Launch Chrome Debugger",
              "type": "chrome",
              "request": "launch",
              "browserLaunchLocation": "workspace",
              "url": "http://web.local.computer:4200/",
              "webRoot": "${workspaceFolder}",
              "presentation": {
                "hidden": true
              }
            },
            {
              "name": "Debug nx-app",
              "type": "node-terminal",
              "request": "launch",
              "cwd": "${workspaceFolder}",
              "command": "nx run nx-app:serve:development",
              "serverReadyAction": {
                "action": "startDebugging",
                "name": "Launch Chrome Debugger",
                "pattern": "listening on <IP_ADDRESS>:4200"
              }
            }
          ]
        },
    }
  }
}

Rebuild the Dev Container in order for the new configuration to take effect.

After the "listening on <IP_ADDRESS>:4200" message appears in the terminal the error message 'launch.json' does not exist for passed workspace folder. pops up.

If the same launch configuration is provided in a launch.json file (instead of devcontainer.json), the Launch Chrome Debugger is run after the "listening on <IP_ADDRESS>:4200" message appears in the terminal and there is no error message.
Related to: https://github.com/microsoft/vscode/issues/76415

I don't think I knew that this is possible, is this new @chrmarti? This probably isn't the only thing that won't work.

I've been using this for some time (except the serverReadyAction part) so it is not that new.

@roblourens the info-needed tag is for @chrmarti or you need extra info from me?

I don't think the example is actually valid? I get Property launch is not allowed. and the launch config isn't recognized at all.

@roblourens The example I included is not a full devcontainer.json so I missed the "settings" tag between "vscode" and "lauch".
{
  "customizations": {
    "vscode": {
      "settings": {
        "launch": {
          "configurations": [
            {
              "name": "Launch Chrome Debugger",
              "type": "chrome",
              "request": "launch",
              "browserLaunchLocation": "workspace",
              "url": "http://web.local.computer:4200/",
              "webRoot": "${workspaceFolder}",
              "presentation": {
                "hidden": true
              }
            },
            {
              "name": "Debug nx-app",
              "type": "node-terminal",
              "request": "launch",
              "cwd": "${workspaceFolder}",
              "command": "nx run nx-app:serve:development",
              "serverReadyAction": {
                "action": "startDebugging",
                "name": "Launch Chrome Debugger",
                "pattern": "listening on <IP_ADDRESS>:4200"
              }
            }
          ]
        },
      }
    }
  }
}

Please, check it and reopen the issue.

New issue created with sample devcontainer.json updated: https://github.com/microsoft/vscode/issues/169375


Send desktop notification

Hello!
Thanks so much for making this app. I purchased it the moment I read the description.
I use the Orion browser. 2fhey works great, but I don't see any type of notification whenever a 2FA code is copied to my clipboard.
It looks like there is some popup based on the marketing material for this app, but it hasn't ever worked for me.
Would it be possible to send a desktop notification whenever a code is copied to the clipboard? I would find that immensely helpful!

That IS how it works. I need to build and publish the latest updates to this code which lets you position the notification where you want it. It also should fix an issue with certain browsers hiding the notification

@shepherdjerred  can you please test this before I send it out to others? In the dropdown in the menu bar you will find a notification position you can now select. https://files.sofriendly.com/uky23lc3

That seems to be working much better! Thank you for fixing this.


Update CGContext, CGPath and CGImage for the CFCppBase changed.

This change is

This will be built as part of a test over the merge PR, #1354.

:shipit:

:shipit:


UPDATE PageController with PhotoViewGallery.builder

I'm creating an app gallery. and can not update the images, I am always coming across the first image although the pagecontroller is correct, please help me to solve this issu.
     `class ViewerPage extends StatefulWidget {
          final Medium medium;
            ViewerPage({
              Key? key,
         required this.medium,
            required this.media,
                }) : super(key: key);
            List<Medium> media;

               @override
                 State<ViewerPage> createState() => _ViewerPageState();
          }

             class _ViewerPageState extends State<ViewerPage> {
                List<String> img = [];
              int idx = 0;

              late PageController pageController;

             @override
                 void initState() {
                  super.initState();
                pageController = PageController(initialPage: idx);
                      img = widget.media.map((e) => e.id).toList();
                    }

           @override
                 Widget build(BuildContext context) {
                      return Scaffold(

                      body: Container(
                           alignment: Alignment.center,
                       child: widget.medium.mediumType == MediumType.image
                  ? PhotoViewGallery.builder(
                     pageController: pageController,
                  builder: (BuildContext context, int index) {
                   return PhotoViewGalleryPageOptions(
                      heroAttributes: PhotoViewHeroAttributes(
                      tag: Text(widget.medium.filename.toString())),
                  imageProvider: PhotoProvider(mediumId: img[index]));
            },
            itemCount: img.length,
            onPageChanged: onPageChanged,
          )
        : VideoProvider(
            mediumId: widget.medium.id,
          ),
          ),
       );
       }

           void onPageChanged(int index) {
               setState(() {
                idx = index;
              });
              }
          }`

I also have this error when I press the return button after displaying the photos
'' Looking up a deactivated widget's ancestor is unsafe.
At this point the state of the widget's element tree is no longer stable.
To safely refer to a widget's ancestor in its dispose() method, save a reference to the ancestor by calling dependOnInheritedWidgetOfExactType() in the widget's didChangeDependencies() method.

@LlMrc
Your question is better suited for support channels like StackOverflow, so please ask the same there.
Closing from here as it seems to be a code implementation and code assistance issue rather than a bug in framework.


Problem with authentication for service account

I would to implement some features for storing data (upload function) and I tried this code to begin, it's a simple listing operation, but I ran into errors, in particular:
pageHeader section doesn't work and refreshTokenWithAssertion function in the ''if'' statement neither (the code blocks there...)
require_once('google-api-php-client/autoload.php');

		$client_id = '794997545993-19dbte************ves1963cjpv.apps.googleusercontent.com';
		$client_email =<EMAIL_ADDRESS>		$private_key = file_get_contents('*****-123c6e7cd4dc.p12');
		$scopes = array('https://www.googleapis.com/auth/devstorage.full_control');

		echo pageHeader("Service Account Access");
		if (strpos($client_id, "googleusercontent") == false
		    || !strlen($client_email)
		    || !strlen($private_key)) {
		  echo missingServiceAccountDetailsWarning();
		  exit;
		}

		$client = new Google_Client();

		if (isset($_SESSION['service_token']))
		{
  			$client->setAccessToken($_SESSION['service_token']);
		}

		$credentials = new Google_Auth_AssertionCredentials(
		    $client_email,
		    $scopes,
		    $private_key
		);

		$client->setAssertionCredentials($credentials);

		if ($client->getAuth()->isAccessTokenExpired())
		{
		  $client->getAuth()->refreshTokenWithAssertion($credentials);
		}

		$_SESSION['service_token'] = $client->getAccessToken();

		$storageService = new Google_Service_Storage($client);

		$buckets = $storageService->buckets->listBuckets('pure-muse-748');

  		$listBucketsMarkup = generateMarkup('List Buckets', $buckets);
  		print $listBucketsMarkup;

Any ideas? Where am I wrong?
Thanks.
p.s.: Google API documentation is terribly chaotic and uncoordinated

I agree :100: on the Documentation being bad.
This is how I do my authentication and it seems to work well:
require_once 'google-api-php-client/src/Google/autoload.php';

session_start();
$client = new Google_Client();
$client->setApplicationName('Hello Analytics API Sample');

/************************************************
  If we have an access token, we can carry on.
  Otherwise, we'll get one with the help of an
  assertion credential. In other examples the list
  of scopes was managed by the Client, but here
  we have to list them manually. We also supply
  the service account
 ************************************************/
if (isset($_SESSION['service_token'])) {
  $client->setAccessToken($_SESSION['service_token']);
} else {
  $cred = new Google_Auth_AssertionCredentials(
      $client_email,
      $scopes,
      $private_key
  );
  $client->setAssertionCredentials($cred);
}
if ($client->getAuth()->isAccessTokenExpired()) {
  $client->getAuth()->refreshTokenWithAssertion($cred);
}
$_SESSION['service_token'] = $client->getAccessToken();

// Create service object
$storageService =  new Google_Service_Storage($client);

One of the key elements missing from your sample is the following:
include_once "templates/base.php";
Which was taken from: https://github.com/google/google-api-php-client/blob/master/examples/service-account.php
If you look at the template definition: https://github.com/google/google-api-php-client/blob/master/examples/templates/base.php it has the proper pageHeader function that you mentioned.

Ok, I've added your code in my page. It blocks execution on
$client->getAuth()->refreshTokenWithAssertion($cred);

and fails page loading

I made some quick edits to my comments - make sure it's all the same.
Or provide more details on the error.

Ok, was a "file not found" problem. Private key must be placed in webserver root directory, not the same directory where is placed PHP page, in order to work correctly with file_get_contents function.
Thanks for the help!
B.R.

Glad it all got worked out :+1:


Timeout function to quit SampleApp without user input

IMPORTANT: Before you create an issue, please take a look at our Issue Reporting Guide.
Briefly summarize your issue:
Running Alexa on raspberry pi, wanted to run Alexa within a timeout function (to save battery power).
To quit the SampleApp, users would need to input (q + enter).

Is there a way to quit the app or create a timeout quit function without relying on the input, or threading.

What is the expected behavior?
works as expected.
What behavior are you observing?
as expected
Provide the steps to reproduce the issue, if applicable:
import concurrent.futures
# import keyboard
import subprocess
import threading
import time
from timeit import default_timer as timer
from pynput.keyboard import Key, Controller

keyboard = Controller()  # Create the controller

# function to input (q + enter)  while Alexa is running to quit application
# after 10 seconds  (time_to_stop) is specified in running thread function
def start_timing(time_to_stop):
    stay_connected = True
    start = timer()
    while stay_connected == True:
        end = timer()
        time_difference = end - start
        if time_difference > time_to_stop:
            # input('q')
            keyboard.press("q")
            keyboard.release("q")
            time.sleep(0.2)
            keyboard.press(Key.enter)
            keyboard.release(Key.enter)
            time.sleep(0.2)
            stay_connected = False
            break

    return "Alexa ran out of time."

def start_alexa():
    subprocess.call("bash /home/pi/startsample.sh", shell=True)

with concurrent.futures.ThreadPoolExecutor() as executer:
    f1 = executer.submit(start_alexa)
    # time_to_stop = 30 seconds
    f2 = executer.submit(start_timing, 30)
    print(f2.result())

Tell us about your environment:
ssh @pi. VSCode
Overall setup:
https://github.com/ejri/Wise_Tree_5G_at_UBC
What version of the AVS Device SDK are you using?
  <x.y.z>

Tell us what hardware you're using:

[ ] Desktop / Laptop
[x] Raspberry Pi
[ ] Other - tell us more:

Tell us about your OS (Type & version):

[ ] Linux
[ ] MacOS
[ ] Raspbian Stretch
[ ] Raspbian Jessy
[x] Other - tell us more: Raspbian buster

Hi @ejri, this is an interesting idea.  Please note that the SampleApp is just an example application on how to use the AVS Device SDK.  If you want, you can create your own version of application and create this timer for your use case.  Thanks!


support for setting light event threshold

@pelikhan,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot