Parcels versioning and deprecation policy

I propose for us to formalise our versioning and deprecation policy for Parcels. This formalisation allows us to form a social contract with users, clearly communicating what they can expect in terms of compatibility of their code with future versions of Parcels. This formalisation also sets guidelines for development of the project, bringing active consideration to backwards compatibility and deprecations.
Our deprecation and versioning policy will be mentioned in our documentation.
Proposed policy:

Parcels, as of v3.1.0, has adopted versioning and deprecation policies.
Versioning
Parcels mostly follows semantic versioning, where the version number (e.g., v2.1.0) is thought of as MAJOR.MINOR.PATCH.

MAJOR version for incompatible API changes
MINOR version for added functionality in a backward compatible manner
PATCH version for backward compatible bug fixes

Parcels doesn't implement strict backwards compatibility between minor versions. We may make small changes that deprecate elements of the codebase (e.g., an obscure parameter that is no longer needed). Such deprecations will follow our deprecation policy.
Note when conducting research we highly recommend documenting which version of Parcels (and other packages) you are using. This can be as easy as doing conda env export > environment.yml alongside your project code.
Deprecation policy
Deprecations in the Parcels codebase between minor releases will be handled using the following 6-month timeline:

Functionality is marked for deprecation (e.g., in v2.1.0). This will include a warning to the user, instructions on how to update their scripts, and a note about when the feature will be removed. At this point the functionality still works as before.
One minor release later (e.g., in v2.2.0), or at least 3 months later, the functionality will be replaced with NotImplementedError.
One minor release later (e.g., in v2.3.0), or at least 3 months later, the functionality will be removed entirely.

These changes will be communicated in release notes.
Note that objects and modules won't be deprecated between minor releases.
Deprecations between major releases can be done at will as API changes are already expected.

If the community as a whole has any feedback on this, please comment below.

Yes, I like it!

Note that objects and modules won't be deprecated between minor releases.

Thinking of removing this line, and replacing with the following:

Deprecations of classes or modules between minor releases will be avoided, except in the instance where it is deemed to have little to no impact on the end user (e.g., if the class/module was mistakenly included in the Public API to begin with).

details if we really need to deprecate classes/modules

I found that its possible to have similar deprecation behaviour for classes, and we can also do the same for modules by renaming the module, and creating a dummy module file that raises warning in the module if people try import directly from it.

This gives us more flexibility :')


Use correct arithmetic types for sizes in SequenceFileReader.cpp.

This fixes the segfault when running on large alignments.

This should be applicable to develop as well, but I pointed it to the cluster branch for @rmhubley because it is a high priority in our pipeline.


proxyBlobStore implements Put

This PR proposes a fix to https://github.com/distribution/distribution/issues/3530.
We found that for certain images empty layers needed to be added to the BlobStore. Unfortunately that causes breakage (aka "unsupported operation") when running the Registry in proxy mode.
This PR delegates the implementation of Put to the localStore of a proxyBlobStore. Due to lack of experience with the codebase it's unclear whether this is the best approach to fix the issue but so far it seems to work.
Feel free to turn down the PR for a more principled fix.

Oh, I am certain this is not the right way to fix. This allows docker to push blobs. It still fails on commit but I think being able to upload blobs is a bad idea.


SSO authentication not working

Pre-requisites

[X] I have double-checked my configuration
[X] I can confirm the issues exists when I tested with :latest
[ ] I'd like to contribute the fix myself (see contributing guide)

What happened/what you expected to happen?
I upgraded Argo Workflow from 3.1.13 to 3.4.3. SSO Authentication was working fine with 3.1.13; however, the 3.4.3 doesn't seem to work.
The SSO configuration (Okta) has not changed.
When I tried to open the UI and click on login on the SSO, I get a red banner on the down right corner saying Failed to load version/info Error: Unauthorized. After that the web page just tries to load and after sometime it replies with test-ce-argo-server-integration.k8s.cnqr.tech didn't send any data.ERR_EMPTY_RESPONSE
Version
3.4.3
Paste a small workflow that reproduces the issue. We must be able to run the workflow; don't enter a workflows that uses private images.
N/A - The issue happens at login time, so I can't run any workflow.

Logs from the workflow controller
I am attaching the logs of the workflow server, because the error happens during authentication:
time="2022-11-07T13:37:32.115Z" level=info duration=2.752873ms method=GET path=/main.2430295409b8b54e52ad.js size=1471060 status=0
time="2022-11-07T13:37:32.117Z" level=info duration="23.156µs" method=GET path=index.html size=0 status=304
time="2022-11-07T13:37:33.935Z" level=info msg="finished unary call with code Unauthenticated" error="rpc error: code = Unauthenticated desc = token not valid for running mode" grpc.code=Unauthenticated grpc.method=GetUserInfo grpc.service=info.InfoService grpc.start_time="2022-11-07T13:37:33Z" grpc.time_ms=0.047 span.kind=server system=grpc
time="2022-11-07T13:37:33.935Z" level=info msg="finished unary call with code Unauthenticated" error="rpc error: code = Unauthenticated desc = token not valid for running mode" grpc.code=Unauthenticated grpc.method=GetInfo grpc.service=info.InfoService grpc.start_time="2022-11-07T13:37:33Z" grpc.time_ms=0.028 span.kind=server system=grpc
time="2022-11-07T13:37:33.935Z" level=info duration=1.628208ms method=GET path=/api/v1/userinfo size=56 status=401
time="2022-11-07T13:37:33.935Z" level=info duration=2.284157ms method=GET path=/api/v1/info size=56 status=401
time="2022-11-07T13:37:34.116Z" level=info duration="202.575µs" method=GET path=/assets/fonts/fa-solid-900.woff2 size=150472 status=0
time="2022-11-07T13:37:34.116Z" level=info duration="111.014µs" method=GET path=/assets/images/logo.png size=41464 status=0
time="2022-11-07T13:37:34.389Z" level=info msg="finished unary call with code Unauthenticated" error="rpc error: code = Unauthenticated desc = token not valid for running mode" grpc.code=Unauthenticated grpc.method=CollectEvent grpc.service=info.InfoService grpc.start_time="2022-11-07T13:37:34Z" grpc.time_ms=0.03 span.kind=server system=grpc
time="2022-11-07T13:37:34.389Z" level=info duration="438.543µs" method=POST path=/api/v1/tracking/event size=56 status=401
time="2022-11-07T13:37:36.819Z" level=info duration="67.668µs" method=GET path=index.html size=473 status=0
time="2022-11-07T13:37:56.819Z" level=info duration="68.792µs" method=GET path=index.html size=473 status=0
time="2022-11-07T13:38:16.819Z" level=info duration="74.393µs" method=GET path=index.html size=473 status=0
time="2022-11-07T13:38:36.819Z" level=info duration="83.064µs" method=GET path=index.html size=473 status=0
time="2022-11-07T13:38:56.819Z" level=info duration="68.599µs" method=GET path=index.html size=473 status=0
time="2022-11-07T13:39:16.819Z" level=info duration="81.42µs" method=GET path=index.html size=473 status=0
time="2022-11-07T13:39:36.819Z" level=info duration="72.698µs" method=GET path=index.html size=473 status=0

Logs from in your workflow's wait container
N/A
This is the service account configured for RBAC:
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  annotations:
    # The rule is an expression used to determine if this service account
    # should be used.
    # * `groups` - an array of the OIDC groups
    # * `iss` - the issuer ("argo-server")
    # * `sub` - the subject (typically the username)
    # Must evaluate to a boolean.
    # If you want an account to be the default to use, this rule can be "true".
    # Details of the expression language are available in
    # https://github.com/antonmedv/expr/blob/master/docs/Language-Definition.md.
    workflows.argoproj.io/rbac-rule: "true"
    # The precedence is used to determine which service account to use whe
    # Precedence is an integer. It may be negative. If omitted, it defaults to "0".
    # Numerically higher values have higher precedence (not lower, which maybe
    # counter-intuitive to you).
    # If two rules match and have the same precedence, then which one used will
    # be arbitrary.
    workflows.argoproj.io/rbac-rule-precedence: "0"

Please note that this bug is present also with version 3.4.2.
I rolled back to 3.1.13 and it's working again.
If I compare the logs, it looks like the issue is the 401 returned when calling the /api endpoints.

@sarabala1979 thanks for looking at it. Please let me know if you want to discuss it with a live demo. We can book some time and I can share with you what I see. Thank you.

it still works for me in 3.4.3 , I use Dex not okta

I thought that I was also affected by this issue or something similar. But for me the problem was running Kubernetes 1.25. Starting with Kubernetes 1.24 service account tokens are no longer generated automatically and I had to create an empty secret with appropriate annotation to get the token that Argo Workflows tries to read. See https://github.com/argoproj/argo-workflows/blob/master/docs/manually-create-secrets.md.
I was getting this error message in the server's logfile:
time="2022-11-14T17:12:21.485Z" level=error msg="failed to perform RBAC authorization" error="failed to get service account secret: secrets \"argo-workflows-server.service-account-token\" not found"

Leaving this note as it might help someone else who's searching through the issues.

Thanks for your update @elemental-lf - in my case I am using Kubernetes 1.19 so I shouldn't be affected. But thanks for pointing this out, I'd missed this info in my initial post.

I actually did this by using Chrome in Incognito mode and I get the Okta page back. But once I try to login, it just spins and then it returns test-ce-argo-server-integration.k8s.cnqr.tech didn't send any data.ERR_EMPTY_RESPONSE
We haven't changed anything on the Okta side, so I guess we are missing something in the request?

I think this might be fixed by #10046

My k8s version is: v1.23.10. And using argo server latest image with digest sha256:744501b36420f42eb33628206449bce4654604046baf19b193cbae4b25621291. I am still stuck on this issue.
My SSO server is the Argo CD dex.
The browse reports 401 with /api/v1/userinfo

I thought that I was also affected by this issue or something similar. But for me the problem was running Kubernetes 1.25. Starting with Kubernetes 1.24 service account tokens are no longer generated automatically and I had to create an empty secret with appropriate annotation to get the token that Argo Workflows tries to read. See https://github.com/argoproj/argo-workflows/blob/master/docs/manually-create-secrets.md.
I was getting this error message in the server's logfile:
time="2022-11-14T17:12:21.485Z" level=error msg="failed to perform RBAC authorization" error="failed to get service account secret: secrets \"argo-workflows-server.service-account-token\" not found"

Leaving this note as it might help someone else who's searching through the issues.

@LinuxSuRen could this be your case?

I don't how. But it works now. Thank @vitalyrychkov

FYI- SSO seems to work in v3.4.4 in single namespace but not managed namespace mode. I have not checked cluster install. The "latests" images for workflows do not seem to fix this issue yet. Have the fix been deployed to the latest image?

I think this might be fixed by #10046

@simox-83 Were you able to verify that this fix resolved your issue? What is install mode you have: namespace, cluster or managed namespace?

OK. Here's the issue, I think, which has nothing to do with proxy.
In v3.3.5 I have been able to configure SSO RBAC by defining role and binding in target namespace to annotated service account in server namespace and it worked. This no longer works in v3.4.4.
In v3.4.4 I have to to configure SSO RBAC by defining role and binding in target namespace to annotated service account ALSO in target namespace instead of server namespace.
Weather or not I defined SSO_DELEGATE_RBAC_TO_NAMESPACE=true had no bearing in either case.

@simox-83 Can you confirm that this has been resolved in the latest versions? We might be able to patch 3.3, but it's unlikely. We want to make sure it was fixed by #10046 and is working in 3.4

OK. Here's the issue, I think, which has nothing to do with proxy.
In v3.3.5 I have been able to configure SSO RBAC by defining role and binding in target namespace to annotated service account in server namespace and it worked. This no longer works in v3.4.4.
In v3.4.4 I have to to configure SSO RBAC by defining role and binding in target namespace to annotated service account ALSO in target namespace instead of server namespace. This SSO RBAC configuration does not work in v3.3.5
Whether or not I defined SSO_DELEGATE_RBAC_TO_NAMESPACE=true had no bearing in either case.

I faced same issue and we are not using proxy. We use managed namespace and we had to move the service account and the bindings from argo server namespace to the managed namespace in order to make it work for upgrading from 3.3 to 3.4.

Not stale. Needs fixing

This issue seems to have become a hodgepodge collection of different SSO configuration issues, which is hard to be actionable and often missing reproduction details. As such I'm going to close this out. If you have a specific SSO issue, please file a new bug report with a reproducible configuration showing the bug.

I think this might be fixed by #10046

OP's issue might have been fixed by this proxy change.
OP never responded. But if they weren't sure, then it's hard to say what the root cause was to begin with.

But for me the problem was running Kubernetes 1.25. Starting with Kubernetes 1.24 service account tokens are no longer generated automatically and I had to create an empty secret with appropriate annotation to get the token that Argo Workflows tries to read. See https://github.com/argoproj/argo-workflows/blob/master/docs/manually-create-secrets.md.
I was getting this error message in the server's logfile:
time="2022-11-14T17:12:21.485Z" level=error msg="failed to perform RBAC authorization" error="failed to get service account secret: secrets \"argo-workflows-server.service-account-token\" not found"

This appears to have been the problem for several people in this thread as well, and is unrelated to OP. The SA Secrets docs are now here (permalink): https://argo-workflows.readthedocs.io/en/release-3.5/service-account-secrets/

The red banner appears before you’re logged into. Can you try deleting cookies and logging back in? Ignore the banner.

This is also a common issue. The banner and error message is not indicative of the root cause.
More logging was added in #11370, so if you get this and think it may be due to a misconfiguration and not just an invalid or expired token, check your Server logs preceding this error.
We may remove this banner message due to being too generic and sometimes counter-productive per #12070 and #12168. I need to investigate more if we can possibly disambiguate the error better at that phase or prior (most SSO errors happen during the callback which precedes the login, hence the preceding logs mentioned above).

In v3.4.4 I have to to configure SSO RBAC by defining role and binding in target namespace to annotated service account ALSO in target namespace instead of server namespace. This SSO RBAC configuration does not work in v3.3.5
Whether or not I defined SSO_DELEGATE_RBAC_TO_NAMESPACE=true had no bearing in either case.

I faced same issue and we are not using proxy. We use managed namespace and we had to move the service account and the bindings from argo server namespace to the managed namespace in order to make it work for upgrading from 3.3 to 3.4.

This managed namespace change (without delegation) sounds like a potential regression. I couldn't find in the 3.4 changelog where that might have happened though, nor by looking through the code. #8555 maybe had a bug?
Problematically, that appears to have also been a breaking change, one that has persisted to 3.5 too 😕. Fixing that may result in another breaking change 😕

#8555 maybe had a bug?
Problematically, that appears to have also been a breaking change, one that has persisted to 3.5 too 😕. Fixing that may result in another breaking change 😕

Yep, that PR appears to have caused a completely undocumented breaking change regression 😕 See my comments in https://github.com/argoproj/argo-workflows/pull/8555#discussion_r1579963621
That is pretty confusing behavior for managed namespaces, so I'm inclined to change it back... but two breaking changes are not great either...
We could patch both 3.4.x and 3.5.x, but it'd be a breaking patch then... 😕

Discussed in today's Contributor Meeting and the consensus was that we would add a note to the 3.4 upgrading guide about this unintentional bug / breaking change to SSO RBAC with managed namespaces, and then fix it in 3.6 with another note.
Since this bug has existed for a while now (the entirety of 3.4 and 3.5), we don't want to break folks again in a patch release, so doing it in a minor will make things more clear

I'm a bit confused as to the current state of this feature. The issue is marked with "solution/workaround", but I don't think I understand. I can't seem to get namespace delegation to work when I put the service accounts into the rbac managed namespaces. It  only works when my service accounts are in the workflow server namespace.

What version of Argo are you on?
Per the reports and even the code above, delegation only worked in the managed namespace and not the server namespace. That is the workaround as well.
Also are you sure you're using a managed namespace? What flags have you passed to the Server?

I can't seem to get namespace delegation

Yes, namespace delegation specifically still works correctly. But if you turn it off and have a managed namespace in 3.4 or 3.5, your SAs will still have to be in the managed namespace. (and moving them there is a workaround).
See also my PR comment as the most clear, isolated  comment: https://github.com/argoproj/argo-workflows/pull/8555#discussion_r1579963621
(also I deleted my earlier comment as I misread)

You also might be able to workaround it by removing the managed namespace flag of the Server and make it cluster-level, but keep its RBAC only for the managed namespace. I haven't tried that though

Hey @agilgur5 thank you for the quick response. I was able to get it working with quite a bit of troubleshooting of some issues that were mostly due to my helm charts. I'll share my issues here in case it helps anyone else.

I didn't have the annotation workflows.argoproj.io/service-account-token.name present on the service accounts
2.My namespace rolebinding needs to be placed in the managed namespace via the namespace metadata flag and must reference the server service account via its namespace in the "subjects" reference (Potentially obvious, but I missed a field)
This was a tricky one. My helm templates were turning the workflows.argoproj.io/rbac-rule into double single quotes, i.e. '''engineering_infra_platform'' in groups' instead of "engineering_infra_platform" in groups. Make sure this is configured exactly. Oddly, this had previously been working in the non-namespaced mode.
Another helm templating mistake. The workflows.argoproj.io/rbac-rule-precedence annotation was being rendered as "100" vs 100. This was due to a refactor I made where I was placing the value in a dictionary and referencing it. What was particularly tricky was that it did not show up any differently in k9s via the default view. It only showed up when I described the object.


Hide horizontal scrollbar when not in use

I'm using Chrome on Windows 10. When making the screen smaller, it shows a disabled horizontal scrollbar.

I personally think it doesn't look all that great so I suggest instead of setting overflow-x: scroll to overflow-x: auto so the scrollbar only appears if it needs to.
I would love to do it myself for an easy hacktoberfest point (heh), but is it ok to proceed with a PR?

@Pixelrobin Hey Michael 👋🏼 Good catch! I think that the author of that commit meant to put overflow-y: scroll as opposed to overflow-x since the X-axis never actually scrolls there.
If you want, submit a PR that fixes this issue and grab that Hacktoberfest point! 😃

Alright, I'll take it! I think auto would be better because on super tiny sizes (that are honestly kind of unrealistic), it does actually need to scroll a bit.

I think this issue can be closed as the fix has been merged in #220.

Oh yeah, sorry about that.


[Help] NSInternalInconsistencyException on Embedded/Nested Section

Hi! This is probably not related to IGListKit in the way "there is something wrong with the library", but in "I can't figure out this, and it is related to it, please help".
I thought it was a great idea to have a nested/embedded section controller, but I want to do operations inside them and between them. For example, in an attendance app example, I would like to tap the user in the top section (if you download the app and run, you will understand) and it goes to the second section; or if the user is in the second section, when tapping it goes to the first. Deleting or renaming is also allowed.
The problem is.. I have no idea how to do this with the current structure I have. EVERYTHING I try I get a "NSInternalInconsistencyException.. expected 3, but found 2" kind of thing. My structure is currently an array of ListDiffable's inside a ListDiffable. I'm not even doing a "move", only trying to remove before add anything and it is not working.

I tried a collectionContext?.performBatch inside the SectionController, tried to remove items from an array, like self.presence?.items.removeAll(), tried to make a forEach() on data[Any], get the value I want, then perform the operation.. But I'm missing something (and probably not hard, but I don't know what). The self.adapter.performUpdates(..) is always there, so I'm not sure what it is..
BTW, if it is Ryan reading this, check my viewDidLayoutSubviews+viewWillTransition inside CollectionParent; it was the best solution for IGListKit rotation I've found to date. Might help your other apps.
NSInternalInconsistencyException.zip

Yes, if you are not using IGListCollectionLayout you could use something like below to invalidate the layout. I have had some issues myself with invalidating the layout after rotation only until now I have been unable to set breakpoints in IGListKit from inside my problematic app for some reason.
        let layout = collectionView.collectionViewLayout
        layout.invalidateLayout()
        coordinator.animate(alongsideTransition: { _ in
            self.adapter.performUpdates(animated: true, completion: nil)
            layout.invalidateLayout(with: layout.invalidationContext(forBoundsChange: CGRect(x: 0, y: 0, width: size.width, height: size.height)))
        })

I thought it was implemented yet, I'm going to use different sections for everything for now.. Thanks!
In 3.2.0, if I have any issue with the transition, I warn you. Thanks!


Store only most recent blocks in cache

PR Description
Fixed Issue(s)

Not sure in this but let's try.
So by my measurement on mainnet node it was something like this:
2200 hits in hour

1500 available in current master
700 misses

All requests in interval [current-94, current], so last 3 epochs
After changes I get something like

1650 available
550 misses

Just a 10% improvement. Also looking at misses, we will spend 64 more (96 total) signedBlock memory slots for 1/4 of hits, while currently using 32 for 3/4 of hits. Doesn't worth increasing the size of the cache.
Documentation

[x] I thought about documentation and added the doc-change-required label to this PR if updates are required.

Changelog

[x] I thought about adding a changelog entry, and added one if I deemed necessary.

Yes, I agree seem like with 32 we cover a decent amount and, from the numbers you posted, increasing it would just be an attempt to cover "the long tail".

i'd be happy with just going straight to storage (not caching) anything finalized, and non finalized can go through the cache, which probably solves the same thing.... i guess basically hot blocks column has a cache and finalized blocks column arguably doesnt need one...
thats a sweeping statement, sorry... but yeh i think given the numbers thats probably the avenue i'd be investigating...


Postgres 10 synchronize slave databases fails due to bg_basebackup change

std_err output:
    "/usr/pgsql-10/bin/pg_basebackup: unrecognized option '--xlog-method=stream'",
    "Try \"pg_basebackup --help\" for more information."

For some reason pg_basebackup removed the --xlog-method command switch in Postgres 10.
Note the docs for 9.6:
https://www.postgresql.org/docs/9.6/app-pgbasebackup.html
-X method
--xlog-method=method
Both options are listed
For Postgres 10
-X method
--wal-method=method
The below line leads me to believe xlog was renamed to wal for this utility:
"The write-ahead log files are written to a separate file named pg_wal.tar (if the server is a version earlier than 10, the file will be named pg_xlog.tar)."
Changing to -X will be compatible with both old and new versions
So instead of
--xlog-method=stream
-X stream

I have have committed a solution to my fork and will create a pull request shortly after some more testing

Closing this issue as issue 18 is tracking the Postgres 10 compatibility effort.


Create id.ts

Indonesian Translations

Wow, this looks great, thank you so much for taking the time to translate into Indonesian!
I noticed you're missing a closing quote here:
https://github.com/bitcoin-dot-org/BitcoinWalletMobile/blob/44797ecbe9840eaf57dd86c47551ba2685eadc37/lang/id.ts#L42

Wow, this looks great, thank you so much for taking the time to translate into Indonesian!
I noticed you're missing a closing quote here:
https://github.com/bitcoin-dot-org/BitcoinWalletMobile/blob/44797ecbe9840eaf57dd86c47551ba2685eadc37/lang/id.ts#L42

ougghhh... missed that. Fixed now

Merged :)

bc644e1113da2da5a3f77838184579647bf32c65


FirebaseListObservable emits duplicate values for first insert

If I subscribe to an empty list, and then add a new value to that list it looks like that value is getting emitted twice. For example if I do:
let observable = this._angularFire.list('my_path', {preserveSnapshot: true});
observable.subscribe ((l) => {
  console.log('length', l.length);
});
setTimeout(() => {
  observable.add({text: 'new'});
}, 1);

If 'my_path' is initially empty this will output:
length 1
length 2
The 2 is erroneous and contains a duplicate entry.
It doesn't look like this problem occurs if 'my_path' is not initially empty.

@davideast I'll take care of this one unless you've started work.

@jteplitz602 I can't reproduce this. I copied your reproduction into a test, and I'm seeing length 0 and length 1, which are expected since the observable emits an empty array the first time if the path is empty. I'll leave this open in case I'm missing something.

Closed

I'm having the same issue but I also get it when I modify a record. So when I change a property on an item in the list, it creates a duplicate of the item in the new state. The duplicate does not exist on the server and is cleared on reload.

@doovers Hmmm... 😕 This shouldn't be the case. Can you provide a code sample to reproduce?

Hi @davideast, I'm facing the same problem described by doovers.
Here's what I'm doing (it can easily be my fault since I'm still new to this):
---test.component.ts :
import {Component} from 'angular2/core';
import {AngularFire, FirebaseListObservable} from 'angularfire2';

@Component({
    selector: 'test',
    templateUrl: 'app/test.component.html'
})

export class TestComponent{
    private _testList: FirebaseListObservable<any[]>;

    constructor(private _af: AngularFire) {
        this._testList = _af.database.list('/test');
    }

    addNew(item: any){
        this._testList.push(item);
    }

    updateMe(item: any){
        this._testList.update(item, { value: 5});
    }

    removeMe(item: any){
        this._testList.remove(item);
    }
}

---test.component.html :

Value: {{ item.value }}

    <button type="button" (click)="updateMe(item)">Update me!</button>
    <button type="button" (click)="removeMe(item)">Remove me!</button>

<form #form="ngForm" (ngSubmit)="addNew(form.value)" novalidate>
  Value:
  <input type="text" ngControl="value" required>
  <button type="submit" [disabled]="!form.form.valid">Add</button>
</form>

If you try to update the first item of the list, it will show both the old value and the new updated value (5) and every new item inserted from now on is duplicated; if you update every other item, it seems to work fine. The server always shows the correct results.

Have the save issue

    {{item.$value}}

this.items = af.database.list("/items");

When I try to update an item from Firebase.com DB studio, I get dublicates listed in a view.

@davideast Hi David sorry for the late response! I haven't had time to look at this until now. I've tried to recreate the problem in a small demo app but haven't been successful so far. It must be something specific I'm doing in my main project. I'll keep digging and report back when I figure it out!

Same issue here, only happens for the first item(add/update), there will be a new value with an old value pops up, and the old value disappears when page gets refreshed

#140 will address this 🔧

I have the same issue, when I update or insert or delete a record, I got duplicate data, and I can't figure out how to resolve this problem, i am working with ("angularfire2": "^2.0.0-beta.2","firebase": "^3.2.1"), if that will help you any way.

I am having the same issue with my sample application at http://taotasks.com.
Visit the website and login with google, then add a few tasks, then click a task and update some fields, when it goes back to the list, the observable has emitted multiple duplicates.
Tasks List
`import { Component, OnInit } from '@angular/core';
import { RouterModule, Router } from '@angular/router';
import { AngularFire, FirebaseListObservable } from 'angularfire2';
import { AF } from './providers/af';
import { Task } from './task';
import { TaskDetailComponent } from './task-detail.component';
import { TaskService } from './task.service';
@Component({
selector: 'tao-tasks',
moduleId: module.id,
templateUrl: './tasks.component.html',
styleUrls: ['./tasks.component.css']
})
export class TasksComponent implements OnInit {
tasks: FirebaseListObservable<Task[]>;
title = 'Tao Tasks';
selectedTask: Task;
af: AngularFire;
constructor(private taskService: TaskService,
	private router: Router, af: AngularFire, private afService: AF) {
	this.af = af;
}

getTasks(): void {
	this.tasks = this.taskService.getTasks();
}

ngOnInit(): void {

	this.afService.af.auth.subscribe(
		(auth) => {
			if (auth == null) {
				console.log('Not Logged in.');
				this.router.navigate(['login']);
			}
			this.getTasks();
		});

}

gotoDetail(task): void {
	this.router.navigate(['/detail', task.$key]);
}

add(name: string): void {
	name = name.trim();
	if (!name) { return; }
	var key = this.taskService.create(name);
	this.selectedTask = null;
}

delete(task): void {
	this.taskService
		.delete(task.$key)
		.then(() => {
			//todo: this.tasks = this.tasks.filter(h => h !== task);
			if (this.selectedTask === task) { this.selectedTask = null; }
		});
}

}
`
Task Details
`

Details
{{task.name}}

Name

Description

Date

Time

Back
Save

`
Components
Task List Components.
`import { Component, OnInit } from '@angular/core';
import { RouterModule, Router } from '@angular/router';
import { AngularFire, FirebaseListObservable } from 'angularfire2';
import { AF } from './providers/af';
import { Task } from './task';
import { TaskDetailComponent } from './task-detail.component';
import { TaskService } from './task.service';
@Component({
selector: 'tao-tasks',
moduleId: module.id,
templateUrl: './tasks.component.html',
styleUrls: ['./tasks.component.css']
})
export class TasksComponent implements OnInit {
tasks: FirebaseListObservable<Task[]>;
title = 'Tao Tasks';
selectedTask: Task;
af: AngularFire;
constructor(private taskService: TaskService,
	private router: Router, af: AngularFire, private afService: AF) {
	this.af = af;
}

getTasks(): void {
	this.tasks = this.taskService.getTasks();
}

ngOnInit(): void {

	this.afService.af.auth.subscribe(
		(auth) => {
			if (auth == null) {
				console.log('Not Logged in.');
				this.router.navigate(['login']);
			}
			this.getTasks();
		});

}

gotoDetail(task): void {
	this.router.navigate(['/detail', task.$key]);
}

add(name: string): void {
	name = name.trim();
	if (!name) { return; }
	var key = this.taskService.create(name);
	this.selectedTask = null;
}

delete(task): void {
	this.taskService
		.delete(task.$key)
		.then(() => {
			//todo: this.tasks = this.tasks.filter(h => h !== task);
			if (this.selectedTask === task) { this.selectedTask = null; }
		});
}

}
`
Task Details Component.
`import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Params } from '@angular/router';
import { Location } from '@angular/common';
import 'rxjs/add/operator/switchMap';
import { TaskService } from './task.service';
import { Task } from './task';
@Component({
moduleId: module.id,
selector: 'my-task-detail',
templateUrl: './task-detail.component.html',
styleUrls: ['./task-detail.component.css'],
})
export class TaskDetailComponent implements OnInit {
task;
constructor(
private taskService: TaskService,
private route: ActivatedRoute,
private location: Location
) { }
ngOnInit(): void {
this.route.params.switchMap((params: Params) => this.taskService.getTask(params['id']))
.subscribe(task => this.task = task);
}
goBack(): void {
this.location.back(); // Make more defensive to not exit app.
}
save(): void {
this.taskService.update(this.task)
.then(() => this.goBack());
}
}
`
Here is my data layer.
`import { Injectable } from '@angular/core';
import { AngularFire, AuthProviders, FirebaseListObservable,  FirebaseObjectObservable, AuthMethods } from 'angularfire2';
import { Task } from '../task';
@Injectable()
export class AF {
auth;
tasksUrl='';
rootUrl='';
constructor(public af: AngularFire) { }
/**

Logs in the user
@returns {firebase.Promise}
/
loginWithGoogle() {
return this.af.auth.login({
provider: AuthProviders.Google,
method: AuthMethods.Popup,
});
}
/*
Logs out the current user
*/
logout() {
return this.af.auth.logout();
}

setUserInfo(displayName, email, photoURL ){
let user = this.af.database.object(${this.rootUrl}/${this.auth.uid});
user.update({
displayName: displayName,
email: email,
photoURL: photoURL
});
}
getTasks() {
return this.af.database.list(this.tasksUrl);
}
getTaskByKey(key: string) {
return this.af.database.object(${this.tasksUrl}/${key});
}
// Returns the key of the task
addTask(name: string) {
return this.af.database.list(this.tasksUrl).push({ name: name }).key;
}
updateTask(task) {
const dbTask  = this.getTaskByKey(task.$key);
const model = new Task();
model.date = task.date == null ? null : task.date;
model.description = task.description == null ? null : task.description;
model.name = task.name == null ? null : task.name;
model.time = task.time == null ? null : task.time;
return dbTask.update(model);
}
deleteTask(key: string) {
return this.af.database.list(this.tasksUrl).remove(key);
}
search(term): FirebaseListObservable<Task[]> {
console.log("Search Term is " + term);
return this.af.database.list(this.tasksUrl, {
query: {
orderByKey: true,
equalTo: term,
}
});
}
getDashboardTasks() {
return this.af.database.list(this.tasksUrl, {
query: {
limitToLast: 4,
orderByKey: true
}
});
}
}
`
And here is app.component.ts
`import { Component } from '@angular/core';
import { AF } from './providers/af';
import { Router } from '@angular/router';
@Component({
moduleId: module.id,
selector: 'tao-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
})
export class AppComponent {
title = 'Tao Tasks';
public isLoggedIn: boolean;
public isCollapsed: false;
public auth;
constructor(public afService: AF, private router: Router) {
this.afService.af.auth.subscribe(
(auth) => {
if (auth == null) {
console.log('Not Logged in.');
this.router.navigate(['login']);
this.isLoggedIn = false;
} else {
this.auth = auth;
this.afService.auth = auth;
this.afService.tasksUrl = /users/${auth.uid}/tasks;
this.afService.rootUrl = '/users';
this.afService.setUserInfo(auth.google.displayName, auth.google.email, auth.google.photoURL);
console.log('UID: ' + auth.uid );
console.log('Successfully Logged in.');
this.isLoggedIn = true;
this.router.navigate(['']);
}
}
);
}
logout() {
this.afService.logout();
}
public collapsed(event: any): void {
console.log(event);
}
public expanded(event: any): void {
console.log(event);
}
}
`

This issue seems to have cropped up again?
DB is structured as:
/docs/[userId]/[docId]/...
I have a page that is subscribed to a particular user's doc via list('/docs/123').subscribe When I update a doc (or multiple) via object('/docs/123/xyz').update(...), my list subscription returns duplicates. Specifically, one copy returns with only the object data:
{
 prop1: ...
 prop2: ...
 ...
}

While the other copy returns decorated as usual:
{
  $key: xyz,
  $exists: ...
  prop1: ...
  prop2: ...
  ...
}

@ansorensen Can you create a plnkr for debugging?

I'm running into the same issue, duplicating the first value, until I do a page refresh, and then it disappears.

@Bengejd @ansorensen I don't mind looking into these types of issues. In fact, if there is a bug, I would like to fix it, lest it affect me. However, to do that, this needs to be reproduced in a plunk.

@cartant I appreciate it, but I honestly have no idea how to reproduce it outside of my environment. I'm experiencing a lot of weird stuff with Observables right now, so I'm gonna try and figure out the cause of my problem. If I can't, i'll figure out how to set up the plunk like you asked.

Just one more "me too" - I'm currently having the issue where I get back a duplicate of the first node. Specifically I'm using the AngularFIreDatabase's ".list('my/path')" method.
In addition and hopefully related, I randomly get duplicates all over a list of objects then when I refresh the duplicates disappear and it's incredibly difficult to debug because it happens seemingly at random and I can't reliably reproduce the issue.

I am having the same problem! When I first load the app, the table displays the info as in the db, but if I update or insert a new value, for some reason, if I console the items, i get the 5 items on the db, but the first one is adding up the last query, so for example, if i have two records on the db and they have a value of 100, and 200 the first time it displays 100 and 200, but when I update for instance the second one to 100, the console displays the first item with 300 and the second with 100, so they add up 400. If i cancel or refresh the page, or run the query again by clicking the button it displays the correct info, but when doing it on real time it has that problem
getVentasByRangoFecha(desde: string, hasta: string) {
    let ventas: FirebaseListObservable<Venta[]> = null;

    ventas = <FirebaseListObservable<Venta[]>> this.db.list('ventas', {
      query: {
        orderByChild: 'fecha',
        startAt: desde,
        endAt: hasta
      }
    }).map(items => {
      console.log(items);

      const map = new Map();

      for (const item of items) {
        if (!map.has(item.uid)) {
          map.set(item.uid, item);
        } else {
          const venta: Venta = map.get(item.uid);

          venta.kilos = venta.kilos + item.kilos;
          venta.pesos = venta.pesos + item.pesos;
          venta.ventas = venta.ventas + item.ventas;
          venta.visitas = venta.visitas + item.visitas;
        }
      }

      return Array.from(map.values());
    });

    return ventas;
  }

Thanks

I'm having the same issue as well. My app is literally unpublishable at this point. I'm not going to hack-away a solution. Please fix!

I am also having the same problem. It appears to happen when data is changed as a part of the initial subscription. Very annoying -- I'd have to hack away a solution so I can release my app, but I'd prefer not to. Please fix!

I stopped having this issue shortly after I submitted my comment, this is my current setup of how I'm subscribing to the data, but I doubt it would be any help to you guys. It's typically bad practice to subscribe in the constructor, but oh well, you can do it there, or in the onInit().
constructor(public af: AngularFire, public auth: AuthService, public fbs: FirebaseService) {
    this.buildingCards = this.af.database.list(this.fbs.bLocation);
    this.buildingCards.subscribe();
  }

@davideast There is a serious data duplication problem with database lists. Updates to the list produce duplicates, initial loading of lists produce duplicates, .map and .subscribe produce duplicate. Have you taken a look at this all?

Is there any word on this? I'm having this problem as well.

@zaki-arain If you're running into this issue then please create a plnkr replicating it and then open a new issue. We'll be happy to debug :)


Make hashtags discoverable

Is your feature request related to a problem? Please describe.
Hashtags are a dismal experience on bluesky. To make it worse search doesn't surface them as you type, hiding them even further

And while we're at it, complete them as you start to type # something in a post just like you  do for @ in posts.
Or just give up and remove them.
Describe the solution you'd like
If a search begins with # don't return users, return posts as your type or the hashtags themselves
Describe alternatives you've considered
Poking people with sharp sticks. Not feasible given geography.
Additional context

I am picking this up. Are there any edge cases to keep in mind?


Parse node_modules/element-plus/dist/index.css failed.

Steps to reproduce
today ,i usually npm outdate and update package  . this bug happens to me
What is expected?

What is actually happening?
css file parsed failed
System Info
System:
    OS: Windows 10 10.0.19045
    CPU: (8) x64 AMD Ryzen 5 3550H with Radeon Vega Mobile Gfx
    Memory: 7.11 GB / 14.88 GB
  Binaries:
    Node: 20.11.1 - C:\Program Files\nodejs\node.EXE
    Yarn: 1.22.22 - C:\Program Files\nodejs\yarn.CMD
    npm: 10.2.4 - C:\Program Files\nodejs\npm.CMD
    pnpm: 8.15.4 - C:\Program Files\nodejs\pnpm.CMD
  Browsers:
    Edge: Chromium (122.0.2365.92)
  npmPackages:
    @farmfe/core: ^1.0.3 => 1.0.3
 @farmfe/cli: ^1.0.0

Any additional comments?
No response

element css uses legacy outdate css syntax that is not supported by swc, add following plugin to remove the legacy code:
{
        name: 'remove-css-filter-plugin',
        priority: 0,
        transform: {
          filters: {
            resolvedPaths: [
              'element-plus/dist/index.css',
            ]
          },
          async executor({ content }) {
            return {
              content: content.replace(/filter:\s*alpha\(opacity=0\);/g, '')
            };
          }
        }
      }

duplicate #1084


CMMC Model v1.0 Assessment Template

🚀 Feature Proposal
CMMC Model v1.0 Assessment Template
Motivation
To be able to assess against the newly released CMMC Cybersecurity Maturity Model Certification standard.
Example
https://www.acq.osd.mil/cmmc/draft.html
Pitch
This newly released framework is now the standard for DIB contractors.

This would be huge. If there are plans to include CMMC, I'm sure everyone would want to know about it.  Right now my options are ComplyUp for $3600/yr or roll your own solution with Excel.

Concur with @skillsinc-Ed.  Would be nice to have something to easy the compliance workload for contractors supporting the DoD as there are a lot of questions surrounding CMMC.

Critical in my opinion that a CMMC assessment is added.

Or if you could just include the 20 additional questions for CMMC Level 3, we can use 800-171 for the other 110 requirements.

Hello all! Appreciate the feedback. We've been working hard to get the new CMMC assessment out the door, and I am happy to report that CMMC is now available in CSET! Please check it out and let us know if you have any questions or need assistance. Thanks!


Launch the Braavos wallet to mint when I log in with the Argent X wallet

Describe the bug
When I log in with my Argent X wallet on the Dapp, then I want to buy an NFT of a project, the frontend opens my Braavos wallet instead of the Argent X wallet to mint.
Important: However, this does not happen when I connect my wallet Argent X at the time I am on the project page I want to mint. This only happens when my wallet is connected to the front page, the Project Index page.
To Reproduce
Steps to reproduce the behavior:
[Step 1] I log in with my Argent X wallet on the Project index page,
[Step 2] I click on a project and I arrive on its page.
[Step 3] I try to buy an NFT of the project, the frontend opens my Braavos wallet instead of the Argent X wallet to pay.
Behavior
Expected behavior
When I want to pay/mint, the frontend asks me to use the wallet I'm connected with.
Frequency:
Each time on the testnet-2

@cloudvenger I can't reproduce in dev so far.
Let's try again when a version will be deploy on fly.

The same for me, I can not reproduce on the new dev.
I close this bug and we reopen it if he comes back

Réalisé après un premier mint reussi sur kenya j'ai selectionner un autre projet : uganda et bug
quand je suis connecté avec argent
impossible de disconnect ou de mint ; et ça ouvre bravos par défaut

Fix #1
We now have a connection popup when multiple wallet


Sending a reply starting with the sequence "0. " followed by any character will crash the bot framework channel emulator.

Bot framework channel emulator version: <IP_ADDRESS>
Sending any reply starting with the sequence "0. c" or any other character, or sequence of characters will result in an error, with the stack trace that is at the bottom of this post being printed in the chat window as the bot response.
The "text property" in the JSON string on the right side of the emulator shows the message just fine, indicating that the JSON string was indeed correctly recieved by the emulator. This is why i suspect that there is a problem with the parser that composes the response chat messages.
some examples in c# below:
Activity reply = activity.CreateReply("0. c test 123");
await connector.Conversations.ReplyToActivityAsync(reply);

Results in an error being thrown.
Activity reply = activity.CreateReply("random text 0. c test 123");
await connector.Conversations.ReplyToActivityAsync(reply);

Works just fine.
Stack trace:
System.Windows.Markup.XamlParseException: 'Set property 'System.Windows.Documents.List.StartIndex' threw an exception.' Line number '3' and line position '29'. ---> System.ArgumentException: '0' is not a valid value for property 'StartIndex'. at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal) at System.Windows.Baml2006.WpfMemberInvoker.SetValue(Object instance, Object value) at MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetValue(XamlMember member, Object obj, Object value) at MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetValue(Object inst, XamlMember property, Object value) --- End of inner exception stack trace --- at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri) at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, Boolean skipJournaledProperties, Uri baseUri) at System.Windows.Markup.XamlReader.Load(XamlReader xamlReader, ParserContext parserContext) at System.Windows.Markup.XamlReader.Load(XmlReader reader, ParserContext parserContext, XamlParseMode parseMode) at System.Windows.Markup.XamlReader.Load(XmlReader reader) at Microsoft.Bot.Framework.Emulator.Message2XamlConverter.Convert(Object value, Type targetType, Object parameter, CultureInfo culture)

Thanks; we're working on updated to the Bot Framework Emulator and I'll add that to the issues list to look at.

Yeah, we are rebuilding it, but if you want a workaround the problem is that it is interpreting the text as markdown for a numbered list.
You can change TextFormat=plain to disable markdown
You can put a space at the beginning of the line to disable the detection of the ordered list promotion.
You can start with 1. instead of 0.


Reduce time stamp precision

The really nice thing about cshatag, compared to other tags file solutions like chkbit, is that the tag follows the file along when the file is moved or copied, as long as the destination filesystem supports extended attributes.
But this unfortunately breaks when the time resolution of the target filesystem is less that the original filesystem. This would prevent detecting bit corruption that happened during move or copy operations.
For example, using the Go rewrite, and with:

/tmp on my root filesystem (APFS)
/Volumes/Organizer from my NAS, mounted through SMB (SMB_3.02)

$ rm /Volumes/Organizer/test.bin \
; touch /tmp/test.bin \
&& cshatag /tmp/test.bin \
&& mv /tmp/test.bin /Volumes/Organizer/ \
&& cshatag /Volumes/Organizer/test.bin

remove /Volumes/Organizer/test.bin? y
<outdated> /tmp/test.bin
 stored:<PHONE_NUMBER>000000000000000000000000000000000000000000000000000000<PHONE_NUMBER>.000000000
 actual: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855<PHONE_NUMBER>.563117837
<outdated> /Volumes/Organizer/test.bin
 stored: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855<PHONE_NUMBER>.563117837
 actual: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855<PHONE_NUMBER>.000000000

The second cshatag call, on the SMB share, considers the tag outdated. If corruption had happened during the move operation, cshatag would have missed it.
Suggestion: if I remember well, FAT was probably the lowest denominator, with 2 seconds resolution timestamps. So to ensure maximum compatibility, cshatag should consider the file unchanged if the file timestamp is within +/- 2 seconds of the tag timestamp.
So, to sum it bug-report style:
Current behavior
<outdated> /Volumes/Organizer/test.bin
 stored: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855<PHONE_NUMBER>.563117837
 actual: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855<PHONE_NUMBER>.000000000

Expected behavior
<ok> /Volumes/Organizer/test.bin

Do you think this makes sense, and this is possible to add to the Go rewrite?

Hello.
I've run into a similar issue copying files between ext4 and NTFS partitions.
On an NTFS file systems the mtime resolution is 100ns. If I copy a file from ext4 to NTFS file system using NTFS-3G, the last two digits of the file modification timestamp become 0.
Subsequent use of cshatag against the same file on NTFS will indicate the file is outdated even if the file has not been touched.
For example:
$ cshatag foo.txt
<outdated> foo.txt
 stored:<PHONE_NUMBER>000000000000000000000000000000000000000000000000000000<PHONE_NUMBER>.000000000
 actual: 181210f8f9c779c26da1d9b2075bde0127302ee0e3fca38c9a83f5b1dd8e5d3b<PHONE_NUMBER>.840550551

$ cshatag foo.txt
<ok> foo.txt

$ cp -a foo.txt /home/$USER/ntfs_mount/

$ cshatag /home/$USER/ntfs_mount/foo.txt
<outdated> /home/$USER/ntfs_mount/foo.txt
 stored: 181210f8f9c779c26da1d9b2075bde0127302ee0e3fca38c9a83f5b1dd8e5d3b<PHONE_NUMBER>.840550551
 actual: 181210f8f9c779c26da1d9b2075bde0127302ee0e3fca38c9a83f5b1dd8e5d3b<PHONE_NUMBER>.840550500

$ cshatag /home/$USER/ntfs_mount/foo.txt
<ok> /home/$USER/ntfs_mount/foo.txt

This doesn't seem to happen between other filesystems with different mtime granularity (I tested ext2, ext3 and ext4 and chatag wouldn't work for me for files on FAT or ExFAT).
For my own use I wrote some code so that cshatag could be used with an -ntfs flag which then ignores any discrepancy under 100ns.
I think it is worth keeping the full width of the time stamp as a default. The simplest solution would be to have a different type of <ok> output to indicate that, although the timestamp is different, the file is identical. For example:
$ cshatag foo.txt
<unchanged> foo.txt

This only needs one extra 'if' condition in the code. A more complex solution would be command-line flags specifying an acceptable time discrepancy such as 2s, 1s, 1ms, 100ns, 1ns (default). For example:
$ cshatag -time=100ns foo.txt
<ok> foo.txt

I would be happy to submit pull requests for either if @rfjakob is interested.

@es80 I was also thinking of adding an option at first. I like your -time= idea the best, by the way.
But then I realized: what happens when you do have some bit corruption during your cross-filesystem transfer(*), and forget to use that -time option? A false negative: bit corruption happened, but it will not be detected, which is the first job of cshatag.
Take the opposite case: we modify cshatag to ignore up to 2s time differences. Now what happens when there is bit corruption during cross-filesystem copy? We catch it, yeah! Now what if there is a legitimate file change within 2s of the original cshatagging ? We get a false positive. The user may get a scare, but no harm done.
So for me, while the option was a good idea, it needs to be implemented as the default behavior. What do you think @es80 and @rfjakob ?

Yes, that's a good point. I wrote some code for a -time option which sought to leave the default behaviour intact. But it does start to get a bit complicated since there are quite a few options for how the program might behave in the different cases.
My main preference would be to be able to differentiate those cases with different status outputs for example, or have options for how they are processed.
But as for the default behaviour, I really don't mind. I suppose the false positives you describe would be very unlikely.
(I actually tried to cook up a false positive and found even with nanosecond precision you can do
$ ./cshatag log.txt > log.txt

or occasionally
$ ./cshatag log.txt; echo "changed" >> log.txt;

then on the next check log.txt is marked corrupt. The level of precision in timestamps is somewhat illusory - the granularity on my system is around 0.005s.)

I like the idea of reporting it with a distinct event type. This case is now reported as <timechange>.


Importing a node module with a CSS entry point no longer works

Describe the bug
Importing a package like modern-normalize now no longer works without suffixing ?import manually
Suffixing ?import treats the module as external in production builds.

System Info

vite version: 0.14.3
Operating System: Arch Linux
Node version: 14.2.0

Using a relative import pointing to node_modules does work correctly.

it seems counterintuitive having to do that though 🙂

Agreed, same thing for importing css through @import in the style section, just started looking through the code for the resolver to see what changed.

Originally we treated direct imports to .css as a request to js code that inserts the css, and .css?raw returns the actual css. However this requires us to be able to differentiate between .css requests that are from JS vs. ones made by <link rel="...">. Previously we checked the request's referer header to do that, which works in Chrome and FF, but breaks in Safari because Safari uses the page url instead of the script url as the referer for native ES module imports...
So the new approach rewrites js imports to css to .css?import, but it now misses resolved bare modules and @import inside css.
There are definitely ways to fix it, just explaining the change here.

understandable, though a little disappointed that safari is doing something different than the two major browsers 😃

Looks like this is broken again since 0.18.0

import normalize.css is also broken(https://github.com/necolas/normalize.css/), error msg: The server responded with a non-JavaScript MIME type of "text/css".
Both import normalize.css?raw and import normalize.css?import work well.

Fixed in 6e06fcf - added a test for it to avoid regressions...


Add hybrid model

Idea: use callbacks to switch between a jump process at small population sizes and an ODE at large population sizes.

See this paper and associated references

I added a simple hybrid model using callbacks in https://github.com/epirecipes/sir-julia/commit/b508b2fd6d643d8ba7c33ccdae5fbe5b5e178738


Updating tekton file for fms-hf-tunning component

Description of the change

Related issue number

How to verify the PR

Was the PR tested

[ ] I have added >=1 unit test(s) for every new method I have added.
[ ] I have ensured all unit tests pass

LGTM


Updated Agar.io URL

https rendering all the scripts useless.

So, this helps with all the scripts being rendered useless?

@Drflash55 Most probably. The script wasn't able to detect the non-https URL previously, thus making it unable to work.

@Apostolique, check to see if this fixes some issues of the bot, and post the results of your findings.
I'm currently at High School right now.

Doesn't this render http useless then as https://agar.io/* only works for https, not http ?
Currently working on making this work for https - this is not the way to do it as we need a universal solution which works for https and http.


Installation issue Windows 7 64 bit Julia 0.4.3

When upgrading Julia to 0.4.3 I am unable to install Cairo. Originally there was a download error from WinRPM, but that seems fixed by updating sources.list. Cairo still won't build though.
Fixes I've tried:

updating sources.list from WindowsRPM to the warwick mirror.
Removing .julia folder and reinstalling all packages.
Pkg.update()
Pkg.checkout("WinRPM", "tk/cache")

julia> versioninfo()
Julia Version 0.4.3
Commit a2f713d (2016-01-12 21:37 UTC)
Platform Info:
System: Windows (x86_64-w64-mingw32)
CPU: Intel(R) Core(TM) i3-4000M CPU @ 2.40GHz
WORD_SIZE: 64
BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell)
LAPACK: libopenblas64_
LIBM: libopenlibm
LLVM: libLLVM-3.3
julia> Pkg.checkout("WinRPM", "tk/cache")
INFO: Checking out WinRPM tk/cache...
warning: CRLF will be replaced by LF in sources.list.
The file will have its original line endings in your working directory.
ERROR: WinRPM is dirty, bailing
in error at error.jl:21
julia> Pkg.installed()
Dict{ASCIIString,VersionNumber} with 44 entries:
"ImmutableArrays"   => v"0.0.11"
"ArrayViews"        => v"0.6.4"
"DataStructures"    => v"0.4.2"
"Compat"            => v"0.7.9"
"Calculus"          => v"0.1.14"
"GZip"              => v"0.2.18"
"StatsFuns"         => v"0.2.0"
"Measures"          => v"0.0.2"
"Cairo"             => v"0.2.31"
"DataFrames"        => v"0.6.10"
"Showoff"           => v"0.0.6"
"Distributions"     => v"0.8.10"
"LibExpat"          => v"0.1.2"
"FixedPointNumbers" => v"0.1.1"
"SHA"               => v"0.1.2"
"DualNumbers"       => v"0.2.1"
"KernelDensity"     => v"0.1.2"
"Iterators"         => v"0.1.9"
"ColorTypes"        => v"0.2.0"
"Gadfly"            => v"0.4.2"
"Dates"             => v"0.4.4"
"Contour"           => v"0.0.8"
"PDMats"            => v"0.4.0"
"Optim"             => v"0.4.4"
"SortingAlgorithms" => v"0.0.6"
"WinRPM"            => v"0.1.13"
"Docile"            => v"0.5.23"
"WoodburyMatrices"  => v"0.1.5"
"Grid"              => v"0.4.0"
"JSON"              => v"0.5.0"
"StatsBase"         => v"0.7.4"
"Hexagons"          => v"0.0.4"
"Distances"         => v"0.3.0"
"Loess"             => v"0.0.6"
"BinDeps"           => v"0.3.21"
"Reexport"          => v"0.0.3"
"Graphics"          => v"0.1.3"
"URIParser"         => v"0.1.2"
"NaNMath"           => v"0.2.0"
"Compose"           => v"0.4.2"
"DataArrays"        => v"0.2.20"
"Colors"            => v"0.6.2"
"Zlib"              => v"0.1.12"
"Codecs"            => v"0.1.5"
julia> Pkg.build("Cairo")
INFO: Building WinRPM
INFO: Downloading ftp://anorien.csc.warwick.ac.uk/download.opensuse.org/reposito
ries/windows:/mingw:/win32/openSUSE_13.1//repodata/repomd.xml
INFO: Downloading ftp://anorien.csc.warwick.ac.uk/download.opensuse.org/reposito
ries/windows:/mingw:/win64/openSUSE_13.1//repodata/repomd.xml
INFO: Building Cairo
INFO: Updating WinRPM package list
INFO: Downloading ftp://anorien.csc.warwick.ac.uk/download.opensuse.org/reposito
ries/windows:/mingw:/win32/openSUSE_13.1//repodata/repomd.xml
INFO: Downloading ftp://anorien.csc.warwick.ac.uk/download.opensuse.org/reposito
ries/windows:/mingw:/win64/openSUSE_13.1//repodata/repomd.xml
INFO: Nothing to do
================================[ ERROR: Cairo ]================================
LoadError: Provider WinRPM.RPM failed to satisfy dependency gobject
while loading C:\Users\user.julia\v0.4\Cairo\deps\build.jl, in expression start
ing on line 144
================================================================================
================================[ BUILD ERRORS ]================================
WARNING: Cairo had build errors.

packages with build errors remain installed in C:\Users\user.julia\v0.4
build the package(s) and all dependencies with Pkg.build("Cairo")
build a single package by running its deps/build.jl script

================================================================================
julia> BinDeps.debug("Cairo")
INFO: Reading build script...
The package declares 1 dependencies.

Library Group "cairo"

Library "png" (not applicable to this system)
Library "pixman" (not applicable to this system)
Library "ffi" (not applicable to this system)
Library "gettext" (not applicable to this system)
Library "gobject"

Providers:

WinRPM.RPM package glib2
WinRPM.RPM package libgobject-2_0-0
BinDeps.AptGet package libglib2.0-0 (can't provide)
BinDeps.Yum package glib2 (can't provide)
Autotools Build

Library "freetype" (not applicable to this system)
Library "fontconfig" (not applicable to this system)
Library "cairo"

Providers:

WinRPM.RPM package libcairo2
WinRPM.RPM package libharfbuzz0
BinDeps.AptGet package libcairo2 (can't provide)
BinDeps.Yum package cairo (can't provide)
Autotools Build

Library "pango"

Providers:

WinRPM.RPM package libpango-1_0-0
BinDeps.AptGet package libpango1.0-0 (can't provide)
BinDeps.Yum package pango (can't provide)
Autotools Build

Library "pangocairo"

Providers:

WinRPM.RPM package libpango-1_0-0
BinDeps.AptGet package libpango1.0-0 (can't provide)
BinDeps.Yum package pango (can't provide)
Autotools Build

Library "zlib"

Satisfied by:

System Paths at C:\Users\user\Anaconda2\Library\bin\zlib.DLL
System Paths at C:\Users\user\Anaconda2\Library\bin\zlib.dll
System Paths at C:\Users\user\AppData\Local\Julia-0.4.3\bin\zlib1.DL
L
System Paths at C:\Users\user\AppData\Local\Julia-0.4.3\bin\zlib1.dl
l

Providers:

WinRPM.RPM package zlib-devel
Simple Build Process

Thanks for the report. I don't see anything as having changed in the library names for this on the opensuse build service (https://build.opensuse.org/package/show/windows:mingw:win64/mingw64-glib2), so it must be due to the recent BinDeps tag. Try Pkg.pin("BinDeps", v"0.3.20") and see if that works. I can reproduce this locally and I'm bisecting to try to find the cause.

'Pkg.pin("BinDeps", v"0.3.20")' solves the issue for me.

You can do Pkg.free("BinDeps"); Pkg.update() and this should be fixed now.


[BUG] crash in RLAInput

Describe the bug
OIIO crashes in rlainput.cpp when trying to load an alembic file. I know that the library is not suited for loading alembic files (the user has choosen it by an accident). Maybe it can be a general problem in the RLA loader...
To Reproduce
Steps to reproduce the behavior:

Open the attached file (OIIO::ImageInput::open)
It crashes in rlainput.cpp

Expected behavior
Return an error without crash.
Evidence
cube.zip
Platform information:

OIIO branch/version: 2.1.15
OS: Win10 x64
C++ compiler: VS2019
Any non-default build flags when you build OIIO:

Thanks for the repro case. On it!

Proposed fix in #2600

Thanks for the example. And it turns out that this bug (or at least, another instance of rla crashing when accidentally fed a non-image input) was reported at my work, and I had never quite gotten around to repro and fix it. So this was a good opportunity.


s/Ticket(s)/{Token} in frontend

Showing the ticker symbol instead of "Tickets" is probably more direct as to what's happening behind the scenes. It looks like we do this in some places, but not in others. Maybe it's worth offering some more consistency.

fixed


[concourse-github-resource] require github-verified signatures

We were fetching isValid in the graphql query but not using it for
anything.  I think it's probably useful to require that github has
verified the signature, because that means that we can be confident
that github thinks the signing key actually belongs to the specified
user account.
Without this, I can vaguely imagine an attack where:

I add a new key for myself to gds-trusted-developers
I don't add the key to my github account
(I also ensure I don't use an email address for a key userid that
matches any of my github email addresses)
the signature is approved because the key is in gds-trusted-developers
github can't match the signature to my github user, so the graphql
query doesn't know that I am the signer
I am therefore allowed to approve my commit because github doesn't
realise it's mine
i have skipped the two-eyes process

With this check, the attack won't work because we refuse to allow a
signed commit where github can't match the signature to a user.
This is a pretty academic attack (it leaves an awful lot of paper
trail behind) but I think it's enough to make this check worth doing.

By the way I tested this locally using #505 (where I sneakily spoofed @samcrang as author to see if that confused github - it didn't).  If my GPG key was in my account, this check worked; if not, it didn't.

This looks fine with Issy's suggestions.

Fixed @issyl0's suggestions


New agenda page is no longer showing query parameters

Describe the issue
The new agenda page seems to hide the agenda filtering query parameters. This breaks my workflow.
I append my query parameter string from the last meeting to the agenda URL for the upcoming meeting, then look at the results, add/drop sessions as needed, and then copy/paste the new query string into my calendar subscription.
This is now no longer possible?
Code of Conduct

[X] I agree to follow the IETF's Code of Conduct

You can get the URL with all the filters by clicking the "Share" button in the top right corner of the agenda page.

Ah! But it isn't quite doing what it should be doing.
For example, I select the "gen" area.  With the old page, that resulted in something like filters=gen, i.e., I could use the same URL for future meetings (just changing the meeting number) and it would match whatever GEN-area WGs and BOFs happened at the time.
The new page results in ?filters=gendispatch,emodir,hackathon,hotrfc,systers,tools, i.e., it expands all the groups. That means I can't use that URL for future meetings.
(Also, the "gen" button should only select GEN-area WGs and BOFs, and not also meetings of teams such as emodir,hackathon,hotrfc,systers,tools...)

There also doesn't seem to be a way in the GUI anymore to include all BOFs?

@larseggert This is set by the secretariat. For example, the 115 agenda has it: https://datatracker.ietf.org/meeting/115/agenda

What do you mean by "this"?

The list of available filters / areas in the agenda. The 115 agenda has a BOF filter available. The secretariat would need to define a similar one for 116 for it to appear in the list.

Ah, it is there, just not at all in the spot I was expecting it. Can we move that up nearer to the WGs rather than burying it down at the bottom with all the things that don't matter for most?

But my main issue remains that I can't use the ical URLs generated anymore. I don't really use the agenda page, because I have way too many other overlapping meetings - I just use the ics functionality to get things into my calendar app.

Can we move that up nearer to the WGs rather than burying it down at the bottom with all the things that don't matter for most?

That whole bottom row is slowly evolving away. Lets talk about the Bof button at the codesprint.

More is needed - see my comment starting with "Ah!"

We should make it so that the parameter name "show" vs "filters" does not vary.

There's a bit more of a difference between these than just the parameter name. The webcal ics page still uses the keyword syntax that the old agenda page used. That used both show and hide parameters. The purpose of that was to allow selection of things like "All of ART except avtcore" via ?show=art&hide=avtcore.
I think the new agenda page simply turns "ART" into a list of individual group keywords. Selecting ART and deselecting "avtcore" turns into ?filters=cbor,cdni,core,....
I'm not sure whether that is better, worse, or just different. It will certainly behave differently when trying to reuse a URL for a new meeting by editing the meeting number unless the two meetings have the same groups in the area.
The BoF button seems to be different again - selecting it both adds "bof" and the individual BoF group keywords to the filters list. Deselecting individual sessions removes the individual keywords but leaves bof. The display still displays all the sessions, even if they're not selected. I believe this will be the same between the agenda and the webcal pages, but I'd have expected this to give ?show=bof&hide=dbound2 in the old UI.
Definitely need to discuss what the "correct" behavio(u)r is here.

I'm not sure whether that is better, worse, or just different
It is worse, and Lars calls out the use case showing why it's worse.
An ART AD expects to be able to subscribe to art, and cut paste URLs from last meeting to apply to the meeting without having to see if the constituency of the art area changed.


migrate broken link from k8s-testgrid.appspot.com to testgrid.k8s.io …

What type of PR is this?
/kind cleanup
What this PR does / why we need it:
Fixes a broken link to testgrid dashboard in docs/maintainers/MAINTAINERS.md
Which issue(s) this PR fixes:
This is related to an umbrella issue and fixes a task of the same:
https://github.com/kubernetes/test-infra/issues/30370

Thanks for opening this PR. But this repo does not take any direct pull requests. Instead you can open a PR in Kubernetes and if it is merged, it will be mirrored to this repo automatically.
/close


chore: actually include full build in benchmark

I must have reverted too much while testing #3104

!bench


FileNotFoundError: [Errno 2] No such file or directory: 'yc_train.npy'

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.

RESTART: C:\Users\sujan\Documents\2020_Papers\Data_Solar\2020_paper1\P5\Stock-price-prediction-using-GAN-Capstone-Group1-master\Code\wgan_gp.py
Traceback (most recent call last):
File "C:\Users\sujan\Documents\2020_Papers\Data_Solar\2020_paper1\P5\Stock-price-prediction-using-GAN-Capstone-Group1-master\Code\wgan_gp.py", line 21, in
yc_train = np.load("yc_train.npy", allow_pickle=True)
File "C:\Users\sujan\AppData\Local\Programs\Python\Python37\lib\site-packages\numpy\lib\npyio.py", line 428, in load
fid = open(os_fspath(file), "rb")
FileNotFoundError: [Errno 2] No such file or directory: 'yc_train.npy'

@sujanme25 , Please run the "2. data_preprocessing.py" file first, you will get it.


common: Support pldm update commands GetStatus and CancelUpdate

Summary:

Support pldm update command GetStatus(0x1B) and CancelUpdate(0x1D).
Fix state machine.

Test Plan:

Build Code: PASS

Hi @garnermic , new commit has been pushed, please have a look, thanks!


Server-side Pagination: Rancher Backups: Credential Secret does not show values

Setup

Rancher version: v2.9-2d710f42e16538f02251e57e52d6c87fea26e946-head
Rancher UI Extensions:
Browser type & version: Any

Describe the bug
Credential Secret does not show values when server-side pag is on (works as expected when feature is off).

To Reproduce

go to Global settings > feature flags > enable ui-sql-cache
go to Global settings > Performance > enable `Server-side Pagination'
go to cluster dashboard for local cluster
click storage > secrets
create a secret under local namespace
click Cluster > Cluster Tools
click Rancher Backups > Next
click 'Use an S3-compatible object store'
click Credential Secret dropdown

Result
Credential Secret does not show values when server-side pag is on.
Expected Result
Credential Secret does not show values when server-side pag is on.

Screenshots
https://github.com/user-attachments/assets/b627fc05-3be3-4e94-9f37-ce3042714d49

Additional context
Same issue under Rancher Backups --> Restore --> Create --> Select An S3-compatible object store --> Drop down below not populated

Tested in

v2.9-556e3f04c336ac4dbe8d0170fecdcf515973e65b-head
master e108b95

Scenario
Result (vai off)
Result (vai on)

https://github.com/rancher/dashboard/pull/10786 test plan (will be tested in https://github.com/rancher/dashboard/issues/9964)
-
-

Validate paginated node list
✅
✅

Validate paginated configmap list
✅
✅

Validate paginated secret list
✅
✅

Validate paginated deployments list
✅
✅

Local Cluster --> Cluster Tools --> Rancher Backups > Next  --> Select 'Use an S3-compatible object store' --> Credential Secret drop down populated
✅
✅

Rancher Backups --> Restores --> Create/Edit --> Select An S3-compatible object store --> Drop down populated
✅
✅

Rancher Backups --> Backups --> Create/Edit --> Select An S3-compatible object store --> Drop down populated
✅
✅


Fix package installation error

Added makeFonts.js to the list of package files. Without it installation fails:
npm ERR! enoent ENOENT: no such file or directory, chmod 'node_modules/jspdf-customfonts/makeFonts.js'
npm ERR! enoent This is related to npm not being able to find a file.

@xuhcc Thank you so much


Import Targets get "Export" entity name

I have created both import and export targets (I have both meters) but both get named Export (Octopus Energy Target Export 3i_import)
Can we either name as an import Target or remove the Export text from the name?
Using version 5.0.0
Don't see this addressed in the upgrade notes for 5.1.0 but haven't upgraded yet, so sorry if this is already fixed.

Also seeing this (in 5.1.0), not sure yet whether it affects functionality?
I only have an import meter, but all import targets are configured with export in the entity ID and name.

I plan to fix this over the weekend and do a new release (breaking change)

I plan to fix this over the weekend and do a new release (breaking change). Sorry for the delay.

Thanks! In the meantime, I've successfully updated the entity IDs an names in .storage/core.entity_registry, but obviously that is unwise, YMMV and I'm not sure yet that they work properly 😁

This has now been resolved in the latest version (v5.2.0). Luckily it was just the name, so no breaking change 🎉


return lnurl in create link

fix issue #680 and #681

Hi, thank you for your input. Can you please be a bit more specific on where it's breaking?

@bezysoftware do you really rely on this field being empty (which is a bug)?

Apologies I misread the PR, I wrongly assumed it would change the response object, instead of populating a missing field. Please ignore my previous comment

what's it breaking?!
On Fri, Jul 1, 2022, 2:06 PM Tomas Bezouska @.***>
wrote:

Just my two cents, if you merge this, please consider putting this into v2
of the api, since this is a breaking change
—
Reply to this email directly, view it on GitHub
https://github.com/lnbits/lnbits-legend/pull/685#issuecomment-1172327042,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AC4F74TEAE6DSRAR62H7MIDVR3UL5ANCNFSM5Z6FOYBA
.
You are receiving this because you authored the thread.Message ID:
@.***>


Add seq to metadata that it can be unique

Signed-off-by: Yuta Iwama<EMAIL_ADDRESS>
Which issue(s) this PR fixes:
Fixes https://github.com/fluent/fluentd/issues/2698
What this PR does / why we need it:
Docs Changes:
no need
Release Note:
same as the title

@repeatedly @cosmo0920 ?


refactor(scheduler): Remove runOnce feature

Close: #3532
PR Checklist
Please check if your PR fulfills the following requirements:

[x] Tests for the changes have been added (for bug fixes / features)
[x] Docs have been added / updated (for bug fixes / features)

If your build fails due to your commit message not passing the build checks, please review the guidelines here: https://github.com/edgexfoundry/edgex-go/blob/master/.github/Contributing.md.
What is the current behavior?

Issue Number: #3532
What is the new behavior?
Remove runOnce feature from the scheduler service
Does this PR introduce a breaking change?

[ ] Yes
[x] No

New Imports

[ ] Yes
[x] No

Specific Instructions
Are there any specific instructions or things that should be known prior to reviewing?
Other information

Open core-contracts PR to remove the runOnce field https://github.com/edgexfoundry/go-mod-core-contracts/pull/630


Refactor scoping in the backend for different roles

Description of changes:

Add engagement scope options
Change engagement scope options according to role
Refactor filters in the model

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of the met-public license (Apache 2.0).

Codecov Report

Merging #1730 (7c64375) into main (299c71e) will decrease coverage by 0.08%.
The diff coverage is 72.72%.

:exclamation: Current head 7c64375 differs from pull request most recent head e0b9997. Consider uploading reports for the commit e0b9997 to get more accurate results

@@            Coverage Diff             @@
##             main    #1730      +/-   ##
==========================================
- Coverage   71.40%   71.32%   -0.08%
==========================================
  Files         371      372       +1
  Lines       11031    11039       +8
  Branches      846      846
==========================================
- Hits         7877     7874       -3
- Misses       3021     3032      +11
  Partials      133      133

Flag
Coverage Δ

metapi
78.54% <72.72%> (-0.18%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

met-api/src/met_api/models/engagement.py
71.18% <52.94%> (-3.22%)
:arrow_down:

met-api/src/met_api/services/engagement_service.py
70.13% <85.71%> (-1.58%)
:arrow_down:

...api/src/met_api/models/engagement_scope_options.py
100.00% <100.00%> (ø)

met-api/src/met_api/resources/engagement.py
71.28% <100.00%> (ø)

... and 2 files with indirect coverage changes


[WIP] Major Release 2.0.0

Fixes: #[issue]
Description
This PR includes all the breaking changes for the next major release (v2).
Changes
PR Tasks

[x] Open PR
[ ] run npm run test --> no failing unit tests
[ ] run npm run format

For cleanliness, I suggest we merge the fee PR first, then reopen this. The commit history is a mess!

For cleanliness, I suggest we merge the fee PR first, then reopen this. The commit history is a mess!

We can keep this open. The only reason why the history is a mess, is that this is targeting ´main´ right now, because GH does not let me open a PR for a branch thats up-to-date with its target.


Use codecov.

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@04696ea). Click here to learn what that means.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main       #6   +/-   ##
=======================================
  Coverage        ?   87.13%
=======================================
  Files           ?       15
  Lines           ?      474
  Branches        ?       54
=======================================
  Hits            ?      413
  Misses          ?       52
  Partials        ?        9

Flag
Coverage Δ

unittests
87.13% <0.00%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

Continue to review full report at Codecov.

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


Magic square update (error function)

Codecov Report

Merging #10 (51280a7) into main (0375094) will decrease coverage by 0.04%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main      #10      +/-   ##
==========================================
- Coverage   90.45%   90.40%   -0.05%
==========================================
  Files           7        7
  Lines         199      198       -1
==========================================
- Hits          180      179       -1
  Misses         19       19

Impacted Files
Coverage Δ

src/magic_square.jl
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


Replace hardcoded list in data.path

For now we have to enlist manually all types of paths, like that:
    data:
      path:
        fonts: '<%= grunt.template.process(path.build.fonts).replace(path.build.root + \'/\', \'\') %>'
        images: '<%= grunt.template.process(path.build.images).replace(path.build.root + \'/\', \'\') %>'
        styles: '<%= grunt.template.process(path.build.styles).replace(path.build.root + \'/\', \'\') %>'
        scripts: '<%= grunt.template.process(path.build.scripts).replace(path.build.root + \'/\', \'\') %>'
        thumbnails: '<%= grunt.template.process(path.build.thumbnails).replace(path.build.root + \'/\', \'\') %>'
...

It could be much better if we could simply pass all paths from path.build here and replace root path inside of it, something like:
    data:
      path: '<%= path.build.replace(path.build.root + \'/\', \'\') %>'
...

It will make all paths instantly available without need to duplicate them, however, as it's quite obvious — replace() won't work on object. Besides, for some reason grunt.config.process doesn't work here too...
In theory it would be enough just to replace literally <%= path.build.root %> with something like `<%= nothingHere %>. It will produce correct object in result, without root directory.

Done long time ago


Create Recruiter Dashboard for Job Management

Description:
Design and implement a recruiter dashboard to streamline job management and candidate matching. The dashboard should provide a seamless experience for recruiters to log in, post job openings, and find suitable candidates for their listings.
Key Features:

Authentication and Security:

Implement a signup and login system for recruiters.

Job Posting and Management:

Enable recruiters to create job postings.
Allow for uploading and managing job descriptions and requirements.

3.Candidate Matching:

Provide a feature to find potential candidate matches for each job based on defined criteria.
Include filters (e.g., skills, experience, location) to refine search results.
Display candidate profiles with relevant details.

Acceptance Criteria:

Fully functional and user-friendly recruiter dashboard.
Secure authentication system with role-based access.
Intuitive job posting and management interface.
Reliable and accurate candidate matching functionality.

The dashboard was created and merged with this PR.
https://github.com/WolfByteCollective/application-tracking-system/pull/3
https://github.com/WolfByteCollective/application-tracking-system/pull/2
Hence closing the Issue.


comment() function not working

The comment function isn't working.
Code to reproduce:
import { MCFunction, say, comment } from 'sandstone'

MCFunction("test", () => {
  comment("clearly a test.");
  say("This is a test!");
})

A blank line is written, where a comment should be.

Fixed in 0.14.0-alpha4.


Add twitter:card meta tag for bigger summary image

Thanks for merging #7, @jawache! Here's a quick addition for a full-size summary card image.  I should have included this in the first PR, but I'm a little rusty on meta tags :)
Reference: https://developer.twitter.com/en/docs/tweets/optimize-with-cards/overview/summary-card-with-large-image

Awesome thanks again!

Np! Here's a preview, from Twitter's card validator.


Update french wording

Hi
thanks a lot for this useful app!
Some sentences in french were wrong or could be improved, so i provide you a better wording file for french (but it was great already)
if you have any question about what i changed, please ask

Hi,
I've submitted some pull requests as well, but he doesn't seem to be very active recently.
So I've decided to clone his project and add a few changes of my own, if you want you can check it out here, also available in the play store under WhenWasIt name.
If you want you can submit the pull request to my project as well, I'll try to update as soon as I can.

Hey @eblis is WhenWasIt still active? If u remove proprietary ad libraries we might get it to be included on f-droid, a repository for foss and privacy friendly apps. Are u interested in the task?

Hey
Yes, it's still active. Do you mean remove all ads altogether or just some particular ad libraries ?
The app has a setting to disable all ads, would that suffice ?

Ping @izzysoft, on whose creteria we depend
If u want it included on the official f-droid repository, you would need a 100% free software build (maybe more difficult); for izzy's repo, Im guessing just removing all trackers would be good, maybe some analytics software to know which buttons users click is ok, if it does not send PII.
Ads are not bad per se, the problem is the adds libraries being closed source and being capable of recopilating lots of (very personal) birthday data.

The ad library is AdMob, but the library doesn't have access to the birthdays information.
The problem would be if the app itself were to send the data over the internet, but it doesn't do that.

@MarionMoseby thanks for the ping (but please sum up what question you want me to answer; I lack the time reading "all the stuff"). As pointed out: apps dealing with PII must not have any trackers/adlibs to be included with my repo, especially no proprietary ones (like AdMob). You can never tell for sure what data those collect.
@eblis Afraid you are wrong: as those modules are part of your app, they have access to everything your app can access. I once wrote an article on that topic, please see What’s it all about those modules apps contain? for details (link goes directly to the corresponding section of the article). Essential quote:

The researchers found that the root cause of the privacy leakage is the lack of isolation between the ads and mobile apps. Adopting HTTPS wouldn’t do anything to protect the ad traffic.

Hmm, that's good to know, thanks for the heads up


[role] znc

@asmacdo is working on this

Is this still planned? I think we discontinued it

@asmacdo is no longer working on this

It's discontinued for the time being.
On Fri, Jan 16, 2015 at 11:22 AM, Austin<EMAIL_ADDRESS>wrote:

@asmacdo https://github.com/asmacdo is no longer working on this
—
Reply to this email directly or view it on GitHub
https://github.com/CenterForOpenScience/cos-ansible-base/issues/22#issuecomment-70278477
.


Parser throws on missing mandatory argument when usage is requested

type Args =
    | [<Mandatory>] X of string
with
    interface IArgParserTemplate with
        member this.Usage = ""

let parser = UnionArgParser.Create<Args>()

parser.Parse(raiseOnUsage = false, inputs = [|"--help"|])

throws
System.ArgumentException: missing parameter '--x'.

    --x <string>:
    --help [-h|/h|/help|/?]: display this list of options.

   at Nessos.UnionArgParser.ExceptionExiter.Nessos-UnionArgParser-IExiter-Exit[b](String msg, FSharpOption`1 _arg1) in c:\Users\eirik\Development\nessos\UnionArgParser\src\UnionArgParser\Types.fs:line 28
   at Nessos.UnionArgParser.UnionArgParser`1.Parse(FSharpOption`1 inputs, FSharpOption`1 xmlConfigurationFile, FSharpOption`1 errorHandler, FSharpOption`1 ignoreMissing, FSharpOption`1 ignoreUnrecognized, FSharpOption`1 raiseOnUsage) in c:\Users\eirik\Development\nessos\UnionArgParser\src\UnionArgParser\UnionArgParser.fs:line 136

Hmm, interesting.
Strange as it may sound, this is by design. By default, occurrences of --help parameters will be propagated using exceptions cancelling the parsing procedure (this is bad, I know). The perhaps confusingly named raiseOnUsage parameter in essence changes this behaviour, continuing with parsing despite any --help occurrence. In that sense it will keep requiring any mandatory attribute to appear in the parameter list.
This is bad design, and should be changed. In the meantime, I suggest you keep using the parse method with the raiseOnUsage flag enabled.

This can be addressed by combining raisOnUsage = false with ignoreMissing = false.

Ok thanks


vendor: vendor spf13/viper

Vendor spf13/viper, so we start working on #131.

v1 Tag looks good to pin.
Vendor contents look appropriate.
/lgtm 👍


NoMethodError: protected method devise_mailer called for User:0x1b8a096f

I just received this error after doing some bundle updates
NoMethodError: protected method 'devise_mailer' called for #<User:0x1b8a096f>
Here is the relevant backtrace:
org/jruby/RubyKernel.java:1955 in "public_send"
/gems/activesupport-4.1.8/lib/active_support/core_ext/object/try.rb:45 in "try"
/gems/devise-async-0.9.0/lib/devise/async/backend/base.rb:22 in "mailer_class"
/gems/devise-async-0.9.0/lib/devise/async/backend/base.rb:16 in "perform"
/gems/sidekiq-3.3.0/lib/sidekiq/processor.rb:75 in "execute_job"
/gems/sidekiq-3.3.0/lib/sidekiq/processor.rb:52 in "process"
org/jruby/RubyProc.java:271 in "call"
/gems/sidekiq-3.3.0/lib/sidekiq/middleware/chain.rb:127 in "invoke"

As a temporary fix, we have removed the resource.try(:devise_mailer) for now.
We are using Devise 3.4.1 with sidekiq.

Hmm, the behavior of try changed in Rails 4.x. Did you move from Rails 3.x to 4.x with this bundle update?

Yes. Exactly. My bad, I forgot to mention the rails version change.

I don't see another solution to this problem besides using send in this case as devise_mailer is protected. Do you see a better solution? Otherwise, the “Multiple-Mailers-Per-Model” feature does not work anymore.

@baschtl - yeah, I can't think of a better way at the moment.


Imageurl fix

Build image urls when GetMediaByUrl is called.

@wrinkleydog  thank you very much!
Just comment: In first commit in fromMediaPage() you deleted ['text'] and it seems right but in second commit you checking that caption is presented and again you added ['text'].
I have checked and it seems that deleting ['text'] was right thing or you added ['text'] on purpose?

Good catch!
Deleting ['text'] is the correct one.
On Fri, May 13, 2016 at 10:06 AM, Raiymbek Kapishev <
<EMAIL_ADDRESS>wrote:

@wrinkleydog https://github.com/wrinkleydog thank you very much!
Just comment: In first commit in fromMediaPage() you deleted ['text'] and
it seems right but in second commit you checking that caption is presented
and again you added ['text'].
I have checked and it seems that deleting ['text'] was right thing or you
added ['text'] on purpose?
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/raiym/instagram-php-scraper/pull/2#issuecomment-219087362

Okay!


Allow to remove an item from within the renderValue function of MultiSelect

The use case for this is to implement a MultiSelect where the values in the trigger are rendered as bage with a close button to remove/unselect the item. This is how the Hope-UI multi-select was styled.
The click handler of the close button must be able to unselect the item. This currently only possible in a controlled select where unselect is handled outside of the Kobalte component.
Following implementation would allow to unselect an item directly from the renderValue function:

The selectedOptions adds an additional onRemove property than can be used in the button handler
A 2nd argument is supplied to the renderValue function. The signature would become something like:
renderValue: (selectedOptions: Accessor<any[]>, onRemove: (value: string) => void) => JSX.Element;

There is a discussion in the kobalte group on discord about it. Note that it's possible to work around the issue by using a controlled select. When building a styled component that needs to be usable in both controlled and uncontrolled mode, the createControllableSetSignal can be used as in:
https://github.com/kobaltedev/kobalte/blob/main/packages/core/src/select/select-root.tsx#L41

There is not much difference from your example to think as the value renderer as it's own component. Something like this:
const MyMultiSelectValue = (props) => {
  return (
    <>
      <For each={props.items}>
        {item => (

            {item.rawValue} // item is now of type CollectionNode<T> hense the use of `rawValue`
            <button
              // prevent closing the select.
              onPointerDown={e => e.stopPropagation()}
              onClick={() => props.remove(item)} // remove one item
            >
              X
            </button>

        )}
      </For>
      <button
        // prevent closing the select.
        onPointerDown={e => e.stopPropagation()}
        onClick={props.clear} // remove all items
      >
        X
      </button>
    </>
  );
}

<MultiSelect.Root
  options={["Apple", "Banana", "Blueberry", "Grapes", "Pineapple"]}
  placeholder="Select some fruits…"
  renderValue={MyMultiSelectValue}
>
  ...
</MultiSelect.Root>

Note that selection becomes props, and props.items is a property, not a function. This is to follow the convention for components, where props are passed as values with getter function. I'm not saying this is necessary, but possibly having the option to write a normal component is more readable.

If you go this way I suggest to do it like mantine and use the same API for item and section too :
function Value(props) {
  return (
    <>
      <For each={props.items}>
        {item => (

            {item.rawValue} // item is now of type CollectionNode<T> hense the use of `rawValue`
            <button
              // prevent closing the select.
              onPointerDown={e => e.stopPropagation()}
              onClick={() => props.remove(item)} // remove one item
            >
              X
            </button>

          )}
      </For>
      <button
        // prevent closing the select.
        onPointerDown={e => e.stopPropagation()}
        onClick={props.clear} // remove all items
      >
        X
      </button>
    </>
  );
}

function Item(props) {
  return (
    <Select.Item {...props}>
      <Select.ItemLabel>{props.item.rawValue}</Select.ItemLabel>
      <Select.ItemIndicator>
        <CheckIcon />
      </Select.ItemIndicator>
    </Select.Item>
  );
}

function Section(props) {
  return <Select.Section {...props}>{props.section.rawValue.label}</Select.Section>;
}

<MultiSelect.Root
  options={["Apple", "Banana", "Blueberry", "Grapes", "Pineapple"]}
  placeholder="Select some fruits…"
  valueComponent={Value}
  itemComponent={Item}
  sectionComponent={Section}
>
  <MultiSelect.Trigger>
    <MultiSelect.Value />
    <MultiSelect.Icon>
      <CaretSortIcon />
    </MultiSelect.Icon>
  </MultiSelect.Trigger>
  <MultiSelect.Portal>
    <MultiSelect.Content>
      <MultiSelect.Listbox />
    </MultiSelect.Content>
  </MultiSelect.Portal>
</MultiSelect.Root>

The confusing part is that Value get rendered inside MultiSelect.Value.
Another option may be passing a render prop directly to MultiSelect.Value, but it's like my 1st option, we've just moved the problem :
function Item(props) {
  return (
    <Select.Item {...props}>
      <Select.ItemLabel>{props.item.rawValue}</Select.ItemLabel>
      <Select.ItemIndicator>
        <CheckIcon />
      </Select.ItemIndicator>
    </Select.Item>
  );
}

function Section(props) {
  return <Select.Section {...props}>{props.section.rawValue.label}</Select.Section>;
}

<MultiSelect.Root
  options={["Apple", "Banana", "Blueberry", "Grapes", "Pineapple"]}
  placeholder="Select some fruits…"
  valueComponent={Value}
  itemComponent={Item}
  sectionComponent={Section}
>
  <MultiSelect.Trigger>
    <MultiSelect.Value>
      {selection => ({/* render your thing */})}
    </MultiSelect.Value>
    <MultiSelect.Icon>
      <CaretSortIcon />
    </MultiSelect.Icon>
  </MultiSelect.Trigger>
  <MultiSelect.Portal>
    <MultiSelect.Content>
      <MultiSelect.Listbox />
    </MultiSelect.Content>
  </MultiSelect.Portal>
</MultiSelect.Root>

fixed in v0.8.0.


D3.js

Do you have an projects based on D3?

Not yet. I will find one.

I have found some and will update.


No non-minified .js file

I'm trying to troubleshoot failure of LeaderLine embedded in svg file but investigation is hampered by minification.  The file "src/leader-line.js" is apparently not just the non-minified version of "leader-line.min.js" since when I use that everthing aborts early on due to a dependency on AnimEvent (which isn't present).
Please advise how I can get or generate a non-minified version of leader-line.min.js that will work standalone like leader-line.min.js does.

The leader-line.min.js was made from src.
Maybe you mistook without reading the codes and understanding build process.

@unsaved On a clone, change Gruntfile.js#L47
-    return uglify.minify(content).code;
+    return content;

and rebuild.

No reply came, then this abandoned issue is closed.
@KaustubhBadrike-GEP, thank you for your help. :smile:


update deps suggested by dependabot

Motivation

Solution

PR Checklist

[ ] Added Tests
[ ] Added Documentation
[ ] Updated the changelog

Codecov Report

Merging #294 (5d4e29a) into main (34539d6) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #294   +/-   ##
=======================================
  Coverage   40.99%   40.99%
=======================================
  Files          20       20
  Lines        5662     5662
=======================================
  Hits         2321     2321
  Misses       3341     3341

Flag
Coverage Δ

test
40.99% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Continue to review full report at Codecov.

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