Error updating Kustomization status

I have tried to set up flux on my new k3s cluster using the flux bootstrap command. It is stuck at waiting for Kustomization "flux-system/flux-system" to be reconciled and fails because of the 5 minute timeout. The kustomize controller does apply the the kustomization, but it fails to update the status after reconcilation.
This is the error: "Kustomization.kustomize.toolkit.fluxcd.io \"flux-system\" is invalid: status.snapshot.entries.namespace: Invalid value: \"null\": status.snapshot.entries.namespace in body must be of type string: \"null\""
I initially thought it was a problem with v0.12.1, but then I tried v0.11.0 and got the same error.

Did you upgraded using flux bootstrap?

I did first try to bootstrap using an existing repository that used version 0.11.0 but I had problems with that. Then I tried the bootstrap command again but this time with --version=0.12.1.
I don't remember the exact order because I tried a few things but I did try to upgrade the existing repository using the bootstrap command.
I will try reinstalling k3s and see if that fixes it.

I have set up a new cluster and used the bootstrap command with no existing GitHub repository and I got the same error.

I have managed to get it to work. I was using k3s v1.20.5 and it would fail to update the status of the kustomization, but v1.19.9 works.

Same here on a 1.20.5 cluster, with flux 0.9 and 0.12 (upgrade, and on a fresh install of the cluster and flux). For installation I just kubectl apply -f {gotk-components.yaml,gotk-sync.yaml}\, and a bitnami's sealed-secret for the credentials. For upgrade I did flux install --export gotk-components.yaml && git commit && git push && kubectl apply -f gotk-components.yaml (because flux was frozen due to the bug on a dependency)`

Works on 1.21.0

This looks like a bug in k3s, I can't replicate this on GKE/EKS nor in Kubernetes Kind that we used for e2e testing.

I would like to add that I found a workaround for my issue. Setting up flux on v1.20 k3s doesn't work, but doing it first on v1.19 k3s and then upgrading it to v1.20 works.

Isn't there a k3s 1.21.0? Maybe that would work according to @Zempashi

I believe they are working on v1.21 for k3s but it has not been released yet.

I can confirm that this bug is resolved in k3s v1.21.0-rc1.
Initiated a k3s cluster using
curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="644" INSTALL_K3S_VERSION="v1.21.0-rc1+k3s1" sh -s -
After a bootstrap using the same parameters that failed with v1.20.6 (see fluxcd/flux2#1344) now with the new RC version the kustomize controller finishes its update process:
{"level":"info","ts":"2021-04-26T08:09:54.015Z","logger":"controller.kustomization","msg":"Reconciliation finished in 30.720016657s, next run in 10m0s","reconciler group":"kustomize.toolkit.fluxcd.io","reconciler kind":"Kustomization","name":"flux-system","namespace":"flux-system","revision":"master/f313b028f9331c23bf456407c27f1d5446f1eff7"}
{"level":"debug","ts":"2021-04-26T08:09:54.016Z","logger":"events","msg":"Normal","object":{"kind":"Kustomization","namespace":"flux-system","name":"flux-system","uid":"78bfc923-7f3e-4b2b-aa06-5e609a09962c","apiVersion":"kustomize.toolkit.fluxcd.io/v1beta1","resourceVersion":"1020"},"reason":"info","message":"Update completed"}


Add annotator / country-level ID integration

Scope of the annotator event is not yet clear, need to work closely with @hyperknot to determine the best means for tagging additional datasets (geo, metadata such as population and hospital beds, etc.) to our locations).

Done!


Add string "github.com" to token lookup

The function auth.TokenForHost() assumes a string argument to properly identify the token lookup method for the host.  Due to a bug(?) in the auth package, if an empty string is provided, it ends up looking for GitHub Enterprise credentials, and returns an empty token if it doesn't find them.  Since we're assuming the token is provided either in the gh config or the GH_TOKEN env, when it is using the latter, calls to GitHub are not authenticated.
This PR uses "github.com" as the string for auth.TokenForHost(), to ensure credentials (including GH_TOKEN) are properly retrieved from the environment.
I have confirmed this to work with a container image build testing backplane-tools install all, and checking the rate limit, x-ratelimit-used has only incremented by one (which is the call to check the limit itself) after a full backplane-tools install run.
Signed-off-by: Chris Collins<EMAIL_ADDRESS>

/lgtm


Add new message for failures in the web.

I noticed this yesterday and forgot to fix it. The validation message isn't very helpful for web failures. It just says 'TypeError: Failed to fetch'.
This message gives more information.

Codecov Report

Merging #10006 (562296a) into main (580dd68) will increase coverage by 0%.
The diff coverage is 100%.

:exclamation: Current head 562296a differs from pull request most recent head 744c85b. Consider uploading reports for the commit 744c85b to get more accurate results

@@          Coverage Diff           @@
##            main   #10006   +/-   ##
======================================
  Coverage     63%      63%
======================================
  Files        211      211
  Lines      10090    10091    +1
  Branches    1610     1610
======================================
+ Hits        6442     6445    +3
+ Misses      3131     3130    -1
+ Partials     517      516    -1

Impacted Files
Coverage Δ

src/platform/common/utils/localize.ts
98% <100%> (+<1%)
:arrow_up:

src/platform/errors/errorHandler.ts
63% <0%> (+<1%)
:arrow_up:


[6.0] HSEARCH-4786 Fix non-compiling code in migration guide

https://hibernate.atlassian.net/browse/HSEARCH-4786

Yeah, I don't think it's worth the trouble of setting up test cases just for the migration guide.

Merged, thanks


The future of spacefish ✨🚀

TL;DR: The team has begun working on the better, faster, cross-shell rewrite at https://github.com/starship/starship. ✨🚀
Spacefish is not going anywhere and is still accepting feature PRs, but we won't be actively working on it.

Inspired by the work @denysdovhan did on denysdovhan/robbyrussell-node and this discussion back in November, I started work on https://github.com/starship/starship at the start of April 2019 to address the amount of duplicated effort that is made to maintain both spaceship and spacefish.
Starship is written in Rust and will contain all the logic required for a wrapper to be created for any shell. The plan for the immediate future is to add first-class support for Fish, Zsh, and Bash. The prompts will mostly be the same, with some improvements where it was difficult to make them in the past. Things like prompt configuration files, improved testing, self-updating, more safety when things go wrong, etc.
All of that being said, we will still be reviewing feature PRs on this repo for the next little while, so we haven't gone into full "maintenance mode". That won't be happening until starship has all the features and tooling needed to replace spacefish.
We would love to get the support of those of you who are fans of spacefish and would like to contribute to our Rust codebase.
Hope to see you over at https://github.com/starship/starship! 😄

@matchai Any reason to still use spacefish over starship? Tnx.

@matchai Any reason to still use spacefish over starship? Tnx.

@matchai Any reason to still use spacefish over starship? Tnx.

Nope, not anymore. Starship has now surpassed spacefish in terms of features and performance.

@matchai Any reason to still use spacefish over starship? Tnx.

Nope, not anymore. Starship has now surpassed spacefish in terms of features and performance.

@matchai Perhaps it's time to archive Spacefish? There hasn't been any activity here, and PRs haven't been getting reviewed (I don't blame you, you've been doing great work on Starship 😄). Thus, it would be more honest to archive the repository, and as you said, Starship has surpassed Spacefish in every regard.

@matchai Perhaps it's time to archive Spacefish? There hasn't been any activity here, and PRs haven't been getting reviewed (I don't blame you, you've been doing great work on Starship 😄). Thus, it would be more honest to archive the repository, and as you said, Starship has surpassed Spacefish in every regard.

Agreed. See y'all over on the Starship repo! 👋 🚀


Can not integrate Lock Objects S3 with Supabase

Bug report

[X] I confirm this is a bug with Supabase, not with my own application.
[X] I confirm I have searched the Docs, GitHub Discussions, and Discord.

Describe the bug
I am using S3 integrated with supabase to save my files. I want to configure Lock Objects in my S3 Bucket, but i fails when try to save files via Supabase SDK.
I have this error message:
{"error":{"raw":"{\"name\":\"Content-MD5 OR x-amz-checksum- HTTP header is required for Put Object requests with Object Lock parameters\",\"httpStatusCode\":400,\"userStatusCode\":400,\"originalError\":{\"name\":\"InvalidRequest\",\"$fault\":\"client\",\"$metadata\":{\"httpStatusCode\":400,\"requestId\":\"KQ7VK13MMPSQH89E\",\"extendedRequestId\":\"fWidPboCY3akHUhFakfzno/A7zsV40ek6f2dNka+wRB02WC/F2NiuAJTD2PU71tQDCfSGpSum0A=\",\"attempts\":1,\"totalRetryDelay\":0},\"Code\":\"InvalidRequest\",\"RequestId\":\"KQ7VK13MMPSQH89E\",\"HostId\":\"fWidPboCY3akHUhFakfzno/A7zsV40ek6f2dNka+wRB02WC/F2NiuAJTD2PU71tQDCfSGpSum0A=\",\"message\":\"Content-MD5 OR x-amz-checksum- HTTP header is required for Put Object requests with Object Lock parameters\"}}","name":"Content-MD5 OR x-amz-checksum- HTTP header is required for Put Object requests with Object Lock parameters","message":"InvalidRequest","stack":"Content-MD5 OR x-amz-checksum- HTTP header is required for Put Object requests with Object Lock parameters: InvalidRequest\n    at StorageBackendError.fromError (/app/dist/storage/errors.js:46:16)\n    at S3Backend.uploadObject (/app/dist/storage/backend/s3.js:113:48)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Uploader.upload (/app/dist/storage/uploader.js:55:36)\n    at async ObjectStorage.uploadNewObject (/app/dist/storage/object.js:30:35)\n    at async Object.<anonymous> (/app/dist/http/routes/object/createObject.js:42:46)"},"msg":"celeri-qa | POST | 400 | <IP_ADDRESS> | req-1 | /object/CELERI_AR/7f2e93a4-d7fb-44ff-a2b6-1d5e6e240d35_core-front_git_flow.png | undici"}

Something similar to this issue --> https://github.com/aws/aws-sdk-php/issues/1694
To Reproduce
Try to integrate S3 Lock Objects with Supabase and save a file.
Expected behavior
I have Lock Objects configurated in S3 and still can save files via Supabase.
Screenshots

You can add here the header that is missing from Lock Objects S3 integration.

@FeliisraCeleri uploading files with LockObjects is not currently supported in Supabase Storage
It is not something on the roadmap at the moment, however, feel free to draft a PR if you'd like

The reason this doesn't work out of the box is because the server will need to compute the checksum of the file before uploading. This means that the file needs to be saved on disk first, to be able to compute the checksum, then uploaded to S3, currently, the upload is streamed directly to S3

Closing this, as this feature is not on our current radar


Modelcheckpoint callback to save model weights

I found myself often training similar models over and over again only to find out from what epoch on the validation loss stopped decreasing.
In a similar manner to pylearn2.train_extensions.best_params.MonitorBasedSaveBest, this callback stores the model weights either after each epoch or only if the validation loss improved in the current epoch compared to the last best epoch. This behaviour can be controlled with the save_best_only parameter.

This is definitely useful! Will review and merge in a bit.

In the future, we should have a single test script for all callbacks.


Parse: explicitly state ordering of parsing (NFC)

When the parameters are inlined, with optimizations, the evaluation
order is under specified (with MSVC, the arguments are evaluated right
to left rather than left to right).  This results in the arguments being
processed incorrectly.  Create local variables to enforce the ordering
of the processed tokens.  Fixes the build on Windows with optimizations.

Replace this paragraph with a description of your changes and rationale. Provide links to external references/discussions if appropriate.

Resolves SR-NNNN.

CC: @rintaro

@swift-ci please test

This is not NFC since it fixes the build on Windows! :)

@slavapestov hah, fair point :)


Move demo app off of docker hub

To avoid potential rate limiting and general stability issues, transition our demo app to https://gallery.ecr.aws/ (where the image exists) and mirror to ghcr where that isn't possible, with an approach similar to https://github.com/rblaine95/dockerhub-mirror

@tylerslaton - not directly related to the v0.5.0 release, but hoping you can knock this out in the before-holiday-vacation timefame

Yep, sounds good to me. I'm hoping to get all the assigned work out prior to the holidays vacations.

Moving out for now


Leading space in first user listed in /mods & /vips

Describe your issue
After #3187 added the functionality to click the users listed in /mods & /vips, I noticed that the very first user listed does not load, and the login name is very slightly off centered. After looking into this I saw that there is a leading space for the very first user.


[HOLD #48400][$250] Expense - RBR doesn't disappear Instantly after paying held expense

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 9.0.27-0
Reproducible in staging?: Y
Reproducible in production?: Y
Email or phone of affected tester (no customers<EMAIL_ADDRESS>Issue reported by: Applause Internal Team
Action Performed:

Go to https://staging.new.expensify.com/
As User A, go to the chat with User B.
As User A, submit an expense.
As User A, right-click on the expense and click "Hold."
The RBR appears in the expense preview for both User A and User B. If not, go to the expense details and then return to the chat.
As User B, click "Pay Elsewhere" and confirm the payment.
Click on the expense preview and then return to the chat (repeat this for both User A and User B).

Expected Result:
After paying the held expense in step 6, the RBR in the preview should disappear instantly.
Actual Result:
After paying the held expense in step 6, the RBR in the preview persists. The red dot only disappears after clicking on the preview and returning to the chat.
Workaround:
Unknown
Platforms:

[ ] Android: Native
[x] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos

https://github.com/user-attachments/assets/00f5ba3a-6044-4ed1-af7b-bfb4f30bbb2d

View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~021831729851068678041
Upwork Job ID:<PHONE_NUMBER>068678041
Last Price Increase: 2024-09-19
Automatic offers:

ikevin127 | Reviewer | 104042668
nkdengineer | Contributor | 104042669

Issue OwnerCurrent Issue Owner: @ikevin127

We think that this bug might be related to #vip-bills

@twisterdotcom  FYI I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors

Yes, I recreated this.
https://github.com/user-attachments/assets/346c33cd-e9a0-44b8-87a4-765656829786

Proposal
Please re-state the problem that we are trying to solve in this issue.
After paying the held expense in step 6, the RBR in the preview persists. The red dot only disappears after clicking on the preview and returning to the chat.
What is the root cause of that problem?
When we pay money request, we unhold all transactions. But we don't clear the hold violation in optimistic data and after the API is complete, BE also doesn't clear the hold violation of the transaction then RBR still displays.
https://github.com/Expensify/App/blob/65c0f4103f178bf18f81a8b4e71ace5203c912cf/src/libs/actions/IOU.ts#L6725-L6734
This bug also happens when we approve money request but it only happens in offline, after the API is complete, BE returns violation of transaction that cleared the hold violation
https://github.com/Expensify/App/blob/65c0f4103f178bf18f81a8b4e71ace5203c912cf/src/libs/actions/IOU.ts#L7018-L7023
What changes do you think we should make in order to solve the problem?
We should clear the hold violation when we pay/approve all requests. To prevent duplicate code, we can create a util to get the optimistic data for this case
function buildOnyxDataForUnHoldTransaction(expenseReport: OnyxEntry<OnyxTypes.Report>) {
    const optimisticData: OnyxUpdate[] = [];
    const failureData: OnyxUpdate[] = [];

    const heldTransactions = ReportUtils.getAllHeldTransactions(expenseReport?.reportID);
    heldTransactions.forEach((heldTransaction) => {
        optimisticData.push({
            onyxMethod: Onyx.METHOD.MERGE,
            key: `${ONYXKEYS.COLLECTION.TRANSACTION}${heldTransaction.transactionID}`,
            value: {
                comment: {
                    hold: '',
                },
            },
        });
        failureData.push({
            onyxMethod: Onyx.METHOD.MERGE,
            key: `${ONYXKEYS.COLLECTION.TRANSACTION}${heldTransaction.transactionID}`,
            value: {
                comment: {
                    hold: heldTransaction.comment?.hold,
                },
            },
        });
        const transactionViolations = allTransactionViolations[`${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${heldTransaction.transactionID}`] ?? []
        optimisticData.push({
            onyxMethod: Onyx.METHOD.SET,
            key: `${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${heldTransaction.transactionID}`,
            value: transactionViolations.filter((violation) => violation.name !== CONST.VIOLATIONS.HOLD)
        });
        failureData.push({
            onyxMethod: Onyx.METHOD.SET,
            key: `${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${heldTransaction.transactionID}`,
            value: transactionViolations,
        });
    });

    return {optimisticData, failureData};
}

Then we can use this in both places here
if (full) {
    const unholdTransactionOnyxData = buildOnyxDataForUnHoldTransaction(iouReport);
    optimisticData.push(...unholdTransactionOnyxData.optimisticData);
    failureData.push(...unholdTransactionOnyxData.failureData);
}

https://github.com/Expensify/App/blob/65c0f4103f178bf18f81a8b4e71ace5203c912cf/src/libs/actions/IOU.ts#L6725-L6734
if (full && hasHeldExpenses) {
    const unholdTransactionOnyxData = buildOnyxDataForUnHoldTransaction(expenseReport);
    optimisticData.push(...unholdTransactionOnyxData.optimisticData);
    failureData.push(...unholdTransactionOnyxData.failureData);
}

https://github.com/Expensify/App/blob/65c0f4103f178bf18f81a8b4e71ace5203c912cf/src/libs/actions/IOU.ts#L7018-L7023
OPTIONAL: BE should also clear the hold violation when returning the data in PayMoneyRequest API
What alternative solutions did you explore? (Optional)

@abdulrahuman5196 how are we doing on the reviews here?

@twisterdotcom I am multiple items on my plate. Kindly assign it to a different C+. Unassigning myself.

@ikevin127 could you review the proposal here from @nkdengineer and @Nodebrute?

@twisterdotcom Sure, will review today.

@nkdengineer's proposal looks good to me.
TLDR: Fixing this issue 100% does require BE changes as well.

[!important]
The RCA is correct and the proposed solution solves our issue (partially) in the sense that the RBR does disappear on User B's side when the held expense is paid because the onyx data is only changed locally (in the browser), hence why it's not removed from User A because that would require BE to send a pusher event with the required data to remove the RBR after User B pays the held expense.

🎀👀🎀 C+ reviewed

@Nodebrute Thanks for the proposal. Unfortunately the proposed solution does not work as transaction is undefined which besides not fixing our issue, it blocks the payment when trying to confirm Pay elsewhere, because of the undefined variable mentioned above.

The solution is not complete enough to facilitate reviewing / testing.

cc @cead22 on the held violation here. It looks like on an paid request, the violations on the transaction do not clear. Is this something we should take care of in Web-E or wait until the new violations roll out?

@thienlnam this might be a duplicate of https://github.com/Expensify/App/issues/48400. I think we should fix it now, and if it's a dupe we can handle it in that other issue

Ah yeah, actually this does look like a dupe and the other issue already has an assignee

@cead22 I think we should clear the hold violation in optimistic data if we paid full instead of adding !isSettled condition.

There's a 3rd dupe of this issue that might be fixed in similar fashion, only difference being it's a split instead of hold:

https://github.com/Expensify/App/issues/48423

@ikevin127 That looks like it would also be solved by https://github.com/Expensify/App/issues/48400
The steps don't look reproducible because it's probably because the expense needs to have a violation

#48400 is closed now so I'll try to retest this.

Retesting.

Yeah, fixed.
https://github.com/user-attachments/assets/74d125c0-3147-4d91-9c3f-5eed0104daff


Updating content in direction to transfer task

Changes
Updating the content in the direction to transfer task to make checkboxes more accurate to the process and provide more detailed guidance.

Checklist

[x] Attach this pull request to the appropriate card in Trello.
[x] Update the CHANGELOG.md if needed.

Had to rebase as there has been a couple of releases since this branch was made. I've updated the branch automatically, but please give it a good check to make sure I've not done a bad thing.


Word Ladder problem in Java

💥 Proposal
Given two words, start and end, and a dictionary words.
Find the shortest transformation sequence start -> s1 -> s2 -> ... -> end such that
Return the number of words in the shortest transformation sequence from start to end, or 0 if no such sequence exists.

Every adjacent pair of words differ by a single letter
There is no guarantee that both the start and end words exist in the words

Have you read the Contributing Guidelines on Pull Requests?
Yes.

/assign


lsmod issue / TypeError: Cannot convert undefined or null to object

I've just created a pull request for lsmod that fixes an issue in raven if no modules are loaded. I would appreciate if raven could update its dependencies once that pull request is merged. Thank you.
https://github.com/defunctzombie/node-lsmod/pull/2

defunctzombie has updated lsmod to 1.0.0 which fixes this bug. I've created a minimal pull request to update lsmod.

Fixed with https://github.com/getsentry/raven-node/pull/154


feat(ui): ability to collapse old freight in freightline

In many cases, Freightline are full of dozens or hundreds of old, unused freight that slows down the UI. This PR adds a toggle to hide all freight older than the oldest freight currently in use.

This is super useful!

@rbreeze what is the behavior when no Freight are currently in use? i.e. New Project?

@krancour In this case, the button would have no effect (it wouldn't hide any freight)... so given that, I think it's best to hide the button when no freight are in use. I'll go ahead and add that behavior


fix: improper use of bzero

Description
scan-build -enable-checker alpha.unix.cstring.OutOfBounds showed a few explicit_bzeroes were clearing the pointer (and part of the stack...) instead of the intended array.
These were in a CATCH clause so could not be seen on the happy path.
Changes include

[x] Bugfix (non-breaking change that solves an issue)
[ ] New feature (non-breaking change that adds functionality)
[ ] Breaking change (change that is not backwards-compatible and/or changes current functionality)
[ ] Tests
[ ] Documentation
[ ] Other (for changes that might not fit in any category)

Codecov Report
Patch and project coverage have no change.

Comparison is base (9727500) 85.82% compared to head (56dc49f) 85.82%.

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #367   +/-   ##
=======================================
  Coverage   85.82%   85.82%
=======================================
  Files           8        8
  Lines         388      388
=======================================
  Hits          333      333
  Misses         55       55

Flag
Coverage Δ

unittests
85.82% <ø> (ø)

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

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Expand logic for suppressing warnings

Overview
Users should not be exposed to warnings that are raised by code outside of their test cases.
Currently, running brownie test raises deprecation warnings related to eth_utils. The issue was fixed in ethereum/eth-utils#186 but a new release hasn't been cut yet. Messages such as this could be confusing to new users.
Specification

Expand BrownieEnvironmentWarning into several, more specific warnings.
Replace all instances of base warnings with Brownie-specific warnings.
Expand the logic in test/managers/base.py to suppress all warnings that are not specific to Brownie. This is handled on lines 109 and 137.
The --disable-warnings flag should still suppress Brownie specific warnings. Another flag could be added to stop suppression of other warnings.

FYI, eth-utils v1.9.0 is out, with that deprecation warning squashed.


Added From<G> in add_constraint.

This change is

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#901  👈 (View in Graphite)
#894
#893
#892
#889
#888
#887
#879 : 1 other dependent PR (#883 )
#876
#875
dev

This stack of pull requests is managed by Graphite. Learn more about stacking.

Merge activity

Nov 28, 10:29 AM EST: A user merged this pull request with Graphite.


Remove antctl checks from E2E test

This commit removes the antctl related checks from E2E test, as
the antctl source code are all in the Antrea repo. We also rename
flowaggregator_test to flowvisibility_test as it is more appropriate.

/theia-test-e2e

@yanjunz97 updated. Please help check.


backend/drm: don't modeset with a NULL mode after TTY switch

This fixes a segfault in drm_connector_set_mode (mode = NULL).
This happens because we set wlr_output.enabled to true if the connector
is attached to the CRTC. When the user disables an output in the
wlroots-based compositor, switches to another VT (enabling the output),
then switches back, wlroots sets wlr_output.enabled to true but
wlr_output.current_mode is NULL.
We should consider not reading properties from KMS after a TTY switch,
disabling all connectors. However this may result in flickering (outputs
being disabled then re-enabled).
Closes: https://github.com/swaywm/wlroots/issues/1874

Thanks!


Add MPO activity to Councilmatic

The MPO is a federally mandated body overseeing the planning of transportation projects in Miami-Dade County. It controls a large budget and the board is filled with county commissioners as well as reps from FDOT, MDX, and some cities. The information for the MPO should be available on councilmatic, in my opinion. It is more important than many of the BCC committees.
http://miamidadempo.org

So to do this, we will have to make a change to the scraper itself which I have forked to my individual account:
https://github.com/ErnieAtLYD/scrapers-us-municipal
Unfortunately this may not have the same impact as Councilmatic due to all agendas only being available in PDF format, but it still may be useful anyway:
http://miamidadempo.org/agendas-and-minutes.asp

Yeah, this would be probably a secondary project.
http://miamidadempo.org/calendar.asp might be easier to scrape.


"Issue with CSW_L_PIN in Pico9918 VRAM Write Operation Affecting Color Cycle and Text Display

I have v0.4.3, on a pico from DWEII, the USB-C one, which I intend to use on a homegrown 65c02. To learn to use it, I have first wired it up to a second Pico W, with the intention of cycling through the colors and writing "Hello, World!" to the screen.
The following code cycles the colors as expected; however, I had to comment out the lines in void write_vram that set the CSW_L_PIN low, i.e., //gpio_put(CSW_L_PIN, 0);
If I uncomment those lines, the first screen color change occurs, but from there, no additional screen color changes and no text appears. The program does run to completion. Leaving the lines commented as in the example below, the program runs and the screen colors cycle.
I feel I might be doing something wrong here, but reaching out as my research hasn't helped thus far. I am new to the Pico9918 and the TMS9918A in general.
If you could take a quick look, I would appreciate it. Also, knowing this uses the emulation library, I have assumed there is a default character pattern.
PS - Nice seeing you over at the 6502 forum and appreciate you.
#include "pico/stdlib.h"
#include <stdio.h>

#define CSW_L_PIN 27
#define MODE_PIN 28
#define DATA_PINS {14, 15, 16, 17, 18, 19, 20, 21}  // CD7 (bit 7) to CD0 (bit 0)

const char* color_names[] = {"TRANSPARENT", "BLACK", "MEDIUM GREEN", "LIGHT GREEN", "DARK BLUE", "LIGHT BLUE", "DARK RED", "CYAN", "MEDIUM RED", "LIGHT RED", "DARK YELLOW", "LIGHT YELLOW", "DARK GREEN", "MAGENTA", "GRAY", "WHITE"};
const uint8_t ti_colors[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F};

void setup_gpio();
void set_data_pins(uint8_t byte);
void send_byte(uint8_t byte);
void set_mode();
void write_vram(uint16_t address, uint8_t data);
void write_name_table(uint16_t address, uint8_t data);
void display_text();
void cycle_colors();

int main() {
    stdio_init_all();
    printf("Starting setup...\n");

    // Initial wait
    printf("Initial wait...\n");
    sleep_ms(5000);

    // Double initialization to stabilize state
    printf("First initialization...\n");
    setup_gpio();
    set_mode();

    printf("Second initialization...\n");
    setup_gpio();
    set_mode();

    // Cycle through TI-99/4A TMS9918A colors with "AB" text
    cycle_colors();

    printf("Program complete.\n");

    return 0;
}

void setup_gpio() {
    static const uint8_t data_pins[] = DATA_PINS;

    for (int i = 0; i < 8; i++) {
        gpio_init(data_pins[i]);
        gpio_set_dir(data_pins[i], GPIO_OUT);
        gpio_put(data_pins[i], 0);  // Set all data pins low initially
    }
    gpio_init(CSW_L_PIN);
    gpio_set_dir(CSW_L_PIN, GPIO_OUT);
    gpio_put(CSW_L_PIN, 1);  // Set CSW_L_PIN high initially

    gpio_init(MODE_PIN);
    gpio_set_dir(MODE_PIN, GPIO_OUT);
    gpio_put(MODE_PIN, 1);  // Set MODE_PIN high initially (command mode)

    stdio_init_all();
    printf("GPIO setup complete.\n");
}

void set_data_pins(uint8_t byte) {
    static const uint8_t data_pins[] = DATA_PINS;
    for (int i = 0; i < 8; i++) {
        gpio_put(data_pins[i], (byte >> i) & 1);  // Set data pins
    }
    sleep_us(50);  // Small delay to stabilize
    printf("Data pins set to 0x%02X\n", byte);
}

void send_byte(uint8_t byte) {
    set_data_pins(byte);
    gpio_put(CSW_L_PIN, 0);  // Start the write operation
    sleep_us(200);  // Delay to ensure the byte is latched
    gpio_put(CSW_L_PIN, 1);  // End the write operation
    sleep_us(100);  // Small delay to stabilize
    printf("Data byte 0x%02X sent.\n", byte);
}

void set_mode() {
    printf("Setting mode to Text mode (000 1011)...\n");
    send_byte(0x80 | 0x00);  // Register 0 (Mode)
    send_byte(0x0B);  // Text mode (000 1011)
    printf("Mode set to Text mode.\n");
}

void write_vram(uint16_t address, uint8_t data) {
    printf("Preparing to write VRAM - Address: 0x%04X, Data: 0x%02X\n", address, data);

    gpio_put(MODE_PIN, 0);  // Switch to VRAM mode
    sleep_us(50);  // Small delay to stabilize

    // High byte of address
    set_data_pins(0x40 | (address >> 8));
    //gpio_put(CSW_L_PIN, 0);  // Start the write operation
    sleep_us(50);  // Small delay to stabilize
    gpio_put(CSW_L_PIN, 1);  // End the write operation
    sleep_us(50);  // Small delay to stabilize

    // Low byte of address
    set_data_pins(address & 0xFF);
    //gpio_put(CSW_L_PIN, 0);  // Start the write operation
    sleep_us(50);  // Small delay to stabilize
    gpio_put(CSW_L_PIN, 1);  // End the write operation
    sleep_us(50);  // Small delay to stabilize

    // Data byte
    set_data_pins(data);
    //gpio_put(CSW_L_PIN, 0);  // Start the write operation
    sleep_us(50);  // Small delay to stabilize
    gpio_put(CSW_L_PIN, 1);  // End the write operation
    sleep_us(50);  // Small delay to stabilize

    gpio_put(MODE_PIN, 1);  // Switch back to command mode
    sleep_us(50);  // Small delay to stabilize

    printf("Finished writing to VRAM - Address: 0x%04X, Data: 0x%02X\n", address, data);
}

void write_name_table(uint16_t address, uint8_t data) {
    write_vram(address, data);
}

void display_text() {
    const char* text = "AB";
    uint16_t vram_address = 0x3800;  // Starting VRAM address for name table
    while (*text) {
        printf("Displaying character: %c at VRAM address: 0x%04X\n", *text, vram_address);
        write_name_table(vram_address++, *text++);
        sleep_us(200);  // Small delay to stabilize
    }
}

void cycle_colors() {
    printf("Cycling through TI-99/4A TMS9918A colors...\n");
    for (int i = 0; i < 16; i++) {
        send_byte(0x80 | 0x07);  // Write to VDP register 7 (Background color)
        send_byte(ti_colors[i]); // Set the background color
        printf("Displaying color %s (0x%02X).\n", color_names[i], ti_colors[i]);
        sleep_ms(2000);  // Delay to display each color

        // Display text on each color screen
        display_text();
    }
    printf("Color cycling complete.\n");
}

Hi, you definitely need those lines of code. Without them, you're not getting the required pulses on the CSW pin.

Is your PICO9918 CSR pin held high? It should be.
There are no default patterns in its VRAM. It emulates a real TMS9918A which obviously also doesn't have any default data in VRAM.

So, you'll need to check the CSR line. And also, you'll need to load font pattern data.

I appreciate your response. Yes, I have tied CSR high to 3.3V. I will look into loading the font pattern data as suggested, however this strange issue continues with vram_write. When I uncomment any of the lines that bring CSW_L_PIN low within the write_vram routine, the screen changes stop. Interestingly, the set of CSW_L_PIN low is within the send_byte() while cycling the screen colors without any issues. Initially, I used send_byte() for VRAM writes, but I separated it out while troubleshooting this.

Just looking at your write_vram() function. The address needs to be written with MODE high.

Thank you, that will help for sure, however I do still get the same result. Also visrealm,  I realize this will surely be an issue from my lack of knowledge and not a repo issue, I just thought this may be the best way to reach out. I will keep working at this until I get it! I know of the examples and data sheets. If you know any other good resources for a beginner like me, I would appreciate being pointed in that direction. I am familiar with the pico as well as pio, it is the tms9918a I am new to. I love this project by the way, awesome work! This is something to be proud of for sure! Thanks for your time.

Hello visrealm,
I've updated my code to load a pattern into the pattern table, making sure the mode pin is set high for writing addresses and low for data. I've reverted to using the send_byte() routine and ensured that the proper pin for CSR is tied high.
The code below runs and cycles through the screen colors. However, it currently only does so if the following lines are commented out, or set to prevent any data from being sent to the pico9918:
In the int main(), I have commented out the loading of the font pattern.
    //load_font_patterns();

In the display_text() function, I have set the single character that I am attempting to write to the screen as null.
     //const char* text = "A";
    const char* text = "";

The code provided will facilitate changes in screen color.
#include <stdio.h>

#define CSW_L_PIN 27
#define MODE_PIN 28
#define DATA_PINS {14, 15, 16, 17, 18, 19, 20, 21}  // CD7 (bit 7) to CD0 (bit 0)

const char* color_names[] = {"TRANSPARENT", "BLACK", "MEDIUM GREEN", "LIGHT GREEN", "DARK BLUE", "LIGHT BLUE", "DARK RED", "CYAN", "MEDIUM RED", "LIGHT RED", "DARK YELLOW", "LIGHT YELLOW", "DARK GREEN", "MAGENTA", "GRAY", "WHITE"};
const uint8_t ti_colors[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F};

//#define TMS_DEFAULT_VRAM_NAME_ADDRESS          0x3800
//#define TMS_DEFAULT_VRAM_COLOR_ADDRESS         0x0000
//#define TMS_DEFAULT_VRAM_PATT_ADDRESS          0x2000
//#define TMS_DEFAULT_VRAM_SPRITE_ATTR_ADDRESS   0x3B00
//#define TMS_DEFAULT_VRAM_SPRITE_PATT_ADDRESS   0x1800

// Font pattern for the character 'A'
const uint8_t font_patterns[] = {
    0x18, 0x24, 0x42, 0x42, 0x7E, 0x42, 0x42, 0x42
};

void setup_gpio();
void set_data_pins(uint8_t byte);
void send_byte(uint8_t byte);
void set_mode();
void write_vram(uint16_t address, uint8_t data);
void write_name_table(uint16_t address, uint8_t data);
void load_font_patterns();
void display_text();
void cycle_colors();

int main() {
    stdio_init_all();
    printf("Starting setup...\n");

    // Initial wait
    printf("Initial wait...\n");
    sleep_ms(5000);

    // Double initialization to stabilize state
    printf("First initialization...\n");
    setup_gpio();
    set_mode();

    printf("Second initialization...\n");
    setup_gpio();
    set_mode();

    // Load the font pattern for 'A' into VRAM
    //load_font_patterns();

    // Cycle through TI-99/4A TMS9918A colors with "A" text
    cycle_colors();

    printf("Program complete.\n");

    return 0;
}

void setup_gpio() {
    static const uint8_t data_pins[] = DATA_PINS;

    for (int i = 0; i < 8; i++) {
        gpio_init(data_pins[i]);
        gpio_set_dir(data_pins[i], GPIO_OUT);
        gpio_put(data_pins[i], 0);  // Set all data pins low initially
    }
    gpio_init(CSW_L_PIN);
    gpio_set_dir(CSW_L_PIN, GPIO_OUT);
    gpio_put(CSW_L_PIN, 1);  // Set CSW_L_PIN high initially

    gpio_init(MODE_PIN);
    gpio_set_dir(MODE_PIN, GPIO_OUT);
    gpio_put(MODE_PIN, 1);  // Set MODE_PIN high initially (command mode)

    stdio_init_all();
    printf("GPIO setup complete.\n");
}

void set_data_pins(uint8_t byte) {
    static const uint8_t data_pins[] = DATA_PINS;
    for (int i = 0; i < 8; i++) {
        gpio_put(data_pins[i], (byte >> i) & 1);  // Set data pins
    }
    sleep_us(50);  // Small delay to stabilize
    printf("Data pins set to 0x%02X\n", byte);
}

void send_byte(uint8_t byte) {
    set_data_pins(byte);
    gpio_put(CSW_L_PIN, 0);  // Start the write operation
    sleep_us(200);  // Delay to ensure the byte is latched
    gpio_put(CSW_L_PIN, 1);  // End the write operation
    sleep_us(100);  // Small delay to stabilize
    printf("Data byte 0x%02X sent.\n", byte);
}

void set_mode() {
    printf("Setting mode to Text mode (000 1011)...\n");
    send_byte(0x80 | 0x00);  // Register 0 (Mode)
    send_byte(0x0B);  // Text mode (000 1011)
    printf("Mode set to Text mode.\n");
}

void write_vram(uint16_t address, uint8_t data) {
    printf("Preparing to write VRAM - Address: 0x%04X, Data: 0x%02X\n", address, data);

    gpio_put(MODE_PIN, 1);  // Ensure we are in command mode
    sleep_us(50);  // Small delay to stabilize

    // High byte of address
    send_byte(0x40 | (address >> 8));
    sleep_us(50);  // Small delay to stabilize

    // Low byte of address
    send_byte(address & 0xFF);
    sleep_us(50);  // Small delay to stabilize

    gpio_put(MODE_PIN, 0);  // Switch to VRAM mode
    sleep_us(50);  // Small delay to stabilize

    // Data byte
    send_byte(data);
    sleep_us(50);  // Small delay to stabilize

    gpio_put(MODE_PIN, 1);  // Switch back to command mode
    sleep_us(50);  // Small delay to stabilize

    printf("Finished writing to VRAM - Address: 0x%04X, Data: 0x%02X\n", address, data);
}

void write_name_table(uint16_t address, uint8_t data) {
    write_vram(address, data);
}

void load_font_patterns() {
    uint16_t vram_address = 0x2000;  // Starting address for pattern table
    for (int i = 0; i < sizeof(font_patterns); i++) {
        write_vram(vram_address++, font_patterns[i]);
    }
    printf("Font patterns loaded into VRAM.\n");
}

void display_text() {
    //const char* text = "A";
    const char* text = "";
    uint16_t vram_address = 0x3800;  // Starting VRAM address for name table
    while (*text) {
        printf("Displaying character: %c at VRAM address: 0x%04X\n", *text, vram_address);
        write_name_table(vram_address++, *text++);
        sleep_us(200);  // Small delay to stabilize
    }
}

void cycle_colors() {
    printf("Cycling through TI-99/4A TMS9918A colors...\n");
    for (int i = 0; i < 16; i++) {
        send_byte(0x80 | 0x07);  // Write to VDP register 7 (Background color)
        send_byte(ti_colors[i]); // Set the background color
        printf("Displaying color %s (0x%02X).\n", color_names[i], ti_colors[i]);
        sleep_ms(2000);  // Delay to display each color

        // Display text on each color screen
        display_text();
    }
    printf("Color cycling complete.\n");
}

I would appreciate any further guidance you can provide. Thank you for your time and effort.

Hi visrealm,
I think I'm having trouble because I've been trying to do this without the PCB, just using a couple of pico boards. I suspect the logic of the other chips, like the 74hc08, is necessary for this to work correctly. Though I do have a TI-99/4A and intend to get the PCB, I was trying to make this work on a breadboard with a homebrew 6502, thinking the PCB wasn't needed as I didn't need GROMCLK or CPUCLK.
At least through trying to make this work, I have learned more about how to work with the pico9918/tms9918!
I should probably close this issue, as I suspect there isn't any issue with the repository. I just thought this was the best way to reach out to you. I'll leave it open for now in hopes of a reply.
Thanks for your awesome project!

This is obviously not a repo issue, but most likely because I've been trying to do this without the PCB, just using a couple of pico boards. I did attempt to order the PCB, but was stalled with the question: "PCBWay needs clarification on whether your Pico9918 v0.3 board is designed as a 4-layer or 2-layer PCB."
Thanks.

This is obviously not a repo issue, but most likely because I've been trying to do this without the PCB, just using a couple of pico boards. I did attempt to order the PCB, but was stalled with the question: "PCBWay needs clarification on whether your Pico9918 v0.3 board is designed as a 4-layer or 2-layer PCB."
Thanks.

Hi, all boards are 4 layers.
I do plan to try your code once I get the time to set it up.

Excellent, thank you visrealm! I'll look at JLCPCB. If you do get the chance to take a look at this, please post back, I'll be interested.
Merry Christmas to you and yours!


Pin protobuf to bundled version 3.21

This PR is pinning the Protobuf version to 3.21.4 (the bundled version).
Problem:
Prestissimo includes headers from folly which in turn includes headers from protobuf. Thus, the correct headers need to be included which is not the case in all situations. This PR attempts to enable a fix to the prestissimo build.
Prestissimo builds have to deal with a variety of issues when the system does not include the expected version of Protobuf. Observed issues are:

on Ubuntu 22.04 (or older) if protobuf was installed prestissimo includes the system include files which are older than the required version 3.21.4 causing compilation issues
on Mac homebrew might have installed a newer version (to the system) of protobuf (version 23.4) which has new dependencies (ABSEIL library) and causes link issues on build - the workaround is to unlink and relink protobuf@21 (see issue https://github.com/prestodb/presto/issues/20022) or have no protobuf installed to use the bundled version.

Solution:
Pin the version of protobuf to the bundled version. This allows ystems with too old or too new protobuf installed to avoid build issues.
If the system protobuf does not exactly match the expected version, use the bundled version to avoid issues with newer system versions that require additional dependency work (or cmake update).

@aditi-pandit @majetideepak This is the first proposed change to fix the protobuf issues (for old and new protobuf system versions) in prestissimo.

@czentgr Can we remove the PARENT_SCOPE if we fix Prestissimo to not need Protobuf?

@majetideepak yes, of course. This PR can wait until we know if the PARENT_SCOPE is needed.

@kgpai do you think we still want to make this change? The PR has been open for a while.

@czentgr  Can you rebase with latest main ? I will then start the merge process. Thanks !

Rebased to the latest available commit now (previous push was to a commit from Aug 22).


[LiveComponents] Component HTML contains 11 elements, but only 1 root element is allowed, only when using nested components.

My PayrollSummary component is essentially an HTML table with rows populated from a database. There are 900 or more rows without any filters applied.
Long story short, I have a row cell with buttons:

    <twig:Button
        size="xs"
        theme="ghost"
    >
        <twig:ux:icon name="mdi:wand" class="size-4" />
    </twig:Button>

    <twig:Button>
        <twig:ux:icon name="mdi:edit" class="size-4" />
    </twig:Button>

This Twig excerpt will cause the following error:

Component HTML contains 11 elements, but only 1 root element is allowed, only when using nested components.

As soon as I change the second button to a simple HTML markup without a component, the problem disappear:
<button class="btn btn-xs btn-ghost">
    <twig:ux:icon name="mdi:edit" class="size-4" />
</button>

I've stripped all the props and attributes from my Button component to debug this error. I ended up with:
<button>
    {% block content %}{% endblock %}
</button>

Still getting the error. Any Idea?
EDIT: adding a random id doens't help:
<twig:Button
    id="payroll-{{ random() }}-justificatives-button"
    size="xs"
    theme="ghost"
    onclick="payroll_{{ payroll.id }}_justificatives.showModal()"
>
    <twig:ux:icon name="mdi:wand" class="size-4" />
</twig:Button>

<twig:Button
    id="payroll-{{ random() }}-edit-button"
    size="xs"
    theme="ghost"
>
    <twig:ux:icon name="mdi:edit" class="size-4" />
</twig:Button>

@gremo : is your button an anonymous or a class-based component ?
I'm not sure what happens here, the error mentionned occurs when a live component has not a unique root div with its attributes.
And can you show the rest of this template ?

@smnandre anonymous one.
This is driving me crazy. Facts:

HTML markup is of course valid
It happens even if the component's HTML is empty
It happens only when a lot of records are printed, and with a certain number of components in the page

Right now I've 900 records and 3 components in this template. I've removed the components one by one checking for the errors. This is the minimal example that trigger the error. Note that twig:Button and twig:Badge are empty anonymous components, just in case.
If I remove any of the component of the below template, it starts working again:

            {% for record in computed.summary.records %}

                        <twig:Badge />

                        <twig:Button />
                        <twig:Button />

            {% endfor %}

I can't imagine why this is happening and why it's related to the loop. I can't see any error or memory issue.

@smnandre

I wonder if your badge or button has not something in it that is rendered differently by the Browser DOM.

I'm not sure I understand what you mean but they are actually totally empty templetes, just in case.

Does it occurs if you render only one line ?

{% for record in computed.summary.records[0:1] %} works. Even with a lower value like 700 it works!

If your records are dynamic you probably should add ids on the rows

Already tested with
 and it doesn't help.

Even with a lower value like 700 it works!

I'm not suggesting the loop does not work, i'm trying to understand why the LiveComponent does not get the HTML ...
Maybe could you set a "if" around just to eliminate something ?

-          {% for record in computed.summary.records|slice(0, 1) %}
+          {% for record in computed.summary.records|[:1] %}

                        <twig:Badge />

                        <twig:Button />
                        <twig:Button />

            {% endfor %}

they are actually totally empty templetes, just in case.

I'm not sure here... how do you see the bug if they are empty. I mean... what is triggering the LiveComponent re-render ?
Last thing, could you share the HTML generated (with this ultra-light template), i can then use it to create a small reproducer and try to understand what's happening

Looking at the error message in your capture i can confirm the HTML generated by the component during the re-render is not good (and contains too many things).
There 100% can be a LiveComponent bug here but yeah, i'll need more inforamtion.
(you can poke me on Slack if you want some privacy about this project - even when i'm not marked as "online" i'm often around ;) )

I’m happy to help and try to identify the bug. I’m not sure if I’ll be able to create a minimal reproducer, as there are a lot of objects and queries involved. Additionally, I'll be on holiday soon and won’t have access to a computer.
Essentially, the summary variable is just a large DTO with some nested objects and arrays. The error occurs on the initial render (i.e., the first page refresh) of the Payroll component. Here’s the partially generated HTML (I doubt it can help):

    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title></title>
    <link rel="stylesheet" href="/build/embed/app.css">

    <div data-controller="live" data-live-name-value="Embed:Payroll" data-live-url-value="/_components/Embed:Payroll" id="live-3359728119-0" data-live-query-mapping-value="{"filters":{"name":"filters"}}" data-live-props-value="{"profile":3,"filters":{"month":9,"userId":null},"@attributes":{"id":"live-3359728119-0"},"@checksum":"g+2Ts83YomFUFE2mFt\/QcN+bJGzxuCLNvyaIyhCCwTE="}" data-action="live:connect->live#$render">

An this is the component Payroll that gives the error:
#[AsLiveComponent(csrf: false)]
class Payroll
{
    use ComponentBusTrait;
    use DefaultActionTrait;

    #[LiveProp]
    public AppProfile $profile;

    #[LiveProp(url: true)]
    public PayrollFilters $filters;

    public function __construct()
    {
        $this->filters = new PayrollFilters();
    }

    #[LiveAction]
    public function resetPayroll(): void
    {
        $this->handle(new ResetPayrollRecordsMessage(
            profile: $this->profile,
            startDate: $this->filters->toDatePeriod()->getStartDate(),
            endDate: $this->filters->toDatePeriod()->getEndDate(),
            userId: $this->filters->userId,
        ));
    }

    #[ExposeInTemplate]
    public function getSummary(): PayrollSummary
    {
        return $this->handle(new BuildPayrollSummaryMessage(
            profile: $this->profile,
            startDate: $this->filters->toDatePeriod()->getStartDate(),
            endDate: $this->filters->toDatePeriod()->getEndDate(),
            userId: $this->filters->userId,
        ));
    }
}

If you can show me the AJAX response that triggered the error that'd help.
There may be something odd between loading="defer", url:true (not writable ?) and exposeInTemplate.
Side note: as you use loading=defer,  the "exposeInTemplate"  attribute should probably be avoided (it will load your 9000 rows... without rendering them during first page load (before re-render))

Do you have any news on this?

Well... no. I updated the page to prevent this error from happening again by reorganizing the components and includes. I'll close this to avoid cluttering the repository.

UP +1 same error


[SPARK-25899][TESTS]Fix flaky CoarseGrainedSchedulerBackendSuite

What changes were proposed in this pull request?
I saw CoarseGrainedSchedulerBackendSuite failed in my PR and finally reproduced the following error on a very busy machine:
sbt.ForkMain$ForkError: org.scalatest.exceptions.TestFailedDueToTimeoutException: The code passed to eventually never returned normally. Attempted 400 times over 10.009828643999999 seconds. Last failure message: ArrayBuffer("2", "0", "3") had length 3 instead of expected length 4.

The logs in this test shows executor 1 was not up when the test failed.
18/10/30 11:34:03.563 dispatcher-event-loop-12 INFO CoarseGrainedSchedulerBackend$DriverEndpoint: Registered executor NettyRpcEndpointRef(spark-client://Executor) (<IP_ADDRESS>:43656) with ID 2
18/10/30 11:34:03.593 dispatcher-event-loop-3 INFO CoarseGrainedSchedulerBackend$DriverEndpoint: Registered executor NettyRpcEndpointRef(spark-client://Executor) (<IP_ADDRESS>:43658) with ID 3
18/10/30 11:34:03.629 dispatcher-event-loop-6 INFO CoarseGrainedSchedulerBackend$DriverEndpoint: Registered executor NettyRpcEndpointRef(spark-client://Executor) (<IP_ADDRESS>:43654) with ID 0
18/10/30 11:34:03.885 pool-1-thread-1-ScalaTest-running-CoarseGrainedSchedulerBackendSuite INFO CoarseGrainedSchedulerBackendSuite:

===== FINISHED o.a.s.scheduler.CoarseGrainedSchedulerBackendSuite: 'compute max number of concurrent tasks can be launched' =====

And the following logs in executor 1 shows it was still doing the initialization when the timeout happened (at 18/10/30 11:34:03.885).
18/10/30 11:34:03.463 netty-rpc-connection-0 INFO TransportClientFactory: Successfully created connection to 54b6b6217301/<IP_ADDRESS>:33741 after 37 ms (0 ms spent in bootstraps)
18/10/30 11:34:03.959 main INFO DiskBlockManager: Created local directory at /home/jenkins/workspace/core/target/tmp/spark-383518bc-53bd-4d9c-885b-d881f03875bf/executor-61c406e4-178f-40a6-ac2c-7314ee6fb142/blockmgr-03fb84a1-eedc-4055-8743-682eb3ac5c67
18/10/30 11:34:03.993 main INFO MemoryStore: MemoryStore started with capacity 546.3 MB

Hence, I think our current 10 seconds is not enough on a slow Jenkins machine. This PR just increases the timeout from 10 seconds to 60 seconds to make the test more stable.
How was this patch tested?
Jenkins

Test build #98328 has started for PR 22910 at commit 0a3095f.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/4676/
Test PASSed.

Test build #98328 has finished for PR 22910 at commit 0a3095f.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/98328/
Test PASSed.

Thanks! Merged to master/2.4


Check review completed by signature

Fix Reviewer Progress calculation, we should check if the user signed the official review with their anonReviewer group number.
I'm still see a difference between this number and the number of reviewer to send a reminder for ECCV.
Currently I see the progress: 698 / 2808 and the reminder tries to remind 2066 reviewers, that means the other 742 completed the reviews, the difference is 44 where 14 are reviewers with no assignments what is correct to not send the reminder, what about the other 30 reviewers?

The issue was the reviewerMap was built using all the current assignment without checking if the note was still active. Now the numbers are the same.


revert: "refactor: Refactor ParseIdentityResponse Workflow (#864)"

Instructions

PR target branch should be against development
PR title name should follow this format: https://github.com/mParticle/mparticle-workflows/blob/main/.github/workflows/pr-title-check.yml
PR branch prefix should follow this format: https://github.com/mParticle/mparticle-workflows/blob/main/.github/workflows/pr-branch-check-name.yml

Summary

This reverts commit 2f686bec692adc9d220e561a6454d6d15b262483.

Testing Plan

[ ] Was this tested locally? If not, explain why.
{explain how this has been tested, and what, if any, additional testing should be done}

Reference Issue (For mParticle employees only.  Ignore if you are an outside contributor)

Closes https://go.mparticle.com/work/REPLACEME

:tada: This PR is included in version 2.26.3 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


"Increased Performance Mode" no longer has any effect when GPU plugin is in use.

Describe the bug
The stretched mode plugin's "Increased Performance Mode" setting is silently ignored when the GPU plugin is enabled, as the GPU plugin now uses the "UI Scaling mode" drop down to decide on the scaling method.
To Reproduce
Steps to reproduce the behavior:

Enable Stretched mode
Enable the GPU plugin
Toggle the "Increased Performance Mode" option in the Stretched mode plugin

Expected behavior
The scaling method should swap between nearest neighbour and bilinear as it used to, or else there should be some indication why it doesn't work any more.
Environment (please complete the following information):

Ubuntu 19.10
RuneLite version: 1.6.8
Launcher version: 2.1.0 (Installed as a Snap)

"If you were using the stretched mode plugin with the Increased performance mode option and the GPU plugin,
you may want to change the GPU UI scaling option to Nearest."
From Adam in discord.


Swap top and bottom position of left and right licks in real time visualizer

to be consistent with main GUI window

@hagikent

https://github.com/AllenNeuralDynamics/dynamic-foraging-task/pull/609
should solve this.


v1.6.3 release

Review for release
@sigmavirus24 -- this should in theory solve the issues with flake8 compatibility, though if you hear anything there we should definitely fix it.
I'd like to see this release and any remaining issues with the flake8 integration worked out prior to doing the name change proposed in #466.

I believe there have been far more changes included than would warrant a 1.6.3 release. If my memory serves me correctly this should actually be 1.7.0 and the changelog needs to include some more items. (@doismellburning, for example fixed some bugs around values parsed from config files.)

Not a bad idea (going to 1.7) I'll make that change tomorrow.
As an aside, I did skim the commit history since 1.6.2, must have missed a few. I'll add those tomorrow as well.
Thanks for catching that @sigmavirus24

So https://github.com/PyCQA/pep8/compare/1.6.2...HEAD shows more than what's in the changelog. Looks like:

Python 3.5
Fixing the config issues for Flake8
Fixing parsing of comma-separated lists with new-lines
Fix a BytesWarning on Python 3
Fix how we get function signatures

Ah, I see what happened, I did the changelog mods on the release/v1.6.3 branch (https://github.com/PyCQA/pep8/compare/1.6.2...release/v1.6.3).
Going to close this and re-open on a new, release/v1.7 branch


Can't not run Example in Win7 64bit system

Hi, i am a new pythoner. I install the pyahocorasick in Win7 64bit system, and try to run the example in the readme. But it can not run and the error message is "AttributeError: 'module' object has no attribute 'Automaton' ". I want to know, how to install pyahocorasick correctly.

@codywsy How did you exactly install pyahocorasick? (please list all the steps you went through)
It works on Windows but this is all new support added in the last few days. Did you install it form the tip of the master branch?

And we are in the process to update the README and eventually release pre-built wheels on Pypi...

I just install the pyzhocorascik module as other python module as usual. After unzipping the pyzhocorasick zip from your github page, i run the win cmd on the pyzhocorasick folder and use the command "python setup.py install" to install the pyzhocorasick. Is there something wrong i have made in the step i went through?

@codywsy When you run a python shell and type "import ahocorasick" does it work? If works, please check what is the result of expression dir(ahocorasick).

>>> import ahocorasick
>>> dir(ahocorasick)
['KeywordTree', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '_ahocorasick']

This is the result of expression dir(ahocorasick). As we saw, there is no a class named Automaton.

It appears that you have already installed another module with the same name, and python picks the other one. KeywordTree, the first entry in dir's result, suggests https://hkn.eecs.berkeley.edu/~dyoo/python/ahocorasick/.

Ah!!!!! You are right. i have installed the other python package previously. It must be true that i uninstalled it uncleanly before i install pyahocorasick package. Thanks for your help.


🚀 feat(Input): add a11y attributes to Input

Description 📄
This PR adds some accessibility improvements to the Input component, focusing mainly in improving the usability with screen readers:

Adds two new props to the Input component: a11yId and includeAriaAttributes (more details about these below);
Adds aria-labelledby to the input element, so that screen readers can announce the label of the input. If no a11yId is provided, aria-label is added instead (aria-labelledby is preferable when there is a visible text that labels an element according to MDN);
Adds aria-describedby to the input element, referencing the helper as it's description element. This allows the screen reader to announce helper and error messages associated with the input when the user focuses the input (works only if the a11yId prop is provided).
Adds aria-live="polite" to the Helper component, so that error messages can be announced by the screen reader as soon as they appear;
Adds aria-invalid to the input element, setting it's value to true when the error prop has a truthy value. This allows the screen reader to announce that the input has invalid data.

Generating HTML IDs for a11y
In order to use aria-labelledby and aria-describedby on the input element, HTML IDs had to be added to the label and helper elements. Some approaches were considered in order to do this (thanks @caiotracera for giving some ideas here):

The optimal solution would be using React's useId hook, made specifically to solve this problem. Unfortunately, it is only available on React 18 (Yoga is currently on React 17.0.2).
Generate a UUID for the input, store it with useRef or useState, and use it as a prefix for the HTML IDs. The pro of this approach is that aria-labelledby and aria-describedby would automatically work on all inputs without the need of passing a prop for that. The con is that some inconsistencies might happen with server side rendering (I honestly don't have experience with SSR and would like to know your opinions on this).
Manually pass an ID as a prop to the Input component, which seemed to be the safest approach to start with. Although this approach is not scalable, since devs need to manually pass an ID to each input that they want to have aria-labelledby and aria-describedby working, it at least makes it possible to do it somehow. Another downside of this approach is that making the ID prop (a11yId) optional made the code a bit hard to read due to, for example, conditional props passing.

More about this can be found in this SO question and in this React issue.
New includeAriaAttributes prop
Besides the new a11yId prop, this PR also adds another prop to the Input component: includeAriaAttributes. This prop has a true value by default and was added to give the possibility of including or not ARIA attributes on the Input, depending on the situation.
The need for this prop arose from components that extend the Input component and have their own ARIA implementations, like Dropdown and AutoComplete (by the way, the usability of these two components with screen readers also need to be revisited in the future, even though they have the ARIA attributes added by downshift).
Platforms 📲

[x] Web
[ ] Mobile

Type of change 🔍

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[x] This change requires a documentation update

How Has This Been Tested? 🧪

Open the Input page in the documentation app;

Start running a screen reader (on mac, press cmd+F5 to start VoiceOver);

Focus the input element:

it should announce something like "Find an activity, edit text" (the label is announced due to aria-label, since no a11yId has being passed yet);

Press the < > button in order to edit the code;

Edit the code adding error={value == "error" && "Error message"} to the list of props being passed to the Input component;

Focus the input and type the word "error":

it should announce "Error message" as soon as the input enters in error state (due to aria-live);

Focus any other element and then focus the input element again (still in the error state):

it should mention "invalid data" during the announcement (due to aria-invalid). Although, in this case it's not expected to have the error description announced, since there's no link between the helper and the input yet;

Edit the code once again, now adding a11yId="id" to the list of props being passed to the Input component;

Focus the input element:

it should now announce the content of the helper component too (i.e. the error message if the the input has errors or the helper text otherwise). That works now due to aria-describedby, that could be added because of the a11yId;

Edit the code one last time, adding now includeAriaAttributes={false} to the list of props being passed to the Input component (feel free to keep the other added props or remove them);

Focus the input element:

it should announce "edit text, blank". The label of the input is not expected to be announced due to the removal of aria-label/aria-labelledby.

[ ] Unit Test

[x] Snapshot Test

Checklist: 🔍

[x] My code follows the contribution guide of this project Contributing Guide
[ ] Layout matches design prototype: FIGMA
[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[ ] Any dependent changes have been merged and published in downstream modules
[x] I have checked my code and corrected any misspellings

Screenshots 📸

The videos below do not have audio, but the announcements of VoiceOver are shown as text in the gray box.
Before:
https://user-images.githubusercontent.com/10004004/226908572-03c37f7d-79d3-419e-aacf-3ff60558c58a.mov

The label of the input is not announced
The screen reader is not aware whether the input has invalid data or not
The helper text and the error description are not announced

After:
https://user-images.githubusercontent.com/10004004/226908725-d87f0b9f-e846-4b90-a929-0a2facfa709e.mov

The label of the input is announced (even when no a11yId is passed)
The screen reader announces if the input has invalid data
The error description is announced at least once due to aria-live, or everytime the input is focused when an a11yId is provided

@all-contributors please add @marcos-creuz for code


Documentation unclear for parameter central_fraction in tf.image.central_crop

Click to expand!
Issue Type
Documentation Feature Request
Source
binary
Tensorflow Version
tf 2.8
Custom Code
No
OS Platform and Distribution
Linux Ubuntu 20.04
Mobile device
No response
Python version
3.9
Bazel version
No response
GCC/Compiler version
No response
CUDA/cuDNN version
No response
GPU model and memory
No response
Current Behaviour?
The function `tf.image.central_crop` takes a parameter `central_fraction`. I would have expected that a larger `central_fraction` would mean that more of the image is kept. However, looking at [the code](https://github.com/tensorflow/tensorflow/blob/v2.8.0/tensorflow/python/ops/image_ops_impl.py#L844-L986=) my understanding is that a larger number means that more is cropped out. e.g.

bbox_h_start = int((img_hd - img_hd * central_fraction_static) / 2)

Changing the example from the current central_fraction=0.5 to central_fraction=0.25 would help clarify this point.
https://github.com/tensorflow/tensorflow/issues/29334

### Standalone code to reproduce the issue

```shell
https://www.tensorflow.org/api_docs/python/tf/image/central_crop

Relevant log output
No response

@chrisrapson
In order to expedite the trouble-shooting process, can you please provide more details on this issue ?Thanks!

At the moment, the documentation gives this example:
 --------
|        |
|  XXXX  |
|  XXXX  |
|        |   where "X" is the central 50% of the image.
 --------

It is not clear from the description whether central_fraction=0.25 would look like:
 ----------------
|                |
|                |
|                |
|      XXXX      |
|      XXXX      |
|                |
|                |
|                |
 ----------------

or
 ----------------
|                |
|    XXXXXXXX    |
|    XXXXXXXX    |
|    XXXXXXXX    |
|    XXXXXXXX    |
|    XXXXXXXX    |
|    XXXXXXXX    |
|                |
 ----------------

My initial assumption was the first one, but from the source code it looks like the second one.

The point is made clear in the argument section where it says
central_fraction  |  float (0, 1], fraction of size to crop
The value between 0,1 will be considered as the fractional size to crop from the given input. That means larger the value of central_fraction larger portion will be cropped. Hope this clarifies your concern. Thanks!

Sorry, that's exactly the part that I find unclear. Is the part that is "cropped" the pixels that are removed, or the ones that are left behind? I think people commonly use the word interchangeably, which makes it challenging. I think an example that is not 0.5 would clear it up unambiguously. Adding a sentence like yours: "larger the value of central_fraction larger portion will be cropped" might help, except you would need to exchange the last word for "removed" (or "kept", if my understanding is incorrect).

tf.image.central_crop returns a Tensor, without modifying the input given to it.
In the example mentioned in the document there are only limited outcome with the different central_fraction, even if the central_fraction is changed to 0.25, you will get the same output as central_fraction= 0.5.
It is because of the code logic of the bounding_box width and height here.
https://github.com/tensorflow/tensorflow/blob/3f878cff5b698b82eea85db2b60d65a2e320850e/tensorflow/python/ops/image_ops_impl.py#L952-L961
I will create PR to update details in the document. Thanks!

I don't think I understand why you would get the same output for central_fraction=0.25 and central_fraction=0.5. Do you mean, because the input in the example is low resolution, and the bbox_w_start is cast to an int? Even then, it looks like the input is 8x4, so I would have expected the two outputs to be 2x1 and 4x2 respectively.
Anyway, the modification to the docstring in your PR clears it up nicely. Thanks.

In the example given in the document, img_h, img_w & img_d are 4.0,4.0 &3.0 respectively.
For different central_fraction 0.25/0.5 when you equate with the below equation it gives the same result.
bbox_h_start = int((img_hd - img_hd * central_fraction_static) / 2)
1. int((4.0 -4.0*0.25)/2) =1
2. int(4.0 -4.0*0.5)/2)=1

For visible result, you can refer the below code and notice the shape difference between different central_fraction.
import tensorflow as tf
import numpy as np
x = np.random.randint(0, 255, size=(28, 28, 3))
tf.image.central_crop(x, 0.25)
tf.image.central_crop(x, 0.5)


RHN registration expectation for single filesystem per server_guid: /etc/rhsm/rhsm.conf will not work in pods

https://github.com/ManageIQ/manageiq/blob/48a3eac02106da14ed9e22d574543e3d71dd19fd/app/models/registration_system.rb#L63
This code expects server_guid to mean 1 distinct filesystem: configure the registration system once per server and you're done.  This isn't true in pods since each pod with the same server_guid have separate filesystems.
Is this currently enabled for pods?  If so, I would think it would fail.
Related:  all of https://github.com/ManageIQ/manageiq/blob/master/app/models/miq_server/update_management.rb#L1-L221 expects to be able to use yum based on a single server_guid meaning 1 "system", but in pods, many pods can have the same server_guid.  All of the yum related updates may need to be disabled/reviewed for pods.
Followup to https://github.com/ManageIQ/manageiq/issues/19957
and https://github.com/ManageIQ/manageiq/pull/20290

Note, if you wanted to really have this queue message by the same "process" that is already configured, you'd have to not only set server_guid on the queue message but also use queue_name => miq_server.  But, it seems like update procedures for pods will need to be handled differently so maybe this is just disabled in pods?

The update mechanism is different in containers as the local filesystem (for the most part) is considered ephemeral.
An update would be done by pulling a new image and re-deploying the container so we shouldn't have to worry about this.
On the other hand, it would be nice to properly hide/disable this functionality in pods so maybe we can make this issue about that?
Also, I think it would be better to track this kind of stuff in the pods repo. I remember talking about this with @Fryguy ... we discussed a label, but I think we landed on just opening them in pods to make them easier to track, right?

On the other hand, it would be nice to properly hide/disable this functionality in pods so maybe we can make this issue about that?

👍   That's the motivation.  Raise the issue, determine what we want to do and open issues for the things we intend to do.
We can close this and link to the official "disable this functionality in pods frontend/backend issues".
I'll be looking at more of them and opening others along the same lines... it can go in manageiq-pods but it's really regarding code in core and whether it's supposed to be supported in pods and if not, how we'll disable it so pods cannot run it.  Again, we can raise it here and do the ultimate fixes in other repos.

My comment was more about finding/tracking the issues in this repo that are pods-specific. Maybe a label would be better then?
Purple core/pods perhaps?

Yeah, I agree, a generic core/pods label seems appropriate so these issues are easier to track.

Okay, @Fryguy should I just add the label manually or do you have a special list somewhere?

I only have a script for common labels (non-purple), but I went ahead and added core/pods here manually.

:+1: Thanks


Update the links for reporting issues

What
Update the links for reporting issues.
Why

Something went wrong with PR preview build please check


feat:  experiment with bitnami/mysql as base

The Issue

#5468

This is a very early and rough experiment with using bitnami/mysql as the upstream for mysql 8.0 and 8.2 (and 5.7)
I got an 8.0 to build. I'm not sure whether or not this will work out in the end or not. I'm only making a PR so I'll be able to find my way back to it in the future.
How This PR Solves The Issue
Manual Testing Instructions
Automated Testing Overview

Related Issue Link(s)
Release/Deployment Notes

Right now the problem I'm having is that they don't use /var/lib/mysql. Instead they use /bitnami/mysql.
The environment variables specified in https://hub.docker.com/r/bitnami/mysql/ are not necessarily there at all.
Options include a hard link ln /opt/bitnami/mysql /var/lib/mysql

This remains a good idea, but we won't be doing non-LTS MySQL at this point.
It's also my understanding that VMWare (owner of Bitnami) is in quite some disruptive state right now, it's possible we should watch for a little while to see if Bitnami gets proper maintenance.
The one problem is that we have missed the window of capturing MySQL 8.0.35 arm64 from the Ubuntu build, as it's moved on to 8.0.36, but xtrabackup is still at 8.0.35. That means we're stuck with the same 8.0.34 we have in DDEV v1.22.7 for DDEV v1.23.0 unless Percona suddenly catches up with a new release of Xtrabackup.


npm install task is running iOS tests

A snippet of my log when running npm install on this project
><EMAIL_ADDRESS>install /Users/malugus/Code/appium-android-driver/node_modules/fsevents
> node-pre-gyp install --fallback-to-build

[fsevents] Success: "/Users/malugus/Code/appium-android-driver/node_modules/fsevents/lib/binding/Release/node-v47-darwin-x64/fse.node" is installed via remote

><EMAIL_ADDRESS>install /Users/malugus/Code/appium-android-driver/node_modules/ios-webview-app
> node -e "require('grunt').tasks(['default']);"

Running "cleanAll" task

Running "clean:iphonesimulator9.2" (clean) task

Running "clean:iphoneos9.2" (clean) task

Running "buildAll" task

Running "build:iphonesimulator9.2" (build) task
Building app...done building ios app for idk iphonesimulator9.2
Running "build:iphoneos9.2" (build) task
Building app...>> Failed building app
>> Build settings from command line:
>>     SDKROOT = iphoneos9.2
>>
>> === BUILD TARGET WebViewApp OF PROJECT WebViewApp WITH THE DEFAULT CONFIGURATION (Release) ===
>>
>> Check dependencies
>> Code Sign error: No code signing identities found: No valid signing identities (i.e. certificate and private key pair) were found.
>>
>> ** BUILD FAILED **
>>
>>
>> The following build commands failed:
>> 	Check dependencies
>> (1 failure)

Running "renameAll" task

><EMAIL_ADDRESS>install /Users/malugus/Code/appium-android-driver/node_modules/ios-uicatalog
> node -e "require('grunt').tasks(['default']);"

Running "cleanAll" task

Running "clean:iphonesimulator9.2" (clean) task

Running "clean:iphoneos9.2" (clean) task

Running "buildAll" task

Running "build:iphonesimulator9.2" (build) task
Building app...done building ios app for idk iphonesimulator9.2
Running "build:iphoneos9.2" (build) task
Building app...>> Failed building app
>> Build settings from command line:
>>     SDKROOT = iphoneos9.2
>>
>> === BUILD TARGET UICatalog OF PROJECT UICatalog WITH THE DEFAULT CONFIGURATION (Release) ===
>>
>> Check dependencies
>> Code Sign error: No code signing identities found: No valid signing identities (i.e. certificate and private key pair) were found.
>>
>> ** BUILD FAILED **
>>
>>
>> The following build commands failed:
>> 	Check dependencies
>> (1 failure)

Running "renameAll" task

><EMAIL_ADDRESS>install /Users/malugus/Code/appium-android-driver/node_modules/ios-test-app
> ./build-js/install.js

info iOSTestApp cleaning apps
dbug iOSTestApp cleaning app for iphonesimulator9.2
dbug iOSTestApp cleaning app for iphoneos9.2
info iOSTestApp finished cleaning apps
info iOSTestApp building apps
dbug iOSTestApp building app for iphonesimulator9.2
dbug iOSTestApp building app for iphoneos9.2
ERR! iOSTestApp Error: Command 'xcodebuild -sdk iphoneos9.2' exited with code 65
ERR! iOSTestApp     at ChildProcess.<anonymous> (lib/teen_process.js:56:19)
ERR! iOSTestApp     at emitTwo (events.js:100:13)
ERR! iOSTestApp     at ChildProcess.emit (events.js:185:7)
ERR! iOSTestApp     at maybeClose (internal/child_process.js:827:16)
ERR! iOSTestApp     at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)
ERR! iOSTestApp  { [Error: Command 'xcodebuild -sdk iphoneos9.2' exited with code 65]
ERR! iOSTestApp   stdout: 'Build settings from command line:\n    SDKROOT = iphoneos9.2\n\n=== BUILD TARGET TestApp OF PROJECT TestApp WITH THE DEFAULT CONFIGURATION (Release) ===\n\nCheck dependencies\nCode Sign error: No code signing identities found: No valid signing identities (i.e. certificate and private key pair) were found.\n\n',
ERR! iOSTestApp   stderr: '** BUILD FAILED **\n\n\nThe following build commands failed:\n\tCheck dependencies\n(1 failure)\n',
ERR! iOSTestApp   code: 65 }
info iOSTestApp finished building apps
info iOSTestApp renaming apps
WARN iOSTestApp could not rename apps
ERR! iOSTestApp Error: ENOENT: no such file or directory, rename '/Users/malugus/Code/appium-android-driver/node_modules/ios-test-app/build/Release-iphoneos/TestApp.app' -> '/Users/malugus/Code/appium-android-driver/node_modules/ios-test-app/build/Release-iphoneos/TestApp-iphoneos.app'
ERR! iOSTestApp     at Error (native)
ERR! iOSTestApp  { [Error: ENOENT: no such file or directory, rename '/Users/malugus/Code/appium-android-driver/node_modules/ios-test-app/build/Release-iphoneos/TestApp.app' -> '/Users/malugus/Code/appium-android-driver/node_modules/ios-test-app/build/Release-iphoneos/TestApp-iphoneos.app']
ERR! iOSTestApp   cause:
ERR! iOSTestApp    { [Error: ENOENT: no such file or directory, rename '/Users/malugus/Code/appium-android-driver/node_modules/ios-test-app/build/Release-iphoneos/TestApp.app' -> '/Users/malugus/Code/appium-android-driver/node_modules/ios-test-app/build/Release-iphoneos/TestApp-iphoneos.app']
ERR! iOSTestApp      errno: -2,
ERR! iOSTestApp      code: 'ENOENT',
ERR! iOSTestApp      syscall: 'rename',
ERR! iOSTestApp      path: '/Users/malugus/Code/appium-android-driver/node_modules/ios-test-app/build/Release-iphoneos/TestApp.app',
ERR! iOSTestApp      dest: '/Users/malugus/Code/appium-android-driver/node_modules/ios-test-app/build/Release-iphoneos/TestApp-iphoneos.app' },
ERR! iOSTestApp   isOperational: true,
ERR! iOSTestApp   errno: -2,
ERR! iOSTestApp   code: 'ENOENT',
ERR! iOSTestApp   syscall: 'rename',
ERR! iOSTestApp   path: '/Users/malugus/Code/appium-android-driver/node_modules/ios-test-app/build/Release-iphoneos/TestApp.app',
ERR! iOSTestApp   dest: '/Users/malugus/Code/appium-android-driver/node_modules/ios-test-app/build/Release-iphoneos/TestApp-iphoneos.app' }

><EMAIL_ADDRESS>install /Users/malugus/Code/appium-android-driver/node_modules/appium-chromedriver
> node install-npm.js

These aren't tests, it is trying to build the test apps. We have not yet had time to conditionally install them.


Let users connect to Alby directly from the Web UI

Alby is already part of the CONNECT section if you log into the RaspiBlitz via SSH.
It would be great if users have the chance to connect to Alby directly via the new Web UI.
The new addAccounts() APIs make that possible and allow users to programmatically add accounts to Alby.
You can find the docs over here: https://guides.getalby.com/alby-extension-apis/
Albys extension APIs are provided via the window.alby object (very much like WebLN). You don't need to add any dependencies or packages to your project.
The user is forwarded to getalby.com if the hasn't installed Alby yet.

Heyhey, does this duplicate #207 ?

It is a more user friendly way to connect Alby: No need to c/p macaroons anymore.

https://github.com/fusion44/blitz_api/pull/86 seems to provide the necessary data: macaroon and REST API host.

Shall we close https://github.com/cstenglein/raspiblitz-web/issues/207 and use this issue for the discussion. We basically don't need a UI anymore except a button as shown in the demo on: https://guides.getalby.com/alby-extension-apis/

What can a non-developer like me do to help?

@MoritzKa have a look at #640

LND connext is merged. CLN could be done later after open points are solved.


AttributeError

Expected Behavior
Bot should start
Actual Behavior
AttributeError is being thrown
Steps to Reproduce
??
Other Information
OS: OS X
Git Commit:
I am getting this error as soon as I run "python pokecli.py --config config.json"
Traceback (most recent call last):
File "pokecli.py", line 361, in
main()
File "pokecli.py", line 349, in main
bot.start()
File "/Users/umanghome/MAMP/www/OpenPoGoBot/pokemongo_bot/init.py", line 70, in start
self._setup_api()
File "/Users/umanghome/MAMP/www/OpenPoGoBot/pokemongo_bot/init.py", line 142, in _setup_api
password=self.config.password, shared_lib=self.config.load_library)
File "/Users/umanghome/MAMP/www/OpenPoGoBot/api/init.py", line 26, in init
self._api.activate_signature(shared_lib)
File "/Users/umanghome/MAMP/www/OpenPoGoBot/env/src/pgoapi/pgoapi/pgoapi.py", line 89, in getattr
raise AttributeError
AttributeError
The config.json file is updated from config.json.example to reflect new attributes, I have kept encrypt.c, encrypt.o, libencrypt.so, libencrypt-darwin.so in /lib as well as /pokemongo_bot directories.

Fixed it with pip install -r requirements.txt, getting a new error #218


Support for SteamGridDB scraping

Thanks for your great launcher. This is simply the best currently available for Android :)
Could you please add the SteamGridDB as database for scraping images? This is now a huge library of retro games as well, as it is used for the Steam Deck. For example, RPG Maker games that are otherwise not found are also included here.

Hello. I've looked into the site you've mentioned. It is decent however. It lacks of some features that Dai required.

Unified aspect ratio for each platform.
A search function that can filtered by each platform.

Thanks for the answer. You're right, there is only one aspect ratio for each media type since they were created for Steam. It is also only possible to search for games and then for a game the respective media types. There are no other platforms as far as I can see.
Therefore, this would probably have to be a separate scraper that can be used for all systems. The images would be scaled or cropped. Unless you set a different apsect ratio once SteamGridDb is used.
By the way, here are the resolutions of each type: https://www.steamgriddb.com/upload

https://github.com/TapiocaFox/Daijishou/issues/501


TS-4313: Fix improper type conversion

https://issues.apache.org/jira/browse/TS-4313

Nice catch! +1. I think we should mark this as a possibly back port to 6.1.2 as well.
Do you know if this bug is in 5.3.x as well? If so, it likely should go there as well.

ptrdiff_t is the right type for pointer arithmetic.
That said, I don't really understand the problem here. If field is not in the MIMEFieldBlockImpl you are scanning, then the pointer arithmetic is not valid in the first place. For the pointer arithmetic to overflow 32bits, the distance between the pointers would need to be 2^32 * sizeof(MIMEFieldBlockImpl), which seems unlikely.
A potential real problem here could be the compiler assuming that the comparison can't happen, since pointer arithmetic across different objects is not standards compliant, see here. To address this, I'd add MIMEFieldBlockImpl::contains(MIMEField*),
int
mime_hdr_field_slotnum(MIMEHdrImpl *mh, MIMEField *field)
{
  int slots_so_far;
  MIMEFieldBlockImpl *fblock;

  slots_so_far = 0;
  for (fblock = &(mh->m_first_fblock); fblock != NULL; fblock = fblock->m_next) {
    if (block->contains(field)) {
        MIMEField *first = &(fblock->m_field_slots[0]);
        ptrdiff_t block_slot = field - first; // in units of MIMEField
        return (slots_so_far + block_slot);
    }

    slots_so_far += MIME_FIELD_BLOCK_SLOTS;
  }
  return -1;
}

Can you think of a way to write tests for this?

@jpeach
I added some codes for debug and got these output. The rare case is happening.
(I built with --enable-debug and ASAN using clang on OSX.)
Output:
mime_hdr_set_accelerators_and_presence_bits(hdr 0x61d0001ab908, field 0x6250001aba98): &(mh->m_first_fblock.m_field_slots[0]) = 0x61d0001ab958
(int)(field - &(mh->m_first_fblock.m_field_slots[0])) = 0xA
(long)(field - &(mh->m_first_fblock.m_field_slots[0])) = 0x40000000A
(ptrdiff_t)(field - &(mh->m_first_fblock.m_field_slots[0])) = 0x40000000A
mime_hdr_field_slotnum(hdr 0x61d0001ab908, field 0x6250001ab998): first = 0x61d0001ab958
(int)(field - first) = 0x2
(long)(field - first) = 0x400000002
(ptrdiff_t)(field - first) = 0x400000002

Debug code1:
if ((int)(field - &(mh->m_first_fblock.m_field_slots[0])) >= 0 && (int)(field - &(mh->m_first_fblock.m_field_slots[0])) < MIME_FIELD_SLOTNUM_UNKNOWN && slot_num > UINT_MAX) {
  fprintf(stderr, "mime_hdr_set_accelerators_and_presence_bits(hdr %p, field %p): &(mh->m_first_fblock.m_field_slots[0]) = %p\n", mh, field, &(mh->m_first_fblock.m_field_slots[0]));
  fprintf(stderr, "(int)(field - &(mh->m_first_fblock.m_field_slots[0])) = 0x%X\n", (int)(field - &(mh->m_first_fblock.m_field_slots[0])));
  fprintf(stderr, "(long)(field - &(mh->m_first_fblock.m_field_slots[0])) = 0x%lX\n", (long)(field - &(mh->m_first_fblock.m_field_slots[0])));
  fprintf(stderr, "(ptrdiff_t)(field - &(mh->m_first_fblock.m_field_slots[0])) = 0x%tX\n", (ptrdiff_t)(field - &(mh->m_first_fblock.m_field_slots[0])));
}

Debug code2:
if ((int)(field - first) >= 0 && (int)(field - first) < MIME_FIELD_BLOCK_SLOTS && block_slot > UINT_MAX) {
  fprintf(stderr, "mime_hdr_field_slotnum(hdr %p, field %p): first = %p\n", mh, field, first);
  fprintf(stderr, "(int)(field - first) = 0x%X\n", (int)(field - first));
  fprintf(stderr, "(long)(field - first) = 0x%lX\n", (long)(field - first));
  fprintf(stderr, "(ptrdiff_t)(field - first) = 0x%tX\n", (ptrdiff_t)(field - first));
}

However the problem doesn't seems to be caused by the optimization, adding MIMEFieldBlockImpl::contains(MIMEField*) is a good idea. It's readable and reusable. I'll add it.
As for the tests, I had no idea. I came across the bug while I was testing HPACK, which just uses a MIMEHdr heavily. It may be possible to write tests for MIMEFieldBlockImpl::contains(MIMEField*). The test would be:

Create a mime field
Add 2^32 to the pointer of the mime field
Pass the modified pointer to contains()
Check if the result is false

@zwoop
The type conversions are in the initial commit on the git repo, so I think all versions should affect.

Oh interesting. It looks like the pointers are ~500GB apart, so that certainly confirms the problem you found! I wonder if that is specific to the ASAN virtual address space?
Anyway, it sounds like we agree on adding  MIMEFieldBlockImpl::contains(MIMEField*) ... sounds great :)

I've added contains() and tests for this.
@jpeach Can you review them?


Sample to get iteration by dates

Sample to get iteration by dates

Added sample see https://github.com/Microsoft/vsts-dotnet-samples/pull/158