Workflow enhancement - assignment and "ownership" logic to users via departments

In https://github.com/govflow/govflow/issues/26 ( implemented in https://github.com/govflow/govflow/pull/29 ) we added basic support for departments in a jurisdiction, being the ability to associate a service request with a department. As noted in https://github.com/govflow/govflow/issues/26#issue-1084567865 there are several ways this feature can develop based on input we have from current users and potential users.
The current implementation optionally allows assigning a request to a department. This assignment has no impact or relation to the person assigned to the request at present. The department itself does have a primary contact name and email as metadata, but this is not a StaffUser object, and it just for display purposes, not for any use in the assignment of requests.
We have a new potential user with key user scenarios that we can support by iterating on the initial base.
Our current understanding of the user scenarios is as follows:

Departments have one or more staff users who are "team" or "department" leads, for the purposes of service delivery.
Assignees for tickets should come from a list of staff users who are explicitly associated with a department. This could be one of the department leads, or, another staff user who is not a lead.
Department leads will communicate with each other around any given request, and, communicate with the assigned person, and, communicate with the person who submitted the request.

Supporting this in the GovFlow API server requires:

A configuration setting for enforcing assignment via department (I think this will be a common use case, but not one we should enforce going forward for all users of govflow): ENFORCE_ASSIGNMENT_VIA_DEPARTMENT
Adding a relationship from StaffUser to Department - this relationship will be required for non-admin staff users when ENFORCE_ASSIGNMENT_VIA_DEPARTMENT is true.
Allow StaffUsers to belong to multiple Departments.
Don't allow StaffUsers to be removed from a Department if they have non-closed tickets assigned via the department.
Allow one or more staff users in a department to be a lead for this department - can implement this via a Group model for more flexibility around other "group types" or just as a boolean on the staff user / department relation now.
Various CRUD actions for relationships between staff users and department exposed via dedicated endpoints.

Probable client changes required:

Get some configuration from the GovFlow server via a "client config endpoint", to configure itself appropriately (I talked about that previously here in regard to captcha, and the more features we add that are configurable it makes more sense to centralize this config to the server and the clients configure themselves accordingly from there, rather than maintaining the same config in multiple places)
new screens for managing staff user / department / lead relations
In the workflow for requests, when ENFORCE_ASSIGNMENT_VIA_DEPARTMENT is true require assigning a department before assigning a staff user, and, if department changes, clear user assignment
At any time, given a request, have a list of department leads for the request as well as the assignee - this may or may not display in the UI, but will be required for further communication use cases.

A related issue is do we make explicit associations between departments and services.

Thanks @pwalsh ,
Regarding ENFORCE_ASSIGNMENT_VIA_DEPARTMENT - I imagine this is an instance-level config? I think we might need to allow it for individual jurisdictions, and manage the setting in the DB, either in the Jurisdictions table in a new JurisdictionSettings table.
And I'd like us to consider the following scenario: If a request is assigned to a department and a user, and we re-assign it to a different department, do we unassign the user? Do we "force" choosing a new assignee before updating the assigned department?

@amirozer

Regarding ENFORCE_ASSIGNMENT_VIA_DEPARTMENT - I imagine this is an instance-level config? I think we might need to allow setting it for individual jurisdictions, and manage the setting in the DB, either in the Jurisdictions table in a new JurisdictionSettings table.

Yes, you are right, this needs to be a jurisdiction setting and not an instance setting.

And I'd like us to consider the following scenario: If a request is assigned to a department and a user, and we re-assign it to a different department, do we unassign the user? Do we "force" choosing a new assignee before updating the assigned department?

I meant to address with with my point 3 for the client in the original ticket:
require assigning a department before assigning a staff user, and, if department changes, clear user assignment

So I think the follow is (i) change department, (ii) auto clear user assignment, and (iii) the person taking the action then (optionally) re-assigned to a user fro the new department.
If the same user is associated with both departments, we can leave the assignment.

@noamoss in that case there is no change from how it currently works in the UI we use (which is not currently open source), and there is no change from how it works at the API level (here in GovFlow).

Hi @pwalsh

Can you explain why do you think this is needed?

Allow StaffUsers to belong to multiple Departments.

Did we hear about a user that works simultaneously in more than one department/unit?

Same question for this part:

Allow one or more staff users in a department to be a lead for this department - can implement this via a Group model for more flexibility around other "group types" or just as a boolean on the staff user / department relation now.

If we don't know of a need to enable two stakeholders to be defined as a "lead", are not we just creating extra complications in terms of double assignment and notification for new tickets?

Your following comment brought up a point to notice:

So I think the flow is (i) change department, (ii) auto clear user assignment, and (iii) the person taking the action then (optionally) re-assigns to a user from the new department.

The offered implementation suggests that only a department leader has permission to assign the ticket to another worker from the same department. BUT I assume there are two extra configurations we will need to handle (maybe later):
3a. Can user X assign user Y to the ticket if they are from the same department?
When, for example, user X did their part, but user Y needs to verify or take another action before closing the ticket. Can they do it directly or it is just the head of the department that should be allowed to move the request ticket inside the department?
3b. Can user X assign user Y to the ticket if they are from a different department?
I assume that in some organizations this is a common and preferred method, enabling direct communication between workers and not only heads of departments. In these situations, there is another question to figure out: what event should be triggered toward the head of the department?

@noamoss

Allow StaffUsers to belong to multiple Departments.

We talked about exactly this use case on Monday with @amirozer - that what we call a department currently is actually a unit that represents a function, and persons could perform/associate with to multiple functions.

Allow one or more staff users in a department to be a lead for this department - can implement this via a Group model for more flexibility around other "group types" or just as a boolean on the staff user / department relation now.

If we don't know of a need to enable two stakeholders to be defined as a "lead", are not we just creating extra complications in terms of double assignment and notification for new tickets?

According to the initial call with client X, we do need more than one stakeholder to be defined as a lead, hence the proposed implementation, but, as you know I'm sitting on the finalization of this implementation until we do a more formal discovery interview.

The offered implementation suggests that only a department leader has permission to assign the ticket to another worker from the same department.

No, there is no suggestion that association with a department is a permission to perform assignment actions, only that it is an association to be a valid assignee when a request is associated with a given department.

Can user X assign user Y to the ticket if they are from the same department?

As above, nothing here is about permissions to perform assignment actions - any user for a jurisdiction at present can perform assignment actions.

Can user X assign user Y to the ticket if they are from a different department?

Does "they" refer to user X or Y? In either case though, see above, and also https://github.com/govflow/govflow/issues/51#issuecomment-1046242902 for a description of the cascading relationship if a request department changes.

@pwalsh

we call a department currently is actually a unit that represents a function

Ok, sorry for the confusion, so it makes sense to enable a user to relate to two units+functions - assuming we do not want to separate levels of "units" and "functions". I think later we will have to rethink this; as a "Unit" (an organizational entity, and a more generic term for a department, including both internal and external groups of users) will become responsible for different functions (or services). I am just reminding we already know that a key difference between organizations is the way the main functions are organized between their units/departments.

..., see above, and also https://github.com/govflow/govflow/issues/51#issuecomment-1046242902 for a description of the cascading relationship if a request department changes.

I believe the permissions rules and restrictions will come as requests, and bringing it up now to approve nothing will prevent these kinds of implementation later, if needed.

@noamoss ( cc @amirozer @idoivri  )

Ok, sorry for the confusion, so it makes sense to enable a user to relate to two units+functions - assuming we do not want to separate levels of "units" and "functions". I think later we will have to rethink this; as a "Unit" (an organizational entity, and a more generic term for a department, including both internal and external groups of users)

I agree and I think, like services, we will need to remodel this as a tree https://github.com/govflow/govflow/discussions/30 and then the simple jurisdictions have a depth of 0, and more complex scenarios have nested entities. In terms of data modeling, I don't think there is a clear distinction between a "unit", a "function", or a "department" - they are all, let's say, "units" and the differentiation is in how a given jurisdiction would use them.

I believe the permissions rules and restrictions will come as requests

So do I, and I think we will address it then.

@pwalsh
I guess we will discuss it, later on, #30, so for now, I will just comment that regarding

.... I don't think there is a clear distinction between a "unit", a "function", or a "department" - they are all, let's say, "units" and the differentiation is in how a given jurisdiction would use them.

I believe there is a difference between unit/departments (which are organizational entities) and a service/function which are chains of 1+ actions in the real world, waiting to be applied and then logged in the system.

@noamoss

I believe there is a difference between unit/departments (which are organizational entities) and a service/function which are chains of 1+ actions in the real world, waiting to be applied and then logged in the system.

Sure, there is nothing to disagree about there. But notice you say "service/function" - a service is a different entity altogether in GovFlow. In my understanding (using the current terms in GovFlow):

A Service is a classifier for a type of action (it is not the action itself)
A Department is an organizational unit under which (i) one or many action types may be "performed", and (ii) one or many persons may have an association.

We discussed this week using a different term instead of Department because department has a specific meaning in local jurisdictions, and yet in GovFlow we might want to have Units that are not a 1:1 mapping to a department as understood by bodies that adopt GovFlow (currently: municipalities in the USA). Maybe Function is confusing.

@pwalsh

GovFlow we might want to have Units that are not a 1:1 mapping to a department as understood by bodies that adopt GovFlow (currently: municipalities in the USA)

... agreed, I believe Unit is a good term for a more abstract definition for a group of people (in the real world) in relation to an organization.

Maybe Function is confusing too.

let's try to clarify what do we talk about

A Service is a classifier for a type of action (it is not the action itself)
.
Can you elaborate on how do you perceive a ."type of action" is, and sharpen the difference from the action itself (function)?

@noamoss

let's try to clarify what do we talk about
Can you elaborate on how do you perceive a "type of action" is, and sharpen the difference from the action itself (function)?

We are based on 311, so you can see some examples of services here (The "Operation" section):
https://en.wikipedia.org/wiki/3-1-1
So, to take a nice example from there, "dead animal removal" is a service a jurisdiction (and more specifically, a jurisdiction via a department) performs, and refers to the "service type" that can be performed, and not the actual act (performance) of a person or machine going and removing a dead animal.

@pwalsh
ok, so 3-1-1 "operation" (which you described as a "type of action" or "action classifier") holds the same meaning as "functionalities". We should choose a unified term, I am would go with either "operation" or "functionality" - just because they are the shorter ones and more accessible. for non-techy users.
Now, regarding the other part of "...the action itself", (or "the actual act (performance) of a person or a machine going and [doing stuff]...": will that be be represented in a separate instance? assuming the answer is yes, how would you name it?

@noamoss

ok, so 3-1-1 "operation" (which you described as a "type of action" or "action classifier") holds the same meaning as "functionalities". We should choose a unified term, I am would go with either "operation" or "functionality" - just because they are the shorter ones and more accessible. for non-techy users.

So, I just prefer to call it a "service" as it is now ( I just used the other terms in this disambiguation discussion :) ). I think service is the most appropriate term, and scales beyond 311, and, fits well with the idea of munis as "service delivery" organizations.

Now, regarding the other part of "...the action itself", (or "the actual act (performance) of a person or a machine going and [doing stuff]...": will that be be represented in a separate instance? assuming the answer is yes, how would you name it?

I don't think it is in our scope.

@pwalsh

So, I just prefer to call it a "service" as it is now

and you are right, of course. agreed.

I don't think it is in our scope.

I am not sure it is, let's discuss (to verify I am not missing something)

@pwalsh
The open 311 scheme also includes a service notice field:
Information about the action expected to fulfill the request or otherwise address the information reported.

Do we hold and/or use this field right now for service requests?

merged in https://github.com/govflow/govflow/commit/8550b63b344d9949c492d8a56eb738d732d62cc1


Request: open discussion boards on the repo

Hi :wave:
This is a request to ask that Github Discussions be added to this repository as a place to collaborate which is less formal and wont carry the same weight as issues.
Thank you for your considerations :vulcan_salute:

You can access Discussions now, thanks for bringing this up!


Openebs fails to install after Openebs 3.0 release

Openebs fails to install after Openebs 3.0 release
Temporary solution: pin the version to 2.x.x

Hi @OhMyMndy, thank you for reporting this. Could you tell us how the addon is failing? What should i do to reproduce the problem you are seeing? An inspection report might also help.

Not all the pods will start, probably because of some backwards incompatible changes in version 3.0.
Creating a new microk8s cluster and enabling openebs will fail, it doesn't say what is going wrong, but I figured it had to do with the new version of openebs being released a couple of days ago.
I copied the enable.openebs.sh file and added a fixed version (like in the pull request I created https://github.com/ubuntu/microk8s/pull/2601) and ran SNAP_COMMON=/var/snap/microk8s/common SNAP_DATA=/var/snap/microk8s/2487 SNAP=/snap/microk8s/2487 bash enable.openebs.sh which successfully installs and enables openebs

Thank you @OhMyMndy
@niladrih from the openebs team has provided patches for all the MIcroK8s tracks. They are going through our CI now. Many thanks.

The openebs addon fixes have been released to the stable channels. Feel free to re open the issue if there are still problems.


[BUG] Ribbon is too tall for iPhone screen size, sync status icon missing?

Describe the bug
The height of the ribbon (using the default Obsidian or Sanctum icons) is so tall it forces the "Settings" gear icon off the bottom of the window.
I also can't locate the Sync status icon, it used to live in the slide-out right-hand pane next to the Pin and 3-dot menu icons, which are also both gone (or invisible, or moved?).
Screenshots

Version [Desktop or Mobile]:
Mobile, iOS 15.1.1, Obsidian 1.0.5

Have added it to the Roadmap

I've uploaded a fix. Please tell me if the issue is resolved.

Sorry I missed this reply. The settings icon is still not visible in the ribbon, but the sync status icon is back (and more important imo, thank you).

I've made an update yesterday that should have fixed the ribbon!

The settings gear is still a skoche cut off but I’m not picky.  Thanks again!


Adding rcon-cli to the image

Hi there!
Love the docker image, been using it in my local homelab cluster to run palworld without any problems for my friends and I. Palworld, by default, offers you to enable rcon. I'd love to see the rcon-cli being added in the near future.

Release 0.11.0 fixes this issue, check the readme on how to use the rcon-cli https://github.com/thijsvanloef/palworld-server-docker?tab=readme-ov-file#using-rcon

Thank you!


Way to go to "Last page" for notifications

Description
When I have a lot of notifications for a repository, I often want to go to the last page of the notification view, "Open all unread" there so I can go through them in the order they came in or were active (instead of starting with the newest ones).
It would be amazing if Refined GitHub could add a Last page or Last next to "Prev | Next" below the list of notifications.
Screenshot

Example URLs
For me e.g. https://github.com/notifications?query=repo%3Aprisma%2Fprisma+is%3Aunread

Just tried this for fun:
a = $('[aria-label="Next"]');
s = new URLSearchParams(a.search)
max = looseParseInt($('.js-notifications-list-paginator-counts').lastChild);
lastCursor = Math.floor(max/50)* 50
s.set('after', btoa('cursor:' +lastCursor))
lastBtn = a.cloneNode()
lastBtn.search = s.toString()
lastBtn.textContent = 'Last'
a.after(lastBtn)

and the existing
function looseParseInt(text) {
	if (!text) {
		return 0;
	}

	if (typeof text !== 'string') {
		text = text.textContent;
	}

	return Number(text.replace(/\D+/g, ''));
}

We could linkify the 201, with an underline.

That would totally work and avoid having to add an additional button that might confuse some people (and their muscle memory of where to click to go to Next 👍

Oh this works so great for my use case. Thanks @fregante and @yakov116 again!

There seems to be a off by one problem going on somehow:

The "Prev" button on that page unfortunately also does not work (but that is a GH bug). That the link goes to this page is probably a problem of this feature.
(cc @yakov116)

Oh, even with 149 something fishy is going on:

Here clicking "Next" brings me to the actual last page then though.

It's best to open a new Bug issue 😅

https://github.com/refined-github/refined-github/issues/6218


Get some other user events.

Using the user public events API we can get the last 1000 events. If any of these are relevant maintainer-like events then they will be displayed. In my case, I make too many events for any to be displayed for April 23rd (my last relevant Friday). Another option is to not filter these maintainer-like events to only Fridays. Similarly, they could be interspersed with pull requests.
~Also in this PR is obtaining a more complete set of pull request search results and displaying the repository for each result. Arguably the repository could be turned into another section heading like date.~ moved to #48
CC @nayafia for thoughts on whether this is better/worse than the status quo (in terms of events, the rest will probably go in anyway).

Actually pulled some of the other stuff into https://github.com/ossfriday/ossfriday/pull/48. Will rebase this accordingly to make it simpler.

Some sample data from @nayafia (so meta):

We chatted about this in Slack. I'm ok with doing this, we discussed maybe only displaying Friday events that take place post-authorization and/or only checking it once per week (given someone's actually opened the page/made a request, ofc, to avoid rate issues). It's not perfect, but we thought it'd be better to at least try.

Similarly, they could be interspersed with pull requests.

Not sure if this is what you were referring to here, but yeah I'd prefer we don't call this "maintainer events" but rather make it part of the activity stream along with PRs.

@nayafia Sounds good. My only thought is that making it part of the PR activity stream (which can go back a year) may make the incompleteness of the data more visible/annoying.

rather make it part of the activity stream along with PRs.

Going to handle this in a follow-up PR as I need to find a few good users to test this with to make sure it doesn't look weird.

@MikeMcQuaid I would love to help testing it!

@m1guelpf Cool! Check out https://opensourcefriday.com.


Infinite DMRG and canonical form

The state returned by DMRG with inifinte boundary conditions is not in the canonical form.
from tenpy.networks.mps import MPS
from tenpy.models.spins import SpinChain
from tenpy.algorithms import dmrg

M = SpinChain({'L': 2, 'Jz': 1.5, 'bc_MPS': 'infinite', 'verbose': 0})
psi = MPS.from_product_state(M.lat.mps_sites(),[0,1],bc='infinite')
dmrg_params = {'mixer': None, 'trunc_params': {'chi_max': 100, 'svd_min': 1.e-10},
                'verbose': 0, 'min_sweeps': 20}
info = dmrg.run(psi, M, dmrg_params)
print("norm_test: ", psi.norm_test())
print("E_DMRG = ", info['E'])
print("S = ", psi.entanglement_entropy())
print("bring to canonical form")
psi.canonical_form()
print("in canonical form.")
print("norm_test: ", psi.norm_test())
print("S = ", psi.entanglement_entropy())

Using another library, I get an energy of E=-0.52343171716 and entropy S=0.5083 at the same parameters.
While the energy seems to fit up to 7 digits, the returned entropy S=1.201 is completely off, and norm_test indicates a large error; after calling canonical_from, S = 0.50827.

The problem is the symmetry breaking; one expects to get something close to |010101...> or |101010...>. However, DMRG returned a superposition of both, hence the same energy, but log(2) more of entanglement.
To avoid the problem, one can initialize the environments at the beginning by setting the DMRG parameter start_env to some number > 0 (1 is enough). This fixes the "boundaries" of the MPS, favoring one of the two states over the  other.
The default value of start_env was changed to 1 in git commit ea0259e47b037f50724e45cf4c500588c7c86421 such that the above code now runs fine and gives the expected results, so I will close this issue.
Another approach to run into a symmetry-broken state is to slowly increase the maximal bond dimensions, this can be done with the DMRG parameter chi_list.


feat(form-field-radio): align input and label

Align input and label
GSD-2249
Does this need to be backported to V3?

No need to backport


Run Demo error

我运行了demo，但是报模型错误。
Traceback (most recent call last):
File "/Users/mengbin/Documents/study/python/FashionAI_KeyPoint_Detection_Challenge_Keras/src/top/demo.py", line 56, in
demo(args.modelfile)
File "/Users/mengbin/Documents/study/python/FashionAI_KeyPoint_Detection_Challenge_Keras/src/top/demo.py", line 28, in demo
xEval = Evaluation('all', modelfile)
File "../eval/evaluation.py", line 26, in init
self._initialize(modelFile)
File "../eval/evaluation.py", line 57, in _initialize
self._initialize_network(modelFile)
File "../eval/evaluation.py", line 60, in _initialize_network
self.net = load_model(modelFile, custom_objects={'euclidean_loss': euclidean_loss, 'Scale': Scale})
File "/Users/mengbin/Documents/study/python/tesonflow/crnn_ctc_ocr.Tensorflow/venv/lib/python3.6/site-packages/keras/models.py", line 247, in load_model
custom_objects=custom_objects)
File "/Users/mengbin/Documents/study/python/tesonflow/crnn_ctc_ocr.Tensorflow/venv/lib/python3.6/site-packages/keras/optimizers.py", line 653, in deserialize
printable_module_name='optimizer')
File "/Users/mengbin/Documents/study/python/tesonflow/crnn_ctc_ocr.Tensorflow/venv/lib/python3.6/site-packages/keras/utils/generic_utils.py", line 141, in deserialize_keras_object
return cls.from_config(config['config'])
File "/Users/mengbin/Documents/study/python/tesonflow/crnn_ctc_ocr.Tensorflow/venv/lib/python3.6/site-packages/keras/optimizers.py", line 101, in from_config
return cls(**config)
File "/Users/mengbin/Documents/study/python/tesonflow/crnn_ctc_ocr.Tensorflow/venv/lib/python3.6/site-packages/keras/optimizers.py", line 371, in init
super(Adam, self).init(**kwargs)
File "/Users/mengbin/Documents/study/python/tesonflow/crnn_ctc_ocr.Tensorflow/venv/lib/python3.6/site-packages/keras/optimizers.py", line 38, in init
'passed to optimizer: ' + str(k))
TypeError: Unexpected keyword argument passed to optimizer: amsgrad
Process finished with exit code 1

looks like it is related to keras version. I will double check.

Thanks
孟斌
中船重工第七〇二研究所
中船重工奥蓝托无锡软件技术有限公司
地址：江苏无锡市山水东路222号
Mobile-13665145171

在 2019年8月22日，下午9:21，VictorLi<EMAIL_ADDRESS>写道：
looks like it is related to keras version. I will double check.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/yuanyuanli85/FashionAI_KeyPoint_Detection_Challenge_Keras/issues/8?email_source=notifications&email_token=AELGISAVMKQJI2V3YETOYDDQF2HHLA5CNFSM4IOUXEOKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD45CGBY#issuecomment-523903751, or mute the thread https://github.com/notifications/unsubscribe-auth/AELGISAB6OGFNH2663BOQT3QF2HHLANCNFSM4IOUXEOA.

@yuanyuanli85  @mengibin  Same here. Has it been fixed?

@yuanyuanli85 @mengibin Same here. Has it been fixed?

Fixed. It is a Keras version issue. I solve this error by using Keras 2.2.2. Actually, from an answer from stackover, Keras with version 2.1.3 or later can handle this problem.

@freshn Can you please share your TensorFlow version in which you are able to run successfully

@levindabhi I don't maintain that code locally now. Sorry but I can't help.


HIGH: [Debugability] [$250] Save client-side logs and profile traces to the Downloads folder

Problem:
We have a great system in place to enable client-side logging and profile tracing with a four-finger tap.  This allows for really fantastic debugging on production devices out in the real world.  However, the files are saved in a private folder that -- so far as I can tell -- is impossible for a user on a non-rooted device to access.  So after getting the logs and profile traces, if they don't share them at that exact moment, there's no way to get them in the future.
Solution:
Save client side logging and profile trace files to the /Downloads folder on Android (and whatever similarly accessible folder is generally accessible on iOS.
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~0143be8cb9f6347710
Upwork Job ID:<PHONE_NUMBER>762456064
Last Price Increase: 2024-04-13
Automatic offers:

ishpaul777 | Reviewer | 0
ShridharGoel | Contributor | 0

Proposal
Please re-state the problem that we are trying to solve in this issue.
We want to save client side logging and profile trace files to the /Downloads folder on Android (and whatever similarly accessible folder is generally accessible on iOS.
What is the root cause of that problem?

For Android, we're already saving to Downloads folder (can be seen here), but the file path that we're showing is of the localFile, which might seem misleading to users because they might think the file hasn't been saved to Downloads.
For iOS, we're not saving the file to Downloads, but only have a local file, can be seen here

What changes do you think we should make in order to solve the problem?

We should show the Downloads file path instead of the localFile path (the one that's in private folder as discouraged in the OP).

In here, set the path returned after saving the file to Downloads to a mediaPath field:
.then(path => {
    setFile({
        ...localFile,
        mediaPath: path,
    });
});

Then in here, use the file.mediaPath to show in path: , if file.mediaPath does not exist then fallback to file.path
(Since the device-download path looks cryptic, we maybe should instead show to the users the readable file name instead so they know how to access the file, something like path: /Downloads/logs-2024-04-14 10_58_29.432.txt, this can easily be done by using the file name)

We should start to save the file to Downloads (or just to Files), similar to what we did with Android, and also use the same mediaPath approach too.

What alternative solutions did you explore? (Optional)
NA

Proposal
Please re-state the problem that we are trying to solve in this issue.
New feature to save app logs to Downloads instead of default app private folder.
What is the root cause of that problem?
This is a new feature.
What changes do you think we should make in order to solve the problem?
Before suggesting my solution, @quinthar / @ishpaul777 I would like to bring 2 points to think about and consider before proceeding with the solution.

Even if we save the logs to private folder or to Downloads, the logs are still local to the device and we are at the mercy of the end user to upload or share them with us for Expensify team to support in any debugging.
Local logs in silos are still a huge amount of valuable data that is scattered in individual devices. They do not add any value to us until it reaches us.

I propose to have some or all of these logs centralized and collected to one of the cloud service provider data stores location so that the same can be used for big data analytics and even for supporting in troubleshooting purposes. This must give a great insight into how the user is using the application and will also give insight into how we can improve our application and its user interface to provide better service to the user. Of course, this essentially means that we must get user consent (maybe as an optional service) at the time of installation and have these uploaded to data stores at regular intervals.
Points to consider:

Chat data must be end-to-end encrypted, if these are also in the logs. Or these logs must be omitted from uploading.
Privacy is at most priority. Any sensitive and personally identifiable information must be masked or anonymized .
Automatic uploading must be done only for analytical and app usage data.
In case when a user raises a support ticket, they can be provided an option to share logs for troubleshooting purposes and then we will already have all the data already available to the support person from the cloud server. Any logs that are not opted  in for automatic upload must be uploaded automatically from device private folder itself to the cloud server.

Having a log available in Downloads folder means that the same can be accessed or read by others or by other applications. Having the logs saved into the app private folder structure is the best solution according to me.
@quinthar / @ishpaul777 :  If my above thoughts make sense, I would like to work on this from backend as well as front end (from a full stack capacity) to architect, design and implement the solution.
What alternative solutions did you explore? (Optional)
N.A.

@brkdavis - Good questions!  We already centrally aggregate these logs.  They are just inconvenient to access, and only by a limited set of people (given all the concerns you raised).  The point of local log capture is to make someone's own logs much easier for them to access.  By capturing local logs into the Download folder, we make someone's own logs easier for them to access for whatever purpose they want.   So, good questions, but I still would like to go ahead with this issue as stated.

@brkdavis - Good questions! We already centrally aggregate these logs. They are just inconvenient to access, and only by a limited set of people (given all the concerns you raised). The point of local log capture is to make someone's own logs much easier for them to access. By capturing local logs into the Download folder, we make someone's own logs easier for them to access for whatever purpose they want. So, good questions, but I still would like to go ahead with this issue as stated.

@quinthar : thanks a lot for the clarifications. Couple of questions in direction of logs in Downloads folder.

Do we have a log viewer within the app?
Should the logs automatically get logged to Downloads folder ss and when the log entries and generated? Or is it only upon 4 finger tap we must export the logs from private folder to Downloads? I believe it is the latter. Kindly confirm.

Do we have a log viewer within the app?
Yes, in About > Troubleshooting > View console logs

Should the logs automatically get logged to Downloads folder ss and when the log entries and generated? Or is it only upon 4 finger tap we must export the logs from private folder to Downloads so that user can share from there at any point in time? I believe it is the latter. Kindly confirm.
This issue is just about changing where it's logged, not when.  So it's currently logged when you enable via 4-finger tap, or via About > Troubleshooting.  So let's keep it working as is, just change where it saves the logs to.

What are the next steps here; are we waiting on @ishpaul777 to pick a proposal? What's the ETA?

Hey @ishpaul777 we have a couple proposals here -- can you please review ASAP?

Contributor details
Your Expensify account email<EMAIL_ADDRESS>Upwork Profile Link: https://www.upwork.com/freelancers/~01063aad97ce0e22c6

@ishpaul777 @ShridharGoel I think we can hardcode the path name here as that will be easy to easy to follow.

Reapplying the New Feature label to get another BZ member on this while I am OOO til May 2. Thanks @abekkala -- we're just waiting on a PR from @ShridharGoel.  I'll grab this back from you when I return!

I'm back from OOO, thanks for watching this while I was out @abekkala!
The PR is awaiting approving review and all conflicts have been resolved. Based on this it seems we're now in the process of running an adhoc build

Great, we're 3 weeks into this issue, so super eager to get it done.

What are the next steps here, who is doing them, and what is the ETA?  This feels like a one-line change, can you help me understand why it's taking so long?

@stephanieelliott This is marked as HIGH but it is missing the high priority label. Can you check it?

Sure @ShridharGoel, we can add the High Priority label

This was deployed to prod earlier today

Woohoo, this is great!!

Summarizing payment on this issue:

Contributor: @ShridharGoel $500 via Upwork, PAID
Contributor+: @ishpaul777 $500 via Upwork, PAID

Heads up since this job was already set at $250, the payment was issued as $250 milestone payment + $250 bonus for a total of $500.
Upwork job is here: https://www.upwork.com/jobs/~0143be8cb9f6347710


Implement MGET for interval hashes

Works just like HMGET

Codecov Report

Merging #4 (340a011) into main (75503a9) will decrease coverage by 1.04%.
The diff coverage is 75.00%.

@@            Coverage Diff             @@
##             main       #4      +/-   ##
==========================================
- Coverage   91.71%   90.67%   -1.04%
==========================================
  Files           6        6
  Lines         181      193      +12
==========================================
+ Hits          166      175       +9
- Misses         10       12       +2
- Partials        5        6       +1

Files Changed
Coverage Δ

interval_hash.go
86.95% <75.00%> (-4.22%)
:arrow_down:

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


vagrantfile is not a Keybase user

i got this notification from time to time, more so when i use cli for CRUD operations on file in the /keybase mount.

my log id: 5a340a3348574bcb31947f1c

Sounds like something in your environment is trying to open files named "vagrantfile" on each directory you enter.

i am using fish shell with bgbthefish theme and enabled "theme_display_vagrant yes" so that function would check if Vagrantfile is exist in the directory that i am changing into. False alarm on my part.


404 Not Found with influxdb-grafana-controller.yaml

I create pods and services using files in heapster/deploy/kube-config/influxdb/.
API objects are created and look fine.
$ ./kubectl get po
NAME                                  READY     STATUS    RESTARTS   AGE
elasticsearch-logging-v1-7kbw4        1/1       Running   0          7d
elasticsearch-logging-v1-q7vyj        1/1       Running   0          7d
fluentd-elasticsearch-<IP_ADDRESS>   1/1       Running   2          7d
fluentd-elasticsearch-<IP_ADDRESS>   1/1       Running   1          7d
fluentd-elasticsearch-<IP_ADDRESS>   1/1       Running   1          7d
heapster-u0qom                        1/1       Running   2          1h
influxdb-grafana-u0g2t                2/2       Running   0          25m
kibana-logging-v1-z9rhh               1/1       Running   0          7d
kube-dns-v9-hjmjd                     4/4       Running   1          7d
kube-ui-v3-tzr4h                      1/1       Running   0          2h
kubedash-8icur                        1/1       Running   0          7d

$ ./kubectl get se
NAME                    LABELS                                                                                SELECTOR                        IP(S)          PORT(S)
elasticsearch-logging   k8s-app=elasticsearch-logging,kubernetes.io/cluster-service=true,kubernetes.io/name=Elasticsearch   k8s-app=elasticsearch-logging   <IP_ADDRESS>   9200/TCP
heapster                kubernetes.io/cluster-service=true,kubernetes.io/name=Heapster                                      k8s-app=heapster                <IP_ADDRESS>    80/TCP
kibana-logging          k8s-app=kibana-logging,kubernetes.io/cluster-service=true,kubernetes.io/name=Kibana                 k8s-app=kibana-logging          <IP_ADDRESS>    5601/TCP
kube-dns                k8s-app=kube-dns,kubernetes.io/cluster-service=true,kubernetes.io/name=KubeDNS                      k8s-app=kube-dns                <IP_ADDRESS>      53/UDP
                                                                                53/TCP
kube-ui                 k8s-app=kube-ui,kubernetes.io/cluster-service=true,kubernetes.io/name=KubeUI                        k8s-app=kube-ui                 <IP_ADDRESS>    80/TCP
kubedash                name=kubedash                                                                                name=kubedash                   <IP_ADDRESS>   80/TCP
monitoring-grafana      kubernetes.io/cluster-service=true,kubernetes.io/name=monitoring-grafana                            name=influxGrafana              <IP_ADDRESS>   80/TCP
monitoring-influxdb     <none>                                                                                name=influxGrafana              <IP_ADDRESS>     8083/TCP
                                                                                8086/TCP

$ ./kubectl cluster-info
Kubernetes master is running at https://<IP_ADDRESS>
Elasticsearch is running at https://<IP_ADDRESS>/api/v1/proxy/namespaces/kube-system/services/elasticsearch-logging
Heapster is running at https://<IP_ADDRESS>/api/v1/proxy/namespaces/kube-system/services/heapster
Kibana is running at https://<IP_ADDRESS>/api/v1/proxy/namespaces/kube-system/services/kibana-logging
KubeDNS is running at https://<IP_ADDRESS>/api/v1/proxy/namespaces/kube-system/services/kube-dns
KubeUI is running at https://<IP_ADDRESS>/api/v1/proxy/namespaces/kube-system/services/kube-ui
monitoring-grafana is running at https://<IP_ADDRESS>/api/v1/proxy/namespaces/kube-system/services/monitoring-grafana

In a browser, I try to access below url without success. (I can access other services without problem.)
https://<IP_ADDRESS>/api/v1/proxy/namespaces/kube-system/services/monitoring-grafana/
Grafana logs are shown below.
$ ./kubectl logs -f influxdb-grafana-u0g2t grafana
Influxdb service URL is provided.
Using the following URL for InfluxDB: http://monitoring-influxdb:8086
Using the following backend access mode for InfluxDB: proxy
Starting Grafana in the background
Waiting for Grafana to come up...
2015/10/16 03:59:23 [I] Starting Grafana
2015/10/16 03:59:23 [I] Version: 2.1.0, Commit: v2.1.0, Build date: 2015-08-04 14:19:48 +0000 UTC
2015/10/16 03:59:23 [I] Configuration Info
Config files:
  [0]: /usr/share/grafana/conf/defaults.ini
  [1]: /etc/grafana/grafana.ini
Command lines overrides:
  [0]: default.paths.data=/var/lib/grafana
  [1]: default.paths.logs=/var/log/grafana
    Environment variables used:
  [0]: default.paths.data=/var/lib/grafana
  [1]: default.paths.logs=/var/log/grafana
Paths:
  home: /usr/share/grafana
  data: /var/lib/grafana
  logs: /var/log/grafana

2015/10/16 03:59:23 [I] Database: sqlite3, ConnectionString: file:/var/lib/grafana/grafana.db?cache=shared&mode=rwc&_loc=Local
2015/10/16 03:59:23 [I] Migrator: Starting DB migration
2015/10/16 03:59:23 [I] Migrator: exec migration id: create migration_log table
2015/10/16 03:59:23 [I] Migrator: exec migration id: create user table
2015/10/16 03:59:23 [I] Migrator: exec migration id: add unique index user.login
2015/10/16 03:59:23 [I] Migrator: exec migration id: add unique index user.email
2015/10/16 03:59:23 [I] Migrator: exec migration id: drop index UQE_user_login - v1
2015/10/16 03:59:23 [I] Migrator: exec migration id: drop index UQE_user_email - v1
2015/10/16 03:59:23 [I] Migrator: exec migration id: Rename table user to user_v1 - v1
2015/10/16 03:59:23 [I] Migrator: exec migration id: create user table v2
2015/10/16 03:59:24 [I] Migrator: exec migration id: create index UQE_user_login - v2
2015/10/16 03:59:24 [I] Migrator: exec migration id: create index UQE_user_email - v2
2015/10/16 03:59:24 [I] Migrator: exec migration id: copy data_source v1 to v2
2015/10/16 03:59:24 [I] Migrator: exec migration id: Drop old table user_v1
2015/10/16 03:59:24 [I] Migrator: exec migration id: create star table
2015/10/16 03:59:24 [I] Migrator: exec migration id: add unique index star.user_id_dashboard_id
2015/10/16 03:59:24 [I] Migrator: exec migration id: create org table v1
2015/10/16 03:59:24 [I] Migrator: exec migration id: create index UQE_org_name - v1
2015/10/16 03:59:24 [I] Migrator: exec migration id: create org_user table v1
2015/10/16 03:59:24 [I] Migrator: exec migration id: create index IDX_org_user_org_id - v1
2015/10/16 03:59:24 [I] Migrator: exec migration id: create index UQE_org_user_org_id_user_id - v1
2015/10/16 03:59:24 [I] Migrator: exec migration id: copy data account to org
2015/10/16 03:59:24 [I] Migrator: skipping migration id: copy data account to org, condition not fulfilled
2015/10/16 03:59:24 [I] Migrator: exec migration id: copy data account_user to org_user
2015/10/16 03:59:24 [I] Migrator: skipping migration id: copy data account_user to org_user, condition not fulfilled
2015/10/16 03:59:24 [I] Migrator: exec migration id: Drop old table account
2015/10/16 03:59:24 [I] Migrator: exec migration id: Drop old table account_user
2015/10/16 03:59:24 [I] Migrator: exec migration id: create dashboard table
2015/10/16 03:59:24 [I] Migrator: exec migration id: add index dashboard.account_id
2015/10/16 03:59:24 [I] Migrator: exec migration id: add unique index dashboard_account_id_slug
2015/10/16 03:59:24 [I] Migrator: exec migration id: create dashboard_tag table
2015/10/16 03:59:24 [I] Migrator: exec migration id: add unique index dashboard_tag.dasboard_id_term
2015/10/16 03:59:25 [I] Migrator: exec migration id: drop index UQE_dashboard_tag_dashboard_id_term - v1
2015/10/16 03:59:25 [I] Migrator: exec migration id: Rename table dashboard to dashboard_v1 - v1
2015/10/16 03:59:25 [I] Migrator: exec migration id: create dashboard v2
2015/10/16 03:59:25 [I] Migrator: exec migration id: create index IDX_dashboard_org_id - v2
2015/10/16 03:59:25 [I] Migrator: exec migration id: create index UQE_dashboard_org_id_slug - v2
2015/10/16 03:59:25 [I] Migrator: exec migration id: copy dashboard v1 to v2
2015/10/16 03:59:25 [I] Migrator: exec migration id: drop table dashboard_v1
2015/10/16 03:59:25 [I] Migrator: exec migration id: alter dashboard.data to mediumtext v1
2015/10/16 03:59:25 [I] Migrator: exec migration id: create data_source table
2015/10/16 03:59:25 [I] Migrator: exec migration id: add index data_source.account_id
2015/10/16 03:59:25 [I] Migrator: exec migration id: add unique index data_source.account_id_name
2015/10/16 03:59:25 [I] Migrator: exec migration id: drop index IDX_data_source_account_id - v1
2015/10/16 03:59:25 [I] Migrator: exec migration id: drop index UQE_data_source_account_id_name - v1
2015/10/16 03:59:25 [I] Migrator: exec migration id: Rename table data_source to data_source_v1 - v1
2015/10/16 03:59:25 [I] Migrator: exec migration id: create data_source table v2
2015/10/16 03:59:25 [I] Migrator: exec migration id: create index IDX_data_source_org_id - v2
2015/10/16 03:59:25 [I] Migrator: exec migration id: create index UQE_data_source_org_id_name - v2
2015/10/16 03:59:25 [I] Migrator: exec migration id: copy data_source v1 to v2
2015/10/16 03:59:25 [I] Migrator: exec migration id: Drop old table data_source_v1 #2
2015/10/16 03:59:26 [I] Migrator: exec migration id: create api_key table
2015/10/16 03:59:26 [I] Migrator: exec migration id: add index api_key.account_id
2015/10/16 03:59:26 [I] Migrator: exec migration id: add index api_key.key
2015/10/16 03:59:26 [I] Migrator: exec migration id: add index api_key.account_id_name
2015/10/16 03:59:26 [I] Migrator: exec migration id: drop index IDX_api_key_account_id - v1
2015/10/16 03:59:26 [I] Migrator: exec migration id: drop index UQE_api_key_key - v1
2015/10/16 03:59:26 [I] Migrator: exec migration id: drop index UQE_api_key_account_id_name - v1
2015/10/16 03:59:26 [I] Migrator: exec migration id: Rename table api_key to api_key_v1 - v1
2015/10/16 03:59:26 [I] Migrator: exec migration id: create api_key table v2
2015/10/16 03:59:26 [I] Migrator: exec migration id: create index IDX_api_key_org_id - v2
2015/10/16 03:59:26 [I] Migrator: exec migration id: create index UQE_api_key_key - v2
2015/10/16 03:59:26 [I] Migrator: exec migration id: create index UQE_api_key_org_id_name - v2
2015/10/16 03:59:26 [I] Migrator: exec migration id: copy api_key v1 to v2
2015/10/16 03:59:26 [I] Migrator: exec migration id: Drop old table api_key_v1
2015/10/16 03:59:26 [I] Migrator: exec migration id: create dashboard_snapshot table v4
2015/10/16 03:59:26 [I] Migrator: exec migration id: drop table dashboard_snapshot_v4 #1
2015/10/16 03:59:26 [I] Migrator: exec migration id: create dashboard_snapshot table v5 #2
2015/10/16 03:59:26 [I] Migrator: exec migration id: create index UQE_dashboard_snapshot_key - v5
2015/10/16 03:59:26 [I] Migrator: exec migration id: create index UQE_dashboard_snapshot_delete_key - v5
2015/10/16 03:59:26 [I] Migrator: exec migration id: create index IDX_dashboard_snapshot_user_id - v5
2015/10/16 03:59:27 [I] Migrator: exec migration id: alter dashboard_snapshot to mediumtext v2
2015/10/16 03:59:27 [I] Created default admin user: admin
2015/10/16 03:59:27 [I] Listen: http://<IP_ADDRESS>:3000/api/v1/proxy/namespaces/kube-system/services/monitoring-grafana
..Grafana is up and running.
Creating default influxdb datasource...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   243  100    37  100   206   1704   9492 --:--:-- --:--:-- --:--:--  9809
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Set-Cookie: grafana_sess=ac5761b9d8f99b4f; Path=/api/v1/proxy/namespaces/kube-system/services/monitoring-grafana; HttpOnly
Date: Fri, 16 Oct 2015 03:59:27 GMT
Content-Length: 37

{"id":1,"message":"Datasource added"}
Importing default dashboards...
Importing /dashboards/cluster.json ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 32167  100    60  100 32107    813   425k --:--:-- --:--:-- --:--:--  435k
HTTP/1.1 100 Continue

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Set-Cookie: grafana_sess=0d38b4ca3c380add; Path=/api/v1/proxy/namespaces/kube-system/services/monitoring-grafana; HttpOnly
Date: Fri, 16 Oct 2015 03:59:27 GMT
Content-Length: 60

{"slug":"kubernetes-cluster","status":"success","version":0}
Done importing /dashboards/cluster.json
Importing /dashboards/containers.json ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 10483  100    52  100 10431   1508   295k --:--:-- --:--:-- --:--:--  308k
HTTP/1.1 100 Continue

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Set-Cookie: grafana_sess=e36e3d71df389ce3; Path=/api/v1/proxy/namespaces/kube-system/services/monitoring-grafana; HttpOnly
Date: Fri, 16 Oct 2015 03:59:27 GMT
Content-Length: 52

{"slug":"containers","status":"success","version":0}
Done importing /dashboards/containers.json

Bringing Grafana back to the foreground
exec /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini cfg:default.paths.data=/var/lib/grafana cfg:default.paths.logs=/var/log/grafana
              Dload  Upload   Total   Spent    Left  Speed
100 32167  100    60  100 32107    813   425k --:--:-- --:--:-- --:--:--  435k
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 10483  100    52  100 10431   1508   295k --:--:-- --:--:-- --:--:--  308k
2015/10/16 04:06:14 [I] Completed /api/v1/proxy/namespaces/kube-system/services/monitoring-grafana/css/grafana.dark.min.4efc02b6.css 404 Not Found in 2.125149ms
2015/10/16 04:06:14 [I] Completed /api/v1/proxy/namespaces/kube-system/services/monitoring-grafana/app/app.3c38f44f.js 404 Not Found in 1.696634ms

@vishh From the last 2 lines, it seems there are missing css/js files in the grafana container.

I have tried using nodePort as shown below. Same result, no luck.
grafana-service.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    kubernetes.io/cluster-service: 'true'
    kubernetes.io/name: monitoring-grafana
  name: monitoring-grafana
  namespace: kube-system
spec:
  # In a production setup, we recommend accessing Grafana through an external Loadbalancer
  # or through a public IP.
  # type: LoadBalancer
  type: "NodePort"
  ports:
  - port: 80
    targetPort: 3000
    nodePort: 30015
  selector:
    name: influxGrafana

It might be a href issue. Html source code shows href has wrong relative url.
So I changed influxdb-grafana-controller.yaml as shown below.
          - name: GF_SERVER_ROOT_URL
            value: /
            #value: /api/v1/proxy/namespaces/kube-system/services/monitoring-grafana/

Now I can see the Grafana UI with proxy url, but can't get any content. Browser pop-up shows the server could not find the requested resource
https://<IP_ADDRESS>/api/v1/proxy/namespaces/kube-system/services/monitoring-grafana/
Luckily I have nodePort access too.
http://<IP_ADDRESS>:30015/
It works!
Hopefully there will be a correct GF_SERVER_ROOT_URL setting for both proxy url and nodePort url.

Which version of Kubernetes were you using? I believe @vishh made some changes to kube-proxy on the Kubernetes side to make Grafana work via the proxy URL.

I'm using v1.0.6, here are some proves.
$ ./kubectl version
Client Version: version.Info{Major:"1", Minor:"0", GitVersion:"v1.0.6", GitCommit:"388061f00f0d9e4d641f9ed4971c775e1654579d", GitTreeState:"clean"}
Server Version: version.Info{Major:"1", Minor:"0", GitVersion:"v1.0.6", GitCommit:"388061f00f0d9e4d641f9ed4971c775e1654579d", GitTreeState:"clean"}

$ ./kube-proxy --version
Kubernetes v1.0.6

Am I missing some parameters in kube-proxy?
kube-proxy \
  --master=https://<IP_ADDRESS>:443 \
  --kubeconfig=/srv/kube-proxy/kubeconfig \
  --logtostderr=true

See my explanation of the problem in #249.

I believe this has been fixed by kubernetes/kubernetes@2a075cd4bd04a003045d4946065b4cf153803446, which made it into v1.1.1.  I think this issue can be closed.

I'll take your word for it!
Since K8S v1.1.1 upgrade to docker 1.8.3 (#15719) and CoreOS stable is still on 1.7.1, I'm not ready to check this issue.

the problem still happens to me  in K8S 1.1.7 so i suggest to open that issue again

+1

+1

This happened to another user with k8s 1.2:
https://stackoverflow.com/questions/37993263/grafana-not-showing-in-kubernetes-heapster
Can we reopen the issue?
/cc a couple of maintainers: @vishh @mwielgus @piosz

The solution is posted by the asker http://stackoverflow.com/a/38039069

Flanneld is running on my master but I'm getting 404's too and an empty page with a button and {{alert.title}}. Kubernetes 1.2.4 with ubuntu as K8s provider.
<IP_ADDRESS> - - [29/Jul/2016:12:22:11 +0200] "GET /monitoring HTTP/1.1" 200 1247 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0"
<IP_ADDRESS> - - [29/Jul/2016:12:22:11 +0200] "GET /api/v1/proxy/namespaces/kube-system/services/monitoring-grafana/public/css/grafana.dark.min.a95b3754.css HTTP/1.1" 404 19 "https://mytestingdomain.net/monitoring" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0"
<IP_ADDRESS> - - [29/Jul/2016:12:22:11 +0200] "GET /api/v1/proxy/namespaces/kube-system/services/monitoring-grafana/public/app/app.ca0ab6f9.js HTTP/1.1" 404 19 "https://mytestingdomain.net/monitoring" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0"

Maybe I've made an error in my nginx proxy configuration but the K8s Dashboard works so I think it should be OK:
        location /monitoring {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                #try_files $uri $uri/ =404;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
                proxy_pass http://<IP_ADDRESS>:8080/api/v1/proxy/namespaces/kube-system/services/monitoring-grafana/;
                include /etc/nginx/proxy_params;
        }

This seems like a problem with proxy on master. AFAIR I've seen similar problems with accessing web pages via the master proxy. Please create an issue on https://github.com/kubernetes/kubernetes

I'm using kubernetes 1.4.4 with weave overlay network. And I encountered this problem too, how can I make it work?
I tried setting GF_SERVER_ROOT_URL to "/", but the grafana pages showed no metrics at all.

Never mind, my mistake. I can see metrics.
But I guess modify GF_SERVER_ROOT_URL isn't the desired way to fix the problem. Any better way when using weave network?

faced same issue.
As I am running K8s on AWS. I created a ELB as the load balance to bypass this issue.
` kubectl expose --namespace=kube-system  deployment monitoring-grafana --port=80 --target-port=3000 --name=monitoring-grafana-newservice --type=LoadBalancer
The command list above will create a ELB base on the deployment monitoring-grafana, and ELB listening on port 80.
To access, hit your ELB URL directly or matching the ELB name to your public/private DNS name via Route53.
To me, the link is: http://a0cd682e50aa611e79a0202ddbfd8337-xxxxxx.ap-southeast-2.elb.amazonaws.com/

I get this error with kubectl proxy but using kubectl port-forward --namespace=kube-system <grafana-pod> 3000:3000 & works


Scala Common Enrich: Update MailChimp Adapter to remove the 'type' field from the event JSON

Further Work:

Remove 'type' field from MailChimp Redshift DDL's
Remove 'type' field from MailChimp JSON Path's

Migrated to https://github.com/snowplow/enrich/issues/170


fix: ensure trailing slash in webhook prefix variables

Closed in favor of https://github.com/ansible/eda-server/pull/991


[stream-api] circle ci create docker images. Checks on PRs.

Done.
https://hub.docker.com/r/cybernode/cm-stream-api/


services.xserver: Disable Ctrl+Alt+Backspace by default

Ctrl+Alt+Backspace is usually enabled by default under X, and is a
keyboard shortcut that forcefully kills the current X server. This can
lead to data loss by users if accidentally pressed. This commit
introduces a new option, services.xserver.enableCtrlAltBackspace, that
is disabled by default. If set to true, the previous behavior can be
restored.
A similar decision was made by the Ubuntu team, and is documented here:
https://wiki.ubuntu.com/XorgCtrlAltBackspace

:+1:

I can't really imagine pressing such a combination by accident myself, but I suppose it can happen. Have you tested that this is enough, e.g. in light of http://lists.freedesktop.org/archives/xorg-devel/2009-April/000627.html ?

 With my patch (rebased on the latest commit of 15.09), Ctrl+Alt+Backspace doesn't do anything.
With my keyboard (a Truly Ergonomic) it's very easy to accidentally hold alt because it's directly under ctrl, so a misplaced pinky finger can cause me a lot of swearing :)

:+1:

should be cherry-pick this also to 15.09?

I would prefer having ctrl-alt-backspace enabled by default (and that is also the upstream default).

i think enableCtrlAltBackspace as an option name is more descriptive then enableZap. i think @ocharles's argument makes sense especially if we wan to be more user friendly.
@FRidh @vcunat would you agree?

:+1: let's change the name to enableCtrlAltBackspace, what's that "zap"....

I'm certainly OK with the name as in PR, and also OK (but not certainly) with disabling the combination by default.

Merged. Maybe there should be a line in the release notes about this?

Documented.


Goals?

This looks interesting, is there a writeup somewhere of the goals and plans? Is it related to JSIL?

See the README I forgot to commit until now...
The goal was to get some real-world application/application-ish test cases together while LLVM is still in the works. I'm planning to compile a couple small utilities down and run them in the prototype's interpreter eventually (like a .tga generator or something.)

Got it, thanks!

Just curious here on progress and if there is a place/blog those of us who are interested in WebAssembly/ILWasm can subscribe for the latest?


Pretrained Model

Hi, thank you for your excellent work, it's really helpful to understand C-GCD. I'm not sure which model is used in your project, could you please provide the pretrained backbone weights ?  That's will be great.

Hi! Thanks for the question.
We use ViT-B/16, pre-trained with DINO, which is the conventional implementation in the literature of GCD. You could download the pre-trained weights from the original repo.

Hi! Thanks for the question. We use ViT-B/16, pre-trained with DINO, which is the conventional implementation in the literature of GCD. You could download the pre-trained weights from the original repo.

OK, thanks a lot !


Cannot read property 'push' of undefined

Hey @binaryminds , thank you for your work.
I wanted to give a try to your library, but I may have encountered a problem.
Everything's working as expected, except for custom events.
If I put a custom event like this:
es.addEventListener("topic", event => {
   console.log(">> New event", event);
});

I have the following error when building the app: Cannot read property 'push' of undefined
Any help would be appreciated :)

Hello @jcoulaud !
We're glad you are using our library! We have found the source of your problem and provided the fix in new release.
Update your dependency to version<EMAIL_ADDRESS>Let us know if everything works!

Thank you, everything's working as expected :)


Warning: conflicting versions of Newtonsoft.Json in latest update to F# MVC 5 project template

After updating to the latest version of F# MVC 5 templates I am seeing this warning. This is a vanilla project with no additional code added. Just create a new project using the F# MVC 5 template for MVC and Web API and try to compile:
Found conflicts between different versions of the same dependent assembly. In Visual Studio, double-click this warning (or select it and press Enter) to fix the conflicts; otherwise, add the following binding redirects to the "runtime" node in the application configuration file: <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"><dependentAssembly><assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" /><bindingRedirect oldVersion="<IP_ADDRESS>-<IP_ADDRESS>" newVersion="<IP_ADDRESS>" /></dependentAssembly></assemblyBinding>	C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets

This has been fixed and is now available on VSG in version 1.12.

Yep, just installed and verified. Thank you so much!

I belive we need to reopen this issue, when you change Newtonsoft.Json to version 7.0.1 it has crashed and you need to change it back to 6.0.4 :(


CCDB GE/033 - Section 2.5.3

Comment:
In many SFRs Integrity is claimed. HW Fault injections have to / can be also considered in those cases.
Proposal:
Priority: 1

I have no idea how to answer this. Is this meaning that we need different rationales to point to this as an integrity claim in the cPP? I am not sure what this specifically would have to do with the SD unless there is a specific test case that needs to be added (which isn't proposed here).

I'd reject the comment and not make any changes in the SD. Fault Injection SFR (FPT_FLS.1/FI) differs from the integrity check. Fault injection is not to change the code to break the integrity but to change the temperature or voltage to make the same code behavior abnormal.

The SFR FPT_FLS.1/FI is intended to deal with temperature or voltage changes only (environmental parameters), not code changes to firmware, so integrity is a possible later consequence, but not a direct consequence.
Will move to v1.1.
Does BSI have a proposed change for this?

Without any proposal from BSI, though maybe this should be related to #140? FI would seem to be applicable for physically protected channels, such that if this is included in the ST, then the evaluator should at least consider if FI can happen over that channel. Other than that, I think this is not relevant since integrity everywhere else is maintained by cryptography, and explicitly is not to maintain integrity but to verify it, which is possible even after an FI causes a problem.

During the BSI evaluations I was part of that handled such systems, I did not see that any HW fault induction tests or similar were required by BSI to verify the integrity verification of the firmware based on signatures or HMACs or similar. Thus I would not suggest to start covering this here now.

OK, so the consensus seems to be to reject this one. I am fine with that and BSI can always raise the issue again.


gif embeds not working properly

For the images where the master image is a gif, the embed image on discord is a static jpg
Example noted:
https://www.pixiv.net/en/artworks/113020016
And the result: https://www.phixiv.net/i/c/600x1200_90/img-master/img/2023/10/31/21/42/21/113020016_master1200.jpg

The issue with animated artworks is they aren't technically GIFs. They are a format called ugoria, which is a sequence of PNG or JPEG images stitched together. So with regular artworks I can just proxy the request, with ugoria one request for the GIF (or APNG or whatever I end up using as the animated format) turns into many proxied requests + stitching it together into a GIF. This isn't impossible but I am not sure how it would affect hosting costs and performance.
I'm not entirely against it but I would probably need to set up a secondary service like a cf worker to stitch and cache the stitched GIF.

I see, thanks for the explanation.
I won't be able to offer meaningful suggestions here owing to lack of experience, so apologies.
Although considering that pixiv caps the size of the ugoria files at 30MB, it might not be entirely implausible to consider implementing it sometime in the future.

What about using a project that already exists to do that like https://github.com/jmb6/ugoira-convert (I never tried it so I don't know if it works fine) or one of the other project related to ugoira out there ?

Please make an issue here https://github.com/thelaao/phixiv


Is this a Bug？

When I use the branch V1.1.0 of HSM-Tool, after compilation, execute “ ./hsm-tools sign pkcs11 -p ./dtc.so -f ./example.com -3 -z example.com -o example.com.signed -c”，the Error "Error: Input File Path not Specified" occurs.But there is no problem with using other versions.

You are right, flag parsing is bugged in v1.1.0. v1.1.1 fixes it. I think we could delete the broken version to avoid future problems.

You are right, flag parsing is bugged in v1.1.0. v1.1.1 fixes it. I think we could delete the broken version to avoid future problems.

OK. Thank you.I think you can update the readme.md file first. The description is still wrong.

I took a look at the code, and you're using SQlitE3 as a way to store keys, but SQlitE3 is a localized database, isn't that safe?

If by "localized database" you mean the database is a local file and that could be insecure, we think that with a good configuration (well defined permissions in the database and config files) you should not have problems with data exfiltration. In case you think another storage system could be better for your use case, you could extend it, creating another struct that follows the [Storage](https://github.com/niclabs/dtc/blob/master/storage.go) interface and another Config definition.
In any case, your question is more related to DTC than this repo, so I recommend you to use the issues on its respective repository.

If by "localized database" you mean the database is a local file and that could be insecure, we think that with a good configuration (well defined permissions in the database and config files) you should not have problems with data exfiltration. In case you think another storage system could be better for your use case, you could extend it, creating another struct that follows the [Storage](https://github.com/niclabs/dtc/blob/master/storage.go) interface and another Config definition.
In any case, your question is more related to DTC than this repo, so I recommend you to use the issues on its respective repository.

OK，Thanks. I will close the issue.


Javascript

Javascript
User Story
As a boot camp student
I want the prevork notes to be structured on a webpage
So that I can easily find and read the information
Acceptance Criteria
GIVEN a prework study Guide website
WHEN I view the study guide
THEN I can see the four topics I learned listed along with a suggestion on what I should study first

added javascript


End-of-Semester Individual Meeting

Please schedule an end-of-semester individual meeting with me in the month of December. It should last no less than 1 hour.  https://katyhuff.youcanbook.me
Please also send via email at least a few paragraphs (up to one page) summarizing your progress this semester, your plan for next semester, your projected timeline to graduation (e.g. a GANTT chart), and any questions or concerns that you'd like to address in our meeting.
For you, I think this needs to include a discussion of the review of your prelim draft - which is upcoming, I think?

No, my draft far far away from close...
Now trying to build PyNE on BW, I have spent half of last week for it.
But I have some thoughts about workflow optimization

@andrewryh :  just fyi, regarding the draft,  this issue (though otherwise identical to yours) is targeted at @kamuda1 .
I don't expect a prelim for some time from you andrei -- paper & MS first.

Sorry, my bad...


Add string literal support

Description:
Refer: https://ballerina.io/spec/lang/2020R1/#string-literal

Added with #22394


Add Multi-Component GCMC

Write code that creates Cassandra input files for multi-component GCMC studies. Add to Cassandra classes.

available in SmithLabCodes


Changed "Duplicate Identifier" to "enum cannot be merged..."

when either declaration of the identifier is an enum.
Partial (?) fix for #529

@NaridaL,
Thanks for having already signed the Contribution License Agreement. Your agreement was validated by Microsoft. We will now review your pull request.
Thanks,
Microsoft Pull Request Bot

@DanielRosenwasser can i get your input on the proposed error message here?

@mhegazy "Enum declarations can only merge with namespace or other enum declarations." definitely seems better. I rebased and changed it.

thanks!


qemu driver vsock support

The PR rebases https://github.com/hyperhq/runv/pull/355 on top of latest master. It changes qemu and libvirt driver to support vsock device in guest vm:

try to load vsock host kernel module at startup
if vsock host modules are supported and vsock is enabled via config, add vsock device to guest vm and create control and tty channels via vsock
persistent vsock cid and load it at startup

[hypervsock@~]$sudo hyperctl run -d bergwolf/ubuntu-fio
POD id is ubuntu-fio-3551741209
Time to run a POD is 4477 ms

[hypervsock@~]$pa|grep vsock
root     128768  3.3  6.1 1368832 109172 ?      Sl   16:37   0:07 /usr/bin/qemu-system-x86_64 -machine pc-i440fx-2.1,accel=kvm,usb=off -global kvm-pit.lost_tick_policy=discard -cpu host -kernel /var/lib/hyper/kernel -initrd /var/lib/hyper/hyper-initrd.img -append console=ttyS0 panic=1 no_timer_check -realtime mlock=off -no-user-config -nodefaults -no-hpet -rtc base=utc,driftfix=slew -no-reboot -display none -boot strict=on -m size=64,slots=1,maxmem=32768M -smp cpus=1,maxcpus=8 -numa node,nodeid=0,cpus=0-7,mem=64 -qmp unix:/var/run/hyper/vm-HAvUnepiTO/qmp.sock,server,nowait -serial unix:/var/run/hyper/vm-HAvUnepiTO/console.sock,server,nowait -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x2 -device virtio-scsi-pci,id=scsi0,bus=pci.0,addr=0x3 -chardev socket,id=charch0,path=/var/run/hyper/vm-HAvUnepiTO/hyper.sock,server,nowait -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charch0,id=channel0,name=sh.hyper.channel.0 -chardev socket,id=charch1,path=/var/run/hyper/vm-HAvUnepiTO/tty.sock,server,nowait -device virtserialport,bus=virtio-serial0.0,nr=2,chardev=charch1,id=channel1,name=sh.hyper.channel.1 -fsdev local,id=virtio9p,path=/var/run/hyper/vm-HAvUnepiTO/share_dir,security_model=none -device virtio-9p-pci,fsdev=virtio9p,mount_tag=share_dir -daemonize -pidfile /var/run/hyper/vm-HAvUnepiTO/pidfile -D /var/log/hyper/qemu/vm-HAvUnepiTO.log -device vhost-vsock-pci,id=vsock0,bus=pci.0,addr=5,guest-cid=1024

root@ubuntu-fio-3551741209:/# ./nc-vsock -l 1234
Connection from cid 2 port 1158...

Requires: https://github.com/hyperhq/hyperstart/pull/249
TODOs:

need to handle vsock cid increment for runv cmd
need to figure out how to make it work with template

@laijs updated with following requested changes:

use vsock:// and unix:// to denote vsock and unix socket addresses, and convert utils/libhyperstart to handle both
move vsock guest cid to vmcontext and enable vsock support for libvirt
rename VsockCid to VsockCidAllocator
move vsock dialer to vsock_conn.go

One thing to note:
    libvirt by default uses cgroup controller to limit and grant guest
    permissions. However, when adding device via qemu monitor directly,
    libvirt has no knowledge and thus does not grant proper permissions to
    qemu process. As a result, qemu will get EPERM opening /dev/vhost-vsock
    device.

    To work around it, remove devices from cgroup_controllers in
    /etc/libvirt/qemu.conf.


Added benchmarks project and basic benchmark

Added a benchmark project (using benchmark.NET)
Copied most of the infrastructure from kestrel and tweaked it a little
Added a resolve benchmark

Method
Mean
StdErr
StdDev
Scaled
Scaled-StdDev
RPS
Gen 0
Allocated

NoDI
6.9489 ns
0.1808 ns
0.9905 ns
1.00
0.00
143,906,789.32
0.0112
24 B

Transient
51.2131 ns
0.3905 ns
2.1389 ns
7.47
0.82
19,526,255.52
0.0091
24 B

Scoped
106.3770 ns
4.2441 ns
23.2460 ns
15.53
3.71
9,400,532.68
-
0 B

Singleton
123.1784 ns
3.6458 ns
19.9689 ns
17.98
3.42
8,118,307.04
-
0 B

Does RPS bring any value here?

@khellang That's a good question. I like those big numbers 😄

Does RPS bring any value here?

Its easier to evaluate than 0.0001 ns

Quite fast... might need to stick it in a loop to be accurate :)

I don't like copying same code around, would prefer having package with benchmark.net specific code

I don't like copying same code around, would prefer having package with benchmark.net specific code

I knew you were going to say that. Will postpone this until then.

Program.cs code can be shared too

Like 5% of the code, the enum (which is a hack) isn't sharable. It really needs to be based on type names, not an enum.

We need to make it type based not enum based anyway, so it would be 100%

It needs to be rewritten is my point. Anyways, I'll add a package to Common with those 2 shared functions.

Also filed https://github.com/dotnet/BenchmarkDotNet/issues/386

here is nice comparison:
http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison

@arespr yes, see https://github.com/aspnet/DependencyInjection/issues/490

@davidfowl do we want to contribute RPS column to BDN?

@pakrym Yes, I was just asking @benaadams if he wrote it. It really belongs there.

RPS came from @mattwarren


Plugin fails to run with Jenkins running jdk11

Hi all,
This plugin doesn't work on Jenkins instances which are running Java11, eg:
 docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts-jdk11

The error occurs on the Report Generation step:
ERROR: Failed to create a report file
ERROR: Implementation of JAXB-API has not been found on module path or classpath.
ERROR: Leapwork for Jenkins plugin finished with errors
ERROR: javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.
 - with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory]

Digging through various documentation from Jenkins, eg:

https://wiki.jenkins-ci.org/display/JENKINS/JAXB-usage-in-Jenkins-plugins.html
https://issues.jenkins.io/browse/JENKINS-55202

This is caused by the removal of JAXB modules in the base Java installation in Java 9+.
I tried to edit the Jenkins launcher and add -Djavax.xml.bind.JAXBContextFactory=com.sun.xml.bind.v2.ContextFactory in the JAVA_OPTS (as suggested in the first link above) but this didn't work.
The only working fix I have for this is to manually copy the following jars:

https://repo1.maven.org/maven2/javax/xml/bind/jaxb-api/2.4.0-b180830.0359/jaxb-api-2.4.0-b180830.0359.jar
https://repo1.maven.org/maven2/com/sun/xml/bind/jaxb-core/3.0.2/jaxb-core-3.0.2.jar
https://repo1.maven.org/maven2/com/sun/xml/bind/jaxb-impl/2.4.0-b180830.0438/jaxb-impl-2.4.0-b180830.0438.jar
https://repo1.maven.org/maven2/org/glassfish/jaxb/jaxb-runtime/2.3.0-b170127.1453/jaxb-runtime-2.3.0-b170127.1453.jar

Into /var/jenkins_home/war/WEB-INF/lib/ ... But this seems like a terrible hack. Specifically because it's not forward-maintainable (plugin upgrades could break dependencies), and it also doesn't work well for managed Jenkins Instances (where you don't have access to customise the Jenkins Controller image).

this Issue has been fixed in Plugin version V4.0.6


fixes #10: Search for scala library dependency in api and implementat…

…ion as well.

Thank you for your contribution!


Small tweaks to the checkboxes and misc. links to use primary color color combos

I'm using headwind and realized it really re-org'd a fair bit of the classes hah - sorry!

I'm using headwind and realized it really re-org'd a fair bit of the classes hah - sorry!

I know the pain!


[Feature] adding cancel button

Description
When the user decides not to log out from the page, an additional "Cancel" button should be included in the logout popup.
Screenshots

Additional information
please assign it to me I want to work on this issue

go ahead!


CodeSandbox Broken for RowSelection Example for v7

Describe the bug
CodeSandbox Broken for RowSelection Example for v7
To Reproduce
Steps to reproduce the behavior:

Go to https://codesandbox.io/s/github/tannerlinsley/react-table/tree/master/examples/row-selection

Expected behavior
Renders Example without CORS error

Refresh the react-table dependency. It is likely resolving a cached version.

Thanks so much for the reply. Im still getting used to v7 and have a question about passing the selectedRows state back into a parent component. Before the update you could just pass a callback from the parent into the child as a prop and then have a onClick event call your callback with the row data being sent back to the parent. It seems as though now you will have to use useEffect() or the useRowSelect hook. Do you have any docs or code snippits for best practices for handling this?

For now, there's a few things in the FAQ that might point you in the right direction: https://github.com/tannerlinsley/react-table/blob/master/docs/faq.md#how-can-i-manually-control-the-table-state


Fix check_hwm

During further testing found one more bug in check_hwm
This fix is an addition to https://github.com/erlang-lager/lager/pull/467
I have to add this one more fix. The logic appeared to be more complicated and I missed one more bug in check_hwm. Hope now it should be ok. The fix does not look beautiful, sorry.

@russagit
I think your code is wrong, and I have made a pr to the same problem, and it works.
You can see it at #476 .

👍

The mps should be reset to 0 , not 1.
And the test case is still failed.


feat(django): Add db.system

ref https://github.com/getsentry/team-webplatform-meta/issues/60
So worked out when testing locally + the types seem to enforce this, and it works on all django versions, so I think this is good to go.

@antonpirker this is now ready to review - Lint error are unrelated
sentry_sdk/integrations/flask.py:162: error: "ImmutableMultiDict" expects no type arguments, but 2 given  [type-arg]
sentry_sdk/integrations/flask.py:166: error: "ImmutableMultiDict" expects no type arguments, but 2 given  [type-arg]
Found 2 errors in 1 file (checked 91 source files)

https://github.com/getsentry/sentry-python/actions/runs/4809397087/jobs/8560589799?pr=2040


Kind not shown in Output

It seems like we have an issue with displaying the kind in the actual main branch.
This is from a CI/CD run.
+---+-----------------------+--------------+---------------------+------+---------+------------------+------------------------+
| # |         Name          | Container ID |        Image        | Kind |  State  |   IPv4 Address   |      IPv6 Address      |
+---+-----------------------+--------------+---------------------+------+---------+------------------+------------------------+
| 1 | clab-2-linux-nodes-l1 | 8c2301c82502 | alpine:3            |      | running | <IP_ADDRESS>/24   | 2001:172:20:20::2/64   |
| 2 | clab-2-linux-nodes-l2 | 1cbda107ea35 | nginx:stable-alpine |      | running | <IP_ADDRESS>/24 | 2001:172:20:20::100/64 |
| 3 | clab-2-linux-nodes-l3 | 7d06380796bf | nginx:stable-alpine |      | running | N/A              | N/A                    |
+---+-----------------------+--------------+---------------------+------+---------+------------------+------------------------+

fixed in #1310


Download a song while converting a different song

[x] Using latest version as provided on the master branch
[ ] Searched for similar issues including closed ones

What is the purpose of your issue?

[ ] Bug
[x] Feature Request
[ ] Question
[ ] Other

Description
It would be extremely convenient, especially for users with slow computers, to add a feature, in which one command prompt window processes downloads and another processes conversions at the same time.
This feature would compensate for all the unnecessary time wasted converting a song right before downloading the next one.
It would be best if this was an option in config.yml, rather than having it forced upon all users by default.
Log

#130 which is about using a different thread for every track conversion might help with this. During that time, we didn't support config file and this would've forced upon users but now it would make sense to add this feature under experimental_threading config key which could either be true or false.

Kinda done. spotDL v3 uses multiprocessing .
I know it's late, just clearing out old issues.


[CMT-563-871] Update 2021-12-21-What-can-you-do-in-a-DAO.md - Greek

Description

Please include a summary of the change and which issue is fixed.
Please also include relevant motivation and context.

This pull request ...
Fixed issue

Please indicate the fixed issues with this exact format Fixes #232 where 232 is the number of the issue. This will trigger an auto-close if the issue when this PR is merged.
Supported keywords:
Fixes #1,#2,#3
close #1, #2, #3
fix #1 #2 #3
resolve #1,#2 #3
Resolves: #1,#2,#3
closed : #1, #2, #3

Fixes #(issue)
Type of change

Please delete options that are not relevant and check the box.

[ ] Add a new article/page
[ ] Fix a Typo
[x] Add a new translation
[ ] Other

Resources

Any screenshots, links or relevant resources to explain better the changes.

@qosmonot Resubmitted to correct branch


Can I use wavesurfer only for drawing?

I'd like to simply draw the waveforms of the audio in videos that I load into an html5 video tag. This works pretty well for the first video using the MediaElement backend, but when I programmatically change the video loaded in my video tag wavesurfer doesn't behave so well. It doesn't automatically redraw the waveform to correspond to the audio in the newly loaded video like I'd expect, and if I try to call wavesurfer.load() or wavesurfer.backend.loadElt() inside a loadedmetadata event handler an infinite loop occurs, I'm guessing because wavesurfer is actually refetching/reloading the video, which fires the loadedmetadata event again...
It seems like wavesurfer wants to be the one to control loading and playing using the <video> tag, but I'd like it to be the other way around, where all the loading/playing/interacting occurs through the video element and its controls, and wavesurfer simply follows along, drawing the waveforms as they come, and does nothing else.
I see there is a separate 'drawer' class I might be able to use to perhaps accomplish what I want, but its not obvious from the documentation exactly how I'd do this, or if its even something I should really attempt with wavesurfer. Is there a way to accomplish what I'm after with wavesurfer?

Hi, Did you find a solution for this use case?

@lauradP I didn't. I didn't explore this much further after my initial investigation resulted in this question. Would still be very interested in a solution though. The waveform drawing in this library looks and work really well, and it would be fantastic to have lightweight access to just the drawing functionality.

You may load the peaks with an empty audio file, let me get the sample I commented

You may load the peaks with an empty audio file, let me get the sample I commented

#2058

#2058


Fix errors in optimize events introduced by automatic merge

Description
PRs #218 and #217 had some conflicting code that was able to be merged automatically but resulted in breaking build on the main branch.
Type of Change

[x] Bug Fix
[ ] New Feature
[ ] Breaking Change
[ ] Refactor
[ ] Documentation
[ ] Other (please describe)

Checklist

[ ] I have read the contributing guidelines
[ ] Existing issues have been referenced (where applicable)
[ ] I have verified this change is not present in other open pull requests
[ ] Functionality is documented
[ ] All code style checks pass
[ ] New code contribution is covered by automated tests
[ ] All new and existing tests pass

Codecov Report

Merging #224 (0dff2a1) into main (4bde18c) will increase coverage by 0.23%.
Report is 3 commits behind head on main.
The diff coverage is 49.36%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
@@            Coverage Diff             @@
##             main     #224      +/-   ##
==========================================
+ Coverage   27.34%   27.58%   +0.23%
==========================================
  Files          40       43       +3
  Lines        4381     4434      +53
==========================================
+ Hits         1198     1223      +25
- Misses       3094     3121      +27
- Partials       89       90       +1

Files
Coverage Δ

cmd/uql/api_version.go
0.00% <ø> (ø)

platform/melt/types.go
36.60% <ø> (ø)

cmd/uql/uql.go
2.54% <0.00%> (ø)

cmd/uql/error.go
96.15% <96.15%> (ø)

platform/api/call.go
14.60% <87.50%> (+5.59%)
:arrow_up:

cmd/uql/execute.go
65.62% <25.00%> (+2.85%)
:arrow_up:

platform/api/context.go
0.00% <0.00%> (ø)

cmd/uql/client.go
55.55% <55.55%> (ø)

output/output.go
16.54% <16.66%> (+0.12%)
:arrow_up:

cmd/uql/backend_default.go
0.00% <0.00%> (ø)


[Tabs extended]: React wrapper VoiceOver - cannot tab to other tab options - DPO Consulting

Engineering info:

Innovation Team engineer: Pending Innovation team's 02/21 sprint planning
Innovation Team JIRA Ticket: https://jsw.ibm.com/browse/HC-2413
DPO consulting engineer:

Description
When using Tabs extended in React wrapper on Firefox with VoiceOver enabled, I can only tab into the first tab content. Unclear how a keyboard user would navigate to the other tabs and access that content.
https://user-images.githubusercontent.com/15643582/154329471-767f2774-fc29-4d10-8892-010f27ef6d71.mov
Component(s) impacted
Tabs extended
Browser
Firefox
Carbon for IBM.com version
v1.31.0-rc.1
Severity
Severity 2 = Aspects of design is broken, and impedes users in a significant way, but there is a way to complete their tasks. Affects major functionality, has a workaround.
Application/website
C4IBM.com
Package
@carbon/ibmdotcom-web-components
CodeSandbox example
https://codesandbox.io/s/github/carbon-design-system/carbon-for-ibm-dotcom/tree/main/packages/web-components/examples/codesandbox/components-react/tabs-extended
Steps to reproduce the issue (if applicable)
No response
Release date (if applicable)
No response
Code of Conduct

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

@RichKummer thanks for opening this issue on suspected accessibility issues, but this is in fact expected behavior on a tabbed interface. The interaction model should be:

tab key moves to tablist and tabpanel, but not each individual tabitem
when tablist has focus, left/up arrow (or right/up in RTL) selects previous tab
other arrow keys select next tab
home/end keys jump to first/last tab respectively

Example tabbed interface from W3 available here
Testing locally, I'm able to make this happen on the major browsers on desktop


gather use cases

mock the time source for testing in an async code base
mark a thread as being "the UI thread" #7

If we can nest contexts (as in set them in a child context and pop them off when we get to a sibling function) this would be great for function scope!
For example how Jetpack Compose use's a RowScope in UI

One example that I heard of (but not used) is passing around tokens of ghost-cell, singleton cell, combined with capability, writing code that need multiple aliases but not active at the same time will be much easier to write.
I also heard that one single-thread async runtime also passes ghost-cell token to future so that multiple fut can store alias to the same variable but without using RefCell/Rc.
This also sounds very useful since future by its very nature, relinquishes the alias when pending.
This could be also useful for generators in general to avoid RefCell/Rc.


Fixes shell escaping problem in socat test

Description
Fixes a shell escaping problem in the socat test, by simplifying the command into two executions in the socat container.
Checklist

[ ] Investigated and inspected CI test results
~- [ ] Updated documentation accordingly~

Automated testing
~- [ ] Added unit tests~
~- [ ] Added integration tests~
~- [ ] Added regression tests~
If any of these don't apply, please comment below.
Testing Performed
Tested locally against RHEL8

/retest

/retest


Jupyter notebook in vscode doesn't have highlight

Environment data

VS Code version: 1.82.2
Jupyter Extension version (available under the Extensions sidebar): v2023.7.100
Python Extension version (available under the Extensions sidebar): 2023.18.0
OS (Windows | Mac | Linux distro) and version: Linux distro-Ubuntu proot container(in Termux)
Python and/or Anaconda version: 3.10.12
Type of virtual environment used (N/A | venv | virtualenv | conda | ...): N/A
Jupyter server running: Local

I asked the same question on stackoverflow,but not people answer me. Is something I wrong?
I tried to disabled any other extensions,only enabled necessary extensions like "python","jupyter",or I can't open .ipynb file in vscode.And at last I used desktop vscode and It's not work.
Recently I installed vscode (code-server edition) on my Android phone, jupyter notebook and manim CE. When I used chrome to open vscode to edit an .ipynb file and write in the cell, I found that I can't use some of highlight and Code completion:

but I can use highlight and Code completion in normal .py file:

I installed all extensions required by jupyter notebook and python, you can see below picture.
I searched on stackoverflow and I found that I must uninstall extension "Dependency Analytics" , but I never installed this extension!

Aother solution is to change the theme, but it didn't work, either. And if I change the theme to "dark" (not dark+), the highlight in normal .py file will stop working.
I can promise my jupyter notebook in vscode can run code!

Is there any other solution?

I tried the same operations on my new computer,but it didn't work,too.

so is it solved?

Can you please check if you experienced similar behavior on vscode.dev or github.dev? code-server is out of our scope.

It's same?!

Hey @rebornix, this issue might need further attention.
@html5syt, you can help us out by closing this issue if the problem no longer exists, or adding more information.

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.
Happy Coding!


Support for New Architecture - iOS & Android (Fabric)

Description
Fixes #196, #811, & #886
This PR builds on @j-piasecki's work in #550 to enable Fabric/New Architecture. That PR is fairly old and was created with<EMAIL_ADDRESS>(lots of performance issues) and<EMAIL_ADDRESS>Here's what I did to bring things back up to date so that people can start testing this with the latest version of FlashList:

Got @j-piasecki's fabricfixture app building properly.
Rebased this fabric branch with @shopify/flash-list@master to bring the library up to the latest version (1.6.2)
Upgraded the fabricfixture app from<EMAIL_ADDRESS>to 0.72.5 ensuring that both iOS and android fixture apps built and displayed the FlashList component with the new architecture turned on.

Things I did NOT do:

I did not touch or edit ANY of the fabric code that @j-piasecki wrote. All credit goes to him.

Things I think we still need to do:

[ ] Investigate using react-native-test-app so we don't have to have two fixture apps in the repo anymore (one for new architecture and another for old architecture). This will get rid of a lot of duplicated code as suggested by @fortmarek here
[ ] Ensure that nothing broke in the non-fabric renderer.
[ ] Test the he🏒🏒 out of this.

Reviewers’ hat-rack :tophat:

[ ] There is a new fixture app in ./fabricfixture that can be used to test this functionatlity.

Screenshots or videos (if needed)
These videos are from the app built by the react native app in ./fabricfixture. Get ready to have a seizure, lol.

iOS
Android

Checklist

[x] I have added a changelog entry following the Keep a Changelog guidelines.

I have signed the CLA!

LGTM!

I did not test it, I just was hoping FlashList would get Fabric support :). I'm not experienced with Fabric so I'm not sure.

Apologies for the delay, I'll try this out soon. Thanks a lot

Can we release this??

This is the last dependency our app preventing it from working with the new arch. Hopefully this can get released soon!

@markrickert I tried your fork in my app and it seems to work perfect with the new architecture enabled!

I rebased my work here on main.

@markrickert could you maybe bump the version of fabric app to RN 0.73 to see if it works?

@markrickert could you maybe bump the version of fabric app to RN 0.73 to see if it works?

That's a great idea. I'll work on that here in the next few days

up please very important

Can we get this lint check passed to unblock the PR from being approved?

This PR should be ready to go. I've updated the PR based on suggestions as well as ensured that both the fixture app and fabricfixture app build and run on the latest Mac OS (14.3) and the latest Xcode (15.2)
CI is finally passing all green ✅ and I rebased on main and force-pushed (sorry to anyone using my branch commit hashes directly in their project).
The fabricfixture app has been updated to react-native 0.72.10 for now.

bump! would be happy to see that in the next release

Any updates?
Does anyone have time to chat about the required help on this PR?
cc: @markrickert @WoLewicki @naqvitalha

@WoLewicki I still can't seem to get the iOS CI build working. I think i'm close, but i got frustrated and gave up yesterday, haha.

Weird. They weren't passing yesterday afternoon. 🤷 :shipit:

@gvarandas @naqvitalha
Can you take a look? We need this PR to be released asap 🙏

Rebased on main and fixed the merge conflicts.

Is this going to be merged soon? 🤔

Is this going to be merged soon? 🤔

What’s the status on this one?

Great job!
qq: is it compatible with latest 74 RN release?

Just a very quick test, but I spun up a new Expo 51 project (which is RN 0.74.0) and this pr seems to work great on both iOS/Android with new arch bridgless mode enabled.
# create a new project with SDK51 (as of April 28, 2024 this is the beta version)
yarn create expo-app --template default@beta

# this just removes the examples in the app folder
yarn reset-project

# required to enable new architecture
npx expo install expo-build-properties

# use flashlist from this PR
yarn add https://github.com/markrickert/flash-list.git\#mrickert/fabric

# generate android and ios folders
npx expo prebuild --clean

app.json (to enables new architecture)
    "plugins": [
      "expo-router",
      [
        "expo-build-properties",
        {
          "ios": {
            "newArchEnabled": true
          },
          "android": {
            "newArchEnabled": true
          }
        }
      ]
    ],

/app/index.tsx
import React from "react";
import { Text } from "react-native";
import { FlashList } from "@shopify/flash-list";

const DATA = [
{
 title: "First Item",
},
{
 title: "Second Item",
},
];

export default function App() {
return (
 <FlashList
   data={DATA}
   renderItem={({ item }) => <Text>{item.title}</Text>}
   estimatedItemSize={200}
 />
);
}

Build and run app
yarn ios
yarn android

A very simple usage of flashlist (copied directly from the flashlist doc site) but both platforms are working as expected.

this is very important, is this going to be merged?

I am not a maintainer of this library unfortunately.

Anyone maintaining this library?

@naqvitalha @jenshenny Anyone maintaining this library?

Any progress?

Closing because #550 was merged.


(backend) use cache for recordings url

Purpose
BBB api has changed and does not provide a permanent link for recordings anymore.
The link provided has a 1h lifetime before being destroyed. We still want to have permanent access to the recordings.
Proposal
Put the recording url in a cache while it is still available and reftech it when too much time has gone.

@lunika can you please make sure this PR won't be a problem with blue/green deployment ?
I think it won't because no sql will be executed with the migration :
nc@xps15 ~/p/f/marsha (feature/apichard/get_recordings)> docker-compose exec app python manage.py sqlmigrate bbb 0019_alter_classroomrecording_video_file_url_and_more
BEGIN;
--
-- Alter field video_file_url on classroomrecording
--
-- (no-op)
--
-- Rename field video_file_url on classroomrecording to _video_file_url
--
-- (no-op)
COMMIT;


How to disable variable type hint?

The extension automatically displays type hint of variables, I don't want this. I already know it.  There is an option to hide, show, hide or show when alt+ctrl is pressed.

Additionally, some of the inlay hints are incorrect.

In this example, the suggested change would be a syntax error, as closure parameters cannot accept type hints.

@sodle These aren't suggested changes to your code they are hints to tell you what an inferred type is.
And secondly closure parameters do accept types. You could rewrite your code above as
inputString.enumerateLines(invoking: { (line: String, stop: inout Bool) in
...

@adam-fowler Can we modify our use of hints to disable the ability to insert them, then?
https://github.com/microsoft/vscode/blob/e3f0f4a875e5a24cdfd3d0c457835670e39569ee/src/vscode-dts/vscode.d.ts#L5117-L5127
Even better, the hint can probably modify the surrounding code to make it valid when it is triggered, using this same property.


Research compiling queries down to LLVM

Learn from Weld project.

I think the approach of using a higher level IR that represents your operations is the right one. I've attempted to generate LLVM IR directly and it's super tedious.