text:
EIP1102 support

Story
As a user, I need to first approve a website before a dapp can access my wallet data in order to prevent unauthorized websites from phishing and spoofing attempts.
Background / reasoning

EIP1102 specifies that account info should only be revealed to dapps once the user approves.
The Safe already has a whitelisting feature. A user has to manually whitelist a page before the browser extension injects data into the web page.
We should not require the user to first hit the Safe whitelisting-toggle before they have to additionally approve a page. This would make the current flow even more complicated. We should try to prevent that.
We specifically introduced our kind of whitelisting, so the dapp would not know at all that the Safe is installed. This decision was made due to security concerns.

Task

Let's keep the current whitelisting logic.
Once the user has whitelisted a page, auto-approve the website's EIP1102-access-request. So the user would not need to additionally approve it as well.

cc @germartinez @rmeissner @biocom

Hey @samparsky
We are happy to see your participation in this project. @germartinez is our primary developer on this project and coordinates all work on it.
Just as a short summary: For this issue we are actually not planning to do any changes to the UI. We will add support for for injecting our provider into the global ethereum variable and add the method enable that will actually always directly return true, since our whitelisting is handled prior to injection.

Implemented here: https://github.com/gnosis/safe-browser-extension/pull/93

authors: germartinez rmeissner tschubotz

repo: gnosis/safe-browser-extension


text:
Issues confirming Tx (WalletConnect w/ Trust Wallet)

Bug report from user:
I am currently trying to use the team safe with wallet connect + trust wallet.
I could connect the wallet and I could trigger a tx request. However when I submitted the tx on trustwallet nothing happened.
In the team safe I found those error messages on the console
Environment:
Production Mainnet, using Trust Wallet through Walletconnect

@lukasschor, these are my findings so far:

422 unprocessable entity, I wasn't able to reproduce. A log from the backend service would be really helpful. This was caused by calling: https://safe-relay.gnosis.io/api/v1/tokens/?limit=300
404 requesting transactions. This is, from my perspective, an invalid error. As the backend returns data but triggers the 404 error if there's no tx available. You can check in the screenshot for https://safe-transaction.mainnet.gnosis.io/api/v1/safes/0x731655E58d4d8A504d8553db28B2fCDA4a69de82/transactions/ :

In regard to Trust/WalletConnect, I was able to connect but when tried to make a transfer from the safe to another account I get the following in the trust wallet:

On the other hand, using Nifty I was able to submit the tx:

My hunch is that there's something wrong in the payload it's being sent to the Trust Wallet. But as I don't know much about WalletConnect maybe one of the devs that worked on its implementation can give me a better insight.
In the meantime, I'll have a look at the docs/implementation.

I'm removing myself from the 'assignee'

We should take another look at this issue as we have quite some users complaining about not being able to sign with Trust. If we conclude that this is an issue on the side of the Trust wallet, please notify the Trust team so they can take a look.

@tschubotz I think this issue can be fixed when this PR https://github.com/gnosis/safe-react-apps/issues/49 is merged. If wallet-connect receives a method different than eth_sendTransaction we reject the request, as far as I understand if the DApp handles the rejection correctly the users won't have problems.

@nicosampler are you sure? In WalletConnect, there are 2 sides: Wallet and dapp.
The linked PR is about the Safe being the Wallet. However in the issue with Trust, the Safe is the dapp. So I think that's a different case, no?
(The underlying issue of not handling eth_ call correctly might be the same though.

@tschubotz you right, sorry.

Sending funds transaction worked perfectly today. Experienced random issues until today and multiple Trust Wallet apps later for basic operation it works.
Once I even got the message of 'invalid network', other days I got simply console errors.
Nothing changed from our side to get this result except updating Trust Wallet app to an stable version
Currently for Android v1.19.15

@tschubotz test this on iOS

I just tested with iOS 5.3 (5313) and I was able to sign off chain as well as execute txs without any problems. -> Closing

source: gharchive/issue

authors: dasanra fernandomg lukasschor nicosampler tschubotz

repo: gnosis/safe-react

license: MIT

license_type: permissive

license_source: github-api


text:
Switch networks

What is this feature about? (1 sentence)
This feature will allow to switch to different versions of the Gnosis Safe web interface from the interface itself.
Why is it needed? What is the value? For whom do we build it?

We currently support the following production environments:

https://gnosis-safe.io/app
https://rinkeby.gnosis-safe.io/app
https://xdai.gnosis-safe.io/app
https://volta.gnosis-safe.io/app (soon)
https://ewc.gnosis-safe.io/app (soon)

The different environments are hard to find. We link mainnet and Rinkeby from our landing page, but not the other ones.
We get regular requests via Intercom, where they can find a testnet version.
Of course, long term we should add link on the landing page (gnosis-safe.io/), but users seems to expect it on the dapp itself.

High-level overview of the feature

Switching networks should switch between the different Safe subdomains.
Switching networks should be possible no matter if a wallet is connected or not.

Updates

Oct 28, Tobi: Add more context info.

Proposal / idea

Clicking on the network label opens a dropdown where another network can be chosen.

What is the expected behavior behind this requirement?

Shall we switch subdomains when switching networks? (from gnosis-safe.io to rinkeby.gnosis-safe.io)
Can we programmatically switch the wallets RPCs?

Yes, a first implementation could just switch subdomains.

@posthnikova this is another upcoming feature on web that requires (probably rather simple) design :)

Can we programmatically switch the wallets RPCs?

I would not do this as a first approach. I would do a hard redirect instead (page reload)

I think it makes sense to remove network info from the wallet dropdown because it indicates the network of the interface and not the wallet. There will be two dropdowns. Network switches when you tap on the list item in the dropdown.

authors: fernandomg lukasschor nicosampler posthnikova tschubotz


text:
🛑 Beacon Explorer is down

In de394f6, Beacon Explorer (https://beacon.chiadochain.net/) was down:

HTTP code: 502
Response time: 23895 ms

Resolved: Beacon Explorer is back up in f46734e after 3 hours, 33 minutes.

repo: gnosischain/chiado-uptime


text:
🛑 Explorer is down

In e45a2fd, Explorer (https://blockscout.chiadochain.net/) was down:

HTTP code: 503
Response time: 199 ms

Resolved: Explorer is back up in fb5ccd1.


text:
Quotes appearing in the GUI in french

Gitea version (or commit ref): 1.1.0

Description
Here is what I get in the GUI

There are "
Here is what there is into the translations

There is no "
There are quite a lot of places where " or ' or ` are added in the string, dunno why. Any idea?
Thks

Switching language to EN or ES: all the double quotes " disappear. So it seems to be related to the french translation

Same problem in German translation. Seems to be related to #1181

and should be fixed in #1177

authors: Dodger77 axeloz lunny

repo: go-gitea/gitea


text:
Can the repository name support UTF-8 names? i.e. Chinese

Can the project name support Chinese?
Many projects are difficult to translate into English, and many people around us are not very good at English. I hope the project name can support Chinese or UTF-8

Can the project name support Chinese?
Many projects are difficult to translate into English, and many people around us are not very good at English. I hope the project name can support Chinese or UTF-8

I have to say there is some technical problem need to be resolved. First, the repository store struct. Now we use repository name as a directory name, a UTF-8 name may cause some problems on different OS.
If you cannot read English document, it's amazing you could work as a programmer nowadays. So I think it's not reasonable. And you can also use many translation sites to do that.

Duplicate: #13295, which was marked as wontfix

https://github.com/go-gitea/gitea/issues/13295

authors: dxf1122 lunny wxiaoguang


text:
Allow force pushing to protected branch

Feature Description
At this point you can only force push when a branch is not protected.
Once a branch is protected, it can be limited like this:

no pushes
all with write access can push
only white-listed users can push

Under option 3 (next to "Whitelist deploy keys..."), I would like an additional check box: "Allow force pushing by whitelisted users"

Screenshots
No response

Bump, I have a workflow where I revert a squash commit if some CI tests fail, and I am unable to push normally (because the tip is behind the remote counterpart), and cannot force push due to branch protection.
Add a checkbox to also allow force push

TY @lunny, would also just suggest (the original proposal could seem a bit ambiguous) that whitelisted deploy keys should have access to force push, as well as whitelisted users (if this is a common workflow for CI, then it is likely people are using SSH/Deploy keys for their git creds).

Setting in gh:

I'd like to implement this feature. Will open a PR for this soon.

@sebastian-sauer just wondering if you were still going with this? I might have a crack if stale

How about something like this?

I'm just going to start implementing above and make any changes based on PR feedback 👍

Looking forward to this, I have to force push rarely but it's annoying to have to rename a rule to do it and rename it back after it's pushed every time.

PR is raised now, note the UI isn't precisely what I originally had in mind, due to how the template handles the logic, and it was a lot easier to implement in a similar fashion to the Push section. Regardless, it should still function as expected

The proposed change is the only way to have functional feature branches that enforce signed commits. I would love to see this fixed. (the signed commit requirement is exclusive to protected branches...)

authors: SoulSeekkor Urth henrygoodman sebastian-sauer timbze


text:
Already reviewed PRs are still listed on "Pull Requests" page

Description
After reviewing PRs are still listed on "Pull Requests" -> "Review requested" page.
Before 1.20.4 only waiting to review PRs were listed on this page.
Reproduced on try.gitea.io
Gitea Version
1.20.4
Can you reproduce the bug on the Gitea demo site?
Yes
Log Gist
No response
Screenshots

Git Version
No response
Operating System
Debian 11
How are you running Gitea?
Selfhosted on Debian 11 + Gitea 1.20.4 + Nginx(for SSL) + PostgreSQL
Database
PostgreSQL

@lng2020 When this issue will be fixed? There is no milestone attached to this issue.

@lng2020 When this issue will be fixed? There is no milestone attached to this issue.

I've merged several PRs to refractor the unit test about issues recently in order to solve the continuous bugs in the issue overview page. I will make a PR to fix this one tomorrow. Sorry for the delay😢


text:
Commits in the dashboard don't show signatures

Description
If a commit is signed, it will not be shown as signed in the dashboard.
Steps to reproduce:

Add a GPG key to your account if it is not added already
Push a signed commit to a repository
It won't be shown as signed in the dashboard

Screenshots
As you can see on this screenshot, the commit is shown as unsigned:

But it is actually signed

I have expected it to show like it is shown in the commit history (with the green badge):

Gitea Version
I am running the docker tag "gitea/gitea:1.21.3": 1.21.3 built with GNU Make 4.4.1, go1.21.5 : bindata, timetzdata, sqlite, sqlite_unlock_notify. The server's linux version is 6.4.12-arch1-1
Can you reproduce the bug on the Gitea demo site?
I can, but I don't want to. The issue is pretty straightforward and can be confirmed by any gitea user that signs their commits
Operating System
I am running Arch on linux 6.7.9-arch-1 x86
Browser Version
I use Firefox Nightly, however it is not a browser specific issue since it doesnt have the CSS classes for that

While the issue is accurate, I don't think we should do it there as per https://github.com/go-gitea/gitea/issues/29641.

duplicate #28281


text:
Dashboard does not show repositories for user

Gitea version (or commit ref): 1.4.0 installed from binary d/l
Git version: 2.11.0
Operating system: Debian 9 amd 64
Database (use [x]):

[ ] PostgreSQL
[ ] MySQL
[ ] MSSQL
[X] SQLite

Can you reproduce the bug at https://try.gitea.io:

[ ] Yes (provide example URL)
[X] No
[ ] Not relevant

Log gist:

Description
I have several organizations with repos and a user with repos. On Dashboard page the organization repos show up properly, but the personal repo count is '0', although there are several repos present.
I created private repo on try.gitea.io. When I go to dashboard it properly shows one repo in Dashboard.
Is this a bug in 1.4.0 or some issue with my settings or install?

...
Screenshots

I built gitea commit d877bf7e, now reports as Gitea Version: 1.1.0+1126-gd877bf7e, and issue remains the same.

@adilinden Hi.

Can you open any "missing" repo?
Do you see your repos in "Explore" page?
Any logs from gitea?
How you run gitea (docker container or directly)?
Can you check response of "repo widget" api call (F12 -> "network" tab -> "search?uid=.....") in your browser?

Hi @Morlinest,
Yes, everything is there. I run Gitea directly. But on my firewall I run haproxy as the port is used for multiple different backend servers. On the Gitea server itself I run nginx as a reverse proxy to provide SSL with Gitea bound to localhost:3000 only.
Having me look at api call lead me to identify the source of the issue. On the haproxy I have /api directed to the wrong backend, resulting in /api not being available from the outside. When accessed from my local network, directly accessing nginx without haproxy, all is fine.
That solves this mystery - my confusion resulted from me accessing the server from different location. Plus as I am a frequent user of VPN for remote access, whether VPN was engaged also changed the behaviour....
Perhaps this allows me to dig into the next quest I am on, extending the repositories list to more then 15 repos. I'd like to see all repos that a user has access to in a single list, across all orgs and users. I see that the widget call to the api included a limit of 15.
That resolves this!
Thanks,
Adi

@adilinden Great you found the problem and solved it :).
Right now, to increase number of searched repos you can

set setting.UI.User.RepoPagingNum in app.ini (probably best way, but can affect another pages too)
or create own template templates/base/head.tmpl and change <meta name="_search_limit" content="{{.SearchLimit}}" /> (e.g. <meta name="_search_limit" content="100" />).
or create own template templates/user/dashboard/dashboard.tmpl with custom :search-limit="searchLimit" (e.g. :search-limit=100).

I think this issue can be closed as problem was solved and it was not gitea related problem anyway.

authors: Morlinest adilinden


text:
Labels API does not work

Gitea version (or commit ref): Go1.11.5
Database (use [x]):

[] PostgreSQL
[x] MySQL
[ ] MSSQL
[ ] SQLite

Can you reproduce the bug at https://try.gitea.io:

[x] Yes (provide example URL)
[ ] No
[ ] Not relevant

Description
The labels endpoints are not working as expected
 GET /repos/{owner}/{repo}/issues/{index}/labels
Always return an epmty array
POST, PUT, DELETE /repos/{owner}/{repo}/issues/{index}/labels
Always returns a 401 status code, but I correctly setted the credentials

Link to reproduce: https://try.gitea.io/api/v1/repos/ttttttttttttttt/ttttttttttttttt/issues/1/labels

Yes, there is actually a bug with fetching labels of an issue. I have sent PR https://github.com/go-gitea/gitea/pull/6053 for that
I cannot replicate the 401 as it goes through on my end here.
Can I see how you are authorizing the request?

I was using basic authorization header in the swagger UI, with token authentication seems to work.
Maybe I'm misspelling the password or something. :man_shrugging:

@rayitopy I will guess it's your password that is wrong:). Since #6053 has been merged, is there any more thing to do on this issue?

closing as resolved. please re-open if needed.

authors: Larivact adelowo rayitopy techknowlogick


text:
API repos search should return private repos of that user

Gitea version (or commit ref): 594f59169

Description
Hello and thank you very much for your work on gitea!
I think that similarily to  #5310, GET /repos/search should return the private repos that the logged in user has access to. Currently only when you add uid=$CURRENT_USER_ID can you see the private repos (but then you don't see other people repos).
Changing this would make it behave more like the current /explore/repos non-api endpoint.

Isn't that fixed by #5383 ?

No, unless I am missing something. I am testing on latest master (v1.7.0-dev-241-g594f59169). I guess it only fixed it for /orgs/:org/repos not /repos/search.

I can confirm that this is still an issue and affects the organisation view on the dashboard.

@zeripath Could you clarify how it affects the organisation view on the dashboard? I had a look but couldn't find anything wrong there.

OK, log in as arandomer2@mailinator.com with the same password on to http://try.gitea.io
arandomer2 has read access to TestOrgAnother, although TestOrgAnother/private-test-repository appears on arandomer2 dashboard take a look at:
https://try.gitea.io/org/TestOrgAnother/dashboard

Ah I see, Is that an experimental page or something? I am not even sure how to even get there through the UI.

It's supposed to give you the newsfeed for that organisation context. The + repository button would allow you to create a repository in that organisation by default if you're allowed to create repositories for that organisation.

I don't think you're supposed to see the organisation repos in the right hand box unless you're in the organisation context either

I think this is finally fixed by #6897 in 1.9

authors: kasbah lunny zeripath


text:
Fix timezone on issue deadline

Fixes https://github.com/go-gitea/gitea/issues/11686
Closes https://github.com/go-gitea/gitea/pull/11688
Ensures that deadline is saved in server's timezone, not UTC.

Can we keep the format change to YYYY-MM-DD? I don't like this inconsistency in the date formats.
// FormatDate formats a date in YYYY-MM-DD server time zone
func (ts TimeStamp) FormatDate() string {
  return time.Unix(int64(ts), 0).String()[:10]
}

And use that instead of formatShort in templates/repo/issue/view_content/sidebar.tmpl.

Done

I think this fixes some other date based bugs too but I don't have the issue numbers to have

@CirnoT please send backport :)

source: gharchive/pull-request

authors: CirnoT silverwind techknowlogick zeripath


text:
Exposes in API the Repo entity's Size and IsBare property

exposes IsBare as Empty
exposes Size

LG-TM depends on https://github.com/go-gitea/go-sdk/pull/56

@guyzmo You need to update the vendoring :) govendor fetch code.gitea.io/sdk should do it

@guyzmo Update Gitea SDK to latest version with command govendor fetch code.gitea.io/sdk/gitea

done

LGTM

LGTM

authors: bkcsoft guyzmo lafriks sapk


text:
Add work wechat webhook

new feature: send events to work wechat group
unit test done list

create new work wechat webhook
edit this webhook
push a commit, wechat group received this event

work flow:

this command can get access token

get CORP_ID from https://work.weixin.qq.com/wework_admin/frame#profile
get APP_SECRET from your corporation app profile /wework_admin/frame#apps/modApiApp/
curl -X GET \
  'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=CORP_ID&corpsecret=CORP_APP_SECRET'

{
    "errcode": 0,
    "errmsg": "ok",
    "access_token": "",
    "expires_in": 7200
}

and create your bot group 'gitea'

curl -X POST \
  'https://qyapi.weixin.qq.com/cgi-bin/appchat/create?access_token=ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "name" : "Gitea",
    "owner" : "XiaoMing",
    "userlist" : ["XiaoMing","XiaoHong"],
    "chatid" : "gitea"
}'

then we go to add new work wechat hook with access_token and chatid on gitea

TargetURL:https://qyapi.weixin.qq.com/cgi-bin/appchat/send?access_token=ACCESS_TOKEN
Chat ID: gitea

Codecov Report

Merging #5252 into master will decrease coverage by 0.34%.
The diff coverage is 1.16%.

@@            Coverage Diff             @@
##           master    #5252      +/-   ##
==========================================
- Coverage   37.62%   37.28%   -0.35%
==========================================
  Files         310      311       +1
  Lines       46042    46469     +427
==========================================
+ Hits        17322    17324       +2
- Misses      26241    26666     +425
  Partials     2479     2479

Impacted Files
Coverage Δ

models/webhook_workwechat.go
0% <0%> (ø)

modules/auth/repo_form.go
38.23% <0%> (-0.77%)
:arrow_down:

routers/repo/webhook.go
1.54% <0%> (-0.23%)
:arrow_down:

models/webhook.go
66.33% <0%> (-2.39%)
:arrow_down:

routers/api/v1/convert/convert.go
68.83% <0%> (-1.84%)
:arrow_down:

routers/routes/routes.go
86.32% <100%> (+0.08%)
:arrow_up:

modules/setting/setting.go
48.31% <100%> (ø)
:arrow_up:

models/repo_list.go
63.29% <0%> (-1.27%)
:arrow_down:

Continue to review full report at Codecov.

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

Please resolve conflicts.

Please resolve conflicted files

@rocklau do you still work on this :( ?

Please resolve the conflicts.

@rocklau #9422 made some changes ... so It is worth looking at it ... (you have to resolve conflicts anyway)

@rocklau  I know this PR is old ... but do you still have passion to get it upstream?

authors: 6543 codecov-io lunny rocklau


text:
When mirroring we should set the remote to mirror

My fix in #6593 didn't set the mirrors to be mirrors for fetching, which appears to have broken mirroring.
When adding the remote we should --mirror=fetch to set the refs correctly.
Fix #6783

Codecov Report

Merging #6824 into master will increase coverage by <.01%.
The diff coverage is 0%.

@@            Coverage Diff             @@
##           master    #6824      +/-   ##
==========================================
+ Coverage   41.21%   41.21%   +<.01%
==========================================
  Files         421      421
  Lines       58118    58118
==========================================
+ Hits        23952    23955       +3
+ Misses      30993    30989       -4
- Partials     3173     3174       +1

Impacted Files
Coverage Δ

models/repo_mirror.go
23.65% <0%> (ø)
:arrow_up:

modules/log/event.go
64.46% <0%> (-1.53%)
:arrow_down:

routers/repo/view.go
43.03% <0%> (+1.01%)
:arrow_up:

models/unit.go
67.56% <0%> (+5.4%)
:arrow_up:

Continue to review full report at Codecov.

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

Please send backport

Can do that this evening in 10 hours time, but if wanted earlier feel free.

Backport made.

authors: codecov-io lafriks zeripath


text:
Fix /verify LFS handler expecting wrong content-type

According to spec,
verify requests have Content-Type: application/vnd.git-lfs+json
This doc also says:

Accept: application/vnd.git-lfs+json
Content-Type: application/vnd.git-lfs+json

I'm afraid I need someone from dev team to help with this, my Go skills are almost none.

Seems that tests fail after this change

Looking through the logs of CI it seems that the git client is having an error with new header, so perhaps even if we aren't using spec, then neither is git cli.

I'm not quite sure what's going on here.
https://github.com/git-lfs/git-lfs/blob/master/lfshttp/client.go#L140 says git-lfs is using "application/vnd.git-lfs+json" =/

Where does "application/vnd.git-lfs" come from at all? There is no such thing in git-lfs.

https://github.com/slonopotamus/gitea/blob/patch-1/modules/lfs/server.go#L388
this is the problem. you're telling client "hey, client, when you go to /verify, use "Accepts: application/vnd.git-lfs". BUUUT. LFS spec tells client to use "Accept: application/vnd.git-lfs+json". For native git-lfs client, your header overwrites header from spec. But this doesn't happen for java client I am using. Instead, it ends up having two Accept headers and you're only checking the first one.

Aaargh. I'll close this for now and open a bug instead.

I've reported this problem in #6960.

authors: lafriks slonopotamus techknowlogick


text:
I/O blocking

GORM Playground Link
https://github.com/go-gorm/playground/pull/618
Description
goroutine 1209713 [IO wait, 196 minutes]:
internal/poll.runtime_pollWait(0xffffb9728908, 0x72)
/usr/lib/go/src/runtime/netpoll.go:302 +0xa4
internal/poll.(*pollDesc).wait(0x4002b9a080?, 0x4001a40000?, 0x0)
/usr/lib/go/src/internal/poll/fd_poll_runtime.go:83 +0x2c
internal/poll.(*pollDesc).waitRead(...)
/usr/lib/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).Read(0x4002b9a080, {0x4001a40000, 0x1000, 0x1000})
/usr/lib/go/src/internal/poll/fd_unix.go:167 +0x1ec
net.(*netFD).Read(0x4002b9a080, {0x4001a40000?, 0x4002b9a080?, 0x4001e51310?})
/usr/lib/go/src/net/fd_posix.go:55 +0x2c
net.(*conn).Read(0x40033f41a8, {0x4001a40000?, 0x4001e513c8?, 0x1a3ae84?})
/usr/lib/go/src/net/net.go:183 +0x38
github.com/go-sql-driver/mysql.(*buffer).fill(0x4003b3c240, 0x4)
/usr/local/go/pkg/mod/github.com/go-sql-driver/mysql@v1.6.0/buffer.go:90 +0x250
github.com/go-sql-driver/mysql.(*buffer).readNext(0x4003b3c240, 0x4)
/usr/local/go/pkg/mod/github.com/go-sql-driver/mysql@v1.6.0/buffer.go:119 +0x34
github.com/go-sql-driver/mysql.(*mysqlConn).readPacket(0x4003b3c240)
/usr/local/go/pkg/mod/github.com/go-sql-driver/mysql@v1.6.0/packets.go:32 +0x74
github.com/go-sql-driver/mysql.(*mysqlConn).readResultSetHeaderPacket(0x4003b3c240?)
/usr/local/go/pkg/mod/github.com/go-sql-driver/mysql@v1.6.0/packets.go:538 +0x24
github.com/go-sql-driver/mysql.(*mysqlConn).query(0x4003b3c240, {0x4004833980?, 0x4000052290?}, {0x5411af8?, 0x4001e515f8?, 0x12238d4?})
/usr/local/go/pkg/mod/github.com/go-sql-driver/mysql@v1.6.0/connection.go:379 +0xbc
github.com/go-sql-driver/mysql.(*mysqlConn).QueryContext(0x4003b3c240, {0x38a4510, 0x4000052290}, {0x4004833980, 0x20}, {0x5411af8, 0x0, 0x0?})
/usr/local/go/pkg/mod/github.com/go-sql-driver/mysql@v1.6.0/connection.go:505 +0xa4
database/sql.ctxDriverQuery({0x38a4510?, 0x4000052290?}, {0xffffb97ff660?, 0x4003b3c240?}, {0x0?, 0x0?}, {0x4004833980?, 0x338b397?}, {0x5411af8?, 0x1223d54?, ...})
/usr/lib/go/src/database/sql/ctxutil.go:48 +0xb0
database/sql.(*DB).queryDC.func1()
/usr/lib/go/src/database/sql/sql.go:1759 +0x134
database/sql.withLock({0x3886a40, 0x4004022ab0}, 0x4001e518a8)
/usr/lib/go/src/database/sql/sql.go:3437 +0x80
database/sql.(*DB).queryDC(0x4001afad00?, {0x38a4510, 0x4000052290}, {0x0, 0x0}, 0x4004022ab0, 0x4001d4f700, {0x4004833980, 0x20}, {0x0, ...})
/usr/lib/go/src/database/sql/sql.go:1754 +0x16c
database/sql.(*DB).query(0x4001e51a38?, {0x38a4510, 0x4000052290}, {0x4004833980, 0x20}, {0x0, 0x0, 0x0}, 0x11?)
/usr/lib/go/src/database/sql/sql.go:1737 +0xc0
database/sql.(*DB).QueryContext(0x4001e51a78?, {0x38a4510, 0x4000052290}, {0x4004833980, 0x20}, {0x0, 0x0, 0x0})
/usr/lib/go/src/database/sql/sql.go:1710 +0xa0
database/sql.(*DB).Query(0x400287c680?, {0x4004833980?, 0x0?}, {0x0?, 0x40039486a8?, 0x11411d8?})
/usr/lib/go/src/database/sql/sql.go:1728 +0x54
github.com/jinzhu/gorm.queryCallback(0x400287c680)
/usr/local/go/pkg/mod/github.com/jinzhu/gorm@v1.9.11/callback_query.go:67 +0x58c
github.com/jinzhu/gorm.(*Scope).callCallbacks(0x400287c680, {0x4000b1f680, 0x3, 0xffffb9894bd0?})
/usr/local/go/pkg/mod/github.com/jinzhu/gorm@v1.9.11/scope.go:867 +0x8c
github.com/jinzhu/gorm.(*DB).Find(0x40006bcc30, {0x2d2d5a0?, 0x4003948678?}, {0x0, 0x0, 0x0})
/usr/local/go/pkg/mod/github.com/jinzhu/gorm@v1.9.11/main.go:351 +0x1f4
basicsrv/repository/mysql/autoprovision.(*HostExtension).Search(0x2eb6d00?, {0x386ec84, 0x1})
/home/new/M-1.11.X-release/pbxcore/gosrv/src/basicsrv/repository/mysql/autoprovision/hostextension.go:95 +0x1f0
basicsrv/astconfig.readExtensionConfig(0x4eb5c40)
/home/new/M-1.11.X-release/pbxcore/gosrv/src/basicsrv/astconfig/config.go:226 +0x694
basicsrv/astconfig.readFirstLoadConfig.func1()
/home/new/M-1.11.X-release/pbxcore/gosrv/src/basicsrv/astconfig/config.go:815 +0x5c
created by basicsrv/astconfig.readFirstLoadConfig
/home/new/M-1.11.X-release/pbxcore/gosrv/src/basicsrv/astconfig/config.go:813 +0xbc

How can your playground-linked PR be related to IO blocking?

May not be related to playground-linked PR, but io blocking is real

IO blocking is usually caused by transactions not being committed/rollbacked or rows not closed correctly

/home/new/M-1.11.X-release/pbxcore/gosrv/src/basicsrv/repository/mysql/autoprovision/hostextension.go:95 +0x1f0
As above hostextension.go:95, the query mysql table does not trigger things or rollback，But io is still blocked

IO blocking is usually caused by transactions not being committed/rollbacked or rows not closed correctly

IO blocking is 100% caused by those reasons, you can capture the goroutines pprof and find the blocking goroutine.

authors: jinzhu saeidee sunjvhui

repo: go-gorm/gorm


text:
Similar...oy

Fixed in v0.2.2

authors: albrow cranberryofdoom

repo: go-humble/router

license: mit

license_source: bigquery


text:
切换歌曲异常

系统：Manjaro
软件版本：4.0.3
使用快捷键切换歌曲就挂了

试试4.0.4

跟这个应该是同一个问题 #77

跟这个应该是同一个问题 #77

老哥，用最新代码编译的出现了新的问题

这是go-mp3的偶现bug，一直都有的 => https://github.com/hajimehoshi/go-mp3/issues/40

听了一上午没有复现

authors: ChenSino anhoder

repo: go-musicfox/go-musicfox


text:
User defined columns in Postgres

Hi,
It seems that user-defined columns are not support in postgres dialect. can be noice if xorg can support it
because I can not backup my database with it.
[xorm] [info]  2015/06/14 17:42:33.719688 [sql] SELECT column_name, column_default, is_nullable, data_type, character_maximum_length, numeric_precision, numeric_precision_radix ,
    CASE WHEN p.contype = 'p' THEN true ELSE false END AS primarykey,
    CASE WHEN p.contype = 'u' THEN true ELSE false END AS uniquekey
FROM pg_attribute f
    JOIN pg_class c ON c.oid = f.attrelid JOIN pg_type t ON t.oid = f.atttypid
    LEFT JOIN pg_attrdef d ON d.adrelid = c.oid AND d.adnum = f.attnum
    LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
    LEFT JOIN pg_constraint p ON p.conrelid = c.oid AND f.attnum = ANY (p.conkey)
    LEFT JOIN pg_class AS g ON p.confrelid = g.oid
    LEFT JOIN INFORMATION_SCHEMA.COLUMNS s ON s.column_name=f.attname AND c.relname=s.table_name
WHERE c.relkind = 'r'::char AND c.relname = $1 AND f.attnum > 0 ORDER BY f.attnum; [billing_events]
[xorm] [info]  2015/06/14 17:42:33.721043 [sql] SELECT indexname, indexdef FROM pg_indexes WHERE schemaname='public' AND tablename=$1 [billing_events]
[xorm] [info]  2015/06/14 17:42:33.725083 [sql] SELECT column_name, column_default, is_nullable, data_type, character_maximum_length, numeric_precision, numeric_precision_radix ,
    CASE WHEN p.contype = 'p' THEN true ELSE false END AS primarykey,
    CASE WHEN p.contype = 'u' THEN true ELSE false END AS uniquekey
FROM pg_attribute f
    JOIN pg_class c ON c.oid = f.attrelid JOIN pg_type t ON t.oid = f.atttypid
    LEFT JOIN pg_attrdef d ON d.adrelid = c.oid AND d.adnum = f.attnum
    LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
    LEFT JOIN pg_constraint p ON p.conrelid = c.oid AND f.attnum = ANY (p.conkey)
    LEFT JOIN pg_class AS g ON p.confrelid = g.oid
    LEFT JOIN INFORMATION_SCHEMA.COLUMNS s ON s.column_name=f.attname AND c.relname=s.table_name
WHERE c.relkind = 'r'::char AND c.relname = $1 AND f.attnum > 0 ORDER BY f.attnum; [service_auth_tokens]
2015/06/14 17:42:33 Error during Backup Postgres:  unkonw colType USER-DEFINED

Thanks

Yes, it's still not defined.

Can you prioritize it  ?

OKay. I will learn postgres USER-DEFINED feature first. Any document do you know about that?

http://www.sqlines.com/postgresql/how-to/create_user_defined_type

repo: go-xorm/xorm


text:
Do i have to install babel-plugin-dotenv-import?

After i update to 2.2.0 i follow all ReadMe but it says cannot find module 'babel-plugin-dotenv-import'... so after i install that package it works fine is it normal??
And i have another question. when i read 'babel-plugin-dotenv-import' projects readme it is really same with this project. is there some relationship between both project??

Looks like the documentation is copied from babel-plugin-dotenv-import without updating. The correct babel plugin name would be module:react-native-dotenv and not dotenv-import.

oh thanks now i understand!! so is this same with "babel-plugin-dotenv-import" ? or have other performance?

repo: goatandsheep/react-native-dotenv


text:
Travis: Add 2.4.0, use jruby-9.1.7.0

This PR

adds 2.4.0 to the build matrix
updates to latest JRuby

Looks like tests hang on JRuby now, presumably because SIGQUIT is not handled as it used to be.

@michaelklishin That message about SIGQUIT has been in JRuby a long time. Should Hutch change its tune about that signal?

@olleolleolle on JRuby only, I think so.

I was able to get the hang on QUIT with "Randomized with seed 60614".

@olleolleolle 👍  let's drop QUIT support on JRuby then.

By the way, we can do it in this very PR.

@michaelklishin I'll see if I can get a fix on the thing, so that we don't... mess things up.

@michaelklishin I began by unwinding a loop, so I could be remove a weirdly-placed next.

@olleolleolle I'm not sure what you mean. But thank you.

@michaelklishin The next move would be to never mention the QUIT signal to JRuby in the implementation of Waiter, so that no warnings are spouted.

Makes sense, thank you!

Now, the test output of WaiterSpec is
Hutch::Waiter
  ["TERM", "INT"]
    includes only things in Signal.list.keys
  .wait_until_signaled
    a TERM signal is received
      logs that hutch is stopping
    a INT signal is received
      logs that hutch is stopping

@michaelklishin Can you kill this build? https://travis-ci.org/gocardless/hutch/jobs/193808578

@michaelklishin I'm more interested in the next build, which included the "skip QUIT on JRuby".

@olleolleolle thank you!

@michaelklishin Happy weekend!

authors: michaelklishin olleolleolle

repo: gocardless/hutch


text:
C# client

I'm trying to follow the examples of calling the apiEndpoint in the Docker image. But unfortunately, the official C# client doesn't support providing of an options or apiEndpoint property.
Just wondering if there's a suggested way of achieving this?
Thanks in advance

BigQueryClientBuilder

Thanks so much!, I'll give this a try.

FYI a key part is providing a fake ApiKey to Google's BigQueryClientBuilder. Even if the BaseUri is pointing to a containerized emulator instance, you may still have problems - if you provide a null credential then the Client will look for the Application Default Credentials file, if you provide even a fake User credential from JSON or a file then the Client will attempt to refresh the auth token.

authors: ambujs-ps richardware

repo: goccy/bigquery-emulator


text:
Problem inserting into a REPEATED RECORD column

Hi, I'm in a project that uses a metadata column of type repeated record:
bq show project:dataset.table
...
+- metadata: record (repeated)
 |  |- name: string (required)
 |  |- value: string

I've been able to create our table with bigquery-emulator but I'm not able to get the values properly from the metadata column.
./bigquery-emulator --project=test_project --log-level=debug
# ...
bq --api http://0.0.0.0:9050 mk --project_id=test_project --dataset test_dataset

bq --api http://0.0.0.0:9050 mk --project_id=test_project --table test_project:test_dataset.test_metadata ./metadata_schema.json
bq --api http://0.0.0.0:9050 show --project_id=test_project --schema test_project:test_dataset.test_metadata
# [{"fields":[{"mode":"REQUIRED","name":"name","type":"STRING"},{"mode":"NULLABLE","name":"value","type":"STRING"}],"mode":"REPEATED","name":"metadata","type":"RECORD"}]
bq --api http://0.0.0.0:9050 query --project_id=test_project 'INSERT INTO test_dataset.test_metadata (metadata) VALUES (ARRAY[ STRUCT("FOO","BAR") ])'
bq --api http://0.0.0.0:9050 query --project_id=test_project 'SELECT * FROM test_dataset.test_metadata'
# +--------------+
# |  metadata    |
# +--------------+
# | [{"":"BAR"}] |
# +--------------+

The schema file is as follows:
[
  {
    "fields": [
      {
        "mode": "REQUIRED",
        "name": "name",
        "type": "STRING"
      },
      {
        "mode": "NULLABLE",
        "name": "value",
        "type": "STRING"
      }
    ],
    "mode": "REPEATED",
    "name": "metadata",
    "type": "RECORD"
  }
]

and when I query our test table, I get:
+-----------+-----------------------------------------+
|  service  |        metadata                         |
+-----------+-----------------------------------------+
| XxxxXxxx  | [{"name":"NNNNNNN","value":"VVVVVVV1"}] |
| XxxxXxxx  | [{"name":"NNNNNNN","value":"VVVVVVV2"}] |
+-----------+-----------------------------------------+

Am I doing the insert correctly and can I achieve the same result as google bigquery?

Thank you for your report !
I fixed this problem with v0.1.21 . Please confirm it 😄

Thank you @goccy! The simple test passes now perfectly. I'll try to finish the service integration in docker-compose next 👍
...
bq --api http://0.0.0.0:9050 query --project_id=test_project 'INSERT INTO test_dataset.test_metadata (mmetadata) VALUES (ARRAY[ STRUCT("FOO","BAR") ])'

bq --api http://0.0.0.0:9050 query --project_id=test_project 'SELECT * FROM test_dataset.test_metadata'
# +--------------------------------+
# |           metadata             |
# +--------------------------------+
# | [{"name":"FOO","value":"BAR"}] |
# +--------------------------------+

authors: goccy jussikuosa


text:
Update stages_api.md

Added information on the scheduled_date field including links to how to convert it.

@reidca: Looks good! Could you please signing the CLA. It's a legal requirement. I thought you had already signed it. But, couldn't find an entry.
Thank you!

Ok done. Thanks.
On 7 Apr 2015 18:59, Aravind SV notifications@github.com wrote:
@reidca: Looks good! Could you please signing the CLA. It's a legal requirement. I thought you had already signed it. But, couldn't find an entry.
Thank you!

Reply to this email directly or view it on GitHub:
https://github.com/gocd/documentation/pull/106#issuecomment-90677402

Merged. Thank you!

It can be seen at: http://www.go.cd/documentation/user/15.1.0/api/stages_api.html

authors: arvindsv reidca

repo: gocd/documentation


text:
When an ehpa with a behavior is created, its corresponding hpa does not have a behavior

Describe the bug
When an ehpa with a behavior is created, its corresponding hpa does not have a behavior.
Reproduce steps
1.create an ehpa object

then an hpa object will be created, but without behavior

Expected behavior
create an hpa object with behavior
Environment (please complete the following information):

K8S Version: [e.g. 1.18]
Crane Version: [e.g. 0.4.0]

I create a pull request to fix it. #311 Please check.

Could you please tell me how to enable EHPA of crane for a specific deployment under specific namespaces?
e.g. I have a deployment namely "nodeinfo" under namespaces "my-test".
I have tried the yaml offered by documentation, but can not find any config for namespaces.

@FTWH  you can create an EHPA under namespaces "my-test" （ the same with deployment) so it could be worked.

repo: gocrane/crane


text:
Opening a folder with .cs files crashes Godot (Mono related?)

Godot 3.0 git HEAD 64 bit
Manjaro Linux 64 bit
Ubuntu 17.10b2
Windows 10
Issue description:
When navigating into a CSharp scripts folder Godot crashes if there's a .mono folder and if there are no icons of the scripts in the ~/.godot/tmp folder.
@neikeq I believe this is Mono related as a lot of Mono items are in the crash log, deleting the .mono folder fixes the crash, or if I simply rename files from having .cs to .gd (and leave the .mono folder there) it no longer crashes.
Steps to reproduce:
edit: Okay, I've narrowed it down a bit more. I tried it on Ubuntu 17.10b2 and I was able to navigate to the folder as long as I didn't first make a build.
I was then able to cause it to break again by:

Deleting the ~/.godot/tmp folder
Make a build (F5/F6)
Restart the editor
Navigate to the Scripts folder
Crash

I was able to navigate again to the folder by:

Deleting the .mono folder for the project
Restart the editor
Navigate to the folder
No crash

So, it seems somehow related to failing to generate icons when there's a successful build in the .mono folder?
I've made a video: DirectoryOpenCrash.zip
Link to minimal example project:
edit: Here's a simple project:
Test_Proj_CS.zip
edit: Removed the crash dump as you should now be able to get your own now that the bug is reproducible.

Okay, I've narrowed it down a bit more. I tried it on Ubuntu 17.10b2 and I was able to navigate to the folder as long as I didn't first make a build.
I was then able to cause it to break again by:

Deleting the ~/.godot/tmp folder
Make a build (F5/F6)
Restart the editor
Navigate to the Scripts folder
Crash

I was able to navigate again to the folder by:

Deleting the .mono folder for the project
Switch the build system from xbuild to MSBuild
Restart editor
Navigate to the folder
No crash

So, it seems somehow related to failing to generate icons when there's a successful build in the .mono folder?
Okay, time to try it on Windows again since I didn't try these steps before.

Yep, happens on Windows too.

Okay, I was able to reproduce the problem with the steps above in a simple project. :)
Test_Proj_CS.zip

Does this still happen after #11845?

Unfortunately it's still doing it.

All right, just wanted to make sure it was not related to the assembly loading error at startup. I'll test tomorrow.

Awesome, thanks :)

authors: NathanWarden neikeq

repo: godotengine/godot


text:
RichTextLabel's bbcode_text property is not tag-stack-aware.

Operating system or device, Godot version, GPU Model and driver (if graphics related):
Windows 10
Godot master
Issue description:
If you manually add content to RichTextLabel's internal tag stack using append_bbcode and the push_*/pop functions, I would expect to be able to print bbcode_text and see the corresponding opening and closing tags visible in the output (at least, as much as is possible. I know you can't perfectly do that with push_meta(Variant), but for most you could). To the end user, they don't even see the internal tag stack, so when they use append_bbcode, they THINK that they are in fact editing bbcode_text...except that they aren't...<_< We should try to maintain that illusion.
Steps to reproduce:
Start a new scene with RichTextLabel as the root. Toggle on the bbcode bool. Add a script:
# RichTextLabel.gd
func _ready():
    add_text("hello")
    print(bbcode_text) # prints nothing to the screen

I would have expected to see "hello" printed as a result of this.
Also, fixing this Issue would probably also fix #12881.

Still valid in 3.2.4 beta2

authors: KoBeWi willnationsdev


text:
Orphan StringName when using match statement in GDScript

Godot version:
3.0 3a05d974e0fb925869fe0fdfdbde9da8ee6a2757
OS/device including version:
macOS 10.12.6, likely every other platform
Issue description:
Using match statement in GDScript results in:
Orphan StringName: #match_value
StringName: 1 unclaimed string names at exit.

Steps to reproduce:
Run this project with godot -v --path ., close it, see the logs.

This is already fixed (probably by #21411)

authors: endragor vnen


text:
Script gets shadow-removed when _init(arg) + tool

Godot version:
3.1.1 official

OS/device including version:
windows 10

Issue description:
Script disappears from scene, when the script is a tool-script and there is a non-standard _init() method in the script.  When i delete one or the other ("tool" or "_init(arg)" ) the script reappears.
When being used with the standard "_init()" it works as intended and the script doesnt disappear from the scene.
When i run the scene with the script not showing up in the scene-tree, the script wont exist (not attached to the node it actually should be)
I was fighting with this bug for about an hour, working with signals, wondering if i did my signals wrong, but actually it was this culprit, that my scripts just didnt exist while i ran the scene.
My expectation would be, if this is a mistake from my side, to get an error-message to show or it being fixed, if its a bug.

Steps to reproduce:
Minimal reproduction project:
You can try it out, by opening the scene "Control.tscn" and opening the script "script_with_error.gd" by removing or adding the "tool" or the "_init(arg)".
reproduction_project.zip

Edit: Replaced the MRP with a project created in 3.2.3.rc3

It's an expected GDScript limitation that you can't use arguments in _init(), as it's called when instantiating the node and when that call happens, no arguments are being passed.
Apparently the same restriction stands for tool scripts, which also get instantiated in the editor so they can't have mandatory parameters.
Yet, there should be better error reporting and the script should not disappear silently.

Can anyone still reproduce this bug in Godot 3.2.3 rc3 or any later release?
If yes, please ensure that an up-to-date Minimal Reproduction Project (MRP) is included in this report (a MRP is a zipped Godot project with the minimal elements necessary to reliably trigger the bug). You can upload ZIP files in an issue comment with a drag and drop.

script + tool shadow-remove.zip
Yes!
Just comment/uncomment the correpsonding _init() function and it still happens.
Tested in 3.2.3.rc3.official

Also valid in 9413446b2

Still happening in v3.4.stable.official [206ba70f4]

In v3.5.stable.official [991bb6ac7] it still happens, but i get an error in the console.

in godot 4 alpha 13 its also happening and here i am getting a different error in the console:

authors: KoBeWi Reneator akien-mga


text:
Camera and raycast previews don't show in subscenes

When I import a scene with a camera and/or a raycast, the previews for both disappear, I recreated this by using Oxrock's raycast demo, by converting the player node into a subscene and then reimporting it after deleting the original. I've been experiencing this in a game I'm developing as well.
Before:

After (as a subscene):

Link to Demo: https://github.com/oxrock/Godot-camera-raycasting-demo
Version used: Linux x86.64, compiled from source the same day as I posted this.

Does this happen when the raycast is a sibling of the camera, instead of a direct child?

the raycast can be independent of the camera, the problem persists.

Tested on master, both camera and raycast are visible now.

@DualMatrix Thanks !

Hmm.. I think it still could be issue for 2.x version, so I better reopen it.. @DualMatrix if you have free time can you download a 2.1.5 and check if the problem exist ?

I don't think it will be fixed in 2.1 by now, only critical bug fixes will be considered for that platform. Closing as fixed in 3.1 (potentially 3.0 too).

authors: Chaosus Cobradabest DualMatrix akien-mga bojidar-bg oxrock


text:
'apksigner' returned with error #2

Godot version
3.4.rc2.official,3.4.rc3.official
System information
ubuntu 21.10 openjdk8
Issue description
the export for android process failed with
'apksigner' returned with error #2
exporting the same project with same keys in godot version 3.2.stable works as intended
Steps to reproduce
export for android
Minimal reproduction project
No response

exporting the same project with same keys in godot version 3.2.stable works as intended

Did it work with Godot 3.3.x?

exporting the same project with same keys in godot version 3.2.stable works as intended

Did it work with Godot 3.3.x?

3.3.stable : same error
3.4.stable : same error

You probably need to recreate your keystore to be compatible with 3.3+. See the command in the current docs to generate it.

You probably need to recreate your keystore to be compatible with 3.3+. See the command in the current docs to generate it.

I followed this instructions
https://docs.godotengine.org/en/3.4/getting_started/workflow/export/exporting_for_android.html
and still not working

I get the same error as well, using Godot 3.5.1 and the instructions at:
https://docs.godotengine.org/en/latest/tutorials/export/exporting_for_android.html

authors: Calinou akien-mga enorrmann zaddok


text:
Clarify that creating a custom engine build configuration is not sufficient by itself to reduce exported project size

Godot version
v4.0.beta17.official [c40020513]
System information
macOS 13.2 (22D49)
Issue description
After disabling most features through the engine build configuration menu, a 2D scene with a single ColorRect produces a web release-build that is over 28MB. This is the same size as an export with all features included.
Steps to reproduce

Create a new project with a 2D scene
Go to Project > Customize Engine Build Configuration
Click "Detect from Project" and manually unselect "3D Engine" and "3D Physics"
Go to Project > Export
Build release as web/HTML5.
Web assembly file is around 28MB.

Minimal reproduction project
Test Project 2D G4.zip

You need to compile custom HTML5 export templates after creating a custom configuration. There is no way to magically trim features from the exported project without recompiling :slightly_smiling_face:

I'd like to add a newbie (in godot engine developement) perspective:

I've looked through documentation, and other than this particular paragraph I cannot find more information about creating custom templates. Certainly none on how to use the engine build configuration.
Now, I suspect if I dug into docs from the start of Contributing section, I could figure it out.
However, I've seen a few issues here and some discussions on reddit from devs interested primarly in making games for web put a lot of value in reducing the size of downloaded files, and therfore startup time.
I propose that creating and using custom templates should get a treatment similiar to 'your first game' tutorials, as a step-by-step guide in official documentation. It's an activity that any dev could benefit from, especially due to further core Godot developement increasing the size of binaries. The users don't nescessarly want to even check the Contributing section of the documentation (contribution is not on their mind yet, creating small exports is).

I'm willing to contribute my time to this goal, especially if I could get some guidance from someone in the know already.

How does this custom engine build configuration actually work? There is no information about this anywhere. we have this page: https://github.com/godotengine/godot/pull/62996
Here it says to use that menu to create that .build file and then put it in scons with this:
$ scons p=windows target=release tools=no build_feature_profile="soso.build"
But as far as I can tell, this doesn't change anything.
I would be more then happy to write out the docs or try to fix any of the issues which make it not work, but to my knowledge 'build_feature_profile' doesn't work (yet), nor is there any way to use that file. (or maybe it's a windows only thing for now?)

How does this custom engine build configuration actually work? There is no information about this anywhere. we have this page: #62996 Here it says to use that menu to create that .build file and then put it in scons with this: $ scons p=windows target=release tools=no build_feature_profile="soso.build" But as far as I can tell, this doesn't change anything.
I would be more then happy to write out the docs or try to fix any of the issues which make it not work, but to my knowledge 'build_feature_profile' doesn't work (yet), nor is there any way to use that file. (or maybe it's a windows only thing for now?)

The option name was initially build_feature_profile in https://github.com/godotengine/godot/pull/62996, but it has changed to build_profile in 4.0.stable: https://github.com/godotengine/godot/blob/a3c49ad2f0120f41789836a523698db0d4a9f0f2/SConstruct#L218

I would be more then happy to write out the docs or try to fix any of the issues which make it not work, but to my knowledge 'build_feature_profile' doesn't work (yet), nor is there any way to use that file. (or maybe it's a windows only thing for now?)

The option name was initially build_feature_profile in #62996, but it has changed to build_profile in 4.0.stable:
https://github.com/godotengine/godot/blob/a3c49ad2f0120f41789836a523698db0d4a9f0f2/SConstruct#L218

Are there any plans of changing this in the near future, or would it be okay to add this to the overall documentation already? If it would be okay than I'd like to create an entry to the docs on how to use this. (I'll first fiddle around with it a bit to test things out of course so I can write a correct entry ^^)

Are there any plans of changing this in the near future, or would it be okay to add this to the overall documentation already? If it would be okay than I'd like to create an entry to the docs on how to use this. (I'll first fiddle around with it a bit to test things out of course so I can write a correct entry ^^)

I'll gladly test the docs - drop me a link to PR when you're ready.

I also stumbled on this completely by accident. Documentation would be greatly appreciated. The autodetection is great and will greatly reduce the effort required to produce small builds, which are essential for mobile devices especially in places where network availability is limited.

The autodetection is great and will greatly reduce the effort required to produce small builds, which are essential for mobile devices especially in places where network availability is limited.

The custom build profile feature on its own doesn't reduce binary size much, so it won't help that much. Using optimize=size and disabling modules helps much more in comparison, but there's no way to detect which modules are required for a specific project.

The custom build profile feature on its own doesn't reduce binary size much, so it won't help that much.

Do I understand it right - feeding the *.build file to SCONS when compiling an export template won't exclude the disabled_classes from the final export template? If so, what is the custom build profile feature meant for then?

Do I understand it right - feeding the *.build file to SCONS when compiling an export template won't exclude the disabled_classes from the final export template? If so, what is the custom build profile feature meant for then?

It will exclude the disabled classes, but it won't disable modules that these disabled classes may rely upon. This reduces the opportunities for reducing binary size significantly.

authors: Calinou TheCymaera magikmw paskausks voylin


text:
Broken: (Make Bone2D Nodes from Nodes)

Tested versions
Reproducible in v4.2.2.stable.official [15073afe3]
Not Reproducible in v3.5.3.stable
System information
Windows 10 + v4.2.2.stable.official
Issue description
Selecting a chain of sprites nodes and clicking Make Bone2d Nodes from Nodes results in each sprite node being reparented to disjointed bone nodes with warning:

A Bone2D only works with... as parent node
This bone lacks a REST pose

Steps to reproduce

Create a parented chain of sprite nodes
-Upperarm
--Forearm
---Hand
Move them to the proper pivot points
Select the 3 nodes and hit Ctrl+Shift+B (Make Bone2d Nodes from Nodes  under the bone button)

Minimal reproduction project (MRP)
Godot2dSkelV4Bug.zip

I learned cutout animation by the doc: https://docs.godotengine.org/en/4.2/tutorials/animation/cutout_animation.html
Maybe it is outdate，or the behavor of editor is not keep with the doc

For developers who follow the tutorial  https://docs.godotengine.org/en/4.2/tutorials/animation/cutout_animation.html to learn Godot, this issue experience is very unfriendly. So, can we prioritize fixing this bug?

authors: CsloudX jinguoliang xiaoandtell


text:
Black get_texture() from viewport on desktop, works fine on mobile.

Tested versions

Reproducible in v4.3.beta1.official [a4f2ea91a] and v4.3.beta2.official [b75f0485b]

System information
Pop!_OS 22.04 LTS - X11 - GLES3 (Compatibility)
Issue description
This code (based on the sample in the docs) successfully produces screenshots on Android mobile:
	await RenderingServer.frame_post_draw
	var tex = Globals.main_viewport.get_texture().get_image().get_region(region)
	tex.save_png("user://creator/level_"+str(Globals.creator_level_id)+".png

This works fine on Android:

But on Desktop:

This was also present on Windows 11, but am now on PopOS.
This seems to be caused by enabling Use HDR 2D, but it is unclear why it behaves differently for desktop.
Steps to reproduce
See description.
Minimal reproduction project (MRP)
Will make one if required.

Tested on latest master [04bf7d4ca] and i can confirm the issue, also the forward and mobile rendering mode shows a different behaviour with HDR and get_viewport().get_texture().get_image().save_png()

In editor and playing the scene the image is rendered normally, like the no hdr image, but saving the viewport texture show the results in the image above.
I bisected the issue and found a culprit for the compatibility issue and another for the forward/mobile

Compatibility culprit: #87360

Forward/mobile culprit: #80215

@matheusmdx Great work!
The output of the Forward+ and Mobile renderers are what is expected with the HDR2D mode enabled as the image is stored in an HDR format in linear space, instead of in an LDR format in sRGB space. https://github.com/godotengine/godot/pull/92496 documents this requirement and adds a helpful linear_to_srgb() function to make converting the texture easier.
For the compatibility renderer it seems like it is copying from the wrong texture when doing the screen copy. We will likely need to add some logic to the function that copies the screen texture to ensure that it is copying from the correct texture

@matheusmdx thanks you for introducing me to the git bisect command I didn't know and it seems awesome.
Did you take the correction of the wrong texture copied in compatibility as @clayjohn mentionned or can I look at it ?
Also @clayjohn is HDR feature available in compatibility ?

Did you take the correction of the wrong texture copied in compatibility as @clayjohn mentionned or can I look at it ?

I don't know where this adjust needs to be done so feel free to take a look

authors: Bimbam360 ChristopheClaustre clayjohn matheusmdx


text:
2.1.4 Rigid collisions are ignored for small sphere shapes

Operating system or device - Godot version:
Observed in 2.1.4 beta1
Issue description:
After adding RigidBody with SphereShape, and chaning body radius below ~= 1.0 collisions for this body are ignored.
Quick video: https://youtu.be/V5QMRZMRtek
Steps to reproduce:
Link to minimal example project:
SmallShapeIssue.zip

Related issues: https://github.com/godotengine/godot/issues/9395, https://github.com/godotengine/godot/issues/9387

Have bigger project with problem that visually looks exactly the same, but in the end it seems I was unable to reproduce it yet - this reproduction project is broken (it has a hole in the ground :o).


text:
Fix errors with custom theme and custom font in project settings.

Load custom theme after required classes are registered to make the custom theme works again.
Fix crash with dynamic custom font.
Define text selection color for editor theme so this color don't relys on the default color any more.

@volzhs As the editor theme doesn't defined this color so the color of the
default theme is passed for that. After I changed the default theme of my
project this color is wrong.
volzhs notifications@github.com于2018年1月1日 周一22:49写道：

@volzhs commented on this pull request.
In editor/editor_themes.cpp
https://github.com/godotengine/godot/pull/15186#discussion_r159157252:

@@ -332,6 +332,7 @@ Ref create_editor_theme(const Ref p_theme) {
const Color font_color = mono_color.linear_interpolate(base_color, 0.25);
const Color font_color_hl = mono_color.linear_interpolate(base_color, 0.15);
const Color font_color_disabled = Color(mono_color.r, mono_color.g, mono_color.b, 0.3);

const Color font_color_selection = Color::html("#7d7d7d");

how this hardcoded is related PR stands for?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/godotengine/godot/pull/15186#pullrequestreview-86063707,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGpFTAygqJxTwtvAGs_9G8xd1bXc1tEgks5tGPCAgaJpZM4RPi6y
.


text:
Changed "Syntax Menu" into radio Menu

Before:

After:

Issue:
https://github.com/godotengine/godot/issues/18779

This doesn't appear to have any logic to make them work as radios.

I've misread documentation. I am adding logic asap.

Note that as I mentioned on #18779, this would be better suited as a submenu in the Edit menu, instead of its own first-level menu.
You can see the code for the Convert Case submenu to see how it's done:

I think it's also possible to use radio buttons even in submenus.

Moved Syntax menu, and will be adding logic shortly

What is the difference between standard and GCScript

@Grula You need to squash your commits too, see here: http://docs.godotengine.org/en/3.0/community/contributing/pr_workflow.html#mastering-the-pr-workflow-the-rebase

Try reset you branch and create a new commit (This way you don't need to create a new issue):
git checkout issue-18779
git reset --hard origin/master # this will erase your local branch issue-18779

# Make your changes and commit

git push -f origin issue-18779

If you can't fix it then open a new issue.

@guilhermefelipecgs  Thanks a million! :)

Thanks, and congrats on your first contribution :)

authors: Grula YeldhamDev akien-mga guilhermefelipecgs mhilbrunner toger5


text:
Make the caret thicker in TextEdit and scale it with the editor scale

The caret in LineEdit is still 1 pixel thick, but it will become 2 pixels thick at editor scales higher than or equal to 150%.
For the record, 2 pixel-thick carets are common in other text editors, such as Visual Studio Code, Atom or JetBrains IDEs. However, single-line inputs often stick to 1 pixel-thick carets except on hiDPI displays.

Thanks!

Now that Godot 3.1 has been released, we don't plan to cherry-pick new features and enhancements to the 3.0 branch, unless there is very strong support in favor of it. Removing cherrypick label for 3.0.

authors: Calinou akien-mga


text:
Silenced ubsan errors

This commit silence messages from Ubsan Sanitizer like
core/command_queue_mt.h:431:42: runtime error: implicit conversion from type 'int' of value -2 (32-bit, signed) to type 'unsigned int' changed the value to 4294967294 (32-bit, unsigned)

and this fixes #33773
EDIT: This commit grows too much, so I created another one

A more explicit commit message would be good, "Small fixes" doesn't convey the fact that this fixes sanitizer warnings and not actual engine or editor bugs.

This probably can be silenced by using typed enums - https://en.cppreference.com/w/cpp/language/enum.
Closing since there is a lot of conflicts

authors: akien-mga qarmin


text:
Mono inherited scene bug 3.2

Reopening https://github.com/godotengine/godot/pull/38725
Fixes #36480, fixes #37581, fixes #18293 for 3.2 branch
This is a manual 3.2 backport of #38638

I force pushed a squashed commit as we don't need the style fixes as standalone commit in the git history.
CC @neikeq for review.

Thanks!


text:
Clarify how to convert PrimitiveMesh to ArrayMesh.

It took me a bit to figure this out, as I was initially doing something
more complicated like this before I realized I just had to pass
get_mesh_arrays directly to add_surface_from_arrays.
var arr_mesh = ArrayMesh.new()
var arrays = []
arrays.resize(ArrayMesh.ARRAY_MAX)
arrays[ArrayMesh.ARRAY_VERTEX] = c.get_mesh_arrays()
arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)

Thanks!

Cherry-picked for 3.2.3.

authors: akien-mga rcorre


text:
command palette improvements

This PR fixes:

Adding Command Palette as a Menu option.
Empty search shows all the available commands.
ok button of the command palette works.
other code fixes.

Can you show screenshots of the feature so I can share the design with non-technical folks?

Can you show graphics and videos of the feature so I can share the design with non-technical folks?

https://user-images.githubusercontent.com/70578657/129081799-c5de6091-b35a-4646-8fdd-5087f91af1c4.mp4

It was curious that command pallette was put in Help and not Editor or Project? That's odd.

Needs to be rebased on master for fixing CI (after https://github.com/godotengine/godot/pull/51523)

It was curious that command pallette was put in Help and not Editor or Project? That's odd.

Agree

I would have expected a text box with autocomplete next to "Create Root Node:"

Not sure what you mean by this 😛

I was proposing putting a box similar to "filter nodes" but touch screen usable.

Might I suggest that we also change the name of the InputEventShortcut type? Ideally, these commands should be things that exist separately from the CommandPallete GUI, nor any reliance on input events or shortcuts. It should just be a series of strings mapped to Callables accessible from a singleton that both engine and script code can contribute to. Once that base is in place, you can separately...

bind shortcuts to specific commands.

can keep letting the ED_SHORTCUT macro automatically add the command and bind a shortcut since that's the most common use case in the Godot Editor.

add a command palette GUI for searching through and executing commands.
have other plugins add other functionality.

at this point ^ this functionality could be anything (a command history dock, a vim-like interface for the Godot Editor, whatever), and since these features won't necessarily have anything to do with the original input events or shortcuts, it doesn't seem to make sense to name the data type that way in the first place imo.

@willnationsdev I agree, but that is a lot more than just a rename. I think these improvements should be done for now, and then review if it should be transitioned to an more general, non-shourcut/non-synthetic event based EditorActions system.

Thanks!

authors: Bhu1-V EricEzaM akien-mga fire mhilbrunner willnationsdev


text:
Release pressed events when the window is blurred on HTML5 platform

Fixes #49021
On the JS/HTML5 platform, when the user switches to another tab/window, any keys that were held down at the time would stay held down, so when the user switched back to the game window they would have to press the same keys again to release them.
This was due to the fact that we weren't calling the release_pressed_events() of the Input singleton like we do on other platforms. Browsers fire a blur event on the window object when it loses focus, and it's possible to add a callback handler to the same event in Emscripten.
So in this patch we simply add a callback handler to this event and invoke release_pressed_events(). In contrast to the focusout event which occurs before the focus is lost (and doesn't fire from the window object anyway), the blur event can bubble, so we just return false from the callback.
Also, we already propagate the focus and blur events and turn them into window notifications via the godot_js_display_notification_cb() JavaScript function, so we don't have to do it in the new callback.
I don't think we can apply the same patch to the 3.x branch with a cherry-pick because both the location of the patch and the way of accessing the input singleton are a little bit different. Once we're good to go on this I can open another PR for that branch.
See:

Window: blur event
emscripten_set_blur_callback()

Thanks!

This looks really good 👍 🥇 !
Small side note, unlike what mentioned in the OP (probably a typo) the blur event does not bubble and is not cancellable (see spec). Returning false is correct, because it tells emscripten not to preventDefault (which would not be allowed).

Whoops, that's right, it doesn't even make sense for it to bubble in the first place 😅
Thanks for the merge!

authors: Faless selgesel


text:
Rename RenderingServer global shader uniform methods to be more explicit

The global_shader_uniform name is longer, but it makes it much easier to find the methods when searching in the class reference.
These methods aren't present in 3.x, but some people may be using those from earlier 4.0 alphas already.
This closes https://github.com/godotengine/godot/issues/59645. See https://github.com/godotengine/godot/issues/54161#issuecomment-1086916469.
PS: What should we do about the ShaderGlobalsOverride node? It doesn't have any exposed properties or methods.

Great change! This is indeed a big improvement. Feel free to rebase (RenderingServer code is moving all across the place so it may be better for @BastiaanOlij to be closer to done?) .

If @Calinou can rebase and we can merge this today or tomorrow, this has my blessing.

Done :slightly_smiling_face:
I did brief testing but couldn't get a global uniform color to show up on a cube in either the current master branch or this PR.

Thanks!

authors: Calinou akien-mga reduz


text:
Expose XRPose's get angular velocity.

Expose XRPose's get angular velocity. Previously the angular velocity was captured but was not passed upwards through the calls.
Researching if useful for making a tunneling shader. https://github.com/V-Sekai/godot_xr_tunneling
Made for the V-Sekai group for VR/XR Usage. https://github.com/V-Sekai
Fixes: https://github.com/godotengine/godot/issues/62034

I think these were just mistakes on my part, it was always intended to return the angular velocity (hence the r_ prefix).

Thanks!

authors: BastiaanOlij akien-mga fire


text:
Use the right memory ordering in SafeNumeric operations

compare_exchange_weak is a read-modify-write operation. With the former std::memory_order_release we were only imposing memory ordering on the write while keeping the read relaxed. In order for the operation to be trustworthy we need the read to use acquire ordering so it syncs with other threads properly. Therefore, std::memory_order_acq_rel is what we want.
(The load we make above ourselves already uses std::memory_order_acquire, but that doesn't mean we didn't have to use acquire again to —let's say— sync to whatever has happened between both.)

Description added.

Thanks!

Cherry-picked for 3.4.5.

authors: RandomShaper akien-mga


text:
Fix missing Distance Fade category in OmniLight3D/SpotLight3D inspector

This fixes a regression from a PR that accidentally removed the group during a rebase. No cherry-picking needed.

Thanks!


text:
Fix cyclic references in GDScript 2.0

TL;DR
This PR makes possible to use cyclic references in GDScript 2.0, i.e. preload class (or use by class name) A in B and B in A, preload cyclic scenes, use typing in addons.
Summary
This PR tweaks the engine to accept and support cyclic references.
What it tries to solve
The current GDScript engine blocks cyclic references as this would normally lead to memory leaks. Why? Because cyclic references artificially increase the refcount of gdscripts.
Standard case
Let's say Main loads A that loads B.
Here, Main reference count is 1 (referenced by the engine), A is 1 (referenced by Main) and B is 1 (referenced by A).
When the engine unloads, Main reference count will be decremented by 1 and will be deleted, because its reference count will hit 0. A and B will also be deleted because A lost his reference from Main and B will lose its reference from A later.
Current cyclic reference issue
Currently, the engine makes it so that using cyclic references is impossible. Why, you say?
Let's bring back our example, but with a cyclic reference. Let's say Main loads A that loads B that loads back A.
Here, Main reference count is 1 (referenced by the engine), A is 2 (referenced by Main and B) and B is 1 (referenced by A).
Do you see the issue? When Main will be deleted, there will be no way to delete A and B. A will lose its reference to Main and will decrement, but it will not be deleted as A reference count is now 1. B is not deleted because it didn't lose its reference to A.
So, the answer is: the engine makes cyclic references impossible due to memory leaks concerns. That explains errors thrown by the parser or the analyzer like Constant value uses script from "res://b.gd" which is loaded but not compiled.
Proposed solution
Cyclic dependency detection
There is no way to use the reference count as a mean to know if a cyclic Ref<RefCounted> needs to be disposed of. If A and B refers to themselves a number of times, the reference count will skyrocket and it would not be easy to track down the exact number of times the count has been incremented.
If, someday or someone, comes up with a reliable way to detect these, it would be the ideal solution.
Meanwhile, to fix this issue, I propose to use the existing SelfList<GDScript> script_list found in the GDScript class. This list holds each GDScript instance.
Take this drawing as basis for my following example:

On the left column, each script contained in script_list (X, Y, and Z were omitted) and on the right one, each script referenced, contained in its constants (script constants, function constants, ...).
In the example, if Main is disposed, W, X, Y and Z will be too, but not A, B and C. How to make sure they are disposed correctly? And how to make sure to not dispose any script that can be legitimately used by another one?
When we dispose of Main, we can check the dependencies of its dependencies. After all, there's a good chance that those will be disposed of with Main. So, Main will check its get_must_clear_dependencies().
"Must clear" dependencies
GDScript::get_must_clear_dependencies() is called in GDScript::clear() to know which dependencies must be forcibly cleared.
The process may seem complicated, but it's quite simple. Let's say Main runs get_must_clear_dependencies().

Get a dependencies set. These dependencies includes all the dependencies of the script dependencies;
Get the inverted dependencies of each dependency of set 1;
For each dependency of set 1, if one their inverted dependencies (step 2) is outside of the dependencies of step 1, add the dependency (and it's dependencies) to a "can't clear" set;
Filter out each dependency that appears in the "can't clear" set of step 3;
Return the set of step 4.

With this, we know for a fact that each dependency in the "must_clear" set can be deleted without impacting the rest of the scripts, even if their reference count is high. That means that it's high only because of cyclic references.
By clearing each of those scripts (GDScript::clear() clears all the constants holding scripts), their reference count will necessarily drop to zero, so they will be disposed without any need of hacks.
Backup
If, for some reason, a script was able to slip out of the process, it still has a reference to script_list. Then, we can call clear() in the loop found in GDScriptLanguage::~GDScriptLanguage() for script instances still left. This adds the ability to force the clear of internal variables of a script, which can trigger the reference count decrement of other scripts.
Known issues

Code completion isn't working for cyclic references Bug present in 4.0beta2 for in-game scripts. The method list does not update at all until a refresh. Code completion for this PR does not show issues other than current ones;
The code works, but the cleaning isn't optimal. I found a reliable way to calculate cyclic references (see GDScript::get_cyclic_references_count()), but my efforts to clear dynamically the script failed. It seems the unreference() function is somewhat unreliable. Implemented with success, clearing GDScript with GDScript::clear() and GDScript::get_must_clear_dependencies();
For some reason, GDScript instances can still hold Shape2D references, even if PhysicsServer2D singleton was destructed, which leads to memory leaks.

Code example
So, this code works with this PR, which returns this error on master: Constant value uses script from "res://b.gd" which is loaded but not compiled.:
# main.gd
const A = preload("res://a.gd")

func _ready() -> void:
	A.test()  # The console will print: "A.HELLO_WORLD: hello, world!"

# a.gd
extends Node

const B = preload("res://b.gd")

const HELLO_WORLD: = "hello, world!"

static func test() -> void:
	B.test()

	# Test cyclic `is` keyword
	var b_instance: = B.new()
	if b_instance is B:
		prints("b_instance is B")  # The console will print: "b_instance is B"
	b_instance.queue_free()

# b.gd
extends Node

const A = preload("res://a.gd")

static func test() -> void:
	prints("A.HELLO_WORLD:", A.HELLO_WORLD)

	# Test cyclic `is` keyword
	var a_instance: = A.new()
	if a_instance is A:
		prints("a_instance is A")  # The console will print: "a_instance is A"
	a_instance.queue_free()

Minimal reproduction project:
cyclic3.zip
Fixes
Fixes #21461 - Some usages of class_name can produce cyclic errors unexpectedly
Fixes #32165 - Cyclic Errors After Autoload of Imported Asset
Fixes #41027 - Cyclic reference error in GDScript 2.0
Fixes #58551 - Can't preload a scene in AutoLoad script when the scene's script references the AutoLoad
Fixes #58181 - GDScript 2.0: Cannot preload cyclic const script references
Fixes #58871 - Cyclic Autoload Singleton Plugin Bug
Fixes #61043 - New cyclic reference error with autoload and preloaded script
Fixes #61386 - [4.x regression] AutoLoad scenes (not scripts) do not support implicit types
Fixes #65263 - GDScript reload generates error when created dynamically (no backing script)
Notes
This PR follows up #65752.

Please note: cyclic references (RefCounted-related issue), cyclic dependencies (a bug in GDScript) and cyclic definitions/calls (a user error, not a GDScript bug) are different things.

Please note: cyclic references (RefCounted-related issue), cyclic dependencies (a bug in GDScript) and cyclic definitions/calls (a user error, not a GDScript bug) are different things.

I renamed the PR title.

Renamed the PR to "Fix cyclic references in GDScript 2.0", as this fixes a bug (missing cyclic references support). It is not a "new feature" per se.

I fixed #67714 in this PR because I used code that I added in this one, but I could separate the fix into another PR, if needed.

Tested this thoroughly with my game and no problems whatsoever. The only issue still persisting is this:

The object-derived class of argument 3 (RefCounted (ForgingAttributes)) is not a subclass of the expected argument class.

Which I think is out of scope for this PR and not mentioned by any of the issues above but is rather described here https://github.com/godotengine/godot/issues/64915 and probably should be addressed in a separate PR.

I added the fix of #67850 inside this PR as the build tests seems to fail in the former. Probably because of cyclic dependencies, which are handled in this one.

Oh, and, regardless what happens in the end, let me congratulate you for this PR. I know this is a lot of work and thinking, and you've managed to make a reasonable fix to one complicated problem.

In general, I'm a bit concerned with this approach. While the overall idea and algorithm for detecting cycles is ingenious, I feel that its materialization is maybe too Spartan, if you know what I mean.

While I agree with the statement, I must point out that the "Spartan" materialization of my approach is only a small part of my PR. I don't see how we could untangle cyclic GDScripts without forcing clearing, even if we could detect perfectly which references are cyclic and inflating the reference count (and how many times).
The cyclic detection part of my PR counts for ~150 lines. The rest is clearing GDScripts, permitting cyclic references, removing cyclic references checks, and fixes miscellaneous issues.
I'm not downplaying the difficulties that could occur trying to refactor that part of code, but I'm confident that my code will fixes numerous issues and will bring more benefits than difficulties.
Thanks again for the review, @RandomShaper.

My 2 cents on this: considering how many issues this PR is addressing, this non-ideal solution might be preferable over no solution at all (assuming this PR does not introduce new issues).

I added two examples of my cyclic dependencies clearing workflow, for review and archive purposes.

Trying to port a big project from 3.x to 4.x, when running in editor I kept running into cyclic reference errors, so I tried this PR: it solved all the cyclic reference errors and I was able to run the project but the console gets flooded by this error at the start, it doesn't stop execution and it runs fine after the start:

I can't seem to debug where it's coming from exactly, the editor doesn't tell me what line is problematic, I think from an autoload but I can't pin it down. I understand this isn't much to go by and I can't provide a MRP but I thought I'd mention it anyway.

@Lippanon I found out the likely source of your problem! I just pushed a new commit, it should be fixed by now.

I have a medium sized project I've been working on since alpha6.
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Godot Scene                    148           2445              0          17272
GDScript                       116           1959            639           5203
Godot Resource                  64            194              0           3895
SQL                              4             65             36            467
XML                              1              0              0            137
SVG                              5              0              0             42
YAML                             1             10             18             31
Python                           1              3              0             24
INI                              1              0              0              4
-------------------------------------------------------------------------------
SUM:                           341           4676            693          27075
-------------------------------------------------------------------------------

I just tested this (cherry picked on top of beta-3 to keep my gdextension addons working) and it worked without error or any issue I could find. Performance seemed the same as well.
Would be a welcome addition so I can get to 100% typed.

Great work! While this seems ready, I'll delay merging this by a few days to first put out beta 4 with the changes which have been tested while I was on holiday. I'll merge bigger changes like this afterwards for beta 5 (due sometime next week).

I would like a bit more detail explaining why the changes are needed into PackedScene, since technically this should only be relevant for GDScript.

Just to clarify, the original code in GDScript is meant to avoid cyclic references for GDScript files. Cyclic references in scenes are not workaroundable, the scene is broken if you save this.

Cyclic references in scenes are not workaroundable, the scene is broken if you save this.

My PR permits cyclic references with preload() and global classes. It does not permit cyclic resources other than that, and it does not intend to fix that.
Though, I realize that there's maybe an underlining issue that I did not address. That my changes in PackedScene were about treating a symptom, not treating the problem itself. Currently, even if GDScriptCache is holding a Ref<PackedScene>, the latter reference count can drop to 0 (and be disposed of).
I'll investigate and return with some answers.

SCRIPT ERROR: Compile Error: Identifier not found: dialogic
at: GDScript::reload (res://addons/dialogic/Events/End Branch/event.gd:8)

This is weird. If you move the dialogic variable declaration to be on top of the parent class file, the error disappears. There's something wrong going on with the parsing of the parent file.

I was having a problem, and realized it was introduced in this pr (or this pr revealed it).
godot-editor-removed-path.zip
open "T1.gd" edit it (add a new line) and save, then open "T2.gd". T1 becomes "[unsaved]" in the file list.

@bitbrain and @rune-scape, both of your issues should be resolved by now.

@adamscott yep, fixed gj 👍

@rune-scape Could you join the developers chat? @akien-mga just mentionned your PR.
https://chat.godotengine.org/channel/scripting

@adamscott out of curiosity: will this also fix https://github.com/godotengine/godot/issues/24146?

@adamscott out of curiosity: will this also fix #24146?

I just tested out the 4.0 MRP and unfortunately no. This PR does not change how PackedScenes and resources work internally.

Thanks a ton for your work! Really impressive and thorough!

I just tried beta 6. This isn't quite working.
GameInit.gd # Autoloaded as 'class_name Game'
     var player: Player   # CRC errors before. In beta 6 unlocatable, non-CRC error. Works if no type.

Player and Enemy both inherit Unit. Many classes including Enemy reference Game.*, especially Game.player.
In previous versions we had CRC errors in Enemy when Player was typed as shown above, and we referenced Game.player. I received an editor notification highlighting the exact line in GameInit.gd.
Now in Beta 6, I get the following error in the console upon loading the editor or the game, and there's no reference at all to the GDScript location. The editor does load scenes, but the game does not.
ERROR: Condition "!base->is_valid()" is true. Returning: ERR_BUG
   at: _populate_class_members (modules/gdscript/gdscript_compiler.cpp:2287)

In the editor I'm presented with no info:

The Errors(2) shows the same error listed on the console, but clicking the lines don't take me to any gdscript. So if I didn't already know exactly where the CRC error is, I'd never find it.
Someone else has the same issue, likely caused by a CRC error they don't know about. #69213. If I can make an MRP, I'll make an issue or contribute to this one.

@tinmanjuggernaut Please create an issue and a MRP if possible. The .cpp path helps, but by itself, I cannot find the root of the issue. The issue you're experiencing can be related to this PR, but it's not necessarily the case.
@rune-scape Does it ring a bell to you?

#69259 fixed my errors above using cyclic references. Thanks @adamscott .

authors: Lippanon RandomShaper adamscott akien-mga bitbrain cridenour dalexeev reduz rune-scape tinmanjuggernaut


text:
IK as an animation blend node

Posting a different version of the IK solver immediately after GDC. Still a bit tired.

[ ] Provide UIUX
[ ] Restore functionality
[ ] Restore editor widgets for constraints

Alternative version of https://github.com/godotengine/godot/pull/70887 that takes feedback from GDC design review from Mizizi and others. Also had design feedback from Eron, Tokage, Lyuma and Saracen.
Also tries to Fix: https://github.com/godotengine/godot-proposals/issues/6039 Will write a proposal for this alternative form when I'm able to.

Solving for targets & root motion lets roots move freely. Need to handle FK animations & let artists focus on specific parts like hand grabs & foot plants w/o configuring the entire skeleton.

input animation
target animation poses
a comfortable animation pose to pull towards
filterable tracks
Inspector settings

Closing for now. Salvagable.


text:
Direct3D 12: Query support for 16-bit operations

There are outstanding PR(s) refactoring context, but this shouldn't be a big deal for conflict-solving. (CC @DarioSamo)

Sounds good to me, I'll look into addressing the conflict on my own branch later when it comes up.

Thanks!

authors: DarioSamo RandomShaper akien-mga