[Impeller] Oversized stroked text is clipped since 3.24.0.

Steps to reproduce
Run this sample code on ios with Flutter 3.24.0:
https://dartpad.dev/?id=5d00a4fae2ef29d15c3b9c6ea753658e
The breakpoint seems to be fontSize 86, ie 85 works, 86 and above breaks.
Expected results

text should look like a blob
after clicking the button, the text should become a bigger blob

The code runs perfectly fine on web as well as Flutter 3.22.3 and most likely many previous versions, this is how it's supposed to look.
Actual results

text looks like a blob
after clicking the button, the text is clipped

Code sample
Code sample (copied straight from the dartpad, just added here for search indexing)
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  bool _isBig = false;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: Center(
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              Text(
                "1234",
                style: TextStyle(
                  fontSize: _isBig ? 100 : 80,
                  overflow: TextOverflow.visible,
                  foreground: Paint()
                    ..style = PaintingStyle.stroke
                    ..strokeCap = StrokeCap.round
                    ..strokeJoin = StrokeJoin.round
                    ..strokeWidth = 300
                    ..color = Colors.blue,
                ),
              ),
              ElevatedButton(
                onPressed: () {
                  setState(() => _isBig = !_isBig);
                },
                child: Text("toggle"),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

Screenshots or Video

Screenshots on ios

Logs
There are no logs
Flutter Doctor output
Doctor output
working:
[✓] Flutter (Channel stable, 3.22.3, on macOS 14.6.1 23G93 darwin-arm64, locale de-DE)

broken:
[✓] Flutter (Channel stable, 3.24.0, on macOS 14.6.1 23G93 darwin-arm64, locale de-DE)

rest is identical:
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 15.3)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2023.3)
[✓] VS Code (version 1.92.2)
[✓] Connected device (4 available)
[✓] Network resources

• No issues found!

It seems like at a certain point font size Skia stops giving us accurate bounds so we'll need to calculate them ourselves. We will need to check if there is any signal when that happens or if we have to guess.

Impeller uses Skia for text rendering


[AKS] az aks create/az aks nodepool add: No longer supports creating nodepools with ossku CBLMariner

This checklist is used to make sure that common guidelines for a pull request are followed.
[AKS] az aks create/az aks nodepool add: No longer supports creating nodepools with ossku CBLMariner
Related command

az aks create
az aks nodepool add

General Guidelines

[x] Have you run azdev style <YOUR_EXT> locally? (pip install azdev required)
[x] Have you run python scripts/ci/test_index.py -q locally? (pip install wheel==0.30.0 required)
[x] My extension version conforms to the Extension version schema

For new extensions:

[ ] My extension description/summary conforms to the Extension Summary Guidelines.

About Extension Publish
There is a pipeline to automatically build, upload and publish extension wheels.
Once your pull request is merged into main branch, a new pull request will be created to update src/index.json automatically.
You only need to update the version information in file setup.py and historical information in file HISTORY.rst in your PR but do not modify src/index.json.

AKS


Project indexing not work after enable this package.

Steps to reprod:

install this package
File->Open a Folder and select a folder to open
Ctrl-P to show the find files dialog

The index will not work

Yeap, verified on windows 64

@pangwa what OS are you using?


Search function

Adding a search function would be great.
I know a couple good posts from you but can't search for it now. :)

suggest a simple input type=search redirect to Bing with query plus site:bradygaster.com. Done.

@SvenVandenbrande love the idea. Though I think something simple like that @joshbooker proposed is a good stopgap solution i'd prefer have the search results in the site, in the site chrome. will implement this in the next few days.


[otbn] Pass the start address to the ISS

The start address is necessary to execute any real-world algorithm, pass
it on to the ISS.
This will need #3312 to go in first.

Rebased on top of #3312 to change the argument name to start_addr.


Create and manipulate comments on post data

Body:
User Stories

As a user, I can leave a comment on another user's post

As a user, I can see comments other users leave on my posts

As a user, I can delete a comment on a post

Completed.


Problem with two existing Google Maps Widgets

I have 2 split screens (left is a list and right google map).
On click from the first list I navigate to the second split screen and init a new map widget  but for some reason every event (center, add polygons, move camera, etc) send to the map widget of the second screen is applied to the first one...
Each widget is created doing :
@override
  Widget build(BuildContext context) {
mapWidget = new MapWidget(datas);
...
return Row(children: <Widget>[
              SizedBox(
                height: MediaQuery.of(context).size.height,
                child: Padding(
                  padding: EdgeInsets.all(0),
                  child: SizedBox(
                    width: isPhone ? MediaQuery.of(context).size.width : 300,
                    height: MediaQuery.of(context).size.height,
                    child: DetailWidget(datas),
                  ),
                ),
              ),
              Expanded(child: mapWidget),
}

What is the right way to handle multiple google maps widgets ?
Thanks

What is the right way to handle multiple google maps widgets ?

@jjboy91
if you need assistance with your code please follow the link I want help writing my application in the new issue menu

Hi @jjboy91
It seems you are asking for assistance on personal code. Please see https://flutter.dev/community for resources and asking questions like this,
you may also get some help if you post it on Stack Overflow and if you need help with your code, please see https://www.reddit.com/r/flutterhelp/
Closing, as this isn't an issue with Flutter itself.
Thank you


[FEATURE] Offload  user managment

Is your feature request related to a problem? Please describe.
Sometimes, it's a bit cumbersome to keep all the self-hosted service accounts up-to-date, so it would be nice to offload this to a different platform. Creating a sign-in with GitHub and/or Google would be amazing.
Describe the solution you'd like
We can create a user account using an identity provider of our choice (given from a list of supported providers). Something similar has been implemented in calibre-web and many other services.
Describe alternatives you've considered
Maybe we can disable accounts and manage access through a proxy layer like Authelia or Cloudflare applications. But then managing user data would become more complicated!
Additional context
Since the accounts would be needed to log in for OPDS, one would need an alternative password, like a token.
This would be similar to #246 with a more specific scenario.

OIDC support would be highly appreciated as well


Fix bad URL for upgrade manifest

fixes

documents

[ ] Tests
[ ] Documentation
[ ] Release note

None required

Deploy preview for calico ready!
Built with commit 7ec03636e9caa400b52113cfff5ea9b042f786e7
https://deploy-preview-2693--calico.netlify.com


Creating Serverless Functions ( Faas ) with AWS Lambda and Golang

Creating Serverless Functions ( Faas ) with AWS Lambda and Golang
Introduction paragraph (2-3 paragraphs):
Serverless architecture is a new paradigm that is being used in the development of modern applications. The term "serverless" refers to the abstraction of "servers" from application development. Function-as-a-Service (FaaS) is a serverless method of running modular code on the cloud. FaaS allows you to write code that can be triggered by events. For example, when a user clicks on a button in your web application, a specific cloud function is executed.
In this article, we will not only look at how to use FaaS, but we will also create some for others to use. We'll be working in Golang, but the same method can be applied to Python, Node, Java, or any other language or framework you want.
Key takeaways:

Readers will get familiar with Golang's syntax
Readers will have a general understanding of what serverless computing is
Readers will learn how to use AWS Lambda environment and related tools
Readers will learn how to create and use serverless functions in their Go applications.

References:
https://www.cloudflare.com/learning/serverless/glossary/function-as-a-service-faas/

@Bamimore-Tomi
Good afternoon and thank you for submitting your article for publishing.
Your article has been entered into our queue and should be reviewed (and published pending any changes) as soon as a peer reviewer is finished with the ones in the queue before it. 🚀
Thank you.

Great topic 🚀 , make sure it matches the following:

Adds value beyond what is in the official docs and what is covered in other blog sites.
To avoid any potential article closure, it should not overlap with any existing EngEd articles or incoming topic suggestions.

Please reference any relevant EngEd articles in yours and build a unique project - Approved. @NdoloBonface

Closed #3236 via #3479


Usage

I am excited to use this project, and your install instructions were helpful... however, I'm not sure how to apply the usage advice:
Do I create app/Http/Controllers/SoapController.php and place the first code block into that file?
I did create the folder structure you recommended (app/soap, app/soap/request, app/soap/response) and then creates, copied/pasted your code blocks for app/soap/request/GetConversionAmount.php and app/soap/response/GetConversionAmountResponse.php...
How do I actually call the show() method in a blade file?
Any insight is appreciated.
Thank you.

I recommend to use my package without the classmap.
You can read the documentation on how to use Laravel here: https://laravel.com/docs/5.3
It wil help you with your other questions.


How to use the useContinuousScanner

I mainly want to create a custom scanner since most of your components are not customizable but with the same functionality as it has. I found this hook but I do not understand how to use it. Any example would help immensely.

You could use the Scanner component to accomplish this.
<Scanner
  formats={["qr_code"]}
  onScan={(detectedCodes) => console.log(detectedCodes)}
  components={{
    finder: false,
  }}
  allowMultiple={true}
>

Custom stuff

</Scanner>;

Set the finder component to false and implement your custom logic for the UI.
You could also look at the code in the Finder component, to see how it was done.

But what about the hook? What is it used for? I thought I could use it to create my own scanner components


shaddeh and damah characters missing

I have a missing-character issue resulting in the square symbols, I explicitly added these ~apostrophy codes 064F, 0651, but still no result.

We replace Shadda + Fatha, Shadda + Kasra, Shadda + Damma combinations into a single character.
You should generate the fonts with the range files provided in RTLTMPro under the ranges folder. You can add ranges but we don't expect for some of these characters to be missing.
If you want to just add the Tashkeel characters to your ranges, you can find all the values this plugin recognizes under TashkeelCharacters.cs.
The ArabicTashkeel demo scene works out of the box with the segoe UI font we provide with the asset.


retain biblographic information from infopdata

The bibligraphic table should include data on journal, year, authors, title and DOI (where present)

Please create a sample of old bibliographic data so we can see the relevant fields .

My current guess for bibliography is:
primaryKey  DOI    AuthorString   title .  JournalTitle   Year  Pages


Speed startup by asynchronous initialization of ReplIO

Investigation of

https://github.com/enso-org/enso/issues/8553#issuecomment-1878502004

revealed that another reason for slowing the startup by 16% (while measurements were off) is replacement of DumbTerminal:

by proper and more capable
org.jline.terminal.impl.jna.JnaTerminalProvider.sysTerminal()

As the terminal isn't going to needed for next 1 or 2 seconds, let's defer its initialization into own (low priority) Thread.

By initializing in own thread, we can eliminate Thread.currentThread().setContextClassLoader(prevClassLoader) - as the thread will die out after performing initialization.

Closed as duplicate of #8688


Supporting type self or something that can represents the current instance.

When I am writing a declaration file, I found it really frustrating repeating the inherited method that returns the instance itself for a correct return type.
E.g. for animation library GSAP, many classes are inherited from class Animation, I have to repeat almost every method to update return type Animation to the current class.
class Animation {
    chain(): Animation;
}

class TweenLite extends Animation {
    ownProperty: any;
    chain(): TweenLite;
}

It would be great if we may use some type like self to make this easier, like this:
class Animation {
    chain(): self;
}

class TweenLite extends Animation {
    ownProperty: any;
}

Seems like a duplicate of #285.

Also see #513


Unique stream extension

This pull request adds Stream::unique and Stream::unique_by extension which filters out duplicate items in the stream. These extensions are similar to Itertools::unique and Itertools::unique_by and correspond to the ReactiveX Distinct operator.

@lqf96 thanks heaps for this PR! Itertools has quite a few extensions beyond what std provides, and I'm a bit hesitant to start adding them. Not even rayon has this. This does seem useful though; but I'm leaning towards perhaps saying that this is out of scope for async-std.
@stjepang do you have thoughts?

Hi @yoshuawuyts, if you think this is out of scope for async-std then I can open a PR for futures-rs instead...

@lqf96 yeah I think that might be better for now. Apologies!

I'm closing this pull request and re-submit this to futures-rs.


xWebSite: Choose cert with greatest validity

Pull Request (PR) description

This Pull Request (PR) fixes the following issues

Task list

[x ] Added an entry to the change log under the Unreleased section of the
file CHANGELOG.md. Entry should say what was changed and how that
affects users (if applicable), and reference the issue being resolved
(if applicable).
[ ] Resource documentation added/updated in README.md.
[ ] Resource parameter descriptions added/updated in README.md, schema.mof
and comment-based help.
[ ] Comment-based help added/updated.
[ ] Localization strings added/updated in all localization files as appropriate.
[ ] Examples appropriately added/updated.
[ ] Unit tests added/updated. See DSC Community Testing Guidelines.
[ ] Integration tests added/updated (where possible). See DSC Community Testing Guidelines.
[x ] New/changed code adheres to DSC Community Style Guidelines.

This change is

Wow, is pester updated or something?  I cannot see how this failed so badly in build when changing one line of code with Where-Object statements

Yes, Pester 5 was released so we need to pin Pester to 4.10.1 here
https://github.com/dsccommunity/xWebAdministration/blob/c7c81dcdca4102b5e06f0ffed16b35d1b7f6c07b/RequiredModules.psd1#L11

Reviewed 2 of 2 files at r1.
Reviewable status: all files reviewed, 1 unresolved discussion (waiting on @ThomasHughesIV)

a discussion (no related file):
Can you please add a unit test (or change an existing) so that the correct certificate is chosen?
https://github.com/dsccommunity/xWebAdministration/blob/c7c81dcdca4102b5e06f0ffed16b35d1b7f6c07b/tests/Unit/MSFT_xWebsite.Tests.ps1#L2273

Yes, I can do that.  I think.  I'm still new to all of this.

Ping me if I can help in some way.

Ping me if I can help in some way.

I appreciate that, thank you.  This might take some time, as I'm trying to determine how certs are generated by pester (and learn pester at the same time)

In a unit test you mock cmdlets/functions with Pester. So you mock what a cmdlet should return. So if you have a function let say Get-Certificate you mock it to return the certificate (the necessary object with properties).
Example below. Not sure this is the correct way to mock the certificate in this case but gives you an idea.
Mock -CommandName Get-Certificate -MockWith {
    return [PSCustomObject] @{
        SubjectName = ‘cert1’
        Property2 = ‘value2’
    }
}

We have renamed the resource, removing 'x', so please rebase this PR.


Open a Workspace breaks Obsidian's sidebars on iOS

Details
(I mean the sidebars that you swipe in from the sides)
When Homepage is enabled and set to load a Workspace, on load, Homepage loads the Workspace as expected, however the sidebars which usually contain such things as the Files view and the Tag view become empty. They only display a Settings gear (iPhone only) and a Vault selector (iPhone and iPad)
If I enable Separate mobile homepage and instruct it to open a regular file, this does not happen.
Steps to reproduce

Save a workspace
Tell Homepage on an iOS device to load the Workspace on load
Relaunch the app
Try to open the sidebars
Unhappy empty sidebar times

Debug information
I do not see the option to do that on iOS where the issue is actually happening. Here's one from my Linux laptop where it is not happening.

{"version":3,"homepages":{"Main Homepage":{"value":"Default","kind":"Workspace","openOnStartup":true,"openMode":"Replace all open notes","manualOpenMode":"Replace all open notes","view":"Reading view","revertView":true,"openWhenEmpty":true,"refreshDataview":false,"autoCreate":true,"autoScroll":false,"pin":true,"commands":[],"alwaysApply":true},"Mobile Homepage":{"value":"Obsidian","kind":"File","openOnStartup":true,"openMode":"Replace all open notes","manualOpenMode":"Replace all open notes","view":"Reading view","revertView":true,"openWhenEmpty":true,"refreshDataview":false,"autoCreate":true,"autoScroll":false,"pin":true,"commands":[],"alwaysApply":true}},"separateMobile":true,"_defaultViewMode":"source","_livePreview":"default","_focusNewTab":"default","_plugins":["table-editor-obsidian","obsidian-kanban","obsidian-tasks-plugin","obsidian-auto-link-title","obsidian-linter","folder-note-plugin","obsidian-excel-to-markdown-table","notion-like-tables","omnisearch","homepage","url-into-selection","cm-editor-syntax-highlight-obsidian","find-unlinked-files","index-checker"],"_internalPlugins":["file-explorer","global-search","switcher","graph","backlink","canvas","outgoing-link","tag-pane","properties","daily-notes","note-composer","command-palette","editor-status","outline","word-count","workspaces","file-recovery","sync"],"_obsidianVersion":"1.4.14"}

Checklist

[X] I updated to the latest version of the plugin.

Thanks for the bug report. Does this occur when opening the workspace normally? (without using Homepage, but with the built-in workspace manager)

I had the same issue.
For me it reproduced when manually opening the workspace. If I disable the plugin it keeps happening.

Yes, this seems like a duplicate of #48, but I can't confirm that yet.

Just tested it, and the issue still occurs when opening a workspace that's created on desktop on mobile, even without using Homepage. Therefore, I'm closing as a duplicate of #48.


Any events on webhook send twice

Gitea version (or commit ref): 1.11.0+dev-331-g055f6d229
Git version: not needed
Operating system: Docker container from gitea/gitea
Database (use [x]):

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

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

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

Log gist:

Description
I deployed gitea in my kubernetes from the docker image of gitea/gitea. I linked the webhook to the created repository and noticed that all events are fired twice (push, create / delete branch and tags, etc.). The pull-request event was triggered as many as 4 times per action, but there is a separate issue for this #9181. In the images below, I pushed a new brunch and received two push and brunch creation events each. Webhook has been configured in both "All Events" and "Push events" mode. In both cases, push events arrived twice, and in "All events" mode all events came twice.
Screenshots

Have you add webhooks on both repository webhook setting and orgnization webhook setting?

In the beginning, I used only the settings in the repository. Then, for the test, webhook was also added to the global settings, but this did not affect the double sending in any way. Duplicate notifications were from the start. Subsequent experiments with deleting, adding webhook, repositories and other types of events did not change the situation.

I cannot reproduce this on my local instance. Could you reproduce this on try.gitea.io ?

Not. I tried, but on try.gitea.io I received only neighboring bugs # 9184, # 9181 and # 9180. I will try to deploy gitea on a separate host again today. Perhaps something is tied to the initial settings.

I received confirmation that the duplication of webhook depends on the installation configuration. I deployed on the local machine about 10 times and got different results depending on whether I redefined the parameters through ENV. In my product version in kubernetes, where I initially received an error, I also deployed with parameters predefined via ENV.
I attach my docker-compose.yaml file, as well as the resulting app.ini. At the installation stage, I only specify ssh_domain and administrator settings. As far as I could understand, if you do not pass EMV when deploying, then gitea does not duplicate webhook. I did not have enough time to figure out more specifically which parameter in the deployment leads to such an error. I hope you can repeat my experiment.
test3.zip

I experience the same issue. Every webhook (types "Slack" and "Gitea" in use, all added at repository level) is triggered twice when pushing from Git client (SSH or HTTPS). As far as I can tell, it happens on any repository.
Same JSON body (except for the timestamp +/- 1 second), same event-header, different delivery-header.
I'm running two separate instances. Both same version and about the same configuration, updated regularily since 1.1 or 1.2. Sadly I cannot remember when it started.
Working instance:
Version: 1.10.1
Platform: Linux, amd64 (Debian Buster, Kernel 4.19)
Deployment: Docker Stack (official Image gitea/gitea:1.10, only USER_UID, USER_GID env)
DB: MySQL (MariaDB 10.3)
Configuration: app.ini
APP_NAME = git @ otherdomain.example.com
RUN_USER = git
RUN_MODE = prod

[database]
DB_TYPE  = mysql
HOST     = /var/run/mysqld/mysqld.sock
NAME     = gitea
USER     = gitea
PASSWD   = ***
SSL_MODE = disable
PATH     = data/gitea.db

[repository]
ROOT = /opt/gitea/repo

[server]
SSH_DOMAIN       = otherdomain.example.com
PROTOCOL         = http
HTTP_ADDR        = <IP_ADDRESS>
HTTP_PORT        = 3000
ROOT_URL         = https://otherdomain.example.com/git/
DISABLE_SSH      = false
DISABLE_HTTP_GIT = true
SSH_PORT         = 2222
SSH_LISTEN_PORT  = 2222
START_SSH_SERVER = true
OFFLINE_MODE     = true
LANDING_PAGE     = explore

[mailer]
ENABLED = false

[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL     = true
DISABLE_REGISTRATION   = false
ENABLE_CAPTCHA         = false
REQUIRE_SIGNIN_VIEW    = false

[picture]
DISABLE_GRAVATAR        = true
ENABLE_FEDERATED_AVATAR = false

[session]
PROVIDER      = file
COOKIE_SECURE = true
COOKIE_NAME   = git_session

[log]
MODE      = file
LEVEL     = Info
ROOT_PATH = /opt/gitea/log

[security]
INSTALL_LOCK   = true
SECRET_KEY     = ***
INTERNAL_TOKEN = ***

[other]
SHOW_FOOTER_BRANDING           = false
SHOW_FOOTER_VERSION            = false
SHOW_FOOTER_TEMPLATE_LOAD_TIME = false

Faulty instance:
Version: 1.10.1
Platform: Linux, amd64  (Debian Stretch, Kernel 3.16)
DB: MySQL (MariaDB 10.1)
Deployment: Direct setup (Downloaded from https://dl.gitea.io)
Configuration: app.ini
APP_NAME = git @ mydomain.example.com
RUN_USER = git
RUN_MODE = prod

[database]
DB_TYPE  = mysql
HOST     = /var/run/mysqld/mysqld.sock
NAME     = gitea
USER     = gitea
PASSWD   = ***
SSL_MODE = disable
PATH     = data/gitea.db

[repository]
ROOT = /opt/gitea/repo

[server]
SSH_DOMAIN             = git.mydomain.example.com
PROTOCOL               = unix
HTTP_ADDR              = /opt/gitea/gitea.sock
HTTP_PORT              = 3000
UNIX_SOCKET_PERMISSION = 666
ROOT_URL               = https://git.mydomain.example.com/
DISABLE_SSH            = false
DISABLE_HTTP_GIT       = true
SSH_PORT               = 2222
SSH_LISTEN_PORT        = 2222
START_SSH_SERVER       = true
OFFLINE_MODE           = true
LANDING_PAGE           = explore

[mailer]
ENABLED = true
HOST    = mail.example.com:587
FROM    = "Git"
USER    =<EMAIL_ADDRESS>PASSWD  = ***

[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL     = true
DISABLE_REGISTRATION   = true
ENABLE_CAPTCHA         = false
REQUIRE_SIGNIN_VIEW    = false

[picture]
DISABLE_GRAVATAR        = true
ENABLE_FEDERATED_AVATAR = false

[session]
PROVIDER      = file
COOKIE_SECURE = true
COOKIE_NAME   = git_session

[log]
MODE      = file
LEVEL     = Info
ROOT_PATH = /opt/gitea/log

[security]
INSTALL_LOCK       = true
SECRET_KEY         = ***
INTERNAL_TOKEN     = ***
IMPORT_LOCAL_PATHS = false

[other]
SHOW_FOOTER_BRANDING           = false
SHOW_FOOTER_VERSION            = false
SHOW_FOOTER_TEMPLATE_LOAD_TIME = false

[oauth2]
JWT_SECRET = ***

I've done some additional testing on the first of the above instances.
Two repositories (real world, no test dummies), both 1 Slack webhook and 1 Gitea webhook. Same configuration, same owner, same commit (dummy file on new temp-branch).
One repository (the slightly older one) behaves correcly, the other triggers twice. Both logs (Trace level) attached:
https://gist.github.com/stklcode/0e09e79033173413d55b9f800916a7e3
I cannot debug in that instance, as it is live and prod, but I had a look into the code.
DeliverHooks() iterates over undelivered tasks twice. For some reason the hooks appear in both selects, i.e. they are either places placed twice in the DB before or not marked as delivered.
deliver.go in master: https://github.com/go-gitea/gitea/blob/2b0e4e0cb8b3e7fcc9b4493294567a060a27d299/modules/webhook/deliver.go#L152
webhooks.go in v1.10: https://github.com/go-gitea/gitea/blob/f0f48e0fff7711401c95082c461309f1dcec4c61/models/webhook.go#L930

I take a look at two implementation on master and v1.10. It's the same.

I've updated from 1.10.1 to 1.10.2 today. No change.
However by chance I've found the origin of the bug, because I have migrated my Gitea to a different directory structure and had to re-synchronize all hook scripts.
Apparently there are 2 identical hook files for pre- and post-receive phase, one named gitea (the correct one) and one named like the phase.
<repo>/hooks/
 |- pre-receive.d/
 |-- gitea
 |-- pre-receive
 |- post-receive.d/
 |-- gitea
 |-- post-receive

(not for update)
Last modification of the "wrong" scripts is somewhere back in 2017, the gitea scripts are modified today (I've triggered the "synchronize ... hooks for all repositories" task).
So the hook is really triggered twice externally.

pre-receive.d/gitea is managed by gitea internal. pre-receive.d/pre-receive could be changed on gitea UI if you have enough permission.

I know. Content was exactly the same for all affected repos and I‘m pretty sure I never configured this and none of the collaborators knew the binary/config paths... 🤔

If the content in pre-receive.d/pre-receive is the same as which in pre-receive.d/gitea.

However by chance I've found the origin of the bug, because I have migrated my Gitea to a different directory structure and had to re-synchronize all hook scripts.

Same here and same issue.
This bug is 100% confirmed.
My Drone is going crazy and begging for mercy...

Then you need to remove these unnecessary duplicated hooks.
Do you have any idea how they ended up being there? When did you start using Gitea?

@zeripath

Then you need to remove these unnecessary duplicated hooks.

How do I do that automatically? I certainly can't do it manually as this would take hours. What file's content do I have to compare to which other file's one? Is the naming and pathing consistent? Is maybe another method more useful?
In my situation I had to do something like this, urgently, which could've caused additional issues, but I can at least push now and the double hooks are a smaller problem than the one described in this thread.
(Problem started after Gitea migration with overhaul of the directory structure, as described by @stklcode.)

When did you start using Gitea?

I think it was shortly after 1.0, don't remember really.

Ok, so it's a longstanding migration issue from that point in time. Sorry about that - ok here's how you remove those double hooks:
cd gitea-repositories
for i in */*.git/hooks; do
     if test -e "$i/pre-receive.d/pre-receive"; then
        diff "$i/pre-receive.d/pre-receive" "$i/pre-receive.d/gitea" > /dev/null && rm "$i/pre-receive.d/pre-receive"
    fi
done

And similarly for update and post-receive.
(Or something like that.  From what I understand, this issue needs a general fix i.e. pull request, anyway?

I don't think this needs a PR - there's no current bug and the situation cannot occur in new repositories or on new installs. This is a migration issue from early Gitea.
We just need to delete the duplicate hooks. Unless we can see that the problem comes back...
(Likely some migration script failed for you a number of years ago, which one I don't know.)

(Likely some migration script failed for you a number of years ago, which one I don't know.)

I never really "migrated" in the classic sense, except recently, when the sleeping error woke up.
When I checked the contents of the hooks, I saw some old directories I deprecated over a year ago. Since then I had Resynchronize pre-receive, update and post-receive hooks of all repositories. run a couple of times. Apparently, it doesn't seem to have helped, at least with the remains of an older version of the installation.
So are all Gitea native hooks now saved as /pre-receive.d/gitea? Then this issue should not occur on newer installations, as you said, though maybe there should be an additional step in the FAQ/Troubleshooting section that explains this situation and its one-time fix to users of an older version that are maybe unaware of the issue.

You're correct that they're all saved as pre-receive.d/gitea etc.
The code is here:
https://github.com/go-gitea/gitea/blob/d92781bf941972761177ac9e07441f8893758fd3/modules/repository/hooks.go#L26-L70
Prior to that it was here:
https://github.com/go-gitea/gitea/blob/27c6b8fc07eab2dd579b94cd92136738ace61706/models/repo.go#L919-L963
With the name being gitea since at #1006 when the directories were created. So I don't know where you picked up the pre-receive etc copies as they shouldn't have been put there by Gitea.

So I don't know where you picked up the pre-receive etc copies as they shouldn't have been put there by Gitea.

🤷♀

Possibly there was some broken migration script?! Anyway have you managed to get rid of the things?

@zeripath
I ran https://github.com/go-gitea/gitea/issues/6636#issuecomment-590133526 and your https://github.com/go-gitea/gitea/issues/9183#issuecomment-581188712 but it did not change anything, as the scripts don't seem to find anything. I need to investigate that, as I assume, the solution should be pretty much like what was provided here.


Removed old behaviour.js client-side form validation

As per this ticket: http://open.silverstripe.org/ticket/6913

Nice harvey!


Improve experience for side-by-side versions of PowerShell

We can setup multiple PowerShell Core versions on a system side-by-side (on Windows side-by-side with Windows PowerShell).
What about to enhance -Version to get better UX?
powershell -Version 5.1
powershell -Version 6.0.0
powershell -Version 6.0.0-Beta.4
powershell -Version UserDefault
powershell -Version SystemDefault

We would also need set-powershell and get-powershell cmdlets to set the default and enumerate installed versions.  This should probably end up being an RFC.
cc @joeyaiello

We have so much defaults that the new cmdlets looks wasteful.
I expect that only developers will have multiple installed versions, users - Windows PowerShell and one-two PowerShell Core. Also system services (daemons) can use specific version. A distributive provider can include a PowerShell Core version as system default. An application provider can make the same.
They must all have a predictable way to run the correct version.
If Windows PowerShell stops on 5 version (5.1, 5.2, ..., 5.12 ..) we would use -Version to run a correct version - PowerShell Core starts with 6 version.

I agree that most users won't likely have more than one version of PSCore6 installed which is why this issue isn't High Priority for me.  Current solution is to use the full path and advanced users will know what they are doing.  Apps that distribute PSCore6.x will treat it as a library not should not be expected to be used by the end user.  Some apps will be fine with any version of PSCore6 being available while others may have dependencies on specific versions for various reasons.  Apps should not change the system default.

Main thought is that we should have simple possibility to switch default Windows and Core versions user-wide and system-wide.
Ideally PowerShell should take Version parameter and/or configuration option to run a desired version.

Yeah, there's really two issues that need to be addressed here:

Shelling into Windows PowerShell vs. PowerShell Core. This one requires changes to Windows in some form or another, as Windows PowerShell needs to be aware of PowerShell Core's existence (system32 PATH wins over ProgramFiles PATH in the vast majority of cases). Unless we give powershell.exe an symbolic link in $PSHome for PS6 like ps6.exe, but that's a crappy band-aid I'd rather avoid.
Managing future side-by-side versions of PowerShell Core. I predict one day we might need something venv or rbenv, but not until at least 6.1.

I'm not sure we want to dive in on the former just yet, but it would ideally be addressed around (or just after) the "RTM" of PowerShell Core 6. The latter can wait.

With PowerShell 7 offering LTS versions with a 3 year support cycle, some more discussions around SxS installations of PowerShell should be had soon so that if there are some changes that can be made in the current release timeframe, by the PS Team or the Community, there is time to do so. The notion of a 3 year support cycle without side-by-side support is a scary proposition.
Today we can install stable and preview side-by-side, but we need to consider supporting multiple stable versions installed side by side so that scripters can take hard dependencies on one LTS version of PowerShell without locking that machine down to that version for 3 years! Can we please talk about this now and see what can be done so that management solutions can be built on the reliability of a LTS release without an unnecessary lockdown to just that version during that time?

@KirkMunro do you have a specific proposal in mind?  Current SxS support is via filepath.  Is the desire to have something like pwsh -version 6.2.1?

Yes, exactly that.
The management community is reticent to update management solutions. The development community moves forward much more quickly. I think we really need to consider a solution that allows management solutions to be maintained under LTS while not holding back additional solutions that leverage newer versions/functionality. This is especially important since PowerShell is interpreted and not compiled (we don't have the luxury of building independent executables from PowerShell that target different runtimes like a .NET developer has when building projects in C#, for example).

I would be ok with supporting pwsh -version x where x is one installed to a well known location on Windows, Linux, and macOS.  All it would do is shell out to pwsh for that version.  On Linux/macOS, we can use exec, but on Windows, you would have two pwsh processes.  Would also need a way to enumerate installed versions.  Seems like a RFC should be written for this.

Seems like a RFC should be written for this.

We already have  #4836 with PowerShell Committee conclusion to have the RFC. It was frozen
at that time since side-by-side feature was not stable.

Do you want to push that forward then @iSazonov? If not, I'm happy to write the RFC but I don't want to take that away from you if you've already put thought into it. This needs to be done soon though to take advantage of the opportunity to get this done during the PS7 cycle. If I don't write it I'll definitely review it and share my thoughts.

@KirkMunro It is not easy for me to write large text (but a high quality) on non-native language. Feel free to pull the RFC. Many thanks!
(It seems I keep a branch with the enumerating version prototype since then #4836 :-) It was ported from VS Code(!)  )

Here: https://github.com/PowerShell/PowerShell-RFC/pull/202. Please let me know what you think @iSazonov and @SteveL-MSFT.

Hi
May I ask about the progress of this?
We have a use-case for this: it is to switch between pwsh versions within our docker deployment container which serves multiple applications and which needs to support multiple pwsh versions (with their specific combination of powershell cmdlets and modules).
If we had something like virtualenv/venv available it would help a lot.

which needs to support multiple pwsh versions

@archmangler Really there are two main version - Windows PowerShell and PowerShell 7.0, and no needs to have more installed versions. If your scenario is more specific please open new issue to discuss.