Android Strings file reader & writer

Replacing AndroidStringsXmlReader and AndroidStringsXmlWriter with new classes that serialize and deserialize Android Strings files to a POJO schema.
The old implementation mixed TextUnitDTO and Document concerns, making it very cumbersome to use. I created a hierarchy to generate AndroidStringDocument from XML files and backward, which can then be used and mapped independently.
Differently from the result yielded by AndroidStringsXmlReader, the AndroidStringDocument doesn't provide the pluralForm, pluralFormOther, etc. methods, as they are TextUnitDTO concerns. An upcoming change will provide the mapping from AndroidStringDocument to TextUnitDTO and backward.

@aurambaj Updated the code per your comments/suggestions. I do agree we should move this to the commons module when we start using it.

🎉


Scrollable and Inflexibilties

The modal only shows a very limited amount of content (if you have a lot of things to show). Making it scrollable would be a big upgrade and the modal always start from the very center of the screen which makes it less effective if the amount of content is relatively big.

i do agree!
can we please make this happend?

i do agree!
can we please make this happend?

Y'all still using this dead library? lol!


adding tutorial

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Cawley seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

removing


Can't build on Android SDK 26

Getting this error when trying to run app on Android:
src/native/node_modules/react-native-google-cast/android/src/main/java/com/googlecast/GoogleCastPackage.java:29: error: method does not override or implement a method from a supertype
    @Override
    ^
1 error
:react-native-google-cast:compileReleaseJavaWithJavac FAILED

App works fine on iOS.
I have this versions in my build.gradle:
compileSdkVersion 26
buildToolsVersion "26.0.2"
minSdkVersion 16
targetSdkVersion 23

Was able to build by removing the @Override on the java package file.


Fix macOS build issue

QGrid was failing to build on macOS because UIDevice is not available. This change makes macOS behave the same as tvOS, in that it does not support rotation.

Thanks, Dave! 👍


Add 'turpial' board definition

RIOT allows to write board modules outside of the RIOT repository, certain features need to be enabled in the CC1312 MCU in order to use it correctly (mainly for the UART0/UART1 pin changes).

Already solved on #54, this board now resides.


Add '.md' Extension to the 9-22-2018 Meeting Note.

The meeting note https://github.com/nodejs/mentorship/blob/master/meeting/9-22-2018 does not have the '.md' extension so it is not formatted.

I would like to work on this :)

I created a pull request for this issue. You can find it here https://github.com/nodejs/mentorship/pull/102

@segunadeleye merged, thank you @segunadeleye .


feat: the successor as a function WithBot α → α

This will be useful to do induction on a family of polynomials by the sum of the successor of their degree.
From GrowthInGroups (LeanCamCombi)
Co-authored-by: Andrew Yang

bors merge


Build Docker image from Dockerfile in PyWhy

Currently, the Docker image used for documentation generation is built from:

https://github.com/darthtrevino/dowhy-examples-notebooks-deps-dockerfile/blame/main/Dockerfile

We should do one of the following:

Move that git repo into PyWhy
Move the Dockerfile itself into DoWhy

I suggest to use approach 2., because it keeps DoWhy and its definition of required dependency within one repo.
Afterwards, we can change the GH Actions workflow used to build the image in a way that would only trigger when the Dockerfile is changed. Finally, we would change the docs workflow to trigger after the Dockerfile build as described in approach 2 in https://stackoverflow.com/a/65698892

@darthtrevino What do you think, is this a sensible approach?

I think either approach is fine, I'd probably lean towards updating the dockerfile in the docs/ folder. Can we safely deprecate the R pieces?


NuGet works with packages.config (not package.json!)

Pretty sure it doesn't know about package.json

@flcdrg : Thanks for your contribution! The author, @andyjlewis, has been notified to review your proposed change.

Thank you @flcdrg


Revisions of the new_inh_model section

What does this PR do?
Revise the section new_inh_model
Why are we doing this?
Testing performed
Known bugs/limitations

@francescodesantis we can work on this branch for revisions of the text.

Mention me in a comment when you're ready to merge!

@francescodesantis there are some references to be added, I indicated them as TODO_REF.

Great! I'll try to take a look as soon as I can.
Dan

From: Alberto Antonietti @.>
Sent: 24 May 2024 18:49
To: comob-project/snn-sound-localization @.>
Cc: Goodman, Daniel F M @.>; Mention @.>
Subject: Re: [comob-project/snn-sound-localization] Revisions of the new_inh_model section (PR #115)
@thesamovarhttps://github.com/thesamovar we have finished with this. Thanks!
—
Reply to this email directly, view it on GitHubhttps://github.com/comob-project/snn-sound-localization/pull/115#issuecomment-2129981315, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAWE6PW5KEC335LBQFCHMM3ZD5VQFAVCNFSM6AAAAABHLGFQTSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMRZHE4DCMZRGU.
You are receiving this because you were mentioned.Message ID: @.***>

OK first impression:

There's a link in the contributor table that includes the words TODO so presumably not finished?
There's HTML code and hand numbered citations in the text. Please replace with MyST figure environments and MyST references. See the other markdown files (e.g. https://github.com/comob-project/snn-sound-localization/blob/main/paper/sections/basicmodel/basicmodel.md)
The main text you've added starts with a section titled TL;DR which probably isn't appropriate ;-) and ends with the word CONTUA on its own. I'm guessing not finished?
Confirm that the paragraph structure is correct? In Markdown you need a blank link between paragraphs.
Please add your code to the repository (it should all be available in one place).

Thanks!

Hi @thesamovar, we've made the last changes to our section, including testing the notebook with the latest version of Nest, and it works!

Thanks! Merging now. There are a couple of minor issues remaining but probably easier if I just fix them! Thanks!


"fun" branch?

Suggestion: we could maintain an official "fun" branch, based on the latest release. It could do things like:

Allow emoji in nicknames and channel names (the changes in the current devel+emoji branch)
We might consider moving the roleplay commands in there (or not, I don't have very strong feelings)

Suggestion from @bogdomania: allow unicode in server names, usernames, and vhosts.

(and ip-cloaking.netname)

If kiwiirc comes as a bundled package, in the future, how about step-up with the MOTD?
Not a simple text file, but markdown/html ? eye-candy.

Definitely worth an idea, but clients would need to trust servers a lot to allow html. Markdown would be interesting though, cool idea


When asking if you want to connect a wallet, you should be able to say "yes, but not the one interceptor suggested".

Essentially every time I get that pop-up I have the wrong wallet selected.  So I hit deny, then switch wallets and hopefully get another prompt. It would be much simpler if I just had an option to "enter an address" or if I was "using signer" if it told me "switch accounts in MetaMask and we'll prompt again" or something.

related to https://github.com/DarkFlorist/TheInterceptor/issues/46


Resume release command needs to be performed from target/checkout directory

We should mention in our release guide https://camel.apache.org/camel-quarkus/latest/contributor-guide/release-guide.html#_releaseprepare_and_releaseperform that that resume command needs to be run from target/checkout

Credits: @valdar

I am very sorry about committing without opening a PR, it was a genuine miss click.
Feel free to revert it.

Thanks for fixing, no problem at all in this case.


Remove Docker chromium version constraint

Ended up just being way more annoying to deal
with than it was helpful - removing it to reduce
churn.

Yeah, it shouldn't impact things much, it was just being annoying having to rebuild the image all the time!


Calling resetForm() from Formsy onSubmit doesn't reset FormsyText

<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>    <Formsy.Form
      onSubmit={(data, resetForm) => {
        addTask(data.task.trim())
        resetForm()
        // input.setState({ value: '' })
      }}
    >
      <FormsyText
        ref={(node) => {input = node}}
        name="task"
        floatingLabelText="Type to add a new task"
      />
    </Formsy.Form>

Calling resetForm() above does not reset the text input. However, the commented out line that uses input.setState({ value: '' }) does work.

Up. Same for me

Ok. I fixed this by extending FormsyText component with code:
export default class FixedText extends FormsyText {
    componentWillReceiveProps(props) {
        this.setState({ value: this.getValue() || '' });
    }
}

Please fix it in FormsyText itself.

@krizka I'm kinda snowed, but feel free to submit a PR an dI'll look at it when I can. Any explanation on the rational behind the approach (step by step through the data flow) will help with a speedy review and merge.

Closed in #106.


Ability to configure the targetPort of the interceptor-proxy service to have it listen on priviledged port 80

Proposal
Feature request:
Ability to configure the targetPort of the interceptor-proxy service to have it listen on port 80
Workarounds:

Set the interceptor.proxy.port to 80 and run the container as root
Patch the targetPort after helm install

Use-Case
I would like the interceptor proxy service to listen on port 80 to avoid the need to change existing urls. These urls are now pointing via an ExternalName-Service to the keda-interceptor-proxy
Is this a feature you are interested in implementing yourself?
Yes
Anything else?
No response

Hello,
I guess that we could use different values for each usage, but we need to keep the current behavior as default. I mean, if the new value isn't given, we should use the current one


chore: use tekton tasks from PR branch when running PR tests

Changes
Use tekton tasks from PR branch when running PR tests.
Before the tasks from the main branch were used so any changes to the tasks done in the PR were not reflected in pre-merge tests.

/hold

/unhold

PTAL @jrangelramos

PTAL @lkingland


Add NuGet package badge

@ColinSullivan1

@mcqueary Great idea.  The link isn't working for me in the branch.  Does it for you?

@ColinSullivan1 That's odd. I can preview it from the PR diff here in GitHub. Try clicking this link?
https://github.com/nats-io/csnats/blob/36b861f4a6af8448e3631a4f10d0310f1541d0c5/README.md

@mcqueary - I can see the badge, clicking on it goes to a 404 for me.

Good catch. There was no target URL. Try now :)


docs: update langfuse.md

Updated links and descriptions
Added link to DSPy cookbook in Langfuse docs

Thanks @jannikmaierhoefer !


[IMPROVEMENT] Update Deployment Test

In raising this pull request, I confirm the following (please check boxes):

[x] I have read and understood the Contributing Guidelines?
[x] I have checked that another pull request for this purpose does not exist.
[x] I have considered, and confirmed that this submission will be valuable to others.
[ ] Do the TravisCI tests pass?
[x] Does the StyleCI test pass?

Description of change
Improve how the project relationship is set.

Thanks


FirstOrDefault throws JsonException when field contains a JSON String

Currently, If one were to retrieve a Hash document that contains a string field with JSON data, FindById or Where(...).FirstOrDefault will  throw a JsonException.
Code to reproduce bug:
using Redis.OM;
using Redis.OM.Modeling;
using System.Text.Json;

var connectionProvider = new RedisConnectionProvider("redis://<IP_ADDRESS>:6379");
connectionProvider.Connection.CreateIndex(typeof(Dummy));
var dummyContext = connectionProvider.RedisCollection<Dummy>();

var inputData = new Dictionary<string, string>();
inputData.Add("test", "item");
string serializedDict = JsonSerializer.Serialize(inputData);

dummyContext.Insert(new Dummy() { id = "hello", dictAsJson = serializedDict });

var item = dummyContext.Where(x => x.id == "hello").FirstOrDefault(); // Throws JSONException

[Document]
public class Dummy
{
    [RedisIdField]
    [Indexed]
    public string id { get; set; } = String.Empty;
    public string dictAsJson { get; set; } = String.Empty;
}

Reported Exception:
System.Text.Json.JsonException: ''t' is invalid after a value. Expected either ',', '}', or ']'. Path: $ | LineNumber: 0 | BytePositionInLine: 30.'

Proof that data is stored in Redis:

Is this a bug, or did I make a mistake along the way?
Thanks and Regards

No this looks like a bug, the Hash serializer/deserializer is meant to work on very flat objects, it's not really anticipating the insertion of json data in the fields, and under the covers, all the hash deserializer is doing is building a JSON object in memory from the hash and using that construction to deserialize it back into the object. This is something I can look into, but I think my recommendation would be to try to change the type to JSON, unless there's some compelling reason not to, the serializers json uses are more sophisticated than the serializer I wrote for hashes for sure. If I change the storage type to JSON, it seems to work.

Thanks for the reply.
Swapping to a DocumentType of JSON works.
This seems like quite a dangerous bug--taking into consideration that Hash is the default option (can easily be injected).

Thanks for the reply.
Swapping to a DocumentType of JSON works.
This seems like quite a dangerous bug--taking into consideration that Hash is the default DocumentType and JSON strings may easily be injected.

Json is your best bet.  If you want to use the older hash tables to store json, maybe you can look at StackExchange.Redis.Extensions which has various serialization packages that allow the seemless serialization / deserialization to the redis HashSet types.

Going to close this one out - IMO if you have JSON, using JSON serialization is your best bet.


Chromium corners arent all rounded

The bottom corners of chromium/chrome arent rounded with rounding

I do be aware

fixed by @Dickby in PR #742 (merged in 7bdfdaa28a4d107b1a9c9260837f81001000e697)


Adding Swift Language Bindings.

https://github.com/PerfectlySoft/Perfect-TensorFlow
Supports Swift 3.1/4.0 on both macOS / Ubuntu Linux, with full documentation and example.

Can one of the admins verify this patch?

Just signed the CLA, please check it out, Thank you!

@RockfordWei I can't see the CLA in our database. It's associated with email. Could you check again?
Thanks.

@drpngx Yes, I did sign the document and the email address is 100% matched with my google developer account. The CLA is terrible - not editable, actually, so I had to sign both documents for individual and on behalf my employer and I can review them in any moment online. Do you need my envelope id?

Jenkins, test this please.


Great project!

Is it possible that getting the activity definitions from the back-end, and building them in the front ?

Absolutely. The component allows you to define activity definitions in 3 ways:

Programmatically using JavaScript
Declaratively using the <wf-custom-activity> tags
As a web component built with StencilJS

Ultimately, an activity definition is a plain old JavaScript object that looks like this:
interface ActivityDefinition {
  type: string;
  displayName: string;
  description: string;
  category: string;
  properties: Array<ActivityPropertyDescriptor>;
  getOutcomes(activity: Activity): string[];
}

Your back-end could simply store these as JSON. However one thing I might not have thought through enough is the getOutcomes field, which expects a function value that computes the available outcomes. In most scenarios, this will simply return an array of strings, but in some scenarios, that array will be based on certain attributes of a given activity.
For example, the Fork activity allows the user to specify a comma-separated list of branches. The getOutcomes function for this activity will take these branch names and return them as an array of outcomes.
Could you maybe tell a little bit more about your use case on how you were thinking to store activity definitions in your back-end?

I gave this some more thought, and I think I found a neat solution to allow for data-driven activity definitions. I am planning on building a reference dashboard application with Orchard Core that would allow an admin to define activity definitions from the dashboard.
Ultimately, you will be able to define activity definitions using any of the following approaches:

Using ActivityManager, a singleton service that exposes addActivityDefinition, accepting a simple object describing the activity.
Using <wf-activity-definition>, exposing attributes to configure an activity definition.
Using StencilJS to define custom activities.

Options 2 and 3 are complete optional, as they all ultimately just add a simple activity definition in the form of an object (serializable from and to JSON) to the internal store.
I'll close this issue and create a new one to track progress on this work, but feel free to keep posting here if you want.


[TC-I-2.2] Need YAML support for DUT response commands with arguments

Summary:
Need YAML support for the commands which gets response as commands from DUT with arguments below screenshot is the example from TC-I-2.2.
Testplan screenshot:

chip-tool supports this already:
      command: "IdentifyQuery"
      response:
          values:
              - name: "timeout"
                constraints:
                    minValue: 0
                    maxValue: 0x32


[DX] Figure out how to make a local backup

Description
Now that we have more questions in our production database (ref: #232), we should figure out how to make a local backup.
Current plan: follow this.

Hey @ykdojo Can you assign me this issue under Hacktoberfest 2022 label? I would love to contribute in this issue

Update:
I tried the methods described in the blog post, but it didn't quite work - I got a connection error.
I used pgAdmin and it seems like I was able to get a backup, but I had trouble restoring the production/dev databases from the backups, too.

Update:
I tried the methods described in the blog post, but it didn't quite work - I got a connection error.
I used pgAdmin and it seems like I was able to get a backup, but I had trouble restoring the production/dev databases from the backups, too.

I also tried but error is coming always.

Hey @ykdojo I managed to make this work on my copy of defaang db in Supa bootstraped with supabase.sql file.
Instead of using the connection string (which errors because it needs a tls certificate, it could still be done), I used the pooling connection string, which is below the connection string in the settings panel. Pooling must be enabled.

Worth noting I run pg_dump in a Postgres docker container, much easier to setup than installing Postgres locally.

@CerealPlayer sounds good. Were you able to restore a DB from that?

Yes! it generated a dump.sql with all the info I had stored in my copy of defaang.

This helps. The best approach would be to pg_dump certain tables that we know are critical and then pg_restore only those, since a full pg_dump would backup all schemas, and supabase doesn't support creating an empty database yet.

The best approach would be to pg_dump certain tables that we know are critical and then pg_restore only those, since a full pg_dump would backup all schemas, and supabase doesn't support creating an empty database yet.

Got it. Backing up a database and restoring it seems like a pretty basic feature to have, though (I remember I had it in Heroku when I was using it).


Implement deployment for taggloo.im using GitHub Actions

Consider:

Limiting deployments to 1 (Concurrency)
Permissions (only permit certain deployers)
Quality Gates (code must pass quality before being deployed)

Resources

https://docs.github.com/en/actions/use-cases-and-examples/deploying/deploying-with-github-actions

name: taggloo_im

concurrency:
  group: taggloo_im
  cancel-in-progress: true

Linked with #187 and #93


Inquiry About Sales Incremental Analysis with Budget Changes Using Robyn

Project Robyn
Hey there,
I am using the Robyn model for MMM and am interested in understanding how to analyze the incremental impact on sales due to budget increases or decreases. My data is weekly and spans from 2022-03-29 to 2023-10-31. Could you guide me on how to approach this analysis within the Robyn framework? Specifically, what steps or functions should be used to accurately measure sales incrementality linked to budget variations?
Additionally, after running OutputCollect, how can I generate the Initial vs Optimized Budget Allocation graphs? Is it necessary to perform a Model Refresh or Calibration for this purpose, and if so, could you provide guidance on these processes?
Thank you for your assistance.
Best regards,
Environment & Robyn version
Make sure you're using the latest Robyn version before you post an issue.

Robyn version: 3.10.3
R version: 4.1.2

please go through demo.R. It's all there.


Subsetting to a single point

Pretty useful to slice to a given point, a little tricky to figure out how this should work with ugrid, but would be very useful and it is in fact a subset in space

hmm -- this really strikes me a different use case, but I think a UGRID with a single face is legal -- so we might be able to make that work, and indeed, it might work almost out of the box:
what happens when you subset to a size_zero bounding box?
if that fails, maybe a size-eps bounding box?


capture component type

This PR mainly focus on capturing the out IComponentType from the interfaces:

linkWithOptions()
link()
specialize()
renameEntryPoint()

Refactor the recorders
Because we have many recorded objects are inherited from IComponentType, so this PR also refactors the record implementation by create a abstract class IComponentTypeRecorder, where we implement all the logic of recording IComponentType interfaces. Then IModule, IEntryPoint, ICompositeComponentType, ITypeConformance recorders can just inherit from this class.

Fix some bugs.

Add gpu-printing examples to slang-unit-test

close #4918.


[ja] Localize Horizontal Scaling

Localize https://glossary.cncf.io/horizontal-scaling/

/assign

Hi @kaitoii11
Could you please assign it to me? Thank you.

Go for it :)

these docs are helpful when you contribute :)

Localization rules (reviews will be based on this): https://kubernetes.io/ja/docs/contribute/localization/
Style Guide: https://github.com/cncf/glossary/blob/dev-ja/content/ja/style-guide/_index.md
Contribution Documentation: https://github.com/cncf/glossary/blob/dev-ja/content/ja/contribute/_index.md


Bug 2000146: Introduce olm.channel schema, remove channel metadata-related bundle properties

Description:

Define olm.channel schema to specify channel membership and upgrade edges.
For example:
---
schema: olm.channel
package: foo
name: stable
entries:
  - name: foo.v0.0.1
  - name: foo.v0.0.2
  - name: foo.v0.1.0
    replaces: foo.v0.0.1
    skipRange: <0.1.0
    skips:
      - foo.v0.0.2

Remove properties on the olm.bundle blobs that are related to channel
metadata. Specifically olm.channel, olm.skips, and olm.skipRange are
removed.

Conversions from the model to the file-based config format use the
olm.channel schema.

'opm render' no longer populates channel-related metadata when rendering
bundle images.

Motivation:
The current schema overlooked the fact that bundle properties contained
channel-level metadata, which goes directly against the design goals of
file-based configs.
This PR corrects that issue by implementing a new olm.channel schema and
removing the ability of opm render to pull this metadata from bundles created
with imperative sqlite-based workflows in mind.
This is also an improvement on the the existing olm.bundle properties because:

olm.skips and olm.skipRange properties apply to all channels. This causes
channel upgrade graphs to be defined by channel-specific replaces values from
the olm.channel property and by the global skips and skipRange properties,
which can make it extremely difficult to define usable upgrade graphs when
multiple channels are involved.

It centralizes all of the channel membership and upgrade edge information in
a single place, making it easier for humans to visualize and for computers to
quickly parse and generate upgrade graphs.

It simplifies implementation of veneer APIs that focus on different upgrade
graph definitions. Different channel and upgrade graph definitions can be built
without touching any olm.bundle blobs.

Signed-off-by: Joe Lanford<EMAIL_ADDRESS>Upstream-repository: operator-registry
Upstream-commit: 59d0ec7da18a467451138458b4dfafe547341b34

/lgtm

/retest

/test e2e-gcp

/test e2e-gcp

/test e2e-upgrade

/test e2e-upgrade

/test e2e-gcp

Related: https://github.com/openshift/origin/pull/26444.


Jam fix

fixes #2891

[x] add Jam to menu and recovery
[x] expose the order-book on /obwatch with nginx. needs: https://github.com/openoms/joininbox/pull/98
[x] make the display (00infoBlitz.sh) recognise when the YG is running with Jam
[x] test

FYI @dergigi
Should we rename the script as well to
bonus.joinmarket-jam.sh
or
just bonus.jam.sh if the branding will be strong ?

Awesome! Thank you for looking into fixing this.
I'd vote for bonus.jam.sh in terms of name. Nice and simple 👍

@openoms ready to merge?

@openoms ready to merge?

yes, the Jam install and update is working now.
(will have a new Joininbox  release with the latest JM to complete this in an unrelated change)

ok, all Jam, JoinMarket and Joininbox are on the lates

@openoms ready to merge?

yes, the Jam install and update is working now.

Just a quick question @openoms: Shouldn't the websocket location be /jmws and proxied to 28283 (instead of /ws to 28183)? e.g. this is how it's done in the nginx config of the jam-standalone docker image.

@openoms ready to merge?

yes, the Jam install and update is working now.

Just a quick question @openoms: Shouldn't the websocket location be /jmws and proxied to 28283 (instead of /ws to 28183)? e.g. this is how it's done in the nginx config of the jam-standalone docker image (<- any and all suggestions welcome on this approach).

Thank you for reviewing, not sure tbh, but will test. It was originally added by @dennisreimann in https://github.com/rootzoll/raspiblitz/pull/2747. Did the config change since?

Thank you for reviewing, not sure tbh, but will test. It was originally added by @dennisreimann in #2747. Did the config change since?

Yes, it changed quite a bit since then (guess this was v0.0.2). But afaik, websockets have always been served on port 28283.
It seems with this config, it will not support the orderbook or the logs feature to be available in Jam on RaspiBlitz (which is generally "okay", Jam will display an error message in the orderbook view, and not display the logs feature at all..).
I guess enabling the log feature is rather difficult, but enabling the orderbook would be really nice. Pardon the question, but does Joininbox run the ob-watch service?

corrected the websockets in 2c2f3c7 @theborakompanioni

does Joininbox run the ob-watch service?

not by deafult, only if selected from the menu. It starts a service called: ob-watcher.service on the localhost port 62601
Tor address: sudo cat "$HiddenServiceDir"/ob-watcher/hostname
where:
checkDirEntry=$(grep -c "HiddenServiceDir" < /home/joinmarket/joinin.conf)
if [ "$checkDirEntry" -eq 0 ]; then
  if [ -d "/mnt/hdd/tor" ] ; then
    HiddenServiceDir="/mnt/hdd/tor"
  else
    HiddenServiceDir="/var/lib/tor"
  fi
  echo "HiddenServiceDir=$HiddenServiceDir" >> /home/joinmarket/joinin.conf
fi

There would be no problem with running the ob-watcher always. Should we switch it on for Jam?

corrected the websockets in 2c2f3c7 @theborakompanioni

Nice.
Did you try it, though? Has it been successful? I am often unsure whether it works as expected just by looking at configs, always need to verify.
In Jam's docker the config says location = /jmws as well as trailing slash at the end of the proxy_pass directive: proxy_pass https://jmwalletd_ws_backend/;

does Joininbox run the ob-watch service?

not by default, only if selected from the menu. It starts a service called: ob-watcher.service on the localhost port 62601
Tor address: sudo cat "$HiddenServiceDir"/ob-watcher/hostname
where:
checkDirEntry=$(grep -c "HiddenServiceDir" < /home/joinmarket/joinin.conf)
if [ "$checkDirEntry" -eq 0 ]; then
  if [ -d "/mnt/hdd/tor" ] ; then
    HiddenServiceDir="/mnt/hdd/tor"
  else
    HiddenServiceDir="/var/lib/tor"
  fi
  echo "HiddenServiceDir=$HiddenServiceDir" >> /home/joinmarket/joinin.conf
fi

There would be no problem with running the ob-watcher always. Should we switch it on for Jam so it is reachable on 62601?

Hmm.. whatever you want! I don't think the default needs to change necessarily.. but it would be nice if it worked when a users opts-in. So proxying the request would be nice.. Jam expects the api to be available on path /obwatch/.

the order book shouls be available now in Jam when using the latest joininbox scripts.
Are there more nginx config changes to be added for the logs @theborakompanioni ?

the order book shouls be available now in Jam when using the latest joininbox scripts.

Awesome! :rocket: :rocket: :rocket:

Are there more nginx config changes to be added for the logs @theborakompanioni ?

Nope, I guess that would be too much of a hassle, log files are named differently in the docker image, hence it would need more customization. Would you be okay with addressing this some other time in the future? Will think about how to generalize this. In the meantime, I guess RaspiBlitz users will be capable of viewing the log files for themselves.
(This feature has only been thought of as a temporary solution for beginners on Umbrel/Citadel to provide better/more info in bug reports.)
Thanks @openoms :orange_heart:

Great!
Yes I agree, the logs can be easily checked in the CLI and exposed in the Joininbox menu also.

almost there, but this should be automated (can be in the precheck part to run when the joinmarket-api is (re)started):

did we have any consensus what to use here?
From https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/jmclient/jmclient/configure.py#L94:
# Maximum absolute coinjoin fee in satoshi to pay to a single
# market maker for a transaction. Both the limits given in
# max_cj_fee_abs and max_cj_fee_rel must be exceeded in order
# to not consider a certain offer.
#max_cj_fee_abs = x
# Maximum relative coinjoin fee, in fractions of the coinjoin value
# e.g. if your coinjoin amount is 2 btc (200 million satoshi) and
# max_cj_fee_rel = 0.001 (0.1%), the maximum fee allowed would
# be 0.002 btc (200 thousand satoshi)
#max_cj_fee_rel = x

@openoms Release v0.1.1 should drop in a few days. To wait, or not to wait?

Not in a rush with this, can wait a few days for sure. Can also update afterwards up to the v1.8.1 release.

Not in a rush with this, can wait a few days for sure. Can also update afterwards up to the v1.8.1 release.

v0.1.1 tag created: https://github.com/joinmarket-webui/jam/tree/v0.1.1

Rebased on dev, tested ok and no more changes are planned unless some finds
something.
If you run a blitz go ahead and test the PR or the openoms - jamfix branch.
Otherwise ready to be mreged.

ok, the time has come. New fixes to a new PR please.


Add workflow_dispatch to docs publish

Summary
Details and comments

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.2%) to 41.333%

Totals

Change from base Build<PHONE_NUMBER>:
0.2%

Covered Lines:
2835

Relevant Lines:
6859

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 41.152%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
2814

Relevant Lines:
6838

💛  - Coveralls


Title broken in docs

https://hexo.io/docs/server.html
As you see, the title became: `hexo-server">hexo-server` which should only be `hexo-server`.
Also the TOC occurred the same issue.

Well, I thought I fixed it, but it seems not.
I will fix it after a while, thanks~

Fixed by updating hexo-renderer-marked


IllegalArgumentException when cropping certain size image

Hi,
I got this error message whenever I'm trying to crop 1200 x 1200px (or its multiply 2400 x 2400 etc) image.
java.lang.IllegalArgumentException: y + height must be <= bitmap.height()
at android.graphics.Bitmap.createBitmap(Bitmap.java:669)
at com.isseiaoki.simplecropview.CropImageView.getCroppedBitmap(CropImageView.java:1012)
I called getCroppedBitmap() without resize the image (moving the handle)
I'm using:
cropMode="ratio_1_1"
handleSize="12dp"
minFrameSize="200dp"
initialFrameScale="1.0"
Can you help me? Thank you

Hi,
Sorry...i'm investigating the issue.
Please send me your sample project or the corresponding image file, if you don't mind.
<EMAIL_ADDRESS>Thank you

Hi,
I have sent you an email last week, have you find out what is wrong? Thanks

Hi,
Sorry for late response.
Thank you for sending the sample project.
The cause is rounding error of the frame position.
I fixed the bug and released new version.
Please use version 1.0.10.
Thank you for finding a bug : )

Thank you! It's working great now :D


[docs] fixed typo in parameter list Parameters.rst

fixed typo from contributs to contributes

@guolinke We need some policy for such PRs. Users correct typos in rst file but the typo should be fixed in config.h file. However, we cannot force contributors do it, because they may have not Python installed on their machines.
What do you think?

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

@StrikerRUS I think we should let contributors do that, and python environment is common and easy to install.

@guolinke I don't have Python on my machine and mostly use cloud services to do my work. Even then, I would have no idea where the config.h file would be located. I was just reading and noticed this typo. I understand a .h file is supposed to be a header file for C and C++. I am not familiar with the .rst extension and the fact that the header file could contain the definition of the parameters to me is something I have not encountered before (and if it is common practice, it's because my knowledge of Python is not strong enough).
In short, it was very easy for me to click on the Pencil and edit this typo. It would take time for me to learn where specific files are located and then propose changes on those .h files, however. And if I did locate them, I would edit them using a text editor, not within an IDE, because I do not have Python installed. Cheers, though, for both of you on working on this amazing project.

@guolinke I agree with @Quetzalcohuatl . Often users even don't clone the repo and correct typos just online at GitHub document page.
I see two variants:

force contributors to fix source file with something like: "Hey man! Thanks for your contribution, we really appreciate it, but you should correct the typo in  and then run ." (Bad idea because of reasons listed above.)
close PR with something like this: "Hey man! Thanks for your contribution, we really appreciate it, but your changes should be done in source file." and open new PR with proposed changes. (Bad idea because of that contribution will not be counted by GitHub and it's duplicated work).

okay, another option is editing both 2 files  (config.h, parameter.rst).

@guolinke So, ask to move proposed changes to .h file and run script; if it's hard, then ask to manually edit .h file too; if there is no response or any other situation, then close PR and fix in new PR. Right?

yeah, and we can regularly run the script to check their consistency.

@StrikerRUS , I think it can be fixed in the same PR rather than in new PR.

@chivee
Clone contributor's repo to own machine, switch to branch with changes, make changes on source file, run script and commit, right?

@StrikerRUS can we add a test for the consistency in CI ?
Like generate the doc via config.h, and compare it with the old one ?

@guolinke OK. I'll try this

@StrikerRUS , Yes, but I think it easier to just
git checkout https://github.com/Microsoft/LightGBM/pull/1511
then push

@chivee Thanks! Good to know!


Documentation structure

As new PRs come in the docs start to be a little chaotic. I think it's important to make the structure clearer to enable faster contributions.
I'm thinking about the following structure:

README.md - general info about the repository, links to docs/new-users.md and docs/technical-users.md should be in the beginning
docs/ - folder for all the other READMEs that don't belong to any other specific subfolder
docs/README.md - Highlited links to instructions for new and experienced users, then links to every doc that exists in the repo in a simple list
docs/new-users.md - instruction for new users with next to no technical experience. Should only include info about setting up the vpn and installing the app directly through releases or via docker (and clearly state that docker is an alternative to the direct install)
docs/technical-users.md - general info about all the ways to deploy and configure the app with links to appropriate folders/READMEs
docs/configuration.md - documentation including the commandline options, config file options and structure
path/to-specific/directory/README.md - all the docs related to a specific usage option (like already existing READMEs in terraform folder)

Please try to follow this structure when adding new documentation

@iamtodor since you're probably the biggest contributor to the docs yet, could you take a look at this?

@Arriven to be honest, I had literally the same assumption. The reason I didn't suggest it is I thought it would bring additional efforts

Yeah, started with that opinion as well but seeing the amount of contributions changed my mind 😅

would you like to move vpn list to a separate page from readme? but still having a link from readme

@iamtodor @Arriven I'll prepare a proof of concept of the structure of the new doc in 10-30 mins.
Let's discuss it after I finish

@Amet13 sounds good to me!

VPN instructions can be a separate page, but probably also nice to include some options directly into the instructions for new users

@Amet13 agreed

@Arriven @iamtodor let's review this one: https://github.com/Arriven/db1000n/pull/128/files

The idea is to keep the main readme pretty clean.
There is also a duplicate of it in Ukrainian.
Crosslinking between ua and en versions of README.
Tool-specific docs are in their directories (for example kubernetes/{manifests,helm-chart}, terraform/{aws,gcp,...}.
General documentation for advanced users and developers is in docs/

@Amet13 @Arriven I am not sure whether we need to keep Ukrainian instruction. I think all of us (I mean the IT community) know English at, at least pre-intermediate level. But keeping 2 separate langs would bring us double efforts

@iamtodor agree, just moved it to not to break current docs.
But if we write REAME just once, maybe it won't be a really big effort to keep both versions

I think it's worth keeping the instruction for new users in Ukrainian, everything else can be English only. I'll merge PR from @Amet13 as is

@Amet13 @Amet13 I would suggest having somewhere in docs (maybe for developers or it's up to your where to leave it) the following agreement:
I think we should also enforce the rule where at least two other people should validate new guides/big changes to guides and different scripts/terraform/k8s_manifests/docker-compose files which we don't have CI jobs for yet. I'll create a separate label for that

I think it could be forced by implementing CODEOWNERS functionality partially

CODEOWNERS functionality was implemented in https://github.com/Arriven/db1000n/pull/187

@Arriven @Amet13 I think we can close this issue

@Arriven @Amet13 I can move all docs to MKdocs which would be hosted on GitHub pages


Changing the check phase from compile to verify.

If you look at the Maven Build Lifecycle documentation the verify phase is the natural choice for the check goal:  run any checks to verify the package is valid and meets quality criteria.

Thanks again for the PRs! truly appreciate the help.
--Jeremy

You're welcome.  I am happy that you are accepting my nitpicking.
Overall, the code quality is very high.  You should be proud.


spotify: 1.0.69 -> 1.0.72

Motivation for this change
just a normal update
Things done
tested playback

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

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

@GrahamcOfBorg build spotify

Failure on aarch64-linux (full log)
Partial log (click to expand)
error: while evaluating 'callPackageWith' at /var/lib/gc-of-borg/nix-test-rs-3/repo/38dca4e3aa6bca43ea96d2fcc04e8229/builder/grahamc-aarch64-community-3/lib/customisation.nix:113:35, called from /var/lib/gc-of-borg/nix-test-rs-3/repo/38dca4e3aa6bca43ea96d2fcc04e8229/builder/grahamc-aarch64-community-3/pkgs/top-level/all-packages.nix:17592:13:
while evaluating 'makeOverridable' at /var/lib/gc-of-borg/nix-test-rs-3/repo/38dca4e3aa6bca43ea96d2fcc04e8229/builder/grahamc-aarch64-community-3/lib/customisation.nix:72:24, called from /var/lib/gc-of-borg/nix-test-rs-3/repo/38dca4e3aa6bca43ea96d2fcc04e8229/builder/grahamc-aarch64-community-3/lib/customisation.nix:117:8:
while evaluating anonymous function at /var/lib/gc-of-borg/nix-test-rs-3/repo/38dca4e3aa6bca43ea96d2fcc04e8229/builder/grahamc-aarch64-community-3/pkgs/applications/audio/spotify/default.nix:1:1, called from /var/lib/gc-of-borg/nix-test-rs-3/repo/38dca4e3aa6bca43ea96d2fcc04e8229/builder/grahamc-aarch64-community-3/lib/customisation.nix:74:12:
assertion failed at /var/lib/gc-of-borg/nix-test-rs-3/repo/38dca4e3aa6bca43ea96d2fcc04e8229/builder/grahamc-aarch64-community-3/pkgs/applications/audio/spotify/default.nix:5:1

not sure if we actually want to do this, see #36181 #36176 #36161 #36220 (/cc @globin )

See #36750


Publisher Log continues to display publishing in progress until notification is dismissed (at least for failure)

I'm deploying an R project which is failing, and see the failure notification, but if I have the publisher logs window up, you can see it continue as if in progress, even though the deployment has stopped.
Video attached.
https://github.com/posit-dev/publisher/assets/17675905/5347aaa9-f27a-4ebc-9691-be1ece525b81

No longer able to reproduce this. Closing.


feat: Add button to start new chat with the currently selected model

Is your feature request related to a problem? Please describe.
It's somewhat cumbersome to always manually switch models when starting a new chat. A quick way to start a new chat directly with the selected model would streamline the user experience.
Describe the solution you'd like
I would like to have a button that, when clicked, starts a new chat with the currently selected model. This would save steps and make the chat initiation process more efficient.
Describe alternatives you've considered
An alternative could be to have an automatic prompt or option when ending a chat to start a new one with the same model, but this might be more intrusive compared to a dedicated button.
Additional context
This feature could greatly enhance workflow for frequent users who often switch between chats and models. A mockup of the UI with the added button could be provided if needed.

Refactored on dev to use the previously selected models by default. From the new chat page, if you click on the new caht button once again it'll load your "default" selected model configuration.


Google App Engine usage?

Very cool!
I have the same issue where I tried to isolate my local monorepo package manually and bundle them with webpack to deploy an expressjs API using some local monorepo shared libs on Google App Engine
how would I use isolate-package to do the same?

If you share code with steps to reproduce your problem, I might have a look, but I don't know what your problem is and I don't know the setup, and I am not very familiar with app engine.
Like I replied in your other issue, the isolate result is basically a standalone nodejs app. How you deploy that (and if you even need an isolated output) is dependent on the platform. I can't possibly help everyone that wants to deploy something to some platform..


Added utility to create "new diagnostic" cubes, to replace "cube.copy…

…()" statements in plugins that change the diagnostic type (eg lapse rate).
Testing:

[x] Ran tests and they passed OK
[x] Added new tests for the new feature(s)

Thanks for making those changes. Merging.


Compress: false, does not work

Hi,
Gulp-uglify I use to build my webapp. For the development environment, I need to uglify not compress the JS file, so use the compress option: false, and this option does not work. I tried to use all options UglifyJS to false, and neither works.
What happen?
Here's the code:
gulp.task ('compress', function () {
   gulp.src ('app / scripts / ** / *. js')
     .pipe (uglify ({
          preserveComments: 'some',
          mangle: false,
          compress: false,
          beautify: true
     }))
     .pipe (gulp.dest (dist / scripts'))
});

I ran into the same issue. I need to beautify the code, but not minify, and compress: false seems not work. :sob:

+1

            .pipe($.uglify({preserveComments: $.uglifySaveLicense, mangle: false, compress: false})).on('error', options.errorHandler('Uglify'))

Same issue here...

+1
var debug = process.env.NODE_ENV !== 'production';

//...

.pipe(uglify({ compress: !debug}))

meet the same issue

<EMAIL_ADDRESS>same issue

An example that might work is
var uglify = require('gulp-uglify');

gulp.task('compress', function() {
  return gulp.src('lib/*.js')
    .pipe(uglify({
      mangle: false,
      compress: false,
      output: { beautify: true }
     }))
    .pipe(gulp.dest('dist'));
});

The "compress" outputs change UglifyJS's optimization settings, but UglifyJS would still remove unneeded whitespace. The "output" options controls how UglifyJS outputs the code, including it's formatting.
I'll accept a PR for a recipe example.

Thank you, @terinjokes. Adding output: { beautify: true } solved the issue.

Didn't work for me performance wise. I recommend doing this:
.pipe(function() {       return gulpif(enabled.jsCompression, uglify());     })
check it out here : https://www.npmjs.com/package/gulp-if

Thank you very much @terinjokes for solution!

Sorry, but the issue is not fixed since compress: false has no effect :-(

compress: false definitely works. The problem is what you want isn't what this setting actually does.
Since you didn't say what you want, I'll leave it as your exercise to read the docs.

Ok, I get it thanks.


(BOLT-653) Ensure rack server starts without rackup on PATH

Ensure we start the rack server. This is safer than exec because with
exec we need to make sure we get the rackup application that points to
the correct Ruby.

I think this avoids all the pathing issues, and ensures we run with the right Ruby interpreter.


fix: handle early exceptions in model setup

handle early exceptions during model container setup
catch exceptions during creation of Pydantic validators
propagate error message to health checks w/o creation of predictor

Ref: https://github.com/replicate/infra/issues/21

Directionally this looks good, but I think we will at least need a working shutdown endpoint before this can be merged. Separately, we need to use the logs field, not error, here, and I think we should (perhaps in a separate PR) reconsider returning a PredictionResponse from the PredictionRunner.setup method.

Ok, I think maybe there's a bit of a misunderstanding w.r.t. the latest changes pushed (the shutdown stuff).
When we run Cog in production, we run it with python -m cog.server.http [...] --await-explicit-shutdown. The --await-explicit-shutdown option means that Cog ignores SIGTERM (from kubernetes) and waits for director to call its POST /shutdown endpoint.
That needs to work, even when the model module crashed.
It occurred to me that there is perhaps a simpler approach we can take here that doesn't require changing which HTTP routes are defined in the application. We can just skip providing the input/output types when loading the predictor fails:
    PredictionRequest = schema.PredictionRequest
    PredictionResponse = schema.PredictionResponse

    try:
        # TODO: avoid loading predictor code in this process
        predictor = load_predictor_from_ref(predictor_ref)
        InputType = get_input_type(predictor)
        OutputType = get_output_type(predictor)
    except Exception:
        now = datetime.utcnow()
        app.state.health = Health.SETUP_FAILED
        app.state.setup_result_payload = {
            "status": schema.Status.FAILED,
            "started_at": now,
            "completed_at": now,
            "logs": "Error while loading predictor:\n\n" + traceback.format_exc(),
        }
    else:
        # If we successfully loaded the input/output types, then override Prediction{Request,Response}
        # with those types filled in:
        PredictionRequest = PredictionRequest.with_types(input_type=InputType)
        PredictionResponse = PredictionResponse.with_types(
            input_type=InputType,
            output_type=OutputType,
        )

and everything else can remain the same.

I also opened https://github.com/replicate/cog/pull/1433 to address the PredictionResponse type confusion.

Ok, I think maybe there's a bit of a misunderstanding w.r.t. the latest changes pushed (the shutdown stuff).
When we run Cog in production, we run it with python -m cog.server.http [...] --await-explicit-shutdown. The --await-explicit-shutdown option means that Cog ignores SIGTERM (from kubernetes) and waits for director to call its POST /shutdown endpoint.
That needs to work, even when the model module crashed.
It occurred to me that there is perhaps a simpler approach we can take here that doesn't require changing which HTTP routes are defined in the application. We can just skip providing the input/output types when loading the predictor fails:
    PredictionRequest = schema.PredictionRequest
    PredictionResponse = schema.PredictionResponse

    try:
        # TODO: avoid loading predictor code in this process
        predictor = load_predictor_from_ref(predictor_ref)
        InputType = get_input_type(predictor)
        OutputType = get_output_type(predictor)
    except Exception:
        now = datetime.utcnow()
        app.state.health = Health.SETUP_FAILED
        app.state.setup_result_payload = {
            "status": schema.Status.FAILED,
            "started_at": now,
            "completed_at": now,
            "logs": "Error while loading predictor:\n\n" + traceback.format_exc(),
        }
    else:
        # If we successfully loaded the input/output types, then override Prediction{Request,Response}
        # with those types filled in:
        PredictionRequest = PredictionRequest.with_types(input_type=InputType)
        PredictionResponse = PredictionResponse.with_types(
            input_type=InputType,
            output_type=OutputType,
        )

and everything else can remain the same.

will not work in case when predictor  or InputType  or InputType  are nto created bc of Exception.

The goal in exception case is simple - handle only two endpoints - shutdown and healthcheck, w/o runner code complexity involved (there is no runner).

That sounds fine. You just need to add an actual shutdown HTTP handler, not a shutdown event handler!


Relay Compiler inappropriately logs to stdout

The relay-compiler includes many hard coded console.log statements that look at out place in the webpack logging stream.
https://github.com/facebook/relay/blob/9b7c7d0fecdd831b6d67edd4346ccd028660613d/packages/relay-compiler/graphql-compiler/codegen/CodegenRunner.js#L230
https://github.com/facebook/relay/blob/9b7c7d0fecdd831b6d67edd4346ccd028660613d/packages/relay-compiler/graphql-compiler/codegen/CodegenRunner.js#L237
https://github.com/facebook/relay/blob/9b7c7d0fecdd831b6d67edd4346ccd028660613d/packages/relay-compiler/graphql-compiler/codegen/CodegenRunner.js#L315
https://github.com/facebook/relay/blob/9b7c7d0fecdd831b6d67edd4346ccd028660613d/packages/relay-compiler/codegen/RelayFileWriter.js#L261-L267

CC: @koddsson

https://github.com/facebook/relay/pull/2204

This noise also breaks webpack --stats > stats.json as these lines are streamed to stdout and correct the JSON output.

https://github.com/danielholmes/relay-compiler-webpack-plugin/pull/25


index.d.ts is not published to npm

I guess it's excluded so it doesn't end up in dist/.

Resolved by #51 and #46


Update enable-disable-kaizala.md

Changing Kaizala availability

Please approve the change, as Kaizala availability has changed.

@nenonix @JohanFreelancer9 - kindly do the copy editor review for this PR. Thanks.

@chuckedmonson - PR has been copy edited and is ready for final review.
Thank you.


[Feature] K8s 1.28 Support

Placeholder issue for supporting K8s 1.28 in Rancher.

[x] rancher/client-go:

https://github.com/rancher/client-go/pull/7
TODO

[x] A new base branch needs to be created in rancher/client-go repo for release-1.28 using the upstream client go 0.28.6 tag, and then the base branch of this PR needs to be updated with the created branch.
[x] Remove WIP from title once the above point of TODO is completed

[x] rancher/lasso:

https://github.com/rancher/lasso/pull/56
https://github.com/rancher/lasso/pull/58

Add v1.28 support till January patches (0.28.6).
Bump controller runtime to 0.15.3

[x] rancher/wrangler:

https://github.com/rancher/wrangler/pull/347
https://github.com/rancher/wrangler/pull/358

Bump k8s dependencies to 0.28.6
Implement CustomResourceDefinitionInterface using mockgen
TODO

[x] Verify and update the base branch before merging.

[x] rancher/norman

https://github.com/rancher/norman/pull/466
https://github.com/rancher/norman/pull/470

Bump k8s dependencies to 0.28.6
Update wrangler to wrangler/v2

[x] rancher/apiserver

https://github.com/rancher/apiserver/pull/46
https://github.com/rancher/apiserver/pull/56

Bump k8s dependencies to 0.28.6
Update wrangler to wrangler/v2

[x] rancher/dynamiclistener

https://github.com/rancher/dynamiclistener/pull/87
https://github.com/rancher/dynamiclistener/pull/93

Bump k8s dependencies to 0.28.6
Update wrangler to wrangler/v2

[x] rancher/steve

https://github.com/rancher/steve/pull/140
https://github.com/rancher/steve/pull/150
https://github.com/rancher/steve/pull/157

Bump k8s dependencies to 0.28.6
Update wrangler to wrangler/v2

[x] rancher/machine

https://github.com/rancher/machine/pull/236

Bump k8s dependencies to 0.28.6
Update wrangler to wrangler/v2

[x] rancher/aks-operator

https://github.com/rancher/aks-operator/pull/368
https://github.com/rancher/aks-operator/pull/387
https://github.com/rancher/aks-operator/pull/404
https://github.com/rancher/aks-operator/pull/405

Bump k8s dependencies to 0.28.6
Update wrangler to wrangler/v2
go generate

[x] rancher/gke-operator

https://github.com/rancher/gke-operator/pull/296
https://github.com/rancher/gke-operator/pull/322

Bump k8s dependencies to 0.28.6
Update wrangler to wrangler/v2
go generate

[x] rancher/eks-operator

https://github.com/rancher/eks-operator/pull/332
https://github.com/rancher/eks-operator/pull/355
https://github.com/rancher/eks-operator/pull/367
https://github.com/rancher/eks-operator/pull/368

Bump k8s dependencies to 0.28.6
Update wrangler to wrangler/v2
go generate

[x] rancher/kubernetes

https://github.com/rancher/kubernetes/pull/124

Add support for k8s v1.28.6

[x] rancher/hyperkube

https://github.com/rancher/hyperkube/pull/340

Update K8s to v1.28.6 in makefile

[x] rancher/rke

https://github.com/rancher/rke/pull/3472
https://github.com/rancher/rke/pull/3507

[x] rancher/calico-cni

https://github.com/rancher/calico-cni/pull/9

Add calico v3.27.0

[x] rancher/image-mirror

https://github.com/rancher/image-mirror/pull/574
https://github.com/rancher/image-mirror/pull/563
https://github.com/rancher/image-mirror/pull/580

[x] rancher/ingress-nginx

https://github.com/rancher/ingress-nginx/pull/128
https://github.com/rancher/ingress-nginx/pull/129

[x] rancher/kontainer-driver-metadata

https://github.com/rancher/kontainer-driver-metadata/pull/1293
https://github.com/rancher/kontainer-driver-metadata/pull/1331

[x] rancher/provisioning

https://github.com/rancher/provisioning/pull/3
https://github.com/rancher/provisioning/pull/4

TODO QA Test: Test Rancher on hardened clusters with the minimum supported K8s version.

[x] rancher/charts:

https://github.com/rancher/charts/pull/3367

Blocker: rancher/provisioning

[x] rancher/helm:

https://github.com/rancher/helm/pull/43

[x] rancher/rancher:

https://github.com/rancher/rancher/pull/43652
https://github.com/rancher/rancher/pull/44542
https://github.com/rancher/rancher/pull/44586

Notes about breaking changes:

[x] We'll (most likely) need to bump CAPI to 1.5.x+ and will then be affected by https://github.com/rancher/rancher/issues/42333 that will need to be addressed.

TODO QA Test:

[ ] Test Rancher on hardened clusters with the minimum supported K8s version.

Tested a rancher installation on minimum k8s version with harden cluster (type: RKE1, RKE2 and K3S). Rancher installation works well.

Summary of K8s v1.28 support testing checklist.

:stopwatch:  =   Not started

:clock12:  =   In progress

:no_entry:  =   Blocked

:white_check_mark:  =  PASSED :white_check_mark:

:question: =  Have Question

Local cluster checks - :white_check_mark:

Docker Install - :white_check_mark:
Docker install and Upgrade - :white_check_mark:
HA install -  :white_check_mark:
Local Cluster HA Upgrade

RKE1 Validations

OS Certification -  :white_check_mark:
Hosted Clusters testing - :white_check_mark:

KDM Testing -

Fresh Install Checks -  :white_check_mark:
Upgrade checks -  :white_check_mark:
Canal + PNI enabled - :white_check_mark:
Downstream cluster ETCD Validation - :white_check_mark:  PASS
Downstream Control Plane Validation - :white_check_mark:  PASS

ETCD Validations -

Control plane Validations -

Local cluster RKE1 HA upgrade -   :white_check_mark:

Local cluster RKE2 HA upgrade -   :white_check_mark:

Local cluster K3s HA upgrade -   :white_check_mark:

RKE checks - :white_check_mark:

Rancher CLI checks - :white_check_mark:

RKE2 and K3s Checks -

Node Driver Cluster Provisioning -

Downstream RKE2 cluster provisioning - :white_check_mark:

Fresh install :white_check_mark:
Upgrade :white_check_mark:

Downstream k3s cluster provisioning -

Fresh install :white_check_mark:
Upgrade  :white_check_mark:

Windows RKE2 provisioning :white_check_mark:

RKE2 Amazon Cloud provider enabled checks. - :clock12:

Any other functional check for 1.27 - Service accounts - :white_check_mark:

RKE2 backup-restore is bocked by this issue :white_check_mark:

Airgap checks - :white_check_mark:

RKE1 cluster - custom clusters - :white_check_mark:
RKE2 clusters - custom clusters - :white_check_mark:
K3s clusters - custom clusters - :white_check_mark:

PSACT testing - :white_check_mark: (Markus)

Conformance Checks - CNCF Conformance tests for RKE Kubernetes cluster

Rancher -  :white_check_mark: PR Raised
RKE - :white_check_mark:  PR Merged

up

All the checks are passed, hence closing the issue.


All rules except for expect are not being honored

In https://github.com/leonard-thieu/DefinitelyTyped/commit/9167b219065a8d5f0c102d519f1222ad2ea13905, I re-enabled all rules (except for expect in jquery-tests.ts (related: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/29818)). When running npm run lint jquery , I expected errors but got a passing result instead.

This seems to be working for me in the master branch after a fresh install (rm -r node_modules; npm install). If I remove the // tslint:disable:triple-equals in example-tests.ts, running npm run lint jquery shows errors.

Just to confirm, the errors are for violations of the triple-equals rule?

Right.


Tesseract doesn't seem to recognize text

Hey @dlinsin  @BamX and others
I am and to this library and pretty sure I must be doing wrong but not sure what?
I am trying to read following shopping receipt

and my code for that looks like
- (void)viewDidLoad
{
    [super viewDidLoad];

    // Languages are used for recognition (e.g. eng, ita, etc.). Tesseract engine
    // will search for the .traineddata language file in the tessdata directory.
    // For example, specifying "eng+ita" will search for "eng.traineddata" and
    // "ita.traineddata". Cube engine will search for "eng.cube.*" files.
    // See https://code.google.com/p/tesseract-ocr/downloads/list.

    // Create your G8Tesseract object using the initWithLanguage method:
    G8Tesseract *tesseract = [[G8Tesseract alloc] initWithLanguage:@"eng"];

    // Optionaly: You could specify engine to recognize with.
    // G8OCREngineModeTesseractOnly by default. It provides more features and faster
    // than Cube engine. See G8Constants.h for more information.
    //tesseract.engineMode = G8OCREngineModeTesseractOnly;

    // Set up the delegate to receive Tesseract's callbacks.
    // self should respond to TesseractDelegate and implement a
    // "- (BOOL)shouldCancelImageRecognitionForTesseract:(G8Tesseract *)tesseract"
    // method to receive a callback to decide whether or not to interrupt
    // Tesseract before it finishes a recognition.
    tesseract.delegate = self;

    // Optional: Limit the character set Tesseract should try to recognize from
    tesseract.charWhitelist = @"0123456789";

    // This is wrapper for common Tesseract variable kG8ParamTesseditCharWhitelist:
    // [tesseract setVariableValue:@"0123456789" forKey:kG8ParamTesseditCharBlacklist];
    // See G8TesseractParameters.h for a complete list of Tesseract variables

    // Optional: Limit the character set Tesseract should not try to recognize from
    //tesseract.charBlacklist = @"OoZzBbSs";

    // Specify the image Tesseract should recognize on
    tesseract.image = [[UIImage<EMAIL_ADDRESS>g8_blackAndWhite];

    // Optional: Limit the area of the image Tesseract should recognize on to a rectangle
    tesseract.rect = CGRectMake(20, 20, 100, 100);

    // Optional: Limit recognition time with a few seconds
    tesseract.maximumRecognitionTime = 2.0;

    // Start the recognition
    [tesseract recognize];

    // Retrieve the recognized text
    NSLog(@"Text:%@", [tesseract recognizedText]);

    // You could retrieve more information about recognized text with that methods:
    NSArray *characterBoxes = [tesseract recognizedBlocksByIteratorLevel:G8PageIteratorLevelSymbol];
    NSArray *paragraphs = [tesseract recognizedBlocksByIteratorLevel:G8PageIteratorLevelParagraph];
    NSArray *characterChoices = tesseract.characterChoices;
    UIImage *imageWithBlocks = [tesseract imageWithBlocks:characterBoxes drawText:YES thresholded:NO];
}

and the output that I see is
2015-03-01 10:10:00.442 testImage[45083:70b] Text: 13
53 142  11

I don't know what that means.
Can you please tell me how can I read the entire text from this image?
I have also uploaded the project if that would help you

I tried dumping more data and got more confused
// You could retrieve more information about recognized text with that methods:
    NSArray *characterBoxes = [tesseract recognizedBlocksByIteratorLevel:G8PageIteratorLevelSymbol];
    NSLog(@"characterBoxes:%@", characterBoxes);

    NSArray *paragraphs = [tesseract recognizedBlocksByIteratorLevel:G8PageIteratorLevelParagraph];
    NSLog(@"paragraphs:%@", paragraphs);

    NSArray *characterChoices = tesseract.characterChoices;
    NSLog(@"characterChoices:%@", characterChoices);

and the output is
2015-03-01 12:38:04.888 testImage[45600:70b] Text: 13
53 142  11

2015-03-01 12:38:04.889 testImage[45600:70b] characterBoxes:(
    "(2.56%) ' '",
    "(74.74%) '1'",
    "(69.03%) '3'",
    "(89.08%) '5'",
    "(72.80%) '3'",
    "(22.93%) ' '",
    "(78.33%) '1'",
    "(67.23%) '4'",
    "(70.94%) '2'",
    "(15.52%) ' '",
    "(80.01%) '1'",
    "(68.51%) '1'"
)
2015-03-01 12:38:04.890 testImage[45600:70b] paragraphs:(
    "(13.67%) ' 13\n53 142  11\n\n'"
)
2015-03-01 12:38:04.890 testImage[45600:70b] characterChoices:(
        (
        "(2.56%) ' '"
    ),
        (
        "(74.74%) '1'"
    ),
        (
        "(69.03%) '3'"
    ),
        (
        "(89.08%) '5'"
    ),
        (
        "(72.80%) '3'"
    ),
        (
        "(22.93%) ' '"
    ),
        (
        "(78.33%) '1'"
    ),
        (
        "(67.23%) '4'"
    ),
        (
        "(70.94%) '2'"
    ),
        (
        "(5.45%) ' '"
    ),
        (
        "(80.01%) '1'"
    ),
        (
        "(68.51%) '1'"
    )
)

But this is no where giving me the data on the receipt I mentioned. Please help

I think you would have solved this problem yourself had you actually read the comments in the example code you copied. When in doubt, please please please read the comments! They're there for a reason!
Look at these two lines:
// Optional: Limit the character set Tesseract should try to recognize from
tesseract.charWhitelist = @"0123456789";

// Optional: Limit the area of the image Tesseract should recognize on to a rectangle
tesseract.rect = CGRectMake(20, 20, 100, 100);

The first line is restricting the recognition to only recognize the numbers 0-9 because it's setting a whitelist. Any characters not in that whitelist will be ignored.
The second line is restricting the recognition to only recognize in a small window of the Walmart receipt described by the rectangle with origin location (20, 20) with a width of 100 and a height of 100.
If you comment out those two lines and re-run your app, you'll see the following printed out in the Xcode console:
2015-03-01 16:46:01.248 testImage[30569:2175050] Text:Walmart '
Save money. Live better. .
waImart
MANAGER DALE STEWEKT
(501) 328 - 9570
5T# 009% ovx 00001929 TE» 18 TR# 09137
MUNEHKIN CAR CLING SHADES 4.50 T
0<PHONE_NUMBER>
INFANTINO INF S-IN-1 CARRIER 30.00 T
FIOgZEERlPRIZésgABY MIRROR 20 00 T
001928372562 '
GERBER CLOTH DIAPER lZ—PK 11.94 T
00992337253
GERBER gNESIES NEWBORN 0’3 7.94 T
GEOOKR7 827375 NEWBORN 0’3 7 94
 BURP CLDTHS 4*PK 9-94 T
05347§§2910 '
GERBER gNESIES NEWBORN 0’3 PINK 7_94 T
GEROERSBATENSET 4*PIECE B 24
05716281920, ' T
GERBER SLEEPN PLAY JUMPSUITS ZPK 9_§4

This is the best that Tesseract can do in recognizing text from your image unless you preprocess your image to make it easier for Tesseract to recognize AND/OR create a custom font/language file for Tesseract that you have trained on the font used in these Walmart receipts. Both of these tasks are outside of the scope of this library, but you should be able to search Google for tutorials on training custom language files for Tesseract, and we have a section in our Wiki to assist with ideas for preprocessing images: https://github.com/gali8/Tesseract-OCR-iOS/wiki/Tips-for-Improving-OCR-Results

In fact, if you further comment out the following line:
// Optional: Limit recognition time with a few seconds
tesseract.maximumRecognitionTime = 2.0;

and re-run the app, you get this result which contains more of the text of the receipt:
2015-03-01 16:57:45.981 testImage[33045:2191003] Text:Walma rt '
Save money. Live better. .
waImart
MANAGER DALE STEWEKT
(501) 328 - 9570
5T# 009% ovx 00001929 TE» 18 TR# 09137
MUNEHKIN CAR CLING SHADES 4.50 T
0<PHONE_NUMBER>
INFANTINO INF S-IN-1 CARRIER 30.00 T
FIOgZEERlPRIZésgABY MIRROR 20 00 T
001928372562 '
GERBER CLOTH DIAPER lZ—PK 11.94 T
00992337253
GERBER gNESIES NEWBORN 0’3 7.94 T
GEOOKR7 827375 NEWBORN 0’3 7 94
 BURP CLDTHS 4*PK 9.94 T
05347§§2910 '
GERBER gNESIES NEWBORN 0’3 PINK 7_94 T
GEROERSBATENSET 4*PIECE B 24
05716281920, ' T
GERBER SLEEPN PLAY JUMPSUITS ZPK 9_§4 T
Gzo‘ééﬁlsigé‘éﬁww auwsum m 9 94 T
“5098788108..  .
55182518§74 '
GERBER INFANT GOWNS 2-PK 8.24 T
ag‘é‘éﬁﬁséﬁﬂiﬁ <30sz m a 24
00983726362 ' T
FADED GLORY NEWBORN BODYSUIT 2.00 T
FAggDZ7E7gzlewBORN BODVSUIT z oo
FAOO71§923921EWBORN BODYSUIT 2'00 T
8593828§§3§ - T
FADED GLORY NEWBORN BODYSUIT 2.00 T
FAgggzgstRglaEb/BDRN PANTS 2 00 T
00710239392 '
FADED GLORY NEWBORN PANTS 2.00 T
FAggggégzngsaEWBORN PANTS 2 00 T
00774932929 '
FADED GLORY NEWBORN PANTS 2.00 T
00719283920
GARANIMALS TURTLE VIBRATE TOY 5_OO T
angﬁk‘iﬂiizgﬁﬁnn mm 2 00 T
00183923839 '
GARANIMALS CHIME ALONG 4.00 T
INOng'TIEEEEBST RATTLES 3 00 T
00182733938 '
GRACO DIGITAL MONITOR Z UNITS 60.00 T
0500232<PHONE_NUMBER>15 1 00 T
55.3% .55.; -
OELTA 1 *PK HANGERS 1.00 T
00928392398
DELTA 10*PK HANGERS 1.00 T
00900839283
DELTA 1 *PK HANGERS 1.00 T
00928932983
CHILD g MINE SLEEP&PLAY JUMPER 7.00 T
0054 232399
(HILD g MINE SLEEP&PLAY JUMPER 7.00 T
0059 398329
(HILD O MINE SLEEP&PLAY JUMPER 7.00 T
0058983R987
CHILD g MINE SLEEP&PLAY JUMPER 7.00 T
0059 379384
CHILD 0 MINE SLEEP&PLAY JUMPER 7.00 T
CH99D27$3EIZE SLEEP&PLAY JUMPER 7 ()0
00593374928 ' T
CHILD O MINE DRESS SET 5.75 T
04002159830343 DRESS SET 5 75 T
 DRESS SET 5-75
0029g734923 ' T
FADED GLORY NEWBORN DRESS SET 10.00 T
6083E29g82274P0KEY PUPPY 3 99 T
00289823738 '
GOLDEN BOOKS TURTLE SHELL 3.99 T
00919832409
SUBTOTAL 24 .47
TAX 1 8.371% 1 .84
TOTAL 25 . 1
DEBIT TEND 260.31
CHANDE DhE 0.00
EFT DEBIT PAY FROM er RY
AESOgNT : {8‘83
2 . 1 TOTAL PURCHASE

02/1252011’ 15:22:32
# ITEMS SOLD 41
TE! 2127 9170 9490 5255 INS
‘mm"mmmmmmmmmmmmmmmmmmmWWWHWmm
Iax Prup in stnv! It Jacksnn Hauitt
Ind 83 thick [lihiﬂﬁ at Ualnurt

This is because this line limits how long Tesseract can spend recognizing on the image, so by commenting it out, you let Tesseract take as long as it needs to.

Thanks a lot for your help, very much appreciated


Missing faces on Nvidia Curie (Geforce 6000/7000) running with Nvidia 304 driver and ATI R300 ones (regression)

Only Nvidia Curie (Geforce 6000/7000) running with Nvidia 304 driver are affected, that's a regression.
This bug is a combination of two:

#375 Bad normal map channel detection, seems to be related to missing ARB_texture_compression_rgtc
a mistake introduced in #356 Do not build GLSL shaders for disabled features especially in c5c18ce do not build unused GLSL shader macro permutation.

The bug makes face disappear or being badly rendered.
Unvanquished 0.51:

Unvanquished 0.52:

The bug is caused by this:
https://github.com/DaemonEngine/Daemon/blob/f1b25a82fd7ad879a3e0ae80e300204d9460d5e2/src/engine/renderer/gl_shader.cpp#L1085-L1089
If a normal map is detected to embed an height map in alpha channel (wrongly or not, see #375 for a case of wrong detection), and at the same time both normal and relief mapping are disabled, the whole shader permutation is disabled because it has to be disabled (both normal and relief mapping are disabled so there is no need for those operations), but that will be the shader permutation that will be used because of the unused but detected height map in alpha channel.
The bug was verified on Nvidia Geforce 6150LE, 6600 Silencer, 7500LE using Nvidia 304 drivers.
An easy fix is to clear the shader boolean telling the normal map embeds an height map if there is no possible usage of that normal map file at all (because both normal and relief mapping are disabled).
Here is the result of such fix on the Geforce 6600 Silencer (it was also verified to fix the issue on other affected cards):

It's possible to reproduce the bug on any Mesa driver this way:
MESA_EXTENSION_OVERRIDE=-GL_ARB_texture_compression_rgtc ./daemon

given the engine is compiled from 0.52.0/sync branch and lowest preset is applied.

It is confirmed ATI R300 cards are affected too, with exact same artifacts.
Also, modern AMD GPU (GCN) with explicitely disabled RGTC extension on Mesa side was displaying the exact same artifacts, making the bug easy to reproduce even without access to the hardware. :heart: Mesa.
PR #377 is known to fix the issue on all known affected hardware.

Fixed twice by #385 and #377.


Release of 0.50 cargo crate

Hi,
first off, huge sorry for polluting the issue tracker, but I was unable to contact you directly, @kennykerr.
My simple question is: is there an estimate on when will be 0.50 package released to crates.io? It's already marked here on github as released. My huge interest stems from the new Wdk features.

Releases are by request only. The 0.50 release was only for the windows-core crate.
Note that you can simply point your project to github and take the new WDK support for a spin. That is preferred anyway, as you can kick the tires without needing a release and report any issues or missing features before publishing another release for production use.
https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#specifying-dependencies-from-git-repositories


Audit trail: implement auditable event logging for sensitive actions

Warehouse is adding an advanced audit trail of user actions beyond the current (existing) journal. This will, for instance, allow publishers to track all actions taken by third party services on their behalf.

[ ] Add auditing for user actions in PyPI
[ ] Add auditing for project actions in PyPI
[ ] Implement a User view for User auditing, allowing publishers to track all actions
taken by third party services on their behalf
[ ] Implement a Project view for Project auditing for project maintainers to audit
actions similarly
[ ] Implement an Admin view for PyPI.org administrators to audit actions similarly

So:

Each user will be able to view a log of sensitive actions performed that are relevant to their user account.
Each user who maintains at least one project on PyPI will be able to view a log of sensitive actions
(performed by ANY user) relevant to projects they act in the Owner Role on.
And PyPI administrators will be able to view the full audit log.

We'll be working on this in 2019. The Packaging Working Group, seeking donations and further grants to fund more work, got some new funding from the Open Technology Fund, and the audit log is part of the current grant-funded project.

Noting here that sensitive actions worth including in the event log would include renaming a project, per #1919.

Ok, @woodruffw gave me a clue, and asked me to look at all the metrics calls, like so:
$ git grep -C1 self._metrics
warehouse/accounts/services.py-        )
warehouse/accounts/services.py:        self._metrics = metrics
warehouse/accounts/services.py-
--
warehouse/accounts/services.py-
warehouse/accounts/services.py:        self._metrics.increment("warehouse.authentication.start", tags=tags)
warehouse/accounts/services.py-
--
warehouse/accounts/services.py-            logger.warning("Global failed login threshold reached.")
warehouse/accounts/services.py:            self._metrics.increment(
warehouse/accounts/services.py-                "warehouse.authentication.ratelimited",
--
warehouse/accounts/services.py-            if not self.ratelimiters["user"].test(user.id):
warehouse/accounts/services.py:                self._metrics.increment(
warehouse/accounts/services.py-                    "warehouse.authentication.ratelimited",
--
warehouse/accounts/services.py-
warehouse/accounts/services.py:                self._metrics.increment("warehouse.authentication.ok", tags=tags)
warehouse/accounts/services.py-
--
warehouse/accounts/services.py-            else:
warehouse/accounts/services.py:                self._metrics.increment(
warehouse/accounts/services.py-                    "warehouse.authentication.failure",
--
warehouse/accounts/services.py-        else:
warehouse/accounts/services.py:            self._metrics.increment(
warehouse/accounts/services.py-                "warehouse.authentication.failure", tags=tags + ["failure_reason:user"]
--
warehouse/accounts/services.py-        tags = tags if tags is not None else []
warehouse/accounts/services.py:        self._metrics.increment("warehouse.authentication.two_factor.start", tags=tags)
warehouse/accounts/services.py-
--
warehouse/accounts/services.py-            logger.warning("Global failed login threshold reached.")
warehouse/accounts/services.py:            self._metrics.increment(
warehouse/accounts/services.py-                "warehouse.authentication.two_factor.ratelimited",
--
warehouse/accounts/services.py-        if not self.ratelimiters["user"].test(user_id):
warehouse/accounts/services.py:            self._metrics.increment(
warehouse/accounts/services.py-                "warehouse.authentication.two_factor.ratelimited",
--
warehouse/accounts/services.py-        if totp_secret is None:
warehouse/accounts/services.py:            self._metrics.increment(
warehouse/accounts/services.py-                "warehouse.authentication.two_factor.failure",
--
warehouse/accounts/services.py-        if valid:
warehouse/accounts/services.py:            self._metrics.increment("warehouse.authentication.two_factor.ok", tags=tags)
warehouse/accounts/services.py-        else:
warehouse/accounts/services.py:            self._metrics.increment(
warehouse/accounts/services.py-                "warehouse.authentication.two_factor.failure",
--
warehouse/accounts/services.py-        self._api_base = api_base
warehouse/accounts/services.py:        self._metrics = metrics
warehouse/accounts/services.py-        self._help_url = help_url
--
warehouse/accounts/services.py-    def _metrics_increment(self, *args, **kwargs):
warehouse/accounts/services.py:        self._metrics.increment(*args, **kwargs)
warehouse/accounts/services.py-
--
warehouse/accounts/services.py-
warehouse/accounts/services.py:        self._metrics_increment("warehouse.compromised_password_check.start", tags=tags)
warehouse/accounts/services.py-
--
warehouse/accounts/services.py-            logger.warning("Error contacting HaveIBeenPwned: %r", exc)
warehouse/accounts/services.py:            self._metrics_increment(
warehouse/accounts/services.py-                "warehouse.compromised_password_check.error", tags=tags
--
warehouse/accounts/services.py-            if hashed_password[5:] == possible.lower():
warehouse/accounts/services.py:                self._metrics_increment(
warehouse/accounts/services.py-                    "warehouse.compromised_password_check.compromised", tags=tags
--
warehouse/accounts/services.py-        # If we made it to this point, then the password is safe.
warehouse/accounts/services.py:        self._metrics_increment("warehouse.compromised_password_check.ok", tags=tags)
warehouse/accounts/services.py-        return False
--
warehouse/rate_limiting/__init__.py-                logging.warning("Error computing rate limits: %r", exc)
warehouse/rate_limiting/__init__.py:                self._metrics.increment(
warehouse/rate_limiting/__init__.py-                    "warehouse.ratelimiter.error", tags=[f"call:{fn.__name__}"]
--
warehouse/rate_limiting/__init__.py-        self._identifiers = identifiers
warehouse/rate_limiting/__init__.py:        self._metrics = metrics
warehouse/rate_limiting/__init__.py-

From the metrics available so far, I will say that:

Maintainers should not see compromised password checks for Owners and other Maintainers, only themselves.
Maintainers should not see rate limit messages for Owners and other Maintainers, only themselves.
Maintainers should not see MFA authentication messages for Owners and other Maintainers, only themselves.

I'm not saying the following is necessarily correct, but they should provide a way to reason about this. Hope this helps!

(Here's a textual version of that image above.)

I want to propose also flagging projects as spam/malware by the community. Self-regulation is good thing and some rules we can take from stack overflow community. This will greatly help to the owners

@eirnym Thanks for the suggestion -- we're tracking that feature request as #3896.

This work is part of the milestone of work we're doing for the Open Tech Fund-supported security work. Right now, as I understand it, @woodruffw and @nlhkabu are working on the API key work, but after that, they'll be working on this issue.

User exarkun in IRC just pointed out that the public might want to know who uploaded a particular release, and that info perhaps should be in the ownership history/audit log for a project.

Warehouse maintainers and @woodruffw discussed design and scope for this feature in a meeting today.
Design: We chose a basic approach for the auditing API: a new API, called in tandem with metrics calls in places where both are needed/desired.
Storage: We have some research to do into how long we will retain user-related events (#3532), but we aim to retain project-related events permanently. We discussed a more flexible storage medium than Postgres (maybe a document store?) and started thinking about what kinds of data we'll need to store.
Scope: To avoid running over our funds for this project, we're limiting the scope for what we'll accomplish right now. We'll focus on:

implementing the necessary API calls internally
implementing storage
implementing a handful of auditable events
creating a few views for those, and exposing what makes sense today (e.g.: recent logins, project change events, and 2FA events)

we may want to show most project-related events to all users, but hide some info about each event from users who aren't maintainers or owners, e.g. IP. @nlhkabu  is taking note of this for designing templates.

Right now we want to ensure that we can store and retrieve events. We can add more auditable events down the line.
Timing: This is the first thing we're working on in August, and we are aiming to get it merged and deployed in August.

Began work on this in #6339.


[doc][kube-flannel] set explicit arch on daemonset images

It would help for quick scripting on dev/test environments and other architectures.
For instance the following instructions are currently broken since https://github.com/coreos/flannel/commit/ee52b531b0c3ce81b3a08bc3a5dccf4d31476ecd.

Thanks for spotting this. Merging.


move: improve tests for safe

Stacked on https://github.com/MystenLabs/sui/pull/8397.
Exercises previously uncovered functions in safe.move:

safe::withdraw -- for this we update an existing test for withdraw_ (which is wrapped in withdraw) plus an assertion on the balance

safe::self_revoke_transfer_capability

Heads up, usually the pattern when we stack commits is to base everything off main so that later PRs in the stack.  It means that later PRs include commits from earlier PRs in the stack, which is annoying/confusing, but it means that you're able to land prefixes of the stack, while later PRs are still getting reviewed, which can speed things up.
The PR itself is much easier to review the way you have things set-up (with the base of this PR being the previous PR in the stack), but what happens when you want to land this one -- will you need to land it against the prefix, and then land all of that on main, or is it possible to change the base to main after the review?

The PR itself is much easier to review the way you have things set-up (with the base of this PR being the previous PR in the stack)

Indeed, this is how I self-manage stacked PRs on GH and the benefit is primarily for review and secondarily for chopping up changes when it makes sense, and my own sanity.

but what happens when you want to land this one -- will you need to land it against the prefix, and then land all of that on main, or is it possible to change the base to main after the review?

The workflow is:

I merge bottom of stack
Next PR base changes to be on top of main by itself (more details below). I rebase this PR on top of main (force push)
Hit automerge / wait for CI / merge
Go to (2) if I have more PRs in the stack

In this workflow 1 PR always equals 1 (squashed) commit, every PR is merged onto main, no PRs are merged into the base or non-main branch. The branch basing is strictly for ease of review.
So there's a manual step here where I rebase + force push (I have a local script to help with this). So it's a little bit of effort that I take on my part, that improves the overall objective function (easy to review and split code).
I tend to wait for all things in the stack to be approved/green before starting to merge the stack. If I start merging early, or significant changes are needed in the middle of a PR, things up the stack need to be fixed up (the whole rebase workflow above). I try not to stack beyond 3 or so PRs (and usually don't need to) unless they are very simple, so it's manageable.

is it possible to change the base to main after the review?

Yes. In fact, GH will automatically change a subsequent PR base branch to main if the brnach below it in the stack is merged into main. This happened circa 2020. But, GH just changing the base branch doesn't guarantee it's safe to merge. For dependent changes you need to rebase/force-push (the manual step above) after merging.
I think GH has some UI buttons to do branch rebases now but I prefer pure git primitives and CLIs to do this. I've also tried graphite but I'm a bit stuck in my old ways 😄 GH merge queues purportedly also help manage this automatically, but I haven't tried it through that workflow yet.

usually the pattern when we stack commits is to base everything off main so that later PRs in the stack. It means that later PRs include commits from earlier PRs in the stack, which is annoying/confusing,

Got it, I'm aware of this but find this very confusing as a reviewer, especially if the changes depend on each other, I don't want to subject folks to it.

but it means that you're able to land prefixes of the stack, while later PRs are still getting reviewed, which can speed things up.

It's possible to still land prefixes of the stack with the workflow I described above without slowing down review. Later PRs can get reviewed all the same (and less confusingly because they all reflect one commit that will be merged). The cost is the author needs to be OK with the rebase / merging management :-)

In fact, GH will automatically change a subsequent PR base branch to main if the branch below it in the stack is merged into main. This happened circa 2020. But, GH just changing the base branch doesn't guarantee it's safe to merge. For dependent changes you need to rebase/force-push (the manual step above) after merging.

🤯 TIL!
The "ever-growing stack" approach, also has the same manual overhead of rebases and force-pushes, by the way, so it sounds like what you're doing is a clear useability win -- I'm going to start adopting it!  It sounds like I'll need to work off feature-branches in MystenLabs/sui rather than my own fork, but that seems fine.

FWIW, I use git-branchless to support some of the common stack-based operations from the CLI (mostly visualisaton and restacking).